{
  "_format": "hh-sol-artifact-1",
  "contractName": "Depositor",
  "sourceName": "contracts/primitives/Depositor.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": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "TaskPreviousConnectorNotZero",
      "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": [
        {
          "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": [],
      "name": "TaskTokenZero",
      "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": [],
      "name": "TaskValueZero",
      "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 Depositor.DepositConfig",
          "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"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b614c9c80620000f36000396000f3fe6080604052600436106101d15760003560e01c80636aacaad8116100f7578063b187bd2611610095578063d45a76cf11610064578063d45a76cf1461071a578063d534ef211461073a578063e6b5be981461075a578063f9eaee0d1461077a57600080fd5b8063b187bd2614610697578063c267621e146106c1578063d09edf31146106d4578063d3feb602146106fa57600080fd5b806390333ba8116100d157806390333ba8146105b0578063a0c3774f146105d0578063a3374177146105f0578063a5900c4d1461063057600080fd5b80636aacaad8146105225780637125590a1461057b5780638456cb591461059b57600080fd5b80633f4ba83a1161016f5780634fd49efd1161013e5780634fd49efd1461044457806351a424b11461047c5780635670e2ce146104c15780635ea54eee146104e957600080fd5b80633f4ba83a146103a6578063423a4b40146103bb57806342d4693e146103db5780634a45a3a81461040257600080fd5b8063221a8c68116101ab578063221a8c68146102955780632384c32d1461034657806330eae572146103665780633bd9ef281461038657600080fd5b80630fe105e814610217578063119a5e9614610237578063219723841461027557600080fd5b366102125734600003610210576040517fab5d837200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561022357600080fd5b506102106102323660046141a3565b61079a565b34801561024357600080fd5b5061024c6107d3565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b34801561028157600080fd5b50610210610290366004614370565b61080a565b3480156102a157600080fd5b506103146102b0366004614434565b6001600160a01b039081166000908152601b6020908152604091829020825160a08101845281549094168085526001820154928501839052600282015493850184905260038201546060860181905260049092015460809095018590529491939091565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a00161026c565b34801561035257600080fd5b50610210610361366004614451565b6108ba565b34801561037257600080fd5b506102106103813660046144a6565b6108e9565b34801561039257600080fd5b506102106103a13660046144c1565b61092a565b3480156103b257600080fd5b50610210610a45565b3480156103c757600080fd5b506102106103d6366004614451565b610acc565b3480156103e757600080fd5b50600f546103f59060ff1681565b60405161026c9190614503565b34801561040e57600080fd5b506104367fe16b3d8fc79140c62874442c8b523e98592b429e73c0db67686a5b378b29f33681565b60405190815260200161026c565b34801561045057600080fd5b50600154610464906001600160a01b031681565b6040516001600160a01b03909116815260200161026c565b34801561048857600080fd5b5061049c610497366004614434565b610afb565b604080516001600160a01b03909416845260208401929092529082015260600161026c565b3480156104cd57600080fd5b506002546003546040805192835260208301919091520161026c565b3480156104f557600080fd5b5060065460075460085460095460408051948552602085019390935291830152606082015260800161026c565b34801561052e57600080fd5b506103146040805160a0810182526016546001600160a01b03168082526017546020830181905260185493830184905260195460608401819052601a546080909401849052919490939290565b34801561058757600080fd5b5061021061059636600461452b565b610b24565b3480156105a757600080fd5b50610210610b4f565b3480156105bc57600080fd5b506102106105cb36600461454d565b610bc1565b3480156105dc57600080fd5b506104366105eb366004614434565b610bf4565b3480156105fc57600080fd5b5061049c604080516060810182526012546001600160a01b0316808252601354602083018190526014549290930182905292565b34801561063c57600080fd5b5061049c61064b366004614434565b6001600160a01b03808216600090815260156020908152604091829020825160608101845281549094168085526001820154928501839052600290910154939092018390529093909250565b3480156106a357600080fd5b506004546106b19060ff1681565b604051901515815260200161026c565b3480156106cd57600080fd5b5030610464565b3480156106e057600080fd5b50600054610464906201000090046001600160a01b031681565b34801561070657600080fd5b5061021061071536600461454d565b610c06565b34801561072657600080fd5b50610314610735366004614434565b610c33565b34801561074657600080fd5b506102106107553660046147ca565b610ca2565b34801561076657600080fd5b506102106107753660046148e7565b610dc8565b34801561078657600080fd5b506106b1610795366004614434565b610df7565b6107a98460ff16848484610e35565b6107c0336000356001600160e01b03191683610ee0565b6107cc85858585610f27565b5050505050565b600a5460009081908190819060ff1660028111156107f3576107f36144ed565b600b54600c54600e54935093509350935090919293565b610820336000356001600160e01b0319166111cc565b805182511461085b576040517f5d32021a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156108b5576108a383828151811061087c5761087c614919565b602002602001015183838151811061089657610896614919565b60200260200101516111e8565b806108ad81614945565b91505061085e565b505050565b6108c684848484611292565b6108dd336000356001600160e01b03191683610ee0565b6107cc858585856112fb565b6109068160018111156108fe576108fe6144ed565b60ff166113b4565b61091d336000356001600160e01b03191683610ee0565b610926826113fb565b5050565b6109348282611458565b61094b336000356001600160e01b03191683610ee0565b8160000361095f5761095c83610bf4565b91505b61096983836114c7565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038416036109a8576001546109a3906001600160a01b03168361154b565b610a3b565b6001546109c09084906001600160a01b031684611664565b6001546001600160a01b031663c8fea2fb84306040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260448101859052606401600060405180830381600087803b158015610a2257600080fd5b505af1158015610a36573d6000803e3d6000fd5b505050505b6108b5838361166f565b610a5b336000356001600160e01b0319166111cc565b60045460ff16610a97576040517f9e6558bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b610ad884848484611292565b610aef336000356001600160e01b03191683610ee0565b6107cc85858585611683565b600080600080610b0a85611743565b805160208201516040909201519097919650945092505050565b610b2e82826117ce565b610b45336000356001600160e01b03191683610ee0565b6108b58383611828565b610b65336000356001600160e01b0319166111cc565b60045460ff1615610b895760405163181e462560e31b815260040160405180910390fd5b6004805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b610bcc83838361186d565b610be3336000356001600160e01b03191683610ee0565b610bee8484846118ff565b50505050565b6000610c008230611955565b92915050565b610c1183838361186d565b610c28336000356001600160e01b03191683610ee0565b610bee848484611a0f565b600080600080600080610c4587611a6b565b6040805160a08101825282546001600160a01b031680825260018401546020830181905260028501549383018490526003850154606084018190526004909501546080909301839052909b909a5091985091965090945092505050565b600054610100900460ff1615808015610cc25750600054600160ff909116105b80610cdc5750303b158015610cdc575060005460ff166001145b610d535760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610d76576000805461ff0019166101001790555b610d7f82611a9f565b8015610926576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b610dd484848484610e35565b610deb336000356001600160e01b03191683610ee0565b6107cc85858585611b0f565b600080610e05601084611baa565b90506001600f5460ff166001811115610e2057610e206144ed565b14610e2c578015610e2e565b805b9392505050565b60408051600480825260a08201909252606091602082016080803683370190505090508481600081518110610e6c57610e6c614919565b6020026020010181815250508381600181518110610e8c57610e8c614919565b6020026020010181815250508281600281518110610eac57610eac614919565b6020026020010181815250508181600381518110610ecc57610ecc614919565b602002602001018181525050949350505050565b610eeb838383611bcc565b6108b5578282826040517f960c80da000000000000000000000000000000000000000000000000000000008152600401610d4a93929190614999565b60ff8416610fd8576000811180610f3e5750600082115b15610fd35782600003610f705760405163bea499cb60e01b815260ff8516600482015260248101849052604401610d4a565b801580610f7c57508281115b15610fa657604051639e12fccf60e01b815260ff8516600482015260248101829052604401610d4a565b81600003610fd357604051635686bf5960e11b815260ff8516600482015260248101839052604401610d4a565b611135565b826000036110055760405163bea499cb60e01b815260ff8516600482015260248101849052604401610d4a565b80158061101d575061101a6224ea00846149cb565b81115b1561104757604051639e12fccf60e01b815260ff8516600482015260248101829052604401610d4a565b8160000361107457604051635686bf5960e11b815260ff8516600482015260248101839052604401610d4a565b60001960ff8516016110b657601c61108b83611c6a565b1115610fd357604051635686bf5960e11b815260ff8516600482015260248101839052604401610d4a565b60011960ff8516016110fe576110cb82611c81565b6110d483611c6a565b14610fd357604051635686bf5960e11b815260ff8516600482015260248101839052604401610d4a565b6040517f33a738bc00000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610d4a565b8360ff16600281111561114a5761114a6144ed565b600a805460ff19166001836002811115611166576111666144ed565b0217905550600b839055600c829055600e8190556040805160ff8616815260208101859052908101839052606081018290527f182fd6fa2a8560221614c1396dd4fcc78d26dfacf821a6afb61d25876057e412906080015b60405180910390a150505050565b6040805160008152602081019091526109269083908390610ee0565b6001600160a01b038216611228576040517fc41a13ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061123d57611238601083611ca4565b611248565b611248601083611cb9565b50816001600160a01b03167f6264362e9de26efefda321dfaeb4e4a9090deef40c5435fad8e9e2e306889a1c82604051611286911515815260200190565b60405180910390a25050565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b0316816000815181106112d2576112d2614919565b602002602001018181525050836001600160a01b031681600181518110610e8c57610e8c614919565b6001600160a01b03841661133b576040517fe7ba3e4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038416600090815260156020526040902061135f90848484611cce565b604080516001600160a01b03858116825260208201859052918101839052908516907ff099617c054d3a65e02a9c3b786f23cc03d5982bc7cfae84dff0408049cf17079060600160405180910390a250505050565b6040805160018082528183019092526060916020808301908036833701905050905081816000815181106113ea576113ea614919565b602002602001018181525050919050565b600f805482919060ff191660018381811115611419576114196144ed565b02179055507f216b6a9618d607ba436d0f2e17e9a83e70929adff805ac2385d67401360e551a8160405161144d9190614503565b60405180910390a150565b6040805160028082526060808301845292602083019080368337019050509050826001600160a01b03168160008151811061149557611495614919565b60200260200101818152505081816001815181106114b5576114b5614919565b60200260200101818152505092915050565b6114d18282611dab565b6001600160a01b038216611511576040517fc0e0f12200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610926576040517f1463acbe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8047101561159b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610d4a565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146115e8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ed565b606091505b50509050806108b55760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610d4a565b6108b5838383611df1565b6116798282611ecf565b6109268282611f55565b6001600160a01b0384166116c3576040517f1de0c9c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166000908152601b602052604090206116e790848484611f7d565b826001600160a01b0316846001600160a01b03167f1b5c5e27ed5443e409bae85849d41d7bf12d5352e8fddb3728b6408f836e14488484604051611735929190918252602082015260400190565b60405180910390a350505050565b611770604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b038083166000908152601560205260409020805490911615611799578061179c565b60125b6040805160608101825282546001600160a01b0316815260018301546020820152600290920154908201529392505050565b60408051600280825260608083018452926020830190803683370190505090508260001c8160008151811061180557611805614919565b6020026020010181815250508160001c816001815181106114b5576114b5614919565b8115611863576040517fade7e16800000000000000000000000000000000000000000000000000000000815260048101839052602401610d4a565b61092682826120e9565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b0316816000815181106118ac576118ac614919565b60200260200101818152505082816001815181106118cc576118cc614919565b60200260200101818152505081816002815181106118ec576118ec614919565b6020026020010181815250509392505050565b61190c6016848484611f7d565b60408051838152602081018390526001600160a01b038516917f6324b5f18e615697a2b44f16d7a649deb0bbbc7cb09dad4c610306105730e7d9910160405180910390a2505050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0384160361198c57506001600160a01b03811631610c00565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa1580156119eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2e91906149e2565b611a1c6012848484611cce565b604080516001600160a01b0385168152602081018490529081018290527fa80953bdc344b2ebd0bcdd001a3418a8fd1b858bdecf12a4ba5a9366ad65d3459060600160405180910390a1505050565b6001600160a01b038082166000908152601b602052604081208054919290911615611a965780610e2e565b60169392505050565b600054610100900460ff16611af85760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b8051611b039061216c565b611b0c81612219565b50565b670de0b6b3a7640000811115611b51576040517fce57496100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068490556007839055600882905560098190556040805185815260208101859052908101839052606081018290527f746dc5eb53c5de07c40b06d428506d6982ea10c423ac2875abfc44038927d691906080016111be565b6001600160a01b03811660009081526001830160205260408120541515610e2e565b600080546040517f28522895000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b031690632852289590611c219087903090889088906004016149fb565b602060405180830381865afa158015611c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c629190614a41565b949350505050565b6000611c62611c7c6201518084614a74565b612272565b60008080611c95611c7c6201518086614a74565b5091509150611c62828261230e565b6000610e2e836001600160a01b038416612394565b6000610e2e836001600160a01b03841661248e565b60006001600160a01b038416158015611ce5575082155b8015611cef575081155b905060006001600160a01b03851615801590611d135750821580611d135750838310155b905081158015611d21575080155b15611d71576040517fca1f04830000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610d4a565b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03939093169290921783556001830155600290910155565b611db582826124dd565b611dbf82826124e7565b611dc9828261250b565b611dd382826125f7565b611ddd82826127e6565b611de78282612830565b610926828261291d565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b179052611e578482612a33565b610bee57604080516001600160a01b038516602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b179052611ec5908590612ada565b610bee8482612ada565b60035415610926576001805460035460405163eb056bbb60e01b815260048101919091526001600160a01b03858116602483015260448201859052606482019390935291169063eb056bbb906084015b600060405180830381600087803b158015611f3957600080fd5b505af1158015611f4d573d6000803e3d6000fd5b505050505050565b611f5f8282612bc2565b611f698282612c64565b611f738282612c86565b6109268282612ed0565b60006001600160a01b038416158015611f94575082155b8015611f9e575081155b905060006001600160a01b03851615801590611fba5750600084115b8015611fc65750600083115b905081158015611fd4575080155b15612024576040517ff5deb5dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610d4a565b6003860183905560018601849055811561204b5760006002870181905560048701556120b7565b856004015460000361207257600060028701556120688342614a88565b60048701556120b7565b85546001600160a01b038681169116146120b757855460009061209e906001600160a01b031687612efd565b60028801549091506120b09082612f09565b6002880155505b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0393909316929092179092555050565b80821480156120f757508115155b15612131576040517f0fb49edb00000000000000000000000000000000000000000000000000000000815260048101839052602401610d4a565b60028290556003819055604051819083907ff950a929751d87db181a0a517df21bb3ecd433abba584594402db4b58a55483590600090a35050565b600054610100900460ff166121c55760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b80516121d090612f66565b6121d8613036565b6121e58160200151613099565b6121f281604001516130fb565b6121ff816060015161315d565b61220c81608001516131bf565b611b038160a00151613221565b600054610100900460ff16611b0c5760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f84605002816122cf576122cf614a5e565b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b6000816001148061231f5750816003145b8061232a5750816005145b806123355750816007145b806123405750816008145b8061234b575081600a145b80612356575081600c145b156123635750601f610c00565b816002146123735750601e610c00565b61237c83613283565b61238757601c61238a565b601d5b60ff169392505050565b6000818152600183016020526040812054801561247d5760006123b8600183614a9b565b85549091506000906123cc90600190614a9b565b90508181146124315760008660000182815481106123ec576123ec614919565b906000526020600020015490508087600001848154811061240f5761240f614919565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061244257612442614aae565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610c00565b6000915050610c00565b5092915050565b60008181526001830160205260408120546124d557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610c00565b506000610c00565b61092682826132bf565b60045460ff16156109265760405163181e462560e31b815260040160405180910390fd5b5a60055560408051608081018252600654808252600754602083015260085492820192909252600954606082015290600090158061254a575081513a11155b90508061258f5781516040517fcbb35eb70000000000000000000000000000000000000000000000000000000081523a60048201526024810191909152604401610d4a565b602082015115610bee5760006125a5483a614a9b565b602084015190915081111580611f4d5760208401516040517f56e5387f000000000000000000000000000000000000000000000000000000008152610d4a918491600401918252602082015260400190565b600a54600b54600c54600e5460ff90931692428211156126335760405163013ce60b60e01b815242600482015260248101839052604401610d4a565b6000846002811115612647576126476144ed565b03612700578260000361265c57505050505050565b806000036126765761266e8342614a88565b600d55611f4d565b60006126828342614a9b565b905060006126908583614a74565b9050600061269e86836149cb565b6126a89084614a9b565b9050838111156126d45760405163013ce60b60e01b815242600482015260248101869052604401610d4a565b856126e0836001614a88565b6126ea91906149cb565b6126f49086614a88565b600d5550611f4d915050565b81421015801561271957506127158183614a88565b4211155b156127285761266e8284613312565b6000600185600281111561273e5761273e6144ed565b146127515761274c42611c81565b61275a565b61275a83611c6a565b9050600061276884836133aa565b9050804210156127945760405163013ce60b60e01b815242600482015260248101829052604401610d4a565b60006127a08483614a88565b905042811080156127cd5760405163013ce60b60e01b815242600482015260248101839052604401610d4a565b6127d78388613312565b600d5550505050505050505050565b6127ef82610df7565b610926576040517f7a2410450000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610d4a565b600061283b83611743565b80519091506001600160a01b031661285257505050565b6000836001600160a01b031682600001516001600160a01b03161461288e57612889612882858460000151612efd565b8490612f09565b612890565b825b90506000826020015182101580156128b85750604083015115806128b8575082604001518211155b9050806107cc578251602084015160408086015190517f7c63a4b00000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830185905260448301919091526064820152608401610d4a565b600061292883611a6b565b6040805160a08101825282546001600160a01b03168082526001840154602083015260028401549282019290925260038301546060820152600490920154608083015290915061297757505050565b6000836001600160a01b031682600001516001600160a01b0316146129ac576129a7612882858460000151612efd565b6129ae565b825b90506000826080015142106129c45760006129ca565b82604001515b6129d49083614a88565b905082602001518111156107cc57825160208401516040517fb8858d5d0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610d4a565b6000806000846001600160a01b031684604051612a509190614ae8565b6000604051808303816000865af19150503d8060008114612a8d576040519150601f19603f3d011682016040523d82523d6000602084013e612a92565b606091505b5091509150818015612abc575080511580612abc575080806020019051810190612abc9190614a41565b8015612ad157506001600160a01b0385163b15155b95945050505050565b6000612b2f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166133c99092919063ffffffff16565b9050805160001480612b50575080806020019051810190612b509190614a41565b6108b55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610d4a565b6000612bcd83611a6b565b80549091506001600160a01b0316612be457505050565b80546000906001600160a01b03858116911614612c1a578154612c15906128829086906001600160a01b0316612efd565b612c1c565b825b905081600401544210612c4557600060028301556003820154612c3f9042614a88565b60048301555b80826002016000828254612c599190614a88565b909155505050505050565b600d54600003612c72575050565b612c7d600d546133d8565b50506000600d55565b600554600003612cc2576040517f1f5b8fc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526006548152600754602082015260085491810191909152600954606082015260005a600554612cfb9190614a9b565b90506000612d093a836149cb565b90506000836040015160001480612d24575083604001518211155b905080612d6e578184604001516040517faf258ef2000000000000000000000000000000000000000000000000000000008152600401610d4a929190918252602082015260400190565b6000600555606084015115801590612d865750600085115b15611f4d576000612e59306001600160a01b0316634fd49efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df29190614b04565b6001600160a01b03166317fcb39b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e539190614b04565b88612efd565b90506000612e67848361340d565b90506000612e75828961347f565b90508660600151811115612ec55760608701516040517f0297747f000000000000000000000000000000000000000000000000000000008152610d4a918391600401918252602082015260400190565b505050505050505050565b6040517f68f46c45a243a0e9065a97649faf9a5afe1692f2679e650c2f853b9cd734cc0e90600090a15050565b6000610e2e8383613548565b60008282028315801590612f2c575082848281612f2857612f28614a5e565b0414155b15612f5457604051637472527d60e11b81526004810185905260248101849052604401610d4a565b670de0b6b3a764000090049392505050565b600054610100900460ff16612fbf5760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b61302d81600001516001600160a01b031663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa158015613004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130289190614b04565b61373e565b611b0c816137a0565b600054610100900460ff1661308f5760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b61309761383b565b565b600054610100900460ff166130f25760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b611b0c81613894565b600054610100900460ff166131545760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b611b0c81613909565b600054610100900460ff166131b65760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b611b0c8161397e565b600054610100900460ff166132185760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b611b0c81613a2c565b600054610100900460ff1661327a5760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b611b0c81613b0a565b6000613290600483614b21565b1580156132a657506132a3606483614b21565b15155b80610c0057506132b861019083614b21565b1592915050565b600254156109265760015460025460405163eb056bbb60e01b815260048101919091526001600160a01b03848116602483015260448201849052600060648301529091169063eb056bbb90608401611f1f565b60008060008061332186613be8565b9194509250905060006133348684614a88565b90506000613343600c83614b21565b90506000613352600c84614a74565b61335c9087614a88565b905060006002600a5460ff166002811115613379576133796144ed565b14613384578461338e565b61338e828461230e565b905061339c8a838584613c07565b9a9950505050505050505050565b60008060006133b842613be8565b5091509150612ad185838387613c07565b6060611c628484600085613c2f565b600c8190556040518181527ff90744bee56935ec5acc9de37b89c0c545298c667ee417bd9469e9c6836ad0649060200161144d565b6000828202831580159061343057508284828161342c5761342c614a5e565b0414155b1561345857604051637472527d60e11b81526004810185905260248101849052604401610d4a565b801561347557670de0b6b3a7640000600019820104600101611c62565b6000949350505050565b6000816000036134bb576040517fb8a2f92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036134cb57506000610c00565b670de0b6b3a7640000838102908482816134e7576134e7614a5e565b0414613529576040517fea7b49e60000000000000000000000000000000000000000000000000000000081526004810185905260248101829052604401610d4a565b82600182038161353b5761353b614a5e565b0460010191505092915050565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561359e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c29190614b04565b90506001600160a01b038116613613576001546040517f38d2baae0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610d4a565b600061361d613d21565b905080516000146136ae57816001600160a01b031663355efdd961364087613da1565b61364987613da1565b846040518463ffffffff1660e01b815260040161366893929190614b61565b602060405180830381865afa158015613685573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a991906149e2565b612ad1565b816001600160a01b031663ac41865a6136c687613da1565b6136cf87613da1565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561371a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad191906149e2565b600054610100900460ff166137975760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b611b0c81613dd5565b600054610100900460ff166137f95760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b80516001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560208101516040820151611b0c9190611828565b600054610100900460ff166130975760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b600054610100900460ff166138ed5760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b611b0c8160000151826020015183604001518460600151611b0f565b600054610100900460ff166139625760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b611b0c8160000151826020015183604001518460600151610f27565b600054610100900460ff166139d75760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b80516139e2906113fb565b60005b81602001515181101561092657613a1a82602001518281518110613a0b57613a0b614919565b602002602001015160016111e8565b80613a2481614945565b9150506139e5565b600054610100900460ff16613a855760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b8051805160208201516040830151613a9e929190611a0f565b60005b8260200151518110156108b557600083602001518281518110613ac657613ac6614919565b60200260200101519050600081602001519050613af582600001518260000151836020015184604001516112fb565b50508080613b0290614945565b915050613aa1565b600054610100900460ff16613b635760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b8051805160208201516040830151613b7c9291906118ff565b60005b8260200151518110156108b557600083602001518281518110613ba457613ba4614919565b60200260200101519050600081602001519050613bd38260000151826000015183602001518460400151611683565b50508080613be090614945565b915050613b7f565b60008080613bfa620151808504612272565b9196909550909350915050565b6000612ad1848484613c1889613e6e565b613c218a613e8c565b613c2a8b613ea8565b613eb5565b606082471015613ca75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610d4a565b600080866001600160a01b03168587604051613cc39190614ae8565b60006040518083038185875af1925050503d8060008114613d00576040519150601f19603f3d011682016040523d82523d6000602084013e613d05565b606091505b5091509150613d1687838387613f06565b979650505050505050565b60606000613d2d613f7f565b905036811115613d4b57505060408051600081526020810190915290565b8067ffffffffffffffff811115613d6457613d646141dc565b6040519080825280601f01601f191660200182016040528015613d8e576020820181803683370190505b5091508060208236030360208401375090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03831614613dcd5781610c00565b610c00613f9a565b600054610100900460ff16613e2e5760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b600080546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b600080613e7e6201518084614b21565b9050610e2e610e1082614a74565b600080613e9b610e1084614b21565b9050610e2e603c82614a74565b6000610c00603c83614b21565b600081613ec3603c856149cb565b613ecf610e10876149cb565b62015180613ede8b8b8b614026565b613ee891906149cb565b613ef29190614a88565b613efc9190614a88565b613d169190614a88565b60608315613f75578251600003613f6e576001600160a01b0385163b613f6e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d4a565b5081611c62565b611c628383614163565b60006024361015613f905750600090565b50601f1936013590565b600154604080517f17fcb39b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916317fcb39b9160048083019260209291908290030181865afa158015613ffd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140219190614b04565b905090565b60006107b284101561403757600080fd5b838383600062253d8c60046064600c614051600e88614b8d565b61405b9190614bad565b61406788611324614bdb565b6140719190614bdb565b61407b9190614bad565b614086906003614c03565b6140909190614bad565b600c8061409e600e88614b8d565b6140a89190614bad565b6140b390600c614c03565b6140be600288614b8d565b6140c89190614b8d565b6140d49061016f614c03565b6140de9190614bad565b6004600c6140ed600e89614b8d565b6140f79190614bad565b614103896112c0614bdb565b61410d9190614bdb565b614119906105b5614c03565b6141239190614bad565b61412f617d4b87614b8d565b6141399190614bdb565b6141439190614bdb565b61414d9190614b8d565b6141579190614b8d565b98975050505050505050565b8151156141735781518083602001fd5b8060405162461bcd60e51b8152600401610d4a9190614c33565b803560ff8116811461419e57600080fd5b919050565b600080600080608085870312156141b957600080fd5b6141c28561418d565b966020860135965060408601359560600135945092505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715614215576142156141dc565b60405290565b6040805190810167ffffffffffffffff81118282101715614215576142156141dc565b6040516020810167ffffffffffffffff81118282101715614215576142156141dc565b60405160c0810167ffffffffffffffff81118282101715614215576142156141dc565b604051601f8201601f1916810167ffffffffffffffff811182821017156142ad576142ad6141dc565b604052919050565b600067ffffffffffffffff8211156142cf576142cf6141dc565b5060051b60200190565b6001600160a01b0381168114611b0c57600080fd5b600082601f8301126142ff57600080fd5b8135602061431461430f836142b5565b614284565b82815260059290921b8401810191818101908684111561433357600080fd5b8286015b8481101561435757803561434a816142d9565b8352918301918301614337565b509695505050505050565b8015158114611b0c57600080fd5b6000806040838503121561438357600080fd5b823567ffffffffffffffff8082111561439b57600080fd5b6143a7868387016142ee565b93506020915081850135818111156143be57600080fd5b85019050601f810186136143d157600080fd5b80356143df61430f826142b5565b81815260059190911b820183019083810190888311156143fe57600080fd5b928401925b8284101561442557833561441681614362565b82529284019290840190614403565b80955050505050509250929050565b60006020828403121561444657600080fd5b8135610e2e816142d9565b6000806000806080858703121561446757600080fd5b8435614472816142d9565b93506020850135614482816142d9565b93969395505050506040820135916060013590565b80356002811061419e57600080fd5b6000602082840312156144b857600080fd5b610e2e82614497565b600080604083850312156144d457600080fd5b82356144df816142d9565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b602081016002831061452557634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561453e57600080fd5b50508035926020909101359150565b60008060006060848603121561456257600080fd5b833561456d816142d9565b95602085013595506040909401359392505050565b60006060828403121561459457600080fd5b6040516060810181811067ffffffffffffffff821117156145b7576145b76141dc565b60405290508082356145c8816142d9565b8082525060208301356020820152604083013560408201525092915050565b6000608082840312156145f957600080fd5b6146016141f2565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b60006080828403121561463d57600080fd5b6146456141f2565b90506146508261418d565b815260208201356020820152604082013560408201526060820135606082015292915050565b60006040828403121561468857600080fd5b61469061421b565b905061469b82614497565b8152602082013567ffffffffffffffff8111156146b757600080fd5b6146c3848285016142ee565b60208301525092915050565b6000608082840312156146e157600080fd5b6146e961421b565b905081356146f6816142d9565b81526147058360208401614582565b602082015292915050565b6000608080838503121561472357600080fd5b61472b61421b565b91506147378484614582565b8252606083013567ffffffffffffffff81111561475357600080fd5b8301601f8101851361476457600080fd5b8035602061477461430f836142b5565b82815260079290921b8301810191818101908884111561479357600080fd5b938201935b838510156147b9576147aa89866146cf565b82529385019390820190614798565b808388015250505050505092915050565b6000602082840312156147dc57600080fd5b813567ffffffffffffffff808211156147f457600080fd5b908301906020828603121561480857600080fd5b61481061423e565b82358281111561481f57600080fd5b92909201916101c0838703121561483557600080fd5b61483d614261565b6148478785614582565b815261485687606086016145e7565b60208201526148688760e0860161462b565b60408201526101608401358381111561488057600080fd5b61488c88828701614676565b606083015250610180840135838111156148a557600080fd5b6148b188828701614710565b6080830152506101a0840135838111156148ca57600080fd5b6148d688828701614710565b60a083015250815295945050505050565b600080600080608085870312156148fd57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016149575761495761492f565b5060010190565b600081518084526020808501945080840160005b8381101561498e57815187529582019590820190600101614972565b509495945050505050565b6001600160a01b03841681526001600160e01b031983166020820152606060408201526000612ad1606083018461495e565b8082028115828204841417610c0057610c0061492f565b6000602082840312156149f457600080fd5b5051919050565b60006001600160a01b0380871683528086166020840152506001600160e01b03198416604083015260806060830152614a37608083018461495e565b9695505050505050565b600060208284031215614a5357600080fd5b8151610e2e81614362565b634e487b7160e01b600052601260045260246000fd5b600082614a8357614a83614a5e565b500490565b80820180821115610c0057610c0061492f565b81810381811115610c0057610c0061492f565b634e487b7160e01b600052603160045260246000fd5b60005b83811015614adf578181015183820152602001614ac7565b50506000910152565b60008251614afa818460208701614ac4565b9190910192915050565b600060208284031215614b1657600080fd5b8151610e2e816142d9565b600082614b3057614b30614a5e565b500690565b60008151808452614b4d816020860160208601614ac4565b601f01601f19169290920160200192915050565b60006001600160a01b03808616835280851660208401525060606040830152612ad16060830184614b35565b81810360008312801583831316838312821617156124875761248761492f565b600082614bbc57614bbc614a5e565b600160ff1b821460001984141615614bd657614bd661492f565b500590565b8082018281126000831280158216821582161715614bfb57614bfb61492f565b505092915050565b80820260008212600160ff1b84141615614c1f57614c1f61492f565b8181058314821517610c0057610c0061492f565b602081526000610e2e6020830184614b3556fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a264697066735822122028c2f84f4b9ecfc13e4411b21e817a32bf827d117d4d42d00d6b1ad0f00b67ed64736f6c63430008110033",
  "deployedBytecode": "0x6080604052600436106101d15760003560e01c80636aacaad8116100f7578063b187bd2611610095578063d45a76cf11610064578063d45a76cf1461071a578063d534ef211461073a578063e6b5be981461075a578063f9eaee0d1461077a57600080fd5b8063b187bd2614610697578063c267621e146106c1578063d09edf31146106d4578063d3feb602146106fa57600080fd5b806390333ba8116100d157806390333ba8146105b0578063a0c3774f146105d0578063a3374177146105f0578063a5900c4d1461063057600080fd5b80636aacaad8146105225780637125590a1461057b5780638456cb591461059b57600080fd5b80633f4ba83a1161016f5780634fd49efd1161013e5780634fd49efd1461044457806351a424b11461047c5780635670e2ce146104c15780635ea54eee146104e957600080fd5b80633f4ba83a146103a6578063423a4b40146103bb57806342d4693e146103db5780634a45a3a81461040257600080fd5b8063221a8c68116101ab578063221a8c68146102955780632384c32d1461034657806330eae572146103665780633bd9ef281461038657600080fd5b80630fe105e814610217578063119a5e9614610237578063219723841461027557600080fd5b366102125734600003610210576040517fab5d837200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561022357600080fd5b506102106102323660046141a3565b61079a565b34801561024357600080fd5b5061024c6107d3565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b34801561028157600080fd5b50610210610290366004614370565b61080a565b3480156102a157600080fd5b506103146102b0366004614434565b6001600160a01b039081166000908152601b6020908152604091829020825160a08101845281549094168085526001820154928501839052600282015493850184905260038201546060860181905260049092015460809095018590529491939091565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a00161026c565b34801561035257600080fd5b50610210610361366004614451565b6108ba565b34801561037257600080fd5b506102106103813660046144a6565b6108e9565b34801561039257600080fd5b506102106103a13660046144c1565b61092a565b3480156103b257600080fd5b50610210610a45565b3480156103c757600080fd5b506102106103d6366004614451565b610acc565b3480156103e757600080fd5b50600f546103f59060ff1681565b60405161026c9190614503565b34801561040e57600080fd5b506104367fe16b3d8fc79140c62874442c8b523e98592b429e73c0db67686a5b378b29f33681565b60405190815260200161026c565b34801561045057600080fd5b50600154610464906001600160a01b031681565b6040516001600160a01b03909116815260200161026c565b34801561048857600080fd5b5061049c610497366004614434565b610afb565b604080516001600160a01b03909416845260208401929092529082015260600161026c565b3480156104cd57600080fd5b506002546003546040805192835260208301919091520161026c565b3480156104f557600080fd5b5060065460075460085460095460408051948552602085019390935291830152606082015260800161026c565b34801561052e57600080fd5b506103146040805160a0810182526016546001600160a01b03168082526017546020830181905260185493830184905260195460608401819052601a546080909401849052919490939290565b34801561058757600080fd5b5061021061059636600461452b565b610b24565b3480156105a757600080fd5b50610210610b4f565b3480156105bc57600080fd5b506102106105cb36600461454d565b610bc1565b3480156105dc57600080fd5b506104366105eb366004614434565b610bf4565b3480156105fc57600080fd5b5061049c604080516060810182526012546001600160a01b0316808252601354602083018190526014549290930182905292565b34801561063c57600080fd5b5061049c61064b366004614434565b6001600160a01b03808216600090815260156020908152604091829020825160608101845281549094168085526001820154928501839052600290910154939092018390529093909250565b3480156106a357600080fd5b506004546106b19060ff1681565b604051901515815260200161026c565b3480156106cd57600080fd5b5030610464565b3480156106e057600080fd5b50600054610464906201000090046001600160a01b031681565b34801561070657600080fd5b5061021061071536600461454d565b610c06565b34801561072657600080fd5b50610314610735366004614434565b610c33565b34801561074657600080fd5b506102106107553660046147ca565b610ca2565b34801561076657600080fd5b506102106107753660046148e7565b610dc8565b34801561078657600080fd5b506106b1610795366004614434565b610df7565b6107a98460ff16848484610e35565b6107c0336000356001600160e01b03191683610ee0565b6107cc85858585610f27565b5050505050565b600a5460009081908190819060ff1660028111156107f3576107f36144ed565b600b54600c54600e54935093509350935090919293565b610820336000356001600160e01b0319166111cc565b805182511461085b576040517f5d32021a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156108b5576108a383828151811061087c5761087c614919565b602002602001015183838151811061089657610896614919565b60200260200101516111e8565b806108ad81614945565b91505061085e565b505050565b6108c684848484611292565b6108dd336000356001600160e01b03191683610ee0565b6107cc858585856112fb565b6109068160018111156108fe576108fe6144ed565b60ff166113b4565b61091d336000356001600160e01b03191683610ee0565b610926826113fb565b5050565b6109348282611458565b61094b336000356001600160e01b03191683610ee0565b8160000361095f5761095c83610bf4565b91505b61096983836114c7565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038416036109a8576001546109a3906001600160a01b03168361154b565b610a3b565b6001546109c09084906001600160a01b031684611664565b6001546001600160a01b031663c8fea2fb84306040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260448101859052606401600060405180830381600087803b158015610a2257600080fd5b505af1158015610a36573d6000803e3d6000fd5b505050505b6108b5838361166f565b610a5b336000356001600160e01b0319166111cc565b60045460ff16610a97576040517f9e6558bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b610ad884848484611292565b610aef336000356001600160e01b03191683610ee0565b6107cc85858585611683565b600080600080610b0a85611743565b805160208201516040909201519097919650945092505050565b610b2e82826117ce565b610b45336000356001600160e01b03191683610ee0565b6108b58383611828565b610b65336000356001600160e01b0319166111cc565b60045460ff1615610b895760405163181e462560e31b815260040160405180910390fd5b6004805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b610bcc83838361186d565b610be3336000356001600160e01b03191683610ee0565b610bee8484846118ff565b50505050565b6000610c008230611955565b92915050565b610c1183838361186d565b610c28336000356001600160e01b03191683610ee0565b610bee848484611a0f565b600080600080600080610c4587611a6b565b6040805160a08101825282546001600160a01b031680825260018401546020830181905260028501549383018490526003850154606084018190526004909501546080909301839052909b909a5091985091965090945092505050565b600054610100900460ff1615808015610cc25750600054600160ff909116105b80610cdc5750303b158015610cdc575060005460ff166001145b610d535760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610d76576000805461ff0019166101001790555b610d7f82611a9f565b8015610926576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b610dd484848484610e35565b610deb336000356001600160e01b03191683610ee0565b6107cc85858585611b0f565b600080610e05601084611baa565b90506001600f5460ff166001811115610e2057610e206144ed565b14610e2c578015610e2e565b805b9392505050565b60408051600480825260a08201909252606091602082016080803683370190505090508481600081518110610e6c57610e6c614919565b6020026020010181815250508381600181518110610e8c57610e8c614919565b6020026020010181815250508281600281518110610eac57610eac614919565b6020026020010181815250508181600381518110610ecc57610ecc614919565b602002602001018181525050949350505050565b610eeb838383611bcc565b6108b5578282826040517f960c80da000000000000000000000000000000000000000000000000000000008152600401610d4a93929190614999565b60ff8416610fd8576000811180610f3e5750600082115b15610fd35782600003610f705760405163bea499cb60e01b815260ff8516600482015260248101849052604401610d4a565b801580610f7c57508281115b15610fa657604051639e12fccf60e01b815260ff8516600482015260248101829052604401610d4a565b81600003610fd357604051635686bf5960e11b815260ff8516600482015260248101839052604401610d4a565b611135565b826000036110055760405163bea499cb60e01b815260ff8516600482015260248101849052604401610d4a565b80158061101d575061101a6224ea00846149cb565b81115b1561104757604051639e12fccf60e01b815260ff8516600482015260248101829052604401610d4a565b8160000361107457604051635686bf5960e11b815260ff8516600482015260248101839052604401610d4a565b60001960ff8516016110b657601c61108b83611c6a565b1115610fd357604051635686bf5960e11b815260ff8516600482015260248101839052604401610d4a565b60011960ff8516016110fe576110cb82611c81565b6110d483611c6a565b14610fd357604051635686bf5960e11b815260ff8516600482015260248101839052604401610d4a565b6040517f33a738bc00000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610d4a565b8360ff16600281111561114a5761114a6144ed565b600a805460ff19166001836002811115611166576111666144ed565b0217905550600b839055600c829055600e8190556040805160ff8616815260208101859052908101839052606081018290527f182fd6fa2a8560221614c1396dd4fcc78d26dfacf821a6afb61d25876057e412906080015b60405180910390a150505050565b6040805160008152602081019091526109269083908390610ee0565b6001600160a01b038216611228576040517fc41a13ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061123d57611238601083611ca4565b611248565b611248601083611cb9565b50816001600160a01b03167f6264362e9de26efefda321dfaeb4e4a9090deef40c5435fad8e9e2e306889a1c82604051611286911515815260200190565b60405180910390a25050565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b0316816000815181106112d2576112d2614919565b602002602001018181525050836001600160a01b031681600181518110610e8c57610e8c614919565b6001600160a01b03841661133b576040517fe7ba3e4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038416600090815260156020526040902061135f90848484611cce565b604080516001600160a01b03858116825260208201859052918101839052908516907ff099617c054d3a65e02a9c3b786f23cc03d5982bc7cfae84dff0408049cf17079060600160405180910390a250505050565b6040805160018082528183019092526060916020808301908036833701905050905081816000815181106113ea576113ea614919565b602002602001018181525050919050565b600f805482919060ff191660018381811115611419576114196144ed565b02179055507f216b6a9618d607ba436d0f2e17e9a83e70929adff805ac2385d67401360e551a8160405161144d9190614503565b60405180910390a150565b6040805160028082526060808301845292602083019080368337019050509050826001600160a01b03168160008151811061149557611495614919565b60200260200101818152505081816001815181106114b5576114b5614919565b60200260200101818152505092915050565b6114d18282611dab565b6001600160a01b038216611511576040517fc0e0f12200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610926576040517f1463acbe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8047101561159b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610d4a565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146115e8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ed565b606091505b50509050806108b55760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610d4a565b6108b5838383611df1565b6116798282611ecf565b6109268282611f55565b6001600160a01b0384166116c3576040517f1de0c9c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166000908152601b602052604090206116e790848484611f7d565b826001600160a01b0316846001600160a01b03167f1b5c5e27ed5443e409bae85849d41d7bf12d5352e8fddb3728b6408f836e14488484604051611735929190918252602082015260400190565b60405180910390a350505050565b611770604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b038083166000908152601560205260409020805490911615611799578061179c565b60125b6040805160608101825282546001600160a01b0316815260018301546020820152600290920154908201529392505050565b60408051600280825260608083018452926020830190803683370190505090508260001c8160008151811061180557611805614919565b6020026020010181815250508160001c816001815181106114b5576114b5614919565b8115611863576040517fade7e16800000000000000000000000000000000000000000000000000000000815260048101839052602401610d4a565b61092682826120e9565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b0316816000815181106118ac576118ac614919565b60200260200101818152505082816001815181106118cc576118cc614919565b60200260200101818152505081816002815181106118ec576118ec614919565b6020026020010181815250509392505050565b61190c6016848484611f7d565b60408051838152602081018390526001600160a01b038516917f6324b5f18e615697a2b44f16d7a649deb0bbbc7cb09dad4c610306105730e7d9910160405180910390a2505050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0384160361198c57506001600160a01b03811631610c00565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa1580156119eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2e91906149e2565b611a1c6012848484611cce565b604080516001600160a01b0385168152602081018490529081018290527fa80953bdc344b2ebd0bcdd001a3418a8fd1b858bdecf12a4ba5a9366ad65d3459060600160405180910390a1505050565b6001600160a01b038082166000908152601b602052604081208054919290911615611a965780610e2e565b60169392505050565b600054610100900460ff16611af85760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b8051611b039061216c565b611b0c81612219565b50565b670de0b6b3a7640000811115611b51576040517fce57496100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068490556007839055600882905560098190556040805185815260208101859052908101839052606081018290527f746dc5eb53c5de07c40b06d428506d6982ea10c423ac2875abfc44038927d691906080016111be565b6001600160a01b03811660009081526001830160205260408120541515610e2e565b600080546040517f28522895000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b031690632852289590611c219087903090889088906004016149fb565b602060405180830381865afa158015611c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c629190614a41565b949350505050565b6000611c62611c7c6201518084614a74565b612272565b60008080611c95611c7c6201518086614a74565b5091509150611c62828261230e565b6000610e2e836001600160a01b038416612394565b6000610e2e836001600160a01b03841661248e565b60006001600160a01b038416158015611ce5575082155b8015611cef575081155b905060006001600160a01b03851615801590611d135750821580611d135750838310155b905081158015611d21575080155b15611d71576040517fca1f04830000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610d4a565b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03939093169290921783556001830155600290910155565b611db582826124dd565b611dbf82826124e7565b611dc9828261250b565b611dd382826125f7565b611ddd82826127e6565b611de78282612830565b610926828261291d565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b179052611e578482612a33565b610bee57604080516001600160a01b038516602482015260006044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b179052611ec5908590612ada565b610bee8482612ada565b60035415610926576001805460035460405163eb056bbb60e01b815260048101919091526001600160a01b03858116602483015260448201859052606482019390935291169063eb056bbb906084015b600060405180830381600087803b158015611f3957600080fd5b505af1158015611f4d573d6000803e3d6000fd5b505050505050565b611f5f8282612bc2565b611f698282612c64565b611f738282612c86565b6109268282612ed0565b60006001600160a01b038416158015611f94575082155b8015611f9e575081155b905060006001600160a01b03851615801590611fba5750600084115b8015611fc65750600083115b905081158015611fd4575080155b15612024576040517ff5deb5dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610d4a565b6003860183905560018601849055811561204b5760006002870181905560048701556120b7565b856004015460000361207257600060028701556120688342614a88565b60048701556120b7565b85546001600160a01b038681169116146120b757855460009061209e906001600160a01b031687612efd565b60028801549091506120b09082612f09565b6002880155505b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0393909316929092179092555050565b80821480156120f757508115155b15612131576040517f0fb49edb00000000000000000000000000000000000000000000000000000000815260048101839052602401610d4a565b60028290556003819055604051819083907ff950a929751d87db181a0a517df21bb3ecd433abba584594402db4b58a55483590600090a35050565b600054610100900460ff166121c55760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b80516121d090612f66565b6121d8613036565b6121e58160200151613099565b6121f281604001516130fb565b6121ff816060015161315d565b61220c81608001516131bf565b611b038160a00151613221565b600054610100900460ff16611b0c5760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f84605002816122cf576122cf614a5e565b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b6000816001148061231f5750816003145b8061232a5750816005145b806123355750816007145b806123405750816008145b8061234b575081600a145b80612356575081600c145b156123635750601f610c00565b816002146123735750601e610c00565b61237c83613283565b61238757601c61238a565b601d5b60ff169392505050565b6000818152600183016020526040812054801561247d5760006123b8600183614a9b565b85549091506000906123cc90600190614a9b565b90508181146124315760008660000182815481106123ec576123ec614919565b906000526020600020015490508087600001848154811061240f5761240f614919565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061244257612442614aae565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610c00565b6000915050610c00565b5092915050565b60008181526001830160205260408120546124d557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610c00565b506000610c00565b61092682826132bf565b60045460ff16156109265760405163181e462560e31b815260040160405180910390fd5b5a60055560408051608081018252600654808252600754602083015260085492820192909252600954606082015290600090158061254a575081513a11155b90508061258f5781516040517fcbb35eb70000000000000000000000000000000000000000000000000000000081523a60048201526024810191909152604401610d4a565b602082015115610bee5760006125a5483a614a9b565b602084015190915081111580611f4d5760208401516040517f56e5387f000000000000000000000000000000000000000000000000000000008152610d4a918491600401918252602082015260400190565b600a54600b54600c54600e5460ff90931692428211156126335760405163013ce60b60e01b815242600482015260248101839052604401610d4a565b6000846002811115612647576126476144ed565b03612700578260000361265c57505050505050565b806000036126765761266e8342614a88565b600d55611f4d565b60006126828342614a9b565b905060006126908583614a74565b9050600061269e86836149cb565b6126a89084614a9b565b9050838111156126d45760405163013ce60b60e01b815242600482015260248101869052604401610d4a565b856126e0836001614a88565b6126ea91906149cb565b6126f49086614a88565b600d5550611f4d915050565b81421015801561271957506127158183614a88565b4211155b156127285761266e8284613312565b6000600185600281111561273e5761273e6144ed565b146127515761274c42611c81565b61275a565b61275a83611c6a565b9050600061276884836133aa565b9050804210156127945760405163013ce60b60e01b815242600482015260248101829052604401610d4a565b60006127a08483614a88565b905042811080156127cd5760405163013ce60b60e01b815242600482015260248101839052604401610d4a565b6127d78388613312565b600d5550505050505050505050565b6127ef82610df7565b610926576040517f7a2410450000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610d4a565b600061283b83611743565b80519091506001600160a01b031661285257505050565b6000836001600160a01b031682600001516001600160a01b03161461288e57612889612882858460000151612efd565b8490612f09565b612890565b825b90506000826020015182101580156128b85750604083015115806128b8575082604001518211155b9050806107cc578251602084015160408086015190517f7c63a4b00000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830185905260448301919091526064820152608401610d4a565b600061292883611a6b565b6040805160a08101825282546001600160a01b03168082526001840154602083015260028401549282019290925260038301546060820152600490920154608083015290915061297757505050565b6000836001600160a01b031682600001516001600160a01b0316146129ac576129a7612882858460000151612efd565b6129ae565b825b90506000826080015142106129c45760006129ca565b82604001515b6129d49083614a88565b905082602001518111156107cc57825160208401516040517fb8858d5d0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610d4a565b6000806000846001600160a01b031684604051612a509190614ae8565b6000604051808303816000865af19150503d8060008114612a8d576040519150601f19603f3d011682016040523d82523d6000602084013e612a92565b606091505b5091509150818015612abc575080511580612abc575080806020019051810190612abc9190614a41565b8015612ad157506001600160a01b0385163b15155b95945050505050565b6000612b2f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166133c99092919063ffffffff16565b9050805160001480612b50575080806020019051810190612b509190614a41565b6108b55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610d4a565b6000612bcd83611a6b565b80549091506001600160a01b0316612be457505050565b80546000906001600160a01b03858116911614612c1a578154612c15906128829086906001600160a01b0316612efd565b612c1c565b825b905081600401544210612c4557600060028301556003820154612c3f9042614a88565b60048301555b80826002016000828254612c599190614a88565b909155505050505050565b600d54600003612c72575050565b612c7d600d546133d8565b50506000600d55565b600554600003612cc2576040517f1f5b8fc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526006548152600754602082015260085491810191909152600954606082015260005a600554612cfb9190614a9b565b90506000612d093a836149cb565b90506000836040015160001480612d24575083604001518211155b905080612d6e578184604001516040517faf258ef2000000000000000000000000000000000000000000000000000000008152600401610d4a929190918252602082015260400190565b6000600555606084015115801590612d865750600085115b15611f4d576000612e59306001600160a01b0316634fd49efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df29190614b04565b6001600160a01b03166317fcb39b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e539190614b04565b88612efd565b90506000612e67848361340d565b90506000612e75828961347f565b90508660600151811115612ec55760608701516040517f0297747f000000000000000000000000000000000000000000000000000000008152610d4a918391600401918252602082015260400190565b505050505050505050565b6040517f68f46c45a243a0e9065a97649faf9a5afe1692f2679e650c2f853b9cd734cc0e90600090a15050565b6000610e2e8383613548565b60008282028315801590612f2c575082848281612f2857612f28614a5e565b0414155b15612f5457604051637472527d60e11b81526004810185905260248101849052604401610d4a565b670de0b6b3a764000090049392505050565b600054610100900460ff16612fbf5760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b61302d81600001516001600160a01b031663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa158015613004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130289190614b04565b61373e565b611b0c816137a0565b600054610100900460ff1661308f5760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b61309761383b565b565b600054610100900460ff166130f25760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b611b0c81613894565b600054610100900460ff166131545760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b611b0c81613909565b600054610100900460ff166131b65760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b611b0c8161397e565b600054610100900460ff166132185760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b611b0c81613a2c565b600054610100900460ff1661327a5760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b611b0c81613b0a565b6000613290600483614b21565b1580156132a657506132a3606483614b21565b15155b80610c0057506132b861019083614b21565b1592915050565b600254156109265760015460025460405163eb056bbb60e01b815260048101919091526001600160a01b03848116602483015260448201849052600060648301529091169063eb056bbb90608401611f1f565b60008060008061332186613be8565b9194509250905060006133348684614a88565b90506000613343600c83614b21565b90506000613352600c84614a74565b61335c9087614a88565b905060006002600a5460ff166002811115613379576133796144ed565b14613384578461338e565b61338e828461230e565b905061339c8a838584613c07565b9a9950505050505050505050565b60008060006133b842613be8565b5091509150612ad185838387613c07565b6060611c628484600085613c2f565b600c8190556040518181527ff90744bee56935ec5acc9de37b89c0c545298c667ee417bd9469e9c6836ad0649060200161144d565b6000828202831580159061343057508284828161342c5761342c614a5e565b0414155b1561345857604051637472527d60e11b81526004810185905260248101849052604401610d4a565b801561347557670de0b6b3a7640000600019820104600101611c62565b6000949350505050565b6000816000036134bb576040517fb8a2f92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036134cb57506000610c00565b670de0b6b3a7640000838102908482816134e7576134e7614a5e565b0414613529576040517fea7b49e60000000000000000000000000000000000000000000000000000000081526004810185905260248101829052604401610d4a565b82600182038161353b5761353b614a5e565b0460010191505092915050565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561359e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c29190614b04565b90506001600160a01b038116613613576001546040517f38d2baae0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610d4a565b600061361d613d21565b905080516000146136ae57816001600160a01b031663355efdd961364087613da1565b61364987613da1565b846040518463ffffffff1660e01b815260040161366893929190614b61565b602060405180830381865afa158015613685573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a991906149e2565b612ad1565b816001600160a01b031663ac41865a6136c687613da1565b6136cf87613da1565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561371a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad191906149e2565b600054610100900460ff166137975760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b611b0c81613dd5565b600054610100900460ff166137f95760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b80516001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560208101516040820151611b0c9190611828565b600054610100900460ff166130975760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b600054610100900460ff166138ed5760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b611b0c8160000151826020015183604001518460600151611b0f565b600054610100900460ff166139625760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b611b0c8160000151826020015183604001518460600151610f27565b600054610100900460ff166139d75760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b80516139e2906113fb565b60005b81602001515181101561092657613a1a82602001518281518110613a0b57613a0b614919565b602002602001015160016111e8565b80613a2481614945565b9150506139e5565b600054610100900460ff16613a855760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b8051805160208201516040830151613a9e929190611a0f565b60005b8260200151518110156108b557600083602001518281518110613ac657613ac6614919565b60200260200101519050600081602001519050613af582600001518260000151836020015184604001516112fb565b50508080613b0290614945565b915050613aa1565b600054610100900460ff16613b635760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b8051805160208201516040830151613b7c9291906118ff565b60005b8260200151518110156108b557600083602001518281518110613ba457613ba4614919565b60200260200101519050600081602001519050613bd38260000151826000015183602001518460400151611683565b50508080613be090614945565b915050613b7f565b60008080613bfa620151808504612272565b9196909550909350915050565b6000612ad1848484613c1889613e6e565b613c218a613e8c565b613c2a8b613ea8565b613eb5565b606082471015613ca75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610d4a565b600080866001600160a01b03168587604051613cc39190614ae8565b60006040518083038185875af1925050503d8060008114613d00576040519150601f19603f3d011682016040523d82523d6000602084013e613d05565b606091505b5091509150613d1687838387613f06565b979650505050505050565b60606000613d2d613f7f565b905036811115613d4b57505060408051600081526020810190915290565b8067ffffffffffffffff811115613d6457613d646141dc565b6040519080825280601f01601f191660200182016040528015613d8e576020820181803683370190505b5091508060208236030360208401375090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03831614613dcd5781610c00565b610c00613f9a565b600054610100900460ff16613e2e5760405162461bcd60e51b815260206004820152602b6024820152600080516020614c4783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d4a565b600080546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b600080613e7e6201518084614b21565b9050610e2e610e1082614a74565b600080613e9b610e1084614b21565b9050610e2e603c82614a74565b6000610c00603c83614b21565b600081613ec3603c856149cb565b613ecf610e10876149cb565b62015180613ede8b8b8b614026565b613ee891906149cb565b613ef29190614a88565b613efc9190614a88565b613d169190614a88565b60608315613f75578251600003613f6e576001600160a01b0385163b613f6e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d4a565b5081611c62565b611c628383614163565b60006024361015613f905750600090565b50601f1936013590565b600154604080517f17fcb39b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916317fcb39b9160048083019260209291908290030181865afa158015613ffd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140219190614b04565b905090565b60006107b284101561403757600080fd5b838383600062253d8c60046064600c614051600e88614b8d565b61405b9190614bad565b61406788611324614bdb565b6140719190614bdb565b61407b9190614bad565b614086906003614c03565b6140909190614bad565b600c8061409e600e88614b8d565b6140a89190614bad565b6140b390600c614c03565b6140be600288614b8d565b6140c89190614b8d565b6140d49061016f614c03565b6140de9190614bad565b6004600c6140ed600e89614b8d565b6140f79190614bad565b614103896112c0614bdb565b61410d9190614bdb565b614119906105b5614c03565b6141239190614bad565b61412f617d4b87614b8d565b6141399190614bdb565b6141439190614bdb565b61414d9190614b8d565b6141579190614b8d565b98975050505050505050565b8151156141735781518083602001fd5b8060405162461bcd60e51b8152600401610d4a9190614c33565b803560ff8116811461419e57600080fd5b919050565b600080600080608085870312156141b957600080fd5b6141c28561418d565b966020860135965060408601359560600135945092505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715614215576142156141dc565b60405290565b6040805190810167ffffffffffffffff81118282101715614215576142156141dc565b6040516020810167ffffffffffffffff81118282101715614215576142156141dc565b60405160c0810167ffffffffffffffff81118282101715614215576142156141dc565b604051601f8201601f1916810167ffffffffffffffff811182821017156142ad576142ad6141dc565b604052919050565b600067ffffffffffffffff8211156142cf576142cf6141dc565b5060051b60200190565b6001600160a01b0381168114611b0c57600080fd5b600082601f8301126142ff57600080fd5b8135602061431461430f836142b5565b614284565b82815260059290921b8401810191818101908684111561433357600080fd5b8286015b8481101561435757803561434a816142d9565b8352918301918301614337565b509695505050505050565b8015158114611b0c57600080fd5b6000806040838503121561438357600080fd5b823567ffffffffffffffff8082111561439b57600080fd5b6143a7868387016142ee565b93506020915081850135818111156143be57600080fd5b85019050601f810186136143d157600080fd5b80356143df61430f826142b5565b81815260059190911b820183019083810190888311156143fe57600080fd5b928401925b8284101561442557833561441681614362565b82529284019290840190614403565b80955050505050509250929050565b60006020828403121561444657600080fd5b8135610e2e816142d9565b6000806000806080858703121561446757600080fd5b8435614472816142d9565b93506020850135614482816142d9565b93969395505050506040820135916060013590565b80356002811061419e57600080fd5b6000602082840312156144b857600080fd5b610e2e82614497565b600080604083850312156144d457600080fd5b82356144df816142d9565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b602081016002831061452557634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561453e57600080fd5b50508035926020909101359150565b60008060006060848603121561456257600080fd5b833561456d816142d9565b95602085013595506040909401359392505050565b60006060828403121561459457600080fd5b6040516060810181811067ffffffffffffffff821117156145b7576145b76141dc565b60405290508082356145c8816142d9565b8082525060208301356020820152604083013560408201525092915050565b6000608082840312156145f957600080fd5b6146016141f2565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b60006080828403121561463d57600080fd5b6146456141f2565b90506146508261418d565b815260208201356020820152604082013560408201526060820135606082015292915050565b60006040828403121561468857600080fd5b61469061421b565b905061469b82614497565b8152602082013567ffffffffffffffff8111156146b757600080fd5b6146c3848285016142ee565b60208301525092915050565b6000608082840312156146e157600080fd5b6146e961421b565b905081356146f6816142d9565b81526147058360208401614582565b602082015292915050565b6000608080838503121561472357600080fd5b61472b61421b565b91506147378484614582565b8252606083013567ffffffffffffffff81111561475357600080fd5b8301601f8101851361476457600080fd5b8035602061477461430f836142b5565b82815260079290921b8301810191818101908884111561479357600080fd5b938201935b838510156147b9576147aa89866146cf565b82529385019390820190614798565b808388015250505050505092915050565b6000602082840312156147dc57600080fd5b813567ffffffffffffffff808211156147f457600080fd5b908301906020828603121561480857600080fd5b61481061423e565b82358281111561481f57600080fd5b92909201916101c0838703121561483557600080fd5b61483d614261565b6148478785614582565b815261485687606086016145e7565b60208201526148688760e0860161462b565b60408201526101608401358381111561488057600080fd5b61488c88828701614676565b606083015250610180840135838111156148a557600080fd5b6148b188828701614710565b6080830152506101a0840135838111156148ca57600080fd5b6148d688828701614710565b60a083015250815295945050505050565b600080600080608085870312156148fd57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016149575761495761492f565b5060010190565b600081518084526020808501945080840160005b8381101561498e57815187529582019590820190600101614972565b509495945050505050565b6001600160a01b03841681526001600160e01b031983166020820152606060408201526000612ad1606083018461495e565b8082028115828204841417610c0057610c0061492f565b6000602082840312156149f457600080fd5b5051919050565b60006001600160a01b0380871683528086166020840152506001600160e01b03198416604083015260806060830152614a37608083018461495e565b9695505050505050565b600060208284031215614a5357600080fd5b8151610e2e81614362565b634e487b7160e01b600052601260045260246000fd5b600082614a8357614a83614a5e565b500490565b80820180821115610c0057610c0061492f565b81810381811115610c0057610c0061492f565b634e487b7160e01b600052603160045260246000fd5b60005b83811015614adf578181015183820152602001614ac7565b50506000910152565b60008251614afa818460208701614ac4565b9190910192915050565b600060208284031215614b1657600080fd5b8151610e2e816142d9565b600082614b3057614b30614a5e565b500690565b60008151808452614b4d816020860160208601614ac4565b601f01601f19169290920160200192915050565b60006001600160a01b03808616835280851660208401525060606040830152612ad16060830184614b35565b81810360008312801583831316838312821617156124875761248761492f565b600082614bbc57614bbc614a5e565b600160ff1b821460001984141615614bd657614bd661492f565b500590565b8082018281126000831280158216821582161715614bfb57614bfb61492f565b505092915050565b80820260008212600160ff1b84141615614c1f57614c1f61492f565b8181058314821517610c0057610c0061492f565b602081526000610e2e6020830184614b3556fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a264697066735822122028c2f84f4b9ecfc13e4411b21e817a32bf827d117d4d42d00d6b1ad0f00b67ed64736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
