{
  "_format": "hh-sol-artifact-1",
  "contractName": "X2EarnApps",
  "sourceName": "contracts/x-2-earn-apps/X2EarnApps.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AccessControlBadConfirmation",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "neededRole",
          "type": "bytes32"
        }
      ],
      "name": "AccessControlUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "AddressEmptyCode",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "nodeId",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "CooldownNotExpired",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "creator",
          "type": "address"
        }
      ],
      "name": "CreatorNFTAlreadyUsed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "ERC1967InvalidImplementation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1967NonPayable",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timepoint",
          "type": "uint256"
        },
        {
          "internalType": "uint48",
          "name": "clock",
          "type": "uint48"
        }
      ],
      "name": "ERC5805FutureLookup",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC6372InconsistentClock",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "EndorsementsPaused",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "current",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "ExceedsMaxPointsPerApp",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "nodeId",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "ExceedsMaxPointsPerNode",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedInnerCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "nodeId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "available",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "requested",
          "type": "uint256"
        }
      ],
      "name": "InsufficientAvailablePoints",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidPointsAmount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "NodeManagementXAppAlreadyIncluded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NodeNotAllowedToEndorse",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "bits",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "SafeCastOverflowedUintDowncast",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UUPSUnauthorizedCallContext",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "slot",
          "type": "bytes32"
        }
      ],
      "name": "UUPSUnsupportedProxiableUUID",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "creator",
          "type": "address"
        }
      ],
      "name": "X2EarnAlreadyCreator",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "X2EarnAlreadyEndorser",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "X2EarnAppAlreadyEndorsed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "X2EarnAppAlreadyExists",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "X2EarnAppBlacklisted",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "X2EarnInvalidAddress",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "percentage",
          "type": "uint256"
        }
      ],
      "name": "X2EarnInvalidAllocationPercentage",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "X2EarnInvalidStartIndex",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "X2EarnMaxCreatorsReached",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "X2EarnMaxManagersReached",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "X2EarnMaxModeratorsReached",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "X2EarnMaxRewardDistributorsReached",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "X2EarnNodeCooldownActive",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "X2EarnNonEndorser",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "X2EarnNonNodeHolder",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "X2EarnNonexistentApp",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "creator",
          "type": "address"
        }
      ],
      "name": "X2EarnNonexistentCreator",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "moderator",
          "type": "address"
        }
      ],
      "name": "X2EarnNonexistentModerator",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "distributorAddress",
          "type": "address"
        }
      ],
      "name": "X2EarnNonexistentRewardDistributor",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "X2EarnUnauthorizedUser",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "creator",
          "type": "address"
        }
      ],
      "name": "X2EarnUnverifiedCreator",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "addr",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "appAvailableForAllocationVoting",
          "type": "bool"
        }
      ],
      "name": "AppAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "AppAdminUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "nodeId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "endorser",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "points",
          "type": "uint256"
        }
      ],
      "name": "AppEndorsed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "endorsed",
          "type": "bool"
        }
      ],
      "name": "AppEndorsementStatusUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "oldMetadataURI",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "newMetadataURI",
          "type": "string"
        }
      ],
      "name": "AppMetadataURIUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "AppSelfBlacklisted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "nodeId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "points",
          "type": "uint256"
        }
      ],
      "name": "AppUnendorsed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint48",
          "name": "startBlock",
          "type": "uint48"
        },
        {
          "indexed": false,
          "internalType": "uint48",
          "name": "endBlock",
          "type": "uint48"
        }
      ],
      "name": "AppUnendorsedGracePeriodStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "oldBaseURI",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "newBaseURI",
          "type": "string"
        }
      ],
      "name": "BaseURIUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isBlacklisted",
          "type": "bool"
        }
      ],
      "name": "BlacklistUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldCooldownPeriod",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newCooldownPeriod",
          "type": "uint256"
        }
      ],
      "name": "CooldownPeriodUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "creatorAddress",
          "type": "address"
        }
      ],
      "name": "CreatorAddedToApp",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "creator",
          "type": "address"
        }
      ],
      "name": "CreatorRemovedFromApp",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldThreshold",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newThreshold",
          "type": "uint256"
        }
      ],
      "name": "EndorsementScoreThresholdUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bool",
          "name": "paused",
          "type": "bool"
        }
      ],
      "name": "EndorsementsPausedUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldGracePeriod",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newGracePeriod",
          "type": "uint256"
        }
      ],
      "name": "GracePeriodUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldMax",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newMax",
          "type": "uint256"
        }
      ],
      "name": "MaxPointsPerAppUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldMax",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newMax",
          "type": "uint256"
        }
      ],
      "name": "MaxPointsPerNodePerAppUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "moderator",
          "type": "address"
        }
      ],
      "name": "ModeratorAddedToApp",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "moderator",
          "type": "address"
        }
      ],
      "name": "ModeratorRemovedFromApp",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "strength",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "thunder",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "mjolnir",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "veThorX",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "strengthX",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "thunderX",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "mjolnirX",
              "type": "uint256"
            }
          ],
          "indexed": true,
          "internalType": "struct EndorsementUtils.NodeStrengthScores",
          "name": "nodeStrengthScores",
          "type": "tuple"
        }
      ],
      "name": "NodeStrengthScoresUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "distributorAddress",
          "type": "address"
        }
      ],
      "name": "RewardDistributorAddedToApp",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "distributorAddress",
          "type": "address"
        }
      ],
      "name": "RewardDistributorRemovedFromApp",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldPercentage",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newPercentage",
          "type": "uint256"
        }
      ],
      "name": "TeamAllocationPercentageUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldTeamWalletAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newTeamWalletAddress",
          "type": "address"
        }
      ],
      "name": "TeamWalletAddressUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isAvailable",
          "type": "bool"
        }
      ],
      "name": "VotingEligibilityUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "CLOCK_MODE",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "GOVERNANCE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_CREATORS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_MODERATORS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_REWARD_DISTRIBUTORS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MIGRATION_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UPGRADER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UPGRADE_INTERFACE_VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_moderator",
          "type": "address"
        }
      ],
      "name": "addAppModerator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_creator",
          "type": "address"
        }
      ],
      "name": "addCreator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_distributor",
          "type": "address"
        }
      ],
      "name": "addRewardDistributor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "allEligibleApps",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "app",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "teamWalletAddress",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "metadataURI",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "createdAtTimestamp",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "appAvailableForAllocationVoting",
              "type": "bool"
            }
          ],
          "internalType": "struct X2EarnAppsDataTypes.AppWithDetailsReturnType",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "appAdmin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "appCreators",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "appExists",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "appModerators",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "appURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "apps",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "teamWalletAddress",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "metadataURI",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "createdAtTimestamp",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "appAvailableForAllocationVoting",
              "type": "bool"
            }
          ],
          "internalType": "struct X2EarnAppsDataTypes.AppWithDetailsReturnType[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "baseURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "nodeId",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "canUnendorse",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "checkEndorsement",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "clock",
      "outputs": [
        {
          "internalType": "uint48",
          "name": "",
          "type": "uint48"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cooldownPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "creator",
          "type": "address"
        }
      ],
      "name": "creatorApps",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_appId",
          "type": "bytes32"
        }
      ],
      "name": "enableRewardsPoolForNewApp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "nodeId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "points",
          "type": "uint256"
        }
      ],
      "name": "endorseApp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "endorsementScoreThreshold",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "endorsementsPaused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "getEndorserNodes",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "getEndorsers",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "nodeId",
          "type": "uint256"
        }
      ],
      "name": "getNodeActiveEndorsements",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "appId",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "points",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "endorsedAtRound",
              "type": "uint256"
            }
          ],
          "internalType": "struct X2EarnAppsStorageTypes.Endorsement[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "nodeId",
          "type": "uint256"
        }
      ],
      "name": "getNodeAvailablePoints",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "nodeId",
          "type": "uint256"
        }
      ],
      "name": "getNodeEndorsementScore",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "nodeId",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "getNodePointsForApp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "nodeId",
          "type": "uint256"
        }
      ],
      "name": "getNodePointsInfo",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "totalPoints",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "usedPoints",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "availablePoints",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lockedPoints",
              "type": "uint256"
            }
          ],
          "internalType": "struct X2EarnAppsStorageTypes.NodePointsInfo",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "nodeId",
          "type": "uint256"
        }
      ],
      "name": "getNodeUsedPoints",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "getScore",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "timepoint",
          "type": "uint256"
        }
      ],
      "name": "getScoreAtTimepoint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getUsersEndorsementScore",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gracePeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "appName",
          "type": "string"
        }
      ],
      "name": "hashAppName",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_maxPointsPerNodePerApp",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxPointsPerApp",
          "type": "uint256"
        }
      ],
      "name": "initializeV8",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isAppAdmin",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isAppModerator",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "isAppUnendorsed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "isBlacklisted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "creator",
          "type": "address"
        }
      ],
      "name": "isCreatorOfAnyApp",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "timepoint",
          "type": "uint256"
        }
      ],
      "name": "isEligible",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "isEligibleNow",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isRewardDistributor",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "markMigrationComplete",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxPointsPerApp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxPointsPerNodePerApp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "metadataURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "migrationCompleted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "nodeLevel",
          "type": "uint8"
        }
      ],
      "name": "nodeLevelEndorsementScore",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pauseEndorsements",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_creator",
          "type": "address"
        }
      ],
      "name": "removeAppCreator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_moderator",
          "type": "address"
        }
      ],
      "name": "removeAppModerator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_nodeId",
          "type": "uint256"
        }
      ],
      "name": "removeNodeEndorsement",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_distributor",
          "type": "address"
        }
      ],
      "name": "removeRewardDistributor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_appId",
          "type": "bytes32"
        }
      ],
      "name": "removeXAppSubmission",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "callerConfirmation",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "rewardDistributors",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "nodeId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "points",
          "type": "uint256"
        }
      ],
      "name": "seedEndorsement",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_appId",
          "type": "bytes32"
        }
      ],
      "name": "selfBlacklistApp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_newAdmin",
          "type": "address"
        }
      ],
      "name": "setAppAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_baseURI",
          "type": "string"
        }
      ],
      "name": "setBaseURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "maxPoints",
          "type": "uint256"
        }
      ],
      "name": "setMaxPointsPerApp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "maxPoints",
          "type": "uint256"
        }
      ],
      "name": "setMaxPointsPerNodePerApp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_percentage",
          "type": "uint256"
        }
      ],
      "name": "setTeamAllocationPercentage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "_isEligible",
          "type": "bool"
        }
      ],
      "name": "setVotingEligibility",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_teamWalletAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_admin",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_appName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_appMetadataURI",
          "type": "string"
        }
      ],
      "name": "submitApp",
      "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": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "teamAllocationPercentage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "teamWalletAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "nodeId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "points",
          "type": "uint256"
        }
      ],
      "name": "unendorseApp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unendorsedAppIds",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unendorsedApps",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "teamWalletAddress",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "metadataURI",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "createdAtTimestamp",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "appAvailableForAllocationVoting",
              "type": "bool"
            }
          ],
          "internalType": "struct X2EarnAppsDataTypes.AppWithDetailsReturnType[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpauseEndorsements",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "internalType": "string",
          "name": "_newMetadataURI",
          "type": "string"
        }
      ],
      "name": "updateAppMetadata",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_newCooldownPeriod",
          "type": "uint256"
        }
      ],
      "name": "updateCooldownPeriod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_scoreThreshold",
          "type": "uint256"
        }
      ],
      "name": "updateEndorsementScoreThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint48",
          "name": "_newGracePeriod",
          "type": "uint48"
        }
      ],
      "name": "updateGracePeriod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "strength",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "thunder",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "mjolnir",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "veThorX",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "strengthX",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "thunderX",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "mjolnirX",
              "type": "uint256"
            }
          ],
          "internalType": "struct EndorsementUtils.NodeStrengthScores",
          "name": "_nodeStrengthScores",
          "type": "tuple"
        }
      ],
      "name": "updateNodeEndorsementScores",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_newReceiverAddress",
          "type": "address"
        }
      ],
      "name": "updateTeamWalletAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516152116200010460003960008181613ef801528181613f21015261406b01526152116000f3fe6080604052600436106104285760003560e01c806301ffc9a71461042d57806303bc087f1461046257806304646a49146104845780630765ef60146104a75780630ab12e14146104c95780630ad0e45f146104e95780630bf4f68e146105095780630cb212e1146105295780630e1fb61a14610549578063109eea0114610569578063169efd47146105895780631772503b146105a95780631a25071f146105d65780631d6dbc78146105f6578063228cf42f1461060b578063248a9ca3146106205780632589a49d1461064057806327d91b0e146106605780632c35f428146106805780632e87d31f146106a05780632f2ff15d146106cd57806331677980146106ed57806334b0e6b31461070257806336568abe1461072257806339c6d4cb14610742578063416c0f741461076457806342c89f521461079157806344532be2146107b157806344bb58f7146107de5780634a0c4a42146107fe5780634bf5d7e9146108135780634f1ef286146108285780634f77fe121461083b57806351d2a6e31461085b57806352d1902d1461087b57806354933bf01461089057806354fd4d50146108b057806355f804b3146108da5780635cbc2ffb146108fa5780635cfdd4701461090f5780635dd3a4f11461093c578063607bfb241461098f5780636165267c146109af5780636912f1f6146109cf5780636939cec8146109ef57806369ad515614610a0f5780636a0ae3251461060b5780636b623bbe14610a2f5780636c0360eb14610a4f5780636f604ab314610a645780636fb44f5f14610a845780637258410214610aa457806376cd2fa514610ac4578063785d6e1814610ae45780637ba5328514610b11578063826b9a4e14610b31578063833d29b414610b515780638380216514610b71578063861f6bfd14610b915780638e3a29dc14610bb15780638e4284f514610bd157806391d1485414610be657806391ddadf414610c065780639294b7a414610c325780639478401714610c47578063993f8d3614610c675780639ab17c9b14610c875780639fa949ad14610ca7578063a06bb12914610cc7578063a06db7dc14610ce7578063a099a19214610cfc578063a217fddf14610d1c578063acdb9f0514610d31578063ad3cb1cc14610d51578063b58a754714610d82578063b747e2e914610da2578063b90a30ea14610dc2578063bcbd410c14610dd7578063c04cff1914610df7578063c296b1d214610e0c578063c7b24f3014610e21578063c996c62414610e41578063ccd4baca14610e61578063d2570b9414610e81578063d547741f14610ea1578063d6418b8a14610ec1578063d76c397314610ed6578063e123cd0c14610ef6578063e9a1fee414610f16578063e9f9739d14610f36578063ee9419cf14610f56578063f1a962ac14610f76578063f36c8f5c14610f8b578063f72c0d8b14610fad578063f770337914610fcf575b600080fd5b34801561043957600080fd5b5061044d61044836600461435d565b610fe4565b60405190151581526020015b60405180910390f35b34801561046e57600080fd5b5061047761101b565b6040516104599190614444565b34801561049057600080fd5b50610499611115565b604051908152602001610459565b3480156104b357600080fd5b506104c76104c23660046144b4565b611189565b005b3480156104d557600080fd5b506104c76104e43660046144e4565b611301565b3480156104f557600080fd5b5061044d610504366004614512565b6113aa565b34801561051557600080fd5b506104c7610524366004614537565b611439565b34801561053557600080fd5b506104c7610544366004614512565b6114c0565b34801561055557600080fd5b506104c761056436600461455f565b6115ee565b34801561057557600080fd5b506104c7610584366004614577565b61167a565b34801561059557600080fd5b506104c76105a43660046146b8565b611824565b3480156105b557600080fd5b506105c96105c43660046144e4565b611a54565b6040516104599190614740565b3480156105e257600080fd5b506104c76105f13660046144e4565b611a7b565b34801561060257600080fd5b506104c7611a93565b34801561061757600080fd5b50610499606481565b34801561062c57600080fd5b5061049961063b3660046144e4565b611b12565b34801561064c57600080fd5b506104c761065b366004614512565b611b32565b34801561066c57600080fd5b506104c761067b366004614754565b611c27565b34801561068c57600080fd5b506105c961069b3660046144e4565b611dc8565b3480156106ac57600080fd5b506106c06106bb3660046144e4565b611dec565b6040516104599190614776565b3480156106d957600080fd5b506104c76106e8366004614512565b611ebb565b3480156106f957600080fd5b5061044d611edd565b34801561070e57600080fd5b5061049961071d366004614789565b611f4c565b34801561072e57600080fd5b506104c761073d366004614512565b611f7c565b34801561074e57600080fd5b5061049960008051602061519c83398151915281565b34801561077057600080fd5b5061078461077f3660046144e4565b611faf565b60405161045991906147c5565b34801561079d57600080fd5b506104996107ac3660046144e4565b61202d565b3480156107bd57600080fd5b506107d16107cc3660046144e4565b6120a5565b6040516104599190614812565b3480156107ea57600080fd5b506107846107f93660046144e4565b612120565b34801561080a57600080fd5b5061049961219b565b34801561081f57600080fd5b506106c06121e6565b6104c761083636600461486b565b61225e565b34801561084757600080fd5b506104c76108563660046144e4565b612279565b34801561086757600080fd5b506104c76108763660046144e4565b6122c9565b34801561088757600080fd5b50610499612319565b34801561089c57600080fd5b506104c76108ab366004614754565b612336565b3480156108bc57600080fd5b506040805180820190915260018152600760fb1b60208201526106c0565b3480156108e657600080fd5b506104c76108f5366004614789565b612381565b34801561090657600080fd5b506104996123df565b34801561091b57600080fd5b5061092f61092a3660046144e4565b61242a565b60405161045991906148ce565b34801561094857600080fd5b5061095c6109573660046144e4565b6124a5565b60405161045991908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b34801561099b57600080fd5b5061044d6109aa3660046144e4565b612544565b3480156109bb57600080fd5b506104c76109ca366004614512565b6125bc565b3480156109db57600080fd5b506104996109ea366004614906565b612607565b3480156109fb57600080fd5b506104c7610a0a366004614577565b612633565b348015610a1b57600080fd5b50610784610a2a3660046144e4565b61271b565b348015610a3b57600080fd5b5061044d610a4a3660046144e4565b612797565b348015610a5b57600080fd5b506106c06127b8565b348015610a7057600080fd5b506106c0610a7f3660046144e4565b612850565b348015610a9057600080fd5b506104c7610a9f3660046144e4565b6128f2565b348015610ab057600080fd5b50610499610abf366004614754565b612942565b348015610ad057600080fd5b506104c7610adf3660046144e4565b6129c1565b348015610af057600080fd5b50610b04610aff3660046144e4565b612b70565b6040516104599190614923565b348015610b1d57600080fd5b50610499610b2c3660046144e4565b612c2f565b348015610b3d57600080fd5b50610499610b4c3660046144e4565b612c6a565b348015610b5d57600080fd5b506104c7610b6c366004614512565b612c88565b348015610b7d57600080fd5b506104c7610b8c366004614512565b612cd3565b348015610b9d57600080fd5b506104c7610bac3660046144e4565b612d69565b348015610bbd57600080fd5b5061044d610bcc366004614512565b612db9565b348015610bdd57600080fd5b50610499600381565b348015610bf257600080fd5b5061044d610c01366004614512565b612ded565b348015610c1257600080fd5b50610c1b612e23565b60405165ffffffffffff9091168152602001610459565b348015610c3e57600080fd5b506104c7612e2d565b348015610c5357600080fd5b5061044d610c623660046144e4565b612e7d565b348015610c7357600080fd5b506104c7610c82366004614512565b612ec9565b348015610c9357600080fd5b50610499610ca2366004614754565b612f14565b348015610cb357600080fd5b506104c7610cc2366004614512565b612f56565b348015610cd357600080fd5b506104c7610ce2366004614512565b612fec565b348015610cf357600080fd5b50610499613082565b348015610d0857600080fd5b5061044d610d173660046144e4565b6130cd565b348015610d2857600080fd5b50610499600081565b348015610d3d57600080fd5b50610499610d4c366004614936565b613184565b348015610d5d57600080fd5b506106c0604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610d8e57600080fd5b5061044d610d9d366004614512565b6131c1565b348015610dae57600080fd5b50610784610dbd3660046144e4565b613208565b348015610dce57600080fd5b5061044d613284565b348015610de357600080fd5b5061044d610df2366004614906565b6132cf565b348015610e0357600080fd5b5061092f613309565b348015610e1857600080fd5b506104c7613363565b348015610e2d57600080fd5b5061044d610e3c3660046144e4565b6133b3565b348015610e4d57600080fd5b50610499610e5c366004614906565b6133f6565b348015610e6d57600080fd5b5061044d610e7c366004614754565b613430565b348015610e8d57600080fd5b5061044d610e9c366004614754565b613472565b348015610ead57600080fd5b506104c7610ebc366004614512565b6134e1565b348015610ecd57600080fd5b5061092f6134fd565b348015610ee257600080fd5b50610499610ef13660046144e4565b613570565b348015610f0257600080fd5b506104c7610f11366004614754565b6135ab565b348015610f2257600080fd5b506104c7610f31366004614959565b6136cc565b348015610f4257600080fd5b50610499610f513660046144e4565b61372a565b348015610f6257600080fd5b506104c7610f71366004614577565b613765565b348015610f8257600080fd5b506104996137c3565b348015610f9757600080fd5b5061049960008051602061515c83398151915281565b348015610fb957600080fd5b5061049960008051602061517c83398151915281565b348015610fdb57600080fd5b5061047761380e565b60006001600160e01b03198216637965db0b60e01b148061101557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__63d6418b8a6040518163ffffffff1660e01b8152600401600060405180830381865af4158015611068573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261109091908101906149b8565b60405163cd7d1e4360e01b815290915073__$343c572ead5a4485152e3bd6d24397946f$__9063cd7d1e43906110ca9084906004016148ce565b600060405180830381865af41580156110e7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261110f9190810190614b4c565b91505090565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__6304646a496040518163ffffffff1660e01b8152600401602060405180830381865af4158015611160573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111849190614bfc565b905090565b60008051602061515c8339815191526111a181613881565b6040516341a2cff760e11b81526004810184905273__$343c572ead5a4485152e3bd6d24397946f$__906383459fee90602401602060405180830381865af41580156111f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112159190614c15565b61123a5760405163018f58af60e31b8152600481018490526024015b60405180910390fd5b61124383612544565b1561125257611252838361388e565b61125b836133b3565b8015611265575081155b156112d557604051637e57cd3b60e11b815273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063fcaf9a76906112a4908690600190600401614c32565b60006040518083038186803b1580156112bc57600080fd5b505af41580156112d0573d6000803e3d6000fd5b505050505b816112e8576112e3836138fb565b6112f1565b6112f183613940565b6112fc838315613986565b505050565b60008161130e8233612ded565b15801561132257506113208133612db9565b155b1561134257336040516363a704cf60e11b81526004016112319190614740565b6040516302ac4b8560e21b81526004810184905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90630ab12e149060240160006040518083038186803b15801561138d57600080fd5b505af41580156113a1573d6000803e3d6000fd5b50505050505050565b600073__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__6384fd97586113ce6139f2565b60010185856040518463ffffffff1660e01b81526004016113f193929190614c42565b602060405180830381865af415801561140e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114329190614c15565b9392505050565b60008051602061515c83398151915261145181613881565b60405163a11bd9fb60e01b815265ffffffffffff8316600482015273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063a11bd9fb906024015b60006040518083038186803b1580156114a457600080fd5b505af41580156114b8573d6000803e3d6000fd5b505050505050565b6000826114cd8233612ded565b1580156114e157506114df8133612db9565b155b1561150157336040516363a704cf60e11b81526004016112319190614740565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__63e1649755858573__$343c572ead5a4485152e3bd6d24397946f$__6383459fee896040518263ffffffff1660e01b815260040161155691815260200190565b602060405180830381865af4158015611573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115979190614c15565b60646040518563ffffffff1660e01b81526004016115b89493929190614c61565b60006040518083038186803b1580156115d057600080fd5b505af41580156115e4573d6000803e3d6000fd5b5050505050505050565b60008051602061515c83398151915261160681613881565b60408051633811422160e01b81528335600482015260208401356024820152908301356044820152606083013560648201526080830135608482015260a083013560a482015260c083013560c482015273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063381142219060e40161148c565b73__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__639a1166418484846116a088612797565b6116a989612544565b6116b28a612e7d565b6040516001600160e01b031960e089901b1681526004810196909652602486019490945260448501929092521515606484015215156084830152151560a482015260c40160006040518083038186803b15801561170e57600080fd5b505af4158015611722573d6000803e3d6000fd5b5050505073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__63f1a962ac6040518163ffffffff1660e01b8152600401602060405180830381865af415801561176f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117939190614bfc565b604051637ba5328560e01b81526004810185905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90637ba5328590602401602060405180830381865af41580156117e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118079190614bfc565b106112fc5761181583612e7d565b6112fc576112fc83600161388e565b61182c6139f2565b600801546040516370a0823160e01b81526001600160a01b03909116906370a082319061185d903390600401614740565b602060405180830381865afa15801561187a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189e9190614bfc565b6000036118c05733604051631223ae8960e01b81526004016112319190614740565b6118c9336132cf565b156118e9573360405163630ad52760e11b81526004016112319190614740565b6040516370325edf60e01b815260009073__$343c572ead5a4485152e3bd6d24397946f$__906370325edf9061192790889088908890600401614c87565b602060405180830381865af4158015611944573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119689190614bfc565b90506119748185613a16565b61197e8186613aca565b6119888183613b1f565b611993816000613bd3565b604051639fcb2b4160e01b815273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90639fcb2b41906119cd908490600090600401614c32565b60006040518083038186803b1580156119e557600080fd5b505af41580156119f9573d6000803e3d6000fd5b50505050611a078133613c9c565b611a1081613d53565b807f181c8615e49dc4eaed218e1d225e4a34a0fb364fc70601a191573daa19d57eda86856000604051611a4593929190614cb3565b60405180910390a25050505050565b6000611a5e6139f2565b60009283526003016020525060409020546001600160a01b031690565b6000611a8681613881565b611a8f82613d53565b5050565b60008051602061515c833981519152611aab81613881565b604051633f34643160e21b81526000600482015273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063fcd190c4906024015b60006040518083038186803b158015611af757600080fd5b505af4158015611b0b573d6000803e3d6000fd5b5050505050565b600080611b1d613da5565b60009384526020525050604090206001015490565b600082611b3f8233612ded565b158015611b535750611b518133612db9565b155b15611b7357336040516363a704cf60e11b81526004016112319190614740565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__63a9cc17dc858573__$343c572ead5a4485152e3bd6d24397946f$__6383459fee896040518263ffffffff1660e01b8152600401611bc891815260200190565b602060405180830381865af4158015611be5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c099190614c15565b6040518463ffffffff1660e01b81526004016115b893929190614ce9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460089190600160401b900460ff1680611c70575080546001600160401b03808416911610155b15611c8e5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b178155604051636fb44f5f60e01b815273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90636fb44f5f90611ce890879060040190815260200190565b60006040518083038186803b158015611d0057600080fd5b505af4158015611d14573d6000803e3d6000fd5b50506040516351d2a6e360e01b81526004810186905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__92506351d2a6e3915060240160006040518083038186803b158015611d6357600080fd5b505af4158015611d77573d6000803e3d6000fd5b5050825460ff60401b1916835550506040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6000611dd26139f2565b60009283526020525060409020546001600160a01b031690565b6040516341a2cff760e11b81526004810182905260609073__$343c572ead5a4485152e3bd6d24397946f$__906383459fee90602401602060405180830381865af4158015611e3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e639190614c15565b611e835760405163018f58af60e31b815260048101839052602401611231565b611e8b6127b8565b611e9483612850565b604051602001611ea5929190614d0a565b6040516020818303038152906040529050919050565b611ec482611b12565b611ecd81613881565b611ed78383613dc9565b50505050565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__63316779806040518163ffffffff1660e01b8152600401602060405180830381865af4158015611f28573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111849190614c15565b600081604051602001611f5f9190614d39565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381163314611fa55760405163334bd91960e11b815260040160405180910390fd5b6112fc8282613e6a565b6060611fb96139f2565b600201600083815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561202157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612003575b50505050509050919050565b6040516321644fa960e11b81526004810182905260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__906342c89f52906024015b602060405180830381865af4158015612081573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110159190614bfc565b60405163222995f160e11b81526004810182905260609073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__906344532be290602401600060405180830381865af41580156120f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110159190810190614d55565b6040516344bb58f760e01b81526004810182905260609073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__906344bb58f790602401600060405180830381865af4158015612173573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110159190810190614e12565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__634a0c4a426040518163ffffffff1660e01b8152600401602060405180830381865af4158015611160573d6000803e3d6000fd5b60606121f0613ee2565b65ffffffffffff16612200612e23565b65ffffffffffff1614612226576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b612266613eed565b61226f82613f94565b611a8f8282613fac565b60008051602061515c83398151915261229181613881565b6040516327bbff0960e11b81526004810183905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90634f77fe129060240161148c565b60008051602061515c8339815191526122e181613881565b6040516351d2a6e360e01b81526004810183905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__906351d2a6e39060240161148c565b6000612323614060565b506000805160206151bc83398151915290565b6000826123438233612ded565b15801561235757506123558133612db9565b155b1561237757336040516363a704cf60e11b81526004016112319190614740565b611ed78484613bd3565b600061238c81613881565b60006123966140a9565b90507f309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc181600001846040516123cc929190614ed4565b60405180910390a180611ed78482614fb0565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__635cbc2ffb6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611160573d6000803e3d6000fd5b6040516305cfdd4760e41b81526004810182905260609073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90635cfdd47090602401600060405180830381865af415801561247d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101591908101906149b8565b6124d06040518060800160405280600081526020016000815260200160008152602001600081525090565b604051635dd3a4f160e01b81526004810183905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90635dd3a4f190602401608060405180830381865af4158015612520573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611015919061506f565b60405163181efec960e21b81526004810182905260009073__$343c572ead5a4485152e3bd6d24397946f$__9063607bfb24906024015b602060405180830381865af4158015612598573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110159190614c15565b6000826125c98233612ded565b1580156125dd57506125db8133612db9565b155b156125fd57336040516363a704cf60e11b81526004016112319190614740565b611ed78484613aca565b60006126116139f2565b6001600160a01b03909216600090815260079290920160205250604090205490565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__634fd4e1b885858561265b89612797565b6126648a612e7d565b61266c612e23565b6040516001600160e01b031960e089901b168152600481019690965260248601949094526044850192909252151560648401521515608483015265ffffffffffff1660a482015260c401602060405180830381865af41580156126d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f79190614c15565b90508015801561270b575061270b84612e7d565b15611ed757611ed784600061388e565b60606127256139f2565b6001016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015612021576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116120035750505050509050919050565b60006127a16140cd565b600092835260030160205250604090205460ff1690565b60606127c26140a9565b80546127cd90614ea0565b80601f01602080910402602001604051908101604052809291908181526020018280546127f990614ea0565b80156128465780601f1061281b57610100808354040283529160200191612846565b820191906000526020600020905b81548152906001019060200180831161282957829003601f168201915b5050505050905090565b606061285a6139f2565b600083815260059190910160205260409020805461287790614ea0565b80601f01602080910402602001604051908101604052809291908181526020018280546128a390614ea0565b80156120215780601f106128c557610100808354040283529160200191612021565b820191906000526020600020905b8154815290600101906020018083116128d35750939695505050505050565b60008051602061515c83398151915261290a81613881565b604051636fb44f5f60e01b81526004810183905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90636fb44f5f9060240161148c565b60405163392c208160e11b8152600481018390526024810182905260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__906372584102906044015b602060405180830381865af415801561299d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114329190614bfc565b6129cb8133612db9565b6129ea57336040516363a704cf60e11b81526004016112319190614740565b6040516341a2cff760e11b81526004810182905273__$343c572ead5a4485152e3bd6d24397946f$__906383459fee90602401602060405180830381865af4158015612a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5e9190614c15565b612a7e5760405163018f58af60e31b815260048101829052602401611231565b612a8781612797565b15612aa857604051633126f1ab60e01b815260048101829052602401611231565b612ab1816133b3565b15612b2157604051637e57cd3b60e11b815273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063fcaf9a7690612af0908490600190600401614c32565b60006040518083038186803b158015612b0857600080fd5b505af4158015612b1c573d6000803e3d6000fd5b505050505b612b2c81600061388e565b612b35816138fb565b612b40816001613986565b604051339082907f5a6c1432141559a12a66c9321806df68b9948db6cc62bffed540b668c3165bf890600090a350565b612bb76040518060c001604052806000801916815260200160006001600160a01b031681526020016060815260200160608152602001600081526020016000151581525090565b604051630f0badc360e31b81526004810183905273__$343c572ead5a4485152e3bd6d24397946f$__9063785d6e1890602401600060405180830381865af4158015612c07573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101591908101906150d4565b604051637ba5328560e01b81526004810182905260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90637ba5328590602401612064565b6000612c746139f2565b600092835260040160205250604090205490565b600082612c958233612ded565b158015612ca95750612ca78133612db9565b155b15612cc957336040516363a704cf60e11b81526004016112319190614740565b611ed78484613a16565b600082612ce08233612ded565b158015612cf45750612cf28133612db9565b155b15612d1457336040516363a704cf60e11b81526004016112319190614740565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__63bad8aa4a858573__$343c572ead5a4485152e3bd6d24397946f$__6383459fee896040518263ffffffff1660e01b815260040161155691815260200190565b60008051602061515c833981519152612d8181613881565b6040516380ea3de160e01b81526004810183905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__906380ea3de19060240161148c565b6000816001600160a01b0316612dcd6139f2565b60009485526020526040909320546001600160a01b031690921492915050565b600080612df8613da5565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000611184613ee2565b60008051602061515c833981519152612e4581613881565b604051633f34643160e21b81526001600482015273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063fcd190c490602401611adf565b6000612e8882612544565b612e9457506000919050565b612eb6612e9f6140cd565b6000848152600291909101602052604090206140f1565b6001600160d01b03166001149050919050565b600082612ed68233612ded565b158015612eea5750612ee88133612db9565b155b15612f0a57336040516363a704cf60e11b81526004016112319190614740565b611ed78484613c9c565b604051639ab17c9b60e01b8152600481018390526024810182905260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90639ab17c9b90604401612980565b600082612f638233612ded565b158015612f775750612f758133612db9565b155b15612f9757336040516363a704cf60e11b81526004016112319190614740565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__637e250990858573__$343c572ead5a4485152e3bd6d24397946f$__6383459fee896040518263ffffffff1660e01b8152600401611bc891815260200190565b600082612ff98233612ded565b15801561300d575061300b8133612db9565b155b1561302d57336040516363a704cf60e11b81526004016112319190614740565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__633c840f6c858573__$343c572ead5a4485152e3bd6d24397946f$__6383459fee896040518263ffffffff1660e01b8152600401611bc891815260200190565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__63a06db7dc6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611160573d6000803e3d6000fd5b60008073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__636e054773846130f3612e23565b6040516001600160e01b031960e085901b168152600481019290925265ffffffffffff166024820152604401602060405180830381865af415801561313c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131609190614c15565b905080158015613174575061317483612e7d565b156110155761101583600061388e565b60405163acdb9f0560e01b815260ff8216600482015260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063acdb9f0590602401612064565b600073__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__63f6b503616131e56139f2565b60020185856040518463ffffffff1660e01b81526004016113f193929190614c42565b60606132126139f2565b6006016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015612021576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116120035750505050509050919050565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__63b90a30ea6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611f28573d6000803e3d6000fd5b6000806132da6139f2565b6007016000846001600160a01b03166001600160a01b0316815260200190815260200160002054119050919050565b60606133136140cd565b80546040805160208084028201810190925282815292919083018282801561284657602002820191906000526020600020905b815481526020019060010190808311613346575050505050905090565b60008051602061515c83398151915261337b81613881565b6040516311f9772f60e21b81526001600482015273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__906347e5dcbc90602401611adf565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__631e13ed7a836133d985612797565b6040518363ffffffff1660e01b815260040161257b929190614c32565b604051633265b18960e21b815260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063c996c62490612064908590600401614740565b60405163666a5d6560e11b8152600481018390526024810182905260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063ccd4baca906044016113f1565b600073__$5fc1fcec812483b812ebdf1c2ddb0b80ea$__63f987f709848461349987612544565b6134a1612e23565b6040516001600160e01b031960e087901b168152600481019490945260248401929092521515604483015265ffffffffffff1660648201526084016113f1565b6134ea82611b12565b6134f381613881565b611ed78383613e6a565b606073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__63d6418b8a6040518163ffffffff1660e01b8152600401600060405180830381865af4158015613548573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261118491908101906149b8565b60405163d76c397360e01b81526004810182905260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063d76c397390602401612064565b6000826135b88233612ded565b1580156135cc57506135ca8133612db9565b155b156135ec57336040516363a704cf60e11b81526004016112319190614740565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__63e8786a58868661361389612797565b61361c8a612e7d565b613624612e23565b6040516001600160e01b031960e088901b1681526004810195909552602485019390935290151560448401521515606483015265ffffffffffff16608482015260a401602060405180830381865af4158015613684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a89190614c15565b9050801580156136bc57506136bc85612e7d565b15611b0b57611b0b85600061388e565b6000826136d98233612ded565b1580156136ed57506136eb8133612db9565b155b801561370057506136fe81336113aa565b155b1561372057336040516363a704cf60e11b81526004016112319190614740565b611ed78484613b1f565b60405163e9f9739d60e01b81526004810182905260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063e9f9739d90602401612064565b60008051602061519c83398151915261377d81613881565b60405163ee9419cf60e01b815260048101859052602481018490526044810183905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063ee9419cf906064016115b8565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__63f1a962ac6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611160573d6000803e3d6000fd5b606073__$343c572ead5a4485152e3bd6d24397946f$__63f77033796040518163ffffffff1660e01b8152600401600060405180830381865af4158015613859573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111849190810190614b4c565b61388b8133614138565b50565b73__$5fc1fcec812483b812ebdf1c2ddb0b80ea$__63c2ff3b9383836138b386612e7d565b6138bb612e23565b6040516001600160e01b031960e087901b168152600481019490945291151560248401521515604483015265ffffffffffff16606482015260840161148c565b61390481612797565b61388b57604051631da953cd60e01b81526004810182905273__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__90631da953cd90602401611adf565b61394981612797565b1561388b57604051639304e39360e01b81526004810182905273__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__90639304e39390602401611adf565b60006139906140cd565b600084815260038201602052604090819020805460ff19168515151790555190915083907fdcf7bb788a4c8c91f85b15fa04797101b624ce86f804c2ccc49d8474adeb90ba906139e590851515815260200190565b60405180910390a2505050565b7f5830f0e95c01712d916c34d9e2fa42e9f749b325b67bce7382d70bb99c62350090565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__6362ce9119838373__$343c572ead5a4485152e3bd6d24397946f$__6383459fee876040518263ffffffff1660e01b8152600401613a6b91815260200190565b602060405180830381865af4158015613a88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aac9190614c15565b6040518463ffffffff1660e01b815260040161148c93929190614ce9565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__63eb295ebf838373__$343c572ead5a4485152e3bd6d24397946f$__6383459fee876040518263ffffffff1660e01b8152600401613a6b91815260200190565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__6332c686a2838373__$343c572ead5a4485152e3bd6d24397946f$__6383459fee876040518263ffffffff1660e01b8152600401613b7491815260200190565b602060405180830381865af4158015613b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb59190614c15565b6040518463ffffffff1660e01b815260040161148c93929190615108565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__6303b571be838373__$343c572ead5a4485152e3bd6d24397946f$__6383459fee876040518263ffffffff1660e01b8152600401613c2891815260200190565b602060405180830381865af4158015613c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c699190614c15565b6040516001600160e01b031960e086901b168152600481019390935260248301919091521515604482015260640161148c565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__63ad938d60838373__$343c572ead5a4485152e3bd6d24397946f$__6383459fee876040518263ffffffff1660e01b8152600401613cf191815260200190565b602060405180830381865af4158015613d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d329190614c15565b60036040518563ffffffff1660e01b815260040161148c9493929190614c61565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__6387114036613d756139f2565b600901546040516001600160e01b031960e084901b168152611adf916001600160a01b0316908590600401615121565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600080613dd4613da5565b9050613de08484612ded565b613e60576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055613e163390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050611015565b6000915050611015565b600080613e75613da5565b9050613e818484612ded565b15613e60576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050611015565b600061118443614163565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480613f7457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316613f686000805160206151bc833981519152546001600160a01b031690565b6001600160a01b031614155b15613f925760405163703e46dd60e11b815260040160405180910390fd5b565b60008051602061517c833981519152611a8f81613881565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015614006575060408051601f3d908101601f1916820190925261400391810190614bfc565b60015b6140255781604051634c9c8ce360e01b81526004016112319190614740565b6000805160206151bc833981519152811461405657604051632a87526960e21b815260048101829052602401611231565b6112fc838361419a565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614613f925760405163703e46dd60e11b815260040160405180910390fd5b7f83b9a7e51f394efa93107c3888716138908bbbe611dfc86afa3639a82644110090565b7fb5b8d618af1ffb8d5bcc4bd23f445ba34ed08d7a16d1e1b5411cfbe7913e590090565b8054600090801561412f576141198361410b60018461513a565b600091825260209091200190565b54600160301b90046001600160d01b0316611432565b60009392505050565b6141428282612ded565b611a8f57808260405163e2517d3f60e01b8152600401611231929190615121565b600065ffffffffffff821115614196576040516306dfcc6560e41b81526030600482015260248101839052604401611231565b5090565b6141a3826141f0565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156141e8576112fc828261424c565b611a8f6142c2565b806001600160a01b03163b60000361421d5780604051634c9c8ce360e01b81526004016112319190614740565b6000805160206151bc83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516142699190614d39565b600060405180830381855af49150503d80600081146142a4576040519150601f19603f3d011682016040523d82523d6000602084013e6142a9565b606091505b50915091506142b98583836142e1565b95945050505050565b3415613f925760405163b398979f60e01b815260040160405180910390fd5b6060826142f6576142f182614334565b611432565b815115801561430d57506001600160a01b0384163b155b1561432d5783604051639996b31560e01b81526004016112319190614740565b5092915050565b8051156143445780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60006020828403121561436f57600080fd5b81356001600160e01b03198116811461143257600080fd5b60005b838110156143a257818101518382015260200161438a565b50506000910152565b600081518084526143c3816020860160208601614387565b601f01601f19169290920160200192915050565b8051825260018060a01b0360208201511660208301526000604082015160c0604085015261440860c08501826143ab565b90506060830151848203606086015261442182826143ab565b9150506080830151608085015260a0830151151560a08501528091505092915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561449957603f198886030184526144878583516143d7565b9450928501929085019060010161446b565b5092979650505050505050565b801515811461388b57600080fd5b600080604083850312156144c757600080fd5b8235915060208301356144d9816144a6565b809150509250929050565b6000602082840312156144f657600080fd5b5035919050565b6001600160a01b038116811461388b57600080fd5b6000806040838503121561452557600080fd5b8235915060208301356144d9816144fd565b60006020828403121561454957600080fd5b813565ffffffffffff8116811461143257600080fd5b600060e0828403121561457157600080fd5b50919050565b60008060006060848603121561458c57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b03811182821017156145db576145db6145a3565b60405290565b604051606081016001600160401b03811182821017156145db576145db6145a3565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6145a3565b604052919050565b60006001600160401b0382111561464c5761464c6145a3565b50601f01601f191660200190565b600061466d61466884614633565b614603565b905082815283838301111561468157600080fd5b828260208301376000602084830101529392505050565b600082601f8301126146a957600080fd5b6114328383356020850161465a565b600080600080608085870312156146ce57600080fd5b84356146d9816144fd565b935060208501356146e9816144fd565b925060408501356001600160401b038082111561470557600080fd5b61471188838901614698565b9350606087013591508082111561472757600080fd5b5061473487828801614698565b91505092959194509250565b6001600160a01b0391909116815260200190565b6000806040838503121561476757600080fd5b50508035926020909101359150565b60208152600061143260208301846143ab565b60006020828403121561479b57600080fd5b81356001600160401b038111156147b157600080fd5b6147bd84828501614698565b949350505050565b6020808252825182820181905260009190848201906040850190845b818110156148065783516001600160a01b0316835292840192918401916001016147e1565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561485e578151805185528681015187860152850151858501526060909301929085019060010161482f565b5091979650505050505050565b6000806040838503121561487e57600080fd5b8235614889816144fd565b915060208301356001600160401b038111156148a457600080fd5b8301601f810185136148b557600080fd5b6148c48582356020840161465a565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015614806578351835292840192918401916001016148ea565b60006020828403121561491857600080fd5b8135611432816144fd565b60208152600061143260208301846143d7565b60006020828403121561494857600080fd5b813560ff8116811461143257600080fd5b6000806040838503121561496c57600080fd5b8235915060208301356001600160401b0381111561498957600080fd5b6148c485828601614698565b60006001600160401b038211156149ae576149ae6145a3565b5060051b60200190565b600060208083850312156149cb57600080fd5b82516001600160401b038111156149e157600080fd5b8301601f810185136149f257600080fd5b8051614a0061466882614995565b81815260059190911b82018301908381019087831115614a1f57600080fd5b928401925b82841015614a3d57835182529284019290840190614a24565b979650505050505050565b8051614a53816144fd565b919050565b600082601f830112614a6957600080fd5b8151614a7761466882614633565b818152846020838601011115614a8c57600080fd5b6147bd826020830160208701614387565b8051614a53816144a6565b600060c08284031215614aba57600080fd5b614ac26145b9565b905081518152614ad460208301614a48565b602082015260408201516001600160401b0380821115614af357600080fd5b614aff85838601614a58565b60408401526060840151915080821115614b1857600080fd5b50614b2584828501614a58565b60608301525060808201516080820152614b4160a08301614a9d565b60a082015292915050565b60006020808385031215614b5f57600080fd5b82516001600160401b0380821115614b7657600080fd5b818501915085601f830112614b8a57600080fd5b8151614b9861466882614995565b81815260059190911b83018401908481019088831115614bb757600080fd5b8585015b83811015614bef57805185811115614bd35760008081fd5b614be18b89838a0101614aa8565b845250918601918601614bbb565b5098975050505050505050565b600060208284031215614c0e57600080fd5b5051919050565b600060208284031215614c2757600080fd5b8151611432816144a6565b9182521515602082015260400190565b92835260208301919091526001600160a01b0316604082015260600190565b9384526001600160a01b0392909216602084015215156040830152606082015260800190565b6001600160a01b038481168252831660208201526060604082018190526000906142b9908301846143ab565b6001600160a01b0384168152606060208201819052600090614cd7908301856143ab565b90508215156040830152949350505050565b9283526001600160a01b039190911660208301521515604082015260600190565b60008351614d1c818460208801614387565b835190830190614d30818360208801614387565b01949350505050565b60008251614d4b818460208701614387565b9190910192915050565b60006020808385031215614d6857600080fd5b82516001600160401b03811115614d7e57600080fd5b8301601f81018513614d8f57600080fd5b8051614d9d61466882614995565b81815260609182028301840191848201919088841115614dbc57600080fd5b938501935b83851015614e065780858a031215614dd95760008081fd5b614de16145e1565b8551815286860151878201526040808701519082015283529384019391850191614dc1565b50979650505050505050565b60006020808385031215614e2557600080fd5b82516001600160401b03811115614e3b57600080fd5b8301601f81018513614e4c57600080fd5b8051614e5a61466882614995565b81815260059190911b82018301908381019087831115614e7957600080fd5b928401925b82841015614a3d578351614e91816144fd565b82529284019290840190614e7e565b600181811c90821680614eb457607f821691505b60208210810361457157634e487b7160e01b600052602260045260246000fd5b604081526000808454614ee681614ea0565b8060408601526060600180841660008114614f085760018114614f2257614f53565b60ff1985168884015283151560051b880183019550614f53565b8960005260208060002060005b86811015614f4a5781548b8201870152908401908201614f2f565b8a018501975050505b505050505082810360208401526142b981856143ab565b601f8211156112fc57600081815260208120601f850160051c81016020861015614f915750805b601f850160051c820191505b818110156114b857828155600101614f9d565b81516001600160401b03811115614fc957614fc96145a3565b614fdd81614fd78454614ea0565b84614f6a565b602080601f8311600181146150125760008415614ffa5750858301515b600019600386901b1c1916600185901b1785556114b8565b600085815260208120601f198616915b8281101561504157888601518255948401946001909101908401615022565b508582101561505f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006080828403121561508157600080fd5b604051608081016001600160401b03811182821017156150a3576150a36145a3565b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b6000602082840312156150e657600080fd5b81516001600160401b038111156150fc57600080fd5b6147bd84828501614aa8565b838152606060208201526000614cd760608301856143ab565b6001600160a01b03929092168252602082015260400190565b8181038181111561101557634e487b7160e01b600052601160045260246000fdfe71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e39d7b1cf62e8376e2ef102e20d4e487b829ff44d58ddb1f416ee01cf2ed26829e360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220ae9b52f6d4ce6836e5655dd0cd75c8afd0cfa6307d7d16442858efa4e260bbaa64736f6c63430008140033",
  "deployedBytecode": "0x6080604052600436106104285760003560e01c806301ffc9a71461042d57806303bc087f1461046257806304646a49146104845780630765ef60146104a75780630ab12e14146104c95780630ad0e45f146104e95780630bf4f68e146105095780630cb212e1146105295780630e1fb61a14610549578063109eea0114610569578063169efd47146105895780631772503b146105a95780631a25071f146105d65780631d6dbc78146105f6578063228cf42f1461060b578063248a9ca3146106205780632589a49d1461064057806327d91b0e146106605780632c35f428146106805780632e87d31f146106a05780632f2ff15d146106cd57806331677980146106ed57806334b0e6b31461070257806336568abe1461072257806339c6d4cb14610742578063416c0f741461076457806342c89f521461079157806344532be2146107b157806344bb58f7146107de5780634a0c4a42146107fe5780634bf5d7e9146108135780634f1ef286146108285780634f77fe121461083b57806351d2a6e31461085b57806352d1902d1461087b57806354933bf01461089057806354fd4d50146108b057806355f804b3146108da5780635cbc2ffb146108fa5780635cfdd4701461090f5780635dd3a4f11461093c578063607bfb241461098f5780636165267c146109af5780636912f1f6146109cf5780636939cec8146109ef57806369ad515614610a0f5780636a0ae3251461060b5780636b623bbe14610a2f5780636c0360eb14610a4f5780636f604ab314610a645780636fb44f5f14610a845780637258410214610aa457806376cd2fa514610ac4578063785d6e1814610ae45780637ba5328514610b11578063826b9a4e14610b31578063833d29b414610b515780638380216514610b71578063861f6bfd14610b915780638e3a29dc14610bb15780638e4284f514610bd157806391d1485414610be657806391ddadf414610c065780639294b7a414610c325780639478401714610c47578063993f8d3614610c675780639ab17c9b14610c875780639fa949ad14610ca7578063a06bb12914610cc7578063a06db7dc14610ce7578063a099a19214610cfc578063a217fddf14610d1c578063acdb9f0514610d31578063ad3cb1cc14610d51578063b58a754714610d82578063b747e2e914610da2578063b90a30ea14610dc2578063bcbd410c14610dd7578063c04cff1914610df7578063c296b1d214610e0c578063c7b24f3014610e21578063c996c62414610e41578063ccd4baca14610e61578063d2570b9414610e81578063d547741f14610ea1578063d6418b8a14610ec1578063d76c397314610ed6578063e123cd0c14610ef6578063e9a1fee414610f16578063e9f9739d14610f36578063ee9419cf14610f56578063f1a962ac14610f76578063f36c8f5c14610f8b578063f72c0d8b14610fad578063f770337914610fcf575b600080fd5b34801561043957600080fd5b5061044d61044836600461435d565b610fe4565b60405190151581526020015b60405180910390f35b34801561046e57600080fd5b5061047761101b565b6040516104599190614444565b34801561049057600080fd5b50610499611115565b604051908152602001610459565b3480156104b357600080fd5b506104c76104c23660046144b4565b611189565b005b3480156104d557600080fd5b506104c76104e43660046144e4565b611301565b3480156104f557600080fd5b5061044d610504366004614512565b6113aa565b34801561051557600080fd5b506104c7610524366004614537565b611439565b34801561053557600080fd5b506104c7610544366004614512565b6114c0565b34801561055557600080fd5b506104c761056436600461455f565b6115ee565b34801561057557600080fd5b506104c7610584366004614577565b61167a565b34801561059557600080fd5b506104c76105a43660046146b8565b611824565b3480156105b557600080fd5b506105c96105c43660046144e4565b611a54565b6040516104599190614740565b3480156105e257600080fd5b506104c76105f13660046144e4565b611a7b565b34801561060257600080fd5b506104c7611a93565b34801561061757600080fd5b50610499606481565b34801561062c57600080fd5b5061049961063b3660046144e4565b611b12565b34801561064c57600080fd5b506104c761065b366004614512565b611b32565b34801561066c57600080fd5b506104c761067b366004614754565b611c27565b34801561068c57600080fd5b506105c961069b3660046144e4565b611dc8565b3480156106ac57600080fd5b506106c06106bb3660046144e4565b611dec565b6040516104599190614776565b3480156106d957600080fd5b506104c76106e8366004614512565b611ebb565b3480156106f957600080fd5b5061044d611edd565b34801561070e57600080fd5b5061049961071d366004614789565b611f4c565b34801561072e57600080fd5b506104c761073d366004614512565b611f7c565b34801561074e57600080fd5b5061049960008051602061519c83398151915281565b34801561077057600080fd5b5061078461077f3660046144e4565b611faf565b60405161045991906147c5565b34801561079d57600080fd5b506104996107ac3660046144e4565b61202d565b3480156107bd57600080fd5b506107d16107cc3660046144e4565b6120a5565b6040516104599190614812565b3480156107ea57600080fd5b506107846107f93660046144e4565b612120565b34801561080a57600080fd5b5061049961219b565b34801561081f57600080fd5b506106c06121e6565b6104c761083636600461486b565b61225e565b34801561084757600080fd5b506104c76108563660046144e4565b612279565b34801561086757600080fd5b506104c76108763660046144e4565b6122c9565b34801561088757600080fd5b50610499612319565b34801561089c57600080fd5b506104c76108ab366004614754565b612336565b3480156108bc57600080fd5b506040805180820190915260018152600760fb1b60208201526106c0565b3480156108e657600080fd5b506104c76108f5366004614789565b612381565b34801561090657600080fd5b506104996123df565b34801561091b57600080fd5b5061092f61092a3660046144e4565b61242a565b60405161045991906148ce565b34801561094857600080fd5b5061095c6109573660046144e4565b6124a5565b60405161045991908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b34801561099b57600080fd5b5061044d6109aa3660046144e4565b612544565b3480156109bb57600080fd5b506104c76109ca366004614512565b6125bc565b3480156109db57600080fd5b506104996109ea366004614906565b612607565b3480156109fb57600080fd5b506104c7610a0a366004614577565b612633565b348015610a1b57600080fd5b50610784610a2a3660046144e4565b61271b565b348015610a3b57600080fd5b5061044d610a4a3660046144e4565b612797565b348015610a5b57600080fd5b506106c06127b8565b348015610a7057600080fd5b506106c0610a7f3660046144e4565b612850565b348015610a9057600080fd5b506104c7610a9f3660046144e4565b6128f2565b348015610ab057600080fd5b50610499610abf366004614754565b612942565b348015610ad057600080fd5b506104c7610adf3660046144e4565b6129c1565b348015610af057600080fd5b50610b04610aff3660046144e4565b612b70565b6040516104599190614923565b348015610b1d57600080fd5b50610499610b2c3660046144e4565b612c2f565b348015610b3d57600080fd5b50610499610b4c3660046144e4565b612c6a565b348015610b5d57600080fd5b506104c7610b6c366004614512565b612c88565b348015610b7d57600080fd5b506104c7610b8c366004614512565b612cd3565b348015610b9d57600080fd5b506104c7610bac3660046144e4565b612d69565b348015610bbd57600080fd5b5061044d610bcc366004614512565b612db9565b348015610bdd57600080fd5b50610499600381565b348015610bf257600080fd5b5061044d610c01366004614512565b612ded565b348015610c1257600080fd5b50610c1b612e23565b60405165ffffffffffff9091168152602001610459565b348015610c3e57600080fd5b506104c7612e2d565b348015610c5357600080fd5b5061044d610c623660046144e4565b612e7d565b348015610c7357600080fd5b506104c7610c82366004614512565b612ec9565b348015610c9357600080fd5b50610499610ca2366004614754565b612f14565b348015610cb357600080fd5b506104c7610cc2366004614512565b612f56565b348015610cd357600080fd5b506104c7610ce2366004614512565b612fec565b348015610cf357600080fd5b50610499613082565b348015610d0857600080fd5b5061044d610d173660046144e4565b6130cd565b348015610d2857600080fd5b50610499600081565b348015610d3d57600080fd5b50610499610d4c366004614936565b613184565b348015610d5d57600080fd5b506106c0604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610d8e57600080fd5b5061044d610d9d366004614512565b6131c1565b348015610dae57600080fd5b50610784610dbd3660046144e4565b613208565b348015610dce57600080fd5b5061044d613284565b348015610de357600080fd5b5061044d610df2366004614906565b6132cf565b348015610e0357600080fd5b5061092f613309565b348015610e1857600080fd5b506104c7613363565b348015610e2d57600080fd5b5061044d610e3c3660046144e4565b6133b3565b348015610e4d57600080fd5b50610499610e5c366004614906565b6133f6565b348015610e6d57600080fd5b5061044d610e7c366004614754565b613430565b348015610e8d57600080fd5b5061044d610e9c366004614754565b613472565b348015610ead57600080fd5b506104c7610ebc366004614512565b6134e1565b348015610ecd57600080fd5b5061092f6134fd565b348015610ee257600080fd5b50610499610ef13660046144e4565b613570565b348015610f0257600080fd5b506104c7610f11366004614754565b6135ab565b348015610f2257600080fd5b506104c7610f31366004614959565b6136cc565b348015610f4257600080fd5b50610499610f513660046144e4565b61372a565b348015610f6257600080fd5b506104c7610f71366004614577565b613765565b348015610f8257600080fd5b506104996137c3565b348015610f9757600080fd5b5061049960008051602061515c83398151915281565b348015610fb957600080fd5b5061049960008051602061517c83398151915281565b348015610fdb57600080fd5b5061047761380e565b60006001600160e01b03198216637965db0b60e01b148061101557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__63d6418b8a6040518163ffffffff1660e01b8152600401600060405180830381865af4158015611068573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261109091908101906149b8565b60405163cd7d1e4360e01b815290915073__$343c572ead5a4485152e3bd6d24397946f$__9063cd7d1e43906110ca9084906004016148ce565b600060405180830381865af41580156110e7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261110f9190810190614b4c565b91505090565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__6304646a496040518163ffffffff1660e01b8152600401602060405180830381865af4158015611160573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111849190614bfc565b905090565b60008051602061515c8339815191526111a181613881565b6040516341a2cff760e11b81526004810184905273__$343c572ead5a4485152e3bd6d24397946f$__906383459fee90602401602060405180830381865af41580156111f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112159190614c15565b61123a5760405163018f58af60e31b8152600481018490526024015b60405180910390fd5b61124383612544565b1561125257611252838361388e565b61125b836133b3565b8015611265575081155b156112d557604051637e57cd3b60e11b815273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063fcaf9a76906112a4908690600190600401614c32565b60006040518083038186803b1580156112bc57600080fd5b505af41580156112d0573d6000803e3d6000fd5b505050505b816112e8576112e3836138fb565b6112f1565b6112f183613940565b6112fc838315613986565b505050565b60008161130e8233612ded565b15801561132257506113208133612db9565b155b1561134257336040516363a704cf60e11b81526004016112319190614740565b6040516302ac4b8560e21b81526004810184905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90630ab12e149060240160006040518083038186803b15801561138d57600080fd5b505af41580156113a1573d6000803e3d6000fd5b50505050505050565b600073__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__6384fd97586113ce6139f2565b60010185856040518463ffffffff1660e01b81526004016113f193929190614c42565b602060405180830381865af415801561140e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114329190614c15565b9392505050565b60008051602061515c83398151915261145181613881565b60405163a11bd9fb60e01b815265ffffffffffff8316600482015273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063a11bd9fb906024015b60006040518083038186803b1580156114a457600080fd5b505af41580156114b8573d6000803e3d6000fd5b505050505050565b6000826114cd8233612ded565b1580156114e157506114df8133612db9565b155b1561150157336040516363a704cf60e11b81526004016112319190614740565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__63e1649755858573__$343c572ead5a4485152e3bd6d24397946f$__6383459fee896040518263ffffffff1660e01b815260040161155691815260200190565b602060405180830381865af4158015611573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115979190614c15565b60646040518563ffffffff1660e01b81526004016115b89493929190614c61565b60006040518083038186803b1580156115d057600080fd5b505af41580156115e4573d6000803e3d6000fd5b5050505050505050565b60008051602061515c83398151915261160681613881565b60408051633811422160e01b81528335600482015260208401356024820152908301356044820152606083013560648201526080830135608482015260a083013560a482015260c083013560c482015273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063381142219060e40161148c565b73__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__639a1166418484846116a088612797565b6116a989612544565b6116b28a612e7d565b6040516001600160e01b031960e089901b1681526004810196909652602486019490945260448501929092521515606484015215156084830152151560a482015260c40160006040518083038186803b15801561170e57600080fd5b505af4158015611722573d6000803e3d6000fd5b5050505073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__63f1a962ac6040518163ffffffff1660e01b8152600401602060405180830381865af415801561176f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117939190614bfc565b604051637ba5328560e01b81526004810185905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90637ba5328590602401602060405180830381865af41580156117e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118079190614bfc565b106112fc5761181583612e7d565b6112fc576112fc83600161388e565b61182c6139f2565b600801546040516370a0823160e01b81526001600160a01b03909116906370a082319061185d903390600401614740565b602060405180830381865afa15801561187a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189e9190614bfc565b6000036118c05733604051631223ae8960e01b81526004016112319190614740565b6118c9336132cf565b156118e9573360405163630ad52760e11b81526004016112319190614740565b6040516370325edf60e01b815260009073__$343c572ead5a4485152e3bd6d24397946f$__906370325edf9061192790889088908890600401614c87565b602060405180830381865af4158015611944573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119689190614bfc565b90506119748185613a16565b61197e8186613aca565b6119888183613b1f565b611993816000613bd3565b604051639fcb2b4160e01b815273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90639fcb2b41906119cd908490600090600401614c32565b60006040518083038186803b1580156119e557600080fd5b505af41580156119f9573d6000803e3d6000fd5b50505050611a078133613c9c565b611a1081613d53565b807f181c8615e49dc4eaed218e1d225e4a34a0fb364fc70601a191573daa19d57eda86856000604051611a4593929190614cb3565b60405180910390a25050505050565b6000611a5e6139f2565b60009283526003016020525060409020546001600160a01b031690565b6000611a8681613881565b611a8f82613d53565b5050565b60008051602061515c833981519152611aab81613881565b604051633f34643160e21b81526000600482015273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063fcd190c4906024015b60006040518083038186803b158015611af757600080fd5b505af4158015611b0b573d6000803e3d6000fd5b5050505050565b600080611b1d613da5565b60009384526020525050604090206001015490565b600082611b3f8233612ded565b158015611b535750611b518133612db9565b155b15611b7357336040516363a704cf60e11b81526004016112319190614740565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__63a9cc17dc858573__$343c572ead5a4485152e3bd6d24397946f$__6383459fee896040518263ffffffff1660e01b8152600401611bc891815260200190565b602060405180830381865af4158015611be5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c099190614c15565b6040518463ffffffff1660e01b81526004016115b893929190614ce9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460089190600160401b900460ff1680611c70575080546001600160401b03808416911610155b15611c8e5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b178155604051636fb44f5f60e01b815273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90636fb44f5f90611ce890879060040190815260200190565b60006040518083038186803b158015611d0057600080fd5b505af4158015611d14573d6000803e3d6000fd5b50506040516351d2a6e360e01b81526004810186905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__92506351d2a6e3915060240160006040518083038186803b158015611d6357600080fd5b505af4158015611d77573d6000803e3d6000fd5b5050825460ff60401b1916835550506040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6000611dd26139f2565b60009283526020525060409020546001600160a01b031690565b6040516341a2cff760e11b81526004810182905260609073__$343c572ead5a4485152e3bd6d24397946f$__906383459fee90602401602060405180830381865af4158015611e3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e639190614c15565b611e835760405163018f58af60e31b815260048101839052602401611231565b611e8b6127b8565b611e9483612850565b604051602001611ea5929190614d0a565b6040516020818303038152906040529050919050565b611ec482611b12565b611ecd81613881565b611ed78383613dc9565b50505050565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__63316779806040518163ffffffff1660e01b8152600401602060405180830381865af4158015611f28573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111849190614c15565b600081604051602001611f5f9190614d39565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381163314611fa55760405163334bd91960e11b815260040160405180910390fd5b6112fc8282613e6a565b6060611fb96139f2565b600201600083815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561202157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612003575b50505050509050919050565b6040516321644fa960e11b81526004810182905260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__906342c89f52906024015b602060405180830381865af4158015612081573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110159190614bfc565b60405163222995f160e11b81526004810182905260609073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__906344532be290602401600060405180830381865af41580156120f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110159190810190614d55565b6040516344bb58f760e01b81526004810182905260609073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__906344bb58f790602401600060405180830381865af4158015612173573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110159190810190614e12565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__634a0c4a426040518163ffffffff1660e01b8152600401602060405180830381865af4158015611160573d6000803e3d6000fd5b60606121f0613ee2565b65ffffffffffff16612200612e23565b65ffffffffffff1614612226576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b612266613eed565b61226f82613f94565b611a8f8282613fac565b60008051602061515c83398151915261229181613881565b6040516327bbff0960e11b81526004810183905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90634f77fe129060240161148c565b60008051602061515c8339815191526122e181613881565b6040516351d2a6e360e01b81526004810183905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__906351d2a6e39060240161148c565b6000612323614060565b506000805160206151bc83398151915290565b6000826123438233612ded565b15801561235757506123558133612db9565b155b1561237757336040516363a704cf60e11b81526004016112319190614740565b611ed78484613bd3565b600061238c81613881565b60006123966140a9565b90507f309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc181600001846040516123cc929190614ed4565b60405180910390a180611ed78482614fb0565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__635cbc2ffb6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611160573d6000803e3d6000fd5b6040516305cfdd4760e41b81526004810182905260609073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90635cfdd47090602401600060405180830381865af415801561247d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101591908101906149b8565b6124d06040518060800160405280600081526020016000815260200160008152602001600081525090565b604051635dd3a4f160e01b81526004810183905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90635dd3a4f190602401608060405180830381865af4158015612520573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611015919061506f565b60405163181efec960e21b81526004810182905260009073__$343c572ead5a4485152e3bd6d24397946f$__9063607bfb24906024015b602060405180830381865af4158015612598573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110159190614c15565b6000826125c98233612ded565b1580156125dd57506125db8133612db9565b155b156125fd57336040516363a704cf60e11b81526004016112319190614740565b611ed78484613aca565b60006126116139f2565b6001600160a01b03909216600090815260079290920160205250604090205490565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__634fd4e1b885858561265b89612797565b6126648a612e7d565b61266c612e23565b6040516001600160e01b031960e089901b168152600481019690965260248601949094526044850192909252151560648401521515608483015265ffffffffffff1660a482015260c401602060405180830381865af41580156126d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f79190614c15565b90508015801561270b575061270b84612e7d565b15611ed757611ed784600061388e565b60606127256139f2565b6001016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015612021576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116120035750505050509050919050565b60006127a16140cd565b600092835260030160205250604090205460ff1690565b60606127c26140a9565b80546127cd90614ea0565b80601f01602080910402602001604051908101604052809291908181526020018280546127f990614ea0565b80156128465780601f1061281b57610100808354040283529160200191612846565b820191906000526020600020905b81548152906001019060200180831161282957829003601f168201915b5050505050905090565b606061285a6139f2565b600083815260059190910160205260409020805461287790614ea0565b80601f01602080910402602001604051908101604052809291908181526020018280546128a390614ea0565b80156120215780601f106128c557610100808354040283529160200191612021565b820191906000526020600020905b8154815290600101906020018083116128d35750939695505050505050565b60008051602061515c83398151915261290a81613881565b604051636fb44f5f60e01b81526004810183905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90636fb44f5f9060240161148c565b60405163392c208160e11b8152600481018390526024810182905260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__906372584102906044015b602060405180830381865af415801561299d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114329190614bfc565b6129cb8133612db9565b6129ea57336040516363a704cf60e11b81526004016112319190614740565b6040516341a2cff760e11b81526004810182905273__$343c572ead5a4485152e3bd6d24397946f$__906383459fee90602401602060405180830381865af4158015612a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5e9190614c15565b612a7e5760405163018f58af60e31b815260048101829052602401611231565b612a8781612797565b15612aa857604051633126f1ab60e01b815260048101829052602401611231565b612ab1816133b3565b15612b2157604051637e57cd3b60e11b815273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063fcaf9a7690612af0908490600190600401614c32565b60006040518083038186803b158015612b0857600080fd5b505af4158015612b1c573d6000803e3d6000fd5b505050505b612b2c81600061388e565b612b35816138fb565b612b40816001613986565b604051339082907f5a6c1432141559a12a66c9321806df68b9948db6cc62bffed540b668c3165bf890600090a350565b612bb76040518060c001604052806000801916815260200160006001600160a01b031681526020016060815260200160608152602001600081526020016000151581525090565b604051630f0badc360e31b81526004810183905273__$343c572ead5a4485152e3bd6d24397946f$__9063785d6e1890602401600060405180830381865af4158015612c07573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101591908101906150d4565b604051637ba5328560e01b81526004810182905260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90637ba5328590602401612064565b6000612c746139f2565b600092835260040160205250604090205490565b600082612c958233612ded565b158015612ca95750612ca78133612db9565b155b15612cc957336040516363a704cf60e11b81526004016112319190614740565b611ed78484613a16565b600082612ce08233612ded565b158015612cf45750612cf28133612db9565b155b15612d1457336040516363a704cf60e11b81526004016112319190614740565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__63bad8aa4a858573__$343c572ead5a4485152e3bd6d24397946f$__6383459fee896040518263ffffffff1660e01b815260040161155691815260200190565b60008051602061515c833981519152612d8181613881565b6040516380ea3de160e01b81526004810183905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__906380ea3de19060240161148c565b6000816001600160a01b0316612dcd6139f2565b60009485526020526040909320546001600160a01b031690921492915050565b600080612df8613da5565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000611184613ee2565b60008051602061515c833981519152612e4581613881565b604051633f34643160e21b81526001600482015273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063fcd190c490602401611adf565b6000612e8882612544565b612e9457506000919050565b612eb6612e9f6140cd565b6000848152600291909101602052604090206140f1565b6001600160d01b03166001149050919050565b600082612ed68233612ded565b158015612eea5750612ee88133612db9565b155b15612f0a57336040516363a704cf60e11b81526004016112319190614740565b611ed78484613c9c565b604051639ab17c9b60e01b8152600481018390526024810182905260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__90639ab17c9b90604401612980565b600082612f638233612ded565b158015612f775750612f758133612db9565b155b15612f9757336040516363a704cf60e11b81526004016112319190614740565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__637e250990858573__$343c572ead5a4485152e3bd6d24397946f$__6383459fee896040518263ffffffff1660e01b8152600401611bc891815260200190565b600082612ff98233612ded565b15801561300d575061300b8133612db9565b155b1561302d57336040516363a704cf60e11b81526004016112319190614740565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__633c840f6c858573__$343c572ead5a4485152e3bd6d24397946f$__6383459fee896040518263ffffffff1660e01b8152600401611bc891815260200190565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__63a06db7dc6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611160573d6000803e3d6000fd5b60008073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__636e054773846130f3612e23565b6040516001600160e01b031960e085901b168152600481019290925265ffffffffffff166024820152604401602060405180830381865af415801561313c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131609190614c15565b905080158015613174575061317483612e7d565b156110155761101583600061388e565b60405163acdb9f0560e01b815260ff8216600482015260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063acdb9f0590602401612064565b600073__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__63f6b503616131e56139f2565b60020185856040518463ffffffff1660e01b81526004016113f193929190614c42565b60606132126139f2565b6006016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015612021576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116120035750505050509050919050565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__63b90a30ea6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611f28573d6000803e3d6000fd5b6000806132da6139f2565b6007016000846001600160a01b03166001600160a01b0316815260200190815260200160002054119050919050565b60606133136140cd565b80546040805160208084028201810190925282815292919083018282801561284657602002820191906000526020600020905b815481526020019060010190808311613346575050505050905090565b60008051602061515c83398151915261337b81613881565b6040516311f9772f60e21b81526001600482015273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__906347e5dcbc90602401611adf565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__631e13ed7a836133d985612797565b6040518363ffffffff1660e01b815260040161257b929190614c32565b604051633265b18960e21b815260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063c996c62490612064908590600401614740565b60405163666a5d6560e11b8152600481018390526024810182905260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063ccd4baca906044016113f1565b600073__$5fc1fcec812483b812ebdf1c2ddb0b80ea$__63f987f709848461349987612544565b6134a1612e23565b6040516001600160e01b031960e087901b168152600481019490945260248401929092521515604483015265ffffffffffff1660648201526084016113f1565b6134ea82611b12565b6134f381613881565b611ed78383613e6a565b606073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__63d6418b8a6040518163ffffffff1660e01b8152600401600060405180830381865af4158015613548573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261118491908101906149b8565b60405163d76c397360e01b81526004810182905260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063d76c397390602401612064565b6000826135b88233612ded565b1580156135cc57506135ca8133612db9565b155b156135ec57336040516363a704cf60e11b81526004016112319190614740565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__63e8786a58868661361389612797565b61361c8a612e7d565b613624612e23565b6040516001600160e01b031960e088901b1681526004810195909552602485019390935290151560448401521515606483015265ffffffffffff16608482015260a401602060405180830381865af4158015613684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a89190614c15565b9050801580156136bc57506136bc85612e7d565b15611b0b57611b0b85600061388e565b6000826136d98233612ded565b1580156136ed57506136eb8133612db9565b155b801561370057506136fe81336113aa565b155b1561372057336040516363a704cf60e11b81526004016112319190614740565b611ed78484613b1f565b60405163e9f9739d60e01b81526004810182905260009073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063e9f9739d90602401612064565b60008051602061519c83398151915261377d81613881565b60405163ee9419cf60e01b815260048101859052602481018490526044810183905273__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__9063ee9419cf906064016115b8565b600073__$9b0e2f7cb5e8cf9c1a9487e02e5317f6f1$__63f1a962ac6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611160573d6000803e3d6000fd5b606073__$343c572ead5a4485152e3bd6d24397946f$__63f77033796040518163ffffffff1660e01b8152600401600060405180830381865af4158015613859573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111849190810190614b4c565b61388b8133614138565b50565b73__$5fc1fcec812483b812ebdf1c2ddb0b80ea$__63c2ff3b9383836138b386612e7d565b6138bb612e23565b6040516001600160e01b031960e087901b168152600481019490945291151560248401521515604483015265ffffffffffff16606482015260840161148c565b61390481612797565b61388b57604051631da953cd60e01b81526004810182905273__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__90631da953cd90602401611adf565b61394981612797565b1561388b57604051639304e39360e01b81526004810182905273__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__90639304e39390602401611adf565b60006139906140cd565b600084815260038201602052604090819020805460ff19168515151790555190915083907fdcf7bb788a4c8c91f85b15fa04797101b624ce86f804c2ccc49d8474adeb90ba906139e590851515815260200190565b60405180910390a2505050565b7f5830f0e95c01712d916c34d9e2fa42e9f749b325b67bce7382d70bb99c62350090565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__6362ce9119838373__$343c572ead5a4485152e3bd6d24397946f$__6383459fee876040518263ffffffff1660e01b8152600401613a6b91815260200190565b602060405180830381865af4158015613a88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aac9190614c15565b6040518463ffffffff1660e01b815260040161148c93929190614ce9565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__63eb295ebf838373__$343c572ead5a4485152e3bd6d24397946f$__6383459fee876040518263ffffffff1660e01b8152600401613a6b91815260200190565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__6332c686a2838373__$343c572ead5a4485152e3bd6d24397946f$__6383459fee876040518263ffffffff1660e01b8152600401613b7491815260200190565b602060405180830381865af4158015613b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb59190614c15565b6040518463ffffffff1660e01b815260040161148c93929190615108565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__6303b571be838373__$343c572ead5a4485152e3bd6d24397946f$__6383459fee876040518263ffffffff1660e01b8152600401613c2891815260200190565b602060405180830381865af4158015613c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c699190614c15565b6040516001600160e01b031960e086901b168152600481019390935260248301919091521515604482015260640161148c565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__63ad938d60838373__$343c572ead5a4485152e3bd6d24397946f$__6383459fee876040518263ffffffff1660e01b8152600401613cf191815260200190565b602060405180830381865af4158015613d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d329190614c15565b60036040518563ffffffff1660e01b815260040161148c9493929190614c61565b73__$c9bd2f60292717c6c7f69f5883aa5bfb7a$__6387114036613d756139f2565b600901546040516001600160e01b031960e084901b168152611adf916001600160a01b0316908590600401615121565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600080613dd4613da5565b9050613de08484612ded565b613e60576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055613e163390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050611015565b6000915050611015565b600080613e75613da5565b9050613e818484612ded565b15613e60576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050611015565b600061118443614163565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480613f7457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316613f686000805160206151bc833981519152546001600160a01b031690565b6001600160a01b031614155b15613f925760405163703e46dd60e11b815260040160405180910390fd5b565b60008051602061517c833981519152611a8f81613881565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015614006575060408051601f3d908101601f1916820190925261400391810190614bfc565b60015b6140255781604051634c9c8ce360e01b81526004016112319190614740565b6000805160206151bc833981519152811461405657604051632a87526960e21b815260048101829052602401611231565b6112fc838361419a565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614613f925760405163703e46dd60e11b815260040160405180910390fd5b7f83b9a7e51f394efa93107c3888716138908bbbe611dfc86afa3639a82644110090565b7fb5b8d618af1ffb8d5bcc4bd23f445ba34ed08d7a16d1e1b5411cfbe7913e590090565b8054600090801561412f576141198361410b60018461513a565b600091825260209091200190565b54600160301b90046001600160d01b0316611432565b60009392505050565b6141428282612ded565b611a8f57808260405163e2517d3f60e01b8152600401611231929190615121565b600065ffffffffffff821115614196576040516306dfcc6560e41b81526030600482015260248101839052604401611231565b5090565b6141a3826141f0565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156141e8576112fc828261424c565b611a8f6142c2565b806001600160a01b03163b60000361421d5780604051634c9c8ce360e01b81526004016112319190614740565b6000805160206151bc83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516142699190614d39565b600060405180830381855af49150503d80600081146142a4576040519150601f19603f3d011682016040523d82523d6000602084013e6142a9565b606091505b50915091506142b98583836142e1565b95945050505050565b3415613f925760405163b398979f60e01b815260040160405180910390fd5b6060826142f6576142f182614334565b611432565b815115801561430d57506001600160a01b0384163b155b1561432d5783604051639996b31560e01b81526004016112319190614740565b5092915050565b8051156143445780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60006020828403121561436f57600080fd5b81356001600160e01b03198116811461143257600080fd5b60005b838110156143a257818101518382015260200161438a565b50506000910152565b600081518084526143c3816020860160208601614387565b601f01601f19169290920160200192915050565b8051825260018060a01b0360208201511660208301526000604082015160c0604085015261440860c08501826143ab565b90506060830151848203606086015261442182826143ab565b9150506080830151608085015260a0830151151560a08501528091505092915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561449957603f198886030184526144878583516143d7565b9450928501929085019060010161446b565b5092979650505050505050565b801515811461388b57600080fd5b600080604083850312156144c757600080fd5b8235915060208301356144d9816144a6565b809150509250929050565b6000602082840312156144f657600080fd5b5035919050565b6001600160a01b038116811461388b57600080fd5b6000806040838503121561452557600080fd5b8235915060208301356144d9816144fd565b60006020828403121561454957600080fd5b813565ffffffffffff8116811461143257600080fd5b600060e0828403121561457157600080fd5b50919050565b60008060006060848603121561458c57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b03811182821017156145db576145db6145a3565b60405290565b604051606081016001600160401b03811182821017156145db576145db6145a3565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6145a3565b604052919050565b60006001600160401b0382111561464c5761464c6145a3565b50601f01601f191660200190565b600061466d61466884614633565b614603565b905082815283838301111561468157600080fd5b828260208301376000602084830101529392505050565b600082601f8301126146a957600080fd5b6114328383356020850161465a565b600080600080608085870312156146ce57600080fd5b84356146d9816144fd565b935060208501356146e9816144fd565b925060408501356001600160401b038082111561470557600080fd5b61471188838901614698565b9350606087013591508082111561472757600080fd5b5061473487828801614698565b91505092959194509250565b6001600160a01b0391909116815260200190565b6000806040838503121561476757600080fd5b50508035926020909101359150565b60208152600061143260208301846143ab565b60006020828403121561479b57600080fd5b81356001600160401b038111156147b157600080fd5b6147bd84828501614698565b949350505050565b6020808252825182820181905260009190848201906040850190845b818110156148065783516001600160a01b0316835292840192918401916001016147e1565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561485e578151805185528681015187860152850151858501526060909301929085019060010161482f565b5091979650505050505050565b6000806040838503121561487e57600080fd5b8235614889816144fd565b915060208301356001600160401b038111156148a457600080fd5b8301601f810185136148b557600080fd5b6148c48582356020840161465a565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015614806578351835292840192918401916001016148ea565b60006020828403121561491857600080fd5b8135611432816144fd565b60208152600061143260208301846143d7565b60006020828403121561494857600080fd5b813560ff8116811461143257600080fd5b6000806040838503121561496c57600080fd5b8235915060208301356001600160401b0381111561498957600080fd5b6148c485828601614698565b60006001600160401b038211156149ae576149ae6145a3565b5060051b60200190565b600060208083850312156149cb57600080fd5b82516001600160401b038111156149e157600080fd5b8301601f810185136149f257600080fd5b8051614a0061466882614995565b81815260059190911b82018301908381019087831115614a1f57600080fd5b928401925b82841015614a3d57835182529284019290840190614a24565b979650505050505050565b8051614a53816144fd565b919050565b600082601f830112614a6957600080fd5b8151614a7761466882614633565b818152846020838601011115614a8c57600080fd5b6147bd826020830160208701614387565b8051614a53816144a6565b600060c08284031215614aba57600080fd5b614ac26145b9565b905081518152614ad460208301614a48565b602082015260408201516001600160401b0380821115614af357600080fd5b614aff85838601614a58565b60408401526060840151915080821115614b1857600080fd5b50614b2584828501614a58565b60608301525060808201516080820152614b4160a08301614a9d565b60a082015292915050565b60006020808385031215614b5f57600080fd5b82516001600160401b0380821115614b7657600080fd5b818501915085601f830112614b8a57600080fd5b8151614b9861466882614995565b81815260059190911b83018401908481019088831115614bb757600080fd5b8585015b83811015614bef57805185811115614bd35760008081fd5b614be18b89838a0101614aa8565b845250918601918601614bbb565b5098975050505050505050565b600060208284031215614c0e57600080fd5b5051919050565b600060208284031215614c2757600080fd5b8151611432816144a6565b9182521515602082015260400190565b92835260208301919091526001600160a01b0316604082015260600190565b9384526001600160a01b0392909216602084015215156040830152606082015260800190565b6001600160a01b038481168252831660208201526060604082018190526000906142b9908301846143ab565b6001600160a01b0384168152606060208201819052600090614cd7908301856143ab565b90508215156040830152949350505050565b9283526001600160a01b039190911660208301521515604082015260600190565b60008351614d1c818460208801614387565b835190830190614d30818360208801614387565b01949350505050565b60008251614d4b818460208701614387565b9190910192915050565b60006020808385031215614d6857600080fd5b82516001600160401b03811115614d7e57600080fd5b8301601f81018513614d8f57600080fd5b8051614d9d61466882614995565b81815260609182028301840191848201919088841115614dbc57600080fd5b938501935b83851015614e065780858a031215614dd95760008081fd5b614de16145e1565b8551815286860151878201526040808701519082015283529384019391850191614dc1565b50979650505050505050565b60006020808385031215614e2557600080fd5b82516001600160401b03811115614e3b57600080fd5b8301601f81018513614e4c57600080fd5b8051614e5a61466882614995565b81815260059190911b82018301908381019087831115614e7957600080fd5b928401925b82841015614a3d578351614e91816144fd565b82529284019290840190614e7e565b600181811c90821680614eb457607f821691505b60208210810361457157634e487b7160e01b600052602260045260246000fd5b604081526000808454614ee681614ea0565b8060408601526060600180841660008114614f085760018114614f2257614f53565b60ff1985168884015283151560051b880183019550614f53565b8960005260208060002060005b86811015614f4a5781548b8201870152908401908201614f2f565b8a018501975050505b505050505082810360208401526142b981856143ab565b601f8211156112fc57600081815260208120601f850160051c81016020861015614f915750805b601f850160051c820191505b818110156114b857828155600101614f9d565b81516001600160401b03811115614fc957614fc96145a3565b614fdd81614fd78454614ea0565b84614f6a565b602080601f8311600181146150125760008415614ffa5750858301515b600019600386901b1c1916600185901b1785556114b8565b600085815260208120601f198616915b8281101561504157888601518255948401946001909101908401615022565b508582101561505f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006080828403121561508157600080fd5b604051608081016001600160401b03811182821017156150a3576150a36145a3565b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b6000602082840312156150e657600080fd5b81516001600160401b038111156150fc57600080fd5b6147bd84828501614aa8565b838152606060208201526000614cd760608301856143ab565b6001600160a01b03929092168252602082015260400190565b8181038181111561101557634e487b7160e01b600052601160045260246000fdfe71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e39d7b1cf62e8376e2ef102e20d4e487b829ff44d58ddb1f416ee01cf2ed26829e360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220ae9b52f6d4ce6836e5655dd0cd75c8afd0cfa6307d7d16442858efa4e260bbaa64736f6c63430008140033",
  "linkReferences": {
    "contracts/x-2-earn-apps/libraries/AdministrationUtils.sol": {
      "AdministrationUtils": [
        {
          "length": 20,
          "start": 5298
        },
        {
          "length": 20,
          "start": 5639
        },
        {
          "length": 20,
          "start": 7289
        },
        {
          "length": 20,
          "start": 11802
        },
        {
          "length": 20,
          "start": 12445
        },
        {
          "length": 20,
          "start": 12595
        },
        {
          "length": 20,
          "start": 13001
        },
        {
          "length": 20,
          "start": 14882
        },
        {
          "length": 20,
          "start": 14952
        },
        {
          "length": 20,
          "start": 15132
        },
        {
          "length": 20,
          "start": 15312
        },
        {
          "length": 20,
          "start": 15397
        },
        {
          "length": 20,
          "start": 15577
        },
        {
          "length": 20,
          "start": 15778
        },
        {
          "length": 20,
          "start": 15961
        }
      ]
    },
    "contracts/x-2-earn-apps/libraries/AppStorageUtils.sol": {
      "AppStorageUtils": [
        {
          "length": 20,
          "start": 4518
        },
        {
          "length": 20,
          "start": 4795
        },
        {
          "length": 20,
          "start": 5667
        },
        {
          "length": 20,
          "start": 6655
        },
        {
          "length": 20,
          "start": 7317
        },
        {
          "length": 20,
          "start": 7945
        },
        {
          "length": 20,
          "start": 9825
        },
        {
          "length": 20,
          "start": 11012
        },
        {
          "length": 20,
          "start": 11473
        },
        {
          "length": 20,
          "start": 11830
        },
        {
          "length": 20,
          "start": 12473
        },
        {
          "length": 20,
          "start": 12623
        },
        {
          "length": 20,
          "start": 14614
        },
        {
          "length": 20,
          "start": 15160
        },
        {
          "length": 20,
          "start": 15340
        },
        {
          "length": 20,
          "start": 15425
        },
        {
          "length": 20,
          "start": 15605
        },
        {
          "length": 20,
          "start": 15806
        }
      ]
    },
    "contracts/x-2-earn-apps/libraries/EndorsementUtils.sol": {
      "EndorsementUtils": [
        {
          "length": 20,
          "start": 4389
        },
        {
          "length": 20,
          "start": 4637
        },
        {
          "length": 20,
          "start": 4989
        },
        {
          "length": 20,
          "start": 5212
        },
        {
          "length": 20,
          "start": 5490
        },
        {
          "length": 20,
          "start": 5980
        },
        {
          "length": 20,
          "start": 6016
        },
        {
          "length": 20,
          "start": 6188
        },
        {
          "length": 20,
          "start": 6317
        },
        {
          "length": 20,
          "start": 6822
        },
        {
          "length": 20,
          "start": 7109
        },
        {
          "length": 20,
          "start": 7616
        },
        {
          "length": 20,
          "start": 7728
        },
        {
          "length": 20,
          "start": 8165
        },
        {
          "length": 20,
          "start": 8522
        },
        {
          "length": 20,
          "start": 8642
        },
        {
          "length": 20,
          "start": 8765
        },
        {
          "length": 20,
          "start": 8867
        },
        {
          "length": 20,
          "start": 9131
        },
        {
          "length": 20,
          "start": 9211
        },
        {
          "length": 20,
          "start": 9447
        },
        {
          "length": 20,
          "start": 9543
        },
        {
          "length": 20,
          "start": 9706
        },
        {
          "length": 20,
          "start": 10043
        },
        {
          "length": 20,
          "start": 10788
        },
        {
          "length": 20,
          "start": 10854
        },
        {
          "length": 20,
          "start": 11209
        },
        {
          "length": 20,
          "start": 11596
        },
        {
          "length": 20,
          "start": 11931
        },
        {
          "length": 20,
          "start": 12127
        },
        {
          "length": 20,
          "start": 12344
        },
        {
          "length": 20,
          "start": 12682
        },
        {
          "length": 20,
          "start": 12758
        },
        {
          "length": 20,
          "start": 12963
        },
        {
          "length": 20,
          "start": 13196
        },
        {
          "length": 20,
          "start": 13461
        },
        {
          "length": 20,
          "start": 13499
        },
        {
          "length": 20,
          "start": 13580
        },
        {
          "length": 20,
          "start": 13652
        },
        {
          "length": 20,
          "start": 13829
        },
        {
          "length": 20,
          "start": 13965
        },
        {
          "length": 20,
          "start": 14068
        },
        {
          "length": 20,
          "start": 14407
        },
        {
          "length": 20,
          "start": 14501
        },
        {
          "length": 20,
          "start": 14539
        }
      ]
    },
    "contracts/x-2-earn-apps/libraries/VoteEligibilityUtils.sol": {
      "VoteEligibilityUtils": [
        {
          "length": 20,
          "start": 13690
        },
        {
          "length": 20,
          "start": 14740
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/x-2-earn-apps/libraries/AdministrationUtils.sol": {
      "AdministrationUtils": [
        {
          "length": 20,
          "start": 5038
        },
        {
          "length": 20,
          "start": 5379
        },
        {
          "length": 20,
          "start": 7029
        },
        {
          "length": 20,
          "start": 11542
        },
        {
          "length": 20,
          "start": 12185
        },
        {
          "length": 20,
          "start": 12335
        },
        {
          "length": 20,
          "start": 12741
        },
        {
          "length": 20,
          "start": 14622
        },
        {
          "length": 20,
          "start": 14692
        },
        {
          "length": 20,
          "start": 14872
        },
        {
          "length": 20,
          "start": 15052
        },
        {
          "length": 20,
          "start": 15137
        },
        {
          "length": 20,
          "start": 15317
        },
        {
          "length": 20,
          "start": 15518
        },
        {
          "length": 20,
          "start": 15701
        }
      ]
    },
    "contracts/x-2-earn-apps/libraries/AppStorageUtils.sol": {
      "AppStorageUtils": [
        {
          "length": 20,
          "start": 4258
        },
        {
          "length": 20,
          "start": 4535
        },
        {
          "length": 20,
          "start": 5407
        },
        {
          "length": 20,
          "start": 6395
        },
        {
          "length": 20,
          "start": 7057
        },
        {
          "length": 20,
          "start": 7685
        },
        {
          "length": 20,
          "start": 9565
        },
        {
          "length": 20,
          "start": 10752
        },
        {
          "length": 20,
          "start": 11213
        },
        {
          "length": 20,
          "start": 11570
        },
        {
          "length": 20,
          "start": 12213
        },
        {
          "length": 20,
          "start": 12363
        },
        {
          "length": 20,
          "start": 14354
        },
        {
          "length": 20,
          "start": 14900
        },
        {
          "length": 20,
          "start": 15080
        },
        {
          "length": 20,
          "start": 15165
        },
        {
          "length": 20,
          "start": 15345
        },
        {
          "length": 20,
          "start": 15546
        }
      ]
    },
    "contracts/x-2-earn-apps/libraries/EndorsementUtils.sol": {
      "EndorsementUtils": [
        {
          "length": 20,
          "start": 4129
        },
        {
          "length": 20,
          "start": 4377
        },
        {
          "length": 20,
          "start": 4729
        },
        {
          "length": 20,
          "start": 4952
        },
        {
          "length": 20,
          "start": 5230
        },
        {
          "length": 20,
          "start": 5720
        },
        {
          "length": 20,
          "start": 5756
        },
        {
          "length": 20,
          "start": 5928
        },
        {
          "length": 20,
          "start": 6057
        },
        {
          "length": 20,
          "start": 6562
        },
        {
          "length": 20,
          "start": 6849
        },
        {
          "length": 20,
          "start": 7356
        },
        {
          "length": 20,
          "start": 7468
        },
        {
          "length": 20,
          "start": 7905
        },
        {
          "length": 20,
          "start": 8262
        },
        {
          "length": 20,
          "start": 8382
        },
        {
          "length": 20,
          "start": 8505
        },
        {
          "length": 20,
          "start": 8607
        },
        {
          "length": 20,
          "start": 8871
        },
        {
          "length": 20,
          "start": 8951
        },
        {
          "length": 20,
          "start": 9187
        },
        {
          "length": 20,
          "start": 9283
        },
        {
          "length": 20,
          "start": 9446
        },
        {
          "length": 20,
          "start": 9783
        },
        {
          "length": 20,
          "start": 10528
        },
        {
          "length": 20,
          "start": 10594
        },
        {
          "length": 20,
          "start": 10949
        },
        {
          "length": 20,
          "start": 11336
        },
        {
          "length": 20,
          "start": 11671
        },
        {
          "length": 20,
          "start": 11867
        },
        {
          "length": 20,
          "start": 12084
        },
        {
          "length": 20,
          "start": 12422
        },
        {
          "length": 20,
          "start": 12498
        },
        {
          "length": 20,
          "start": 12703
        },
        {
          "length": 20,
          "start": 12936
        },
        {
          "length": 20,
          "start": 13201
        },
        {
          "length": 20,
          "start": 13239
        },
        {
          "length": 20,
          "start": 13320
        },
        {
          "length": 20,
          "start": 13392
        },
        {
          "length": 20,
          "start": 13569
        },
        {
          "length": 20,
          "start": 13705
        },
        {
          "length": 20,
          "start": 13808
        },
        {
          "length": 20,
          "start": 14147
        },
        {
          "length": 20,
          "start": 14241
        },
        {
          "length": 20,
          "start": 14279
        }
      ]
    },
    "contracts/x-2-earn-apps/libraries/VoteEligibilityUtils.sol": {
      "VoteEligibilityUtils": [
        {
          "length": 20,
          "start": 13430
        },
        {
          "length": 20,
          "start": 14480
        }
      ]
    }
  }
}
