{
  "_format": "hh-sol-artifact-1",
  "contractName": "B3TRChallenges",
  "sourceName": "contracts/B3TRChallenges.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": "challengeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "AlreadyClaimed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "invitee",
          "type": "address"
        }
      ],
      "name": "AlreadyInvited",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "participant",
          "type": "address"
        }
      ],
      "name": "AlreadyParticipating",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "AlreadyRefunded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "provided",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minimum",
          "type": "uint256"
        }
      ],
      "name": "BetAmountBelowMinimum",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "ChallengeAlreadyCompleted",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "ChallengeDoesNotExist",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "endRound",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "currentRound",
          "type": "uint256"
        }
      ],
      "name": "ChallengeEnded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "internalType": "enum ChallengeTypes.ChallengeStatus",
          "name": "status",
          "type": "uint8"
        }
      ],
      "name": "ChallengeInvalidStatus",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "endRound",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "currentRound",
          "type": "uint256"
        }
      ],
      "name": "ChallengeNotEnded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "ChallengeNotPending",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "ChallengeUnknownApp",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "ChallengesUnauthorizedUser",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "CreatorCannotJoin",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "CreatorCannotLeave",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "provided",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maximum",
          "type": "uint256"
        }
      ],
      "name": "DescriptionTooLong",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "DuplicateApp",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "ERC1967InvalidImplementation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1967NonPayable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedInnerCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "provided",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maximum",
          "type": "uint256"
        }
      ],
      "name": "ImageURITooLong",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "stakeAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "numWinners",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minPrizePerWinner",
          "type": "uint256"
        }
      ],
      "name": "InsufficientPrizePerWinner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "available",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "requested",
          "type": "uint256"
        }
      ],
      "name": "InsufficientWithdrawableFunds",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidAmount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidChallengeTypeForCombo",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "startRound",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "endRound",
          "type": "uint256"
        }
      ],
      "name": "InvalidEndRound",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "startRound",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "currentRound",
          "type": "uint256"
        }
      ],
      "name": "InvalidStartRound",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidTypeConfiguration",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "provided",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maximum",
          "type": "uint256"
        }
      ],
      "name": "MaxChallengeDurationExceeded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "provided",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maximum",
          "type": "uint256"
        }
      ],
      "name": "MaxParticipantsExceeded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "provided",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maximum",
          "type": "uint256"
        }
      ],
      "name": "MaxSelectedAppsExceeded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "provided",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maximum",
          "type": "uint256"
        }
      ],
      "name": "MetadataURITooLong",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "NotASplitWinChallenge",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "actions",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "threshold",
          "type": "uint256"
        }
      ],
      "name": "NotEligibleForSplitWin",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "participant",
          "type": "address"
        }
      ],
      "name": "NotInvited",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "participant",
          "type": "address"
        }
      ],
      "name": "NotParticipating",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "name": "NotVerifiedPerson",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NothingToClaim",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NothingToRefund",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ReentrancyGuardReentrantCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "SplitWinCannotComplete",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "SplitWinSlotsExhausted",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "provided",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maximum",
          "type": "uint256"
        }
      ],
      "name": "ThresholdTooHigh",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "provided",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maximum",
          "type": "uint256"
        }
      ],
      "name": "TitleTooLong",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TransferFailed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UUPSUnauthorizedCallContext",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "slot",
          "type": "bytes32"
        }
      ],
      "name": "UUPSUnsupportedProxiableUUID",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroAddress",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "admin",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "AdminWithdrawal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "B3TRAddressUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "ChallengeActivated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "ChallengeCancelled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "enum ChallengeTypes.SettlementMode",
          "name": "settlementMode",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bestScore",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bestCount",
          "type": "uint256"
        }
      ],
      "name": "ChallengeCompleted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "creator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "endRound",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "enum ChallengeTypes.ChallengeKind",
          "name": "kind",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "enum ChallengeTypes.ChallengeVisibility",
          "name": "visibility",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "enum ChallengeTypes.ChallengeType",
          "name": "challengeType",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "stakeAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "startRound",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "threshold",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "allApps",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bytes32[]",
          "name": "selectedApps",
          "type": "bytes32[]"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "title",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "description",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "imageURI",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "metadataURI",
          "type": "string"
        }
      ],
      "name": "ChallengeCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "participant",
          "type": "address"
        }
      ],
      "name": "ChallengeDeclined",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "ChallengeInvalidated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "invitee",
          "type": "address"
        }
      ],
      "name": "ChallengeInviteAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "participant",
          "type": "address"
        }
      ],
      "name": "ChallengeJoined",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "participant",
          "type": "address"
        }
      ],
      "name": "ChallengeLeft",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "ChallengePayoutClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "ChallengeRefundClaimed",
      "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": "oldValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "MaxChallengeDurationUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "MaxParticipantsUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "MaxSelectedAppsUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "MinBetAmountUpdated",
      "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": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "numWinners",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "prizePerWinner",
          "type": "uint256"
        }
      ],
      "name": "SplitWinConfigured",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "creator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "SplitWinCreatorRefunded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "winner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "prize",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "actions",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "winnersClaimed",
          "type": "uint256"
        }
      ],
      "name": "SplitWinPrizeClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "VeBetterPassportAddressUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "X2EarnAppsAddressUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "XAllocationVotingAddressUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "CONTRACTS_ADDRESS_MANAGER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SETTINGS_MANAGER_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": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "invitees",
          "type": "address[]"
        }
      ],
      "name": "addInvites",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "cancelChallenge",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "challengeCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "claimChallengePayout",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "claimChallengeRefund",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "claimCreatorSplitWinRefund",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "claimSplitWinPrize",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "completeChallenge",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum ChallengeTypes.ChallengeKind",
              "name": "kind",
              "type": "uint8"
            },
            {
              "internalType": "enum ChallengeTypes.ChallengeVisibility",
              "name": "visibility",
              "type": "uint8"
            },
            {
              "internalType": "enum ChallengeTypes.ChallengeType",
              "name": "challengeType",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "stakeAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "startRound",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "endRound",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "threshold",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "numWinners",
              "type": "uint256"
            },
            {
              "internalType": "bytes32[]",
              "name": "appIds",
              "type": "bytes32[]"
            },
            {
              "internalType": "address[]",
              "name": "invitees",
              "type": "address[]"
            },
            {
              "internalType": "string",
              "name": "title",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "description",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "imageURI",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "metadataURI",
              "type": "string"
            }
          ],
          "internalType": "struct ChallengeTypes.CreateChallengeParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "createChallenge",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "declineChallenge",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "getChallenge",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "challengeId",
              "type": "uint256"
            },
            {
              "internalType": "enum ChallengeTypes.ChallengeKind",
              "name": "kind",
              "type": "uint8"
            },
            {
              "internalType": "enum ChallengeTypes.ChallengeVisibility",
              "name": "visibility",
              "type": "uint8"
            },
            {
              "internalType": "enum ChallengeTypes.ChallengeType",
              "name": "challengeType",
              "type": "uint8"
            },
            {
              "internalType": "enum ChallengeTypes.ChallengeStatus",
              "name": "status",
              "type": "uint8"
            },
            {
              "internalType": "enum ChallengeTypes.SettlementMode",
              "name": "settlementMode",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "creator",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "stakeAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "startRound",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "endRound",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "duration",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "threshold",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "numWinners",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "winnersClaimed",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "prizePerWinner",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "allApps",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "totalPrize",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "participantCount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "invitedCount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "declinedCount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "selectedAppsCount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "winnersCount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bestScore",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bestCount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "payoutsClaimed",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "title",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "description",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "imageURI",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "metadataURI",
              "type": "string"
            }
          ],
          "internalType": "struct ChallengeTypes.ChallengeView",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "getChallengeDeclined",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "getChallengeInvited",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "getChallengeParticipants",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "getChallengeSelectedApps",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "getChallengeStatus",
      "outputs": [
        {
          "internalType": "enum ChallengeTypes.ChallengeStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "getChallengeWinners",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "participant",
          "type": "address"
        }
      ],
      "name": "getParticipantActions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "getParticipantStatus",
      "outputs": [
        {
          "internalType": "enum ChallengeTypes.ParticipantStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "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": "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": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "b3trAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "veBetterPassportAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "xAllocationVotingAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "x2EarnAppsAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "maxChallengeDuration",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxSelectedApps",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxParticipants",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minBetAmount",
              "type": "uint256"
            }
          ],
          "internalType": "struct ChallengeTypes.InitializationData",
          "name": "data",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "admin",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "upgrader",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "contractsAddressManager",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settingsManager",
              "type": "address"
            }
          ],
          "internalType": "struct ChallengeTypes.InitializationRoleData",
          "name": "roles",
          "type": "tuple"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isInvitationEligible",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isSplitWinWinner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "joinChallenge",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "leaveChallenge",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxChallengeDuration",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxParticipants",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxSelectedApps",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "minBetAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "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": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "setB3TRAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "setMaxChallengeDuration",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "setMaxParticipants",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "setMaxSelectedApps",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "setMinBetAmount",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "setVeBetterPassportAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "setX2EarnAppsAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "setXAllocationVotingAddress",
      "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": "uint256",
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "syncChallenge",
      "outputs": [
        {
          "internalType": "enum ChallengeTypes.ChallengeStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "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"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516137436200010460003960008181612795015281816127be015261290601526137436000f3fe60806040526004361061024e5760003560e01c806212462a1461025357806301ffc9a714610275578063023bf958146102aa578063039ddca9146102d757806314cf9077146102f75780631bdd4b741461032557806321c688fa14610352578063248a9ca31461037257806324924bf714610392578063262ad80b146103a75780632b5adc1e146103c75780632bf7299b146103f45780632f2ff15d1461041457806336568abe146104345780633800ff4d146104545780633bb18a76146104745780633cc376bb1461049457806347b0b33e146104b45780634a6ff70b146104d45780634caf6d5f146104f45780634f1ef2861461051457806352d1902d1461052757806354fd4d501461053c5780635de5720f1461056f57806367fc8c891461058f5780636c188593146105af57806381363aeb146105cf578063832c8bc6146105fc57806387d301641461062957806387d6e2131461064957806391d1485414610669578063952f213314610689578063a0427700146106ab578063a217fddf146106cb578063a2f05725146106e0578063a41483e3146106f5578063a7817bbc14610715578063a934718c14610735578063ad3cb1cc14610755578063b30f058414610786578063b58bd356146107a6578063c048f6c9146107c6578063cb3e0d2b146107e6578063cf33e76c14610806578063d2177bdd14610826578063d547741f1461083b578063e448ee261461085b578063f3fef3a31461087b578063f72c0d8b1461089b578063f7806522146108bd578063fa7626d0146108d2578063fa968eea146108f4575b600080fd5b34801561025f57600080fd5b5061027361026e366004612c24565b610909565b005b34801561028157600080fd5b50610295610290366004612c3d565b61097e565b60405190151581526020015b60405180910390f35b3480156102b657600080fd5b506102ca6102c5366004612c24565b6109b5565b6040516102a19190612c67565b3480156102e357600080fd5b506102ca6102f2366004612c24565b610a41565b34801561030357600080fd5b50610317610312366004612ccb565b610acb565b6040519081526020016102a1565b34801561033157600080fd5b50610345610340366004612c24565b610b58565b6040516102a19190612d9a565b34801561035e57600080fd5b5061027361036d366004612c24565b6110fb565b34801561037e57600080fd5b5061031761038d366004612c24565b6111c6565b34801561039e57600080fd5b506103176111e6565b3480156103b357600080fd5b506102736103c2366004612f94565b6111f9565b3480156103d357600080fd5b506103e76103e2366004612c24565b611279565b6040516102a19190613012565b34801561040057600080fd5b5061027361040f366004612c24565b6112fa565b34801561042057600080fd5b5061027361042f366004612ccb565b6113a9565b34801561044057600080fd5b5061027361044f366004612ccb565b6113cb565b34801561046057600080fd5b5061027361046f36600461304a565b6113fe565b34801561048057600080fd5b5061027361048f36600461304a565b611466565b3480156104a057600080fd5b506102736104af366004613065565b6114c5565b3480156104c057600080fd5b506102736104cf36600461304a565b611888565b3480156104e057600080fd5b506102956104ef366004612ccb565b6118e7565b34801561050057600080fd5b5061031761050f3660046130ab565b61192f565b6102736105223660046130fc565b6119c0565b34801561053357600080fd5b506103176119df565b34801561054857600080fd5b506040805180820190915260018152601960f91b60208201525b6040516102a191906131bd565b34801561057b57600080fd5b506102ca61058a366004612c24565b6119fc565b34801561059b57600080fd5b506102736105aa366004612c24565b611a86565b3480156105bb57600080fd5b506102736105ca366004612c24565b611ac6565b3480156105db57600080fd5b506105ef6105ea366004612ccb565b611b25565b6040516102a191906131d0565b34801561060857600080fd5b5061061c610617366004612c24565b611b6d565b6040516102a191906131e3565b34801561063557600080fd5b50610295610644366004612ccb565b611bf8565b34801561065557600080fd5b50610317610664366004612c24565b611c40565b34801561067557600080fd5b50610295610684366004612ccb565b611c82565b34801561069557600080fd5b506103176000805160206136ce83398151915281565b3480156106b757600080fd5b506103176106c6366004612c24565b611cb8565b3480156106d757600080fd5b50610317600081565b3480156106ec57600080fd5b50610317611cf9565b34801561070157600080fd5b50610273610710366004612c24565b611d0c565b34801561072157600080fd5b50610273610730366004612c24565b611d4c565b34801561074157600080fd5b50610273610750366004612c24565b611d8c565b34801561076157600080fd5b50610562604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561079257600080fd5b5061061c6107a1366004612c24565b611e3b565b3480156107b257600080fd5b506103176107c1366004612c24565b611ecd565b3480156107d257600080fd5b506102736107e136600461304a565b611f0f565b3480156107f257600080fd5b50610317610801366004612c24565b611f6e565b34801561081257600080fd5b506102ca610821366004612c24565b611fb0565b34801561083257600080fd5b5061031761203a565b34801561084757600080fd5b50610273610856366004612ccb565b61204d565b34801561086757600080fd5b50610273610876366004612c24565b612069565b34801561088757600080fd5b506102736108963660046131f1565b6120a9565b3480156108a757600080fd5b5061031760008051602061362e83398151915281565b3480156108c957600080fd5b506103176122bd565b3480156108de57600080fd5b5061031760008051602061366e83398151915281565b34801561090057600080fd5b506103176122d0565b6109116122e3565b6040516209231560e11b81526004810182905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__906212462a906024015b60006040518083038186803b15801561095b57600080fd5b505af415801561096f573d6000803e3d6000fd5b5050505061097b612319565b50565b60006001600160e01b03198216637965db0b60e01b14806109af57506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060006109c161232a565b90506109d183826006015461234e565b6000838152600882016020908152604091829020600b0180548351818402810184019094528084529091830182828015610a3457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a16575b5050505050915050919050565b60606000610a4d61232a565b9050610a5d83826006015461234e565b6000838152600882016020908152604091829020600e0180548351818402810184019094528084529091830182828015610a34576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a16575050505050915050919050565b6040516314cf907760e01b8152600481018390526001600160a01b038216602482015260009073__$74730aeb69cabb170809b4d7c58740053a$__906314cf907790604401602060405180830381865af4158015610b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b51919061321b565b9392505050565b610c3f604080516103a081019091526000808252602082019081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b6000610c4961232a565b9050610c5983826006015461234e565b6000838152600882016020526040812060028101546003820154919291610c80919061324a565b610c8b90600161325d565b604080516103a08101909152868152835491925090602082019060ff166001811115610cb957610cb9612cf7565b81528354602090910190610100900460ff166001811115610cdc57610cdc612cf7565b8152835460209091019062010000900460ff166001811115610d0057610d00612cf7565b815260200173__$e5c34f23aa37ff925bd96f5e6125be3c79$__639ed14864886040518263ffffffff1660e01b8152600401610d3e91815260200190565b602060405180830381865af4158015610d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7f9190613270565b60ff166004811115610d9357610d93612cf7565b6004811115610da457610da4612cf7565b81528354602090910190600160201b900460ff166003811115610dc957610dc9612cf7565b81528354600160301b81046001600160a01b0316602083015260018501546040830152600285015460608301526003850154608083015260a08201849052600485015460c0830152600585015460e0830152600e85015461010083018190526006860154610120840152600160281b90910460ff1615156101408301526007850154610160830152600b850154610180830152600c8501546101a0830152600d8501546101c0830152600f8501546101e083015261020082015260088401546102208201526009840154610240820152600a84015461026082015260108401805461028090920191610eba90613293565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee690613293565b8015610f335780601f10610f0857610100808354040283529160200191610f33565b820191906000526020600020905b815481529060010190602001808311610f1657829003601f168201915b50505050508152602001836011018054610f4c90613293565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7890613293565b8015610fc55780601f10610f9a57610100808354040283529160200191610fc5565b820191906000526020600020905b815481529060010190602001808311610fa857829003601f168201915b50505050508152602001836012018054610fde90613293565b80601f016020809104026020016040519081016040528092919081815260200182805461100a90613293565b80156110575780601f1061102c57610100808354040283529160200191611057565b820191906000526020600020905b81548152906001019060200180831161103a57829003601f168201915b5050505050815260200183601301805461107090613293565b80601f016020809104026020016040519081016040528092919081815260200182805461109c90613293565b80156110e95780601f106110be576101008083540402835291602001916110e9565b820191906000526020600020905b8154815290600101906020018083116110cc57829003601f168201915b50505050508152509350505050919050565b6111036122e3565b60008051602061366e83398151915261111c8133611c82565b158015611131575061112f600033611c82565b155b1561115a57336040516309edd0f760e11b815260040161115191906132cd565b60405180910390fd5b8160000361117b5760405163162908e360e11b815260040160405180910390fd5b600061118561232a565b60058101805490859055604051919250906000805160206136ae833981519152906111b390839087906132e1565b60405180910390a150505061097b612319565b6000806111d161237b565b60009384526020525050604090206001015490565b60006111f061232a565b60070154905090565b6112016122e3565b60405163262ad80b60e01b815273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063262ad80b9061123c90869086908690600401613336565b60006040518083038186803b15801561125457600080fd5b505af4158015611268573d6000803e3d6000fd5b50505050611274612319565b505050565b6060600061128561232a565b905061129583826006015461234e565b6000838152600882016020908152604091829020600f0180548351818402810184019094528084529091830182828015610a3457602002820191906000526020600020905b8154815260200190600101908083116112da575050505050915050919050565b6113026122e3565b60008051602061366e83398151915261131b8133611c82565b158015611330575061132e600033611c82565b155b1561135057336040516309edd0f760e11b815260040161115191906132cd565b816000036113715760405163162908e360e11b815260040160405180910390fd5b600061137b61232a565b60078101805490859055604051919250906000805160206136ee833981519152906111b390839087906132e1565b6113b2826111c6565b6113bb8161239f565b6113c583836123a9565b50505050565b6001600160a01b03811633146113f45760405163334bd91960e11b815260040160405180910390fd5b611274828261244a565b6114066122e3565b6000805160206136ce83398151915261141f8133611c82565b1580156114345750611432600033611c82565b155b1561145457336040516309edd0f760e11b815260040161115191906132cd565b61145d826124c2565b5061097b612319565b61146e6122e3565b6000805160206136ce8339815191526114878133611c82565b15801561149c575061149a600033611c82565b155b156114bc57336040516309edd0f760e11b815260040161115191906132cd565b61145d82612549565b60006114cf6125d0565b805490915060ff600160401b82041615906001600160401b03166000811580156114f65750825b90506000826001600160401b031660011480156115125750303b155b905081158015611520575080155b1561153e5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561156757845460ff60401b1916600160401b1785555b6000611576602088018861304a565b6001600160a01b031614806115a357506000611598604088016020890161304a565b6001600160a01b0316145b806115c6575060006115bb606088016040890161304a565b6001600160a01b0316145b806115e9575060006115de608088016060890161304a565b6001600160a01b0316145b80611609575060006115fe602089018961304a565b6001600160a01b0316145b8061162c575060006116216040890160208a0161304a565b6001600160a01b0316145b8061164f575060006116446060890160408a0161304a565b6001600160a01b0316145b80611672575060006116676080890160608a0161304a565b6001600160a01b0316145b156116905760405163d92e233d60e01b815260040160405180910390fd5b608087013515806116a3575060a0870135155b806116b0575060c0870135155b806116bd575060e0870135155b156116db5760405163162908e360e11b815260040160405180910390fd5b6116e36125f4565b6116eb6125fe565b6116f36125f4565b60006116fd61232a565b6080890135600482015560a0890135600582015560c08901356007820155905061172a60e089013561260e565b60008051602061368e8339815191526000896080013560405161174e9291906132e1565b60405180910390a16000805160206136ae83398151915260008960a0013560405161177a9291906132e1565b60405180910390a16000805160206136ee83398151915260008960c001356040516117a69291906132e1565b60405180910390a16117f36117be60208a018a61304a565b6117ce60408b0160208c0161304a565b6117de60608c0160408d0161304a565b6117ee60808d0160608e0161304a565b612686565b611838611803602089018961304a565b61181360408a0160208b0161304a565b61182360608b0160408c0161304a565b61183360808c0160608d0161304a565b6126aa565b50831561187f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6118906122e3565b6000805160206136ce8339815191526118a98133611c82565b1580156118be57506118bc600033611c82565b155b156118de57336040516309edd0f760e11b815260040161115191906132cd565b61145d82612707565b6000806118f261232a565b905061190284826006015461234e565b6000938452600a01602090815260408085206001600160a01b039490941685529290525090205460ff1690565b60006119396122e3565b604051633839969560e21b815273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063e0e65a549061197090859060040161344e565b602060405180830381865af415801561198d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b1919061321b565b90506119bb612319565b919050565b6119c861278a565b6119d18261282f565b6119db8282612847565b5050565b60006119e96128fb565b5060008051602061364e83398151915290565b60606000611a0861232a565b9050611a1883826006015461234e565b6000838152600882016020908152604091829020600c0180548351818402810184019094528084529091830182828015610a34576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a16575050505050915050919050565b611a8e6122e3565b6040516367fc8c8960e01b81526004810182905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__906367fc8c8990602401610943565b611ace6122e3565b60008051602061366e833981519152611ae78133611c82565b158015611afc5750611afa600033611c82565b155b15611b1c57336040516309edd0f760e11b815260040161115191906132cd565b61145d8261260e565b600080611b3061232a565b9050611b4084826006015461234e565b6000938452600901602090815260408085206001600160a01b039490941685529290525090205460ff1690565b6040516327b4521960e21b81526004810182905260009073__$e5c34f23aa37ff925bd96f5e6125be3c79$__90639ed1486490602401602060405180830381865af4158015611bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be49190613270565b60ff1660048111156109af576109af612cf7565b600080611c0361232a565b9050611c1384826006015461234e565b6000938452601101602090815260408085206001600160a01b039490941685529290525090205460ff1690565b6000611c4a6122e3565b6040516387d6e21360e01b81526004810183905273__$74730aeb69cabb170809b4d7c58740053a$__906387d6e21390602401611970565b600080611c8d61237b565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000611cc26122e3565b60405162a0427760e81b81526004810183905273__$74730aeb69cabb170809b4d7c58740053a$__9063a042770090602401611970565b6000611d0361232a565b60060154905090565b611d146122e3565b60405163a41483e360e01b81526004810182905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063a41483e390602401610943565b611d546122e3565b6040516329e05eef60e21b81526004810182905273__$74730aeb69cabb170809b4d7c58740053a$__9063a7817bbc90602401610943565b611d946122e3565b60008051602061366e833981519152611dad8133611c82565b158015611dc25750611dc0600033611c82565b155b15611de257336040516309edd0f760e11b815260040161115191906132cd565b81600003611e035760405163162908e360e11b815260040160405180910390fd5b6000611e0d61232a565b600481018054908590556040519192509060008051602061368e833981519152906111b390839087906132e1565b6000611e456122e3565b604051632cc3c16160e21b81526004810183905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063b30f058490602401602060405180830381865af4158015611e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb99190613270565b60ff1660048111156119b1576119b1612cf7565b6000611ed76122e3565b604051635ac5e9ab60e11b81526004810183905273__$74730aeb69cabb170809b4d7c58740053a$__9063b58bd35690602401611970565b611f176122e3565b6000805160206136ce833981519152611f308133611c82565b158015611f455750611f43600033611c82565b155b15611f6557336040516309edd0f760e11b815260040161115191906132cd565b61145d82612944565b6000611f786122e3565b60405163cb3e0d2b60e01b81526004810183905273__$74730aeb69cabb170809b4d7c58740053a$__9063cb3e0d2b90602401611970565b60606000611fbc61232a565b9050611fcc83826006015461234e565b6000838152600882016020908152604091829020600d0180548351818402810184019094528084529091830182828015610a34576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a16575050505050915050919050565b600061204461232a565b60040154905090565b612056826111c6565b61205f8161239f565b6113c5838361244a565b6120716122e3565b604051637224771360e11b81526004810182905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063e448ee2690602401610943565b6120b16122e3565b60006120bd8133611c82565b1580156120d257506120d0600033611c82565b155b156120f257336040516309edd0f760e11b815260040161115191906132cd565b6001600160a01b0383166121195760405163d92e233d60e01b815260040160405180910390fd5b8160000361213a5760405163162908e360e11b815260040160405180910390fd5b600061214461232a565b80546040516370a0823160e01b81529192506000916001600160a01b03909116906370a08231906121799030906004016132cd565b602060405180830381865afa158015612196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ba919061321b565b9050808411156121e15780846040516304720f4b60e21b81526004016111519291906132e1565b815460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061221290889088906004016135d6565b6020604051808303816000875af1158015612231573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225591906135ef565b612272576040516312171d8360e31b815260040160405180910390fd5b6040518481526001600160a01b0386169033907f8b192dc173e314b16d9067e45c2afbdcdc1713fc4fe1a95aff9076249648abc09060200160405180910390a35050506119db612319565b60006122c761232a565b60050154905090565b60006122da61232a565b60100154905090565b60006122ed6129cb565b80549091506001190161231357604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60006123236129cb565b6001905550565b7f4602c7a79eac2c186a5049fa18aa513e24b689a1ed3277f24b1e5b426612d10090565b81158061235a57508082115b156119db57604051635bafafd160e01b815260048101839052602401611151565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b61097b81336129ef565b6000806123b461237b565b90506123c08484611c82565b612440576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556123f63390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109af565b60009150506109af565b60008061245561237b565b90506124618484611c82565b15612440576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109af565b6001600160a01b0381166124e95760405163d92e233d60e01b815260040160405180910390fd5b60006124f361232a565b6001810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907fd260589e8955f4324723f68c9c004afe08c82d5790f93946bbf95f6ebcab534790600090a3505050565b6001600160a01b0381166125705760405163d92e233d60e01b815260040160405180910390fd5b600061257a61232a565b6002810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f897acaec25783ce4cf8ff29c16715e089a40d285e2e5d6fcf567af00f471425990600090a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6125fc612a1a565b565b612606612a1a565b6125fc612a3f565b8060000361262f5760405163162908e360e11b815260040160405180910390fd5b600061263961232a565b60108101805490849055604051919250907f82480e97991520549ac4b5d0e1d97edb3bfac2666202923b6903d2a953dc76089061267990839086906132e1565b60405180910390a1505050565b61268f84612707565b612698836124c2565b6126a182612549565b6113c581612944565b6126b56000856123a9565b506126ce60008051602061362e833981519152846123a9565b506126e76000805160206136ce833981519152836123a9565b5061270060008051602061366e833981519152826123a9565b5050505050565b6001600160a01b03811661272e5760405163d92e233d60e01b815260040160405180910390fd5b600061273861232a565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907fb3061a8192d243178b0fd92d1809bc86c3fa3b177c046cf74974c45c32cd25e090600090a3505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061281157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661280560008051602061364e833981519152546001600160a01b031690565b6001600160a01b031614155b156125fc5760405163703e46dd60e11b815260040160405180910390fd5b60008051602061362e8339815191526119db8161239f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156128a1575060408051601f3d908101601f1916820190925261289e9181019061321b565b60015b6128c05781604051634c9c8ce360e01b815260040161115191906132cd565b60008051602061364e83398151915281146128f157604051632a87526960e21b815260048101829052602401611151565b6112748383612a47565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146125fc5760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b03811661296b5760405163d92e233d60e01b815260040160405180910390fd5b600061297561232a565b6003810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f02a190d74141c632badc9d2cbb0eb33818f3b5f949c4e8ad29d80aa63a5537ac90600090a3505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b6129f98282611c82565b6119db57808260405163e2517d3f60e01b81526004016111519291906135d6565b612a22612a9d565b6125fc57604051631afcd79f60e31b815260040160405180910390fd5b612319612a1a565b612a5082612ab7565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612a95576112748282612b13565b6119db612b89565b6000612aa76125d0565b54600160401b900460ff16919050565b806001600160a01b03163b600003612ae45780604051634c9c8ce360e01b815260040161115191906132cd565b60008051602061364e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612b309190613611565b600060405180830381855af49150503d8060008114612b6b576040519150601f19603f3d011682016040523d82523d6000602084013e612b70565b606091505b5091509150612b80858383612ba8565b95945050505050565b34156125fc5760405163b398979f60e01b815260040160405180910390fd5b606082612bbd57612bb882612bfb565b610b51565b8151158015612bd457506001600160a01b0384163b155b15612bf45783604051639996b31560e01b815260040161115191906132cd565b5092915050565b805115612c0b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b600060208284031215612c3657600080fd5b5035919050565b600060208284031215612c4f57600080fd5b81356001600160e01b031981168114610b5157600080fd5b6020808252825182820181905260009190848201906040850190845b81811015612ca85783516001600160a01b031683529284019291840191600101612c83565b50909695505050505050565b80356001600160a01b03811681146119bb57600080fd5b60008060408385031215612cde57600080fd5b82359150612cee60208401612cb4565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b60028110612d1d57612d1d612cf7565b9052565b60058110612d1d57612d1d612cf7565b6004811061097b5761097b612cf7565b612d1d81612d31565b60005b83811015612d65578181015183820152602001612d4d565b50506000910152565b60008151808452612d86816020860160208601612d4a565b601f01601f19169290920160200192915050565b602081528151602082015260006020830151612db96040840182612d0d565b506040830151612dcc6060840182612d0d565b506060830151612ddf6080840182612d0d565b506080830151612df260a0840182612d21565b5060a0830151612e0560c0840182612d41565b5060c08301516001600160a01b03811660e08401525060e083015161010083810191909152830151610120808401919091528301516101408084019190915283015161016080840191909152830151610180808401919091528301516101a0808401919091528301516101c0808401919091528301516101e080840191909152830151610200612e988185018315159052565b840151610220848101919091528401516102408085019190915284015161026080850191909152840151610280808501919091528401516102a0808501919091528401516102c0808501919091528401516102e08085019190915284015161030080850191909152840151610320808501919091528401516103a061034080860182905291925090612f2e6103c0860184612d6e565b9250808601519050601f19610360818786030181880152612f4f8584612d6e565b945080880151925050610380818786030181880152612f6e8584612d6e565b908801518782039092018488015293509050612f8a8382612d6e565b9695505050505050565b600080600060408486031215612fa957600080fd5b8335925060208401356001600160401b0380821115612fc757600080fd5b818601915086601f830112612fdb57600080fd5b813581811115612fea57600080fd5b8760208260051b8501011115612fff57600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015612ca85783518352928401929184019160010161302e565b60006020828403121561305c57600080fd5b610b5182612cb4565b60008082840361018081121561307a57600080fd5b6101008082121561308a57600080fd5b849350608060ff198301121561309f57600080fd5b92959390920193505050565b6000602082840312156130bd57600080fd5b81356001600160401b038111156130d357600080fd5b82016101c08185031215610b5157600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561310f57600080fd5b61311883612cb4565b915060208301356001600160401b038082111561313457600080fd5b818501915085601f83011261314857600080fd5b81358181111561315a5761315a6130e6565b604051601f8201601f19908116603f01168101908382118183101715613182576131826130e6565b8160405282815288602084870101111561319b57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b602081526000610b516020830184612d6e565b602081016131dd83612d31565b91905290565b602081016109af8284612d21565b6000806040838503121561320457600080fd5b61320d83612cb4565b946020939093013593505050565b60006020828403121561322d57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109af576109af613234565b808201808211156109af576109af613234565b60006020828403121561328257600080fd5b815160ff81168114610b5157600080fd5b600181811c908216806132a757607f821691505b6020821081036132c757634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0391909116815260200190565b918252602082015260400190565b8183526000602080850194508260005b8581101561332b576001600160a01b0361331883612cb4565b16875295820195908201906001016132ff565b509495945050505050565b838152604060208201526000612b806040830184866132ef565b8035600281106119bb57600080fd5b6000808335601e1984360301811261337657600080fd5b83016020810192503590506001600160401b0381111561339557600080fd5b8060051b36038213156133a757600080fd5b9250929050565b81835260006001600160fb1b038311156133c757600080fd5b8260051b80836020870137939093016020019392505050565b6000808335601e198436030181126133f757600080fd5b83016020810192503590506001600160401b0381111561341657600080fd5b8036038213156133a757600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526134676020820161346284613350565b612d0d565b600061347560208401613350565b6134826040840182612d0d565b5061348f60408401613350565b61349c6060840182612d0d565b5060608301356080830152608083013560a083015260a083013560c083015260c083013560e083015261010060e0840135818401526134dd8185018561335f565b91506101c061012081818701526134f96101e0870185856133ae565b93506135078188018861335f565b93509050601f196101408188870301818901526135258686856132ef565b9550613533818a018a6133e0565b955092505061016081888703018189015261354f868685613425565b955061355d818a018a6133e0565b9550925050610180818887030181890152613579868685613425565b9550613587818a018a6133e0565b95509250506101a08188870301818901526135a3868685613425565b95506135b1818a018a6133e0565b9550925050808786030183880152506135cb848483613425565b979650505050505050565b6001600160a01b03929092168252602082015260400190565b60006020828403121561360157600080fd5b81518015158114610b5157600080fd5b60008251613623818460208701612d4a565b919091019291505056fe189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcdfc0438b5754beb343462ff330f73266ff7457fdf879dfb68c958ccbe15765f3280335b2726d1c2b1770ba289d3de2cebd2f55c641e93c7e77d033cadab1b06b2294a958ea1cb2569bfbdbd8a8e8502b08b8a71ea5134d264f97f07ef7f8a8e856af926aa3845d4dc63a6c773ed36f51794728c97ebcd1bf845bcecb16eeb6b743f71dfd216eaaf2f75bdb23d66ae4f5b7e2975e422538b68ef11b46b3874098a264697066735822122046da9a205b8774131e7ff18a2341def0d961084cedcc65164dd5377eb7f125e964736f6c63430008140033",
  "deployedBytecode": "0x60806040526004361061024e5760003560e01c806212462a1461025357806301ffc9a714610275578063023bf958146102aa578063039ddca9146102d757806314cf9077146102f75780631bdd4b741461032557806321c688fa14610352578063248a9ca31461037257806324924bf714610392578063262ad80b146103a75780632b5adc1e146103c75780632bf7299b146103f45780632f2ff15d1461041457806336568abe146104345780633800ff4d146104545780633bb18a76146104745780633cc376bb1461049457806347b0b33e146104b45780634a6ff70b146104d45780634caf6d5f146104f45780634f1ef2861461051457806352d1902d1461052757806354fd4d501461053c5780635de5720f1461056f57806367fc8c891461058f5780636c188593146105af57806381363aeb146105cf578063832c8bc6146105fc57806387d301641461062957806387d6e2131461064957806391d1485414610669578063952f213314610689578063a0427700146106ab578063a217fddf146106cb578063a2f05725146106e0578063a41483e3146106f5578063a7817bbc14610715578063a934718c14610735578063ad3cb1cc14610755578063b30f058414610786578063b58bd356146107a6578063c048f6c9146107c6578063cb3e0d2b146107e6578063cf33e76c14610806578063d2177bdd14610826578063d547741f1461083b578063e448ee261461085b578063f3fef3a31461087b578063f72c0d8b1461089b578063f7806522146108bd578063fa7626d0146108d2578063fa968eea146108f4575b600080fd5b34801561025f57600080fd5b5061027361026e366004612c24565b610909565b005b34801561028157600080fd5b50610295610290366004612c3d565b61097e565b60405190151581526020015b60405180910390f35b3480156102b657600080fd5b506102ca6102c5366004612c24565b6109b5565b6040516102a19190612c67565b3480156102e357600080fd5b506102ca6102f2366004612c24565b610a41565b34801561030357600080fd5b50610317610312366004612ccb565b610acb565b6040519081526020016102a1565b34801561033157600080fd5b50610345610340366004612c24565b610b58565b6040516102a19190612d9a565b34801561035e57600080fd5b5061027361036d366004612c24565b6110fb565b34801561037e57600080fd5b5061031761038d366004612c24565b6111c6565b34801561039e57600080fd5b506103176111e6565b3480156103b357600080fd5b506102736103c2366004612f94565b6111f9565b3480156103d357600080fd5b506103e76103e2366004612c24565b611279565b6040516102a19190613012565b34801561040057600080fd5b5061027361040f366004612c24565b6112fa565b34801561042057600080fd5b5061027361042f366004612ccb565b6113a9565b34801561044057600080fd5b5061027361044f366004612ccb565b6113cb565b34801561046057600080fd5b5061027361046f36600461304a565b6113fe565b34801561048057600080fd5b5061027361048f36600461304a565b611466565b3480156104a057600080fd5b506102736104af366004613065565b6114c5565b3480156104c057600080fd5b506102736104cf36600461304a565b611888565b3480156104e057600080fd5b506102956104ef366004612ccb565b6118e7565b34801561050057600080fd5b5061031761050f3660046130ab565b61192f565b6102736105223660046130fc565b6119c0565b34801561053357600080fd5b506103176119df565b34801561054857600080fd5b506040805180820190915260018152601960f91b60208201525b6040516102a191906131bd565b34801561057b57600080fd5b506102ca61058a366004612c24565b6119fc565b34801561059b57600080fd5b506102736105aa366004612c24565b611a86565b3480156105bb57600080fd5b506102736105ca366004612c24565b611ac6565b3480156105db57600080fd5b506105ef6105ea366004612ccb565b611b25565b6040516102a191906131d0565b34801561060857600080fd5b5061061c610617366004612c24565b611b6d565b6040516102a191906131e3565b34801561063557600080fd5b50610295610644366004612ccb565b611bf8565b34801561065557600080fd5b50610317610664366004612c24565b611c40565b34801561067557600080fd5b50610295610684366004612ccb565b611c82565b34801561069557600080fd5b506103176000805160206136ce83398151915281565b3480156106b757600080fd5b506103176106c6366004612c24565b611cb8565b3480156106d757600080fd5b50610317600081565b3480156106ec57600080fd5b50610317611cf9565b34801561070157600080fd5b50610273610710366004612c24565b611d0c565b34801561072157600080fd5b50610273610730366004612c24565b611d4c565b34801561074157600080fd5b50610273610750366004612c24565b611d8c565b34801561076157600080fd5b50610562604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561079257600080fd5b5061061c6107a1366004612c24565b611e3b565b3480156107b257600080fd5b506103176107c1366004612c24565b611ecd565b3480156107d257600080fd5b506102736107e136600461304a565b611f0f565b3480156107f257600080fd5b50610317610801366004612c24565b611f6e565b34801561081257600080fd5b506102ca610821366004612c24565b611fb0565b34801561083257600080fd5b5061031761203a565b34801561084757600080fd5b50610273610856366004612ccb565b61204d565b34801561086757600080fd5b50610273610876366004612c24565b612069565b34801561088757600080fd5b506102736108963660046131f1565b6120a9565b3480156108a757600080fd5b5061031760008051602061362e83398151915281565b3480156108c957600080fd5b506103176122bd565b3480156108de57600080fd5b5061031760008051602061366e83398151915281565b34801561090057600080fd5b506103176122d0565b6109116122e3565b6040516209231560e11b81526004810182905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__906212462a906024015b60006040518083038186803b15801561095b57600080fd5b505af415801561096f573d6000803e3d6000fd5b5050505061097b612319565b50565b60006001600160e01b03198216637965db0b60e01b14806109af57506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060006109c161232a565b90506109d183826006015461234e565b6000838152600882016020908152604091829020600b0180548351818402810184019094528084529091830182828015610a3457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a16575b5050505050915050919050565b60606000610a4d61232a565b9050610a5d83826006015461234e565b6000838152600882016020908152604091829020600e0180548351818402810184019094528084529091830182828015610a34576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a16575050505050915050919050565b6040516314cf907760e01b8152600481018390526001600160a01b038216602482015260009073__$74730aeb69cabb170809b4d7c58740053a$__906314cf907790604401602060405180830381865af4158015610b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b51919061321b565b9392505050565b610c3f604080516103a081019091526000808252602082019081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b6000610c4961232a565b9050610c5983826006015461234e565b6000838152600882016020526040812060028101546003820154919291610c80919061324a565b610c8b90600161325d565b604080516103a08101909152868152835491925090602082019060ff166001811115610cb957610cb9612cf7565b81528354602090910190610100900460ff166001811115610cdc57610cdc612cf7565b8152835460209091019062010000900460ff166001811115610d0057610d00612cf7565b815260200173__$e5c34f23aa37ff925bd96f5e6125be3c79$__639ed14864886040518263ffffffff1660e01b8152600401610d3e91815260200190565b602060405180830381865af4158015610d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7f9190613270565b60ff166004811115610d9357610d93612cf7565b6004811115610da457610da4612cf7565b81528354602090910190600160201b900460ff166003811115610dc957610dc9612cf7565b81528354600160301b81046001600160a01b0316602083015260018501546040830152600285015460608301526003850154608083015260a08201849052600485015460c0830152600585015460e0830152600e85015461010083018190526006860154610120840152600160281b90910460ff1615156101408301526007850154610160830152600b850154610180830152600c8501546101a0830152600d8501546101c0830152600f8501546101e083015261020082015260088401546102208201526009840154610240820152600a84015461026082015260108401805461028090920191610eba90613293565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee690613293565b8015610f335780601f10610f0857610100808354040283529160200191610f33565b820191906000526020600020905b815481529060010190602001808311610f1657829003601f168201915b50505050508152602001836011018054610f4c90613293565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7890613293565b8015610fc55780601f10610f9a57610100808354040283529160200191610fc5565b820191906000526020600020905b815481529060010190602001808311610fa857829003601f168201915b50505050508152602001836012018054610fde90613293565b80601f016020809104026020016040519081016040528092919081815260200182805461100a90613293565b80156110575780601f1061102c57610100808354040283529160200191611057565b820191906000526020600020905b81548152906001019060200180831161103a57829003601f168201915b5050505050815260200183601301805461107090613293565b80601f016020809104026020016040519081016040528092919081815260200182805461109c90613293565b80156110e95780601f106110be576101008083540402835291602001916110e9565b820191906000526020600020905b8154815290600101906020018083116110cc57829003601f168201915b50505050508152509350505050919050565b6111036122e3565b60008051602061366e83398151915261111c8133611c82565b158015611131575061112f600033611c82565b155b1561115a57336040516309edd0f760e11b815260040161115191906132cd565b60405180910390fd5b8160000361117b5760405163162908e360e11b815260040160405180910390fd5b600061118561232a565b60058101805490859055604051919250906000805160206136ae833981519152906111b390839087906132e1565b60405180910390a150505061097b612319565b6000806111d161237b565b60009384526020525050604090206001015490565b60006111f061232a565b60070154905090565b6112016122e3565b60405163262ad80b60e01b815273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063262ad80b9061123c90869086908690600401613336565b60006040518083038186803b15801561125457600080fd5b505af4158015611268573d6000803e3d6000fd5b50505050611274612319565b505050565b6060600061128561232a565b905061129583826006015461234e565b6000838152600882016020908152604091829020600f0180548351818402810184019094528084529091830182828015610a3457602002820191906000526020600020905b8154815260200190600101908083116112da575050505050915050919050565b6113026122e3565b60008051602061366e83398151915261131b8133611c82565b158015611330575061132e600033611c82565b155b1561135057336040516309edd0f760e11b815260040161115191906132cd565b816000036113715760405163162908e360e11b815260040160405180910390fd5b600061137b61232a565b60078101805490859055604051919250906000805160206136ee833981519152906111b390839087906132e1565b6113b2826111c6565b6113bb8161239f565b6113c583836123a9565b50505050565b6001600160a01b03811633146113f45760405163334bd91960e11b815260040160405180910390fd5b611274828261244a565b6114066122e3565b6000805160206136ce83398151915261141f8133611c82565b1580156114345750611432600033611c82565b155b1561145457336040516309edd0f760e11b815260040161115191906132cd565b61145d826124c2565b5061097b612319565b61146e6122e3565b6000805160206136ce8339815191526114878133611c82565b15801561149c575061149a600033611c82565b155b156114bc57336040516309edd0f760e11b815260040161115191906132cd565b61145d82612549565b60006114cf6125d0565b805490915060ff600160401b82041615906001600160401b03166000811580156114f65750825b90506000826001600160401b031660011480156115125750303b155b905081158015611520575080155b1561153e5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561156757845460ff60401b1916600160401b1785555b6000611576602088018861304a565b6001600160a01b031614806115a357506000611598604088016020890161304a565b6001600160a01b0316145b806115c6575060006115bb606088016040890161304a565b6001600160a01b0316145b806115e9575060006115de608088016060890161304a565b6001600160a01b0316145b80611609575060006115fe602089018961304a565b6001600160a01b0316145b8061162c575060006116216040890160208a0161304a565b6001600160a01b0316145b8061164f575060006116446060890160408a0161304a565b6001600160a01b0316145b80611672575060006116676080890160608a0161304a565b6001600160a01b0316145b156116905760405163d92e233d60e01b815260040160405180910390fd5b608087013515806116a3575060a0870135155b806116b0575060c0870135155b806116bd575060e0870135155b156116db5760405163162908e360e11b815260040160405180910390fd5b6116e36125f4565b6116eb6125fe565b6116f36125f4565b60006116fd61232a565b6080890135600482015560a0890135600582015560c08901356007820155905061172a60e089013561260e565b60008051602061368e8339815191526000896080013560405161174e9291906132e1565b60405180910390a16000805160206136ae83398151915260008960a0013560405161177a9291906132e1565b60405180910390a16000805160206136ee83398151915260008960c001356040516117a69291906132e1565b60405180910390a16117f36117be60208a018a61304a565b6117ce60408b0160208c0161304a565b6117de60608c0160408d0161304a565b6117ee60808d0160608e0161304a565b612686565b611838611803602089018961304a565b61181360408a0160208b0161304a565b61182360608b0160408c0161304a565b61183360808c0160608d0161304a565b6126aa565b50831561187f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6118906122e3565b6000805160206136ce8339815191526118a98133611c82565b1580156118be57506118bc600033611c82565b155b156118de57336040516309edd0f760e11b815260040161115191906132cd565b61145d82612707565b6000806118f261232a565b905061190284826006015461234e565b6000938452600a01602090815260408085206001600160a01b039490941685529290525090205460ff1690565b60006119396122e3565b604051633839969560e21b815273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063e0e65a549061197090859060040161344e565b602060405180830381865af415801561198d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b1919061321b565b90506119bb612319565b919050565b6119c861278a565b6119d18261282f565b6119db8282612847565b5050565b60006119e96128fb565b5060008051602061364e83398151915290565b60606000611a0861232a565b9050611a1883826006015461234e565b6000838152600882016020908152604091829020600c0180548351818402810184019094528084529091830182828015610a34576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a16575050505050915050919050565b611a8e6122e3565b6040516367fc8c8960e01b81526004810182905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__906367fc8c8990602401610943565b611ace6122e3565b60008051602061366e833981519152611ae78133611c82565b158015611afc5750611afa600033611c82565b155b15611b1c57336040516309edd0f760e11b815260040161115191906132cd565b61145d8261260e565b600080611b3061232a565b9050611b4084826006015461234e565b6000938452600901602090815260408085206001600160a01b039490941685529290525090205460ff1690565b6040516327b4521960e21b81526004810182905260009073__$e5c34f23aa37ff925bd96f5e6125be3c79$__90639ed1486490602401602060405180830381865af4158015611bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be49190613270565b60ff1660048111156109af576109af612cf7565b600080611c0361232a565b9050611c1384826006015461234e565b6000938452601101602090815260408085206001600160a01b039490941685529290525090205460ff1690565b6000611c4a6122e3565b6040516387d6e21360e01b81526004810183905273__$74730aeb69cabb170809b4d7c58740053a$__906387d6e21390602401611970565b600080611c8d61237b565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000611cc26122e3565b60405162a0427760e81b81526004810183905273__$74730aeb69cabb170809b4d7c58740053a$__9063a042770090602401611970565b6000611d0361232a565b60060154905090565b611d146122e3565b60405163a41483e360e01b81526004810182905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063a41483e390602401610943565b611d546122e3565b6040516329e05eef60e21b81526004810182905273__$74730aeb69cabb170809b4d7c58740053a$__9063a7817bbc90602401610943565b611d946122e3565b60008051602061366e833981519152611dad8133611c82565b158015611dc25750611dc0600033611c82565b155b15611de257336040516309edd0f760e11b815260040161115191906132cd565b81600003611e035760405163162908e360e11b815260040160405180910390fd5b6000611e0d61232a565b600481018054908590556040519192509060008051602061368e833981519152906111b390839087906132e1565b6000611e456122e3565b604051632cc3c16160e21b81526004810183905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063b30f058490602401602060405180830381865af4158015611e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb99190613270565b60ff1660048111156119b1576119b1612cf7565b6000611ed76122e3565b604051635ac5e9ab60e11b81526004810183905273__$74730aeb69cabb170809b4d7c58740053a$__9063b58bd35690602401611970565b611f176122e3565b6000805160206136ce833981519152611f308133611c82565b158015611f455750611f43600033611c82565b155b15611f6557336040516309edd0f760e11b815260040161115191906132cd565b61145d82612944565b6000611f786122e3565b60405163cb3e0d2b60e01b81526004810183905273__$74730aeb69cabb170809b4d7c58740053a$__9063cb3e0d2b90602401611970565b60606000611fbc61232a565b9050611fcc83826006015461234e565b6000838152600882016020908152604091829020600d0180548351818402810184019094528084529091830182828015610a34576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a16575050505050915050919050565b600061204461232a565b60040154905090565b612056826111c6565b61205f8161239f565b6113c5838361244a565b6120716122e3565b604051637224771360e11b81526004810182905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063e448ee2690602401610943565b6120b16122e3565b60006120bd8133611c82565b1580156120d257506120d0600033611c82565b155b156120f257336040516309edd0f760e11b815260040161115191906132cd565b6001600160a01b0383166121195760405163d92e233d60e01b815260040160405180910390fd5b8160000361213a5760405163162908e360e11b815260040160405180910390fd5b600061214461232a565b80546040516370a0823160e01b81529192506000916001600160a01b03909116906370a08231906121799030906004016132cd565b602060405180830381865afa158015612196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ba919061321b565b9050808411156121e15780846040516304720f4b60e21b81526004016111519291906132e1565b815460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061221290889088906004016135d6565b6020604051808303816000875af1158015612231573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225591906135ef565b612272576040516312171d8360e31b815260040160405180910390fd5b6040518481526001600160a01b0386169033907f8b192dc173e314b16d9067e45c2afbdcdc1713fc4fe1a95aff9076249648abc09060200160405180910390a35050506119db612319565b60006122c761232a565b60050154905090565b60006122da61232a565b60100154905090565b60006122ed6129cb565b80549091506001190161231357604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60006123236129cb565b6001905550565b7f4602c7a79eac2c186a5049fa18aa513e24b689a1ed3277f24b1e5b426612d10090565b81158061235a57508082115b156119db57604051635bafafd160e01b815260048101839052602401611151565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b61097b81336129ef565b6000806123b461237b565b90506123c08484611c82565b612440576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556123f63390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109af565b60009150506109af565b60008061245561237b565b90506124618484611c82565b15612440576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109af565b6001600160a01b0381166124e95760405163d92e233d60e01b815260040160405180910390fd5b60006124f361232a565b6001810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907fd260589e8955f4324723f68c9c004afe08c82d5790f93946bbf95f6ebcab534790600090a3505050565b6001600160a01b0381166125705760405163d92e233d60e01b815260040160405180910390fd5b600061257a61232a565b6002810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f897acaec25783ce4cf8ff29c16715e089a40d285e2e5d6fcf567af00f471425990600090a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6125fc612a1a565b565b612606612a1a565b6125fc612a3f565b8060000361262f5760405163162908e360e11b815260040160405180910390fd5b600061263961232a565b60108101805490849055604051919250907f82480e97991520549ac4b5d0e1d97edb3bfac2666202923b6903d2a953dc76089061267990839086906132e1565b60405180910390a1505050565b61268f84612707565b612698836124c2565b6126a182612549565b6113c581612944565b6126b56000856123a9565b506126ce60008051602061362e833981519152846123a9565b506126e76000805160206136ce833981519152836123a9565b5061270060008051602061366e833981519152826123a9565b5050505050565b6001600160a01b03811661272e5760405163d92e233d60e01b815260040160405180910390fd5b600061273861232a565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907fb3061a8192d243178b0fd92d1809bc86c3fa3b177c046cf74974c45c32cd25e090600090a3505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061281157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661280560008051602061364e833981519152546001600160a01b031690565b6001600160a01b031614155b156125fc5760405163703e46dd60e11b815260040160405180910390fd5b60008051602061362e8339815191526119db8161239f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156128a1575060408051601f3d908101601f1916820190925261289e9181019061321b565b60015b6128c05781604051634c9c8ce360e01b815260040161115191906132cd565b60008051602061364e83398151915281146128f157604051632a87526960e21b815260048101829052602401611151565b6112748383612a47565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146125fc5760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b03811661296b5760405163d92e233d60e01b815260040160405180910390fd5b600061297561232a565b6003810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f02a190d74141c632badc9d2cbb0eb33818f3b5f949c4e8ad29d80aa63a5537ac90600090a3505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b6129f98282611c82565b6119db57808260405163e2517d3f60e01b81526004016111519291906135d6565b612a22612a9d565b6125fc57604051631afcd79f60e31b815260040160405180910390fd5b612319612a1a565b612a5082612ab7565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612a95576112748282612b13565b6119db612b89565b6000612aa76125d0565b54600160401b900460ff16919050565b806001600160a01b03163b600003612ae45780604051634c9c8ce360e01b815260040161115191906132cd565b60008051602061364e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612b309190613611565b600060405180830381855af49150503d8060008114612b6b576040519150601f19603f3d011682016040523d82523d6000602084013e612b70565b606091505b5091509150612b80858383612ba8565b95945050505050565b34156125fc5760405163b398979f60e01b815260040160405180910390fd5b606082612bbd57612bb882612bfb565b610b51565b8151158015612bd457506001600160a01b0384163b155b15612bf45783604051639996b31560e01b815260040161115191906132cd565b5092915050565b805115612c0b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b600060208284031215612c3657600080fd5b5035919050565b600060208284031215612c4f57600080fd5b81356001600160e01b031981168114610b5157600080fd5b6020808252825182820181905260009190848201906040850190845b81811015612ca85783516001600160a01b031683529284019291840191600101612c83565b50909695505050505050565b80356001600160a01b03811681146119bb57600080fd5b60008060408385031215612cde57600080fd5b82359150612cee60208401612cb4565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b60028110612d1d57612d1d612cf7565b9052565b60058110612d1d57612d1d612cf7565b6004811061097b5761097b612cf7565b612d1d81612d31565b60005b83811015612d65578181015183820152602001612d4d565b50506000910152565b60008151808452612d86816020860160208601612d4a565b601f01601f19169290920160200192915050565b602081528151602082015260006020830151612db96040840182612d0d565b506040830151612dcc6060840182612d0d565b506060830151612ddf6080840182612d0d565b506080830151612df260a0840182612d21565b5060a0830151612e0560c0840182612d41565b5060c08301516001600160a01b03811660e08401525060e083015161010083810191909152830151610120808401919091528301516101408084019190915283015161016080840191909152830151610180808401919091528301516101a0808401919091528301516101c0808401919091528301516101e080840191909152830151610200612e988185018315159052565b840151610220848101919091528401516102408085019190915284015161026080850191909152840151610280808501919091528401516102a0808501919091528401516102c0808501919091528401516102e08085019190915284015161030080850191909152840151610320808501919091528401516103a061034080860182905291925090612f2e6103c0860184612d6e565b9250808601519050601f19610360818786030181880152612f4f8584612d6e565b945080880151925050610380818786030181880152612f6e8584612d6e565b908801518782039092018488015293509050612f8a8382612d6e565b9695505050505050565b600080600060408486031215612fa957600080fd5b8335925060208401356001600160401b0380821115612fc757600080fd5b818601915086601f830112612fdb57600080fd5b813581811115612fea57600080fd5b8760208260051b8501011115612fff57600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015612ca85783518352928401929184019160010161302e565b60006020828403121561305c57600080fd5b610b5182612cb4565b60008082840361018081121561307a57600080fd5b6101008082121561308a57600080fd5b849350608060ff198301121561309f57600080fd5b92959390920193505050565b6000602082840312156130bd57600080fd5b81356001600160401b038111156130d357600080fd5b82016101c08185031215610b5157600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561310f57600080fd5b61311883612cb4565b915060208301356001600160401b038082111561313457600080fd5b818501915085601f83011261314857600080fd5b81358181111561315a5761315a6130e6565b604051601f8201601f19908116603f01168101908382118183101715613182576131826130e6565b8160405282815288602084870101111561319b57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b602081526000610b516020830184612d6e565b602081016131dd83612d31565b91905290565b602081016109af8284612d21565b6000806040838503121561320457600080fd5b61320d83612cb4565b946020939093013593505050565b60006020828403121561322d57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109af576109af613234565b808201808211156109af576109af613234565b60006020828403121561328257600080fd5b815160ff81168114610b5157600080fd5b600181811c908216806132a757607f821691505b6020821081036132c757634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0391909116815260200190565b918252602082015260400190565b8183526000602080850194508260005b8581101561332b576001600160a01b0361331883612cb4565b16875295820195908201906001016132ff565b509495945050505050565b838152604060208201526000612b806040830184866132ef565b8035600281106119bb57600080fd5b6000808335601e1984360301811261337657600080fd5b83016020810192503590506001600160401b0381111561339557600080fd5b8060051b36038213156133a757600080fd5b9250929050565b81835260006001600160fb1b038311156133c757600080fd5b8260051b80836020870137939093016020019392505050565b6000808335601e198436030181126133f757600080fd5b83016020810192503590506001600160401b0381111561341657600080fd5b8036038213156133a757600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526134676020820161346284613350565b612d0d565b600061347560208401613350565b6134826040840182612d0d565b5061348f60408401613350565b61349c6060840182612d0d565b5060608301356080830152608083013560a083015260a083013560c083015260c083013560e083015261010060e0840135818401526134dd8185018561335f565b91506101c061012081818701526134f96101e0870185856133ae565b93506135078188018861335f565b93509050601f196101408188870301818901526135258686856132ef565b9550613533818a018a6133e0565b955092505061016081888703018189015261354f868685613425565b955061355d818a018a6133e0565b9550925050610180818887030181890152613579868685613425565b9550613587818a018a6133e0565b95509250506101a08188870301818901526135a3868685613425565b95506135b1818a018a6133e0565b9550925050808786030183880152506135cb848483613425565b979650505050505050565b6001600160a01b03929092168252602082015260400190565b60006020828403121561360157600080fd5b81518015158114610b5157600080fd5b60008251613623818460208701612d4a565b919091019291505056fe189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcdfc0438b5754beb343462ff330f73266ff7457fdf879dfb68c958ccbe15765f3280335b2726d1c2b1770ba289d3de2cebd2f55c641e93c7e77d033cadab1b06b2294a958ea1cb2569bfbdbd8a8e8502b08b8a71ea5134d264f97f07ef7f8a8e856af926aa3845d4dc63a6c773ed36f51794728c97ebcd1bf845bcecb16eeb6b743f71dfd216eaaf2f75bdb23d66ae4f5b7e2975e422538b68ef11b46b3874098a264697066735822122046da9a205b8774131e7ff18a2341def0d961084cedcc65164dd5377eb7f125e964736f6c63430008140033",
  "linkReferences": {
    "contracts/challenges/libraries/ChallengeCoreLogic.sol": {
      "ChallengeCoreLogic": [
        {
          "length": 20,
          "start": 2602
        },
        {
          "length": 20,
          "start": 3595
        },
        {
          "length": 20,
          "start": 4884
        },
        {
          "length": 20,
          "start": 6732
        },
        {
          "length": 20,
          "start": 7080
        },
        {
          "length": 20,
          "start": 7306
        },
        {
          "length": 20,
          "start": 7726
        },
        {
          "length": 20,
          "start": 8031
        },
        {
          "length": 20,
          "start": 8587
        }
      ]
    },
    "contracts/challenges/libraries/ChallengeSettlementLogic.sol": {
      "ChallengeSettlementLogic": [
        {
          "length": 20,
          "start": 3063
        },
        {
          "length": 20,
          "start": 7524
        },
        {
          "length": 20,
          "start": 7643
        },
        {
          "length": 20,
          "start": 7790
        },
        {
          "length": 20,
          "start": 8177
        },
        {
          "length": 20,
          "start": 8338
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/challenges/libraries/ChallengeCoreLogic.sol": {
      "ChallengeCoreLogic": [
        {
          "length": 20,
          "start": 2342
        },
        {
          "length": 20,
          "start": 3335
        },
        {
          "length": 20,
          "start": 4624
        },
        {
          "length": 20,
          "start": 6472
        },
        {
          "length": 20,
          "start": 6820
        },
        {
          "length": 20,
          "start": 7046
        },
        {
          "length": 20,
          "start": 7466
        },
        {
          "length": 20,
          "start": 7771
        },
        {
          "length": 20,
          "start": 8327
        }
      ]
    },
    "contracts/challenges/libraries/ChallengeSettlementLogic.sol": {
      "ChallengeSettlementLogic": [
        {
          "length": 20,
          "start": 2803
        },
        {
          "length": 20,
          "start": 7264
        },
        {
          "length": 20,
          "start": 7383
        },
        {
          "length": 20,
          "start": 7530
        },
        {
          "length": 20,
          "start": 7917
        },
        {
          "length": 20,
          "start": 8078
        }
      ]
    }
  }
}
