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