{
  "_format": "hh-sol-artifact-1",
  "contractName": "Unwrapper",
  "sourceName": "contracts/primitives/Unwrapper.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "who",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "what",
          "type": "bytes4"
        },
        {
          "internalType": "uint256[]",
          "name": "how",
          "type": "uint256[]"
        }
      ],
      "name": "AuthSenderNotAllowed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "a",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "aInflated",
          "type": "uint256"
        }
      ],
      "name": "FixedPointDivInternal",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "a",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "b",
          "type": "uint256"
        }
      ],
      "name": "FixedPointMulOverflow",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FixedPointZeroDivision",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskAcceptanceInputLengthMismatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskAcceptanceTokenZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskAmountZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskGasNotInitialized",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "gasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "gasPriceLimit",
          "type": "uint256"
        }
      ],
      "name": "TaskGasPriceLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "date",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidAllowedDate",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "window",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidAllowedWindow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "frequency",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidFrequency",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        }
      ],
      "name": "TaskInvalidFrequencyMode",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidThresholdInput",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidVolumeLimitInput",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskPaused",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "priorityFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "priorityFeeLimit",
          "type": "uint256"
        }
      ],
      "name": "TaskPriorityFeeLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "connectorId",
          "type": "bytes32"
        }
      ],
      "name": "TaskSameBalanceConnectors",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "smartVault",
          "type": "address"
        }
      ],
      "name": "TaskSmartVaultPriceOracleNotSet",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskThresholdTokenZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "currentTimestamp",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiration",
          "type": "uint256"
        }
      ],
      "name": "TaskTimeLockActive",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "TaskTokenNotAllowed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskTokenNotWrapped",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "TaskTokenThresholdNotMet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "txCost",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "txCostLimit",
          "type": "uint256"
        }
      ],
      "name": "TaskTxCostLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskTxCostLimitPctAboveOne",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "txCostPct",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "txCostLimitPct",
          "type": "uint256"
        }
      ],
      "name": "TaskTxCostLimitPctExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskUnpaused",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "limit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "volume",
          "type": "uint256"
        }
      ],
      "name": "TaskVolumeLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskVolumeLimitTokenZero",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previous",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "next",
          "type": "bytes32"
        }
      ],
      "name": "BalanceConnectorsSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "CustomTokenThresholdSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        }
      ],
      "name": "CustomVolumeLimitSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "DefaultTokenThresholdSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        }
      ],
      "name": "DefaultVolumeLimitSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Executed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "gasPriceLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "priorityFeeLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "txCostLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "txCostLimitPct",
          "type": "uint256"
        }
      ],
      "name": "GasLimitsSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allowedAt",
          "type": "uint256"
        }
      ],
      "name": "TimeLockAllowedAtSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "frequency",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allowedAt",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "window",
          "type": "uint256"
        }
      ],
      "name": "TimeLockSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "added",
          "type": "bool"
        }
      ],
      "name": "TokensAcceptanceListSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "enum ITokenIndexedTask.TokensAcceptanceType",
          "name": "acceptanceType",
          "type": "uint8"
        }
      ],
      "name": "TokensAcceptanceTypeSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "EXECUTION_TYPE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "authorizer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "call",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "customTokenThreshold",
      "outputs": [
        {
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "customVolumeLimit",
      "outputs": [
        {
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "accrued",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "nextResetTime",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultTokenThreshold",
      "outputs": [
        {
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultVolumeLimit",
      "outputs": [
        {
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "accrued",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "nextResetTime",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getBalanceConnectors",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "previous",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "next",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getGasLimits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "gasPriceLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "priorityFeeLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "txCostLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "txCostLimitPct",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "getTaskAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTimeLock",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "frequency",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "allowedAt",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "window",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "getTokenThreshold",
      "outputs": [
        {
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTokensSource",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "getVolumeLimit",
      "outputs": [
        {
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "accrued",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "nextResetTime",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "smartVault",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "previousBalanceConnectorId",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "nextBalanceConnectorId",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct BaseTask.BaseConfig",
                  "name": "baseConfig",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "gasPriceLimit",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "priorityFeeLimit",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "txCostLimit",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "txCostLimitPct",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct GasLimitedTask.GasLimitConfig",
                  "name": "gasLimitConfig",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "mode",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "frequency",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "allowedAt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "window",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct TimeLockedTask.TimeLockConfig",
                  "name": "timeLockConfig",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ITokenIndexedTask.TokensAcceptanceType",
                      "name": "acceptanceType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address[]",
                      "name": "tokens",
                      "type": "address[]"
                    }
                  ],
                  "internalType": "struct TokenIndexedTask.TokenIndexConfig",
                  "name": "tokenIndexConfig",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "min",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "max",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct TokenThresholdTask.Threshold",
                      "name": "defaultThreshold",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "min",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "max",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct TokenThresholdTask.Threshold",
                          "name": "threshold",
                          "type": "tuple"
                        }
                      ],
                      "internalType": "struct TokenThresholdTask.CustomThresholdConfig[]",
                      "name": "customThresholdConfigs",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct TokenThresholdTask.TokenThresholdConfig",
                  "name": "tokenThresholdConfig",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "period",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct VolumeLimitedTask.VolumeLimitParams",
                      "name": "defaultVolumeLimit",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "amount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "period",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct VolumeLimitedTask.VolumeLimitParams",
                          "name": "volumeLimit",
                          "type": "tuple"
                        }
                      ],
                      "internalType": "struct VolumeLimitedTask.CustomVolumeLimitConfig[]",
                      "name": "customVolumeLimitConfigs",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct VolumeLimitedTask.VolumeLimitConfig",
                  "name": "volumeLimitConfig",
                  "type": "tuple"
                }
              ],
              "internalType": "struct Task.TaskConfig",
              "name": "taskConfig",
              "type": "tuple"
            }
          ],
          "internalType": "struct Unwrapper.UnwrapConfig",
          "name": "config",
          "type": "tuple"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isPaused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "isTokenAllowed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "previous",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "next",
          "type": "bytes32"
        }
      ],
      "name": "setBalanceConnectors",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "setCustomTokenThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "limitAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "limitPeriod",
          "type": "uint256"
        }
      ],
      "name": "setCustomVolumeLimit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "setDefaultTokenThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "limitAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "limitPeriod",
          "type": "uint256"
        }
      ],
      "name": "setDefaultVolumeLimit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newGasPriceLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newPriorityFeeLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newTxCostLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newTxCostLimitPct",
          "type": "uint256"
        }
      ],
      "name": "setGasLimits",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "frequency",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "allowedAt",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "window",
          "type": "uint256"
        }
      ],
      "name": "setTimeLock",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "bool[]",
          "name": "added",
          "type": "bool[]"
        }
      ],
      "name": "setTokensAcceptanceList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum ITokenIndexedTask.TokensAcceptanceType",
          "name": "newTokensAcceptanceType",
          "type": "uint8"
        }
      ],
      "name": "setTokensAcceptanceType",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "smartVault",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokensAcceptanceType",
      "outputs": [
        {
          "internalType": "enum ITokenIndexedTask.TokensAcceptanceType",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6144c680620000f36000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80636aacaad811610104578063b187bd26116100a2578063d45a76cf11610071578063d45a76cf1461059d578063d534ef21146105b0578063e6b5be98146105c3578063f9eaee0d146105d657600080fd5b8063b187bd2614610543578063c267621e14610560578063d09edf3114610571578063d3feb6021461058a57600080fd5b806390333ba8116100de57806390333ba814610490578063a0c3774f146104a3578063a3374177146104b6578063a5900c4d146104e957600080fd5b80636aacaad8146104295780637125590a146104755780638456cb591461048857600080fd5b80633f4ba83a1161017c5780634fd49efd1161014b5780634fd49efd1461037f57806351a424b1146103aa5780635670e2ce146103e25780635ea54eee146103fd57600080fd5b80633f4ba83a14610315578063423a4b401461031d57806342d4693e146103305780634a45a3a81461034a57600080fd5b8063221a8c68116101b8578063221a8c68146102385780632384c32d146102dc57806330eae572146102ef5780633bd9ef281461030257600080fd5b80630fe105e8146101df578063119a5e96146101f45780632197238414610225575b600080fd5b6101f26101ed366004613a0d565b6105e9565b005b6101fc610622565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b6101f2610233366004613bda565b610659565b6102aa610246366004613c9e565b6001600160a01b039081166000908152601b6020908152604091829020825160a08101845281549094168085526001820154928501839052600282015493850184905260038201546060860181905260049092015460809095018590529491939091565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a00161021c565b6101f26102ea366004613cbb565b610709565b6101f26102fd366004613d10565b610738565b6101f2610310366004613d2b565b610779565b6101f2610839565b6101f261032b366004613cbb565b6108c0565b600f5461033d9060ff1681565b60405161021c9190613d6d565b6103717fca244260aa6b092a9352667c3ad94dc08b2739e94c9a9ac0429c266d77677cda81565b60405190815260200161021c565b600154610392906001600160a01b031681565b6040516001600160a01b03909116815260200161021c565b6103bd6103b8366004613c9e565b6108ef565b604080516001600160a01b03909416845260208401929092529082015260600161021c565b6002546003546040805192835260208301919091520161021c565b60065460075460085460095460408051948552602085019390935291830152606082015260800161021c565b6102aa6040805160a0810182526016546001600160a01b03168082526017546020830181905260185493830184905260195460608401819052601a546080909401849052919490939290565b6101f2610483366004613d95565b610918565b6101f2610943565b6101f261049e366004613db7565b6109b5565b6103716104b1366004613c9e565b6109e8565b6103bd604080516060810182526012546001600160a01b0316808252601354602083018190526014549290930182905292565b6103bd6104f7366004613c9e565b6001600160a01b03808216600090815260156020908152604091829020825160608101845281549094168085526001820154928501839052600290910154939092018390529093909250565b6004546105509060ff1681565b604051901515815260200161021c565b6001546001600160a01b0316610392565b600054610392906201000090046001600160a01b031681565b6101f2610598366004613db7565b610a7f565b6102aa6105ab366004613c9e565b610aac565b6101f26105be366004614034565b610b1b565b6101f26105d1366004614151565b610c41565b6105506105e4366004613c9e565b610c70565b6105f88460ff16848484610cbb565b61060f336000356001600160e01b03191683610d66565b61061b85858585610dad565b5050505050565b600a5460009081908190819060ff16600281111561064257610642613d57565b600b54600c54600e54935093509350935090919293565b61066f336000356001600160e01b031916611052565b80518251146106aa576040517f5d32021a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610704576106f28382815181106106cb576106cb614183565b60200260200101518383815181106106e5576106e5614183565b602002602001015161106e565b806106fc816141af565b9150506106ad565b505050565b61071584848484611118565b61072c336000356001600160e01b03191683610d66565b61061b85858585611181565b61075581600181111561074d5761074d613d57565b60ff1661123a565b61076c336000356001600160e01b03191683610d66565b61077582611281565b5050565b61078382826112de565b61079a336000356001600160e01b03191683610d66565b816000036107ae576107ab836109e8565b91505b6107b8838361134d565b6001546040517fde0e9a3e000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b039091169063de0e9a3e90602401600060405180830381600087803b15801561081757600080fd5b505af115801561082b573d6000803e3d6000fd5b5050505061070483836113e3565b61084f336000356001600160e01b031916611052565b60045460ff1661088b576040517f9e6558bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b6108cc84848484611118565b6108e3336000356001600160e01b03191683610d66565b61061b8585858561140b565b6000806000806108fe856114cb565b805160208201516040909201519097919650945092505050565b6109228282611556565b610939336000356001600160e01b03191683610d66565b61070483836115b0565b610959336000356001600160e01b031916611052565b60045460ff161561097d5760405163181e462560e31b815260040160405180910390fd5b6004805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6109c0838383611633565b6109d7336000356001600160e01b03191683610d66565b6109e28484846116c5565b50505050565b6001546002546040517ebc489400000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038381166024830152600092169062bc489490604401602060405180830381865afa158015610a55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7991906141c8565b92915050565b610a8a838383611633565b610aa1336000356001600160e01b03191683610d66565b6109e284848461171b565b600080600080600080610abe87611777565b6040805160a08101825282546001600160a01b031680825260018401546020830181905260028501549383018490526003850154606084018190526004909501546080909301839052909b909a5091985091965090945092505050565b600054610100900460ff1615808015610b3b5750600054600160ff909116105b80610b555750303b158015610b55575060005460ff166001145b610bcc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610bef576000805461ff0019166101001790555b610bf8826117ab565b8015610775576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b610c4d84848484610cbb565b610c64336000356001600160e01b03191683610d66565b61061b8585858561181b565b6001600160a01b038116600090815260116020526040812054600f549015159060019060ff1681811115610ca657610ca6613d57565b14610cb2578015610cb4565b805b9392505050565b60408051600480825260a08201909252606091602082016080803683370190505090508481600081518110610cf257610cf2614183565b6020026020010181815250508381600181518110610d1257610d12614183565b6020026020010181815250508281600281518110610d3257610d32614183565b6020026020010181815250508181600381518110610d5257610d52614183565b602002602001018181525050949350505050565b610d718383836118b6565b610704578282826040517f960c80da000000000000000000000000000000000000000000000000000000008152600401610bc39392919061421c565b60ff8416610e5e576000811180610dc45750600082115b15610e595782600003610df65760405163bea499cb60e01b815260ff8516600482015260248101849052604401610bc3565b801580610e0257508281115b15610e2c57604051639e12fccf60e01b815260ff8516600482015260248101829052604401610bc3565b81600003610e5957604051635686bf5960e11b815260ff8516600482015260248101839052604401610bc3565b610fbb565b82600003610e8b5760405163bea499cb60e01b815260ff8516600482015260248101849052604401610bc3565b801580610ea35750610ea06224ea008461424e565b81115b15610ecd57604051639e12fccf60e01b815260ff8516600482015260248101829052604401610bc3565b81600003610efa57604051635686bf5960e11b815260ff8516600482015260248101839052604401610bc3565b60001960ff851601610f3c57601c610f1183611954565b1115610e5957604051635686bf5960e11b815260ff8516600482015260248101839052604401610bc3565b60011960ff851601610f8457610f518261196b565b610f5a83611954565b14610e5957604051635686bf5960e11b815260ff8516600482015260248101839052604401610bc3565b6040517f33a738bc00000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610bc3565b8360ff166002811115610fd057610fd0613d57565b600a805460ff19166001836002811115610fec57610fec613d57565b0217905550600b839055600c829055600e8190556040805160ff8616815260208101859052908101839052606081018290527f182fd6fa2a8560221614c1396dd4fcc78d26dfacf821a6afb61d25876057e412906080015b60405180910390a150505050565b6040805160008152602081019091526107759083908390610d66565b6001600160a01b0382166110ae576040517fc41a13ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806110c3576110be60108361198e565b6110ce565b6110ce6010836119a3565b50816001600160a01b03167f6264362e9de26efefda321dfaeb4e4a9090deef40c5435fad8e9e2e306889a1c8260405161110c911515815260200190565b60405180910390a25050565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b03168160008151811061115857611158614183565b602002602001018181525050836001600160a01b031681600181518110610d1257610d12614183565b6001600160a01b0384166111c1576040517fe7ba3e4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526015602052604090206111e5908484846119b8565b604080516001600160a01b03858116825260208201859052918101839052908516907ff099617c054d3a65e02a9c3b786f23cc03d5982bc7cfae84dff0408049cf17079060600160405180910390a250505050565b60408051600180825281830190925260609160208083019080368337019050509050818160008151811061127057611270614183565b602002602001018181525050919050565b600f805482919060ff19166001838181111561129f5761129f613d57565b02179055507f216b6a9618d607ba436d0f2e17e9a83e70929adff805ac2385d67401360e551a816040516112d39190613d6d565b60405180910390a150565b6040805160028082526060808301845292602083019080368337019050509050826001600160a01b03168160008151811061131b5761131b614183565b602002602001018181525050818160018151811061133b5761133b614183565b60200260200101818152505092915050565b6113578282611a95565b61135f611adb565b6001600160a01b0316826001600160a01b0316146113a9576040517ffa2412a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610775576040517f1463acbe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61140173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee82611b67565b6107758282611bed565b6001600160a01b03841661144b576040517f1de0c9c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166000908152601b6020526040902061146f90848484611c15565b826001600160a01b0316846001600160a01b03167f1b5c5e27ed5443e409bae85849d41d7bf12d5352e8fddb3728b6408f836e144884846040516114bd929190918252602082015260400190565b60405180910390a350505050565b6114f8604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b0380831660009081526015602052604090208054909116156115215780611524565b60125b6040805160608101825282546001600160a01b0316815260018301546020820152600290920154908201529392505050565b60408051600280825260608083018452926020830190803683370190505090508260001c8160008151811061158d5761158d614183565b6020026020010181815250508160001c8160018151811061133b5761133b614183565b80821480156115be57508115155b156115f8576040517f0fb49edb00000000000000000000000000000000000000000000000000000000815260048101839052602401610bc3565b60028290556003819055604051819083907ff950a929751d87db181a0a517df21bb3ecd433abba584594402db4b58a55483590600090a35050565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b03168160008151811061167257611672614183565b602002602001018181525050828160018151811061169257611692614183565b60200260200101818152505081816002815181106116b2576116b2614183565b6020026020010181815250509392505050565b6116d26016848484611c15565b60408051838152602081018390526001600160a01b038516917f6324b5f18e615697a2b44f16d7a649deb0bbbc7cb09dad4c610306105730e7d9910160405180910390a2505050565b61172860128484846119b8565b604080516001600160a01b0385168152602081018490529081018290527fa80953bdc344b2ebd0bcdd001a3418a8fd1b858bdecf12a4ba5a9366ad65d3459060600160405180910390a1505050565b6001600160a01b038082166000908152601b6020526040812080549192909116156117a25780610cb4565b60169392505050565b600054610100900460ff166118045760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b805161180f90611d81565b61181881611e2e565b50565b670de0b6b3a764000081111561185d576040517fce57496100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068490556007839055600882905560098190556040805185815260208101859052908101839052606081018290527f746dc5eb53c5de07c40b06d428506d6982ea10c423ac2875abfc44038927d69190608001611044565b600080546040517f28522895000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b03169063285228959061190b908790309088908890600401614265565b602060405180830381865afa158015611928573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194c91906142ab565b949350505050565b600061194c61196662015180846142de565b611e87565b6000808061197f61196662015180866142de565b509150915061194c8282611f23565b6000610cb4836001600160a01b038416611fa9565b6000610cb4836001600160a01b0384166120a3565b60006001600160a01b0384161580156119cf575082155b80156119d9575081155b905060006001600160a01b038516158015906119fd57508215806119fd5750838310155b905081158015611a0b575080155b15611a5b576040517fca1f04830000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610bc3565b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03939093169290921783556001830155600290910155565b611a9f82826120f2565b611aa982826120fc565b611ab38282612120565b611abd828261220c565b611ac782826123fb565b611ad18282612445565b6107758282612532565b600154604080517f17fcb39b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916317fcb39b9160048083019260209291908290030181865afa158015611b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6291906142f2565b905090565b60035415610775576001805460035460405163eb056bbb60e01b815260048101919091526001600160a01b03858116602483015260448201859052606482019390935291169063eb056bbb906084015b600060405180830381600087803b158015611bd157600080fd5b505af1158015611be5573d6000803e3d6000fd5b505050505050565b611bf78282612648565b611c0182826126ea565b611c0b828261270c565b6107758282612956565b60006001600160a01b038416158015611c2c575082155b8015611c36575081155b905060006001600160a01b03851615801590611c525750600084115b8015611c5e5750600083115b905081158015611c6c575080155b15611cbc576040517ff5deb5dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610bc3565b60038601839055600186018490558115611ce3576000600287018190556004870155611d4f565b8560040154600003611d0a5760006002870155611d00834261430f565b6004870155611d4f565b85546001600160a01b03868116911614611d4f578554600090611d36906001600160a01b031687612983565b6002880154909150611d48908261298f565b6002880155505b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0393909316929092179092555050565b600054610100900460ff16611dda5760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b8051611de5906129ec565b611ded612abc565b611dfa8160200151612b1f565b611e078160400151612b81565b611e148160600151612be3565b611e218160800151612c45565b61180f8160a00151612ca7565b600054610100900460ff166118185760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611ee457611ee46142c8565b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b60008160011480611f345750816003145b80611f3f5750816005145b80611f4a5750816007145b80611f555750816008145b80611f60575081600a145b80611f6b575081600c145b15611f785750601f610a79565b81600214611f885750601e610a79565b611f9183612d09565b611f9c57601c611f9f565b601d5b60ff169392505050565b60008181526001830160205260408120548015612092576000611fcd600183614322565b8554909150600090611fe190600190614322565b905081811461204657600086600001828154811061200157612001614183565b906000526020600020015490508087600001848154811061202457612024614183565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061205757612057614335565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a79565b6000915050610a79565b5092915050565b60008181526001830160205260408120546120ea57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a79565b506000610a79565b6107758282612d45565b60045460ff16156107755760405163181e462560e31b815260040160405180910390fd5b5a60055560408051608081018252600654808252600754602083015260085492820192909252600954606082015290600090158061215f575081513a11155b9050806121a45781516040517fcbb35eb70000000000000000000000000000000000000000000000000000000081523a60048201526024810191909152604401610bc3565b6020820151156109e25760006121ba483a614322565b602084015190915081111580611be55760208401516040517f56e5387f000000000000000000000000000000000000000000000000000000008152610bc3918491600401918252602082015260400190565b600a54600b54600c54600e5460ff90931692428211156122485760405163013ce60b60e01b815242600482015260248101839052604401610bc3565b600084600281111561225c5761225c613d57565b03612315578260000361227157505050505050565b8060000361228b57612283834261430f565b600d55611be5565b60006122978342614322565b905060006122a585836142de565b905060006122b3868361424e565b6122bd9084614322565b9050838111156122e95760405163013ce60b60e01b815242600482015260248101869052604401610bc3565b856122f583600161430f565b6122ff919061424e565b612309908661430f565b600d5550611be5915050565b81421015801561232e575061232a818361430f565b4211155b1561233d576122838284612d98565b6000600185600281111561235357612353613d57565b14612366576123614261196b565b61236f565b61236f83611954565b9050600061237d8483612e30565b9050804210156123a95760405163013ce60b60e01b815242600482015260248101829052604401610bc3565b60006123b5848361430f565b905042811080156123e25760405163013ce60b60e01b815242600482015260248101839052604401610bc3565b6123ec8388612d98565b600d5550505050505050505050565b61240482610c70565b610775576040517f7a2410450000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610bc3565b6000612450836114cb565b80519091506001600160a01b031661246757505050565b6000836001600160a01b031682600001516001600160a01b0316146124a35761249e612497858460000151612983565b849061298f565b6124a5565b825b90506000826020015182101580156124cd5750604083015115806124cd575082604001518211155b90508061061b578251602084015160408086015190517f7c63a4b00000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830185905260448301919091526064820152608401610bc3565b600061253d83611777565b6040805160a08101825282546001600160a01b03168082526001840154602083015260028401549282019290925260038301546060820152600490920154608083015290915061258c57505050565b6000836001600160a01b031682600001516001600160a01b0316146125c1576125bc612497858460000151612983565b6125c3565b825b90506000826080015142106125d95760006125df565b82604001515b6125e9908361430f565b9050826020015181111561061b57825160208401516040517fb8858d5d0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610bc3565b600061265383611777565b80549091506001600160a01b031661266a57505050565b80546000906001600160a01b038581169116146126a057815461269b906124979086906001600160a01b0316612983565b6126a2565b825b9050816004015442106126cb576000600283015560038201546126c5904261430f565b60048301555b808260020160008282546126df919061430f565b909155505050505050565b600d546000036126f8575050565b612703600d54612e58565b50506000600d55565b600554600003612748576040517f1f5b8fc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526006548152600754602082015260085491810191909152600954606082015260005a6005546127819190614322565b9050600061278f3a8361424e565b905060008360400151600014806127aa575083604001518211155b9050806127f4578184604001516040517faf258ef2000000000000000000000000000000000000000000000000000000008152600401610bc3929190918252602082015260400190565b600060055560608401511580159061280c5750600085115b15611be55760006128df306001600160a01b0316634fd49efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612854573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287891906142f2565b6001600160a01b03166317fcb39b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d991906142f2565b88612983565b905060006128ed8483612e8d565b905060006128fb8289612eff565b9050866060015181111561294b5760608701516040517f0297747f000000000000000000000000000000000000000000000000000000008152610bc3918391600401918252602082015260400190565b505050505050505050565b6040517f68f46c45a243a0e9065a97649faf9a5afe1692f2679e650c2f853b9cd734cc0e90600090a15050565b6000610cb48383612fc8565b600082820283158015906129b25750828482816129ae576129ae6142c8565b0414155b156129da57604051637472527d60e11b81526004810185905260248101849052604401610bc3565b670de0b6b3a764000090049392505050565b600054610100900460ff16612a455760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b612ab381600001516001600160a01b031663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aae91906142f2565b6131be565b61181881613220565b600054610100900460ff16612b155760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b612b1d6132bb565b565b600054610100900460ff16612b785760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b61181881613314565b600054610100900460ff16612bda5760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b61181881613389565b600054610100900460ff16612c3c5760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b611818816133fe565b600054610100900460ff16612c9e5760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b611818816134ac565b600054610100900460ff16612d005760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b6118188161358a565b6000612d1660048361434b565b158015612d2c5750612d2960648361434b565b15155b80610a795750612d3e6101908361434b565b1592915050565b600254156107755760015460025460405163eb056bbb60e01b815260048101919091526001600160a01b03848116602483015260448201849052600060648301529091169063eb056bbb90608401611bb7565b600080600080612da786613668565b919450925090506000612dba868461430f565b90506000612dc9600c8361434b565b90506000612dd8600c846142de565b612de2908761430f565b905060006002600a5460ff166002811115612dff57612dff613d57565b14612e0a5784612e14565b612e148284611f23565b9050612e228a838584613687565b9a9950505050505050505050565b6000806000612e3e42613668565b5091509150612e4f85838387613687565b95945050505050565b600c8190556040518181527ff90744bee56935ec5acc9de37b89c0c545298c667ee417bd9469e9c6836ad064906020016112d3565b60008282028315801590612eb0575082848281612eac57612eac6142c8565b0414155b15612ed857604051637472527d60e11b81526004810185905260248101849052604401610bc3565b8015612ef557670de0b6b3a764000060001982010460010161194c565b6000949350505050565b600081600003612f3b576040517fb8a2f92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003612f4b57506000610a79565b670de0b6b3a764000083810290848281612f6757612f676142c8565b0414612fa9576040517fea7b49e60000000000000000000000000000000000000000000000000000000081526004810185905260248101829052604401610bc3565b826001820381612fbb57612fbb6142c8565b0460010191505092915050565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561301e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304291906142f2565b90506001600160a01b038116613093576001546040517f38d2baae0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610bc3565b600061309d6136af565b9050805160001461312e57816001600160a01b031663355efdd96130c08761372f565b6130c98761372f565b846040518463ffffffff1660e01b81526004016130e89392919061435f565b602060405180830381865afa158015613105573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312991906141c8565b612e4f565b816001600160a01b031663ac41865a6131468761372f565b61314f8761372f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561319a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4f91906141c8565b600054610100900460ff166132175760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b61181881613763565b600054610100900460ff166132795760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b80516001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039092169190911790556020810151604082015161181891906115b0565b600054610100900460ff16612b1d5760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b600054610100900460ff1661336d5760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b611818816000015182602001518360400151846060015161181b565b600054610100900460ff166133e25760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b6118188160000151826020015183604001518460600151610dad565b600054610100900460ff166134575760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b805161346290611281565b60005b8160200151518110156107755761349a8260200151828151811061348b5761348b614183565b6020026020010151600161106e565b806134a4816141af565b915050613465565b600054610100900460ff166135055760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b805180516020820151604083015161351e92919061171b565b60005b8260200151518110156107045760008360200151828151811061354657613546614183565b602002602001015190506000816020015190506135758260000151826000015183602001518460400151611181565b50508080613582906141af565b915050613521565b600054610100900460ff166135e35760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b80518051602082015160408301516135fc9291906116c5565b60005b8260200151518110156107045760008360200151828151811061362457613624614183565b60200260200101519050600081602001519050613653826000015182600001518360200151846040015161140b565b50508080613660906141af565b9150506135ff565b6000808061367a620151808504611e87565b9196909550909350915050565b6000612e4f848484613698896137fc565b6136a18a61381a565b6136aa8b613836565b613843565b606060006136bb61389f565b9050368111156136d957505060408051600081526020810190915290565b8067ffffffffffffffff8111156136f2576136f2613a46565b6040519080825280601f01601f19166020018201604052801561371c576020820181803683370190505b5091508060208236030360208401375090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0383161461375b5781610a79565b610a79611adb565b600054610100900460ff166137bc5760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b600080546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60008061380c620151808461434b565b9050610cb4610e10826142de565b600080613829610e108461434b565b9050610cb4603c826142de565b6000610a79603c8361434b565b600081613851603c8561424e565b61385d610e108761424e565b6201518061386c8b8b8b6138ba565b613876919061424e565b613880919061430f565b61388a919061430f565b613894919061430f565b979650505050505050565b600060243610156138b05750600090565b50601f1936013590565b60006107b28410156138cb57600080fd5b838383600062253d8c60046064600c6138e5600e886143ca565b6138ef91906143ea565b6138fb88611324614418565b6139059190614418565b61390f91906143ea565b61391a906003614440565b61392491906143ea565b600c80613932600e886143ca565b61393c91906143ea565b61394790600c614440565b6139526002886143ca565b61395c91906143ca565b6139689061016f614440565b61397291906143ea565b6004600c613981600e896143ca565b61398b91906143ea565b613997896112c0614418565b6139a19190614418565b6139ad906105b5614440565b6139b791906143ea565b6139c3617d4b876143ca565b6139cd9190614418565b6139d79190614418565b6139e191906143ca565b6139eb91906143ca565b98975050505050505050565b803560ff81168114613a0857600080fd5b919050565b60008060008060808587031215613a2357600080fd5b613a2c856139f7565b966020860135965060408601359560600135945092505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613a7f57613a7f613a46565b60405290565b6040805190810167ffffffffffffffff81118282101715613a7f57613a7f613a46565b6040516020810167ffffffffffffffff81118282101715613a7f57613a7f613a46565b60405160c0810167ffffffffffffffff81118282101715613a7f57613a7f613a46565b604051601f8201601f1916810167ffffffffffffffff81118282101715613b1757613b17613a46565b604052919050565b600067ffffffffffffffff821115613b3957613b39613a46565b5060051b60200190565b6001600160a01b038116811461181857600080fd5b600082601f830112613b6957600080fd5b81356020613b7e613b7983613b1f565b613aee565b82815260059290921b84018101918181019086841115613b9d57600080fd5b8286015b84811015613bc1578035613bb481613b43565b8352918301918301613ba1565b509695505050505050565b801515811461181857600080fd5b60008060408385031215613bed57600080fd5b823567ffffffffffffffff80821115613c0557600080fd5b613c1186838701613b58565b9350602091508185013581811115613c2857600080fd5b85019050601f81018613613c3b57600080fd5b8035613c49613b7982613b1f565b81815260059190911b82018301908381019088831115613c6857600080fd5b928401925b82841015613c8f578335613c8081613bcc565b82529284019290840190613c6d565b80955050505050509250929050565b600060208284031215613cb057600080fd5b8135610cb481613b43565b60008060008060808587031215613cd157600080fd5b8435613cdc81613b43565b93506020850135613cec81613b43565b93969395505050506040820135916060013590565b803560028110613a0857600080fd5b600060208284031215613d2257600080fd5b610cb482613d01565b60008060408385031215613d3e57600080fd5b8235613d4981613b43565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310613d8f57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215613da857600080fd5b50508035926020909101359150565b600080600060608486031215613dcc57600080fd5b8335613dd781613b43565b95602085013595506040909401359392505050565b600060608284031215613dfe57600080fd5b6040516060810181811067ffffffffffffffff82111715613e2157613e21613a46565b6040529050808235613e3281613b43565b8082525060208301356020820152604083013560408201525092915050565b600060808284031215613e6357600080fd5b613e6b613a5c565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b600060808284031215613ea757600080fd5b613eaf613a5c565b9050613eba826139f7565b815260208201356020820152604082013560408201526060820135606082015292915050565b600060408284031215613ef257600080fd5b613efa613a85565b9050613f0582613d01565b8152602082013567ffffffffffffffff811115613f2157600080fd5b613f2d84828501613b58565b60208301525092915050565b600060808284031215613f4b57600080fd5b613f53613a85565b90508135613f6081613b43565b8152613f6f8360208401613dec565b602082015292915050565b60006080808385031215613f8d57600080fd5b613f95613a85565b9150613fa18484613dec565b8252606083013567ffffffffffffffff811115613fbd57600080fd5b8301601f81018513613fce57600080fd5b80356020613fde613b7983613b1f565b82815260079290921b83018101918181019088841115613ffd57600080fd5b938201935b83851015614023576140148986613f39565b82529385019390820190614002565b808388015250505050505092915050565b60006020828403121561404657600080fd5b813567ffffffffffffffff8082111561405e57600080fd5b908301906020828603121561407257600080fd5b61407a613aa8565b82358281111561408957600080fd5b92909201916101c0838703121561409f57600080fd5b6140a7613acb565b6140b18785613dec565b81526140c08760608601613e51565b60208201526140d28760e08601613e95565b6040820152610160840135838111156140ea57600080fd5b6140f688828701613ee0565b6060830152506101808401358381111561410f57600080fd5b61411b88828701613f7a565b6080830152506101a08401358381111561413457600080fd5b61414088828701613f7a565b60a083015250815295945050505050565b6000806000806080858703121561416757600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016141c1576141c1614199565b5060010190565b6000602082840312156141da57600080fd5b5051919050565b600081518084526020808501945080840160005b83811015614211578151875295820195908201906001016141f5565b509495945050505050565b6001600160a01b03841681526001600160e01b031983166020820152606060408201526000612e4f60608301846141e1565b8082028115828204841417610a7957610a79614199565b60006001600160a01b0380871683528086166020840152506001600160e01b031984166040830152608060608301526142a160808301846141e1565b9695505050505050565b6000602082840312156142bd57600080fd5b8151610cb481613bcc565b634e487b7160e01b600052601260045260246000fd5b6000826142ed576142ed6142c8565b500490565b60006020828403121561430457600080fd5b8151610cb481613b43565b80820180821115610a7957610a79614199565b81810381811115610a7957610a79614199565b634e487b7160e01b600052603160045260246000fd5b60008261435a5761435a6142c8565b500690565b60006001600160a01b038086168352602081861681850152606060408501528451915081606085015260005b828110156143a75785810182015185820160800152810161438b565b50506000608082850101526080601f19601f830116840101915050949350505050565b818103600083128015838313168383128216171561209c5761209c614199565b6000826143f9576143f96142c8565b600160ff1b82146000198414161561441357614413614199565b500590565b808201828112600083128015821682158216171561443857614438614199565b505092915050565b80820260008212600160ff1b8414161561445c5761445c614199565b8181058314821517610a7957610a7961419956fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a26469706673582212206ad15e5f17f9c25e3d78919c22d5c99532851903c980275c5a110d29e2fad62a64736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80636aacaad811610104578063b187bd26116100a2578063d45a76cf11610071578063d45a76cf1461059d578063d534ef21146105b0578063e6b5be98146105c3578063f9eaee0d146105d657600080fd5b8063b187bd2614610543578063c267621e14610560578063d09edf3114610571578063d3feb6021461058a57600080fd5b806390333ba8116100de57806390333ba814610490578063a0c3774f146104a3578063a3374177146104b6578063a5900c4d146104e957600080fd5b80636aacaad8146104295780637125590a146104755780638456cb591461048857600080fd5b80633f4ba83a1161017c5780634fd49efd1161014b5780634fd49efd1461037f57806351a424b1146103aa5780635670e2ce146103e25780635ea54eee146103fd57600080fd5b80633f4ba83a14610315578063423a4b401461031d57806342d4693e146103305780634a45a3a81461034a57600080fd5b8063221a8c68116101b8578063221a8c68146102385780632384c32d146102dc57806330eae572146102ef5780633bd9ef281461030257600080fd5b80630fe105e8146101df578063119a5e96146101f45780632197238414610225575b600080fd5b6101f26101ed366004613a0d565b6105e9565b005b6101fc610622565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b6101f2610233366004613bda565b610659565b6102aa610246366004613c9e565b6001600160a01b039081166000908152601b6020908152604091829020825160a08101845281549094168085526001820154928501839052600282015493850184905260038201546060860181905260049092015460809095018590529491939091565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a00161021c565b6101f26102ea366004613cbb565b610709565b6101f26102fd366004613d10565b610738565b6101f2610310366004613d2b565b610779565b6101f2610839565b6101f261032b366004613cbb565b6108c0565b600f5461033d9060ff1681565b60405161021c9190613d6d565b6103717fca244260aa6b092a9352667c3ad94dc08b2739e94c9a9ac0429c266d77677cda81565b60405190815260200161021c565b600154610392906001600160a01b031681565b6040516001600160a01b03909116815260200161021c565b6103bd6103b8366004613c9e565b6108ef565b604080516001600160a01b03909416845260208401929092529082015260600161021c565b6002546003546040805192835260208301919091520161021c565b60065460075460085460095460408051948552602085019390935291830152606082015260800161021c565b6102aa6040805160a0810182526016546001600160a01b03168082526017546020830181905260185493830184905260195460608401819052601a546080909401849052919490939290565b6101f2610483366004613d95565b610918565b6101f2610943565b6101f261049e366004613db7565b6109b5565b6103716104b1366004613c9e565b6109e8565b6103bd604080516060810182526012546001600160a01b0316808252601354602083018190526014549290930182905292565b6103bd6104f7366004613c9e565b6001600160a01b03808216600090815260156020908152604091829020825160608101845281549094168085526001820154928501839052600290910154939092018390529093909250565b6004546105509060ff1681565b604051901515815260200161021c565b6001546001600160a01b0316610392565b600054610392906201000090046001600160a01b031681565b6101f2610598366004613db7565b610a7f565b6102aa6105ab366004613c9e565b610aac565b6101f26105be366004614034565b610b1b565b6101f26105d1366004614151565b610c41565b6105506105e4366004613c9e565b610c70565b6105f88460ff16848484610cbb565b61060f336000356001600160e01b03191683610d66565b61061b85858585610dad565b5050505050565b600a5460009081908190819060ff16600281111561064257610642613d57565b600b54600c54600e54935093509350935090919293565b61066f336000356001600160e01b031916611052565b80518251146106aa576040517f5d32021a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610704576106f28382815181106106cb576106cb614183565b60200260200101518383815181106106e5576106e5614183565b602002602001015161106e565b806106fc816141af565b9150506106ad565b505050565b61071584848484611118565b61072c336000356001600160e01b03191683610d66565b61061b85858585611181565b61075581600181111561074d5761074d613d57565b60ff1661123a565b61076c336000356001600160e01b03191683610d66565b61077582611281565b5050565b61078382826112de565b61079a336000356001600160e01b03191683610d66565b816000036107ae576107ab836109e8565b91505b6107b8838361134d565b6001546040517fde0e9a3e000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b039091169063de0e9a3e90602401600060405180830381600087803b15801561081757600080fd5b505af115801561082b573d6000803e3d6000fd5b5050505061070483836113e3565b61084f336000356001600160e01b031916611052565b60045460ff1661088b576040517f9e6558bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b6108cc84848484611118565b6108e3336000356001600160e01b03191683610d66565b61061b8585858561140b565b6000806000806108fe856114cb565b805160208201516040909201519097919650945092505050565b6109228282611556565b610939336000356001600160e01b03191683610d66565b61070483836115b0565b610959336000356001600160e01b031916611052565b60045460ff161561097d5760405163181e462560e31b815260040160405180910390fd5b6004805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6109c0838383611633565b6109d7336000356001600160e01b03191683610d66565b6109e28484846116c5565b50505050565b6001546002546040517ebc489400000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038381166024830152600092169062bc489490604401602060405180830381865afa158015610a55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7991906141c8565b92915050565b610a8a838383611633565b610aa1336000356001600160e01b03191683610d66565b6109e284848461171b565b600080600080600080610abe87611777565b6040805160a08101825282546001600160a01b031680825260018401546020830181905260028501549383018490526003850154606084018190526004909501546080909301839052909b909a5091985091965090945092505050565b600054610100900460ff1615808015610b3b5750600054600160ff909116105b80610b555750303b158015610b55575060005460ff166001145b610bcc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610bef576000805461ff0019166101001790555b610bf8826117ab565b8015610775576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b610c4d84848484610cbb565b610c64336000356001600160e01b03191683610d66565b61061b8585858561181b565b6001600160a01b038116600090815260116020526040812054600f549015159060019060ff1681811115610ca657610ca6613d57565b14610cb2578015610cb4565b805b9392505050565b60408051600480825260a08201909252606091602082016080803683370190505090508481600081518110610cf257610cf2614183565b6020026020010181815250508381600181518110610d1257610d12614183565b6020026020010181815250508281600281518110610d3257610d32614183565b6020026020010181815250508181600381518110610d5257610d52614183565b602002602001018181525050949350505050565b610d718383836118b6565b610704578282826040517f960c80da000000000000000000000000000000000000000000000000000000008152600401610bc39392919061421c565b60ff8416610e5e576000811180610dc45750600082115b15610e595782600003610df65760405163bea499cb60e01b815260ff8516600482015260248101849052604401610bc3565b801580610e0257508281115b15610e2c57604051639e12fccf60e01b815260ff8516600482015260248101829052604401610bc3565b81600003610e5957604051635686bf5960e11b815260ff8516600482015260248101839052604401610bc3565b610fbb565b82600003610e8b5760405163bea499cb60e01b815260ff8516600482015260248101849052604401610bc3565b801580610ea35750610ea06224ea008461424e565b81115b15610ecd57604051639e12fccf60e01b815260ff8516600482015260248101829052604401610bc3565b81600003610efa57604051635686bf5960e11b815260ff8516600482015260248101839052604401610bc3565b60001960ff851601610f3c57601c610f1183611954565b1115610e5957604051635686bf5960e11b815260ff8516600482015260248101839052604401610bc3565b60011960ff851601610f8457610f518261196b565b610f5a83611954565b14610e5957604051635686bf5960e11b815260ff8516600482015260248101839052604401610bc3565b6040517f33a738bc00000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610bc3565b8360ff166002811115610fd057610fd0613d57565b600a805460ff19166001836002811115610fec57610fec613d57565b0217905550600b839055600c829055600e8190556040805160ff8616815260208101859052908101839052606081018290527f182fd6fa2a8560221614c1396dd4fcc78d26dfacf821a6afb61d25876057e412906080015b60405180910390a150505050565b6040805160008152602081019091526107759083908390610d66565b6001600160a01b0382166110ae576040517fc41a13ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806110c3576110be60108361198e565b6110ce565b6110ce6010836119a3565b50816001600160a01b03167f6264362e9de26efefda321dfaeb4e4a9090deef40c5435fad8e9e2e306889a1c8260405161110c911515815260200190565b60405180910390a25050565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b03168160008151811061115857611158614183565b602002602001018181525050836001600160a01b031681600181518110610d1257610d12614183565b6001600160a01b0384166111c1576040517fe7ba3e4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526015602052604090206111e5908484846119b8565b604080516001600160a01b03858116825260208201859052918101839052908516907ff099617c054d3a65e02a9c3b786f23cc03d5982bc7cfae84dff0408049cf17079060600160405180910390a250505050565b60408051600180825281830190925260609160208083019080368337019050509050818160008151811061127057611270614183565b602002602001018181525050919050565b600f805482919060ff19166001838181111561129f5761129f613d57565b02179055507f216b6a9618d607ba436d0f2e17e9a83e70929adff805ac2385d67401360e551a816040516112d39190613d6d565b60405180910390a150565b6040805160028082526060808301845292602083019080368337019050509050826001600160a01b03168160008151811061131b5761131b614183565b602002602001018181525050818160018151811061133b5761133b614183565b60200260200101818152505092915050565b6113578282611a95565b61135f611adb565b6001600160a01b0316826001600160a01b0316146113a9576040517ffa2412a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610775576040517f1463acbe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61140173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee82611b67565b6107758282611bed565b6001600160a01b03841661144b576040517f1de0c9c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166000908152601b6020526040902061146f90848484611c15565b826001600160a01b0316846001600160a01b03167f1b5c5e27ed5443e409bae85849d41d7bf12d5352e8fddb3728b6408f836e144884846040516114bd929190918252602082015260400190565b60405180910390a350505050565b6114f8604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b0380831660009081526015602052604090208054909116156115215780611524565b60125b6040805160608101825282546001600160a01b0316815260018301546020820152600290920154908201529392505050565b60408051600280825260608083018452926020830190803683370190505090508260001c8160008151811061158d5761158d614183565b6020026020010181815250508160001c8160018151811061133b5761133b614183565b80821480156115be57508115155b156115f8576040517f0fb49edb00000000000000000000000000000000000000000000000000000000815260048101839052602401610bc3565b60028290556003819055604051819083907ff950a929751d87db181a0a517df21bb3ecd433abba584594402db4b58a55483590600090a35050565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b03168160008151811061167257611672614183565b602002602001018181525050828160018151811061169257611692614183565b60200260200101818152505081816002815181106116b2576116b2614183565b6020026020010181815250509392505050565b6116d26016848484611c15565b60408051838152602081018390526001600160a01b038516917f6324b5f18e615697a2b44f16d7a649deb0bbbc7cb09dad4c610306105730e7d9910160405180910390a2505050565b61172860128484846119b8565b604080516001600160a01b0385168152602081018490529081018290527fa80953bdc344b2ebd0bcdd001a3418a8fd1b858bdecf12a4ba5a9366ad65d3459060600160405180910390a1505050565b6001600160a01b038082166000908152601b6020526040812080549192909116156117a25780610cb4565b60169392505050565b600054610100900460ff166118045760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b805161180f90611d81565b61181881611e2e565b50565b670de0b6b3a764000081111561185d576040517fce57496100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068490556007839055600882905560098190556040805185815260208101859052908101839052606081018290527f746dc5eb53c5de07c40b06d428506d6982ea10c423ac2875abfc44038927d69190608001611044565b600080546040517f28522895000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b03169063285228959061190b908790309088908890600401614265565b602060405180830381865afa158015611928573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194c91906142ab565b949350505050565b600061194c61196662015180846142de565b611e87565b6000808061197f61196662015180866142de565b509150915061194c8282611f23565b6000610cb4836001600160a01b038416611fa9565b6000610cb4836001600160a01b0384166120a3565b60006001600160a01b0384161580156119cf575082155b80156119d9575081155b905060006001600160a01b038516158015906119fd57508215806119fd5750838310155b905081158015611a0b575080155b15611a5b576040517fca1f04830000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610bc3565b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03939093169290921783556001830155600290910155565b611a9f82826120f2565b611aa982826120fc565b611ab38282612120565b611abd828261220c565b611ac782826123fb565b611ad18282612445565b6107758282612532565b600154604080517f17fcb39b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916317fcb39b9160048083019260209291908290030181865afa158015611b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6291906142f2565b905090565b60035415610775576001805460035460405163eb056bbb60e01b815260048101919091526001600160a01b03858116602483015260448201859052606482019390935291169063eb056bbb906084015b600060405180830381600087803b158015611bd157600080fd5b505af1158015611be5573d6000803e3d6000fd5b505050505050565b611bf78282612648565b611c0182826126ea565b611c0b828261270c565b6107758282612956565b60006001600160a01b038416158015611c2c575082155b8015611c36575081155b905060006001600160a01b03851615801590611c525750600084115b8015611c5e5750600083115b905081158015611c6c575080155b15611cbc576040517ff5deb5dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610bc3565b60038601839055600186018490558115611ce3576000600287018190556004870155611d4f565b8560040154600003611d0a5760006002870155611d00834261430f565b6004870155611d4f565b85546001600160a01b03868116911614611d4f578554600090611d36906001600160a01b031687612983565b6002880154909150611d48908261298f565b6002880155505b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0393909316929092179092555050565b600054610100900460ff16611dda5760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b8051611de5906129ec565b611ded612abc565b611dfa8160200151612b1f565b611e078160400151612b81565b611e148160600151612be3565b611e218160800151612c45565b61180f8160a00151612ca7565b600054610100900460ff166118185760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611ee457611ee46142c8565b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b60008160011480611f345750816003145b80611f3f5750816005145b80611f4a5750816007145b80611f555750816008145b80611f60575081600a145b80611f6b575081600c145b15611f785750601f610a79565b81600214611f885750601e610a79565b611f9183612d09565b611f9c57601c611f9f565b601d5b60ff169392505050565b60008181526001830160205260408120548015612092576000611fcd600183614322565b8554909150600090611fe190600190614322565b905081811461204657600086600001828154811061200157612001614183565b906000526020600020015490508087600001848154811061202457612024614183565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061205757612057614335565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a79565b6000915050610a79565b5092915050565b60008181526001830160205260408120546120ea57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a79565b506000610a79565b6107758282612d45565b60045460ff16156107755760405163181e462560e31b815260040160405180910390fd5b5a60055560408051608081018252600654808252600754602083015260085492820192909252600954606082015290600090158061215f575081513a11155b9050806121a45781516040517fcbb35eb70000000000000000000000000000000000000000000000000000000081523a60048201526024810191909152604401610bc3565b6020820151156109e25760006121ba483a614322565b602084015190915081111580611be55760208401516040517f56e5387f000000000000000000000000000000000000000000000000000000008152610bc3918491600401918252602082015260400190565b600a54600b54600c54600e5460ff90931692428211156122485760405163013ce60b60e01b815242600482015260248101839052604401610bc3565b600084600281111561225c5761225c613d57565b03612315578260000361227157505050505050565b8060000361228b57612283834261430f565b600d55611be5565b60006122978342614322565b905060006122a585836142de565b905060006122b3868361424e565b6122bd9084614322565b9050838111156122e95760405163013ce60b60e01b815242600482015260248101869052604401610bc3565b856122f583600161430f565b6122ff919061424e565b612309908661430f565b600d5550611be5915050565b81421015801561232e575061232a818361430f565b4211155b1561233d576122838284612d98565b6000600185600281111561235357612353613d57565b14612366576123614261196b565b61236f565b61236f83611954565b9050600061237d8483612e30565b9050804210156123a95760405163013ce60b60e01b815242600482015260248101829052604401610bc3565b60006123b5848361430f565b905042811080156123e25760405163013ce60b60e01b815242600482015260248101839052604401610bc3565b6123ec8388612d98565b600d5550505050505050505050565b61240482610c70565b610775576040517f7a2410450000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610bc3565b6000612450836114cb565b80519091506001600160a01b031661246757505050565b6000836001600160a01b031682600001516001600160a01b0316146124a35761249e612497858460000151612983565b849061298f565b6124a5565b825b90506000826020015182101580156124cd5750604083015115806124cd575082604001518211155b90508061061b578251602084015160408086015190517f7c63a4b00000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830185905260448301919091526064820152608401610bc3565b600061253d83611777565b6040805160a08101825282546001600160a01b03168082526001840154602083015260028401549282019290925260038301546060820152600490920154608083015290915061258c57505050565b6000836001600160a01b031682600001516001600160a01b0316146125c1576125bc612497858460000151612983565b6125c3565b825b90506000826080015142106125d95760006125df565b82604001515b6125e9908361430f565b9050826020015181111561061b57825160208401516040517fb8858d5d0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610bc3565b600061265383611777565b80549091506001600160a01b031661266a57505050565b80546000906001600160a01b038581169116146126a057815461269b906124979086906001600160a01b0316612983565b6126a2565b825b9050816004015442106126cb576000600283015560038201546126c5904261430f565b60048301555b808260020160008282546126df919061430f565b909155505050505050565b600d546000036126f8575050565b612703600d54612e58565b50506000600d55565b600554600003612748576040517f1f5b8fc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526006548152600754602082015260085491810191909152600954606082015260005a6005546127819190614322565b9050600061278f3a8361424e565b905060008360400151600014806127aa575083604001518211155b9050806127f4578184604001516040517faf258ef2000000000000000000000000000000000000000000000000000000008152600401610bc3929190918252602082015260400190565b600060055560608401511580159061280c5750600085115b15611be55760006128df306001600160a01b0316634fd49efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612854573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287891906142f2565b6001600160a01b03166317fcb39b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d991906142f2565b88612983565b905060006128ed8483612e8d565b905060006128fb8289612eff565b9050866060015181111561294b5760608701516040517f0297747f000000000000000000000000000000000000000000000000000000008152610bc3918391600401918252602082015260400190565b505050505050505050565b6040517f68f46c45a243a0e9065a97649faf9a5afe1692f2679e650c2f853b9cd734cc0e90600090a15050565b6000610cb48383612fc8565b600082820283158015906129b25750828482816129ae576129ae6142c8565b0414155b156129da57604051637472527d60e11b81526004810185905260248101849052604401610bc3565b670de0b6b3a764000090049392505050565b600054610100900460ff16612a455760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b612ab381600001516001600160a01b031663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aae91906142f2565b6131be565b61181881613220565b600054610100900460ff16612b155760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b612b1d6132bb565b565b600054610100900460ff16612b785760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b61181881613314565b600054610100900460ff16612bda5760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b61181881613389565b600054610100900460ff16612c3c5760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b611818816133fe565b600054610100900460ff16612c9e5760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b611818816134ac565b600054610100900460ff16612d005760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b6118188161358a565b6000612d1660048361434b565b158015612d2c5750612d2960648361434b565b15155b80610a795750612d3e6101908361434b565b1592915050565b600254156107755760015460025460405163eb056bbb60e01b815260048101919091526001600160a01b03848116602483015260448201849052600060648301529091169063eb056bbb90608401611bb7565b600080600080612da786613668565b919450925090506000612dba868461430f565b90506000612dc9600c8361434b565b90506000612dd8600c846142de565b612de2908761430f565b905060006002600a5460ff166002811115612dff57612dff613d57565b14612e0a5784612e14565b612e148284611f23565b9050612e228a838584613687565b9a9950505050505050505050565b6000806000612e3e42613668565b5091509150612e4f85838387613687565b95945050505050565b600c8190556040518181527ff90744bee56935ec5acc9de37b89c0c545298c667ee417bd9469e9c6836ad064906020016112d3565b60008282028315801590612eb0575082848281612eac57612eac6142c8565b0414155b15612ed857604051637472527d60e11b81526004810185905260248101849052604401610bc3565b8015612ef557670de0b6b3a764000060001982010460010161194c565b6000949350505050565b600081600003612f3b576040517fb8a2f92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003612f4b57506000610a79565b670de0b6b3a764000083810290848281612f6757612f676142c8565b0414612fa9576040517fea7b49e60000000000000000000000000000000000000000000000000000000081526004810185905260248101829052604401610bc3565b826001820381612fbb57612fbb6142c8565b0460010191505092915050565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561301e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304291906142f2565b90506001600160a01b038116613093576001546040517f38d2baae0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610bc3565b600061309d6136af565b9050805160001461312e57816001600160a01b031663355efdd96130c08761372f565b6130c98761372f565b846040518463ffffffff1660e01b81526004016130e89392919061435f565b602060405180830381865afa158015613105573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312991906141c8565b612e4f565b816001600160a01b031663ac41865a6131468761372f565b61314f8761372f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561319a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4f91906141c8565b600054610100900460ff166132175760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b61181881613763565b600054610100900460ff166132795760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b80516001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039092169190911790556020810151604082015161181891906115b0565b600054610100900460ff16612b1d5760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b600054610100900460ff1661336d5760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b611818816000015182602001518360400151846060015161181b565b600054610100900460ff166133e25760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b6118188160000151826020015183604001518460600151610dad565b600054610100900460ff166134575760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b805161346290611281565b60005b8160200151518110156107755761349a8260200151828151811061348b5761348b614183565b6020026020010151600161106e565b806134a4816141af565b915050613465565b600054610100900460ff166135055760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b805180516020820151604083015161351e92919061171b565b60005b8260200151518110156107045760008360200151828151811061354657613546614183565b602002602001015190506000816020015190506135758260000151826000015183602001518460400151611181565b50508080613582906141af565b915050613521565b600054610100900460ff166135e35760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b80518051602082015160408301516135fc9291906116c5565b60005b8260200151518110156107045760008360200151828151811061362457613624614183565b60200260200101519050600081602001519050613653826000015182600001518360200151846040015161140b565b50508080613660906141af565b9150506135ff565b6000808061367a620151808504611e87565b9196909550909350915050565b6000612e4f848484613698896137fc565b6136a18a61381a565b6136aa8b613836565b613843565b606060006136bb61389f565b9050368111156136d957505060408051600081526020810190915290565b8067ffffffffffffffff8111156136f2576136f2613a46565b6040519080825280601f01601f19166020018201604052801561371c576020820181803683370190505b5091508060208236030360208401375090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0383161461375b5781610a79565b610a79611adb565b600054610100900460ff166137bc5760405162461bcd60e51b815260206004820152602b602482015260008051602061447183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610bc3565b600080546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60008061380c620151808461434b565b9050610cb4610e10826142de565b600080613829610e108461434b565b9050610cb4603c826142de565b6000610a79603c8361434b565b600081613851603c8561424e565b61385d610e108761424e565b6201518061386c8b8b8b6138ba565b613876919061424e565b613880919061430f565b61388a919061430f565b613894919061430f565b979650505050505050565b600060243610156138b05750600090565b50601f1936013590565b60006107b28410156138cb57600080fd5b838383600062253d8c60046064600c6138e5600e886143ca565b6138ef91906143ea565b6138fb88611324614418565b6139059190614418565b61390f91906143ea565b61391a906003614440565b61392491906143ea565b600c80613932600e886143ca565b61393c91906143ea565b61394790600c614440565b6139526002886143ca565b61395c91906143ca565b6139689061016f614440565b61397291906143ea565b6004600c613981600e896143ca565b61398b91906143ea565b613997896112c0614418565b6139a19190614418565b6139ad906105b5614440565b6139b791906143ea565b6139c3617d4b876143ca565b6139cd9190614418565b6139d79190614418565b6139e191906143ca565b6139eb91906143ca565b98975050505050505050565b803560ff81168114613a0857600080fd5b919050565b60008060008060808587031215613a2357600080fd5b613a2c856139f7565b966020860135965060408601359560600135945092505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613a7f57613a7f613a46565b60405290565b6040805190810167ffffffffffffffff81118282101715613a7f57613a7f613a46565b6040516020810167ffffffffffffffff81118282101715613a7f57613a7f613a46565b60405160c0810167ffffffffffffffff81118282101715613a7f57613a7f613a46565b604051601f8201601f1916810167ffffffffffffffff81118282101715613b1757613b17613a46565b604052919050565b600067ffffffffffffffff821115613b3957613b39613a46565b5060051b60200190565b6001600160a01b038116811461181857600080fd5b600082601f830112613b6957600080fd5b81356020613b7e613b7983613b1f565b613aee565b82815260059290921b84018101918181019086841115613b9d57600080fd5b8286015b84811015613bc1578035613bb481613b43565b8352918301918301613ba1565b509695505050505050565b801515811461181857600080fd5b60008060408385031215613bed57600080fd5b823567ffffffffffffffff80821115613c0557600080fd5b613c1186838701613b58565b9350602091508185013581811115613c2857600080fd5b85019050601f81018613613c3b57600080fd5b8035613c49613b7982613b1f565b81815260059190911b82018301908381019088831115613c6857600080fd5b928401925b82841015613c8f578335613c8081613bcc565b82529284019290840190613c6d565b80955050505050509250929050565b600060208284031215613cb057600080fd5b8135610cb481613b43565b60008060008060808587031215613cd157600080fd5b8435613cdc81613b43565b93506020850135613cec81613b43565b93969395505050506040820135916060013590565b803560028110613a0857600080fd5b600060208284031215613d2257600080fd5b610cb482613d01565b60008060408385031215613d3e57600080fd5b8235613d4981613b43565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310613d8f57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215613da857600080fd5b50508035926020909101359150565b600080600060608486031215613dcc57600080fd5b8335613dd781613b43565b95602085013595506040909401359392505050565b600060608284031215613dfe57600080fd5b6040516060810181811067ffffffffffffffff82111715613e2157613e21613a46565b6040529050808235613e3281613b43565b8082525060208301356020820152604083013560408201525092915050565b600060808284031215613e6357600080fd5b613e6b613a5c565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b600060808284031215613ea757600080fd5b613eaf613a5c565b9050613eba826139f7565b815260208201356020820152604082013560408201526060820135606082015292915050565b600060408284031215613ef257600080fd5b613efa613a85565b9050613f0582613d01565b8152602082013567ffffffffffffffff811115613f2157600080fd5b613f2d84828501613b58565b60208301525092915050565b600060808284031215613f4b57600080fd5b613f53613a85565b90508135613f6081613b43565b8152613f6f8360208401613dec565b602082015292915050565b60006080808385031215613f8d57600080fd5b613f95613a85565b9150613fa18484613dec565b8252606083013567ffffffffffffffff811115613fbd57600080fd5b8301601f81018513613fce57600080fd5b80356020613fde613b7983613b1f565b82815260079290921b83018101918181019088841115613ffd57600080fd5b938201935b83851015614023576140148986613f39565b82529385019390820190614002565b808388015250505050505092915050565b60006020828403121561404657600080fd5b813567ffffffffffffffff8082111561405e57600080fd5b908301906020828603121561407257600080fd5b61407a613aa8565b82358281111561408957600080fd5b92909201916101c0838703121561409f57600080fd5b6140a7613acb565b6140b18785613dec565b81526140c08760608601613e51565b60208201526140d28760e08601613e95565b6040820152610160840135838111156140ea57600080fd5b6140f688828701613ee0565b6060830152506101808401358381111561410f57600080fd5b61411b88828701613f7a565b6080830152506101a08401358381111561413457600080fd5b61414088828701613f7a565b60a083015250815295945050505050565b6000806000806080858703121561416757600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016141c1576141c1614199565b5060010190565b6000602082840312156141da57600080fd5b5051919050565b600081518084526020808501945080840160005b83811015614211578151875295820195908201906001016141f5565b509495945050505050565b6001600160a01b03841681526001600160e01b031983166020820152606060408201526000612e4f60608301846141e1565b8082028115828204841417610a7957610a79614199565b60006001600160a01b0380871683528086166020840152506001600160e01b031984166040830152608060608301526142a160808301846141e1565b9695505050505050565b6000602082840312156142bd57600080fd5b8151610cb481613bcc565b634e487b7160e01b600052601260045260246000fd5b6000826142ed576142ed6142c8565b500490565b60006020828403121561430457600080fd5b8151610cb481613b43565b80820180821115610a7957610a79614199565b81810381811115610a7957610a79614199565b634e487b7160e01b600052603160045260246000fd5b60008261435a5761435a6142c8565b500690565b60006001600160a01b038086168352602081861681850152606060408501528451915081606085015260005b828110156143a75785810182015185820160800152810161438b565b50506000608082850101526080601f19601f830116840101915050949350505050565b818103600083128015838313168383128216171561209c5761209c614199565b6000826143f9576143f96142c8565b600160ff1b82146000198414161561441357614413614199565b500590565b808201828112600083128015821682158216171561443857614438614199565b505092915050565b80820260008212600160ff1b8414161561445c5761445c614199565b8181058314821517610a7957610a7961419956fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a26469706673582212206ad15e5f17f9c25e3d78919c22d5c99532851903c980275c5a110d29e2fad62a64736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
