{
  "_format": "hh-sol-artifact-1",
  "contractName": "WitnetPriceFeedsDefault",
  "sourceName": "contracts/core/defaults/WitnetPriceFeedsDefault.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract WitnetOracle",
          "name": "_wrb",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_upgradable",
          "type": "bool"
        },
        {
          "internalType": "bytes32",
          "name": "_versionTag",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "EmptyBuffer",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "range",
          "type": "uint256"
        }
      ],
      "name": "IndexOutOfBounds",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "length",
          "type": "uint256"
        }
      ],
      "name": "InvalidLengthEncoding",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "OwnableInvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OwnableUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ReentrancyGuardReentrantCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "read",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expected",
          "type": "uint256"
        }
      ],
      "name": "UnexpectedMajorType",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "unexpected",
          "type": "uint256"
        }
      ],
      "name": "UnsupportedMajorType",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "baseAddr",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "baseCodehash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "versionTag",
          "type": "string"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        }
      ],
      "name": "WitnetFeedDeleted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "radHash",
          "type": "bytes32"
        }
      ],
      "name": "WitnetFeedSettled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "solver",
          "type": "address"
        }
      ],
      "name": "WitnetFeedSolverSettled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "origin",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "witnetQueryId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "witnetQueryEvmReward",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "committeeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessingFeeNanoWit",
              "type": "uint64"
            }
          ],
          "indexed": false,
          "internalType": "struct WitnetV2.RadonSLA",
          "name": "witnetQuerySLA",
          "type": "tuple"
        }
      ],
      "name": "WitnetFeedUpdateRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "origin",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "witnetQueryId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "witnetQueryReward",
          "type": "uint256"
        }
      ],
      "name": "WitnetFeedUpdateRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "solver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "codehash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "constructorParams",
          "type": "bytes"
        }
      ],
      "name": "WitnetPriceSolverDeployed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmReward",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "committeeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessingFeeNanoWit",
              "type": "uint64"
            }
          ],
          "indexed": false,
          "internalType": "struct WitnetV2.RadonSLA",
          "name": "witnetSLA",
          "type": "tuple"
        }
      ],
      "name": "WitnetQuery",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        }
      ],
      "name": "WitnetQueryResponse",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmCallbackGas",
          "type": "uint256"
        }
      ],
      "name": "WitnetQueryResponseDelivered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "resultCborBytes",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmCallbackActualGas",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "evmCallbackRevertReason",
          "type": "string"
        }
      ],
      "name": "WitnetQueryResponseDeliveryFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmReward",
          "type": "uint256"
        }
      ],
      "name": "WitnetQueryRewardUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "committeeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessingFeeNanoWit",
              "type": "uint64"
            }
          ],
          "indexed": false,
          "internalType": "struct WitnetV2.RadonSLA",
          "name": "sla",
          "type": "tuple"
        }
      ],
      "name": "WitnetRadonSLA",
      "type": "event"
    },
    {
      "stateMutability": "nonpayable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "base",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "baseFeeOverheadPercentage",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "class",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "codehash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "_codehash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "dataType",
      "outputs": [
        {
          "internalType": "enum Witnet.RadonDataTypes",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultRadonSLA",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "numWitnesses",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "minConsensusPercentage",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessReward",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "witnessCollateral",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "minerCommitRevealFee",
              "type": "uint64"
            }
          ],
          "internalType": "struct Witnet.RadonSLA",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "caption",
          "type": "string"
        }
      ],
      "name": "deleteFeed",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "deleteFeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "initcode",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "constructorParams",
          "type": "bytes"
        }
      ],
      "name": "deployPriceSolver",
      "outputs": [
        {
          "internalType": "address",
          "name": "_solver",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "deployer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "initcode",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "constructorParams",
          "type": "bytes"
        }
      ],
      "name": "determinePriceSolverAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "_address",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_evmGasPrice",
          "type": "uint256"
        }
      ],
      "name": "estimateUpdateBaseFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "footprint",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "_footprint",
          "type": "bytes4"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "caption",
          "type": "string"
        }
      ],
      "name": "hash",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_initData",
          "type": "bytes"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isUpgradable",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        }
      ],
      "name": "isUpgradableFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        }
      ],
      "name": "lastValidQueryId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        }
      ],
      "name": "lastValidResponse",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "reporter",
              "type": "address"
            },
            {
              "internalType": "uint64",
              "name": "finality",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "resultTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "resultTallyHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct WitnetV2.Response",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        }
      ],
      "name": "latestPrice",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "tallyHash",
              "type": "bytes32"
            },
            {
              "internalType": "enum WitnetV2.ResponseStatus",
              "name": "status",
              "type": "uint8"
            }
          ],
          "internalType": "struct IWitnetPriceSolver.Price",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4[]",
          "name": "feedIds",
          "type": "bytes4[]"
        }
      ],
      "name": "latestPrices",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "tallyHash",
              "type": "bytes32"
            },
            {
              "internalType": "enum WitnetV2.ResponseStatus",
              "name": "status",
              "type": "uint8"
            }
          ],
          "internalType": "struct IWitnetPriceSolver.Price[]",
          "name": "_prices",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        }
      ],
      "name": "latestUpdateQueryId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        }
      ],
      "name": "latestUpdateRequest",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "requester",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "gasCallback",
              "type": "uint24"
            },
            {
              "internalType": "uint72",
              "name": "evmReward",
              "type": "uint72"
            },
            {
              "internalType": "bytes",
              "name": "witnetBytecode",
              "type": "bytes"
            },
            {
              "internalType": "bytes32",
              "name": "witnetRAD",
              "type": "bytes32"
            },
            {
              "components": [
                {
                  "internalType": "uint8",
                  "name": "committeeSize",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "witnessingFeeNanoWit",
                  "type": "uint64"
                }
              ],
              "internalType": "struct WitnetV2.RadonSLA",
              "name": "witnetSLA",
              "type": "tuple"
            }
          ],
          "internalType": "struct WitnetV2.Request",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        }
      ],
      "name": "latestUpdateResponse",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "reporter",
              "type": "address"
            },
            {
              "internalType": "uint64",
              "name": "finality",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "resultTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "resultTallyHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct WitnetV2.Response",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        }
      ],
      "name": "latestUpdateResponseStatus",
      "outputs": [
        {
          "internalType": "enum WitnetV2.ResponseStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        }
      ],
      "name": "latestUpdateResultError",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.ResultErrorCodes",
              "name": "code",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "reason",
              "type": "string"
            }
          ],
          "internalType": "struct Witnet.ResultError",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        }
      ],
      "name": "lookupCaption",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        }
      ],
      "name": "lookupDecimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        }
      ],
      "name": "lookupPriceSolver",
      "outputs": [
        {
          "internalType": "contract IWitnetPriceSolver",
          "name": "_solverAddress",
          "type": "address"
        },
        {
          "internalType": "string[]",
          "name": "_solverDeps",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        }
      ],
      "name": "lookupWitnetBytecode",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        }
      ],
      "name": "lookupWitnetRadHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        }
      ],
      "name": "lookupWitnetRetrievals",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "argsCount",
              "type": "uint8"
            },
            {
              "internalType": "enum Witnet.RadonDataRequestMethods",
              "name": "method",
              "type": "uint8"
            },
            {
              "internalType": "enum Witnet.RadonDataTypes",
              "name": "resultDataType",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "url",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "body",
              "type": "string"
            },
            {
              "internalType": "string[2][]",
              "name": "headers",
              "type": "string[2][]"
            },
            {
              "internalType": "bytes",
              "name": "script",
              "type": "bytes"
            }
          ],
          "internalType": "struct Witnet.RadonRetrieval[]",
          "name": "_retrievals",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "prefix",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "registry",
      "outputs": [
        {
          "internalType": "contract WitnetRequestBytecodes",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        }
      ],
      "name": "requestUpdate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "feedId",
          "type": "bytes4"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "committeeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessingFeeNanoWit",
              "type": "uint64"
            }
          ],
          "internalType": "struct WitnetV2.RadonSLA",
          "name": "updateSLA",
          "type": "tuple"
        }
      ],
      "name": "requestUpdate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_usedFunds",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_baseFeeOverheadPercentage",
          "type": "uint16"
        }
      ],
      "name": "settleBaseFeeOverheadPercentage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "committeeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessingFeeNanoWit",
              "type": "uint64"
            }
          ],
          "internalType": "struct WitnetV2.RadonSLA",
          "name": "defaultSLA",
          "type": "tuple"
        }
      ],
      "name": "settleDefaultRadonSLA",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "caption",
          "type": "string"
        },
        {
          "internalType": "bytes32",
          "name": "radHash",
          "type": "bytes32"
        }
      ],
      "name": "settleFeedRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "caption",
          "type": "string"
        },
        {
          "internalType": "contract WitnetRequest",
          "name": "request",
          "type": "address"
        }
      ],
      "name": "settleFeedRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "caption",
          "type": "string"
        },
        {
          "internalType": "contract WitnetRequestTemplate",
          "name": "template",
          "type": "address"
        },
        {
          "internalType": "string[][]",
          "name": "args",
          "type": "string[][]"
        }
      ],
      "name": "settleFeedRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "caption",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "solver",
          "type": "address"
        },
        {
          "internalType": "string[]",
          "name": "deps",
          "type": "string[]"
        }
      ],
      "name": "settleFeedSolver",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "specs",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "supportedFeeds",
      "outputs": [
        {
          "internalType": "bytes4[]",
          "name": "_ids",
          "type": "bytes4[]"
        },
        {
          "internalType": "string[]",
          "name": "_captions",
          "type": "string[]"
        },
        {
          "internalType": "bytes32[]",
          "name": "_solvers",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "caption",
          "type": "string"
        }
      ],
      "name": "supportsCaption",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalFeeds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "feedId",
          "type": "bytes32"
        }
      ],
      "name": "valueFor",
      "outputs": [
        {
          "internalType": "int256",
          "name": "_value",
          "type": "int256"
        },
        {
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_status",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "witnet",
      "outputs": [
        {
          "internalType": "contract WitnetOracle",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6101c0604052336101405263346916ef60e11b6101805234801561002257600080fd5b5060405161628e38038061628e83398101604081905261004191610251565b81816040518060400160405280601f81526020017f696f2e7769746e65742e70726f786961626c652e66656564732e707269636500815250823360046040518060400160405280600681526020016550726963652d60d01b8152508160138111156100ae576100ae6102a5565b60808160138111156100c2576100c26102a5565b9052506100ce81610142565b60a05250506001600160a01b03811661010157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61010a81610155565b503060c0521515610100526001600255610120919091528051602090910120610160525050506001600160a01b03166101a0526102e7565b600061014f826020610171565b92915050565b600180546001600160a01b031916905561016e81610201565b50565b600060208260ff161115610187576101876102bb565b60008260ff1684511161019b5783516101a0565b8260ff165b905060005b818110156101f957806008028582815181106101c3576101c36102d1565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217916001016101a5565b505092915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060006060848603121561026657600080fd5b83516001600160a01b038116811461027d57600080fd5b6020850151909350801515811461029357600080fd5b80925050604084015190509250925092565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615e8e610400600039600081816105740152818161169101528181611726015281816118b801528181611b97015281816123570152818161272a01528181612aed01528181612e9d01528181613172015281816134da015281816135780152818161368e0152818161372b015281816137c00152613d19015260006109cb0152600061064d01526000610b2501526000611a4101526000818161067e0152611ab00152600050506000818161061701528181610961015281816115d10152818161164d0152818161180b015261182d015260008181611b6701526132760152600081816106f50152611e020152615e8e6000f3fe6080604052600436106103505760003560e01c80638da5cb5b116101c6578063d5f39488116100f7578063f2fde38b11610095578063f9f34bb61161006f578063f9f34bb614610c7e578063fae91a5114610cab578063ff24fb4f14610ccb578063ff75890f14610ceb57610350565b8063f2fde38b14610c03578063f78eea8314610c23578063f9b4a27f14610c5e57610350565b8063e30c3978116100d1578063e30c397814610b7e578063eb92b29b14610b93578063ef1dff2b14610bb6578063f14cb81214610bd657610350565b8063d5f3948814610b13578063d6a3614f14610b47578063e1c9e3c014610b6957610350565b8063b411ee9411610164578063c064d3721161013e578063c064d37214610a79578063c3d98ea814610a99578063c5010d1714610ac6578063d3471e3414610ae657610350565b8063b411ee94146109ed578063b8d38c9614610a13578063bff852fa14610a3357610350565b8063a9e954b9116101a0578063a9e954b914610952578063abc86c6e14610986578063ac82c60814610999578063adb7c3f7146109b957610350565b80638da5cb5b146108f45780638df3fdfd14610912578063a55b471c1461093257610350565b80635be93984116102a057806379ba50971161023e57806384292f071161021857806384292f071461086557806386ac03e01461088557806389a87b16146108a55780638a416ea9146108d257610350565b806379ba50971461080e5780637b10399914610823578063806d7e8f1461083857610350565b80636b58960a1161027a5780636b58960a146107565780636d1178e514610776578063715018a6146107e457806375dadb32146107f957610350565b80635be93984146106c35780636175ff00146106e35780636ab221f81461072457610350565b806346d1d21a1161030d5780635001f3b5116102e75780635001f3b51461060857806352d1902d1461063b5780635479d9401461066f57806354fd4d50146106ae57610350565b806346d1d21a1461056257806349492ef1146105ae5780634efef9c0146105db57610350565b8063029db9581461048a5780630306732e146104bd57806303f3813d146104e1578063384ac938146105015780633e088e121461052f578063439fab9114610542575b34801561035c57600080fd5b506000356001600160e01b03191663e0d20f7360e01b14801561037e57503330145b156104365760006103a56020610394368461447a565b6001600160c01b031916901b610d0b565b600601546001600160a01b03169050806104115760405162461bcd60e51b815260206004820152602260248201527f5769746e6574507269636546656564733a20756e736574746c656420736f6c7660448201526132b960f11b60648201526084015b60405180910390fd5b60405136600082376000803683855af43d806000843e818015610432578184f35b8184fd5b60405162461bcd60e51b815260206004820152602160248201527f5769746e6574507269636546656564733a206e6f7420696d706c656d656e74656044820152601960fa1b6064820152608401610408565b005b34801561049657600080fd5b506104aa6104a53660046144be565b610d45565b6040519081526020015b60405180910390f35b3480156104c957600080fd5b506104d2610d56565b6040516104b493929190614585565b3480156104ed57600080fd5b506104886104fc3660046146c0565b610fb5565b34801561050d57600080fd5b5061052161051c3660046144be565b6113ab565b6040516104b4929190614744565b6104aa61053d3660046144be565b61147d565b34801561054e57600080fd5b5061048861055d3660046148a2565b6114b1565b34801561056e57600080fd5b506105967f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016104b4565b3480156105ba57600080fd5b506105ce6105c93660046144be565b6118a1565b6040516104b49190614900565b3480156105e757600080fd5b506105fb6105f63660046144be565b611951565b6040516104b49190614937565b34801561061457600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610596565b34801561064757600080fd5b506104aa7f000000000000000000000000000000000000000000000000000000000000000081565b34801561067b57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405190151581526020016104b4565b3480156106ba57600080fd5b506105fb611a3a565b3480156106cf57600080fd5b506104aa6106de3660046144be565b611a6a565b3480156106ef57600080fd5b506107177f000000000000000000000000000000000000000000000000000000000000000081565b6040516104b4919061495e565b34801561073057600080fd5b5061074461073f3660046144be565b611a7f565b60405160ff90911681526020016104b4565b34801561076257600080fd5b5061069e61077136600461496c565b611a97565b34801561078257600080fd5b5061078b611af2565b6040516104b49190600060a08201905060ff835116825260ff602084015116602083015260408301516001600160401b038082166040850152806060860151166060850152806080860151166080850152505092915050565b3480156107f057600080fd5b50610488611b4c565b34801561080557600080fd5b506105fb611b60565b34801561081a57600080fd5b50610488611b8b565b34801561082f57600080fd5b50610596611b93565b34801561084457600080fd5b506108586108533660046144be565b611c17565b6040516104b49190614a1f565b34801561087157600080fd5b50610488610880366004614b05565b611df8565b34801561089157600080fd5b506104886108a0366004614b50565b6120a6565b3480156108b157600080fd5b506108c56108c03660046144be565b612311565b6040516104b49190614b91565b3480156108de57600080fd5b506108e76123f0565b6040516104b49190614c20565b34801561090057600080fd5b506000546001600160a01b0316610596565b34801561091e57600080fd5b506104aa61092d3660046144be565b6124aa565b34801561093e57600080fd5b5061059661094d366004614c35565b6124bf565b34801561095e57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000003f6104aa565b6104aa610994366004614cb2565b612598565b3480156109a557600080fd5b506104886109b4366004614ce8565b612652565b3480156109c557600080fd5b506108e77f000000000000000000000000000000000000000000000000000000000000000081565b3480156109f957600080fd5b506108e7610a083660046148a2565b805160209091012090565b348015610a1f57600080fd5b50610488610a2e366004614d3e565b6126c6565b348015610a3f57600080fd5b5060408051808201909152601781527f5769746e65745072696365466565647344656661756c7400000000000000000060208201526105fb565b348015610a8557600080fd5b506104aa610a94366004614d62565b6126e6565b348015610aa557600080fd5b50610ab9610ab43660046144be565b6127a9565b6040516104b49190614db5565b348015610ad257600080fd5b5061069e610ae1366004614b50565b6129bc565b348015610af257600080fd5b50610b06610b013660046144be565b612abe565b6040516104b49190614dc3565b348015610b1f57600080fd5b506105967f000000000000000000000000000000000000000000000000000000000000000081565b348015610b5357600080fd5b50600080516020615e39833981519152546104aa565b348015610b7557600080fd5b50610488612b86565b348015610b8a57600080fd5b50610596612cfe565b348015610b9f57600080fd5b5060045460405161ffff90911681526020016104b4565b348015610bc257600080fd5b506105fb610bd13660046144be565b612d12565b348015610be257600080fd5b50610bf6610bf13660046144be565b612dad565b6040516104b49190614e1d565b348015610c0f57600080fd5b50610488610c1e36600461496c565b612dc0565b348015610c2f57600080fd5b50610c43610c3e366004614d62565b612dd4565b604080519384526020840192909252908201526060016104b4565b348015610c6a57600080fd5b50610b06610c793660046144be565b612e6e565b348015610c8a57600080fd5b50610c9e610c99366004614e2b565b612ed3565b6040516104b49190614e60565b348015610cb757600080fd5b50610488610cc6366004614eae565b612faa565b348015610cd757600080fd5b50610488610ce63660046146c0565b613051565b348015610cf757600080fd5b50610596610d06366004614c35565b6130b2565b6001600160e01b03191660009081527fe36ea87c48340f2c23c9e1c9f72f5c5165184e75683a4d2a19148e5964c1d2016020526040902090565b6000610d5082613141565b92915050565b600080516020615e3983398151915280546040805160208084028201810190925282815260609384938493830182828015610ddd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610d9f5790505b5050505050925082516001600160401b03811115610dfd57610dfd614768565b604051908082528060200260200182016040528015610e3057816020015b6060815260200190600190039081610e1b5790505b50915082516001600160401b03811115610e4c57610e4c614768565b604051908082528060200260200182016040528015610e75578160200160208202803683370190505b50905060005b8351811015610faf576000610ea8858381518110610e9b57610e9b614eca565b6020026020010151610d0b565b9050806000018054610eb990614ee0565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee590614ee0565b8015610f325780601f10610f0757610100808354040283529160200191610f32565b820191906000526020600020905b815481529060010190602001808311610f1557829003601f168201915b5050505050848381518110610f4957610f49614eca565b602090810291909101015260068101546001600160a01b031615610f8357600681015460601b6bffffffffffffffffffffffff1916610f89565b80600501545b838381518110610f9b57610f9b614eca565b602090810291909101015250600101610e7b565b50909192565b610fbd613217565b6001600160a01b03831661101f5760405162461bcd60e51b815260206004820152602360248201527f5769746e6574507269636546656564733a206e6f20736f6c766572206164647260448201526265737360e81b6064820152608401610408565b600061106086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a0892505050565b9050600061106d82610d0b565b9050806002015460000361113d5780611087878983614f64565b506110928787613244565b60018201805460ff191660ff92909216919091179055600080516020615e198339815191526001908101546110c691615039565b60028201556006810180546001600160a01b0319166001600160a01b038716179055600080516020615e198339815191526001908101805491820181556000908152602090206008820401805463ffffffff60079093166004026101000a928302191660e085901c92909202919091179055611179565b60068101546001600160a01b0386811691161461117957600060058201556006810180546001600160a01b0319166001600160a01b0387161790555b600080866001600160a01b031663e6f8715860e01b8588886040516024016111a3939291906150ba565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516111e19190615136565b600060405180830381855af49150503d806000811461121c576040519150601f19603f3d011682016040523d82523d6000602084013e611221565b606091505b50915091508161127b576004810190508080602001905181019061124591906151aa565b60405160200161125591906151de565b60408051601f198184030181529082905262461bcd60e51b825261040891600401614937565b5050600080306001600160a01b031663e0d20f7360e01b856040516024016112a39190614c20565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516112e19190615136565b600060405180830381855afa9150503d806000811461131c576040519150601f19603f3d011682016040523d82523d6000602084013e611321565b606091505b509150915081611355576004810190508080602001905181019061134591906151aa565b6040516020016112559190615241565b5050604080516001600160e01b0319841681526001600160a01b03871660208201527f850802cc670161a9f185e45414c2fe7efb5e71b23a8e32a53caffb7dd000aca3910160405180910390a150505050505050565b600060606113b883610d0b565b600601546001600160a01b0316915060006113d28461332a565b905080516001600160401b038111156113ed576113ed614768565b60405190808252806020026020018201604052801561142057816020015b606081526020019060019003908161140b5790505b50915060005b81518110156114765761145182828151811061144457611444614eca565b6020026020010151612d12565b83828151811061146357611463614eca565b6020908102919091010152600101611426565b5050915091565b6040805180820190915260035460ff8116825261010090046001600160401b03166020820152600090610d50908390613414565b6000546001600160a01b03168061152a57818060200190518101906114d69190615294565b90506114e18161394f565b60408051808201909152600a808252630bebc2006020909201919091526003805468ffffffffffffffffff1916640bebc2000a1790556004805461ffff19169091179055611582565b336001600160a01b038216146115825760405162461bcd60e51b815260206004820152601f60248201527f5769746e6574507269636546656564733a206e6f7420746865206f776e6572006044820152606401610408565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe54158015906115f357507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe547f00000000000000000000000000000000000000000000000000000000000000003f145b1561164b5760405162461bcd60e51b815260206004820152602260248201527f5769746e6574507269636546656564733a20616c726561647920757067726164604482015261195960f21b6064820152608401610408565b7f00000000000000000000000000000000000000000000000000000000000000003f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe557f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b6117125760405162461bcd60e51b815260206004820152602360248201527f5769746e6574507269636546656564733a20696e6578697374656e74206f7261604482015262636c6560e81b6064820152608401610408565b63baeca88b60e01b6001600160e01b0319167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663adb7c3f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a691906152b1565b6001600160e01b031916146118095760405162461bcd60e51b8152602060048201526024808201527f5769746e6574507269636546656564733a20756e636f6d706c69616e74206f7260448201526361636c6560e01b6064820152608401610408565b7f00000000000000000000000000000000000000000000000000000000000000003f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03167fe73e754121f0bad1327816970101955bfffdf53d270ac509d777c25be070d7f6611888611a3a565b6040516118959190614937565b60405180910390a45050565b6040805180820190915260008152606060208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a77fc1a46118ee84611a6a565b6040518263ffffffff1660e01b815260040161190c91815260200190565b600060405180830381865afa158015611929573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d5091908101906152ce565b6060600061195e83610d0b565b60058101549091506000036119b55760405162461bcd60e51b815260206004820152601d60248201527f5769746e6574507269636546656564733a206e6f2052414420686173680000006044820152606401610408565b6119bd611b93565b6001600160a01b0316632ebf5d5c82600501546040518263ffffffff1660e01b81526004016119ee91815260200190565b600060405180830381865afa158015611a0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a3391908101906151aa565b9392505050565b6060611a657f0000000000000000000000000000000000000000000000000000000000000000613968565b905090565b6000611a7582610d0b565b6004015492915050565b6000611a8a82610d0b565b6001015460ff1692915050565b600080611aac6000546001600160a01b031690565b90507f00000000000000000000000000000000000000000000000000000000000000008015611a335750826001600160a01b0316816001600160a01b0316149392505050565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040805180820190915260035460ff8116825261010090046001600160401b03166020820152611a6590613a0c565b611b54613217565b611b5e600061394f565b565b6060611a657f0000000000000000000000000000000000000000000000000000000000000000613ab3565b611b5e613b57565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a659190615294565b60606000611c23611b93565b6001600160a01b031663a83e942c611c3a856124aa565b6040518263ffffffff1660e01b8152600401611c5891815260200190565b600060405180830381865afa158015611c75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c9d9190810190615378565b905080516001600160401b03811115611cb857611cb8614768565b604051908082528060200260200182016040528015611d2a57816020015b611d176040805160e0810190915260008082526020820190815260200160008152602001606081526020016060815260200160608152602001606081525090565b815260200190600190039081611cd65790505b50915060005b8251811015611df157611d41611b93565b6001600160a01b0316639dd48757838381518110611d6157611d61614eca565b60200260200101516040518263ffffffff1660e01b8152600401611d8791815260200190565b600060405180830381865afa158015611da4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611dcc9190810190615543565b838281518110611dde57611dde614eca565b6020908102919091010152600101611d30565b5050919050565b611e00613217565b7f00000000000000000000000000000000000000000000000000000000000000006013811115611e3257611e326148ea565b611e3a611b93565b6001600160a01b0316634c729104836040518263ffffffff1660e01b8152600401611e6791815260200190565b602060405180830381865afa158015611e84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea8919061564e565b6013811115611eb957611eb96148ea565b14611f155760405162461bcd60e51b815260206004820152602660248201527f5769746e6574507269636546656564733a2062616420726573756c742064617460448201526561207479706560d01b6064820152608401610408565b6000611f5684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a0892505050565b90506000611f6382610d0b565b905080600201546000036120375780611f7d858783614f64565b50611f888585613244565b60018201805460ff191660ff92909216919091179055600080516020615e19833981519152600190810154611fbc91615039565b600282015560058101839055600080516020615e3983398151915280546001810182556000919091527fb7ef506da7909f25321b247725840c95fced7275a59588a4236c0671ab1d82216008820401805463ffffffff60079093166004026101000a928302191660e085901c9290920291909117905561205c565b8281600501541461205c57600581018390556006810180546001600160a01b03191690555b604080516001600160e01b031984168152602081018590527f37206f9df7db3fe5c4edfea9c5ce9ea406912fc4133f5c67200273da0c09e7b1910160405180910390a15050505050565b6120ae613217565b60006120ef83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a0892505050565b9050600080516020615e39833981519152600061210b83610d0b565b600281015490915060008190036121645760405162461bcd60e51b815260206004820152601e60248201527f5769746e6574507269636546656564733a20756e6b6e6f776e206665656400006044820152606401610408565b8254600090849061217790600190615669565b8154811061218757612187614eca565b6000918252602090912060088204015460079091166004026101000a900460e01b905080846121b7600185615669565b815481106121c7576121c7614eca565b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c0217905550838054806122075761220761567c565b600082815260209020600860001990920191820401805463ffffffff600460078516026101000a021916905590558161223f82610d0b565b600201556001600160e01b0319851660009081527fe36ea87c48340f2c23c9e1c9f72f5c5165184e75683a4d2a19148e5964c1d201602052604081209061228682826143c7565b5060018101805460ff191690556000600282018190556003820181905560048201819055600582018190556006820180546001600160a01b031916905560078201819055600890910155506040517f5296cc0e8dad8eeece6ce7d0928746294283b850d6261e03e7028a84de61f0b690612301908690614c20565b60405180910390a1505050505050565b6123556040805160c081018252600080825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630aa4112a61238d84611a6a565b6040518263ffffffff1660e01b81526004016123ab91815260200190565b600060405180830381865afa1580156123c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d50919081019061571c565b600080516020615e3983398151915254600090156124a757612457600080516020615e1983398151915260010160008154811061242f5761242f614eca565b90600052602060002090600891828204019190066004029054906101000a900460e01b613bd2565b905060015b600080516020615e39833981519152548110156124a557612499600080516020615e19833981519152600101828154811061242f5761242f614eca565b9091189060010161245c565b505b90565b60006124b582610d0b565b6005015492915050565b60006124c9613217565b604051632956d1c760e21b815273__$07c3c1ca4cad51ef39b1fa88deb1903e78$__9063a55b471c906125069088908890889088906004016157dd565b602060405180830381865af4158015612523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125479190615294565b90507f3c07c0cbdabca8310d65b09f79c58655b46c3035d57c452177e3d49972ff5cec81826001600160a01b03163f85856040516125889493929190615804565b60405180910390a1949350505050565b6040805180820190915260035460ff8116825261010090046001600160401b031660208201526000906125e4906125d43685900385018561582c565b9051905160ff9182169116101590565b61263a5760405162461bcd60e51b815260206004820152602160248201527f5769746e6574507269636546656564733a20756e7365637572652075706461746044820152606560f81b6064820152608401610408565b611a338361264d3685900385018561582c565b613414565b61265a613217565b6126c18383836001600160a01b0316631eef90526040518163ffffffff1660e01b8152600401602060405180830381865afa15801561269d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108809190615871565b505050565b6126ce613217565b6004805461ffff191661ffff92909216919091179055565b6004546000906064906126fd9061ffff168261588a565b604051630f7b104360e31b8152600481018590526020602482015261ffff91909116906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637bd8821890604401602060405180830381865afa158015612771573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127959190615871565b61279f91906158a5565b610d5091906158d2565b6127d16040805160808101825260008082526020820181905291810182905290606082015290565b60006127dc83613141565b9050801561285a5760006127ef84612e6e565b905060006128008260800151613c61565b9050604051806080016040528061281683613c7f565b8152602001836040015163ffffffff1681526020018360600151815260200161283e87612dad565b600581111561284f5761284f6148ea565b905295945050505050565b600061286584610d0b565b600601546001600160a01b03169050801561297057600080306001600160a01b031663e0d20f7360e01b876040516024016128a09190614c20565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516128de9190615136565b600060405180830381855afa9150503d8060008114612919576040519150601f19603f3d011682016040523d82523d6000602084013e61291e565b606091505b509150915081612952576004810190508080602001905181019061294291906151aa565b60405160200161125591906158e6565b80806020019051810190612966919061592f565b9695505050505050565b604051806080016040528060008152602001600081526020016000801b815260200161299b86612dad565b60058111156129ac576129ac6148ea565b9052949350505050565b50919050565b6000806129fe84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a0892505050565b90506001600160e01b03198116612aab612a1783610d0b565b8054612a2290614ee0565b80601f0160208091040260200160405190810160405280929190818152602001828054612a4e90614ee0565b8015612a9b5780601f10612a7057610100808354040283529160200191612a9b565b820191906000526020600020905b815481529060010190602001808311612a7e57829003601f168201915b5050505050805160209091012090565b6001600160e01b03191614949350505050565b6040805160a08101825260008082526020820181905291810182905260608082019290925260808101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f61921b2612b2384611a6a565b6040518263ffffffff1660e01b8152600401612b4191815260200190565b600060405180830381865afa158015612b5e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d509190810190615998565b612b8e613217565b600080516020615e3983398151915280545b8015612cfa57600082612bb4600184615669565b81548110612bc457612bc4614eca565b90600052602060002090600891828204019190066004029054906101000a900460e01b9050612bfe600080516020615e1983398151915290565b6001600160e01b0319821660009081526002919091016020526040812090612c2682826143c7565b5060018101805460ff191690556000600282018190556003820181905560048201819055600582018190556006820180546001600160a01b0319169055600782018190556008909101558254839080612c8157612c8161567c565b600082815260209020600860001990920191820401805463ffffffff600460078516026101000a021916905590556040517f5296cc0e8dad8eeece6ce7d0928746294283b850d6261e03e7028a84de61f0b690612cdf908390614c20565b60405180910390a15080612cf281615a54565b915050612ba0565b5050565b6000611a656001546001600160a01b031690565b6060612d1d82610d0b565b8054612d2890614ee0565b80601f0160208091040260200160405190810160405280929190818152602001828054612d5490614ee0565b8015612da15780601f10612d7657610100808354040283529160200191612da1565b820191906000526020600020905b815481529060010190602001808311612d8457829003601f168201915b50505050509050919050565b6000610d50612dbb83611a6a565b613cfb565b612dc8613217565b612dd181613d94565b50565b600080600080612de3856127a9565b8051602082015191925090600283606001516005811115612e0657612e066148ea565b14612e5857600183606001516005811115612e2357612e236148ea565b1480612e445750600483606001516005811115612e4257612e426148ea565b145b612e5057610190612e5b565b610194612e5b565b60c85b919550935061ffff169150509193909250565b6040805160a08101825260008082526020820181905291810182905260608082019290925260808101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f61921b2612b2384613141565b6060816001600160401b03811115612eed57612eed614768565b604051908082528060200260200182016040528015612f4657816020015b612f336040805160808101825260008082526020820181905291810182905290606082015290565b815260200190600190039081612f0b5790505b50905060005b82811015612fa357612f7e848483818110612f6957612f69614eca565b9050602002016020810190610ab491906144be565b828281518110612f9057612f90614eca565b6020908102919091010152600101612f4c565b5092915050565b612fb2613217565b612fbb81613dc6565b6130075760405162461bcd60e51b815260206004820152601d60248201527f5769746e6574507269636546656564733a20696e76616c696420534c410000006044820152606401610408565b8060036130148282615a6b565b9050507f084efe053ac15af09a2db38bb176035f1d94cbc8a775c7761e662f7f11ae6940816040516130469190615abd565b60405180910390a150565b613059613217565b6130ab8585856001600160a01b031663bf7a0bd386866040518363ffffffff1660e01b815260040161308c929190615b49565b6020604051808303816000875af115801561269d573d6000803e3d6000fd5b5050505050565b6040516001628a76f160e01b0319815260009073__$07c3c1ca4cad51ef39b1fa88deb1903e78$__9063ff75890f906130f59088908890889088906004016157dd565b602060405180830381865af4158015613112573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131369190615294565b90505b949350505050565b60008061314d83611a6a565b90506000811180156131f85750600260405163234fe6e360e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063234fe6e390602401602060405180830381865afa1580156131c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e59190615bd9565b60058111156131f6576131f66148ea565b145b156132035792915050565b61320c83610d0b565b600301549392505050565b6000546001600160a01b03163314611b5e5760405163118cdaa760e01b8152336004820152602401610408565b60405163e78d44d960e01b815260009073__$07c3c1ca4cad51ef39b1fa88deb1903e78$__9063e78d44d9906132a2907f00000000000000000000000000000000000000000000000000000000000000009087908790600401615bf4565b602060405180830381865af49250505080156132db575060408051601f3d908101601f191682019092526132d891810190615c0e565b60015b613323576132e7615c2b565b806308c379a00361331757506132fb615c46565b806133065750613319565b8060405160200161125591906158e6565b505b3d6000803e3d6000fd5b9050610d50565b6001600160e01b0319811660009081527fe36ea87c48340f2c23c9e1c9f72f5c5165184e75683a4d2a19148e5964c1d201602090815260409182902060089081015483518281526101208101909452606093909290919082016101008036833701905050915060005b600881101561340c57818382815181106133af576133af614eca565b60200260200101906001600160e01b03191690816001600160e01b031916815250508281815181106133e3576133e3614eca565b60209081029190910101516001600160e01b0319161561340c57602082901b9150600101613393565b825250919050565b60008061342084610d0b565b600581015490915015613895576134363a6126e6565b9150813410156134965760405162461bcd60e51b815260206004820152602560248201527f5769746e6574507269636546656564733a20696e73756666696369656e742072604482015264195dd85c9960da1b6064820152608401610408565b600481015460006134a682613cfb565b905060018160058111156134bc576134bc6148ea565b0361364f57604051630552089560e11b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630aa4112a90602401600060405180830381865afa158015613529573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613551919081019061571c565b9050600085826040015160080b6135689190615ccf565b90506000811315613643578095507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ec5946db87866040518363ffffffff1660e01b81526004016135c591815260200190565b6000604051808303818588803b1580156135de57600080fd5b505af11580156135f2573d6000803e3d6000fd5b505060408051888152602081018b90526001600160e01b03198d1694503293507fc75bbe35e1d3486439c776ccf0fb47aede3d28e1bf548e01357b57132974cd9692500160405180910390a3613648565b600095505b505061388e565b6002816005811115613663576136636148ea565b036137155760038301541561370957600383015460405163045bf42f60e11b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906308b7e85e906024016000604051808303816000875af11580156136df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137079190810190615998565b505b600383018290556137a4565b60405163045bf42f60e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906308b7e85e906024016000604051808303816000875af192505050801561379d57506040513d6000823e601f3d908101601f1916820160405261379a9190810190615998565b60015b156137a457505b6005830154604051631ee15bd160e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633dc2b7a29187916137f7918a90600401615cef565b60206040518083038185885af1158015613815573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061383a9190615871565b600484018190556040519092506001600160e01b031987169032907e9bd781be3a9c4660642983aa92bc7a7484c4b0cb0c2afa0f9174c74061d5039061388590869089908b90615d19565b60405180910390a35b5050613909565b60068101546001600160a01b0316156138c1576138ba6138b48561332a565b84613e1f565b9150613909565b60405162461bcd60e51b815260206004820152601e60248201527f5769746e6574507269636546656564733a20756e6b6e6f776e206665656400006044820152606401610408565b34821015612fa357336108fc61391f8434615669565b6040518115909202916000818181858888f19350505050158015613947573d6000803e3d6000fd5b505092915050565b600180546001600160a01b0319169055612dd181613edc565b6060600061397583613f2c565b6001600160401b0381111561398c5761398c614768565b6040519080825280601f01601f1916602001820160405280156139b6576020820181803683370190505b50905060005b8151811015612fa3578381602081106139d7576139d7614eca565b1a60f81b8282815181106139ed576139ed614eca565b60200101906001600160f81b031916908160001a9053506001016139bc565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040518060a00160405280836000015160ff168152602001603360ff16815260200183602001516001600160401b0316815260200183602001516064613a7d9190615d48565b6001600160401b03168152602001836000015160ff168460200151613aa29190615d6b565b6001600160401b0316905292915050565b60606000613ac083613f65565b6001600160401b03811115613ad757613ad7614768565b6040519080825280601f01601f191660200182016040528015613b01576020820181803683370190505b50905060005b8151811015612fa357838160208110613b2257613b22614eca565b1a60f81b828281518110613b3857613b38614eca565b60200101906001600160f81b031916908160001a905350600101613b07565b3380613b61612cfe565b6001600160a01b031614613bc95760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610408565b612dd18161394f565b600080613bde83610d0b565b6005015414613c2e5781613bf183610d0b565b60050154604080516001600160e01b031990931660208401528201526060015b604051602081830303815290604052805190602001209050919050565b81613c3883610d0b565b60080154604080516001600160e01b03199093166020840152820152606001613c11565b919050565b613c69614406565b6000613c7483613f9e565b9050611a3381613fc3565b6000818060000151613cee5760405162461bcd60e51b815260206004820152603260248201527f5769746e65743a20747269656420746f206465636f64652076616c756520667260448201527137b69032b93937b932b2103932b9bab63a1760711b6064820152608401610408565b611a338360200151613ff7565b60008115613d8c5760405163234fe6e360e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063234fe6e390602401602060405180830381865afa158015613d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d509190615bd9565b506002919050565b613d9c613217565b6001600160a01b038116613bc957604051631e4fbdf760e01b815260006004820152602401610408565b600080613dd96040840160208501615d91565b6001600160401b0316118015613dfe57506000613df96020840184615dae565b60ff16115b8015610d505750607f613e146020840184615dae565b60ff16111592915050565b600080835134613e2f91906158d2565b905060005b845181101561394757306001600160a01b031663abc86c6e83878481518110613e5f57613e5f614eca565b6020026020010151876040518463ffffffff1660e01b8152600401613e85929190615dcb565b60206040518083038185885af1158015613ea3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613ec89190615871565b613ed29084615039565b9250600101613e34565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b6020811015613c5c57818160208110613f4a57613f4a614eca565b1a60f81b6001600160f81b03191615613c5c57600101613f2f565b60005b6020811015613c5c57818160208110613f8357613f83614eca565b1a60f81b6001600160f81b03191615613c5c57600101613f68565b613fa661441e565b6040805180820190915282815260006020820152611a338161405a565b613fcb614406565b5060a0810151604080518082019091526001600160401b03909116602714158152602081019190915290565b60008160008060ff16826040015160ff161461403757604080830151905161800560e51b815260ff91821660048201529082166024820152604401610408565b6140498460000151856060015161417a565b6001600160401b0316949350505050565b61406261441e565b8151518290600003614087576040516309036d4760e21b815260040160405180910390fd5b600060ff816001600160401b038160015b801561410a576140a78961423b565b9550816140b381615dff565b6007600589901c169650601f8816955092505060051985016141025760208901516140de8a8661417a565b9350808a602001516140f09190615669565b6140fa9084615039565b925050614098565b506000614098565b600760ff861611156141345760405163bd2ac87960e01b815260ff86166004820152602401610408565b506040805160c08101825298895260ff95861660208a015293851693880193909352921660608601526001600160401b0390811660808601521660a08401525090919050565b600060188260ff161015614192575060ff8116610d50565b8160ff166018036141b0576141a68361423b565b60ff169050610d50565b8160ff166019036141cf576141c48361429d565b61ffff169050610d50565b8160ff16601a036141f0576141e383614309565b63ffffffff169050610d50565b8160ff16601b036142045761332383614368565b8160ff16601f0361421d57506001600160401b03610d50565b604051636d785b1360e01b815260ff83166004820152602401610408565b6000816020015182600001515180821115614273576040516363a056dd60e01b81526004810183905260248101829052604401610408565b835160208501805180830160010151955090819061429082615dff565b8152505050505050919050565b6000816020015160026142b09190615039565b825151808211156142de576040516363a056dd60e01b81526004810183905260248101829052604401610408565b83516020850180516002818401810151965090916142fc8284615039565b9052509395945050505050565b60008160200151600461431c9190615039565b8251518082111561434a576040516363a056dd60e01b81526004810183905260248101829052604401610408565b83516020850180516004818401810151965090916142fc8284615039565b60008160200151600861437b9190615039565b825151808211156143a9576040516363a056dd60e01b81526004810183905260248101829052604401610408565b83516020850180516008818401810151965090916142fc8284615039565b5080546143d390614ee0565b6000825580601f106143e3575050565b601f016020900490600052602060002090810190612dd19190614465565b905290565b60405180604001604052806000151581526020016144015b604080516101008101909152606060c08201908152600060e08301528190815260006020820181905260408201819052606082018190526080820181905260a09091015290565b5b808211156124a55760008155600101614466565b6001600160c01b031981358181169160088510156139475760089490940360031b84901b1690921692915050565b6001600160e01b031981168114612dd157600080fd5b6000602082840312156144d057600080fd5b8135611a33816144a8565b60005b838110156144f65781810151838201526020016144de565b50506000910152565b600081518084526145178160208601602086016144db565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b8481101561457857601f198684030189526145668383516144ff565b9884019892509083019060010161454a565b5090979650505050505050565b606080825284519082018190526000906020906080840190828801845b828110156145c85781516001600160e01b031916845292840192908401906001016145a2565b505050838103828501526145dc818761452b565b8481036040860152855180825283870192509083019060005b81811015614611578351835292840192918401916001016145f5565b509098975050505050505050565b60008083601f84011261463157600080fd5b5081356001600160401b0381111561464857600080fd5b60208301915083602082850101111561466057600080fd5b9250929050565b6001600160a01b0381168114612dd157600080fd5b60008083601f84011261468e57600080fd5b5081356001600160401b038111156146a557600080fd5b6020830191508360208260051b850101111561466057600080fd5b6000806000806000606086880312156146d857600080fd5b85356001600160401b03808211156146ef57600080fd5b6146fb89838a0161461f565b90975095506020880135915061471082614667565b9093506040870135908082111561472657600080fd5b506147338882890161467c565b969995985093965092949392505050565b6001600160a01b03831681526040602082018190526000906131399083018461452b565b634e487b7160e01b600052604160045260246000fd5b604081018181106001600160401b038211171561479d5761479d614768565b60405250565b60c081018181106001600160401b038211171561479d5761479d614768565b60a081018181106001600160401b038211171561479d5761479d614768565b601f8201601f191681016001600160401b038111828210171561480657614806614768565b6040525050565b60405160e081016001600160401b038111828210171561482f5761482f614768565b60405290565b60006001600160401b0382111561484e5761484e614768565b50601f01601f191660200190565b600061486783614835565b60405161487482826147e1565b80925084815285858501111561488957600080fd5b8484602083013760006020868301015250509392505050565b6000602082840312156148b457600080fd5b81356001600160401b038111156148ca57600080fd5b8201601f810184136148db57600080fd5b6131398482356020840161485c565b634e487b7160e01b600052602160045260246000fd5b602081526000825160ff8110614918576149186148ea565b80602084015250602083015160408084015261313960608401826144ff565b602081526000611a3360208301846144ff565b6014811061495a5761495a6148ea565b9052565b60208101610d50828461494a565b60006020828403121561497e57600080fd5b8135611a3381614667565b6005811061495a5761495a6148ea565b600082825180855260208086019550808260051b8401018186016000805b85811015614a1157868403601f19018a5282518460408101845b60028110156149fc5787820383526149ea8285516144ff565b938901939289019291506001016149d1565b509b87019b95505050918401916001016149b7565b509198975050505050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561461157603f19898403018552815160e060ff825116855288820151614a748a870182614989565b5087820151614a858987018261494a565b506060808301518282880152614a9d838801826144ff565b9250505060808083015186830382880152614ab883826144ff565b9250505060a08083015186830382880152614ad38382614999565b9250505060c08083015192508582038187015250614af181836144ff565b968901969450505090860190600101614a48565b600080600060408486031215614b1a57600080fd5b83356001600160401b03811115614b3057600080fd5b614b3c8682870161461f565b909790965060209590950135949350505050565b60008060208385031215614b6357600080fd5b82356001600160401b03811115614b7957600080fd5b614b858582860161461f565b90969095509350505050565b6020815260018060a01b03825116602082015262ffffff602083015116604082015268ffffffffffffffffff60408301511660608201526000606083015160e06080840152614be46101008401826144ff565b9050608084015160a084015260a0840151614c1860c0850182805160ff1682526020908101516001600160401b0316910152565b509392505050565b6001600160e01b031991909116815260200190565b60008060008060408587031215614c4b57600080fd5b84356001600160401b0380821115614c6257600080fd5b614c6e8883890161461f565b90965094506020870135915080821115614c8757600080fd5b50614c948782880161461f565b95989497509550505050565b6000604082840312156129b657600080fd5b60008060608385031215614cc557600080fd5b8235614cd0816144a8565b9150614cdf8460208501614ca0565b90509250929050565b600080600060408486031215614cfd57600080fd5b83356001600160401b03811115614d1357600080fd5b614d1f8682870161461f565b9094509250506020840135614d3381614667565b809150509250925092565b600060208284031215614d5057600080fd5b813561ffff81168114611a3357600080fd5b600060208284031215614d7457600080fd5b5035919050565b6006811061495a5761495a6148ea565b80518252602081015160208301526040810151604083015260608101516126c16060840182614d7b565b60808101610d508284614d8b565b6020815260018060a01b0382511660208201526001600160401b03602083015116604082015263ffffffff6040830151166060820152606082015160808201526000608083015160a08084015261313960c08401826144ff565b60208101610d508284614d7b565b60008060208385031215614e3e57600080fd5b82356001600160401b03811115614e5457600080fd5b614b858582860161467c565b6020808252825182820181905260009190848201906040850190845b81811015614ea257614e8f838551614d8b565b9284019260809290920191600101614e7c565b50909695505050505050565b600060408284031215614ec057600080fd5b611a338383614ca0565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680614ef457607f821691505b6020821081036129b657634e487b7160e01b600052602260045260246000fd5b601f8211156126c1576000816000526020600020601f850160051c81016020861015614f3d5750805b601f850160051c820191505b81811015614f5c57828155600101614f49565b505050505050565b6001600160401b03831115614f7b57614f7b614768565b614f8f83614f898354614ee0565b83614f14565b6000601f841160018114614fc35760008515614fab5750838201355b600019600387901b1c1916600186901b1783556130ab565b600083815260209020601f19861690835b82811015614ff45786850135825560209485019460019092019101614fd4565b50868210156150115760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d5057610d50615023565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e1984360301811261508c57600080fd5b83016020810192503590506001600160401b038111156150ab57600080fd5b80360382131561466057600080fd5b60006040820163ffffffff60e01b861683526020604060208501528185835260608501905060608660051b86010192508660005b8781101561512857868503605f19018352615109828a615075565b61511487828461504c565b9650505091830191908301906001016150ee565b509298975050505050505050565b600082516151488184602087016144db565b9190910192915050565b600082601f83011261516357600080fd5b815161516e81614835565b60405161517b82826147e1565b82815285602084870101111561519057600080fd5b6151a18360208301602088016144db565b95945050505050565b6000602082840312156151bc57600080fd5b81516001600160401b038111156151d257600080fd5b61313984828501615152565b7f5769746e657450726963654665656455706772616461626c653a20736f6c7665815274039103b30b634b230ba34b7b7103330b4b632b21d1605d1b6020820152600082516152348160358501602087016144db565b9190910160350192915050565b7f5769746e6574507269636546656564733a20736d6f6b652d746573742066616981526403632b21d160dd1b6020820152600082516152878160258501602087016144db565b9190910160250192915050565b6000602082840312156152a657600080fd5b8151611a3381614667565b6000602082840312156152c357600080fd5b8151611a33816144a8565b6000602082840312156152e057600080fd5b81516001600160401b03808211156152f757600080fd5b908301906040828603121561530b57600080fd5b6040516153178161477e565b825160ff811061532657600080fd5b815260208301518281111561533a57600080fd5b61534687828601615152565b60208301525095945050505050565b60006001600160401b0382111561536e5761536e614768565b5060051b60200190565b6000602080838503121561538b57600080fd5b82516001600160401b038111156153a157600080fd5b8301601f810185136153b257600080fd5b80516153bd81615355565b6040516153ca82826147e1565b82815260059290921b83018401918481019150878311156153ea57600080fd5b928401925b82841015615408578351825292840192908401906153ef565b979650505050505050565b60ff81168114612dd157600080fd5b8051613c5c81615413565b805160058110613c5c57600080fd5b805160148110613c5c57600080fd5b600082601f83011261545c57600080fd5b8151602061546982615355565b60405161547682826147e1565b83815260059390931b850182019282810191508684111561549657600080fd5b8286015b848110156155385780516001600160401b03808211156154ba5760008081fd5b818901915089603f8301126154cf5760008081fd5b6040516154db8161477e565b80606084018c8111156154ee5760008081fd5b8885015b818110156155265780518581111561550a5760008081fd5b6155188f8c838a0101615152565b8452509189019189016154f2565b5050508552505091830191830161549a565b509695505050505050565b60006020828403121561555557600080fd5b81516001600160401b038082111561556c57600080fd5b9083019060e0828603121561558057600080fd5b61558861480d565b61559183615422565b815261559f6020840161542d565b60208201526155b06040840161543c565b60408201526060830151828111156155c757600080fd5b6155d387828601615152565b6060830152506080830151828111156155eb57600080fd5b6155f787828601615152565b60808301525060a08301518281111561560f57600080fd5b61561b8782860161544b565b60a08301525060c08301518281111561563357600080fd5b61563f87828601615152565b60c08301525095945050505050565b60006020828403121561566057600080fd5b611a338261543c565b81810381811115610d5057610d50615023565b634e487b7160e01b600052603160045260246000fd5b805162ffffff81168114613c5c57600080fd5b805168ffffffffffffffffff81168114613c5c57600080fd5b6001600160401b0381168114612dd157600080fd5b6000604082840312156156e557600080fd5b6040516156f18161477e565b80915082516156ff81615413565b8152602083015161570f816156be565b6020919091015292915050565b60006020828403121561572e57600080fd5b81516001600160401b038082111561574557600080fd5b9083019060e0828603121561575957600080fd5b604051615765816147a3565b825161577081614667565b815261577e60208401615692565b602082015261578f604084016156a5565b60408201526060830151828111156157a657600080fd5b6157b287828601615152565b606083015250608083015160808201526157cf8660a085016156d3565b60a082015295945050505050565b6040815260006157f160408301868861504c565b828103602084015261540881858761504c565b60018060a01b038516815283602082015260606040820152600061296660608301848661504c565b60006040828403121561583e57600080fd5b60405161584a8161477e565b823561585581615413565b81526020830135615865816156be565b60208201529392505050565b60006020828403121561588357600080fd5b5051919050565b61ffff818116838216019080821115612fa357612fa3615023565b8082028115828204841417610d5057610d50615023565b634e487b7160e01b600052601260045260246000fd5b6000826158e1576158e16158bc565b500490565b7102bb4ba3732ba283934b1b2a332b2b2399d160751b8152600082516159138160128501602087016144db565b9190910160120192915050565b805160068110613c5c57600080fd5b60006080828403121561594157600080fd5b604051608081018181106001600160401b038211171561596357615963614768565b806040525082518152602083015160208201526040830151604082015261598c60608401615920565b60608201529392505050565b6000602082840312156159aa57600080fd5b81516001600160401b03808211156159c157600080fd5b9083019060a082860312156159d557600080fd5b6040516159e1816147c2565b82516159ec81614667565b815260208301516159fc816156be565b6020820152604083015163ffffffff81168114615a1857600080fd5b604082015260608381015190820152608083015182811115615a3957600080fd5b615a4587828601615152565b60808301525095945050505050565b600081615a6357615a63615023565b506000190190565b8135615a7681615413565b60ff8116905081548160ff1982161783556020840135615a95816156be565b68ffffffffffffffff008160081b168368ffffffffffffffffff198416171784555050505050565b604081018235615acc81615413565b60ff1682526020830135615adf816156be565b6001600160401b03811660208401525092915050565b6000838385526020808601955060208560051b8301018460005b8781101561457857848303601f19018952615b2a8288615075565b615b3585828461504c565b9a86019a9450505090830190600101615b0f565b6020808252818101839052600090600560408085019086831b86010187855b8881101561461157878303603f190184528135368b9003601e19018112615b8e57600080fd5b8a0186810190356001600160401b03811115615ba957600080fd5b80871b3603821315615bba57600080fd5b615bc5858284615af5565b958801959450505090850190600101615b68565b600060208284031215615beb57600080fd5b611a3382615920565b83815260406020820152600061313660408301848661504c565b600060208284031215615c2057600080fd5b8151611a3381615413565b600060033d11156124a75760046000803e5060005160e01c90565b600060443d1015615c545790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715615c8357505050505090565b8285019150815181811115615c9b5750505050505090565b843d8701016020828501011115615cb55750505050505090565b615cc4602082860101876147e1565b509095945050505050565b8181036000831280158383131683831282161715612fa357612fa3615023565b82815260608101611a336020830184805160ff1682526020908101516001600160401b0316910152565b8381526020808201849052825160ff1660408301528201516001600160401b0316606082015260808101613139565b6001600160401b0381811683821602808216919082811461394757613947615023565b60006001600160401b0380841680615d8557615d856158bc565b92169190910492915050565b600060208284031215615da357600080fd5b8135611a33816156be565b600060208284031215615dc057600080fd5b8135611a3381615413565b6001600160e01b03198316815260608101611a336020830184805160ff1682526020908101516001600160401b0316910152565b600060018201615e1157615e11615023565b506001019056fee36ea87c48340f2c23c9e1c9f72f5c5165184e75683a4d2a19148e5964c1d1ffe36ea87c48340f2c23c9e1c9f72f5c5165184e75683a4d2a19148e5964c1d200a2646970667358221220e70eabe6283fcdb94f584299bf6378a1eaa8d31a886a6439b40c4b7431a0a73364736f6c63430008190033",
  "deployedBytecode": "0x6080604052600436106103505760003560e01c80638da5cb5b116101c6578063d5f39488116100f7578063f2fde38b11610095578063f9f34bb61161006f578063f9f34bb614610c7e578063fae91a5114610cab578063ff24fb4f14610ccb578063ff75890f14610ceb57610350565b8063f2fde38b14610c03578063f78eea8314610c23578063f9b4a27f14610c5e57610350565b8063e30c3978116100d1578063e30c397814610b7e578063eb92b29b14610b93578063ef1dff2b14610bb6578063f14cb81214610bd657610350565b8063d5f3948814610b13578063d6a3614f14610b47578063e1c9e3c014610b6957610350565b8063b411ee9411610164578063c064d3721161013e578063c064d37214610a79578063c3d98ea814610a99578063c5010d1714610ac6578063d3471e3414610ae657610350565b8063b411ee94146109ed578063b8d38c9614610a13578063bff852fa14610a3357610350565b8063a9e954b9116101a0578063a9e954b914610952578063abc86c6e14610986578063ac82c60814610999578063adb7c3f7146109b957610350565b80638da5cb5b146108f45780638df3fdfd14610912578063a55b471c1461093257610350565b80635be93984116102a057806379ba50971161023e57806384292f071161021857806384292f071461086557806386ac03e01461088557806389a87b16146108a55780638a416ea9146108d257610350565b806379ba50971461080e5780637b10399914610823578063806d7e8f1461083857610350565b80636b58960a1161027a5780636b58960a146107565780636d1178e514610776578063715018a6146107e457806375dadb32146107f957610350565b80635be93984146106c35780636175ff00146106e35780636ab221f81461072457610350565b806346d1d21a1161030d5780635001f3b5116102e75780635001f3b51461060857806352d1902d1461063b5780635479d9401461066f57806354fd4d50146106ae57610350565b806346d1d21a1461056257806349492ef1146105ae5780634efef9c0146105db57610350565b8063029db9581461048a5780630306732e146104bd57806303f3813d146104e1578063384ac938146105015780633e088e121461052f578063439fab9114610542575b34801561035c57600080fd5b506000356001600160e01b03191663e0d20f7360e01b14801561037e57503330145b156104365760006103a56020610394368461447a565b6001600160c01b031916901b610d0b565b600601546001600160a01b03169050806104115760405162461bcd60e51b815260206004820152602260248201527f5769746e6574507269636546656564733a20756e736574746c656420736f6c7660448201526132b960f11b60648201526084015b60405180910390fd5b60405136600082376000803683855af43d806000843e818015610432578184f35b8184fd5b60405162461bcd60e51b815260206004820152602160248201527f5769746e6574507269636546656564733a206e6f7420696d706c656d656e74656044820152601960fa1b6064820152608401610408565b005b34801561049657600080fd5b506104aa6104a53660046144be565b610d45565b6040519081526020015b60405180910390f35b3480156104c957600080fd5b506104d2610d56565b6040516104b493929190614585565b3480156104ed57600080fd5b506104886104fc3660046146c0565b610fb5565b34801561050d57600080fd5b5061052161051c3660046144be565b6113ab565b6040516104b4929190614744565b6104aa61053d3660046144be565b61147d565b34801561054e57600080fd5b5061048861055d3660046148a2565b6114b1565b34801561056e57600080fd5b506105967f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016104b4565b3480156105ba57600080fd5b506105ce6105c93660046144be565b6118a1565b6040516104b49190614900565b3480156105e757600080fd5b506105fb6105f63660046144be565b611951565b6040516104b49190614937565b34801561061457600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610596565b34801561064757600080fd5b506104aa7f000000000000000000000000000000000000000000000000000000000000000081565b34801561067b57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405190151581526020016104b4565b3480156106ba57600080fd5b506105fb611a3a565b3480156106cf57600080fd5b506104aa6106de3660046144be565b611a6a565b3480156106ef57600080fd5b506107177f000000000000000000000000000000000000000000000000000000000000000081565b6040516104b4919061495e565b34801561073057600080fd5b5061074461073f3660046144be565b611a7f565b60405160ff90911681526020016104b4565b34801561076257600080fd5b5061069e61077136600461496c565b611a97565b34801561078257600080fd5b5061078b611af2565b6040516104b49190600060a08201905060ff835116825260ff602084015116602083015260408301516001600160401b038082166040850152806060860151166060850152806080860151166080850152505092915050565b3480156107f057600080fd5b50610488611b4c565b34801561080557600080fd5b506105fb611b60565b34801561081a57600080fd5b50610488611b8b565b34801561082f57600080fd5b50610596611b93565b34801561084457600080fd5b506108586108533660046144be565b611c17565b6040516104b49190614a1f565b34801561087157600080fd5b50610488610880366004614b05565b611df8565b34801561089157600080fd5b506104886108a0366004614b50565b6120a6565b3480156108b157600080fd5b506108c56108c03660046144be565b612311565b6040516104b49190614b91565b3480156108de57600080fd5b506108e76123f0565b6040516104b49190614c20565b34801561090057600080fd5b506000546001600160a01b0316610596565b34801561091e57600080fd5b506104aa61092d3660046144be565b6124aa565b34801561093e57600080fd5b5061059661094d366004614c35565b6124bf565b34801561095e57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000003f6104aa565b6104aa610994366004614cb2565b612598565b3480156109a557600080fd5b506104886109b4366004614ce8565b612652565b3480156109c557600080fd5b506108e77f000000000000000000000000000000000000000000000000000000000000000081565b3480156109f957600080fd5b506108e7610a083660046148a2565b805160209091012090565b348015610a1f57600080fd5b50610488610a2e366004614d3e565b6126c6565b348015610a3f57600080fd5b5060408051808201909152601781527f5769746e65745072696365466565647344656661756c7400000000000000000060208201526105fb565b348015610a8557600080fd5b506104aa610a94366004614d62565b6126e6565b348015610aa557600080fd5b50610ab9610ab43660046144be565b6127a9565b6040516104b49190614db5565b348015610ad257600080fd5b5061069e610ae1366004614b50565b6129bc565b348015610af257600080fd5b50610b06610b013660046144be565b612abe565b6040516104b49190614dc3565b348015610b1f57600080fd5b506105967f000000000000000000000000000000000000000000000000000000000000000081565b348015610b5357600080fd5b50600080516020615e39833981519152546104aa565b348015610b7557600080fd5b50610488612b86565b348015610b8a57600080fd5b50610596612cfe565b348015610b9f57600080fd5b5060045460405161ffff90911681526020016104b4565b348015610bc257600080fd5b506105fb610bd13660046144be565b612d12565b348015610be257600080fd5b50610bf6610bf13660046144be565b612dad565b6040516104b49190614e1d565b348015610c0f57600080fd5b50610488610c1e36600461496c565b612dc0565b348015610c2f57600080fd5b50610c43610c3e366004614d62565b612dd4565b604080519384526020840192909252908201526060016104b4565b348015610c6a57600080fd5b50610b06610c793660046144be565b612e6e565b348015610c8a57600080fd5b50610c9e610c99366004614e2b565b612ed3565b6040516104b49190614e60565b348015610cb757600080fd5b50610488610cc6366004614eae565b612faa565b348015610cd757600080fd5b50610488610ce63660046146c0565b613051565b348015610cf757600080fd5b50610596610d06366004614c35565b6130b2565b6001600160e01b03191660009081527fe36ea87c48340f2c23c9e1c9f72f5c5165184e75683a4d2a19148e5964c1d2016020526040902090565b6000610d5082613141565b92915050565b600080516020615e3983398151915280546040805160208084028201810190925282815260609384938493830182828015610ddd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610d9f5790505b5050505050925082516001600160401b03811115610dfd57610dfd614768565b604051908082528060200260200182016040528015610e3057816020015b6060815260200190600190039081610e1b5790505b50915082516001600160401b03811115610e4c57610e4c614768565b604051908082528060200260200182016040528015610e75578160200160208202803683370190505b50905060005b8351811015610faf576000610ea8858381518110610e9b57610e9b614eca565b6020026020010151610d0b565b9050806000018054610eb990614ee0565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee590614ee0565b8015610f325780601f10610f0757610100808354040283529160200191610f32565b820191906000526020600020905b815481529060010190602001808311610f1557829003601f168201915b5050505050848381518110610f4957610f49614eca565b602090810291909101015260068101546001600160a01b031615610f8357600681015460601b6bffffffffffffffffffffffff1916610f89565b80600501545b838381518110610f9b57610f9b614eca565b602090810291909101015250600101610e7b565b50909192565b610fbd613217565b6001600160a01b03831661101f5760405162461bcd60e51b815260206004820152602360248201527f5769746e6574507269636546656564733a206e6f20736f6c766572206164647260448201526265737360e81b6064820152608401610408565b600061106086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a0892505050565b9050600061106d82610d0b565b9050806002015460000361113d5780611087878983614f64565b506110928787613244565b60018201805460ff191660ff92909216919091179055600080516020615e198339815191526001908101546110c691615039565b60028201556006810180546001600160a01b0319166001600160a01b038716179055600080516020615e198339815191526001908101805491820181556000908152602090206008820401805463ffffffff60079093166004026101000a928302191660e085901c92909202919091179055611179565b60068101546001600160a01b0386811691161461117957600060058201556006810180546001600160a01b0319166001600160a01b0387161790555b600080866001600160a01b031663e6f8715860e01b8588886040516024016111a3939291906150ba565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516111e19190615136565b600060405180830381855af49150503d806000811461121c576040519150601f19603f3d011682016040523d82523d6000602084013e611221565b606091505b50915091508161127b576004810190508080602001905181019061124591906151aa565b60405160200161125591906151de565b60408051601f198184030181529082905262461bcd60e51b825261040891600401614937565b5050600080306001600160a01b031663e0d20f7360e01b856040516024016112a39190614c20565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516112e19190615136565b600060405180830381855afa9150503d806000811461131c576040519150601f19603f3d011682016040523d82523d6000602084013e611321565b606091505b509150915081611355576004810190508080602001905181019061134591906151aa565b6040516020016112559190615241565b5050604080516001600160e01b0319841681526001600160a01b03871660208201527f850802cc670161a9f185e45414c2fe7efb5e71b23a8e32a53caffb7dd000aca3910160405180910390a150505050505050565b600060606113b883610d0b565b600601546001600160a01b0316915060006113d28461332a565b905080516001600160401b038111156113ed576113ed614768565b60405190808252806020026020018201604052801561142057816020015b606081526020019060019003908161140b5790505b50915060005b81518110156114765761145182828151811061144457611444614eca565b6020026020010151612d12565b83828151811061146357611463614eca565b6020908102919091010152600101611426565b5050915091565b6040805180820190915260035460ff8116825261010090046001600160401b03166020820152600090610d50908390613414565b6000546001600160a01b03168061152a57818060200190518101906114d69190615294565b90506114e18161394f565b60408051808201909152600a808252630bebc2006020909201919091526003805468ffffffffffffffffff1916640bebc2000a1790556004805461ffff19169091179055611582565b336001600160a01b038216146115825760405162461bcd60e51b815260206004820152601f60248201527f5769746e6574507269636546656564733a206e6f7420746865206f776e6572006044820152606401610408565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe54158015906115f357507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe547f00000000000000000000000000000000000000000000000000000000000000003f145b1561164b5760405162461bcd60e51b815260206004820152602260248201527f5769746e6574507269636546656564733a20616c726561647920757067726164604482015261195960f21b6064820152608401610408565b7f00000000000000000000000000000000000000000000000000000000000000003f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe557f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b6117125760405162461bcd60e51b815260206004820152602360248201527f5769746e6574507269636546656564733a20696e6578697374656e74206f7261604482015262636c6560e81b6064820152608401610408565b63baeca88b60e01b6001600160e01b0319167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663adb7c3f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a691906152b1565b6001600160e01b031916146118095760405162461bcd60e51b8152602060048201526024808201527f5769746e6574507269636546656564733a20756e636f6d706c69616e74206f7260448201526361636c6560e01b6064820152608401610408565b7f00000000000000000000000000000000000000000000000000000000000000003f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03167fe73e754121f0bad1327816970101955bfffdf53d270ac509d777c25be070d7f6611888611a3a565b6040516118959190614937565b60405180910390a45050565b6040805180820190915260008152606060208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a77fc1a46118ee84611a6a565b6040518263ffffffff1660e01b815260040161190c91815260200190565b600060405180830381865afa158015611929573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d5091908101906152ce565b6060600061195e83610d0b565b60058101549091506000036119b55760405162461bcd60e51b815260206004820152601d60248201527f5769746e6574507269636546656564733a206e6f2052414420686173680000006044820152606401610408565b6119bd611b93565b6001600160a01b0316632ebf5d5c82600501546040518263ffffffff1660e01b81526004016119ee91815260200190565b600060405180830381865afa158015611a0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a3391908101906151aa565b9392505050565b6060611a657f0000000000000000000000000000000000000000000000000000000000000000613968565b905090565b6000611a7582610d0b565b6004015492915050565b6000611a8a82610d0b565b6001015460ff1692915050565b600080611aac6000546001600160a01b031690565b90507f00000000000000000000000000000000000000000000000000000000000000008015611a335750826001600160a01b0316816001600160a01b0316149392505050565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040805180820190915260035460ff8116825261010090046001600160401b03166020820152611a6590613a0c565b611b54613217565b611b5e600061394f565b565b6060611a657f0000000000000000000000000000000000000000000000000000000000000000613ab3565b611b5e613b57565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a659190615294565b60606000611c23611b93565b6001600160a01b031663a83e942c611c3a856124aa565b6040518263ffffffff1660e01b8152600401611c5891815260200190565b600060405180830381865afa158015611c75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c9d9190810190615378565b905080516001600160401b03811115611cb857611cb8614768565b604051908082528060200260200182016040528015611d2a57816020015b611d176040805160e0810190915260008082526020820190815260200160008152602001606081526020016060815260200160608152602001606081525090565b815260200190600190039081611cd65790505b50915060005b8251811015611df157611d41611b93565b6001600160a01b0316639dd48757838381518110611d6157611d61614eca565b60200260200101516040518263ffffffff1660e01b8152600401611d8791815260200190565b600060405180830381865afa158015611da4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611dcc9190810190615543565b838281518110611dde57611dde614eca565b6020908102919091010152600101611d30565b5050919050565b611e00613217565b7f00000000000000000000000000000000000000000000000000000000000000006013811115611e3257611e326148ea565b611e3a611b93565b6001600160a01b0316634c729104836040518263ffffffff1660e01b8152600401611e6791815260200190565b602060405180830381865afa158015611e84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea8919061564e565b6013811115611eb957611eb96148ea565b14611f155760405162461bcd60e51b815260206004820152602660248201527f5769746e6574507269636546656564733a2062616420726573756c742064617460448201526561207479706560d01b6064820152608401610408565b6000611f5684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a0892505050565b90506000611f6382610d0b565b905080600201546000036120375780611f7d858783614f64565b50611f888585613244565b60018201805460ff191660ff92909216919091179055600080516020615e19833981519152600190810154611fbc91615039565b600282015560058101839055600080516020615e3983398151915280546001810182556000919091527fb7ef506da7909f25321b247725840c95fced7275a59588a4236c0671ab1d82216008820401805463ffffffff60079093166004026101000a928302191660e085901c9290920291909117905561205c565b8281600501541461205c57600581018390556006810180546001600160a01b03191690555b604080516001600160e01b031984168152602081018590527f37206f9df7db3fe5c4edfea9c5ce9ea406912fc4133f5c67200273da0c09e7b1910160405180910390a15050505050565b6120ae613217565b60006120ef83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a0892505050565b9050600080516020615e39833981519152600061210b83610d0b565b600281015490915060008190036121645760405162461bcd60e51b815260206004820152601e60248201527f5769746e6574507269636546656564733a20756e6b6e6f776e206665656400006044820152606401610408565b8254600090849061217790600190615669565b8154811061218757612187614eca565b6000918252602090912060088204015460079091166004026101000a900460e01b905080846121b7600185615669565b815481106121c7576121c7614eca565b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c0217905550838054806122075761220761567c565b600082815260209020600860001990920191820401805463ffffffff600460078516026101000a021916905590558161223f82610d0b565b600201556001600160e01b0319851660009081527fe36ea87c48340f2c23c9e1c9f72f5c5165184e75683a4d2a19148e5964c1d201602052604081209061228682826143c7565b5060018101805460ff191690556000600282018190556003820181905560048201819055600582018190556006820180546001600160a01b031916905560078201819055600890910155506040517f5296cc0e8dad8eeece6ce7d0928746294283b850d6261e03e7028a84de61f0b690612301908690614c20565b60405180910390a1505050505050565b6123556040805160c081018252600080825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630aa4112a61238d84611a6a565b6040518263ffffffff1660e01b81526004016123ab91815260200190565b600060405180830381865afa1580156123c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d50919081019061571c565b600080516020615e3983398151915254600090156124a757612457600080516020615e1983398151915260010160008154811061242f5761242f614eca565b90600052602060002090600891828204019190066004029054906101000a900460e01b613bd2565b905060015b600080516020615e39833981519152548110156124a557612499600080516020615e19833981519152600101828154811061242f5761242f614eca565b9091189060010161245c565b505b90565b60006124b582610d0b565b6005015492915050565b60006124c9613217565b604051632956d1c760e21b815273__$07c3c1ca4cad51ef39b1fa88deb1903e78$__9063a55b471c906125069088908890889088906004016157dd565b602060405180830381865af4158015612523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125479190615294565b90507f3c07c0cbdabca8310d65b09f79c58655b46c3035d57c452177e3d49972ff5cec81826001600160a01b03163f85856040516125889493929190615804565b60405180910390a1949350505050565b6040805180820190915260035460ff8116825261010090046001600160401b031660208201526000906125e4906125d43685900385018561582c565b9051905160ff9182169116101590565b61263a5760405162461bcd60e51b815260206004820152602160248201527f5769746e6574507269636546656564733a20756e7365637572652075706461746044820152606560f81b6064820152608401610408565b611a338361264d3685900385018561582c565b613414565b61265a613217565b6126c18383836001600160a01b0316631eef90526040518163ffffffff1660e01b8152600401602060405180830381865afa15801561269d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108809190615871565b505050565b6126ce613217565b6004805461ffff191661ffff92909216919091179055565b6004546000906064906126fd9061ffff168261588a565b604051630f7b104360e31b8152600481018590526020602482015261ffff91909116906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637bd8821890604401602060405180830381865afa158015612771573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127959190615871565b61279f91906158a5565b610d5091906158d2565b6127d16040805160808101825260008082526020820181905291810182905290606082015290565b60006127dc83613141565b9050801561285a5760006127ef84612e6e565b905060006128008260800151613c61565b9050604051806080016040528061281683613c7f565b8152602001836040015163ffffffff1681526020018360600151815260200161283e87612dad565b600581111561284f5761284f6148ea565b905295945050505050565b600061286584610d0b565b600601546001600160a01b03169050801561297057600080306001600160a01b031663e0d20f7360e01b876040516024016128a09190614c20565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516128de9190615136565b600060405180830381855afa9150503d8060008114612919576040519150601f19603f3d011682016040523d82523d6000602084013e61291e565b606091505b509150915081612952576004810190508080602001905181019061294291906151aa565b60405160200161125591906158e6565b80806020019051810190612966919061592f565b9695505050505050565b604051806080016040528060008152602001600081526020016000801b815260200161299b86612dad565b60058111156129ac576129ac6148ea565b9052949350505050565b50919050565b6000806129fe84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a0892505050565b90506001600160e01b03198116612aab612a1783610d0b565b8054612a2290614ee0565b80601f0160208091040260200160405190810160405280929190818152602001828054612a4e90614ee0565b8015612a9b5780601f10612a7057610100808354040283529160200191612a9b565b820191906000526020600020905b815481529060010190602001808311612a7e57829003601f168201915b5050505050805160209091012090565b6001600160e01b03191614949350505050565b6040805160a08101825260008082526020820181905291810182905260608082019290925260808101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f61921b2612b2384611a6a565b6040518263ffffffff1660e01b8152600401612b4191815260200190565b600060405180830381865afa158015612b5e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d509190810190615998565b612b8e613217565b600080516020615e3983398151915280545b8015612cfa57600082612bb4600184615669565b81548110612bc457612bc4614eca565b90600052602060002090600891828204019190066004029054906101000a900460e01b9050612bfe600080516020615e1983398151915290565b6001600160e01b0319821660009081526002919091016020526040812090612c2682826143c7565b5060018101805460ff191690556000600282018190556003820181905560048201819055600582018190556006820180546001600160a01b0319169055600782018190556008909101558254839080612c8157612c8161567c565b600082815260209020600860001990920191820401805463ffffffff600460078516026101000a021916905590556040517f5296cc0e8dad8eeece6ce7d0928746294283b850d6261e03e7028a84de61f0b690612cdf908390614c20565b60405180910390a15080612cf281615a54565b915050612ba0565b5050565b6000611a656001546001600160a01b031690565b6060612d1d82610d0b565b8054612d2890614ee0565b80601f0160208091040260200160405190810160405280929190818152602001828054612d5490614ee0565b8015612da15780601f10612d7657610100808354040283529160200191612da1565b820191906000526020600020905b815481529060010190602001808311612d8457829003601f168201915b50505050509050919050565b6000610d50612dbb83611a6a565b613cfb565b612dc8613217565b612dd181613d94565b50565b600080600080612de3856127a9565b8051602082015191925090600283606001516005811115612e0657612e066148ea565b14612e5857600183606001516005811115612e2357612e236148ea565b1480612e445750600483606001516005811115612e4257612e426148ea565b145b612e5057610190612e5b565b610194612e5b565b60c85b919550935061ffff169150509193909250565b6040805160a08101825260008082526020820181905291810182905260608082019290925260808101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f61921b2612b2384613141565b6060816001600160401b03811115612eed57612eed614768565b604051908082528060200260200182016040528015612f4657816020015b612f336040805160808101825260008082526020820181905291810182905290606082015290565b815260200190600190039081612f0b5790505b50905060005b82811015612fa357612f7e848483818110612f6957612f69614eca565b9050602002016020810190610ab491906144be565b828281518110612f9057612f90614eca565b6020908102919091010152600101612f4c565b5092915050565b612fb2613217565b612fbb81613dc6565b6130075760405162461bcd60e51b815260206004820152601d60248201527f5769746e6574507269636546656564733a20696e76616c696420534c410000006044820152606401610408565b8060036130148282615a6b565b9050507f084efe053ac15af09a2db38bb176035f1d94cbc8a775c7761e662f7f11ae6940816040516130469190615abd565b60405180910390a150565b613059613217565b6130ab8585856001600160a01b031663bf7a0bd386866040518363ffffffff1660e01b815260040161308c929190615b49565b6020604051808303816000875af115801561269d573d6000803e3d6000fd5b5050505050565b6040516001628a76f160e01b0319815260009073__$07c3c1ca4cad51ef39b1fa88deb1903e78$__9063ff75890f906130f59088908890889088906004016157dd565b602060405180830381865af4158015613112573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131369190615294565b90505b949350505050565b60008061314d83611a6a565b90506000811180156131f85750600260405163234fe6e360e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063234fe6e390602401602060405180830381865afa1580156131c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e59190615bd9565b60058111156131f6576131f66148ea565b145b156132035792915050565b61320c83610d0b565b600301549392505050565b6000546001600160a01b03163314611b5e5760405163118cdaa760e01b8152336004820152602401610408565b60405163e78d44d960e01b815260009073__$07c3c1ca4cad51ef39b1fa88deb1903e78$__9063e78d44d9906132a2907f00000000000000000000000000000000000000000000000000000000000000009087908790600401615bf4565b602060405180830381865af49250505080156132db575060408051601f3d908101601f191682019092526132d891810190615c0e565b60015b613323576132e7615c2b565b806308c379a00361331757506132fb615c46565b806133065750613319565b8060405160200161125591906158e6565b505b3d6000803e3d6000fd5b9050610d50565b6001600160e01b0319811660009081527fe36ea87c48340f2c23c9e1c9f72f5c5165184e75683a4d2a19148e5964c1d201602090815260409182902060089081015483518281526101208101909452606093909290919082016101008036833701905050915060005b600881101561340c57818382815181106133af576133af614eca565b60200260200101906001600160e01b03191690816001600160e01b031916815250508281815181106133e3576133e3614eca565b60209081029190910101516001600160e01b0319161561340c57602082901b9150600101613393565b825250919050565b60008061342084610d0b565b600581015490915015613895576134363a6126e6565b9150813410156134965760405162461bcd60e51b815260206004820152602560248201527f5769746e6574507269636546656564733a20696e73756666696369656e742072604482015264195dd85c9960da1b6064820152608401610408565b600481015460006134a682613cfb565b905060018160058111156134bc576134bc6148ea565b0361364f57604051630552089560e11b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630aa4112a90602401600060405180830381865afa158015613529573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613551919081019061571c565b9050600085826040015160080b6135689190615ccf565b90506000811315613643578095507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ec5946db87866040518363ffffffff1660e01b81526004016135c591815260200190565b6000604051808303818588803b1580156135de57600080fd5b505af11580156135f2573d6000803e3d6000fd5b505060408051888152602081018b90526001600160e01b03198d1694503293507fc75bbe35e1d3486439c776ccf0fb47aede3d28e1bf548e01357b57132974cd9692500160405180910390a3613648565b600095505b505061388e565b6002816005811115613663576136636148ea565b036137155760038301541561370957600383015460405163045bf42f60e11b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906308b7e85e906024016000604051808303816000875af11580156136df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137079190810190615998565b505b600383018290556137a4565b60405163045bf42f60e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906308b7e85e906024016000604051808303816000875af192505050801561379d57506040513d6000823e601f3d908101601f1916820160405261379a9190810190615998565b60015b156137a457505b6005830154604051631ee15bd160e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633dc2b7a29187916137f7918a90600401615cef565b60206040518083038185885af1158015613815573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061383a9190615871565b600484018190556040519092506001600160e01b031987169032907e9bd781be3a9c4660642983aa92bc7a7484c4b0cb0c2afa0f9174c74061d5039061388590869089908b90615d19565b60405180910390a35b5050613909565b60068101546001600160a01b0316156138c1576138ba6138b48561332a565b84613e1f565b9150613909565b60405162461bcd60e51b815260206004820152601e60248201527f5769746e6574507269636546656564733a20756e6b6e6f776e206665656400006044820152606401610408565b34821015612fa357336108fc61391f8434615669565b6040518115909202916000818181858888f19350505050158015613947573d6000803e3d6000fd5b505092915050565b600180546001600160a01b0319169055612dd181613edc565b6060600061397583613f2c565b6001600160401b0381111561398c5761398c614768565b6040519080825280601f01601f1916602001820160405280156139b6576020820181803683370190505b50905060005b8151811015612fa3578381602081106139d7576139d7614eca565b1a60f81b8282815181106139ed576139ed614eca565b60200101906001600160f81b031916908160001a9053506001016139bc565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040518060a00160405280836000015160ff168152602001603360ff16815260200183602001516001600160401b0316815260200183602001516064613a7d9190615d48565b6001600160401b03168152602001836000015160ff168460200151613aa29190615d6b565b6001600160401b0316905292915050565b60606000613ac083613f65565b6001600160401b03811115613ad757613ad7614768565b6040519080825280601f01601f191660200182016040528015613b01576020820181803683370190505b50905060005b8151811015612fa357838160208110613b2257613b22614eca565b1a60f81b828281518110613b3857613b38614eca565b60200101906001600160f81b031916908160001a905350600101613b07565b3380613b61612cfe565b6001600160a01b031614613bc95760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610408565b612dd18161394f565b600080613bde83610d0b565b6005015414613c2e5781613bf183610d0b565b60050154604080516001600160e01b031990931660208401528201526060015b604051602081830303815290604052805190602001209050919050565b81613c3883610d0b565b60080154604080516001600160e01b03199093166020840152820152606001613c11565b919050565b613c69614406565b6000613c7483613f9e565b9050611a3381613fc3565b6000818060000151613cee5760405162461bcd60e51b815260206004820152603260248201527f5769746e65743a20747269656420746f206465636f64652076616c756520667260448201527137b69032b93937b932b2103932b9bab63a1760711b6064820152608401610408565b611a338360200151613ff7565b60008115613d8c5760405163234fe6e360e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063234fe6e390602401602060405180830381865afa158015613d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d509190615bd9565b506002919050565b613d9c613217565b6001600160a01b038116613bc957604051631e4fbdf760e01b815260006004820152602401610408565b600080613dd96040840160208501615d91565b6001600160401b0316118015613dfe57506000613df96020840184615dae565b60ff16115b8015610d505750607f613e146020840184615dae565b60ff16111592915050565b600080835134613e2f91906158d2565b905060005b845181101561394757306001600160a01b031663abc86c6e83878481518110613e5f57613e5f614eca565b6020026020010151876040518463ffffffff1660e01b8152600401613e85929190615dcb565b60206040518083038185885af1158015613ea3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613ec89190615871565b613ed29084615039565b9250600101613e34565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b6020811015613c5c57818160208110613f4a57613f4a614eca565b1a60f81b6001600160f81b03191615613c5c57600101613f2f565b60005b6020811015613c5c57818160208110613f8357613f83614eca565b1a60f81b6001600160f81b03191615613c5c57600101613f68565b613fa661441e565b6040805180820190915282815260006020820152611a338161405a565b613fcb614406565b5060a0810151604080518082019091526001600160401b03909116602714158152602081019190915290565b60008160008060ff16826040015160ff161461403757604080830151905161800560e51b815260ff91821660048201529082166024820152604401610408565b6140498460000151856060015161417a565b6001600160401b0316949350505050565b61406261441e565b8151518290600003614087576040516309036d4760e21b815260040160405180910390fd5b600060ff816001600160401b038160015b801561410a576140a78961423b565b9550816140b381615dff565b6007600589901c169650601f8816955092505060051985016141025760208901516140de8a8661417a565b9350808a602001516140f09190615669565b6140fa9084615039565b925050614098565b506000614098565b600760ff861611156141345760405163bd2ac87960e01b815260ff86166004820152602401610408565b506040805160c08101825298895260ff95861660208a015293851693880193909352921660608601526001600160401b0390811660808601521660a08401525090919050565b600060188260ff161015614192575060ff8116610d50565b8160ff166018036141b0576141a68361423b565b60ff169050610d50565b8160ff166019036141cf576141c48361429d565b61ffff169050610d50565b8160ff16601a036141f0576141e383614309565b63ffffffff169050610d50565b8160ff16601b036142045761332383614368565b8160ff16601f0361421d57506001600160401b03610d50565b604051636d785b1360e01b815260ff83166004820152602401610408565b6000816020015182600001515180821115614273576040516363a056dd60e01b81526004810183905260248101829052604401610408565b835160208501805180830160010151955090819061429082615dff565b8152505050505050919050565b6000816020015160026142b09190615039565b825151808211156142de576040516363a056dd60e01b81526004810183905260248101829052604401610408565b83516020850180516002818401810151965090916142fc8284615039565b9052509395945050505050565b60008160200151600461431c9190615039565b8251518082111561434a576040516363a056dd60e01b81526004810183905260248101829052604401610408565b83516020850180516004818401810151965090916142fc8284615039565b60008160200151600861437b9190615039565b825151808211156143a9576040516363a056dd60e01b81526004810183905260248101829052604401610408565b83516020850180516008818401810151965090916142fc8284615039565b5080546143d390614ee0565b6000825580601f106143e3575050565b601f016020900490600052602060002090810190612dd19190614465565b905290565b60405180604001604052806000151581526020016144015b604080516101008101909152606060c08201908152600060e08301528190815260006020820181905260408201819052606082018190526080820181905260a09091015290565b5b808211156124a55760008155600101614466565b6001600160c01b031981358181169160088510156139475760089490940360031b84901b1690921692915050565b6001600160e01b031981168114612dd157600080fd5b6000602082840312156144d057600080fd5b8135611a33816144a8565b60005b838110156144f65781810151838201526020016144de565b50506000910152565b600081518084526145178160208601602086016144db565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b8481101561457857601f198684030189526145668383516144ff565b9884019892509083019060010161454a565b5090979650505050505050565b606080825284519082018190526000906020906080840190828801845b828110156145c85781516001600160e01b031916845292840192908401906001016145a2565b505050838103828501526145dc818761452b565b8481036040860152855180825283870192509083019060005b81811015614611578351835292840192918401916001016145f5565b509098975050505050505050565b60008083601f84011261463157600080fd5b5081356001600160401b0381111561464857600080fd5b60208301915083602082850101111561466057600080fd5b9250929050565b6001600160a01b0381168114612dd157600080fd5b60008083601f84011261468e57600080fd5b5081356001600160401b038111156146a557600080fd5b6020830191508360208260051b850101111561466057600080fd5b6000806000806000606086880312156146d857600080fd5b85356001600160401b03808211156146ef57600080fd5b6146fb89838a0161461f565b90975095506020880135915061471082614667565b9093506040870135908082111561472657600080fd5b506147338882890161467c565b969995985093965092949392505050565b6001600160a01b03831681526040602082018190526000906131399083018461452b565b634e487b7160e01b600052604160045260246000fd5b604081018181106001600160401b038211171561479d5761479d614768565b60405250565b60c081018181106001600160401b038211171561479d5761479d614768565b60a081018181106001600160401b038211171561479d5761479d614768565b601f8201601f191681016001600160401b038111828210171561480657614806614768565b6040525050565b60405160e081016001600160401b038111828210171561482f5761482f614768565b60405290565b60006001600160401b0382111561484e5761484e614768565b50601f01601f191660200190565b600061486783614835565b60405161487482826147e1565b80925084815285858501111561488957600080fd5b8484602083013760006020868301015250509392505050565b6000602082840312156148b457600080fd5b81356001600160401b038111156148ca57600080fd5b8201601f810184136148db57600080fd5b6131398482356020840161485c565b634e487b7160e01b600052602160045260246000fd5b602081526000825160ff8110614918576149186148ea565b80602084015250602083015160408084015261313960608401826144ff565b602081526000611a3360208301846144ff565b6014811061495a5761495a6148ea565b9052565b60208101610d50828461494a565b60006020828403121561497e57600080fd5b8135611a3381614667565b6005811061495a5761495a6148ea565b600082825180855260208086019550808260051b8401018186016000805b85811015614a1157868403601f19018a5282518460408101845b60028110156149fc5787820383526149ea8285516144ff565b938901939289019291506001016149d1565b509b87019b95505050918401916001016149b7565b509198975050505050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561461157603f19898403018552815160e060ff825116855288820151614a748a870182614989565b5087820151614a858987018261494a565b506060808301518282880152614a9d838801826144ff565b9250505060808083015186830382880152614ab883826144ff565b9250505060a08083015186830382880152614ad38382614999565b9250505060c08083015192508582038187015250614af181836144ff565b968901969450505090860190600101614a48565b600080600060408486031215614b1a57600080fd5b83356001600160401b03811115614b3057600080fd5b614b3c8682870161461f565b909790965060209590950135949350505050565b60008060208385031215614b6357600080fd5b82356001600160401b03811115614b7957600080fd5b614b858582860161461f565b90969095509350505050565b6020815260018060a01b03825116602082015262ffffff602083015116604082015268ffffffffffffffffff60408301511660608201526000606083015160e06080840152614be46101008401826144ff565b9050608084015160a084015260a0840151614c1860c0850182805160ff1682526020908101516001600160401b0316910152565b509392505050565b6001600160e01b031991909116815260200190565b60008060008060408587031215614c4b57600080fd5b84356001600160401b0380821115614c6257600080fd5b614c6e8883890161461f565b90965094506020870135915080821115614c8757600080fd5b50614c948782880161461f565b95989497509550505050565b6000604082840312156129b657600080fd5b60008060608385031215614cc557600080fd5b8235614cd0816144a8565b9150614cdf8460208501614ca0565b90509250929050565b600080600060408486031215614cfd57600080fd5b83356001600160401b03811115614d1357600080fd5b614d1f8682870161461f565b9094509250506020840135614d3381614667565b809150509250925092565b600060208284031215614d5057600080fd5b813561ffff81168114611a3357600080fd5b600060208284031215614d7457600080fd5b5035919050565b6006811061495a5761495a6148ea565b80518252602081015160208301526040810151604083015260608101516126c16060840182614d7b565b60808101610d508284614d8b565b6020815260018060a01b0382511660208201526001600160401b03602083015116604082015263ffffffff6040830151166060820152606082015160808201526000608083015160a08084015261313960c08401826144ff565b60208101610d508284614d7b565b60008060208385031215614e3e57600080fd5b82356001600160401b03811115614e5457600080fd5b614b858582860161467c565b6020808252825182820181905260009190848201906040850190845b81811015614ea257614e8f838551614d8b565b9284019260809290920191600101614e7c565b50909695505050505050565b600060408284031215614ec057600080fd5b611a338383614ca0565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680614ef457607f821691505b6020821081036129b657634e487b7160e01b600052602260045260246000fd5b601f8211156126c1576000816000526020600020601f850160051c81016020861015614f3d5750805b601f850160051c820191505b81811015614f5c57828155600101614f49565b505050505050565b6001600160401b03831115614f7b57614f7b614768565b614f8f83614f898354614ee0565b83614f14565b6000601f841160018114614fc35760008515614fab5750838201355b600019600387901b1c1916600186901b1783556130ab565b600083815260209020601f19861690835b82811015614ff45786850135825560209485019460019092019101614fd4565b50868210156150115760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d5057610d50615023565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e1984360301811261508c57600080fd5b83016020810192503590506001600160401b038111156150ab57600080fd5b80360382131561466057600080fd5b60006040820163ffffffff60e01b861683526020604060208501528185835260608501905060608660051b86010192508660005b8781101561512857868503605f19018352615109828a615075565b61511487828461504c565b9650505091830191908301906001016150ee565b509298975050505050505050565b600082516151488184602087016144db565b9190910192915050565b600082601f83011261516357600080fd5b815161516e81614835565b60405161517b82826147e1565b82815285602084870101111561519057600080fd5b6151a18360208301602088016144db565b95945050505050565b6000602082840312156151bc57600080fd5b81516001600160401b038111156151d257600080fd5b61313984828501615152565b7f5769746e657450726963654665656455706772616461626c653a20736f6c7665815274039103b30b634b230ba34b7b7103330b4b632b21d1605d1b6020820152600082516152348160358501602087016144db565b9190910160350192915050565b7f5769746e6574507269636546656564733a20736d6f6b652d746573742066616981526403632b21d160dd1b6020820152600082516152878160258501602087016144db565b9190910160250192915050565b6000602082840312156152a657600080fd5b8151611a3381614667565b6000602082840312156152c357600080fd5b8151611a33816144a8565b6000602082840312156152e057600080fd5b81516001600160401b03808211156152f757600080fd5b908301906040828603121561530b57600080fd5b6040516153178161477e565b825160ff811061532657600080fd5b815260208301518281111561533a57600080fd5b61534687828601615152565b60208301525095945050505050565b60006001600160401b0382111561536e5761536e614768565b5060051b60200190565b6000602080838503121561538b57600080fd5b82516001600160401b038111156153a157600080fd5b8301601f810185136153b257600080fd5b80516153bd81615355565b6040516153ca82826147e1565b82815260059290921b83018401918481019150878311156153ea57600080fd5b928401925b82841015615408578351825292840192908401906153ef565b979650505050505050565b60ff81168114612dd157600080fd5b8051613c5c81615413565b805160058110613c5c57600080fd5b805160148110613c5c57600080fd5b600082601f83011261545c57600080fd5b8151602061546982615355565b60405161547682826147e1565b83815260059390931b850182019282810191508684111561549657600080fd5b8286015b848110156155385780516001600160401b03808211156154ba5760008081fd5b818901915089603f8301126154cf5760008081fd5b6040516154db8161477e565b80606084018c8111156154ee5760008081fd5b8885015b818110156155265780518581111561550a5760008081fd5b6155188f8c838a0101615152565b8452509189019189016154f2565b5050508552505091830191830161549a565b509695505050505050565b60006020828403121561555557600080fd5b81516001600160401b038082111561556c57600080fd5b9083019060e0828603121561558057600080fd5b61558861480d565b61559183615422565b815261559f6020840161542d565b60208201526155b06040840161543c565b60408201526060830151828111156155c757600080fd5b6155d387828601615152565b6060830152506080830151828111156155eb57600080fd5b6155f787828601615152565b60808301525060a08301518281111561560f57600080fd5b61561b8782860161544b565b60a08301525060c08301518281111561563357600080fd5b61563f87828601615152565b60c08301525095945050505050565b60006020828403121561566057600080fd5b611a338261543c565b81810381811115610d5057610d50615023565b634e487b7160e01b600052603160045260246000fd5b805162ffffff81168114613c5c57600080fd5b805168ffffffffffffffffff81168114613c5c57600080fd5b6001600160401b0381168114612dd157600080fd5b6000604082840312156156e557600080fd5b6040516156f18161477e565b80915082516156ff81615413565b8152602083015161570f816156be565b6020919091015292915050565b60006020828403121561572e57600080fd5b81516001600160401b038082111561574557600080fd5b9083019060e0828603121561575957600080fd5b604051615765816147a3565b825161577081614667565b815261577e60208401615692565b602082015261578f604084016156a5565b60408201526060830151828111156157a657600080fd5b6157b287828601615152565b606083015250608083015160808201526157cf8660a085016156d3565b60a082015295945050505050565b6040815260006157f160408301868861504c565b828103602084015261540881858761504c565b60018060a01b038516815283602082015260606040820152600061296660608301848661504c565b60006040828403121561583e57600080fd5b60405161584a8161477e565b823561585581615413565b81526020830135615865816156be565b60208201529392505050565b60006020828403121561588357600080fd5b5051919050565b61ffff818116838216019080821115612fa357612fa3615023565b8082028115828204841417610d5057610d50615023565b634e487b7160e01b600052601260045260246000fd5b6000826158e1576158e16158bc565b500490565b7102bb4ba3732ba283934b1b2a332b2b2399d160751b8152600082516159138160128501602087016144db565b9190910160120192915050565b805160068110613c5c57600080fd5b60006080828403121561594157600080fd5b604051608081018181106001600160401b038211171561596357615963614768565b806040525082518152602083015160208201526040830151604082015261598c60608401615920565b60608201529392505050565b6000602082840312156159aa57600080fd5b81516001600160401b03808211156159c157600080fd5b9083019060a082860312156159d557600080fd5b6040516159e1816147c2565b82516159ec81614667565b815260208301516159fc816156be565b6020820152604083015163ffffffff81168114615a1857600080fd5b604082015260608381015190820152608083015182811115615a3957600080fd5b615a4587828601615152565b60808301525095945050505050565b600081615a6357615a63615023565b506000190190565b8135615a7681615413565b60ff8116905081548160ff1982161783556020840135615a95816156be565b68ffffffffffffffff008160081b168368ffffffffffffffffff198416171784555050505050565b604081018235615acc81615413565b60ff1682526020830135615adf816156be565b6001600160401b03811660208401525092915050565b6000838385526020808601955060208560051b8301018460005b8781101561457857848303601f19018952615b2a8288615075565b615b3585828461504c565b9a86019a9450505090830190600101615b0f565b6020808252818101839052600090600560408085019086831b86010187855b8881101561461157878303603f190184528135368b9003601e19018112615b8e57600080fd5b8a0186810190356001600160401b03811115615ba957600080fd5b80871b3603821315615bba57600080fd5b615bc5858284615af5565b958801959450505090850190600101615b68565b600060208284031215615beb57600080fd5b611a3382615920565b83815260406020820152600061313660408301848661504c565b600060208284031215615c2057600080fd5b8151611a3381615413565b600060033d11156124a75760046000803e5060005160e01c90565b600060443d1015615c545790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715615c8357505050505090565b8285019150815181811115615c9b5750505050505090565b843d8701016020828501011115615cb55750505050505090565b615cc4602082860101876147e1565b509095945050505050565b8181036000831280158383131683831282161715612fa357612fa3615023565b82815260608101611a336020830184805160ff1682526020908101516001600160401b0316910152565b8381526020808201849052825160ff1660408301528201516001600160401b0316606082015260808101613139565b6001600160401b0381811683821602808216919082811461394757613947615023565b60006001600160401b0380841680615d8557615d856158bc565b92169190910492915050565b600060208284031215615da357600080fd5b8135611a33816156be565b600060208284031215615dc057600080fd5b8135611a3381615413565b6001600160e01b03198316815260608101611a336020830184805160ff1682526020908101516001600160401b0316910152565b600060018201615e1157615e11615023565b506001019056fee36ea87c48340f2c23c9e1c9f72f5c5165184e75683a4d2a19148e5964c1d1ffe36ea87c48340f2c23c9e1c9f72f5c5165184e75683a4d2a19148e5964c1d200a2646970667358221220e70eabe6283fcdb94f584299bf6378a1eaa8d31a886a6439b40c4b7431a0a73364736f6c63430008190033",
  "linkReferences": {
    "contracts/libs/WitnetPriceFeedsLib.sol": {
      "WitnetPriceFeedsLib": [
        {
          "length": 20,
          "start": 10456
        },
        {
          "length": 20,
          "start": 13511
        },
        {
          "length": 20,
          "start": 13910
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/libs/WitnetPriceFeedsLib.sol": {
      "WitnetPriceFeedsLib": [
        {
          "length": 20,
          "start": 9432
        },
        {
          "length": 20,
          "start": 12487
        },
        {
          "length": 20,
          "start": 12886
        }
      ]
    }
  }
}
