{
  "_format": "hh-sol-artifact-1",
  "contractName": "Keep3rJobDisputableForTest",
  "sourceName": "solidity/for-test/peripherals/jobs/Keep3rJobDisputableForTest.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_kph",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_keep3rV1",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_keep3rV1Proxy",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_kp3rWethPool",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AlreadyDisputed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BondsLocked",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BondsUnexistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Disputed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "DisputerExistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "DisputerUnexistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InsufficientJobTokenCredits",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobDisputed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobLiquidityInsufficient",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobLiquidityLessThanMin",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobLiquidityUnexistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobTokenCreditsLocked",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobTokenInsufficient",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobTokenUnexistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobUnavailable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LiquidityPairApproved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LiquidityPairUnapproved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LiquidityPairUnexistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MinRewardPeriod",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NoGovernanceZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotDisputed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlyDisputer",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlyGovernance",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlyJobOwner",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlyPendingGovernance",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlyPendingJobOwner",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlySlasher",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "SlasherExistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "SlasherUnexistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenUnallowed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UnbondsLocked",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UnbondsUnexistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroAddress",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_bondTime",
          "type": "uint256"
        }
      ],
      "name": "BondTimeChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_keeper",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_bonding",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "Bonding",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_jobOrKeeper",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_disputer",
          "type": "address"
        }
      ],
      "name": "Dispute",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_disputer",
          "type": "address"
        }
      ],
      "name": "DisputerAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_disputer",
          "type": "address"
        }
      ],
      "name": "DisputerRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_fee",
          "type": "uint256"
        }
      ],
      "name": "FeeChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_pendingGovernance",
          "type": "address"
        }
      ],
      "name": "GovernanceProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "GovernanceSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_inflationPeriod",
          "type": "uint256"
        }
      ],
      "name": "InflationPeriodChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "JobOwnershipAssent",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_pendingOwner",
          "type": "address"
        }
      ],
      "name": "JobOwnershipChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_slasher",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "JobSlashLiquidity",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_slasher",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "JobSlashToken",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_keep3rHelper",
          "type": "address"
        }
      ],
      "name": "Keep3rHelperChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_keep3rV1",
          "type": "address"
        }
      ],
      "name": "Keep3rV1Change",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_keep3rV1Proxy",
          "type": "address"
        }
      ],
      "name": "Keep3rV1ProxyChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_kp3rWethPool",
          "type": "address"
        }
      ],
      "name": "Kp3rWethPoolChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_provider",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "LiquidityAddition",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "LiquidityApproval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_rewardedAt",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_currentCredits",
          "type": "uint256"
        }
      ],
      "name": "LiquidityCreditsForced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_rewardedAt",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_currentCredits",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_periodCredits",
          "type": "uint256"
        }
      ],
      "name": "LiquidityCreditsReward",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_liquidityMinimum",
          "type": "uint256"
        }
      ],
      "name": "LiquidityMinimumChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "LiquidityRevocation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "LiquidityWithdrawal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_jobOrKeeper",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_resolver",
          "type": "address"
        }
      ],
      "name": "Resolve",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_rewardPeriodTime",
          "type": "uint256"
        }
      ],
      "name": "RewardPeriodTimeChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_slasher",
          "type": "address"
        }
      ],
      "name": "SlasherAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_slasher",
          "type": "address"
        }
      ],
      "name": "SlasherRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_provider",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "TokenCreditAddition",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "TokenCreditWithdrawal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_unbondTime",
          "type": "uint256"
        }
      ],
      "name": "UnbondTimeChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_keeperOrJob",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_unbonding",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "Unbonding",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "acceptGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "acceptJobOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_disputer",
          "type": "address"
        }
      ],
      "name": "addDisputer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "addLiquidityToJob",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_slasher",
          "type": "address"
        }
      ],
      "name": "addSlasher",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "addTokenCreditsToJob",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "approveLiquidity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "approvedLiquidities",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "_list",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "bondTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "bonds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "canActivateAfter",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "canWithdrawAfter",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "changeJobOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_jobOrKeeper",
          "type": "address"
        }
      ],
      "name": "dispute",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "disputers",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "disputes",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "fee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "firstSeen",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "forceLiquidityCreditsToJob",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "hasBonded",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "inflationPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "internalJobLiquidities",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "_tokens",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "internalJobLiquidityCredits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_credits",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "internalJobPeriodCredits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_credits",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "internalJobTokens",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "_tokens",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "jobLiquidityCredits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_liquidityCredits",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "jobOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "jobPendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "jobPeriodCredits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_periodCredits",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "jobTokenCredits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "jobTokenCreditsAddedAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "jobs",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "_list",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "keep3rHelper",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "keep3rV1",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "keep3rV1Proxy",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "keepers",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "_list",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "kp3rWethPool",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "liquidityAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "liquidityMinimum",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "observeLiquidity",
      "outputs": [
        {
          "components": [
            {
              "internalType": "int56",
              "name": "current",
              "type": "int56"
            },
            {
              "internalType": "int56",
              "name": "difference",
              "type": "int56"
            },
            {
              "internalType": "uint256",
              "name": "period",
              "type": "uint256"
            }
          ],
          "internalType": "struct IKeep3rJobFundableLiquidity.TickCache",
          "name": "_tickCache",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "pendingBonds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingGovernance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "pendingUnbonds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "quoteLiquidity",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_periodCredits",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_disputer",
          "type": "address"
        }
      ],
      "name": "removeDisputer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_slasher",
          "type": "address"
        }
      ],
      "name": "removeSlasher",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_jobOrKeeper",
          "type": "address"
        }
      ],
      "name": "resolve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "revokeLiquidity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardPeriodTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "rewardedAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "setApprovedLiquidity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_bondTime",
          "type": "uint256"
        }
      ],
      "name": "setBondTime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_fee",
          "type": "uint256"
        }
      ],
      "name": "setFee",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "setGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_inflationPeriod",
          "type": "uint256"
        }
      ],
      "name": "setInflationPeriod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "setJobLiquidity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "setJobToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_keep3rHelper",
          "type": "address"
        }
      ],
      "name": "setKeep3rHelper",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_keep3rV1",
          "type": "address"
        }
      ],
      "name": "setKeep3rV1",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_keep3rV1Proxy",
          "type": "address"
        }
      ],
      "name": "setKeep3rV1Proxy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_kp3rWethPool",
          "type": "address"
        }
      ],
      "name": "setKp3rWethPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_liquidityMinimum",
          "type": "uint256"
        }
      ],
      "name": "setLiquidityMinimum",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "setRevokedLiquidity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_rewardPeriodTime",
          "type": "uint256"
        }
      ],
      "name": "setRewardPeriodTime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_unbondTime",
          "type": "uint256"
        }
      ],
      "name": "setUnbondTime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "slashLiquidityFromJob",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "slashTokenFromJob",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "slashers",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "totalJobCredits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_credits",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "unbondLiquidityFromJob",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unbondTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        }
      ],
      "name": "withdrawLiquidityFromJob",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        }
      ],
      "name": "withdrawTokenCreditsFromJob",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "workCompleted",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "workedAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526203f480601f55621275006020556729a2241af62c000060215562069780602255622cd300602355601e6024553480156200003e57600080fd5b5060405162004866380380620048668339810160408190526200006191620001c4565b6001600055838383833380806200008a5760405162b293ed60e81b815260040160405180910390fd5b601780546001600160a01b03199081166001600160a01b0393841617909155601d80548216888416178155601b80548316888516179055601c80548316878516179055601e8054831686851690811782556000818152600e602052604090819020805490951690911790935590549054915163696a437b60e01b81529183166004830152909116915063696a437b9060240160206040518083038186803b1580156200013557600080fd5b505afa1580156200014a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000170919062000221565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055506200024c95505050505050565b80516001600160a01b0381168114620001bf57600080fd5b919050565b60008060008060808587031215620001db57600080fd5b620001e685620001a7565b9350620001f660208601620001a7565b92506200020660408601620001a7565b91506200021660608601620001a7565b905092959194509250565b6000602082840312156200023457600080fd5b815180151581146200024557600080fd5b9392505050565b61460a806200025c6000396000f3fe608060405234801561001057600080fd5b50600436106103945760003560e01c80638fe204dd116101e1578063cb54694d1161010b578063cb54694d1461092d578063cd22af1b14610940578063d55995fe1461096b578063ddca3f431461097e578063de55351d14610987578063deaf81d4146109b0578063e01f857c146109c3578063e326ac43146109d6578063e89aad28146109f6578063ebbb619414610a09578063ec00cdfc14610a1c578063f0f346b914610a2f578063f11a1d1a14610a42578063f136a09d14610a55578063f25e311b14610a75578063f39c38a014610a88578063f75f9f7b14610a9b578063fc253d2b14610aae578063fe75bc4614610ab757600080fd5b80638fe204dd14610766578063951dc22c1461077957806398e90a0f146107815780639d5c33d8146107aa578063a2145809146107bd578063a39744b5146107d0578063a676f9ff146107fb578063a7d2e7841461081b578063aac6aa9c14610824578063ab033ea914610837578063b0103b1a1461084a578063b23922331461086d578063b440027f14610880578063b600702a146108ab578063b7e77340146108be578063b87fcbff146108d1578063c7ae40d0146108f4578063cacdf93d14610907578063cb4be2bb1461091a57600080fd5b8063594a3a93116102c2578063594a3a93146105e857806359a2255e146105fb5780635aa6e6751461060e5780635ebe23f014610621578063633fb68f1461062a57806364bb43ee1461063357806368a9f19c14610646578063694798e61461065957806369fe0e2d146106845780636cf262bc146106975780636e2a9ca6146106aa57806372da828a146106bd57806375a9f7ff146106d0578063768b5d90146106e35780637b40c913146106ec5780637c8fce23146106ff578063878c723e146107075780638bb6dfa8146107305780638cb22b761461074357600080fd5b8063034d4c611461039957806307b435c2146103bf5780630c620bce146103ea5780630d6a1f87146103ff5780630dc60206146104125780631101eb411461043b57806315006b8214610450578063160e1e311461047b578063165e62e71461048e578063168f92e7146104cb5780631b44555e146104f65780631ef94b911461051657806321040b0114610536578063238efcbc14610561578063274a8db414610569578063280b656c1461059c57806352a4de29146105af57806355ea6c47146105c2578063575288bf146105d5575b600080fd5b6103ac6103a7366004614097565b610aca565b6040519081526020015b60405180910390f35b6103ac6103cd3660046140d1565b601260209081526000928352604080842090915290825290205481565b6103f2610bd0565b6040516103b6919061434a565b6103ac61040d3660046141e9565b610be1565b6103ac610420366004614097565b6001600160a01b03166000908152600b602052604090205490565b61044e610449366004614155565b610ce7565b005b6103ac61045e3660046140d1565b601060209081526000928352604080842090915290825290205481565b61044e610489366004614097565b610e41565b6104a161049c366004614097565b610fa7565b604080518251600690810b825260208085015190910b9082015291810151908201526060016103b6565b6103ac6104d93660046140d1565b600960209081526000928352604080842090915290825290205481565b6103ac610504366004614097565b60056020526000908152604090205481565b601b54610529906001600160a01b031681565b6040516103b691906142c1565b6103ac6105443660046140d1565b601360209081526000928352604080842090915290825290205481565b61044e61136d565b61058c610577366004614097565b601a6020526000908152604090205460ff1681565b60405190151581526020016103b6565b61044e6105aa366004614097565b6113f9565b61044e6105bd366004614155565b611408565b61044e6105d0366004614097565b611656565b61044e6105e3366004614155565b61170a565b61044e6105f63660046140d1565b6119cd565b61044e610609366004614097565b611a72565b601754610529906001600160a01b031681565b6103ac601f5481565b6103ac60215481565b61044e610641366004614097565b611b24565b61044e610654366004614097565b611ba6565b6103ac6106673660046140d1565b602860209081526000928352604080842090915290825290205481565b61044e610692366004614273565b611c5e565b6103ac6106a5366004614097565b611cbe565b61044e6106b8366004614155565b611df4565b61044e6106cb366004614097565b611f43565b6103f26106de366004614097565b611fe0565b6103ac60225481565b601e54610529906001600160a01b031681565b6103f26120d0565b610529610715366004614097565b6001602052600090815260409020546001600160a01b031681565b6103ac61073e366004614097565b6120dc565b61058c610751366004614097565b60146020526000908152604090205460ff1681565b61044e610774366004614273565b61217f565b6103f26121dd565b61052961078f366004614097565b6002602052600090815260409020546001600160a01b031681565b61044e6107b8366004614097565b6121e9565b61044e6107cb36600461410a565b6122a1565b6103ac6107de3660046140d1565b600860209081526000928352604080842090915290825290205481565b6103ac610809366004614097565b60296020526000908152604090205481565b6103ac60205481565b61044e610832366004614097565b612471565b61044e610845366004614097565b612525565b61058c610858366004614097565b60076020526000908152604090205460ff1681565b61044e61087b366004614273565b61259b565b6103ac61088e3660046140d1565b602560209081526000928352604080842090915290825290205481565b61044e6108b9366004614097565b6125fb565b61044e6108cc366004614273565b612820565b61058c6108df366004614097565b60196020526000908152604090205460ff1681565b601c54610529906001600160a01b031681565b61044e6109153660046140d1565b612880565b61044e610928366004614097565b6128a7565b61044e61093b366004614273565b612944565b6103ac61094e3660046140d1565b601160209081526000928352604080842090915290825290205481565b61044e610979366004614196565b6129c8565b6103ac60245481565b6103ac610995366004614097565b6001600160a01b03166000908152600a602052604090205490565b61044e6109be366004614097565b612bff565b61044e6109d13660046140d1565b612c0a565b6103ac6109e4366004614097565b60066020526000908152604090205481565b6103f2610a04366004614097565b612c2c565b61044e610a17366004614273565b612d1c565b61044e610a2a366004614097565b612d7c565b61044e610a3d366004614097565b612e19565b601d54610529906001600160a01b031681565b6103ac610a63366004614097565b602a6020526000908152604090205481565b61044e610a83366004614155565b612ecd565b601854610529906001600160a01b031681565b61044e610aa9366004614097565b613112565b6103ac60235481565b61044e610ac53660046141e9565b6131ca565b600080610ad683611cbe565b6022549091504290610af190610aec90836144b5565b6132ba565b6001600160a01b0385166000908152602960205260409020541115610b95576022546001600160a01b038516600090815260296020526040902054610b3690426144b5565b10610b72576022546001600160a01b038516600090815260296020526040902054610b61919061441a565b610b6b90826144b5565b9050610bab565b6001600160a01b038416600090815260296020526040902054610b6b90826144b5565b610b9e426132ba565b610ba890826144b5565b90505b610bb581836132d4565b610bbe856120dc565b610bc8919061441a565b949350505050565b6060610bdc60266132fe565b905090565b6000610bee602684613312565b15610ce1576000610bfe84610fa7565b90508060400151600014610cdf576001600160a01b0384166000908152600f602052604081205460ff16610c3f578160200151610c3a90614527565b610c45565b81602001515b601d5460225460405163a0d2710760e01b8152929350610cd6926001600160a01b039092169163a0d2710791610c819189918791600401614401565b60206040518083038186803b158015610c9957600080fd5b505afa158015610cad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd1919061428c565b613334565b92505050610ce1565b505b92915050565b6001600160a01b038381166000908152600160205260409020548491163314610d2357604051636efb4f4160e11b815260040160405180910390fd5b602054610d30904261441a565b6001600160a01b03808616600081815260126020908152604080832094891680845294825280832095909555918152601382528381209281529190529081208054849290610d7f90849061441a565b90915550610d909050848484613345565b6001600160a01b038085166000908152602860209081526040808320938716835292905220548015801590610dcf5750602154610dcd8286613553565b105b15610ded57604051636f447fcd60e11b815260040160405180910390fd5b836001600160a01b0316856001600160a01b03167f9aaab310d247ad45aef26bbdefc4ebf20c728fdb84c92b95b2b05d21826940de85604051610e3291815260200190565b60405180910390a35050505050565b6017546001600160a01b03163314610e6c576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116610e935760405163d92e233d60e01b815260040160405180910390fd5b601e80546001600160a01b038084166001600160a01b031992831681179093556000838152600e6020526040908190208054909316909317909155601d54915163696a437b60e01b815291169063696a437b90610ef49084906004016142c1565b60206040518083038186803b158015610f0c57600080fd5b505afa158015610f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f449190614215565b6001600160a01b0382166000908152600f602052604090819020805460ff191692151592909217909155517f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa90610f9c9083906142c1565b60405180910390a150565b6040805160608101825260008082526020820181905291810191909152610fcd426132ba565b6001600160a01b0383166000908152602b6020526040902060010154141561104357506001600160a01b03166000908152602b602090815260409182902082516060810184528154600681810b810b810b8352600160381b909104810b810b900b92810192909252600101549181019190915290565b60008061105760225442610aec91906144b5565b6001600160a01b0385166000908152602b60205260409020600101549091508114156111bb57604080516001808252818301909252600091602080830190803683375050506001600160a01b0386166000908152602b602052604090205490915060060b6110c4426132ba565b6110ce90426144b5565b826000815181106110e1576110e1614590565b63ffffffff909216602092830291909101820152601d546001600160a01b038881166000908152600e90935260409283902054925163dc686d9160e01b81529181169263dc686d919261113d92919091169086906004016142d5565b60606040518083038186803b15801561115557600080fd5b505afa158015611169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d9190614230565b600692830b90920b8088529195506111a791839150614465565b600690810b900b6020860152506113449050565b6001600160a01b0384166000908152602b602052604090206001015481111561134457604080516002808252606082018352600092602083019080368337019050509050611208426132ba565b61121290426144b5565b8160008151811061122557611225614590565b602002602001019063ffffffff16908163ffffffff168152505060225461124b426132ba565b61125590426144b5565b61125f919061441a565b8160018151811061127257611272614590565b63ffffffff909216602092830291909101820152601d546001600160a01b038781166000908152600e909352604080842054905163dc686d9160e01b81529282169263dc686d91926112ca92169086906004016142d5565b60606040518083038186803b1580156112e257600080fd5b505afa1580156112f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131a9190614230565b600692830b90920b8088529195509150611335908290614465565b600690810b900b602086015250505b811561135d57611353426132ba565b6040840152611365565b600060408401525b50505b919050565b6018546001600160a01b0316331461139857604051637ef5703160e11b815260040160405180910390fd5b60188054601780546001600160a01b0383166001600160a01b031991821681179092559091169091556040517fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b6916113ef916142c1565b60405180910390a1565b611404602682613671565b5050565b600260005414156114345760405162461bcd60e51b815260040161142b906143ca565b60405180910390fd5b6002600055611444602683613312565b6114615760405163e0b6aead60e01b815260040160405180910390fd5b61146c601584613312565b61148957604051636211d34960e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602052604090206114ab9083613671565b506114b583613686565b6021546001600160a01b038085166000908152602860209081526040808320938716835292905220546114f3906114ed90849061441a565b84613553565b101561151257604051636f447fcd60e11b815260040160405180910390fd5b6001600160a01b038316600081815260296020908152604080832054600a835281842054600b845293829020548251918252928101939093528201527fee3f0daba9837d1ab0597acf34328550e4832d02e24e467825e7c2dd318c38209060600160405180910390a26115906001600160a01b0383163330846136e4565b6001600160a01b038084166000908152602860209081526040808320938616835292905290812080548392906115c790849061441a565b909155506115da9050610cd18284613553565b6001600160a01b0384166000908152600b60205260408120805490919061160290849061441a565b909155505060405181815233906001600160a01b0384811691908616907f4e186bc75a2220191b826baff3ee63c3e970e94e58a9007ff94c9a7b8e6ebb3f9060200160405180910390a45050600160005550565b336000908152601a602052604090205460ff1661168657604051630942721960e31b815260040160405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff166116bf576040516310cec38560e21b815260040160405180910390fd5b6001600160a01b038116600081815260076020526040808220805460ff19169055513392917fe02b2375d8fb4aef3e5bc5d53bffcf70b6f185c5c93e69dcbe8b6cfc58e837e291a350565b6002600054141561172d5760405162461bcd60e51b815260040161142b906143ca565b600260005561173d601584613312565b61175a57604051636211d34960e01b815260040160405180910390fd5b601b546001600160a01b03838116911614156117885760405162822d9760e71b815260040160405180910390fd5b6040516370a0823160e01b81526000906001600160a01b038416906370a08231906117b79030906004016142c1565b60206040518083038186803b1580156117cf57600080fd5b505afa1580156117e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611807919061428c565b905061181e6001600160a01b0384163330856136e4565b600081846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161184d91906142c1565b60206040518083038186803b15801561186557600080fd5b505afa158015611879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189d919061428c565b6118a791906144b5565b90506000612710602454836118bc9190614446565b6118c69190614432565b90506118d281836144b5565b6001600160a01b038088166000908152600960209081526040808320938a168352929052908120805490919061190990849061441a565b90915550506001600160a01b0380871660009081526025602090815260408083208985168085529252909120429055601754611946921683613755565b6001600160a01b0386166000908152600c602052604090206119689086613671565b50336001600160a01b0316856001600160a01b0316876001600160a01b03167fec1a37d4a331a5059081e0fb5da1735e7890900cd215a4fb1e9f2779fd7b83eb856040516119b891815260200190565b60405180910390a45050600160005550505050565b6001600160a01b038281166000908152600160205260409020548391163314611a0957604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03838116600081815260026020908152604080832080546001600160a01b031916888716908117909155600190925280832054905191941692917fa8bad3f0b781e1d954af9945167d5f80bfe5e57930f17c93843187c77557a6b891a4505050565b6001600160a01b038181166000908152600260205260409020548291163314611aae5760405163cfe9663360e01b815260040160405180910390fd5b6001600160a01b03828116600081815260016020908152604080832080546002909352818420805487166001600160a01b031980861691909117909255805490911690555193169283929133917fcf30c54296d5eee76168b564c59c50578d49c271733a470f32707c8cfbc88a8b9190a4505050565b6017546001600160a01b03163314611b4f576040516354348f0360e01b815260040160405180910390fd5b611b5a602682613774565b611b7757604051630a8d08b160e01b815260040160405180910390fd5b7f51199d699bdfd516fa88dd0d2f8487c40c147b4867acaa23adc8d4df6b098e5681604051610f9c91906142c1565b6017546001600160a01b03163314611bd1576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff1615611c0b5760405163546da66560e11b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090819020805460ff19166001179055517f049ccb28ab796d3225573a065712f6e7754487ced56056cda8889c337511807b90610f9c9083906142c1565b6017546001600160a01b03163314611c89576040516354348f0360e01b815260040160405180910390fd5b60248190556040518181527f4c10ca068ff7002cf5da78f2f697d1e91f6f0ac27f7344b28e8ef25263f87e5d90602001610f9c565b6000805b6001600160a01b0383166000908152600d60205260409020611ce390613789565b811015611dee576001600160a01b0383166000908152600d60205260408120611d0c9083613793565b9050611d19602682613312565b15611ddb576000611d2982610fa7565b90508060400151600014611dd9576001600160a01b0382166000908152600f602052604081205460ff16611d6a578160200151611d6590614527565b611d70565b81602001515b601d546001600160a01b03888116600090815260286020908152604080832089851684529091529081902054602254915163a0d2710760e01b8152949550611dcb94929093169263a0d2710792610c81928791600401614401565b611dd5908661441a565b9450505b505b5080611de6816144f8565b915050611cc2565b50919050565b3360009081526019602052604090205460ff16611e2457604051637e57b1e160e01b815260040160405180910390fd5b6001600160a01b03831660009081526007602052604090205460ff16611e5d576040516310cec38560e21b815260040160405180910390fd5b611e68838383613345565b60175460405163a9059cbb60e01b81526001600160a01b038481169263a9059cbb92611e9c92909116908590600401614331565b602060405180830381600087803b158015611eb657600080fd5b505af1925050508015611ee6575060408051601f3d908101601f19168201909252611ee391810190614215565b60015b611eef57611ef1565b505b336001600160a01b0316836001600160a01b03167f6e10247c3c094d220ee99436c164b7f38d63b335a20ed817cbefaee4bb02d20e8484604051611f36929190614331565b60405180910390a3505050565b6017546001600160a01b03163314611f6e576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116611f955760405163d92e233d60e01b815260040160405180910390fd5b601d80546001600160a01b0319166001600160a01b0383161790556040517f71973fd672e51deb8f739b1f7e1eab991936645acd6f83e2bde6eeeaff5490b090610f9c9083906142c1565b6001600160a01b0381166000908152600d6020526040902060609061200490613789565b6001600160401b0381111561201b5761201b6145a6565b604051908082528060200260200182016040528015612044578160200160208202803683370190505b50905060005b6001600160a01b0383166000908152600d6020526040902061206b90613789565b811015611dee576001600160a01b0383166000908152600d602052604090206120949082613793565b8282815181106120a6576120a6614590565b6001600160a01b0390921660209283029190910190910152806120c8816144f8565b91505061204a565b6060610bdc60156132fe565b6000806120e883611cbe565b6022546001600160a01b0385166000908152602960205260409020549192509061211290426144b5565b1015610ce1576000811161213e576001600160a01b0383166000908152600a6020526040902054612178565b6001600160a01b0383166000908152600b6020908152604080832054600a9092529091205461216e908390614446565b6121789190614432565b9150611dee565b6017546001600160a01b031633146121aa576040516354348f0360e01b815260040160405180910390fd5b60208181556040518281527fc8d443472c9783cc36f8f5f5091f08ce9f37fc2f9e6d79cf1d9aaf40a433fee29101610f9c565b6060610bdc60036132fe565b6017546001600160a01b03163314612214576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff161561224e5760405163274e25dd60e11b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090819020805460ff19166001179055517f8addc69f897ecca0e41d70ed4ff9d75a9148a615a0fbda8597e53aea2684302f90610f9c9083906142c1565b6001600160a01b0383811660009081526001602052604090205484911633146122dd57604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b0382166123045760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038085166000908152601360209081526040808320938716835292905220546123475760405163184c088160e21b815260040160405180910390fd5b6001600160a01b03808516600090815260126020908152604080832093871683529290522054421161238c576040516327cfdcb760e01b815260040160405180910390fd5b6001600160a01b03841660009081526007602052604090205460ff16156123c6576040516362e6201d60e01b815260040160405180910390fd5b6001600160a01b0380851660008181526013602090815260408083209488168084529482528083208054908490559383526012825280832085845290915281205590612413908483613755565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffdb7893bf11f50c621e59cc7f1cf540e94295cb27ca869ec7ed7618ca79288628460405161246291815260200190565b60405180910390a45050505050565b6017546001600160a01b0316331461249c576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff166124d5576040516336fe17e760e21b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090819020805460ff19169055517f3ed8cbce8cab40e59282f1743e2b607effa08b5cbe0111bb4721134f2f80d02590610f9c9083906142c1565b6017546001600160a01b03163314612550576040516354348f0360e01b815260040160405180910390fd5b601880546001600160a01b0319166001600160a01b0383161790556040517fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f90610f9c9083906142c1565b6017546001600160a01b031633146125c6576040516354348f0360e01b815260040160405180910390fd5b60238190556040518181527fbdcfd7b8482f31cff6a87c362d9e2e3887f4cdc2018c7c485d8e78a7b2fadb6990602001610f9c565b6017546001600160a01b03163314612626576040516354348f0360e01b815260040160405180910390fd5b612631602682613671565b61264e5760405163f25e6b9f60e01b815260040160405180910390fd5b806001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561268757600080fd5b505afa15801561269b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bf91906140b4565b6001600160a01b038281166000908152600e60205260409081902080546001600160a01b0319169383169384179055601d54905163696a437b60e01b815291169163696a437b9161271391906004016142c1565b60206040518083038186803b15801561272b57600080fd5b505afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127639190614215565b6001600160a01b0382166000908152600f60205260409020805460ff191691151591909117905561279381610fa7565b6001600160a01b0382166000908152602b60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b161791909117815591810151600190920191909155517fabfa8db4d238fa78bf4e15fcc91328dd35f3978f200e2857a56bb719732b7b0b90610f9c9083906142c1565b6017546001600160a01b0316331461284b576040516354348f0360e01b815260040160405180910390fd5b601f8190556040518181527fd319ef78d2b690bb773fcccc2d096306bac7c9222dd0bb6b300f461e4a376b4390602001610f9c565b6001600160a01b0382166000908152600d602052604090206128a29082613671565b505050565b6017546001600160a01b031633146128d2576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166128f95760405163d92e233d60e01b815260040160405180910390fd5b601c80546001600160a01b0319166001600160a01b0383161790556040517feb931b4b5a98d20a6b1e6693a7c59d8e337a06e2f1473bb776e19251db7ae25090610f9c9083906142c1565b6017546001600160a01b0316331461296f576040516354348f0360e01b815260040160405180910390fd5b6201518081101561299357604051633f384aad60e21b815260040160405180910390fd5b60228190556040518181527f54aafa56429e22230b52f1495588ffc632277d74f3a85ec755e13ac50c1584d990602001610f9c565b600260005414156129eb5760405162461bcd60e51b815260040161142b906143ca565b600260009081556001600160a01b03858116825260016020526040909120548591163314612a2c57604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03808616600090815260256020908152604080832093881683529290522054612a5e90603c9061441a565b4211612a7d57604051631e0b407560e01b815260040160405180910390fd5b6001600160a01b03808616600090815260096020908152604080832093881683529290522054831115612ac35760405163024ae82d60e61b815260040160405180910390fd5b6001600160a01b03851660009081526007602052604090205460ff1615612afd5760405163ad2fdf3b60e01b815260040160405180910390fd5b6001600160a01b03808616600090815260096020908152604080832093881683529290529081208054859290612b349084906144b5565b90915550612b4e90506001600160a01b0385168385613755565b6001600160a01b03808616600090815260096020908152604080832093881683529290522054612b9c576001600160a01b0385166000908152600c60205260409020612b9a9085613774565b505b816001600160a01b0316846001600160a01b0316866001600160a01b03167f53e982dd9ec088d634c74c98fbbc161f808b4b6469a26c657120b9a31cb34bfe86604051612beb91815260200190565b60405180910390a450506001600055505050565b611404602682613774565b6001600160a01b0382166000908152600c602052604090206128a29082613671565b6001600160a01b0381166000908152600c60205260409020606090612c5090613789565b6001600160401b03811115612c6757612c676145a6565b604051908082528060200260200182016040528015612c90578160200160208202803683370190505b50905060005b6001600160a01b0383166000908152600c60205260409020612cb790613789565b811015611dee576001600160a01b0383166000908152600c60205260409020612ce09082613793565b828281518110612cf257612cf2614590565b6001600160a01b039092166020928302919091019091015280612d14816144f8565b915050612c96565b6017546001600160a01b03163314612d47576040516354348f0360e01b815260040160405180910390fd5b60218190556040518181527f24d51b415694a791b1c77df7817c075ac82b83ce611bcd8627d2e66cf37aa3e790602001610f9c565b6017546001600160a01b03163314612da7576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116612dce5760405163d92e233d60e01b815260040160405180910390fd5b601b80546001600160a01b0319166001600160a01b0383161790556040517f1d1a3e7caf0717056e48dc8aefa54d806c7af86324fece4e5d49f8e1f01f84bf90610f9c9083906142c1565b6017546001600160a01b03163314612e44576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff16612e7d57604051633ca0d42760e11b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090819020805460ff19169055517f5e8bd21d0a98cb2caf33706e56139ff40ffbdca7ec5d9d412a0a2292496dc70e90610f9c9083906142c1565b3360009081526019602052604090205460ff16612efd57604051637e57b1e160e01b815260040160405180910390fd5b6001600160a01b03831660009081526007602052604090205460ff16612f36576040516310cec38560e21b815260040160405180910390fd5b6001600160a01b0383166000908152600c60205260409020612f589083613312565b612f7557604051632eda7a1160e01b815260040160405180910390fd5b6001600160a01b03808416600090815260096020908152604080832093861683529290522054811115612fba5760405162919bed60e01b815260040160405180910390fd5b60175460405163a9059cbb60e01b81526001600160a01b038481169263a9059cbb92612fee92909116908590600401614331565b602060405180830381600087803b15801561300857600080fd5b505af1925050508015613038575060408051601f3d908101601f1916820190925261303591810190614215565b60015b61304157613043565b505b6001600160a01b0380841660009081526009602090815260408083209386168352929052908120805483929061307a9084906144b5565b90915550506001600160a01b038084166000908152600960209081526040808320938616835292905220546130cd576001600160a01b0383166000908152600c602052604090206130cb9083613774565b505b336001600160a01b0316836001600160a01b03167f20262b97130b5cb8f80624eed2733df2b05db4a0789b4a3d0157e1d3183331048484604051611f36929190614331565b336000908152601a602052604090205460ff1661314257604051630942721960e31b815260040160405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff161561317c576040516304ee891b60e11b815260040160405180910390fd5b6001600160a01b038116600081815260076020526040808220805460ff19166001179055513392917f070125a1c0f5202217aae14ec399abfaaa13c2fd98a91d43bd3a897dd4751e8091a350565b6017546001600160a01b031633146131f5576040516354348f0360e01b815260040160405180910390fd5b613200601583613312565b61321d57604051636211d34960e01b815260040160405180910390fd5b61322682613686565b6001600160a01b0382166000908152600a60205260408120805483929061324e90849061441a565b90915550506001600160a01b038216600081815260296020908152604080832054600a909252918290205491517f5abcf5031fdbd3badb9d1e09094208de329aee72730e87650f346584205d23d1926132ae928252602082015260400190565b60405180910390a25050565b6000602254826132ca9190614513565b610ce190836144b5565b6000602254831015611dee576022546132ed8385614446565b6132f79190614432565b9050610ce1565b6060600061330b8361379f565b9392505050565b6001600160a01b0381166000908152600183016020526040812054151561330b565b6000610ce1826022546023546137fb565b600260005414156133685760405162461bcd60e51b815260040161142b906143ca565b600260009081556001600160a01b0384168152600d6020526040902061338e9083613312565b6133aa576040516241cfa560e21b815260040160405180910390fd5b6001600160a01b038084166000908152602860209081526040808320938616835292905220548111156133f05760405163435b562560e01b815260040160405180910390fd5b6133f9836138a9565b6000613408610cd18385613553565b6001600160a01b0385166000908152600b6020526040902054909150156134be576001600160a01b0384166000908152600b6020908152604080832054600a90925290912054613459908390614446565b6134639190614432565b6001600160a01b0385166000908152600a60205260408120805490919061348b9084906144b5565b90915550506001600160a01b0384166000908152600b6020526040812080548392906134b89084906144b5565b90915550505b6001600160a01b038085166000908152602860209081526040808320938716835292905290812080548492906134f59084906144b5565b90915550506001600160a01b03808516600090815260286020908152604080832093871683529290522054613548576001600160a01b0384166000908152600d602052604090206135469084613774565b505b505060016000555050565b6001600160a01b0381166000908152602b602052604081206001015415610ce1576001600160a01b0382166000908152600f602052604081205460ff166135c5576001600160a01b0383166000908152602b60205260409020546135c090600160381b900460060b614527565b6135e9565b6001600160a01b0383166000908152602b6020526040902054600160381b900460060b5b601d5460225460405163a0d2710760e01b81529293506001600160a01b039091169163a0d27107916136219188918691600401614401565b60206040518083038186803b15801561363957600080fd5b505afa15801561364d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc8919061428c565b600061330b836001600160a01b0384166138ce565b61368f8161391d565b5061369981613af3565b6001600160a01b0381166000908152600a6020908152604080832054600b909252909120546136c89190613b81565b6001600160a01b039091166000908152600a6020526040902055565b6040516001600160a01b038085166024830152831660448201526064810182905261374f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613b97565b50505050565b6128a28363a9059cbb60e01b8484604051602401613718929190614331565b600061330b836001600160a01b038416613c69565b6000610ce1825490565b600061330b8383613d5c565b6060816000018054806020026020016040519081016040528092919081815260200182805480156137ef57602002820191906000526020600020905b8154815260200190600101908083116137db575b50505050509050919050565b600080806000198587098587029250828110838203039150508060001415613835576000841161382a57600080fd5b50829004905061330b565b80841161384157600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b6138b281613d86565b6001600160a01b039091166000908152600b6020526040902055565b600081815260018301602052604081205461391557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610ce1565b506000610ce1565b6000613928426132ba565b6001600160a01b03831660009081526029602052604090205410156113685761395860225442610aec91906144b5565b6001600160a01b038316600090815260296020526040902054116139ce5761397f826138a9565b6001600160a01b0382166000908152600b6020908152604080832054600a909252909120556139ad426132ba565b6001600160a01b038316600090815260296020526040902055506001919050565b6022546001600160a01b0383166000908152602960205260409020546139f490426144b5565b10613a5057613a02826138a9565b6001600160a01b0382166000908152600b6020908152604080832054600a83528184205560225460299092528220805491929091613a4190849061441a565b90915550600191506113689050565b613a59426132ba565b6001600160a01b0383166000908152602a60205260409020541015611368576001600160a01b0382166000908152600b6020526040902054613a9a836138a9565b6001600160a01b0383166000908152600b6020908152604080832054600a909252909120548291613aca91614446565b613ad49190614432565b6001600160a01b0384166000908152600a602052604090205550919050565b6001600160a01b038116600090815260296020526040902054613b3890613b1a90426144b5565b6001600160a01b0383166000908152600b60205260409020546132d4565b6001600160a01b0382166000908152600a602052604081208054909190613b6090849061441a565b90915550506001600160a01b03166000908152602960205260409020429055565b6000818310613b90578161330b565b5090919050565b6000613bec826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613f6a9092919063ffffffff16565b8051909150156128a25780806020019051810190613c0a9190614215565b6128a25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161142b565b60008181526001830160205260408120548015613d52576000613c8d6001836144b5565b8554909150600090613ca1906001906144b5565b9050818114613d06576000866000018281548110613cc157613cc1614590565b9060005260206000200154905080876000018481548110613ce457613ce4614590565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613d1757613d1761457a565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610ce1565b6000915050610ce1565b6000826000018281548110613d7357613d73614590565b9060005260206000200154905092915050565b6000613d91426132ba565b601e546001600160a01b03166000908152602b602052604090206001015414613e2857601e54613dc9906001600160a01b0316610fa7565b601e546001600160a01b03166000908152602b60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b1617919091178155910151600191909101555b60005b6001600160a01b0383166000908152600d60205260409020613e4c90613789565b811015611dee576001600160a01b0383166000908152600d60205260408120613e759083613793565b9050613e82602682613312565b15613f5757613e90426132ba565b6001600160a01b0382166000908152602b602052604090206001015414613f1657613eba81610fa7565b6001600160a01b0382166000908152602b60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b16179190911781559101516001909101555b6001600160a01b03808516600090815260286020908152604080832093851683529290522054613f4a90610cd19083613553565b613f54908461441a565b92505b5080613f62816144f8565b915050613e2b565b6060610bc8848460008585843b613fc35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161142b565b600080866001600160a01b03168587604051613fdf91906142a5565b60006040518083038185875af1925050503d806000811461401c576040519150601f19603f3d011682016040523d82523d6000602084013e614021565b606091505b509150915061403182828661403c565b979650505050505050565b6060831561404b57508161330b565b82511561405b5782518084602001fd5b8160405162461bcd60e51b815260040161142b9190614397565b8051801515811461136857600080fd5b8051600681900b811461136857600080fd5b6000602082840312156140a957600080fd5b813561330b816145bc565b6000602082840312156140c657600080fd5b815161330b816145bc565b600080604083850312156140e457600080fd5b82356140ef816145bc565b915060208301356140ff816145bc565b809150509250929050565b60008060006060848603121561411f57600080fd5b833561412a816145bc565b9250602084013561413a816145bc565b9150604084013561414a816145bc565b809150509250925092565b60008060006060848603121561416a57600080fd5b8335614175816145bc565b92506020840135614185816145bc565b929592945050506040919091013590565b600080600080608085870312156141ac57600080fd5b84356141b7816145bc565b935060208501356141c7816145bc565b92506040850135915060608501356141de816145bc565b939692955090935050565b600080604083850312156141fc57600080fd5b8235614207816145bc565b946020939093013593505050565b60006020828403121561422757600080fd5b61330b82614075565b60008060006060848603121561424557600080fd5b61424e84614085565b925061425c60208501614085565b915061426a60408501614075565b90509250925092565b60006020828403121561428557600080fd5b5035919050565b60006020828403121561429e57600080fd5b5051919050565b600082516142b78184602087016144cc565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b038316815260406020808301829052835191830182905260009184820191906060850190845b8181101561432457845163ffffffff1683529383019391830191600101614302565b5090979650505050505050565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561438b5783516001600160a01b031683529284019291840191600101614366565b50909695505050505050565b60208152600082518060208401526143b68160408501602087016144cc565b601f01601f19169190910160400192915050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b92835260069190910b6020830152604082015260600190565b6000821982111561442d5761442d61454e565b500190565b60008261444157614441614564565b500490565b60008160001904831182151516156144605761446061454e565b500290565b60008160060b8360060b6000811281667fffffffffffff19018312811516156144905761449061454e565b81667fffffffffffff0183138116156144ab576144ab61454e565b5090039392505050565b6000828210156144c7576144c761454e565b500390565b60005b838110156144e75781810151838201526020016144cf565b8381111561374f5750506000910152565b600060001982141561450c5761450c61454e565b5060010190565b60008261452257614522614564565b500690565b60008160060b667fffffffffffff198114156145455761454561454e565b60000392915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146145d157600080fd5b5056fea2646970667358221220911d3e94d8d4f6238b4bb85c1d0e467849df8b763d2c4a650bf62ec1b71c1c6064736f6c63430008070033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103945760003560e01c80638fe204dd116101e1578063cb54694d1161010b578063cb54694d1461092d578063cd22af1b14610940578063d55995fe1461096b578063ddca3f431461097e578063de55351d14610987578063deaf81d4146109b0578063e01f857c146109c3578063e326ac43146109d6578063e89aad28146109f6578063ebbb619414610a09578063ec00cdfc14610a1c578063f0f346b914610a2f578063f11a1d1a14610a42578063f136a09d14610a55578063f25e311b14610a75578063f39c38a014610a88578063f75f9f7b14610a9b578063fc253d2b14610aae578063fe75bc4614610ab757600080fd5b80638fe204dd14610766578063951dc22c1461077957806398e90a0f146107815780639d5c33d8146107aa578063a2145809146107bd578063a39744b5146107d0578063a676f9ff146107fb578063a7d2e7841461081b578063aac6aa9c14610824578063ab033ea914610837578063b0103b1a1461084a578063b23922331461086d578063b440027f14610880578063b600702a146108ab578063b7e77340146108be578063b87fcbff146108d1578063c7ae40d0146108f4578063cacdf93d14610907578063cb4be2bb1461091a57600080fd5b8063594a3a93116102c2578063594a3a93146105e857806359a2255e146105fb5780635aa6e6751461060e5780635ebe23f014610621578063633fb68f1461062a57806364bb43ee1461063357806368a9f19c14610646578063694798e61461065957806369fe0e2d146106845780636cf262bc146106975780636e2a9ca6146106aa57806372da828a146106bd57806375a9f7ff146106d0578063768b5d90146106e35780637b40c913146106ec5780637c8fce23146106ff578063878c723e146107075780638bb6dfa8146107305780638cb22b761461074357600080fd5b8063034d4c611461039957806307b435c2146103bf5780630c620bce146103ea5780630d6a1f87146103ff5780630dc60206146104125780631101eb411461043b57806315006b8214610450578063160e1e311461047b578063165e62e71461048e578063168f92e7146104cb5780631b44555e146104f65780631ef94b911461051657806321040b0114610536578063238efcbc14610561578063274a8db414610569578063280b656c1461059c57806352a4de29146105af57806355ea6c47146105c2578063575288bf146105d5575b600080fd5b6103ac6103a7366004614097565b610aca565b6040519081526020015b60405180910390f35b6103ac6103cd3660046140d1565b601260209081526000928352604080842090915290825290205481565b6103f2610bd0565b6040516103b6919061434a565b6103ac61040d3660046141e9565b610be1565b6103ac610420366004614097565b6001600160a01b03166000908152600b602052604090205490565b61044e610449366004614155565b610ce7565b005b6103ac61045e3660046140d1565b601060209081526000928352604080842090915290825290205481565b61044e610489366004614097565b610e41565b6104a161049c366004614097565b610fa7565b604080518251600690810b825260208085015190910b9082015291810151908201526060016103b6565b6103ac6104d93660046140d1565b600960209081526000928352604080842090915290825290205481565b6103ac610504366004614097565b60056020526000908152604090205481565b601b54610529906001600160a01b031681565b6040516103b691906142c1565b6103ac6105443660046140d1565b601360209081526000928352604080842090915290825290205481565b61044e61136d565b61058c610577366004614097565b601a6020526000908152604090205460ff1681565b60405190151581526020016103b6565b61044e6105aa366004614097565b6113f9565b61044e6105bd366004614155565b611408565b61044e6105d0366004614097565b611656565b61044e6105e3366004614155565b61170a565b61044e6105f63660046140d1565b6119cd565b61044e610609366004614097565b611a72565b601754610529906001600160a01b031681565b6103ac601f5481565b6103ac60215481565b61044e610641366004614097565b611b24565b61044e610654366004614097565b611ba6565b6103ac6106673660046140d1565b602860209081526000928352604080842090915290825290205481565b61044e610692366004614273565b611c5e565b6103ac6106a5366004614097565b611cbe565b61044e6106b8366004614155565b611df4565b61044e6106cb366004614097565b611f43565b6103f26106de366004614097565b611fe0565b6103ac60225481565b601e54610529906001600160a01b031681565b6103f26120d0565b610529610715366004614097565b6001602052600090815260409020546001600160a01b031681565b6103ac61073e366004614097565b6120dc565b61058c610751366004614097565b60146020526000908152604090205460ff1681565b61044e610774366004614273565b61217f565b6103f26121dd565b61052961078f366004614097565b6002602052600090815260409020546001600160a01b031681565b61044e6107b8366004614097565b6121e9565b61044e6107cb36600461410a565b6122a1565b6103ac6107de3660046140d1565b600860209081526000928352604080842090915290825290205481565b6103ac610809366004614097565b60296020526000908152604090205481565b6103ac60205481565b61044e610832366004614097565b612471565b61044e610845366004614097565b612525565b61058c610858366004614097565b60076020526000908152604090205460ff1681565b61044e61087b366004614273565b61259b565b6103ac61088e3660046140d1565b602560209081526000928352604080842090915290825290205481565b61044e6108b9366004614097565b6125fb565b61044e6108cc366004614273565b612820565b61058c6108df366004614097565b60196020526000908152604090205460ff1681565b601c54610529906001600160a01b031681565b61044e6109153660046140d1565b612880565b61044e610928366004614097565b6128a7565b61044e61093b366004614273565b612944565b6103ac61094e3660046140d1565b601160209081526000928352604080842090915290825290205481565b61044e610979366004614196565b6129c8565b6103ac60245481565b6103ac610995366004614097565b6001600160a01b03166000908152600a602052604090205490565b61044e6109be366004614097565b612bff565b61044e6109d13660046140d1565b612c0a565b6103ac6109e4366004614097565b60066020526000908152604090205481565b6103f2610a04366004614097565b612c2c565b61044e610a17366004614273565b612d1c565b61044e610a2a366004614097565b612d7c565b61044e610a3d366004614097565b612e19565b601d54610529906001600160a01b031681565b6103ac610a63366004614097565b602a6020526000908152604090205481565b61044e610a83366004614155565b612ecd565b601854610529906001600160a01b031681565b61044e610aa9366004614097565b613112565b6103ac60235481565b61044e610ac53660046141e9565b6131ca565b600080610ad683611cbe565b6022549091504290610af190610aec90836144b5565b6132ba565b6001600160a01b0385166000908152602960205260409020541115610b95576022546001600160a01b038516600090815260296020526040902054610b3690426144b5565b10610b72576022546001600160a01b038516600090815260296020526040902054610b61919061441a565b610b6b90826144b5565b9050610bab565b6001600160a01b038416600090815260296020526040902054610b6b90826144b5565b610b9e426132ba565b610ba890826144b5565b90505b610bb581836132d4565b610bbe856120dc565b610bc8919061441a565b949350505050565b6060610bdc60266132fe565b905090565b6000610bee602684613312565b15610ce1576000610bfe84610fa7565b90508060400151600014610cdf576001600160a01b0384166000908152600f602052604081205460ff16610c3f578160200151610c3a90614527565b610c45565b81602001515b601d5460225460405163a0d2710760e01b8152929350610cd6926001600160a01b039092169163a0d2710791610c819189918791600401614401565b60206040518083038186803b158015610c9957600080fd5b505afa158015610cad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd1919061428c565b613334565b92505050610ce1565b505b92915050565b6001600160a01b038381166000908152600160205260409020548491163314610d2357604051636efb4f4160e11b815260040160405180910390fd5b602054610d30904261441a565b6001600160a01b03808616600081815260126020908152604080832094891680845294825280832095909555918152601382528381209281529190529081208054849290610d7f90849061441a565b90915550610d909050848484613345565b6001600160a01b038085166000908152602860209081526040808320938716835292905220548015801590610dcf5750602154610dcd8286613553565b105b15610ded57604051636f447fcd60e11b815260040160405180910390fd5b836001600160a01b0316856001600160a01b03167f9aaab310d247ad45aef26bbdefc4ebf20c728fdb84c92b95b2b05d21826940de85604051610e3291815260200190565b60405180910390a35050505050565b6017546001600160a01b03163314610e6c576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116610e935760405163d92e233d60e01b815260040160405180910390fd5b601e80546001600160a01b038084166001600160a01b031992831681179093556000838152600e6020526040908190208054909316909317909155601d54915163696a437b60e01b815291169063696a437b90610ef49084906004016142c1565b60206040518083038186803b158015610f0c57600080fd5b505afa158015610f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f449190614215565b6001600160a01b0382166000908152600f602052604090819020805460ff191692151592909217909155517f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa90610f9c9083906142c1565b60405180910390a150565b6040805160608101825260008082526020820181905291810191909152610fcd426132ba565b6001600160a01b0383166000908152602b6020526040902060010154141561104357506001600160a01b03166000908152602b602090815260409182902082516060810184528154600681810b810b810b8352600160381b909104810b810b900b92810192909252600101549181019190915290565b60008061105760225442610aec91906144b5565b6001600160a01b0385166000908152602b60205260409020600101549091508114156111bb57604080516001808252818301909252600091602080830190803683375050506001600160a01b0386166000908152602b602052604090205490915060060b6110c4426132ba565b6110ce90426144b5565b826000815181106110e1576110e1614590565b63ffffffff909216602092830291909101820152601d546001600160a01b038881166000908152600e90935260409283902054925163dc686d9160e01b81529181169263dc686d919261113d92919091169086906004016142d5565b60606040518083038186803b15801561115557600080fd5b505afa158015611169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d9190614230565b600692830b90920b8088529195506111a791839150614465565b600690810b900b6020860152506113449050565b6001600160a01b0384166000908152602b602052604090206001015481111561134457604080516002808252606082018352600092602083019080368337019050509050611208426132ba565b61121290426144b5565b8160008151811061122557611225614590565b602002602001019063ffffffff16908163ffffffff168152505060225461124b426132ba565b61125590426144b5565b61125f919061441a565b8160018151811061127257611272614590565b63ffffffff909216602092830291909101820152601d546001600160a01b038781166000908152600e909352604080842054905163dc686d9160e01b81529282169263dc686d91926112ca92169086906004016142d5565b60606040518083038186803b1580156112e257600080fd5b505afa1580156112f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131a9190614230565b600692830b90920b8088529195509150611335908290614465565b600690810b900b602086015250505b811561135d57611353426132ba565b6040840152611365565b600060408401525b50505b919050565b6018546001600160a01b0316331461139857604051637ef5703160e11b815260040160405180910390fd5b60188054601780546001600160a01b0383166001600160a01b031991821681179092559091169091556040517fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b6916113ef916142c1565b60405180910390a1565b611404602682613671565b5050565b600260005414156114345760405162461bcd60e51b815260040161142b906143ca565b60405180910390fd5b6002600055611444602683613312565b6114615760405163e0b6aead60e01b815260040160405180910390fd5b61146c601584613312565b61148957604051636211d34960e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602052604090206114ab9083613671565b506114b583613686565b6021546001600160a01b038085166000908152602860209081526040808320938716835292905220546114f3906114ed90849061441a565b84613553565b101561151257604051636f447fcd60e11b815260040160405180910390fd5b6001600160a01b038316600081815260296020908152604080832054600a835281842054600b845293829020548251918252928101939093528201527fee3f0daba9837d1ab0597acf34328550e4832d02e24e467825e7c2dd318c38209060600160405180910390a26115906001600160a01b0383163330846136e4565b6001600160a01b038084166000908152602860209081526040808320938616835292905290812080548392906115c790849061441a565b909155506115da9050610cd18284613553565b6001600160a01b0384166000908152600b60205260408120805490919061160290849061441a565b909155505060405181815233906001600160a01b0384811691908616907f4e186bc75a2220191b826baff3ee63c3e970e94e58a9007ff94c9a7b8e6ebb3f9060200160405180910390a45050600160005550565b336000908152601a602052604090205460ff1661168657604051630942721960e31b815260040160405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff166116bf576040516310cec38560e21b815260040160405180910390fd5b6001600160a01b038116600081815260076020526040808220805460ff19169055513392917fe02b2375d8fb4aef3e5bc5d53bffcf70b6f185c5c93e69dcbe8b6cfc58e837e291a350565b6002600054141561172d5760405162461bcd60e51b815260040161142b906143ca565b600260005561173d601584613312565b61175a57604051636211d34960e01b815260040160405180910390fd5b601b546001600160a01b03838116911614156117885760405162822d9760e71b815260040160405180910390fd5b6040516370a0823160e01b81526000906001600160a01b038416906370a08231906117b79030906004016142c1565b60206040518083038186803b1580156117cf57600080fd5b505afa1580156117e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611807919061428c565b905061181e6001600160a01b0384163330856136e4565b600081846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161184d91906142c1565b60206040518083038186803b15801561186557600080fd5b505afa158015611879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189d919061428c565b6118a791906144b5565b90506000612710602454836118bc9190614446565b6118c69190614432565b90506118d281836144b5565b6001600160a01b038088166000908152600960209081526040808320938a168352929052908120805490919061190990849061441a565b90915550506001600160a01b0380871660009081526025602090815260408083208985168085529252909120429055601754611946921683613755565b6001600160a01b0386166000908152600c602052604090206119689086613671565b50336001600160a01b0316856001600160a01b0316876001600160a01b03167fec1a37d4a331a5059081e0fb5da1735e7890900cd215a4fb1e9f2779fd7b83eb856040516119b891815260200190565b60405180910390a45050600160005550505050565b6001600160a01b038281166000908152600160205260409020548391163314611a0957604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03838116600081815260026020908152604080832080546001600160a01b031916888716908117909155600190925280832054905191941692917fa8bad3f0b781e1d954af9945167d5f80bfe5e57930f17c93843187c77557a6b891a4505050565b6001600160a01b038181166000908152600260205260409020548291163314611aae5760405163cfe9663360e01b815260040160405180910390fd5b6001600160a01b03828116600081815260016020908152604080832080546002909352818420805487166001600160a01b031980861691909117909255805490911690555193169283929133917fcf30c54296d5eee76168b564c59c50578d49c271733a470f32707c8cfbc88a8b9190a4505050565b6017546001600160a01b03163314611b4f576040516354348f0360e01b815260040160405180910390fd5b611b5a602682613774565b611b7757604051630a8d08b160e01b815260040160405180910390fd5b7f51199d699bdfd516fa88dd0d2f8487c40c147b4867acaa23adc8d4df6b098e5681604051610f9c91906142c1565b6017546001600160a01b03163314611bd1576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff1615611c0b5760405163546da66560e11b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090819020805460ff19166001179055517f049ccb28ab796d3225573a065712f6e7754487ced56056cda8889c337511807b90610f9c9083906142c1565b6017546001600160a01b03163314611c89576040516354348f0360e01b815260040160405180910390fd5b60248190556040518181527f4c10ca068ff7002cf5da78f2f697d1e91f6f0ac27f7344b28e8ef25263f87e5d90602001610f9c565b6000805b6001600160a01b0383166000908152600d60205260409020611ce390613789565b811015611dee576001600160a01b0383166000908152600d60205260408120611d0c9083613793565b9050611d19602682613312565b15611ddb576000611d2982610fa7565b90508060400151600014611dd9576001600160a01b0382166000908152600f602052604081205460ff16611d6a578160200151611d6590614527565b611d70565b81602001515b601d546001600160a01b03888116600090815260286020908152604080832089851684529091529081902054602254915163a0d2710760e01b8152949550611dcb94929093169263a0d2710792610c81928791600401614401565b611dd5908661441a565b9450505b505b5080611de6816144f8565b915050611cc2565b50919050565b3360009081526019602052604090205460ff16611e2457604051637e57b1e160e01b815260040160405180910390fd5b6001600160a01b03831660009081526007602052604090205460ff16611e5d576040516310cec38560e21b815260040160405180910390fd5b611e68838383613345565b60175460405163a9059cbb60e01b81526001600160a01b038481169263a9059cbb92611e9c92909116908590600401614331565b602060405180830381600087803b158015611eb657600080fd5b505af1925050508015611ee6575060408051601f3d908101601f19168201909252611ee391810190614215565b60015b611eef57611ef1565b505b336001600160a01b0316836001600160a01b03167f6e10247c3c094d220ee99436c164b7f38d63b335a20ed817cbefaee4bb02d20e8484604051611f36929190614331565b60405180910390a3505050565b6017546001600160a01b03163314611f6e576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116611f955760405163d92e233d60e01b815260040160405180910390fd5b601d80546001600160a01b0319166001600160a01b0383161790556040517f71973fd672e51deb8f739b1f7e1eab991936645acd6f83e2bde6eeeaff5490b090610f9c9083906142c1565b6001600160a01b0381166000908152600d6020526040902060609061200490613789565b6001600160401b0381111561201b5761201b6145a6565b604051908082528060200260200182016040528015612044578160200160208202803683370190505b50905060005b6001600160a01b0383166000908152600d6020526040902061206b90613789565b811015611dee576001600160a01b0383166000908152600d602052604090206120949082613793565b8282815181106120a6576120a6614590565b6001600160a01b0390921660209283029190910190910152806120c8816144f8565b91505061204a565b6060610bdc60156132fe565b6000806120e883611cbe565b6022546001600160a01b0385166000908152602960205260409020549192509061211290426144b5565b1015610ce1576000811161213e576001600160a01b0383166000908152600a6020526040902054612178565b6001600160a01b0383166000908152600b6020908152604080832054600a9092529091205461216e908390614446565b6121789190614432565b9150611dee565b6017546001600160a01b031633146121aa576040516354348f0360e01b815260040160405180910390fd5b60208181556040518281527fc8d443472c9783cc36f8f5f5091f08ce9f37fc2f9e6d79cf1d9aaf40a433fee29101610f9c565b6060610bdc60036132fe565b6017546001600160a01b03163314612214576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff161561224e5760405163274e25dd60e11b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090819020805460ff19166001179055517f8addc69f897ecca0e41d70ed4ff9d75a9148a615a0fbda8597e53aea2684302f90610f9c9083906142c1565b6001600160a01b0383811660009081526001602052604090205484911633146122dd57604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b0382166123045760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038085166000908152601360209081526040808320938716835292905220546123475760405163184c088160e21b815260040160405180910390fd5b6001600160a01b03808516600090815260126020908152604080832093871683529290522054421161238c576040516327cfdcb760e01b815260040160405180910390fd5b6001600160a01b03841660009081526007602052604090205460ff16156123c6576040516362e6201d60e01b815260040160405180910390fd5b6001600160a01b0380851660008181526013602090815260408083209488168084529482528083208054908490559383526012825280832085845290915281205590612413908483613755565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffdb7893bf11f50c621e59cc7f1cf540e94295cb27ca869ec7ed7618ca79288628460405161246291815260200190565b60405180910390a45050505050565b6017546001600160a01b0316331461249c576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff166124d5576040516336fe17e760e21b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090819020805460ff19169055517f3ed8cbce8cab40e59282f1743e2b607effa08b5cbe0111bb4721134f2f80d02590610f9c9083906142c1565b6017546001600160a01b03163314612550576040516354348f0360e01b815260040160405180910390fd5b601880546001600160a01b0319166001600160a01b0383161790556040517fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f90610f9c9083906142c1565b6017546001600160a01b031633146125c6576040516354348f0360e01b815260040160405180910390fd5b60238190556040518181527fbdcfd7b8482f31cff6a87c362d9e2e3887f4cdc2018c7c485d8e78a7b2fadb6990602001610f9c565b6017546001600160a01b03163314612626576040516354348f0360e01b815260040160405180910390fd5b612631602682613671565b61264e5760405163f25e6b9f60e01b815260040160405180910390fd5b806001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561268757600080fd5b505afa15801561269b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bf91906140b4565b6001600160a01b038281166000908152600e60205260409081902080546001600160a01b0319169383169384179055601d54905163696a437b60e01b815291169163696a437b9161271391906004016142c1565b60206040518083038186803b15801561272b57600080fd5b505afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127639190614215565b6001600160a01b0382166000908152600f60205260409020805460ff191691151591909117905561279381610fa7565b6001600160a01b0382166000908152602b60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b161791909117815591810151600190920191909155517fabfa8db4d238fa78bf4e15fcc91328dd35f3978f200e2857a56bb719732b7b0b90610f9c9083906142c1565b6017546001600160a01b0316331461284b576040516354348f0360e01b815260040160405180910390fd5b601f8190556040518181527fd319ef78d2b690bb773fcccc2d096306bac7c9222dd0bb6b300f461e4a376b4390602001610f9c565b6001600160a01b0382166000908152600d602052604090206128a29082613671565b505050565b6017546001600160a01b031633146128d2576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166128f95760405163d92e233d60e01b815260040160405180910390fd5b601c80546001600160a01b0319166001600160a01b0383161790556040517feb931b4b5a98d20a6b1e6693a7c59d8e337a06e2f1473bb776e19251db7ae25090610f9c9083906142c1565b6017546001600160a01b0316331461296f576040516354348f0360e01b815260040160405180910390fd5b6201518081101561299357604051633f384aad60e21b815260040160405180910390fd5b60228190556040518181527f54aafa56429e22230b52f1495588ffc632277d74f3a85ec755e13ac50c1584d990602001610f9c565b600260005414156129eb5760405162461bcd60e51b815260040161142b906143ca565b600260009081556001600160a01b03858116825260016020526040909120548591163314612a2c57604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03808616600090815260256020908152604080832093881683529290522054612a5e90603c9061441a565b4211612a7d57604051631e0b407560e01b815260040160405180910390fd5b6001600160a01b03808616600090815260096020908152604080832093881683529290522054831115612ac35760405163024ae82d60e61b815260040160405180910390fd5b6001600160a01b03851660009081526007602052604090205460ff1615612afd5760405163ad2fdf3b60e01b815260040160405180910390fd5b6001600160a01b03808616600090815260096020908152604080832093881683529290529081208054859290612b349084906144b5565b90915550612b4e90506001600160a01b0385168385613755565b6001600160a01b03808616600090815260096020908152604080832093881683529290522054612b9c576001600160a01b0385166000908152600c60205260409020612b9a9085613774565b505b816001600160a01b0316846001600160a01b0316866001600160a01b03167f53e982dd9ec088d634c74c98fbbc161f808b4b6469a26c657120b9a31cb34bfe86604051612beb91815260200190565b60405180910390a450506001600055505050565b611404602682613774565b6001600160a01b0382166000908152600c602052604090206128a29082613671565b6001600160a01b0381166000908152600c60205260409020606090612c5090613789565b6001600160401b03811115612c6757612c676145a6565b604051908082528060200260200182016040528015612c90578160200160208202803683370190505b50905060005b6001600160a01b0383166000908152600c60205260409020612cb790613789565b811015611dee576001600160a01b0383166000908152600c60205260409020612ce09082613793565b828281518110612cf257612cf2614590565b6001600160a01b039092166020928302919091019091015280612d14816144f8565b915050612c96565b6017546001600160a01b03163314612d47576040516354348f0360e01b815260040160405180910390fd5b60218190556040518181527f24d51b415694a791b1c77df7817c075ac82b83ce611bcd8627d2e66cf37aa3e790602001610f9c565b6017546001600160a01b03163314612da7576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116612dce5760405163d92e233d60e01b815260040160405180910390fd5b601b80546001600160a01b0319166001600160a01b0383161790556040517f1d1a3e7caf0717056e48dc8aefa54d806c7af86324fece4e5d49f8e1f01f84bf90610f9c9083906142c1565b6017546001600160a01b03163314612e44576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff16612e7d57604051633ca0d42760e11b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090819020805460ff19169055517f5e8bd21d0a98cb2caf33706e56139ff40ffbdca7ec5d9d412a0a2292496dc70e90610f9c9083906142c1565b3360009081526019602052604090205460ff16612efd57604051637e57b1e160e01b815260040160405180910390fd5b6001600160a01b03831660009081526007602052604090205460ff16612f36576040516310cec38560e21b815260040160405180910390fd5b6001600160a01b0383166000908152600c60205260409020612f589083613312565b612f7557604051632eda7a1160e01b815260040160405180910390fd5b6001600160a01b03808416600090815260096020908152604080832093861683529290522054811115612fba5760405162919bed60e01b815260040160405180910390fd5b60175460405163a9059cbb60e01b81526001600160a01b038481169263a9059cbb92612fee92909116908590600401614331565b602060405180830381600087803b15801561300857600080fd5b505af1925050508015613038575060408051601f3d908101601f1916820190925261303591810190614215565b60015b61304157613043565b505b6001600160a01b0380841660009081526009602090815260408083209386168352929052908120805483929061307a9084906144b5565b90915550506001600160a01b038084166000908152600960209081526040808320938616835292905220546130cd576001600160a01b0383166000908152600c602052604090206130cb9083613774565b505b336001600160a01b0316836001600160a01b03167f20262b97130b5cb8f80624eed2733df2b05db4a0789b4a3d0157e1d3183331048484604051611f36929190614331565b336000908152601a602052604090205460ff1661314257604051630942721960e31b815260040160405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff161561317c576040516304ee891b60e11b815260040160405180910390fd5b6001600160a01b038116600081815260076020526040808220805460ff19166001179055513392917f070125a1c0f5202217aae14ec399abfaaa13c2fd98a91d43bd3a897dd4751e8091a350565b6017546001600160a01b031633146131f5576040516354348f0360e01b815260040160405180910390fd5b613200601583613312565b61321d57604051636211d34960e01b815260040160405180910390fd5b61322682613686565b6001600160a01b0382166000908152600a60205260408120805483929061324e90849061441a565b90915550506001600160a01b038216600081815260296020908152604080832054600a909252918290205491517f5abcf5031fdbd3badb9d1e09094208de329aee72730e87650f346584205d23d1926132ae928252602082015260400190565b60405180910390a25050565b6000602254826132ca9190614513565b610ce190836144b5565b6000602254831015611dee576022546132ed8385614446565b6132f79190614432565b9050610ce1565b6060600061330b8361379f565b9392505050565b6001600160a01b0381166000908152600183016020526040812054151561330b565b6000610ce1826022546023546137fb565b600260005414156133685760405162461bcd60e51b815260040161142b906143ca565b600260009081556001600160a01b0384168152600d6020526040902061338e9083613312565b6133aa576040516241cfa560e21b815260040160405180910390fd5b6001600160a01b038084166000908152602860209081526040808320938616835292905220548111156133f05760405163435b562560e01b815260040160405180910390fd5b6133f9836138a9565b6000613408610cd18385613553565b6001600160a01b0385166000908152600b6020526040902054909150156134be576001600160a01b0384166000908152600b6020908152604080832054600a90925290912054613459908390614446565b6134639190614432565b6001600160a01b0385166000908152600a60205260408120805490919061348b9084906144b5565b90915550506001600160a01b0384166000908152600b6020526040812080548392906134b89084906144b5565b90915550505b6001600160a01b038085166000908152602860209081526040808320938716835292905290812080548492906134f59084906144b5565b90915550506001600160a01b03808516600090815260286020908152604080832093871683529290522054613548576001600160a01b0384166000908152600d602052604090206135469084613774565b505b505060016000555050565b6001600160a01b0381166000908152602b602052604081206001015415610ce1576001600160a01b0382166000908152600f602052604081205460ff166135c5576001600160a01b0383166000908152602b60205260409020546135c090600160381b900460060b614527565b6135e9565b6001600160a01b0383166000908152602b6020526040902054600160381b900460060b5b601d5460225460405163a0d2710760e01b81529293506001600160a01b039091169163a0d27107916136219188918691600401614401565b60206040518083038186803b15801561363957600080fd5b505afa15801561364d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc8919061428c565b600061330b836001600160a01b0384166138ce565b61368f8161391d565b5061369981613af3565b6001600160a01b0381166000908152600a6020908152604080832054600b909252909120546136c89190613b81565b6001600160a01b039091166000908152600a6020526040902055565b6040516001600160a01b038085166024830152831660448201526064810182905261374f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613b97565b50505050565b6128a28363a9059cbb60e01b8484604051602401613718929190614331565b600061330b836001600160a01b038416613c69565b6000610ce1825490565b600061330b8383613d5c565b6060816000018054806020026020016040519081016040528092919081815260200182805480156137ef57602002820191906000526020600020905b8154815260200190600101908083116137db575b50505050509050919050565b600080806000198587098587029250828110838203039150508060001415613835576000841161382a57600080fd5b50829004905061330b565b80841161384157600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b6138b281613d86565b6001600160a01b039091166000908152600b6020526040902055565b600081815260018301602052604081205461391557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610ce1565b506000610ce1565b6000613928426132ba565b6001600160a01b03831660009081526029602052604090205410156113685761395860225442610aec91906144b5565b6001600160a01b038316600090815260296020526040902054116139ce5761397f826138a9565b6001600160a01b0382166000908152600b6020908152604080832054600a909252909120556139ad426132ba565b6001600160a01b038316600090815260296020526040902055506001919050565b6022546001600160a01b0383166000908152602960205260409020546139f490426144b5565b10613a5057613a02826138a9565b6001600160a01b0382166000908152600b6020908152604080832054600a83528184205560225460299092528220805491929091613a4190849061441a565b90915550600191506113689050565b613a59426132ba565b6001600160a01b0383166000908152602a60205260409020541015611368576001600160a01b0382166000908152600b6020526040902054613a9a836138a9565b6001600160a01b0383166000908152600b6020908152604080832054600a909252909120548291613aca91614446565b613ad49190614432565b6001600160a01b0384166000908152600a602052604090205550919050565b6001600160a01b038116600090815260296020526040902054613b3890613b1a90426144b5565b6001600160a01b0383166000908152600b60205260409020546132d4565b6001600160a01b0382166000908152600a602052604081208054909190613b6090849061441a565b90915550506001600160a01b03166000908152602960205260409020429055565b6000818310613b90578161330b565b5090919050565b6000613bec826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613f6a9092919063ffffffff16565b8051909150156128a25780806020019051810190613c0a9190614215565b6128a25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161142b565b60008181526001830160205260408120548015613d52576000613c8d6001836144b5565b8554909150600090613ca1906001906144b5565b9050818114613d06576000866000018281548110613cc157613cc1614590565b9060005260206000200154905080876000018481548110613ce457613ce4614590565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613d1757613d1761457a565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610ce1565b6000915050610ce1565b6000826000018281548110613d7357613d73614590565b9060005260206000200154905092915050565b6000613d91426132ba565b601e546001600160a01b03166000908152602b602052604090206001015414613e2857601e54613dc9906001600160a01b0316610fa7565b601e546001600160a01b03166000908152602b60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b1617919091178155910151600191909101555b60005b6001600160a01b0383166000908152600d60205260409020613e4c90613789565b811015611dee576001600160a01b0383166000908152600d60205260408120613e759083613793565b9050613e82602682613312565b15613f5757613e90426132ba565b6001600160a01b0382166000908152602b602052604090206001015414613f1657613eba81610fa7565b6001600160a01b0382166000908152602b60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b16179190911781559101516001909101555b6001600160a01b03808516600090815260286020908152604080832093851683529290522054613f4a90610cd19083613553565b613f54908461441a565b92505b5080613f62816144f8565b915050613e2b565b6060610bc8848460008585843b613fc35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161142b565b600080866001600160a01b03168587604051613fdf91906142a5565b60006040518083038185875af1925050503d806000811461401c576040519150601f19603f3d011682016040523d82523d6000602084013e614021565b606091505b509150915061403182828661403c565b979650505050505050565b6060831561404b57508161330b565b82511561405b5782518084602001fd5b8160405162461bcd60e51b815260040161142b9190614397565b8051801515811461136857600080fd5b8051600681900b811461136857600080fd5b6000602082840312156140a957600080fd5b813561330b816145bc565b6000602082840312156140c657600080fd5b815161330b816145bc565b600080604083850312156140e457600080fd5b82356140ef816145bc565b915060208301356140ff816145bc565b809150509250929050565b60008060006060848603121561411f57600080fd5b833561412a816145bc565b9250602084013561413a816145bc565b9150604084013561414a816145bc565b809150509250925092565b60008060006060848603121561416a57600080fd5b8335614175816145bc565b92506020840135614185816145bc565b929592945050506040919091013590565b600080600080608085870312156141ac57600080fd5b84356141b7816145bc565b935060208501356141c7816145bc565b92506040850135915060608501356141de816145bc565b939692955090935050565b600080604083850312156141fc57600080fd5b8235614207816145bc565b946020939093013593505050565b60006020828403121561422757600080fd5b61330b82614075565b60008060006060848603121561424557600080fd5b61424e84614085565b925061425c60208501614085565b915061426a60408501614075565b90509250925092565b60006020828403121561428557600080fd5b5035919050565b60006020828403121561429e57600080fd5b5051919050565b600082516142b78184602087016144cc565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b038316815260406020808301829052835191830182905260009184820191906060850190845b8181101561432457845163ffffffff1683529383019391830191600101614302565b5090979650505050505050565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561438b5783516001600160a01b031683529284019291840191600101614366565b50909695505050505050565b60208152600082518060208401526143b68160408501602087016144cc565b601f01601f19169190910160400192915050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b92835260069190910b6020830152604082015260600190565b6000821982111561442d5761442d61454e565b500190565b60008261444157614441614564565b500490565b60008160001904831182151516156144605761446061454e565b500290565b60008160060b8360060b6000811281667fffffffffffff19018312811516156144905761449061454e565b81667fffffffffffff0183138116156144ab576144ab61454e565b5090039392505050565b6000828210156144c7576144c761454e565b500390565b60005b838110156144e75781810151838201526020016144cf565b8381111561374f5750506000910152565b600060001982141561450c5761450c61454e565b5060010190565b60008261452257614522614564565b500690565b60008160060b667fffffffffffff198114156145455761454561454e565b60000392915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146145d157600080fd5b5056fea2646970667358221220911d3e94d8d4f6238b4bb85c1d0e467849df8b763d2c4a650bf62ec1b71c1c6064736f6c63430008070033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
