{
  "_format": "hh-sol-artifact-1",
  "contractName": "StakedPSYSV3",
  "sourceName": "contracts/StakedPSYSV3.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "stakedToken",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "rewardToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "unstakeWindow",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "rewardsVault",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "emissionManager",
          "type": "address"
        },
        {
          "internalType": "uint128",
          "name": "distributionDuration",
          "type": "uint128"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "emission",
          "type": "uint256"
        }
      ],
      "name": "AssetConfigUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "AssetIndexUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Cooldown",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "cooldownSeconds",
          "type": "uint256"
        }
      ],
      "name": "CooldownSecondsChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "delegator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "delegatee",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "enum IGovernancePowerDelegationToken.DelegationType",
          "name": "delegationType",
          "type": "uint8"
        }
      ],
      "name": "DelegateChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "enum IGovernancePowerDelegationToken.DelegationType",
          "name": "delegationType",
          "type": "uint8"
        }
      ],
      "name": "DelegatedPowerChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint216",
          "name": "exchangeRate",
          "type": "uint216"
        }
      ],
      "name": "ExchangeRateChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "FundsReturned",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newDebtToken",
          "type": "address"
        }
      ],
      "name": "GHODebtTokenChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newPercentage",
          "type": "uint256"
        }
      ],
      "name": "MaxSlashablePercentageChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newPendingAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "role",
          "type": "uint256"
        }
      ],
      "name": "PendingAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "Redeem",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RewardsAccrued",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RewardsClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "role",
          "type": "uint256"
        }
      ],
      "name": "RoleClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "destination",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Slashed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "windowSeconds",
          "type": "uint256"
        }
      ],
      "name": "SlashingExitWindowDurationChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "SlashingSettled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "Staked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "UserIndexUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "CLAIM_HELPER_ROLE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "COOLDOWN_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "COOLDOWN_SECONDS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DELEGATE_BY_TYPE_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DELEGATE_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DISTRIBUTION_END",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "EIP712_REVISION",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "EMISSION_MANAGER",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "EXCHANGE_RATE_UNIT",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "INITIAL_EXCHANGE_RATE",
      "outputs": [
        {
          "internalType": "uint216",
          "name": "",
          "type": "uint216"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "LOWER_BOUND",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PERMIT_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PRECISION",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REVISION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REWARDS_VAULT",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REWARD_TOKEN",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SLASH_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "STAKED_TOKEN",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UNSTAKE_WINDOW",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "_aaveGovernance",
      "outputs": [
        {
          "internalType": "contract ITransferHook",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "_nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "_votingSnapshots",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "blockNumber",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "value",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "_votingSnapshotsCounts",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "assets",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "emissionPerSecond",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "lastUpdateTimestamp",
          "type": "uint128"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "claimRewards",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "claimAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "redeemAmount",
          "type": "uint256"
        }
      ],
      "name": "claimRewardsAndRedeem",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "claimAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "redeemAmount",
          "type": "uint256"
        }
      ],
      "name": "claimRewardsAndRedeemOnBehalf",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "claimRewardsAndStake",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "claimRewardsAndStakeOnBehalf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "claimRewardsOnBehalf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "role",
          "type": "uint256"
        }
      ],
      "name": "claimRoleAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint128",
              "name": "emissionPerSecond",
              "type": "uint128"
            },
            {
              "internalType": "uint256",
              "name": "totalStaked",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "underlyingAsset",
              "type": "address"
            }
          ],
          "internalType": "struct DistributionTypes.AssetConfigInput[]",
          "name": "assetsConfigInput",
          "type": "tuple[]"
        }
      ],
      "name": "configureAssets",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cooldown",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        }
      ],
      "name": "cooldownOnBehalfOf",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegatee",
          "type": "address"
        }
      ],
      "name": "delegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegatee",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiry",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "delegateBySig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegatee",
          "type": "address"
        },
        {
          "internalType": "enum IGovernancePowerDelegationToken.DelegationType",
          "name": "delegationType",
          "type": "uint8"
        }
      ],
      "name": "delegateByType",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegatee",
          "type": "address"
        },
        {
          "internalType": "enum IGovernancePowerDelegationToken.DelegationType",
          "name": "delegationType",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiry",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "delegateByTypeBySig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "role",
          "type": "uint256"
        }
      ],
      "name": "getAdmin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCooldownSeconds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegator",
          "type": "address"
        },
        {
          "internalType": "enum IGovernancePowerDelegationToken.DelegationType",
          "name": "delegationType",
          "type": "uint8"
        }
      ],
      "name": "getDelegateeByType",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getExchangeRate",
      "outputs": [
        {
          "internalType": "uint216",
          "name": "",
          "type": "uint216"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "index",
          "type": "uint32"
        }
      ],
      "name": "getExchangeRateSnapshot",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint40",
              "name": "blockNumber",
              "type": "uint40"
            },
            {
              "internalType": "uint216",
              "name": "value",
              "type": "uint216"
            }
          ],
          "internalType": "struct IStakedPSYSV3.ExchangeRateSnapshot",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getExchangeRateSnapshotsCount",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getMaxSlashablePercentage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "role",
          "type": "uint256"
        }
      ],
      "name": "getPendingAdmin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        },
        {
          "internalType": "enum IGovernancePowerDelegationToken.DelegationType",
          "name": "delegationType",
          "type": "uint8"
        }
      ],
      "name": "getPowerAtBlock",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "enum IGovernancePowerDelegationToken.DelegationType",
          "name": "delegationType",
          "type": "uint8"
        }
      ],
      "name": "getPowerCurrent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "staker",
          "type": "address"
        }
      ],
      "name": "getTotalRewardsBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "getUserAssetData",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ghoDebtToken",
      "outputs": [
        {
          "internalType": "contract IGhoVariableDebtTokenTransferHook",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "inPostSlashingPeriod",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "slashingAdmin",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "cooldownPauseAdmin",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "claimHelper",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "maxSlashablePercentage",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "cooldownSeconds",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "previewRedeem",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        }
      ],
      "name": "previewStake",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "redeem",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "redeemOnBehalf",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "returnFunds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "cooldownSeconds",
          "type": "uint256"
        }
      ],
      "name": "setCooldownSeconds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IGhoVariableDebtTokenTransferHook",
          "name": "newGHODebtToken",
          "type": "address"
        }
      ],
      "name": "setGHODebtToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "percentage",
          "type": "uint256"
        }
      ],
      "name": "setMaxSlashablePercentage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "role",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "newPendingAdmin",
          "type": "address"
        }
      ],
      "name": "setPendingAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "settleSlashing",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "destination",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "slash",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "stake",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "stakeWithPermit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "stakerRewardsToClaim",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "stakersCooldowns",
      "outputs": [
        {
          "internalType": "uint40",
          "name": "timestamp",
          "type": "uint40"
        },
        {
          "internalType": "uint216",
          "name": "amount",
          "type": "uint216"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "totalSupplyAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x610160604052600060095534801561001657600080fd5b506040516156363803806156368339810160408190526100359161013c565b858585858585858585858585816001600160801b03821661005681426101db565b608052506001600160a01b0390811660a05295861660c052505091831660e05261010052166101205260016009819055506000866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100eb91906101f4565b60ff1690506100fb81600a610305565b610140525061011095505061011f9350505050565b60095550610311945050505050565b600190565b6001600160a01b038116811461013957600080fd5b50565b60008060008060008060c0878903121561015557600080fd5b865161016081610124565b602088015190965061017181610124565b60408801516060890151919650945061018981610124565b608088015190935061019a81610124565b60a08801519092506001600160801b03811681146101b757600080fd5b809150509295509295509295565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ee576101ee6101c5565b92915050565b60006020828403121561020657600080fd5b815160ff8116811461021757600080fd5b9392505050565b6001815b60018411156102595780850481111561023d5761023d6101c5565b600184161561024b57908102905b60019390931c928002610222565b935093915050565b600082610270575060016101ee565b8161027d575060006101ee565b8160018114610293576002811461029d576102b9565b60019150506101ee565b60ff8411156102ae576102ae6101c5565b50506001821b6101ee565b5060208310610133831016604e8410600b84101617156102dc575081810a6101ee565b6102e9600019848461021e565b80600019048211156102fd576102fd6101c5565b029392505050565b60006102178383610261565b60805160a05160c05160e05161010051610120516101405161524d6103e96000396000818161083601528181610e3a0152818161115701526111c8015260008181610a1801526128810152600081816106a4015261251c015260008181610a6d0152818161285f01526130c801526000818161062a01528181610ee30152818161125a01528181611411015281816117ba0152818161273e01528181612e55015261309e015260008181610bea01526119910152600081816109f101528181613e5401528181613e900152613ebd015261524d6000f3fe608060405234801561001057600080fd5b50600436106104965760003560e01c80638c9a281d11610262578063aff05aa911610151578063dbc0ed8a116100ce578063eab5231811610092578063eab5231814610c65578063f036bc6814610c78578063f11b818814610c8c578063f34d96da14610cee578063f713d8a814610cf6578063fde9eb6914610d0957600080fd5b8063dbc0ed8a14610c1f578063dc937e1c14610c27578063dd62ed3e14610c3a578063dde43cba14610c4d578063e6aa216c14610c5457600080fd5b8063c2ffbb9111610115578063c2ffbb9114610bac578063c3863ada14610bbf578063c3cda52014610bd2578063cbcbb50714610be5578063d505accf14610c0c57600080fd5b8063aff05aa914610b4b578063b2a5dbfa14610b53578063b2f4201d14610b66578063b9844d8d14610b79578063c18f539a14610b9957600080fd5b80639a99b4f0116101df578063a9059cbb116101a3578063a9059cbb14610ae3578063aa9fbe0214610af6578063aaf5eb6814610b1d578063ab406fe614610b25578063adc9772e14610b3857600080fd5b80639a99b4f014610a8f5780639c9b515414610aa25780639e3ffce014610ab5578063a457c2d714610abd578063a6b63eb814610ad057600080fd5b8063946776cd11610226578063946776cd14610a13578063955e18af14610a3a57806395d89b4114610a4d578063981b24d014610a5557806399248ea714610a6857600080fd5b80638c9a281d146109325780638dbefee21461093a5780638e9b2ca41461094d5780638ef98e0e1461095c578063919cd40f146109ec57600080fd5b806345755dd6116103895780636f50458d1161030657806374011f56116102ca57806374011f56146108a457806378160376146108b7578063787a08a6146108d75780637b5b1157146108df5780637bb73c97146108f25780637e90d7ef1461091257600080fd5b80636f50458d1461085857806370a082311461086b578063727a5d571461087e57806372b49d631461082957806373d6a8891461089157600080fd5b80635b3cc0cf1161034d5780635b3cc0cf146107925780635c19a95c146107f157806360ba192b14610804578063616e0bf9146108295780636198e1351461083157600080fd5b806345755dd6146107095780634575e69b1461071c5780634998fffd146107455780634cdad5061461075857806358146d171461076b57600080fd5b806323b872dd116104175780633373ee4c116103db5780633373ee4c14610661578063359c4a961461069f5780633644e515146106c657806339509351146106cf57806341cbf54a146106e257600080fd5b806323b872dd146105d8578063250201db146105eb57806330adf81f146105fe578063312f6b8314610625578063313ce5671461064c57600080fd5b8063112d037c1161045e578063112d037c14610582578063174ed5421461059757806318160ddd146105aa5780631e9a6950146105b257806320fb80b5146105c557600080fd5b806302fb4d851461049b57806306fdde03146104c1578063091030c3146104d6578063095ea7b314610534578063111fd88b14610557575b600080fd5b6104ae6104a9366004614902565b610d1c565b6040519081526020015b60405180910390f35b6104c9610f5a565b6040516104b8919061497e565b61050f6104e4366004614991565b603e6020526000908152604090205464ffffffffff811690600160281b90046001600160d81b031682565b6040805164ffffffffff90931683526001600160d81b039091166020830152016104b8565b610547610542366004614902565b610fec565b60405190151581526020016104b8565b61056a6105653660046149ae565b611004565b6040516001600160a01b0390911681526020016104b8565b6105956105903660046149c7565b61101f565b005b60535461056a906001600160a01b031681565b6002546104ae565b6105956105c0366004614902565b611069565b6104ae6105d33660046149c7565b611078565b6105476105e63660046149c7565b6110c9565b6105956105f9366004614991565b6110ed565b6104ae7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61056a7f000000000000000000000000000000000000000000000000000000000000000081565b60125b60405160ff90911681526020016104b8565b6104ae61066f366004614a08565b6001600160a01b038082166000908152603c60209081526040808320938616835260029093019052205492915050565b6104ae7f000000000000000000000000000000000000000000000000000000000000000081565b6104ae60435481565b6105476106dd366004614902565b611133565b6104ae7f9a9a49b990ba9bb39f8048c490a40ab25c18f55d208d5fbcf958261a9b48716d81565b6105956107173660046149ae565b611155565b61056a61072a3660046149ae565b6000908152604660205260409020546001600160a01b031690565b610595610753366004614991565b6112ba565b6104ae6107663660046149ae565b611324565b61077a670de0b6b3a764000081565b6040516001600160d81b0390911681526020016104b8565b6107d16107a0366004614902565b60066020908152600092835260408084209091529082529020546001600160801b0380821691600160801b90041682565b604080516001600160801b039384168152929091166020830152016104b8565b6105956107ff366004614991565b61134f565b605154600160e01b900463ffffffff1660405163ffffffff90911681526020016104b8565b604f546104ae565b6104ae7f000000000000000000000000000000000000000000000000000000000000000081565b61056a610866366004614a55565b611367565b6104ae610879366004614991565b611389565b6104ae61088c3660046149ae565b6113a4565b61059561089f366004614a9b565b6113c7565b6105956108b23660046149ae565b611480565b6104c9604051806040016040528060018152602001603160f81b81525081565b6105956114c3565b6105956108ed3660046149ae565b6114ce565b6104ae610900366004614991565b60076020526000908152604090205481565b6104ae610920366004614991565b603d6020526000908152604090205481565b6104ae600081565b6104ae610948366004614991565b611541565b6104ae670de0b6b3a764000081565b6109c161096a366004614af5565b60408051808201909152600080825260208201525063ffffffff1660009081526052602090815260409182902082518084019093525464ffffffffff81168352600160281b90046001600160d81b03169082015290565b60408051825164ffffffffff1681526020928301516001600160d81b031692810192909252016104b8565b6104ae7f000000000000000000000000000000000000000000000000000000000000000081565b61056a7f000000000000000000000000000000000000000000000000000000000000000081565b6104ae610a48366004614902565b61161c565b6104c9611629565b6104ae610a633660046149ae565b611638565b61056a7f000000000000000000000000000000000000000000000000000000000000000081565b610595610a9d366004614902565b611643565b610595610ab0366004614b1b565b61164e565b6104ae600181565b610547610acb366004614902565b6116a5565b610595610ade366004614b61565b611720565b610547610af1366004614902565b611838565b6104ae7f10d8d059343739efce7dad10d09f0806da52b252b3e6a7951920d2d6ec4102e581565b61064f601281565b610595610b33366004614bbc565b611846565b610595610b46366004614902565b611909565b610595611914565b610595610b61366004614c51565b611986565b6104ae610b74366004614a55565b611a37565b6104ae610b87366004614991565b60446020526000908152604090205481565b6104ae610ba73660046149c7565b611a5f565b6104ae610bba366004614d47565b611aa6565b60085461056a906001600160a01b031681565b610595610be0366004614a9b565b611acf565b61056a7f000000000000000000000000000000000000000000000000000000000000000081565b610595610c1a366004614d85565b611c94565b6104ae600281565b610595610c35366004614a55565b611e5c565b6104ae610c48366004614a08565b611e67565b60016104ae565b6051546001600160d81b031661077a565b610595610c73366004614df4565b611e92565b60515461054790600160d81b900460ff1681565b610cc8610c9a366004614991565b603c60205260009081526040902080546001909101546001600160801b0380831692600160801b9004169083565b604080516001600160801b039485168152939092166020840152908201526060016104b8565b6050546104ae565b610595610d04366004614e29565b611ea9565b610595610d173660046149ae565b61207d565b6000610d286000611004565b6001600160a01b0316336001600160a01b031614610d615760405162461bcd60e51b8152600401610d5890614e5d565b60405180910390fd5b605154600160d81b900460ff1615610dbb5760405162461bcd60e51b815260206004820152601d60248201527f50524556494f55535f534c415348494e475f4e4f545f534554544c45440000006044820152606401610d58565b60008211610df95760405162461bcd60e51b815260206004820152600b60248201526a16915493d7d05353d5539560aa1b6044820152606401610d58565b6000610e0460025490565b90506000610e1182611324565b90506000610e2a6050548361214e90919063ffffffff16565b905080851115610e38578094505b7f0000000000000000000000000000000000000000000000000000000000000000610e638684614eaa565b1015610ea85760405162461bcd60e51b815260206004820152601460248201527352454d41494e494e475f4c545f4d494e494d554d60601b6044820152606401610d58565b6051805460ff60d81b1916600160d81b179055610ed6610ed1610ecb8785614eaa565b856121da565b612218565b610f0a6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001687876122bd565b856001600160a01b03167f4ed05e9673c26d2ed44f7ef6a7f2942df0ee3b5e1e17db4b99f9dcd261a339cd86604051610f4591815260200190565b60405180910390a28493505050505b92915050565b606060038054610f6990614ebd565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9590614ebd565b8015610fe25780601f10610fb757610100808354040283529160200191610fe2565b820191906000526020600020905b815481529060010190602001808311610fc557829003601f168201915b5050505050905090565b600033610ffa818585612320565b5060019392505050565b6000908152604560205260409020546001600160a01b031690565b6110296002611004565b6001600160a01b0316336001600160a01b0316146110595760405162461bcd60e51b8152600401610d5890614ef7565b611064838383612444565b505050565b611074338383612444565b5050565b60006110846002611004565b6001600160a01b0316336001600160a01b0316146110b45760405162461bcd60e51b8152600401610d5890614ef7565b6110bf8484846127c5565b90505b9392505050565b6000336110d78582856128fd565b6110e2858585612971565b506001949350505050565b6110f76002611004565b6001600160a01b0316336001600160a01b0316146111275760405162461bcd60e51b8152600401610d5890614ef7565b61113081612aa2565b50565b600033610ffa8185856111468383611e67565b6111509190614f2e565b612320565b7f00000000000000000000000000000000000000000000000000000000000000008110156111b95760405162461bcd60e51b8152602060048201526011602482015270414d4f554e545f4c545f4d494e494d554d60781b6044820152606401610d58565b60006111c460025490565b90507f000000000000000000000000000000000000000000000000000000000000000081101561122a5760405162461bcd60e51b81526020600482015260116024820152705348415245535f4c545f4d494e494d554d60781b6044820152606401610d58565b600061123582611324565b905061124d610ed16112478584614f2e565b846121da565b6112826001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086612b85565b6040518381527f278e51d3323fbf18b9fb8df3f8b97e31b145bc1146c52e764cf4aa1bfc4ba17d9060200160405180910390a1505050565b73ee56e2b3d491590b5b31738cc34d5232f378a8d533146112da57600080fd5b605380546001600160a01b0319166001600160a01b0383169081179091556040517f62bbced765bccc9ed93d0bae1b2a8c86e13b4663f8bf27d5936d9d619194c8a990600090a250565b6051546000906001600160d81b031661134583670de0b6b3a7640000614f41565b610f549190614f58565b61135b33826000612bbd565b61113033826001612bbd565b60008061137383612cbe565b925050506113818482612cfd565b949350505050565b6001600160a01b031660009081526020819052604090205490565b605154600090670de0b6b3a764000090611345906001600160d81b031684614f41565b60405163d505accf60e01b81526001600160a01b038781166004830152306024830152604482018790526064820186905260ff8516608483015260a4820184905260c482018390527f0000000000000000000000000000000000000000000000000000000000000000169063d505accf9060e401600060405180830381600087803b15801561145557600080fd5b505af1158015611469573d6000803e3d6000fd5b50505050611478868787612d28565b505050505050565b61148a6000611004565b6001600160a01b0316336001600160a01b0316146114ba5760405162461bcd60e51b8152600401610d5890614e5d565b61113081612ed5565b6114cc33612aa2565b565b6114d86001611004565b6001600160a01b0316336001600160a01b0316146115385760405162461bcd60e51b815260206004820152601960248201527f43414c4c45525f4e4f545f434f4f4c444f574e5f41444d494e000000000000006044820152606401610d58565b61113081612f62565b604080516001808252818301909252600091829190816020015b611588604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b81526020019060019003908161155b5790505090506040518060600160405280306001600160a01b031681526020016115c085611389565b81526020016115ce60025490565b815250816000815181106115e4576115e4614f7a565b60200260200101819052506115f98382612f97565b6001600160a01b0384166000908152603d60205260409020546110c29190614f2e565b60006110c233848461309a565b606060048054610f6990614ebd565b6000610f5460025490565b6110643383836127c5565b6116586002611004565b6001600160a01b0316336001600160a01b0316146116885760405162461bcd60e51b8152600401610d5890614ef7565b6116938484846127c5565b5061169f848483612444565b50505050565b600033816116b38286611e67565b9050838110156117135760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d58565b6110e28286868403612320565b600954600190811161178b5760405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201526d195b881a5b9a5d1a585b1a5e995960921b6064820152608401610d58565b600981905561179d8686868686613185565b60405163095ea7b360e01b815230600482015260001960248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063095ea7b3906044016020604051808303816000875af115801561180b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182f9190614f90565b50505050505050565b600033610ffa818585612971565b60008281526045602052604090205482906001600160a01b031633146118a65760405162461bcd60e51b815260206004820152601560248201527421a0a62622a92fa727aa2fa927a622afa0a226a4a760591b6044820152606401610d58565b60008381526046602090815260409182902080546001600160a01b0319166001600160a01b03861690811790915591518581527fc3d1bf52795a20771ee6de3e59948fd83e10db956122d4709a3b86c512963855910160405180910390a2505050565b611074338383612d28565b61191e6000611004565b6001600160a01b0316336001600160a01b03161461194e5760405162461bcd60e51b8152600401610d5890614e5d565b6051805460ff60d81b191690556040517fcdee157e87ba915be681d4fa3f3d511afe7348eca06448a3accd6ac227fa40af90600090a1565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146119f65760405162461bcd60e51b815260206004820152601560248201527427a7262cafa2a6a4a9a9a4a7a72fa6a0a720a3a2a960591b6044820152606401610d58565b60005b8151811015611a2d57600254828281518110611a1757611a17614f7a565b60209081029190910181015101526001016119f9565b50611130816132a9565b6000806000611a4584612cbe565b5091509150611a568282874361340d565b95945050505050565b6000611a6b6002611004565b6001600160a01b0316336001600160a01b031614611a9b5760405162461bcd60e51b8152600401610d5890614ef7565b6110bf84848461309a565b6000806000611ab484612cbe565b5091509150611ac58282888861340d565b9695505050505050565b604080517f9a9a49b990ba9bb39f8048c490a40ab25c18f55d208d5fbcf958261a9b48716d60208201526001600160a01b03881691810191909152606081018690526080810185905260009060a001604051602081830303815290604052805190602001209050600060435482604051602001611b4d929190614fb2565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015611bb8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611beb5760405162461bcd60e51b8152600401610d5890614fcd565b6001600160a01b0381166000908152604460205260408120805491611c0f83614ff8565b919050558814611c515760405162461bcd60e51b815260206004820152600d60248201526c494e56414c49445f4e4f4e434560981b6044820152606401610d58565b86421115611c715760405162461bcd60e51b8152600401610d5890615011565b611c7d818a6000612bbd565b611c89818a6001612bbd565b505050505050505050565b6001600160a01b038716611cda5760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b6044820152606401610d58565b83421115611cfa5760405162461bcd60e51b8152600401610d5890615011565b6001600160a01b0387811660008181526044602090815260408083205460435482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e086019092528151919092012090939192611d9192919061010001614fb2565b60408051601f1981840301815282825280516020918201206000845290830180835281905260ff8816918301919091526060820186905260808201859052915060019060a0016020604051602081039080840390855afa158015611df9573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611e335760405162461bcd60e51b8152600401610d5890614fcd565b6001600160a01b0389166000908152604460205260409020600183019055611c89898989612320565b611074338383612bbd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b611e9d3384846127c5565b50611064338483612444565b60007f10d8d059343739efce7dad10d09f0806da52b252b3e6a7951920d2d6ec4102e588886001811115611edf57611edf61503d565b6040805160208101949094526001600160a01b039092169183019190915260608201526080810187905260a0810186905260c001604051602081830303815290604052805190602001209050600060435482604051602001611f42929190614fb2565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015611fad573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611fe05760405162461bcd60e51b8152600401610d5890614fcd565b6001600160a01b038116600090815260446020526040812080549161200483614ff8565b9190505588146120465760405162461bcd60e51b815260206004820152600d60248201526c494e56414c49445f4e4f4e434560981b6044820152606401610d58565b864211156120665760405162461bcd60e51b8152600401610d5890615011565b612071818b8b612bbd565b50505050505050505050565b60008181526046602052604090205481906001600160a01b031633146120e55760405162461bcd60e51b815260206004820152601d60248201527f43414c4c45525f4e4f545f50454e44494e475f524f4c455f41444d494e0000006044820152606401610d58565b60008281526045602090815260408083208054336001600160a01b0319918216811790925560468452938290208054909416909355518481527f83a9ddad961dcb7c6894c9585a16ff7792c2ec8281256a3cc7303ae830152dcf91015b60405180910390a25050565b600082158061215b575081155b1561216857506000610f54565b61217482600019614f58565b8311156121c35760405162461bcd60e51b815260206004820152601c60248201527f4d4154485f4d554c5449504c49434154494f4e5f4f564552464c4f57000000006044820152606401610d58565b6127106121d08385614f41565b6110c29190614f58565b60006110c2836001816121f5670de0b6b3a764000087614f41565b6121ff9190614f2e565b6122099190614eaa565b6122139190614f58565b613456565b604051806040016040528061222c436134c3565b64ffffffffff90811682526001600160d81b038085166020938401526051805463ffffffff600160e01b9182900481166000908152605287526040902087519790960151909316600160281b0295909316949094179092558254601c926122969290910416615053565b91906101000a81548163ffffffff021916908363ffffffff16021790555061113081613529565b6040516001600160a01b03831660248201526044810182905261106490849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526135c5565b6001600160a01b0383166123825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d58565b6001600160a01b0382166123e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d58565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b806000036124645760405162461bcd60e51b8152600401610d5890615078565b6001600160a01b0383166000908152603e602090815260409182902082518084019093525464ffffffffff81168352600160281b90046001600160d81b031690820152605154600160d81b900460ff166125a457604f5481516124ce919064ffffffffff16614f2e565b4210156125155760405162461bcd60e51b815260206004820152601560248201527424a729aaa32324a1a4a2a72a2fa1a7a7a62227aba760591b6044820152606401610d58565b604f5481517f00000000000000000000000000000000000000000000000000000000000000009161254c9164ffffffffff16614f2e565b6125569042614eaa565b11156125a45760405162461bcd60e51b815260206004820152601760248201527f554e5354414b455f57494e444f575f46494e49534845440000000000000000006044820152606401610d58565b60006125af85611389565b605154909150600090600160d81b900460ff166125d95782602001516001600160d81b03166125db565b815b90508060000361262d5760405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f5a45524f5f4d41585f52454445454d41424c4500000000006044820152606401610d58565b600081851161263c578461263e565b815b905061264c87846001613697565b50600061265882611324565b90506126648883613746565b845164ffffffffff1615612731578185602001516001600160d81b031661268b9190614eaa565b6000036126b0576001600160a01b0388166000908152603e6020526040812055612731565b6126b982613884565b6001600160a01b0389166000908152603e60205260409020546126f5916001600160b81b031690600160281b90046001600160d81b03166150a5565b6001600160a01b0389166000908152603e6020526040902080546001600160d81b0392909216600160281b0264ffffffffff9092169190911790555b6127656001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001688836122bd565b866001600160a01b0316886001600160a01b03167f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc83856040516127b3929190918252602082015260400190565b60405180910390a35050505050505050565b6000816000036127e75760405162461bcd60e51b8152600401610d5890615078565b60006127fd856127f687611389565b6000613697565b9050600081841161280e5783612810565b815b9050806000036128325760405162461bcd60e51b8152600401610d5890615078565b61283c8183614eaa565b6001600160a01b038088166000908152603d60205260409020919091556128a7907f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008784612b85565b846001600160a01b0316866001600160a01b03167f9310ccfcb8de723f578a9e4282ea9f521f05ae40dc08f3068dfad528a65ee3c7836040516128ec91815260200190565b60405180910390a395945050505050565b60006129098484611e67565b9050600019811461169f57818110156129645760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d58565b61169f8484848403612320565b600061297c84611389565b905061298a84826001613697565b50826001600160a01b0316846001600160a01b031614612a975760006129af84611389565b90506129bd84826001613697565b506001600160a01b0385166000908152603e602090815260409182902082518084019093525464ffffffffff8116808452600160281b9091046001600160d81b03169183019190915215612a9457838303612a30576001600160a01b0386166000908152603e6020526040812055612a94565b60208101516001600160d81b0316612a488585614eaa565b1015612a9457612a588484614eaa565b6001600160a01b0387166000908152603e6020526040902080546001600160d81b0392909216600160281b0264ffffffffff9092169190911790555b50505b61169f8484846138ed565b6000612aad82611389565b905080600003612aff5760405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f42414c414e43455f4f4e5f434f4f4c444f574e00000000006044820152606401610d58565b60408051808201825264ffffffffff42811682526001600160d81b0380851660208085019182526001600160a01b0388166000818152603e9092529086902094519151909216600160281b0292169190911790915590517f8a05f911d8ab7fc50fec37ef4ba7f9bfcb1a3c191c81dcd824ad0946c4e20d65906121429084815260200190565b6040516001600160a01b038085166024830152831660448201526064810182905261169f9085906323b872dd60e01b906084016122e9565b6001600160a01b038216612c075760405162461bcd60e51b8152602060048201526011602482015270494e56414c49445f44454c45474154454560781b6044820152606401610d58565b6000612c1282612cbe565b925050506000612c2185611389565b90506000612c2f8684612cfd565b6001600160a01b03878116600090815260208690526040902080546001600160a01b0319169188169190911790559050612c6b81868487613a9c565b846001600160a01b0316866001600160a01b03167fe8d51c8e11bd570db1734c8ec775785330e77007feed45c43b608ef33ff914bd86604051612cae91906150e6565b60405180910390a3505050505050565b6000808080846001811115612cd557612cd561503d565b03612cea57506006915060079050603f612cf6565b50604091506041905060425b9193909250565b6001600160a01b03808316600090815260208390526040812054909116806110c25783915050610f54565b605154600160d81b900460ff1615612d755760405162461bcd60e51b815260206004820152601060248201526f534c415348494e475f4f4e474f494e4760801b6044820152606401610d58565b80600003612d955760405162461bcd60e51b8152600401610d5890615078565b6000612da083611389565b90506000612db8843084612db360025490565b613ca0565b90508015612e3b576001600160a01b0384166000908152603d6020526040902054612de4908290614f2e565b6001600160a01b0385166000818152603d60209081526040918290209390935580519182529181018390527f2468f9268c60ad90e2d49edb0032c8a001e733ae888b3ab8e982edf535be1a76910160405180910390a15b6000612e46846113a4565b9050612e7d6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016873087612b85565b612e878582613d61565b846001600160a01b0316866001600160a01b03167f6c86f3fd5118b3aa8bb4f389a617046de0a3d3d477de1a1673d227f802f616dc8684604051612cae929190918252602082015260400190565b6127108110612f265760405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f534c415348494e475f50455243454e5441474500000000006044820152606401610d58565b60508190556040518181527fb79c2d6c7f5c95eec9dc05affc0ed002620a4ec6d72b7b0744cc8638168c600a906020015b60405180910390a150565b604f8190556040518181527fbbf67247b5c97564e30ffc0a355e71c006836de7b9149e09e3d5d6054cb0335590602001612f57565b600080805b8351811015613092576000603c6000868481518110612fbd57612fbd614f7a565b602090810291909101810151516001600160a01b03168252810191909152604001600090812060018101548154885192945061302b926001600160801b0380831692600160801b900416908a908890811061301a5761301a614f7a565b602002602001015160400151613e2c565b905061307c86848151811061304257613042614f7a565b602002602001015160200151828460020160008b6001600160a01b03166001600160a01b0316815260200190815260200160002054613f37565b6130869085614f2e565b93505050600101612f9c565b509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461313d5760405162461bcd60e51b815260206004820181905260248201527f5245574152445f544f4b454e5f49535f4e4f545f5354414b45445f544f4b454e6044820152606401610d58565b60006131538561314c87611389565b6001613697565b905060008184116131645783613166565b815b90508015611a56576131798630836127c5565b50611a56308683612d28565b60408051600380825260808201909252600091816020015b604080518082019091526000808252602082015281526020019060019003908161319d579050509050604051806040016040528060008152602001876001600160a01b0316815250816000815181106131f8576131f8614f7a565b6020026020010181905250604051806040016040528060018152602001866001600160a01b03168152508160018151811061323557613235614f7a565b6020026020010181905250604051806040016040528060028152602001856001600160a01b03168152508160028151811061327257613272614f7a565b602002602001018190525061328681613f63565b61328f83612ed5565b61329882612f62565b611478670de0b6b3a7640000612218565b60005b8151811015611074576000603c60008484815181106132cd576132cd614f7a565b6020026020010151604001516001600160a01b03166001600160a01b03168152602001908152602001600020905061334083838151811061331057613310614f7a565b6020026020010151604001518285858151811061332f5761332f614f7a565b602002602001015160200151614135565b5082828151811061335357613353614f7a565b60209081029190910101515181546fffffffffffffffffffffffffffffffff19166001600160801b03909116178155825183908390811061339657613396614f7a565b6020026020010151604001516001600160a01b03167f87fa03892a0556cb6b8f97e6d533a150d4d55fcbf275fff5fa003fa636bcc7fa8484815181106133de576133de614f7a565b602090810291909101810151516040516001600160801b0390911681520160405180910390a2506001016132ac565b60515460009061342d90605290600160e01b900463ffffffff16846141ed565b670de0b6b3a7640000613442878787876142fa565b61344c9190614f41565b611a569190614f58565b60006001600160d81b038211156134bf5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663136206269747360c81b6064820152608401610d58565b5090565b600064ffffffffff8211156134bf5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526530206269747360d01b6064820152608401610d58565b806001600160d81b03166000036135775760405162461bcd60e51b81526020600482015260126024820152715a45524f5f45584348414e47455f5241544560701b6044820152606401610d58565b605180546001600160d81b0319166001600160d81b0383169081179091556040519081527fa9c433f9734baa3cf48b209454bb0ace054e191f677ba50e74b696c0d35ef26290602001612f57565b600061361a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166143d49092919063ffffffff16565b80519091501561106457808060200190518101906136389190614f90565b6110645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d58565b6000806136a9853086612db360025490565b6001600160a01b0386166000908152603d6020526040812054919250906136d1908390614f2e565b90508115611a565783156136fb576001600160a01b0386166000908152603d602052604090208190555b604080516001600160a01b0388168152602081018490527f2468f9268c60ad90e2d49edb0032c8a001e733ae888b3ab8e982edf535be1a76910160405180910390a195945050505050565b6001600160a01b0382166137a65760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610d58565b6137b2826000836143e3565b6001600160a01b038216600090815260208190526040902054818110156138265760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610d58565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60006001600160b81b038211156134bf5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663834206269747360c81b6064820152608401610d58565b6001600160a01b0383166139515760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d58565b6001600160a01b0382166139b35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d58565b6139be8383836143e3565b6001600160a01b03831660009081526020819052604090205481811015613a365760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d58565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361169f565b826001600160a01b0316846001600160a01b0316031561169f57600080613ac283612cbe565b5090925090506001600160a01b03861615613bb3576001600160a01b0386166000908152602082905260408120548015613b42576001600160a01b038816600090815260208590526040812090613b1a600184614eaa565b8152602081019190915260400160002054600160801b90046001600160801b03169150613b4e565b613b4b88611389565b91505b613b6484848a85613b5f8b82614eaa565b614562565b6001600160a01b0388167fa0a19463ee116110c9b282012d9b65cc5522dc38a9520340cbaf3142e550127f613b998885614eaa565b87604051613ba89291906150f4565b60405180910390a250505b6001600160a01b03851615611478576001600160a01b0385166000908152602082905260408120548015613c2d576001600160a01b038716600090815260208590526040812090613c05600184614eaa565b8152602081019190915260400160002054600160801b90046001600160801b03169150613c39565b613c3687611389565b91505b613c4a84848985613b5f8b82614f2e565b6001600160a01b0387167fa0a19463ee116110c9b282012d9b65cc5522dc38a9520340cbaf3142e550127f613c7f8885614f2e565b87604051613c8e9291906150f4565b60405180910390a25050505050505050565b6001600160a01b038084166000908152603c602090815260408083209388168352600284019091528120549091908280613cdb888588614135565b9050808314613d55578615613cf857613cf5878285613f37565b91505b6001600160a01b03808a1660008181526002870160205260409081902084905551918a16917fbb123b5c06d5408bbea3c4fef481578175cfb432e3b482c6186f02ed9086585b90613d4c9085815260200190565b60405180910390a35b50979650505050505050565b6001600160a01b038216613db75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610d58565b613dc3600083836143e3565b8060026000828254613dd59190614f2e565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000831580613e39575081155b80613e4c575042836001600160801b0316145b80613e8057507f0000000000000000000000000000000000000000000000000000000000000000836001600160801b031610155b15613e8c575083611381565b60007f00000000000000000000000000000000000000000000000000000000000000004211613ebb5742613edd565b7f00000000000000000000000000000000000000000000000000000000000000005b90506000613ef46001600160801b03861683614eaa565b90508684613f046012600a6151ef565b613f0e848a614f41565b613f189190614f41565b613f229190614f58565b613f2c9190614f2e565b979650505050505050565b6000613f456012600a6151ef565b613f4f8385614eaa565b613f599086614f41565b6110bf9190614f58565b60005b81518110156110745760006001600160a01b031660456000848481518110613f9057613f90614f7a565b602090810291909101810151518252810191909152604001600020546001600160a01b0316148015613ff2575060006001600160a01b0316828281518110613fda57613fda614f7a565b6020026020010151602001516001600160a01b031614155b61403e5760405162461bcd60e51b815260206004820152601b60248201527f41444d494e5f43414e4e4f545f42455f494e495449414c495a454400000000006044820152606401610d58565b81818151811061405057614050614f7a565b6020026020010151602001516045600084848151811061407257614072614f7a565b602002602001015160000151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508181815181106140c2576140c2614f7a565b6020026020010151602001516001600160a01b03167f83a9ddad961dcb7c6894c9585a16ff7792c2ec8281256a3cc7303ae830152dcf83838151811061410a5761410a614f7a565b60200260200101516000015160405161412591815260200190565b60405180910390a2600101613f66565b6001820154825460009190600160801b90046001600160801b031642819003614160575090506110c2565b845460009061417b9084906001600160801b03168488613e2c565b90508281146141ca57600186018190556040518181526001600160a01b038816907f5777ca300dfe5bead41006fbce4389794dbc0ed8d6cccebfaf94630aa04184bc9060200160405180910390a25b85546001600160801b03428116600160801b029116178655925050509392505050565b600019820160009081526020849052604081205464ffffffffff16821061423857506000198201600090815260208490526040902054600160281b90046001600160d81b03166110c2565b600060001984015b818111156142d15760028282030481036000818152602088815260409182902082518084019093525464ffffffffff8116808452600160281b9091046001600160d81b0316918301919091528690036142ab57602001516001600160d81b031693506110c292505050565b805164ffffffffff168611156142c3578193506142ca565b6001820392505b5050614240565b5060009081526020949094525050604090912054600160281b90046001600160d81b0316919050565b6000438211156143435760405162461bcd60e51b815260206004820152601460248201527324a72b20a624a22fa12627a1a5afa72aa6a122a960611b6044820152606401610d58565b6001600160a01b038316600090815260208590526040812054908190036143755761436d84611389565b915050611381565b6001600160a01b0384166000908152602087815260408083208380529091529020546001600160801b03168310156143b1576000915050611381565b6001600160a01b0384166000908152602087905260409020611ac5908285614678565b60606110bf8484600085614784565b6053546001600160a01b031680156144ba57806001600160a01b0316635b9c4cf1858561440f88611389565b61441888611389565b6040516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152604483015260648201526084810185905260a401600060405180830381600087803b15801561447357600080fd5b505af1925050508015614484575060015b6144ba573d8080156144b2576040519150601f19603f3d011682016040523d82523d6000602084013e6144b7565b606091505b50505b6001600160a01b038085166000908152603f60205260408082205486841683529120549082169116816144eb578591505b6001600160a01b0381166144fc5750835b6145098282866000613a9c565b6001600160a01b0380871660009081526042602052604080822054888416835291205490821691168161453a578791505b6001600160a01b03811661454b5750855b6145588282886001613a9c565b5050505050505050565b6001600160a01b038316600090815260208581526040808320549188905290912043919081158015906145c457506001600160801b0383168160006145a8600186614eaa565b81526020810191909152604001600020546001600160801b0316145b1561460857838160006145d8600186614eaa565b8152602081019190915260400160002080546001600160801b03928316600160801b029216919091179055614558565b6040805180820182526001600160801b038086168252868116602080840191825260008781529086905293909320915192518116600160801b029216919091179055614655826001614f2e565b6001600160a01b0387166000908152602089905260409020555050505050505050565b60001982016000908152602084905260408120546001600160801b031682106146c557506000198201600090815260208490526040902054600160801b90046001600160801b03166110c2565b600060001984015b8181111561475b576002828203048103600081815260208881526040918290208251808401909352546001600160801b03808216808552600160801b909204169183019190915286900361473357602001516001600160801b031693506110c292505050565b80516001600160801b031686111561474d57819350614754565b6001820392505b50506146cd565b5060009081526020949094525050604090912054600160801b90046001600160801b0316919050565b6060824710156147e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610d58565b600080866001600160a01b0316858760405161480191906151fb565b60006040518083038185875af1925050503d806000811461483e576040519150601f19603f3d011682016040523d82523d6000602084013e614843565b606091505b5091509150613f2c87838387606083156148be5782516000036148b7576001600160a01b0385163b6148b75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d58565b5081611381565b61138183838151156148d35781518083602001fd5b8060405162461bcd60e51b8152600401610d58919061497e565b6001600160a01b038116811461113057600080fd5b6000806040838503121561491557600080fd5b8235614920816148ed565b946020939093013593505050565b60005b83811015614949578181015183820152602001614931565b50506000910152565b6000815180845261496a81602086016020860161492e565b601f01601f19169290920160200192915050565b6020815260006110c26020830184614952565b6000602082840312156149a357600080fd5b81356110c2816148ed565b6000602082840312156149c057600080fd5b5035919050565b6000806000606084860312156149dc57600080fd5b83356149e7816148ed565b925060208401356149f7816148ed565b929592945050506040919091013590565b60008060408385031215614a1b57600080fd5b8235614a26816148ed565b91506020830135614a36816148ed565b809150509250929050565b803560028110614a5057600080fd5b919050565b60008060408385031215614a6857600080fd5b8235614a73816148ed565b9150614a8160208401614a41565b90509250929050565b803560ff81168114614a5057600080fd5b60008060008060008060c08789031215614ab457600080fd5b8635614abf816148ed565b95506020870135945060408701359350614adb60608801614a8a565b9598949750929560808101359460a0909101359350915050565b600060208284031215614b0757600080fd5b813563ffffffff811681146110c257600080fd5b60008060008060808587031215614b3157600080fd5b8435614b3c816148ed565b93506020850135614b4c816148ed565b93969395505050506040820135916060013590565b600080600080600060a08688031215614b7957600080fd5b8535614b84816148ed565b94506020860135614b94816148ed565b93506040860135614ba4816148ed565b94979396509394606081013594506080013592915050565b60008060408385031215614bcf57600080fd5b823591506020830135614a36816148ed565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715614c1a57614c1a614be1565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614c4957614c49614be1565b604052919050565b600060208284031215614c6357600080fd5b813567ffffffffffffffff811115614c7a57600080fd5b8201601f81018413614c8b57600080fd5b803567ffffffffffffffff811115614ca557614ca5614be1565b614cb460208260051b01614c20565b80828252602082019150602060608402850101925086831115614cd657600080fd5b6020840193505b82841015611ac55760608488031215614cf557600080fd5b614cfd614bf7565b84356001600160801b0381168114614d1457600080fd5b8152602085810135908201526040850135614d2e816148ed565b6040820152825260609390930192602090910190614cdd565b600080600060608486031215614d5c57600080fd5b8335614d67816148ed565b925060208401359150614d7c60408501614a41565b90509250925092565b600080600080600080600060e0888a031215614da057600080fd5b8735614dab816148ed565b96506020880135614dbb816148ed565b95506040880135945060608801359350614dd760808901614a8a565b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215614e0957600080fd5b8335614e14816148ed565b95602085013595506040909401359392505050565b600080600080600080600060e0888a031215614e4457600080fd5b8735614e4f816148ed565b9650614dbb60208901614a41565b60208082526019908201527f43414c4c45525f4e4f545f534c415348494e475f41444d494e00000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610f5457610f54614e94565b600181811c90821680614ed157607f821691505b602082108103614ef157634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526017908201527f43414c4c45525f4e4f545f434c41494d5f48454c504552000000000000000000604082015260600190565b80820180821115610f5457610f54614e94565b8082028115828204841417610f5457610f54614e94565b600082614f7557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215614fa257600080fd5b815180151581146110c257600080fd5b61190160f01b81526002810192909252602282015260420190565b602080825260119082015270494e56414c49445f5349474e415455524560781b604082015260600190565b60006001820161500a5761500a614e94565b5060010190565b60208082526012908201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604082015260600190565b634e487b7160e01b600052602160045260246000fd5b600063ffffffff821663ffffffff810361506f5761506f614e94565b60010192915050565b6020808252601390820152721253959053125117d6915493d7d05353d55395606a1b604082015260600190565b6001600160d81b038281168282160390811115610f5457610f54614e94565b600281106150e257634e487b7160e01b600052602160045260246000fd5b9052565b60208101610f5482846150c4565b828152604081016110c260208301846150c4565b6001815b60018411156151435780850481111561512757615127614e94565b600184161561513557908102905b60019390931c92800261510c565b935093915050565b60008261515a57506001610f54565b8161516757506000610f54565b816001811461517d5760028114615187576151a3565b6001915050610f54565b60ff84111561519857615198614e94565b50506001821b610f54565b5060208310610133831016604e8410600b84101617156151c6575081810a610f54565b6151d36000198484615108565b80600019048211156151e7576151e7614e94565b029392505050565b60006110c2838361514b565b6000825161520d81846020870161492e565b919091019291505056fea2646970667358221220dc4141c54f147a74523a233ff638b574b57c264a419d9d5121e460d2c489b01f64736f6c634300081b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104965760003560e01c80638c9a281d11610262578063aff05aa911610151578063dbc0ed8a116100ce578063eab5231811610092578063eab5231814610c65578063f036bc6814610c78578063f11b818814610c8c578063f34d96da14610cee578063f713d8a814610cf6578063fde9eb6914610d0957600080fd5b8063dbc0ed8a14610c1f578063dc937e1c14610c27578063dd62ed3e14610c3a578063dde43cba14610c4d578063e6aa216c14610c5457600080fd5b8063c2ffbb9111610115578063c2ffbb9114610bac578063c3863ada14610bbf578063c3cda52014610bd2578063cbcbb50714610be5578063d505accf14610c0c57600080fd5b8063aff05aa914610b4b578063b2a5dbfa14610b53578063b2f4201d14610b66578063b9844d8d14610b79578063c18f539a14610b9957600080fd5b80639a99b4f0116101df578063a9059cbb116101a3578063a9059cbb14610ae3578063aa9fbe0214610af6578063aaf5eb6814610b1d578063ab406fe614610b25578063adc9772e14610b3857600080fd5b80639a99b4f014610a8f5780639c9b515414610aa25780639e3ffce014610ab5578063a457c2d714610abd578063a6b63eb814610ad057600080fd5b8063946776cd11610226578063946776cd14610a13578063955e18af14610a3a57806395d89b4114610a4d578063981b24d014610a5557806399248ea714610a6857600080fd5b80638c9a281d146109325780638dbefee21461093a5780638e9b2ca41461094d5780638ef98e0e1461095c578063919cd40f146109ec57600080fd5b806345755dd6116103895780636f50458d1161030657806374011f56116102ca57806374011f56146108a457806378160376146108b7578063787a08a6146108d75780637b5b1157146108df5780637bb73c97146108f25780637e90d7ef1461091257600080fd5b80636f50458d1461085857806370a082311461086b578063727a5d571461087e57806372b49d631461082957806373d6a8891461089157600080fd5b80635b3cc0cf1161034d5780635b3cc0cf146107925780635c19a95c146107f157806360ba192b14610804578063616e0bf9146108295780636198e1351461083157600080fd5b806345755dd6146107095780634575e69b1461071c5780634998fffd146107455780634cdad5061461075857806358146d171461076b57600080fd5b806323b872dd116104175780633373ee4c116103db5780633373ee4c14610661578063359c4a961461069f5780633644e515146106c657806339509351146106cf57806341cbf54a146106e257600080fd5b806323b872dd146105d8578063250201db146105eb57806330adf81f146105fe578063312f6b8314610625578063313ce5671461064c57600080fd5b8063112d037c1161045e578063112d037c14610582578063174ed5421461059757806318160ddd146105aa5780631e9a6950146105b257806320fb80b5146105c557600080fd5b806302fb4d851461049b57806306fdde03146104c1578063091030c3146104d6578063095ea7b314610534578063111fd88b14610557575b600080fd5b6104ae6104a9366004614902565b610d1c565b6040519081526020015b60405180910390f35b6104c9610f5a565b6040516104b8919061497e565b61050f6104e4366004614991565b603e6020526000908152604090205464ffffffffff811690600160281b90046001600160d81b031682565b6040805164ffffffffff90931683526001600160d81b039091166020830152016104b8565b610547610542366004614902565b610fec565b60405190151581526020016104b8565b61056a6105653660046149ae565b611004565b6040516001600160a01b0390911681526020016104b8565b6105956105903660046149c7565b61101f565b005b60535461056a906001600160a01b031681565b6002546104ae565b6105956105c0366004614902565b611069565b6104ae6105d33660046149c7565b611078565b6105476105e63660046149c7565b6110c9565b6105956105f9366004614991565b6110ed565b6104ae7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61056a7f000000000000000000000000000000000000000000000000000000000000000081565b60125b60405160ff90911681526020016104b8565b6104ae61066f366004614a08565b6001600160a01b038082166000908152603c60209081526040808320938616835260029093019052205492915050565b6104ae7f000000000000000000000000000000000000000000000000000000000000000081565b6104ae60435481565b6105476106dd366004614902565b611133565b6104ae7f9a9a49b990ba9bb39f8048c490a40ab25c18f55d208d5fbcf958261a9b48716d81565b6105956107173660046149ae565b611155565b61056a61072a3660046149ae565b6000908152604660205260409020546001600160a01b031690565b610595610753366004614991565b6112ba565b6104ae6107663660046149ae565b611324565b61077a670de0b6b3a764000081565b6040516001600160d81b0390911681526020016104b8565b6107d16107a0366004614902565b60066020908152600092835260408084209091529082529020546001600160801b0380821691600160801b90041682565b604080516001600160801b039384168152929091166020830152016104b8565b6105956107ff366004614991565b61134f565b605154600160e01b900463ffffffff1660405163ffffffff90911681526020016104b8565b604f546104ae565b6104ae7f000000000000000000000000000000000000000000000000000000000000000081565b61056a610866366004614a55565b611367565b6104ae610879366004614991565b611389565b6104ae61088c3660046149ae565b6113a4565b61059561089f366004614a9b565b6113c7565b6105956108b23660046149ae565b611480565b6104c9604051806040016040528060018152602001603160f81b81525081565b6105956114c3565b6105956108ed3660046149ae565b6114ce565b6104ae610900366004614991565b60076020526000908152604090205481565b6104ae610920366004614991565b603d6020526000908152604090205481565b6104ae600081565b6104ae610948366004614991565b611541565b6104ae670de0b6b3a764000081565b6109c161096a366004614af5565b60408051808201909152600080825260208201525063ffffffff1660009081526052602090815260409182902082518084019093525464ffffffffff81168352600160281b90046001600160d81b03169082015290565b60408051825164ffffffffff1681526020928301516001600160d81b031692810192909252016104b8565b6104ae7f000000000000000000000000000000000000000000000000000000000000000081565b61056a7f000000000000000000000000000000000000000000000000000000000000000081565b6104ae610a48366004614902565b61161c565b6104c9611629565b6104ae610a633660046149ae565b611638565b61056a7f000000000000000000000000000000000000000000000000000000000000000081565b610595610a9d366004614902565b611643565b610595610ab0366004614b1b565b61164e565b6104ae600181565b610547610acb366004614902565b6116a5565b610595610ade366004614b61565b611720565b610547610af1366004614902565b611838565b6104ae7f10d8d059343739efce7dad10d09f0806da52b252b3e6a7951920d2d6ec4102e581565b61064f601281565b610595610b33366004614bbc565b611846565b610595610b46366004614902565b611909565b610595611914565b610595610b61366004614c51565b611986565b6104ae610b74366004614a55565b611a37565b6104ae610b87366004614991565b60446020526000908152604090205481565b6104ae610ba73660046149c7565b611a5f565b6104ae610bba366004614d47565b611aa6565b60085461056a906001600160a01b031681565b610595610be0366004614a9b565b611acf565b61056a7f000000000000000000000000000000000000000000000000000000000000000081565b610595610c1a366004614d85565b611c94565b6104ae600281565b610595610c35366004614a55565b611e5c565b6104ae610c48366004614a08565b611e67565b60016104ae565b6051546001600160d81b031661077a565b610595610c73366004614df4565b611e92565b60515461054790600160d81b900460ff1681565b610cc8610c9a366004614991565b603c60205260009081526040902080546001909101546001600160801b0380831692600160801b9004169083565b604080516001600160801b039485168152939092166020840152908201526060016104b8565b6050546104ae565b610595610d04366004614e29565b611ea9565b610595610d173660046149ae565b61207d565b6000610d286000611004565b6001600160a01b0316336001600160a01b031614610d615760405162461bcd60e51b8152600401610d5890614e5d565b60405180910390fd5b605154600160d81b900460ff1615610dbb5760405162461bcd60e51b815260206004820152601d60248201527f50524556494f55535f534c415348494e475f4e4f545f534554544c45440000006044820152606401610d58565b60008211610df95760405162461bcd60e51b815260206004820152600b60248201526a16915493d7d05353d5539560aa1b6044820152606401610d58565b6000610e0460025490565b90506000610e1182611324565b90506000610e2a6050548361214e90919063ffffffff16565b905080851115610e38578094505b7f0000000000000000000000000000000000000000000000000000000000000000610e638684614eaa565b1015610ea85760405162461bcd60e51b815260206004820152601460248201527352454d41494e494e475f4c545f4d494e494d554d60601b6044820152606401610d58565b6051805460ff60d81b1916600160d81b179055610ed6610ed1610ecb8785614eaa565b856121da565b612218565b610f0a6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001687876122bd565b856001600160a01b03167f4ed05e9673c26d2ed44f7ef6a7f2942df0ee3b5e1e17db4b99f9dcd261a339cd86604051610f4591815260200190565b60405180910390a28493505050505b92915050565b606060038054610f6990614ebd565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9590614ebd565b8015610fe25780601f10610fb757610100808354040283529160200191610fe2565b820191906000526020600020905b815481529060010190602001808311610fc557829003601f168201915b5050505050905090565b600033610ffa818585612320565b5060019392505050565b6000908152604560205260409020546001600160a01b031690565b6110296002611004565b6001600160a01b0316336001600160a01b0316146110595760405162461bcd60e51b8152600401610d5890614ef7565b611064838383612444565b505050565b611074338383612444565b5050565b60006110846002611004565b6001600160a01b0316336001600160a01b0316146110b45760405162461bcd60e51b8152600401610d5890614ef7565b6110bf8484846127c5565b90505b9392505050565b6000336110d78582856128fd565b6110e2858585612971565b506001949350505050565b6110f76002611004565b6001600160a01b0316336001600160a01b0316146111275760405162461bcd60e51b8152600401610d5890614ef7565b61113081612aa2565b50565b600033610ffa8185856111468383611e67565b6111509190614f2e565b612320565b7f00000000000000000000000000000000000000000000000000000000000000008110156111b95760405162461bcd60e51b8152602060048201526011602482015270414d4f554e545f4c545f4d494e494d554d60781b6044820152606401610d58565b60006111c460025490565b90507f000000000000000000000000000000000000000000000000000000000000000081101561122a5760405162461bcd60e51b81526020600482015260116024820152705348415245535f4c545f4d494e494d554d60781b6044820152606401610d58565b600061123582611324565b905061124d610ed16112478584614f2e565b846121da565b6112826001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086612b85565b6040518381527f278e51d3323fbf18b9fb8df3f8b97e31b145bc1146c52e764cf4aa1bfc4ba17d9060200160405180910390a1505050565b73ee56e2b3d491590b5b31738cc34d5232f378a8d533146112da57600080fd5b605380546001600160a01b0319166001600160a01b0383169081179091556040517f62bbced765bccc9ed93d0bae1b2a8c86e13b4663f8bf27d5936d9d619194c8a990600090a250565b6051546000906001600160d81b031661134583670de0b6b3a7640000614f41565b610f549190614f58565b61135b33826000612bbd565b61113033826001612bbd565b60008061137383612cbe565b925050506113818482612cfd565b949350505050565b6001600160a01b031660009081526020819052604090205490565b605154600090670de0b6b3a764000090611345906001600160d81b031684614f41565b60405163d505accf60e01b81526001600160a01b038781166004830152306024830152604482018790526064820186905260ff8516608483015260a4820184905260c482018390527f0000000000000000000000000000000000000000000000000000000000000000169063d505accf9060e401600060405180830381600087803b15801561145557600080fd5b505af1158015611469573d6000803e3d6000fd5b50505050611478868787612d28565b505050505050565b61148a6000611004565b6001600160a01b0316336001600160a01b0316146114ba5760405162461bcd60e51b8152600401610d5890614e5d565b61113081612ed5565b6114cc33612aa2565b565b6114d86001611004565b6001600160a01b0316336001600160a01b0316146115385760405162461bcd60e51b815260206004820152601960248201527f43414c4c45525f4e4f545f434f4f4c444f574e5f41444d494e000000000000006044820152606401610d58565b61113081612f62565b604080516001808252818301909252600091829190816020015b611588604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b81526020019060019003908161155b5790505090506040518060600160405280306001600160a01b031681526020016115c085611389565b81526020016115ce60025490565b815250816000815181106115e4576115e4614f7a565b60200260200101819052506115f98382612f97565b6001600160a01b0384166000908152603d60205260409020546110c29190614f2e565b60006110c233848461309a565b606060048054610f6990614ebd565b6000610f5460025490565b6110643383836127c5565b6116586002611004565b6001600160a01b0316336001600160a01b0316146116885760405162461bcd60e51b8152600401610d5890614ef7565b6116938484846127c5565b5061169f848483612444565b50505050565b600033816116b38286611e67565b9050838110156117135760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d58565b6110e28286868403612320565b600954600190811161178b5760405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201526d195b881a5b9a5d1a585b1a5e995960921b6064820152608401610d58565b600981905561179d8686868686613185565b60405163095ea7b360e01b815230600482015260001960248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063095ea7b3906044016020604051808303816000875af115801561180b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182f9190614f90565b50505050505050565b600033610ffa818585612971565b60008281526045602052604090205482906001600160a01b031633146118a65760405162461bcd60e51b815260206004820152601560248201527421a0a62622a92fa727aa2fa927a622afa0a226a4a760591b6044820152606401610d58565b60008381526046602090815260409182902080546001600160a01b0319166001600160a01b03861690811790915591518581527fc3d1bf52795a20771ee6de3e59948fd83e10db956122d4709a3b86c512963855910160405180910390a2505050565b611074338383612d28565b61191e6000611004565b6001600160a01b0316336001600160a01b03161461194e5760405162461bcd60e51b8152600401610d5890614e5d565b6051805460ff60d81b191690556040517fcdee157e87ba915be681d4fa3f3d511afe7348eca06448a3accd6ac227fa40af90600090a1565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146119f65760405162461bcd60e51b815260206004820152601560248201527427a7262cafa2a6a4a9a9a4a7a72fa6a0a720a3a2a960591b6044820152606401610d58565b60005b8151811015611a2d57600254828281518110611a1757611a17614f7a565b60209081029190910181015101526001016119f9565b50611130816132a9565b6000806000611a4584612cbe565b5091509150611a568282874361340d565b95945050505050565b6000611a6b6002611004565b6001600160a01b0316336001600160a01b031614611a9b5760405162461bcd60e51b8152600401610d5890614ef7565b6110bf84848461309a565b6000806000611ab484612cbe565b5091509150611ac58282888861340d565b9695505050505050565b604080517f9a9a49b990ba9bb39f8048c490a40ab25c18f55d208d5fbcf958261a9b48716d60208201526001600160a01b03881691810191909152606081018690526080810185905260009060a001604051602081830303815290604052805190602001209050600060435482604051602001611b4d929190614fb2565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015611bb8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611beb5760405162461bcd60e51b8152600401610d5890614fcd565b6001600160a01b0381166000908152604460205260408120805491611c0f83614ff8565b919050558814611c515760405162461bcd60e51b815260206004820152600d60248201526c494e56414c49445f4e4f4e434560981b6044820152606401610d58565b86421115611c715760405162461bcd60e51b8152600401610d5890615011565b611c7d818a6000612bbd565b611c89818a6001612bbd565b505050505050505050565b6001600160a01b038716611cda5760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b6044820152606401610d58565b83421115611cfa5760405162461bcd60e51b8152600401610d5890615011565b6001600160a01b0387811660008181526044602090815260408083205460435482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e086019092528151919092012090939192611d9192919061010001614fb2565b60408051601f1981840301815282825280516020918201206000845290830180835281905260ff8816918301919091526060820186905260808201859052915060019060a0016020604051602081039080840390855afa158015611df9573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611e335760405162461bcd60e51b8152600401610d5890614fcd565b6001600160a01b0389166000908152604460205260409020600183019055611c89898989612320565b611074338383612bbd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b611e9d3384846127c5565b50611064338483612444565b60007f10d8d059343739efce7dad10d09f0806da52b252b3e6a7951920d2d6ec4102e588886001811115611edf57611edf61503d565b6040805160208101949094526001600160a01b039092169183019190915260608201526080810187905260a0810186905260c001604051602081830303815290604052805190602001209050600060435482604051602001611f42929190614fb2565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015611fad573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611fe05760405162461bcd60e51b8152600401610d5890614fcd565b6001600160a01b038116600090815260446020526040812080549161200483614ff8565b9190505588146120465760405162461bcd60e51b815260206004820152600d60248201526c494e56414c49445f4e4f4e434560981b6044820152606401610d58565b864211156120665760405162461bcd60e51b8152600401610d5890615011565b612071818b8b612bbd565b50505050505050505050565b60008181526046602052604090205481906001600160a01b031633146120e55760405162461bcd60e51b815260206004820152601d60248201527f43414c4c45525f4e4f545f50454e44494e475f524f4c455f41444d494e0000006044820152606401610d58565b60008281526045602090815260408083208054336001600160a01b0319918216811790925560468452938290208054909416909355518481527f83a9ddad961dcb7c6894c9585a16ff7792c2ec8281256a3cc7303ae830152dcf91015b60405180910390a25050565b600082158061215b575081155b1561216857506000610f54565b61217482600019614f58565b8311156121c35760405162461bcd60e51b815260206004820152601c60248201527f4d4154485f4d554c5449504c49434154494f4e5f4f564552464c4f57000000006044820152606401610d58565b6127106121d08385614f41565b6110c29190614f58565b60006110c2836001816121f5670de0b6b3a764000087614f41565b6121ff9190614f2e565b6122099190614eaa565b6122139190614f58565b613456565b604051806040016040528061222c436134c3565b64ffffffffff90811682526001600160d81b038085166020938401526051805463ffffffff600160e01b9182900481166000908152605287526040902087519790960151909316600160281b0295909316949094179092558254601c926122969290910416615053565b91906101000a81548163ffffffff021916908363ffffffff16021790555061113081613529565b6040516001600160a01b03831660248201526044810182905261106490849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526135c5565b6001600160a01b0383166123825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d58565b6001600160a01b0382166123e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d58565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b806000036124645760405162461bcd60e51b8152600401610d5890615078565b6001600160a01b0383166000908152603e602090815260409182902082518084019093525464ffffffffff81168352600160281b90046001600160d81b031690820152605154600160d81b900460ff166125a457604f5481516124ce919064ffffffffff16614f2e565b4210156125155760405162461bcd60e51b815260206004820152601560248201527424a729aaa32324a1a4a2a72a2fa1a7a7a62227aba760591b6044820152606401610d58565b604f5481517f00000000000000000000000000000000000000000000000000000000000000009161254c9164ffffffffff16614f2e565b6125569042614eaa565b11156125a45760405162461bcd60e51b815260206004820152601760248201527f554e5354414b455f57494e444f575f46494e49534845440000000000000000006044820152606401610d58565b60006125af85611389565b605154909150600090600160d81b900460ff166125d95782602001516001600160d81b03166125db565b815b90508060000361262d5760405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f5a45524f5f4d41585f52454445454d41424c4500000000006044820152606401610d58565b600081851161263c578461263e565b815b905061264c87846001613697565b50600061265882611324565b90506126648883613746565b845164ffffffffff1615612731578185602001516001600160d81b031661268b9190614eaa565b6000036126b0576001600160a01b0388166000908152603e6020526040812055612731565b6126b982613884565b6001600160a01b0389166000908152603e60205260409020546126f5916001600160b81b031690600160281b90046001600160d81b03166150a5565b6001600160a01b0389166000908152603e6020526040902080546001600160d81b0392909216600160281b0264ffffffffff9092169190911790555b6127656001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001688836122bd565b866001600160a01b0316886001600160a01b03167f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc83856040516127b3929190918252602082015260400190565b60405180910390a35050505050505050565b6000816000036127e75760405162461bcd60e51b8152600401610d5890615078565b60006127fd856127f687611389565b6000613697565b9050600081841161280e5783612810565b815b9050806000036128325760405162461bcd60e51b8152600401610d5890615078565b61283c8183614eaa565b6001600160a01b038088166000908152603d60205260409020919091556128a7907f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008784612b85565b846001600160a01b0316866001600160a01b03167f9310ccfcb8de723f578a9e4282ea9f521f05ae40dc08f3068dfad528a65ee3c7836040516128ec91815260200190565b60405180910390a395945050505050565b60006129098484611e67565b9050600019811461169f57818110156129645760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d58565b61169f8484848403612320565b600061297c84611389565b905061298a84826001613697565b50826001600160a01b0316846001600160a01b031614612a975760006129af84611389565b90506129bd84826001613697565b506001600160a01b0385166000908152603e602090815260409182902082518084019093525464ffffffffff8116808452600160281b9091046001600160d81b03169183019190915215612a9457838303612a30576001600160a01b0386166000908152603e6020526040812055612a94565b60208101516001600160d81b0316612a488585614eaa565b1015612a9457612a588484614eaa565b6001600160a01b0387166000908152603e6020526040902080546001600160d81b0392909216600160281b0264ffffffffff9092169190911790555b50505b61169f8484846138ed565b6000612aad82611389565b905080600003612aff5760405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f42414c414e43455f4f4e5f434f4f4c444f574e00000000006044820152606401610d58565b60408051808201825264ffffffffff42811682526001600160d81b0380851660208085019182526001600160a01b0388166000818152603e9092529086902094519151909216600160281b0292169190911790915590517f8a05f911d8ab7fc50fec37ef4ba7f9bfcb1a3c191c81dcd824ad0946c4e20d65906121429084815260200190565b6040516001600160a01b038085166024830152831660448201526064810182905261169f9085906323b872dd60e01b906084016122e9565b6001600160a01b038216612c075760405162461bcd60e51b8152602060048201526011602482015270494e56414c49445f44454c45474154454560781b6044820152606401610d58565b6000612c1282612cbe565b925050506000612c2185611389565b90506000612c2f8684612cfd565b6001600160a01b03878116600090815260208690526040902080546001600160a01b0319169188169190911790559050612c6b81868487613a9c565b846001600160a01b0316866001600160a01b03167fe8d51c8e11bd570db1734c8ec775785330e77007feed45c43b608ef33ff914bd86604051612cae91906150e6565b60405180910390a3505050505050565b6000808080846001811115612cd557612cd561503d565b03612cea57506006915060079050603f612cf6565b50604091506041905060425b9193909250565b6001600160a01b03808316600090815260208390526040812054909116806110c25783915050610f54565b605154600160d81b900460ff1615612d755760405162461bcd60e51b815260206004820152601060248201526f534c415348494e475f4f4e474f494e4760801b6044820152606401610d58565b80600003612d955760405162461bcd60e51b8152600401610d5890615078565b6000612da083611389565b90506000612db8843084612db360025490565b613ca0565b90508015612e3b576001600160a01b0384166000908152603d6020526040902054612de4908290614f2e565b6001600160a01b0385166000818152603d60209081526040918290209390935580519182529181018390527f2468f9268c60ad90e2d49edb0032c8a001e733ae888b3ab8e982edf535be1a76910160405180910390a15b6000612e46846113a4565b9050612e7d6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016873087612b85565b612e878582613d61565b846001600160a01b0316866001600160a01b03167f6c86f3fd5118b3aa8bb4f389a617046de0a3d3d477de1a1673d227f802f616dc8684604051612cae929190918252602082015260400190565b6127108110612f265760405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f534c415348494e475f50455243454e5441474500000000006044820152606401610d58565b60508190556040518181527fb79c2d6c7f5c95eec9dc05affc0ed002620a4ec6d72b7b0744cc8638168c600a906020015b60405180910390a150565b604f8190556040518181527fbbf67247b5c97564e30ffc0a355e71c006836de7b9149e09e3d5d6054cb0335590602001612f57565b600080805b8351811015613092576000603c6000868481518110612fbd57612fbd614f7a565b602090810291909101810151516001600160a01b03168252810191909152604001600090812060018101548154885192945061302b926001600160801b0380831692600160801b900416908a908890811061301a5761301a614f7a565b602002602001015160400151613e2c565b905061307c86848151811061304257613042614f7a565b602002602001015160200151828460020160008b6001600160a01b03166001600160a01b0316815260200190815260200160002054613f37565b6130869085614f2e565b93505050600101612f9c565b509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461313d5760405162461bcd60e51b815260206004820181905260248201527f5245574152445f544f4b454e5f49535f4e4f545f5354414b45445f544f4b454e6044820152606401610d58565b60006131538561314c87611389565b6001613697565b905060008184116131645783613166565b815b90508015611a56576131798630836127c5565b50611a56308683612d28565b60408051600380825260808201909252600091816020015b604080518082019091526000808252602082015281526020019060019003908161319d579050509050604051806040016040528060008152602001876001600160a01b0316815250816000815181106131f8576131f8614f7a565b6020026020010181905250604051806040016040528060018152602001866001600160a01b03168152508160018151811061323557613235614f7a565b6020026020010181905250604051806040016040528060028152602001856001600160a01b03168152508160028151811061327257613272614f7a565b602002602001018190525061328681613f63565b61328f83612ed5565b61329882612f62565b611478670de0b6b3a7640000612218565b60005b8151811015611074576000603c60008484815181106132cd576132cd614f7a565b6020026020010151604001516001600160a01b03166001600160a01b03168152602001908152602001600020905061334083838151811061331057613310614f7a565b6020026020010151604001518285858151811061332f5761332f614f7a565b602002602001015160200151614135565b5082828151811061335357613353614f7a565b60209081029190910101515181546fffffffffffffffffffffffffffffffff19166001600160801b03909116178155825183908390811061339657613396614f7a565b6020026020010151604001516001600160a01b03167f87fa03892a0556cb6b8f97e6d533a150d4d55fcbf275fff5fa003fa636bcc7fa8484815181106133de576133de614f7a565b602090810291909101810151516040516001600160801b0390911681520160405180910390a2506001016132ac565b60515460009061342d90605290600160e01b900463ffffffff16846141ed565b670de0b6b3a7640000613442878787876142fa565b61344c9190614f41565b611a569190614f58565b60006001600160d81b038211156134bf5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663136206269747360c81b6064820152608401610d58565b5090565b600064ffffffffff8211156134bf5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526530206269747360d01b6064820152608401610d58565b806001600160d81b03166000036135775760405162461bcd60e51b81526020600482015260126024820152715a45524f5f45584348414e47455f5241544560701b6044820152606401610d58565b605180546001600160d81b0319166001600160d81b0383169081179091556040519081527fa9c433f9734baa3cf48b209454bb0ace054e191f677ba50e74b696c0d35ef26290602001612f57565b600061361a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166143d49092919063ffffffff16565b80519091501561106457808060200190518101906136389190614f90565b6110645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d58565b6000806136a9853086612db360025490565b6001600160a01b0386166000908152603d6020526040812054919250906136d1908390614f2e565b90508115611a565783156136fb576001600160a01b0386166000908152603d602052604090208190555b604080516001600160a01b0388168152602081018490527f2468f9268c60ad90e2d49edb0032c8a001e733ae888b3ab8e982edf535be1a76910160405180910390a195945050505050565b6001600160a01b0382166137a65760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610d58565b6137b2826000836143e3565b6001600160a01b038216600090815260208190526040902054818110156138265760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610d58565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60006001600160b81b038211156134bf5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663834206269747360c81b6064820152608401610d58565b6001600160a01b0383166139515760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d58565b6001600160a01b0382166139b35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d58565b6139be8383836143e3565b6001600160a01b03831660009081526020819052604090205481811015613a365760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d58565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361169f565b826001600160a01b0316846001600160a01b0316031561169f57600080613ac283612cbe565b5090925090506001600160a01b03861615613bb3576001600160a01b0386166000908152602082905260408120548015613b42576001600160a01b038816600090815260208590526040812090613b1a600184614eaa565b8152602081019190915260400160002054600160801b90046001600160801b03169150613b4e565b613b4b88611389565b91505b613b6484848a85613b5f8b82614eaa565b614562565b6001600160a01b0388167fa0a19463ee116110c9b282012d9b65cc5522dc38a9520340cbaf3142e550127f613b998885614eaa565b87604051613ba89291906150f4565b60405180910390a250505b6001600160a01b03851615611478576001600160a01b0385166000908152602082905260408120548015613c2d576001600160a01b038716600090815260208590526040812090613c05600184614eaa565b8152602081019190915260400160002054600160801b90046001600160801b03169150613c39565b613c3687611389565b91505b613c4a84848985613b5f8b82614f2e565b6001600160a01b0387167fa0a19463ee116110c9b282012d9b65cc5522dc38a9520340cbaf3142e550127f613c7f8885614f2e565b87604051613c8e9291906150f4565b60405180910390a25050505050505050565b6001600160a01b038084166000908152603c602090815260408083209388168352600284019091528120549091908280613cdb888588614135565b9050808314613d55578615613cf857613cf5878285613f37565b91505b6001600160a01b03808a1660008181526002870160205260409081902084905551918a16917fbb123b5c06d5408bbea3c4fef481578175cfb432e3b482c6186f02ed9086585b90613d4c9085815260200190565b60405180910390a35b50979650505050505050565b6001600160a01b038216613db75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610d58565b613dc3600083836143e3565b8060026000828254613dd59190614f2e565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000831580613e39575081155b80613e4c575042836001600160801b0316145b80613e8057507f0000000000000000000000000000000000000000000000000000000000000000836001600160801b031610155b15613e8c575083611381565b60007f00000000000000000000000000000000000000000000000000000000000000004211613ebb5742613edd565b7f00000000000000000000000000000000000000000000000000000000000000005b90506000613ef46001600160801b03861683614eaa565b90508684613f046012600a6151ef565b613f0e848a614f41565b613f189190614f41565b613f229190614f58565b613f2c9190614f2e565b979650505050505050565b6000613f456012600a6151ef565b613f4f8385614eaa565b613f599086614f41565b6110bf9190614f58565b60005b81518110156110745760006001600160a01b031660456000848481518110613f9057613f90614f7a565b602090810291909101810151518252810191909152604001600020546001600160a01b0316148015613ff2575060006001600160a01b0316828281518110613fda57613fda614f7a565b6020026020010151602001516001600160a01b031614155b61403e5760405162461bcd60e51b815260206004820152601b60248201527f41444d494e5f43414e4e4f545f42455f494e495449414c495a454400000000006044820152606401610d58565b81818151811061405057614050614f7a565b6020026020010151602001516045600084848151811061407257614072614f7a565b602002602001015160000151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508181815181106140c2576140c2614f7a565b6020026020010151602001516001600160a01b03167f83a9ddad961dcb7c6894c9585a16ff7792c2ec8281256a3cc7303ae830152dcf83838151811061410a5761410a614f7a565b60200260200101516000015160405161412591815260200190565b60405180910390a2600101613f66565b6001820154825460009190600160801b90046001600160801b031642819003614160575090506110c2565b845460009061417b9084906001600160801b03168488613e2c565b90508281146141ca57600186018190556040518181526001600160a01b038816907f5777ca300dfe5bead41006fbce4389794dbc0ed8d6cccebfaf94630aa04184bc9060200160405180910390a25b85546001600160801b03428116600160801b029116178655925050509392505050565b600019820160009081526020849052604081205464ffffffffff16821061423857506000198201600090815260208490526040902054600160281b90046001600160d81b03166110c2565b600060001984015b818111156142d15760028282030481036000818152602088815260409182902082518084019093525464ffffffffff8116808452600160281b9091046001600160d81b0316918301919091528690036142ab57602001516001600160d81b031693506110c292505050565b805164ffffffffff168611156142c3578193506142ca565b6001820392505b5050614240565b5060009081526020949094525050604090912054600160281b90046001600160d81b0316919050565b6000438211156143435760405162461bcd60e51b815260206004820152601460248201527324a72b20a624a22fa12627a1a5afa72aa6a122a960611b6044820152606401610d58565b6001600160a01b038316600090815260208590526040812054908190036143755761436d84611389565b915050611381565b6001600160a01b0384166000908152602087815260408083208380529091529020546001600160801b03168310156143b1576000915050611381565b6001600160a01b0384166000908152602087905260409020611ac5908285614678565b60606110bf8484600085614784565b6053546001600160a01b031680156144ba57806001600160a01b0316635b9c4cf1858561440f88611389565b61441888611389565b6040516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152604483015260648201526084810185905260a401600060405180830381600087803b15801561447357600080fd5b505af1925050508015614484575060015b6144ba573d8080156144b2576040519150601f19603f3d011682016040523d82523d6000602084013e6144b7565b606091505b50505b6001600160a01b038085166000908152603f60205260408082205486841683529120549082169116816144eb578591505b6001600160a01b0381166144fc5750835b6145098282866000613a9c565b6001600160a01b0380871660009081526042602052604080822054888416835291205490821691168161453a578791505b6001600160a01b03811661454b5750855b6145588282886001613a9c565b5050505050505050565b6001600160a01b038316600090815260208581526040808320549188905290912043919081158015906145c457506001600160801b0383168160006145a8600186614eaa565b81526020810191909152604001600020546001600160801b0316145b1561460857838160006145d8600186614eaa565b8152602081019190915260400160002080546001600160801b03928316600160801b029216919091179055614558565b6040805180820182526001600160801b038086168252868116602080840191825260008781529086905293909320915192518116600160801b029216919091179055614655826001614f2e565b6001600160a01b0387166000908152602089905260409020555050505050505050565b60001982016000908152602084905260408120546001600160801b031682106146c557506000198201600090815260208490526040902054600160801b90046001600160801b03166110c2565b600060001984015b8181111561475b576002828203048103600081815260208881526040918290208251808401909352546001600160801b03808216808552600160801b909204169183019190915286900361473357602001516001600160801b031693506110c292505050565b80516001600160801b031686111561474d57819350614754565b6001820392505b50506146cd565b5060009081526020949094525050604090912054600160801b90046001600160801b0316919050565b6060824710156147e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610d58565b600080866001600160a01b0316858760405161480191906151fb565b60006040518083038185875af1925050503d806000811461483e576040519150601f19603f3d011682016040523d82523d6000602084013e614843565b606091505b5091509150613f2c87838387606083156148be5782516000036148b7576001600160a01b0385163b6148b75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d58565b5081611381565b61138183838151156148d35781518083602001fd5b8060405162461bcd60e51b8152600401610d58919061497e565b6001600160a01b038116811461113057600080fd5b6000806040838503121561491557600080fd5b8235614920816148ed565b946020939093013593505050565b60005b83811015614949578181015183820152602001614931565b50506000910152565b6000815180845261496a81602086016020860161492e565b601f01601f19169290920160200192915050565b6020815260006110c26020830184614952565b6000602082840312156149a357600080fd5b81356110c2816148ed565b6000602082840312156149c057600080fd5b5035919050565b6000806000606084860312156149dc57600080fd5b83356149e7816148ed565b925060208401356149f7816148ed565b929592945050506040919091013590565b60008060408385031215614a1b57600080fd5b8235614a26816148ed565b91506020830135614a36816148ed565b809150509250929050565b803560028110614a5057600080fd5b919050565b60008060408385031215614a6857600080fd5b8235614a73816148ed565b9150614a8160208401614a41565b90509250929050565b803560ff81168114614a5057600080fd5b60008060008060008060c08789031215614ab457600080fd5b8635614abf816148ed565b95506020870135945060408701359350614adb60608801614a8a565b9598949750929560808101359460a0909101359350915050565b600060208284031215614b0757600080fd5b813563ffffffff811681146110c257600080fd5b60008060008060808587031215614b3157600080fd5b8435614b3c816148ed565b93506020850135614b4c816148ed565b93969395505050506040820135916060013590565b600080600080600060a08688031215614b7957600080fd5b8535614b84816148ed565b94506020860135614b94816148ed565b93506040860135614ba4816148ed565b94979396509394606081013594506080013592915050565b60008060408385031215614bcf57600080fd5b823591506020830135614a36816148ed565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715614c1a57614c1a614be1565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614c4957614c49614be1565b604052919050565b600060208284031215614c6357600080fd5b813567ffffffffffffffff811115614c7a57600080fd5b8201601f81018413614c8b57600080fd5b803567ffffffffffffffff811115614ca557614ca5614be1565b614cb460208260051b01614c20565b80828252602082019150602060608402850101925086831115614cd657600080fd5b6020840193505b82841015611ac55760608488031215614cf557600080fd5b614cfd614bf7565b84356001600160801b0381168114614d1457600080fd5b8152602085810135908201526040850135614d2e816148ed565b6040820152825260609390930192602090910190614cdd565b600080600060608486031215614d5c57600080fd5b8335614d67816148ed565b925060208401359150614d7c60408501614a41565b90509250925092565b600080600080600080600060e0888a031215614da057600080fd5b8735614dab816148ed565b96506020880135614dbb816148ed565b95506040880135945060608801359350614dd760808901614a8a565b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215614e0957600080fd5b8335614e14816148ed565b95602085013595506040909401359392505050565b600080600080600080600060e0888a031215614e4457600080fd5b8735614e4f816148ed565b9650614dbb60208901614a41565b60208082526019908201527f43414c4c45525f4e4f545f534c415348494e475f41444d494e00000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610f5457610f54614e94565b600181811c90821680614ed157607f821691505b602082108103614ef157634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526017908201527f43414c4c45525f4e4f545f434c41494d5f48454c504552000000000000000000604082015260600190565b80820180821115610f5457610f54614e94565b8082028115828204841417610f5457610f54614e94565b600082614f7557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215614fa257600080fd5b815180151581146110c257600080fd5b61190160f01b81526002810192909252602282015260420190565b602080825260119082015270494e56414c49445f5349474e415455524560781b604082015260600190565b60006001820161500a5761500a614e94565b5060010190565b60208082526012908201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604082015260600190565b634e487b7160e01b600052602160045260246000fd5b600063ffffffff821663ffffffff810361506f5761506f614e94565b60010192915050565b6020808252601390820152721253959053125117d6915493d7d05353d55395606a1b604082015260600190565b6001600160d81b038281168282160390811115610f5457610f54614e94565b600281106150e257634e487b7160e01b600052602160045260246000fd5b9052565b60208101610f5482846150c4565b828152604081016110c260208301846150c4565b6001815b60018411156151435780850481111561512757615127614e94565b600184161561513557908102905b60019390931c92800261510c565b935093915050565b60008261515a57506001610f54565b8161516757506000610f54565b816001811461517d5760028114615187576151a3565b6001915050610f54565b60ff84111561519857615198614e94565b50506001821b610f54565b5060208310610133831016604e8410600b84101617156151c6575081810a610f54565b6151d36000198484615108565b80600019048211156151e7576151e7614e94565b029392505050565b60006110c2838361514b565b6000825161520d81846020870161492e565b919091019291505056fea2646970667358221220dc4141c54f147a74523a233ff638b574b57c264a419d9d5121e460d2c489b01f64736f6c634300081b0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
