{
  "_format": "hh3-artifact-1",
  "contractName": "WitOracleTrustableOvm2",
  "sourceName": "contracts/core/trustable/WitOracleTrustableOvm2.sol",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "reportResultGasBase",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "reportResultWithCallbackGasBase",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "reportResultWithCallbackRevertGasBase",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "sstoreFromZeroGas",
              "type": "uint32"
            }
          ],
          "internalType": "struct WitOracleBaseQueriable.EvmImmutables",
          "name": "_immutables",
          "type": "tuple"
        },
        {
          "internalType": "contract WitOracleRadonRegistry",
          "name": "_registry",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_versionTag",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "InvalidDataReport",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "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"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "name": "BatchReportError",
      "type": "event"
    },
    {
      "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": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Received",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "reporters",
          "type": "address[]"
        }
      ],
      "name": "ReportersSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "reporters",
          "type": "address[]"
        }
      ],
      "name": "ReportersUnset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "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": true,
          "internalType": "address",
          "name": "evmRequester",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmReward",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "Witnet.RadonHash",
          "name": "radonHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "indexed": false,
          "internalType": "struct Witnet.QuerySLA",
          "name": "radonParams",
          "type": "tuple"
        }
      ],
      "name": "WitOracleQuery",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        }
      ],
      "name": "WitOracleQueryReport",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmConsumer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmCallbackGas",
          "type": "uint256"
        }
      ],
      "name": "WitOracleQueryReportDelivery",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmDisputer",
          "type": "address"
        }
      ],
      "name": "WitOracleQueryReportDispute",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmSender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmReward",
          "type": "uint256"
        }
      ],
      "name": "WitOracleQueryUpgrade",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "evmOrigin",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "evmConsumer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmReporter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "Witnet.TransactionHash",
          "name": "witDrTxHash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "Witnet.RadonHash",
          "name": "queryRadHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "indexed": false,
          "internalType": "struct Witnet.QuerySLA",
          "name": "queryParams",
          "type": "tuple"
        },
        {
          "indexed": false,
          "internalType": "Witnet.Timestamp",
          "name": "resultTimestamp",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "resultCborBytes",
          "type": "bytes"
        }
      ],
      "name": "WitOracleReport",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmConsumer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmCallbackActualGas",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "evmCallbackRevertReason",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "resultCborBytes",
          "type": "bytes"
        }
      ],
      "name": "WitOracleResportDeliveryFailed",
      "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": "numWitnesses",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessReward",
              "type": "uint64"
            }
          ],
          "indexed": false,
          "internalType": "struct IWitOracleLegacy.RadonSLA",
          "name": "witnetSLA",
          "type": "tuple"
        }
      ],
      "name": "WitnetQuery",
      "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": "channel",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "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": "currency",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "deleteQuery",
      "outputs": [
        {
          "internalType": "Witnet.QueryEvmReward",
          "name": "",
          "type": "uint72"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "deployer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_evmGasPrice",
          "type": "uint256"
        }
      ],
      "name": "estimateBaseFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_gasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint16",
          "name": "_resultMaxSize",
          "type": "uint16"
        }
      ],
      "name": "estimateBaseFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "gasPrice",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "radHash",
          "type": "bytes32"
        }
      ],
      "name": "estimateBaseFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_gasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint24",
          "name": "_callbackGas",
          "type": "uint24"
        }
      ],
      "name": "estimateBaseFeeWithCallback",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_evmGasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_evmWitPrice",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "internalType": "struct Witnet.QuerySLA",
          "name": "_querySLA",
          "type": "tuple"
        }
      ],
      "name": "estimateExtraFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_queryIds",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "_evmMsgData",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_evmGasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_evmWitPrice",
          "type": "uint256"
        }
      ],
      "name": "estimateReportEarnings",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_revenues",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_expenses",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId[]",
          "name": "_queryIds",
          "type": "uint64[]"
        }
      ],
      "name": "extractRadonBytecodes",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "_bytecodes",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "queryIds",
          "type": "uint256[]"
        }
      ],
      "name": "extractWitnetDataRequests",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        }
      ],
      "name": "fetchQueryResponse",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getNextQueryId",
      "outputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        }
      ],
      "name": "getQuery",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "requester",
                  "type": "address"
                },
                {
                  "internalType": "uint24",
                  "name": "callbackGas",
                  "type": "uint24"
                },
                {
                  "internalType": "bytes",
                  "name": "radonBytecode",
                  "type": "bytes"
                },
                {
                  "internalType": "Witnet.RadonHash",
                  "name": "radonHash",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct Witnet.QueryRequest",
              "name": "request",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "reporter",
                  "type": "address"
                },
                {
                  "internalType": "Witnet.Timestamp",
                  "name": "resultTimestamp",
                  "type": "uint64"
                },
                {
                  "internalType": "Witnet.TransactionHash",
                  "name": "resultDrTxHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "resultCborBytes",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "disputer",
                  "type": "address"
                }
              ],
              "internalType": "struct Witnet.QueryResponse",
              "name": "response",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint16",
                  "name": "witResultMaxSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "witCommitteeSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint64",
                  "name": "witUnitaryReward",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.QuerySLA",
              "name": "slaParams",
              "type": "tuple"
            },
            {
              "internalType": "Witnet.QueryUUID",
              "name": "uuid",
              "type": "bytes15"
            },
            {
              "internalType": "Witnet.QueryEvmReward",
              "name": "reward",
              "type": "uint72"
            },
            {
              "internalType": "Witnet.BlockNumber",
              "name": "checkpoint",
              "type": "uint64"
            }
          ],
          "internalType": "struct Witnet.Query",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        }
      ],
      "name": "getQuery",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "requester",
                  "type": "address"
                },
                {
                  "internalType": "uint24",
                  "name": "callbackGas",
                  "type": "uint24"
                },
                {
                  "internalType": "uint72",
                  "name": "evmReward",
                  "type": "uint72"
                },
                {
                  "internalType": "bytes",
                  "name": "radonBytecode",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes32",
                  "name": "radonHash",
                  "type": "bytes32"
                },
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "numWitnesses",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint64",
                      "name": "witnessReward",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct IWitOracleLegacy.RadonSLA",
                  "name": "radonParams",
                  "type": "tuple"
                }
              ],
              "internalType": "struct IWitOracleLegacy.QueryRequest",
              "name": "request",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "reporter",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "finality",
                  "type": "uint64"
                },
                {
                  "internalType": "uint32",
                  "name": "timestamp",
                  "type": "uint32"
                },
                {
                  "internalType": "bytes32",
                  "name": "trail",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "cborBytes",
                  "type": "bytes"
                }
              ],
              "internalType": "struct IWitOracleLegacy.QueryResponse",
              "name": "response",
              "type": "tuple"
            }
          ],
          "internalType": "struct IWitOracleLegacy.Query",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryEvmReward",
      "outputs": [
        {
          "internalType": "Witnet.QueryEvmReward",
          "name": "",
          "type": "uint72"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryRequest",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "requester",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "callbackGas",
              "type": "uint24"
            },
            {
              "internalType": "uint72",
              "name": "evmReward",
              "type": "uint72"
            },
            {
              "internalType": "bytes",
              "name": "radonBytecode",
              "type": "bytes"
            },
            {
              "internalType": "bytes32",
              "name": "radonHash",
              "type": "bytes32"
            },
            {
              "components": [
                {
                  "internalType": "uint8",
                  "name": "numWitnesses",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "witnessReward",
                  "type": "uint64"
                }
              ],
              "internalType": "struct IWitOracleLegacy.RadonSLA",
              "name": "radonParams",
              "type": "tuple"
            }
          ],
          "internalType": "struct IWitOracleLegacy.QueryRequest",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        }
      ],
      "name": "getQueryRequest",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "requester",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "callbackGas",
              "type": "uint24"
            },
            {
              "internalType": "bytes",
              "name": "radonBytecode",
              "type": "bytes"
            },
            {
              "internalType": "Witnet.RadonHash",
              "name": "radonHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct Witnet.QueryRequest",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        }
      ],
      "name": "getQueryResponse",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "reporter",
              "type": "address"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "resultTimestamp",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "resultDrTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            },
            {
              "internalType": "address",
              "name": "disputer",
              "type": "address"
            }
          ],
          "internalType": "struct Witnet.QueryResponse",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResponse",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "reporter",
              "type": "address"
            },
            {
              "internalType": "uint64",
              "name": "finality",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "timestamp",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "trail",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "cborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct IWitOracleLegacy.QueryResponse",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResponseStatus",
      "outputs": [
        {
          "internalType": "enum IWitOracleLegacy.QueryResponseStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResult",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.ResultStatus",
              "name": "status",
              "type": "uint8"
            },
            {
              "internalType": "enum Witnet.RadonDataTypes",
              "name": "dataType",
              "type": "uint8"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "finality",
              "type": "uint256"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint256",
                      "name": "cursor",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct WitnetBuffer.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct WitnetCBOR.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.DataResult",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultCborBytes",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultError",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "code",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "reason",
              "type": "string"
            }
          ],
          "internalType": "struct IWitOracleLegacy.ResultError",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultStatus",
      "outputs": [
        {
          "internalType": "enum Witnet.ResultStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultStatusDescription",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultTrails",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "queryUUID",
          "type": "bytes32"
        },
        {
          "internalType": "Witnet.TransactionHash",
          "name": "resultDrTxHash",
          "type": "bytes32"
        },
        {
          "internalType": "Witnet.Timestamp",
          "name": "resultTimestamp",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "resultFinalityBlock",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryStatus",
      "outputs": [
        {
          "internalType": "enum Witnet.QueryStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_queryIds",
          "type": "uint256[]"
        }
      ],
      "name": "getQueryStatusBatch",
      "outputs": [
        {
          "internalType": "enum Witnet.QueryStatus[]",
          "name": "_status",
          "type": "uint8[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryStatusString",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_initData",
          "type": "bytes"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_queryResponseReporter",
          "type": "address"
        }
      ],
      "name": "isReporter",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "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": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "Witnet.TransactionHash",
              "name": "witDrTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "Witnet.RadonHash",
              "name": "queryRadHash",
              "type": "bytes32"
            },
            {
              "components": [
                {
                  "internalType": "uint16",
                  "name": "witResultMaxSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "witCommitteeSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint64",
                  "name": "witUnitaryReward",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.QuerySLA",
              "name": "queryParams",
              "type": "tuple"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "resultTimestamp",
              "type": "uint64"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct Witnet.DataPushReport",
          "name": "_report",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "_signature",
          "type": "bytes"
        }
      ],
      "name": "parseDataReport",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.ResultStatus",
              "name": "status",
              "type": "uint8"
            },
            {
              "internalType": "enum Witnet.RadonDataTypes",
              "name": "dataType",
              "type": "uint8"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "finality",
              "type": "uint256"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint256",
                      "name": "cursor",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct WitnetBuffer.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct WitnetCBOR.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.DataResult",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_queryRadHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "numWitnesses",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessReward",
              "type": "uint64"
            }
          ],
          "internalType": "struct IWitOracleLegacy.RadonSLA",
          "name": "_querySLA",
          "type": "tuple"
        }
      ],
      "name": "postRequest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_queryRadHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "numWitnesses",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessReward",
              "type": "uint64"
            }
          ],
          "internalType": "struct IWitOracleLegacy.RadonSLA",
          "name": "_querySLA",
          "type": "tuple"
        },
        {
          "internalType": "uint24",
          "name": "_queryCallbackGas",
          "type": "uint24"
        }
      ],
      "name": "postRequestWithCallback",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "Witnet.TransactionHash",
              "name": "witDrTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "Witnet.RadonHash",
              "name": "queryRadHash",
              "type": "bytes32"
            },
            {
              "components": [
                {
                  "internalType": "uint16",
                  "name": "witResultMaxSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "witCommitteeSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint64",
                  "name": "witUnitaryReward",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.QuerySLA",
              "name": "queryParams",
              "type": "tuple"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "resultTimestamp",
              "type": "uint64"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct Witnet.DataPushReport",
          "name": "_report",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "_signature",
          "type": "bytes"
        }
      ],
      "name": "pushDataReport",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.ResultStatus",
              "name": "status",
              "type": "uint8"
            },
            {
              "internalType": "enum Witnet.RadonDataTypes",
              "name": "dataType",
              "type": "uint8"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "finality",
              "type": "uint256"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint256",
                      "name": "cursor",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct WitnetBuffer.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct WitnetCBOR.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.DataResult",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.RadonHash",
          "name": "_queryRAD",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "internalType": "struct Witnet.QuerySLA",
          "name": "_querySLA",
          "type": "tuple"
        }
      ],
      "name": "queryData",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.RadonHash",
          "name": "_queryRAD",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "internalType": "struct Witnet.QuerySLA",
          "name": "_querySLA",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "consumer",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "gasLimit",
              "type": "uint24"
            }
          ],
          "internalType": "struct Witnet.QueryCallback",
          "name": "_queryCallback",
          "type": "tuple"
        }
      ],
      "name": "queryDataWithCallback",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "registry",
      "outputs": [
        {
          "internalType": "contract IWitOracleRadonRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        },
        {
          "internalType": "Witnet.Timestamp",
          "name": "_resultTimestamp",
          "type": "uint64"
        },
        {
          "internalType": "Witnet.TransactionHash",
          "name": "_witDrTxHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_resultCborBytes",
          "type": "bytes"
        }
      ],
      "name": "reportResult",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "drTxHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "resultCborBytes",
          "type": "bytes"
        }
      ],
      "name": "reportResult",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        },
        {
          "internalType": "Witnet.TransactionHash",
          "name": "_witDrTxHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_resultCborBytes",
          "type": "bytes"
        }
      ],
      "name": "reportResult",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "resultTimestamp",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "drTxHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "resultCborBytes",
          "type": "bytes"
        }
      ],
      "name": "reportResult",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "queryId",
              "type": "uint256"
            },
            {
              "internalType": "uint32",
              "name": "resultTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct IWitOracleLegacy.BatchResultLegacy[]",
          "name": "results",
          "type": "tuple[]"
        }
      ],
      "name": "reportResultBatch",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_batchReward",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "Witnet.QueryId",
              "name": "queryId",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "resultTimestamp",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct IWitOracleQueriableTrustableReporter.BatchResult[]",
          "name": "_batchResults",
          "type": "tuple[]"
        }
      ],
      "name": "reportResultBatch",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_batchReward",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_queryResponseReporters",
          "type": "address[]"
        }
      ],
      "name": "setReporters",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "specs",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_exReporters",
          "type": "address[]"
        }
      ],
      "name": "unsetReporters",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "upgradeQueryEvmReward",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6102206040523361010052348015610015575f5ffd5b5060405161613938038061613983398101604081905261003491610362565b8083835f6001846040518060400160405280601981526020017f696f2e7769746e65742e70726f786961626c652e626f6172640000000000000081525082335f6001600160a01b0316816001600160a01b0316036100ac57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100b58161024b565b5030608052151560c052600160025560e0919091528051602091820120610120526001600160a01b039283166101405260408051808201909152601381527f696e6578697374656e74207265676973747279000000000000000000000000009181019190915261012b9284163b15159150610267565b6101ec63a614fef760e01b6001600160e01b031916826001600160a01b031663adb7c3f76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561017c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a09190610413565b6001600160e01b031916146040518060400160405280601481526020017f756e636f6d706c69616e7420726567697374727900000000000000000000000081525061026760201b60201c565b6001600160a01b031661016052805163ffffffff90811661018052602082015181166101a052604082015181166101c052606090910151166101e052505073420000000000000000000000000000000000000f61020052506104b69050565b600180546001600160a01b031916905561026481610279565b50565b8161027557610275816102c8565b5050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051808201909152601681527f5769744f7261636c65547275737461626c654f766d320000000000000000000060208201528160405160200161030e929190610458565b60408051601f198184030181529082905262461bcd60e51b82526100a391600401610481565b805163ffffffff81168114610347575f5ffd5b919050565b80516001600160a01b0381168114610347575f5ffd5b5f5f5f83850360c0811215610375575f5ffd5b6080811215610382575f5ffd5b50604051608081016001600160401b03811182821017156103b157634e487b7160e01b5f52604160045260245ffd5b6040526103bd85610334565b81526103cb60208601610334565b60208201526103dc60408601610334565b60408201526103ed60608601610334565b606082015292506104006080850161034c565b60a0949094015192959394509192915050565b5f60208284031215610423575f5ffd5b81516001600160e01b03198116811461043a575f5ffd5b9392505050565b5f81518060208401855e5f93019283525090919050565b5f6104638285610441565b6101d160f51b81526104786002820185610441565b95945050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051615ba56105945f395f818161274101526132ee01525f81816132090152818161343001526138a701525f61323501525f818161327501526132bd01525f61345c01525f818161092f01528181611e4d01526127f201525f610cc101525f61071a01525f610c7101525f611ebf01525f8181610769015261204b01525f50505f81816106d101528181610b0e01528181611856015281816118c70152818161190e01526119300152615ba55ff3fe6080604052600436106103ac575f3560e01c806379ba5097116101e6578063adb7c3f71161010c578063d0a92a081161009f578063e900aa331161006e578063e900aa3314610ce3578063ec5946db14610cf6578063f2fde38b14610d09578063f61921b214610d28576103ac565b8063d0a92a0814610c41578063d5f3948814610c60578063e30c397814610c93578063e5a6b10f14610cb0576103ac565b8063bff852fa116100db578063bff852fa14610bb6578063c258134814610bca578063c805dd0f14610be9578063ca7da98b14610c15576103ac565b8063adb7c3f714610b33578063aeb2ffc114610b4c578063b207e73014610b78578063b783922b14610b97576103ac565b80638d3d8b3811610184578063a58f680311610153578063a58f680314610a95578063a667533f14610aa8578063a77fc1a414610ad4578063a9e954b914610b00576103ac565b80638d3d8b3814610a075780638da5cb5b14610a2657806393d5185c14610a425780639cc56e6714610a76576103ac565b80637bd88218116101c05780637bd882181461097e5780637c1fbda31461099d578063838d44e2146109bc5780638cfcdea2146109db576103ac565b806379ba50971461090a5780637b1039991461091e5780637bbdb96e14610951576103ac565b80634cddf615116102d657806359209b39116102695780636f07abcc116102385780636f07abcc146108565780636fdaab7e14610875578063715018a6146108d757806376d0e357146108eb576103ac565b806359209b39146107cd5780636280bce8146107f95780636b58960a146108185780636d0d6a7e14610837576103ac565b80635304bba2116102a55780635304bba21461073c5780635479d9401461075b57806354fd4d501461078d578063581f5094146107a1576103ac565b80634cddf615146106785780634e6c13a1146106a45780635001f3b5146106c357806352d1902d14610709576103ac565b806328a78d9b1161034e5780633fa595761161031d5780633fa59576146105c0578063439fab911461060e57806345ea6c171461062d5780634c9f72e314610659576103ac565b806328a78d9b1461055a57806339a8653e1461057b5780633b3195b71461059a5780633dc2b7a2146105ad576103ac565b806308b7e85e1161038a57806308b7e85e146104b75780630aa4112a146104e35780631aea970b1461050f578063234fe6e31461052e576103ac565b8063044ad7be1461043757806305e742ef1461046b57806306eb2c4214610498575b3480156103b7575f5ffd5b506103c55f3560f81c610d54565b6103d560ff5f3560f01c16610d54565b6103e560ff5f3560e81c16610d54565b6103f560ff5f3560e01c16610d54565b6040516020016104089493929190613dc2565b60408051601f198184030181529082905262461bcd60e51b825261042e91600401613e4e565b60405180910390fd5b348015610442575f5ffd5b50610456610451366004613e74565b610e40565b60405190151581526020015b60405180910390f35b348015610476575f5ffd5b5061048a610485366004613e9f565b610e81565b604051908152602001610462565b3480156104a3575f5ffd5b5061048a6104b2366004613f14565b610ea7565b3480156104c2575f5ffd5b506104d66104d1366004613f52565b6110c6565b6040516104629190613e4e565b3480156104ee575f5ffd5b506105026104fd366004613f52565b6110e6565b6040516104629190613fed565b34801561051a575f5ffd5b5061048a610529366004614050565b61133a565b348015610539575f5ffd5b5061054d610548366004613f52565b6113e7565b60405161046291906140e1565b348015610565575f5ffd5b50610579610574366004613f14565b61145c565b005b348015610586575f5ffd5b5061048a610595366004613f52565b6114cd565b61048a6105a8366004614230565b6114eb565b61048a6105bb3660046142b3565b6116d7565b3480156105cb575f5ffd5b506105df6105da366004613f52565b61172f565b604051610462949392919093845260208401929092526001600160401b03166040830152606082015260800190565b348015610619575f5ffd5b5061057961062836600461435c565b611780565b348015610638575f5ffd5b5061064c610647366004613f14565b6119b4565b604051610462919061438d565b348015610664575f5ffd5b50610579610673366004613f14565b611a5b565b348015610683575f5ffd5b50610697610692366004613f52565b611a9c565b6040516104629190614405565b3480156106af575f5ffd5b5061048a6106be366004614435565b611b10565b3480156106ce575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610462565b348015610714575f5ffd5b5061048a7f000000000000000000000000000000000000000000000000000000000000000081565b348015610747575f5ffd5b5061064c61075636600461455c565b611e1b565b348015610766575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610456565b348015610798575f5ffd5b506104d6611eb8565b3480156107ac575f5ffd5b506107c06107bb366004613f14565b611ee8565b6040516104629190614601565b3480156107d8575f5ffd5b506107ec6107e7366004613f52565b611fa9565b604051610462919061464c565b348015610804575f5ffd5b5061048a610813366004614738565b612025565b348015610823575f5ffd5b50610456610832366004613e74565b612048565b348015610842575f5ffd5b506107ec610851366004614786565b61209c565b348015610861575f5ffd5b5061054d610870366004613f52565b612197565b348015610880575f5ffd5b506108bf61088f366004613f52565b5f9081525f516020615b505f395f51905f526020526040902060090154600160781b90046001600160481b031690565b6040516001600160481b039091168152602001610462565b3480156108e2575f5ffd5b506105796121d1565b3480156108f6575f5ffd5b5061048a6109053660046147f1565b6121e4565b348015610915575f5ffd5b5061057961224b565b348015610929575f5ffd5b506106f17f000000000000000000000000000000000000000000000000000000000000000081565b34801561095c575f5ffd5b506109656122c5565b6040516001600160e01b03199091168152602001610462565b348015610989575f5ffd5b5061048a610998366004614830565b6122cf565b3480156109a8575f5ffd5b506108bf6109b7366004613f52565b6122e3565b3480156109c7575f5ffd5b506104d66109d6366004613f52565b6123d8565b3480156109e6575f5ffd5b506109fa6109f5366004614853565b61245a565b6040516104629190614917565b348015610a12575f5ffd5b506104d6610a21366004613f52565b61256c565b348015610a31575f5ffd5b505f546001600160a01b03166106f1565b348015610a4d575f5ffd5b50610a61610a5c3660046149d3565b612581565b60408051928352602083019190915201610462565b348015610a81575f5ffd5b5061048a610a90366004614a4e565b6127ce565b61048a610aa3366004614a6e565b612894565b348015610ab3575f5ffd5b50610ac7610ac2366004614853565b612953565b6040516104629190614a90565b348015610adf575f5ffd5b50610af3610aee366004613f52565b612a05565b6040516104629190614aa2565b348015610b0b575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f61048a565b348015610b3e575f5ffd5b506304722eaf60e31b610965565b348015610b57575f5ffd5b50610b6b610b66366004613f52565b612aed565b6040516104629190614b1c565b348015610b83575f5ffd5b5061048a610b92366004614b67565b612b1f565b348015610ba2575f5ffd5b506107ec610bb1366004614786565b612b49565b348015610bc1575f5ffd5b506104d6612bcd565b348015610bd5575f5ffd5b506104d6610be4366004613f52565b612bfd565b348015610bf4575f5ffd5b50610bfd612cce565b6040516001600160401b039091168152602001610462565b348015610c20575f5ffd5b50610c34610c2f366004614853565b612cf2565b6040516104629190614b8b565b348015610c4c575f5ffd5b5061048a610c5b366004614b9d565b612d97565b348015610c6b575f5ffd5b506106f17f000000000000000000000000000000000000000000000000000000000000000081565b348015610c9e575f5ffd5b506001546001600160a01b03166106f1565b348015610cbb575f5ffd5b506106f17f000000000000000000000000000000000000000000000000000000000000000081565b61048a610cf1366004614bd0565b612db8565b610579610d04366004613f52565b612e28565b348015610d14575f5ffd5b50610579610d23366004613e74565b612f81565b348015610d33575f5ffd5b50610d47610d42366004613f52565b612ff1565b6040516104629190614c0e565b6040805160028082528183019092526060915f91906020820181803683370190505090505f610d84601085614c48565b610d8f906030614c69565b90505f610d9d601086614c82565b610da8906030614c69565b905060398260ff161115610dc457610dc1600783614c69565b91505b60398160ff161115610dde57610ddb600782614c69565b90505b8160f81b835f81518110610df457610df4614ca3565b60200101906001600160f81b03191690815f1a9053508060f81b83600181518110610e2157610e21614ca3565b60200101906001600160f81b03191690815f1a90535091949350505050565b6001600160a01b0381165f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e185602052604081205460ff165b92915050565b5f610e8c8383613202565b610e9660206132eb565b610ea09190614cb7565b9392505050565b5f610f065f516020615b305f395f51905f525b335f908152600291909101602090815260409182902054825180840190935260158352743ab730baba3437b934bd32b2103932b837b93a32b960591b9183019190915260ff169061339e565b5f826001600160401b03811115610f1f57610f1f6140f4565b604051908082528060200260200182016040528015610f6e57816020015b604080516080810182525f80825260208083018290529282015260608082015282525f19909201910181610f3d5790505b5090505f5b838110156110b4576040518060800160405280868684818110610f9857610f98614ca3565b9050602002810190610faa9190614cca565b356001600160401b03168152602001868684818110610fcb57610fcb614ca3565b9050602002810190610fdd9190614cca565b610fee906040810190602001614ce8565b63ffffffff16815260200186868481811061100b5761100b614ca3565b905060200281019061101d9190614cca565b60400135815260200186868481811061103857611038614ca3565b905060200281019061104a9190614cca565b611058906060810190614d01565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505091525082518390839081106110a1576110a1614ca3565b6020908102919091010152600101610f73565b506110be81611b10565b949350505050565b60606110d1826122e3565b505060408051602081019091525f8152919050565b6111296040805160c0810182525f80825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b5f8281525f516020615b505f395f51905f526020526040902060018101805461ffff919061115690614d43565b905011156111b1576040805160c0810182525f8082526020808301829052828401829052835180820185528281526060840152600290940154608083015282518084019093528083529282019290925260a082015292915050565b6003810154156112da576040805160c08101825282546001600160a01b0381168252600160a01b810462ffffff166020830152600160b81b90046001600160481b03169181019190915260018201805460608301919061121090614d43565b80601f016020809104026020016040519081016040528092919081815260200182805461123c90614d43565b80156112875780601f1061125e57610100808354040283529160200191611287565b820191905f5260205f20905b81548152906001019060200180831161126a57829003601f168201915b5050509183525050600283015460208083019190915260408051808201825260089095015462010000810460ff16865264010000000090046001600160401b031691850191909152019190915292915050565b6040805160c08101825282546001600160a01b0381168252600160a01b900462ffffff1660208201526009830154600160781b90046001600160481b03169181019190915260018201805460608301919061121090614d43565b50919050565b5f6113515f516020615b305f395f51905f52610eba565b61138b6001600160401b03861615156040518060400160405280600d81526020016c06261642074696d657374616d7609c1b81525061339e565b604080518082019091526016815275726573756c742063616e6e6f7420626520656d70747960501b60208201526113c5908315159061339e565b6113db866001600160401b0316868686866133b0565b90505b95945050505050565b60405163234fe6e360e01b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__9063234fe6e3906024015b602060405180830381865af4158015611438573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7b9190614d81565b6114646133fe565b6040516328a78d9b60e01b815273__$713c4f4487e8756194dbc5b3b091cd4345$__906328a78d9b9061149d9085908590600401614d9c565b5f6040518083038186803b1580156114b3575f5ffd5b505af41580156114c5573d5f5f3e3d5ffd5b505050505050565b5f6114d78261342a565b6114e160206132eb565b610e7b9190614cb7565b5f346114fb3a8460200151610e81565b61153381831015604051806040016040528060138152602001721a5b9cdd59999a58da595b9d081c995dd85c99606a1b81525061339e565b61157161154182600a614de8565b8311156040518060400160405280600f81526020016e1d1bdbc81b5d58da081c995dd85c99608a1b81525061339e565b846115a761157e8261348a565b6040518060400160405280600b81526020016a696e76616c696420534c4160a81b81525061339e565b8461166d5f825f01516001600160a01b03163b11801561162b575081516040516323d0872b60e11b81523060048201526001600160a01b03909116906347a10e5690602401602060405180830381865afa158015611607573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061162b9190614dff565b801561163f57505f826020015162ffffff16115b6040518060400160405280601081526020016f696e76616c69642063616c6c6261636b60801b81525061339e565b855160208701516116819190348b8b6134c5565b9450336001600160a01b03167ffbe74eb38ea9de3d74d481a4f701ae121d794895c5797db8260d06d317901d263a34888c8c6040516116c4959493929190614e1e565b60405180910390a2505050509392505050565b5f610ea0836040518060600160405280602061ffff168152602001855f0160208101906117049190614e85565b60ff16815260209081019061171f9060408801908801614853565b6001600160401b03169052612894565b5f5f5f5f5f61173d86613541565b600981015460058201546004909201546001600160881b0319608883901b16999298506001600160401b03600160c01b9182900481169850910416945092505050565b5f546001600160a01b0316806117b657818060200190518101906117a49190614f01565b925090506117b18161355d565b6117fe565b336001600160a01b038216146117fe5760405162461bcd60e51b815260206004820152600d60248201526c3737ba103a34329037bbb732b960991b604482015260640161042e565b61180782613576565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe541580159061187857507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe547f00000000000000000000000000000000000000000000000000000000000000003f145b156118c55760405162461bcd60e51b815260206004820152601c60248201527f616c726561647920696e697469616c697a656420636f64656861736800000000604482015260640161042e565b7f00000000000000000000000000000000000000000000000000000000000000003f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc600201557f00000000000000000000000000000000000000000000000000000000000000003f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119695f546001600160a01b031690565b6001600160a01b03167fe73e754121f0bad1327816970101955bfffdf53d270ac509d777c25be070d7f661199b611eb8565b6040516119a89190613e4e565b60405180910390a45050565b60605f826001600160401b038111156119cf576119cf6140f4565b6040519080825280602002602001820160405280156119f8578160200160208202803683370190505b5090505f5b8151811015611a5157848482818110611a1857611a18614ca3565b90506020020135828281518110611a3157611a31614ca3565b6001600160401b03909216602092830291909101909101526001016119fd565b506110be81611e1b565b611a636133fe565b604051634c9f72e360e01b815273__$713c4f4487e8756194dbc5b3b091cd4345$__90634c9f72e39061149d9085908590600401614d9c565b604051634cddf61560e01b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__90634cddf61590602401602060405180830381865af4158015611aec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7b9190614f5d565b5f611b275f516020615b305f395f51905f52610eba565b5f5b8251811015611e05575f838281518110611b4557611b45614ca3565b6020908102919091010151516001600160401b031690506001611b6782612197565b6006811115611b7857611b786140bd565b14611c75577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848381518110611bb057611bb0614ca3565b60200260200101515f0151611bc3612bcd565b604051638f191e5f60e01b815273__$713c4f4487e8756194dbc5b3b091cd4345$__90638f191e5f90611bfb906001906004016140e1565b5f60405180830381865af4158015611c15573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c3c9190810190614f76565b604051602001611c4d929190614fba565b60408051601f1981840301815290829052611c689291614fda565b60405180910390a1611dfc565b426001600160401b0316848381518110611c9157611c91614ca3565b6020026020010151602001516001600160401b03161180611ce45750611ce4848381518110611cc257611cc2614ca3565b6020026020010151602001516001600160401b03166001600160401b03161590565b80611d0c5750838281518110611cfc57611cfc614ca3565b602002602001015160600151515f145b15611d67577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848381518110611d4457611d44614ca3565b60200260200101515f0151611d57612bcd565b604051602001611c4d9190614ffb565b611def848381518110611d7c57611d7c614ca3565b60200260200101515f01516001600160401b0316858481518110611da257611da2614ca3565b602002602001015160200151868581518110611dc057611dc0614ca3565b602002602001015160400151878681518110611dde57611dde614ca3565b6020026020010151606001516135ef565b611df99084614cb7565b92505b50600101611b29565b508015611e1657611e16338261372d565b919050565b604051633ab5a66d60e11b815260609073__$713c4f4487e8756194dbc5b3b091cd4345$__9063756b4cda90611e77907f000000000000000000000000000000000000000000000000000000000000000090869060040161502b565b5f60405180830381865af4158015611e91573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b9190810190615089565b6060611ee37f0000000000000000000000000000000000000000000000000000000000000000613760565b905090565b6060816001600160401b03811115611f0257611f026140f4565b604051908082528060200260200182016040528015611f2b578160200160208202803683370190505b5090505f5b82811015611fa257611f59848483818110611f4d57611f4d614ca3565b90506020020135612197565b828281518110611f6b57611f6b614ca3565b60200260200101906006811115611f8457611f846140bd565b90816006811115611f9757611f976140bd565b905250600101611f30565b5092915050565b611fb1613cae565b6040516359209b3960e01b81526004810183905273__$713c4f4487e8756194dbc5b3b091cd4345$__906359209b39906024015f60405180830381865af4158015611ffe573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b91908101906152c1565b5f61203c5f516020615b305f395f51905f52610eba565b6113de858585856121e4565b5f7f00000000000000000000000000000000000000000000000000000000000000008015610e7b5750816001600160a01b031661208c5f546001600160a01b031690565b6001600160a01b03161492915050565b6120a4613cae565b5f5f73__$713c4f4487e8756194dbc5b3b091cd4345$__631600b78b8787876040518463ffffffff1660e01b81526004016120e193929190615364565b5f60405180830381865af41580156120fb573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121229190810190615414565b909250905033327f7a9001dc4425127400f09e4c0b02908ad0e1f642ee9c92932a222c686674648284893560208b013560408c0161216660c08e0160a08f01614853565b61217360c08f018f614d01565b6040516121869796959493929190615457565b60405180910390a395945050505050565b604051631bc1eaf360e21b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__90636f07abcc9060240161141d565b6121d96133fe565b6121e25f61355d565b565b5f6121fb5f516020615b305f395f51905f52610eba565b604080518082019091526016815275726573756c742063616e6e6f7420626520656d70747960501b6020820152612235908315159061339e565b6113de856001600160401b0316428686866133b0565b60015433906001600160a01b031681146122b95760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161042e565b6122c28161355d565b50565b5f611ee330613801565b5f6122da838361383f565b610e96836132eb565b604051637c1fbda360e01b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__90637c1fbda390602401602060405180830381865af4925050508015612351575060408051601f3d908101601f1916820190925261234e918101906154c8565b60015b6123be5761235d6154e1565b806308c379a00361238557506123716154f9565b8061237c5750612387565b61133481613849565b505b3d8080156123b0576040519150601f19603f3d011682016040523d82523d5f602084013e6123b5565b606091505b50611334613863565b6001600160481b0381168015611fa257611fa2338261372d565b606073__$713c4f4487e8756194dbc5b3b091cd4345$__634cbc7ff86123fd84612197565b6040518263ffffffff1660e01b815260040161241991906140e1565b5f60405180830381865af4158015612433573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b9190810190614f76565b6124f06040805161014081019091525f60c0820181815260e083018290526060610100840152610120830191909152819081526040805160a0810182525f808252602082810182905292820181905260608083015260808201529101908152604080516060810182525f80825260208281018290529282015291019081525f602082018190526040820181905260609091015290565b60405163467e6f5160e11b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__90638cfcdea2906024015f60405180830381865af4158015612545573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b91908101906156fa565b606061257782612cf2565b6060015192915050565b5f80805b87811015612729575f8989838181106125a0576125a0614ca3565b60200291909101359150600190506125b782612197565b60068111156125c8576125c86140bd565b03612720575f6125d782613541565b8054909150600160a01b900462ffffff161561266757604080516060810182525f8152600883015461ffff62010000820416602083015264010000000090046001600160401b031691810191909152612633908890889061386e565b815461264c908990600160a01b900462ffffff16613202565b6126569190614cb7565b6126609085614cb7565b93506126cf565b60408051606081018252600883015461ffff808216835262010000820416602083015264010000000090046001600160401b0316918101919091526126af908890889061386e565b6126b88861342a565b6126c29190614cb7565b6126cc9085614cb7565b93505b60088101546126f090879064010000000090046001600160401b0316614de8565b6126fa9085614cb7565b600982015490945061271c90600160781b90046001600160481b031686614cb7565b9450505b50600101612585565b506040516324ca470760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906349948e0e9061277890899089906004016157d4565b602060405180830381865afa158015612793573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127b791906157e7565b6127c19082614cb7565b9050965096945050505050565b604051631a3b01e960e21b8152600481018290525f9061288b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906368ec07a490602401602060405180830381865afa158015612837573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061285b9190614dff565b604051806040016040528060128152602001710eadcd6dcdeeedc40e4c2c8dedc40d0c2e6d60731b81525061339e565b610ea0836114cd565b5f3461289f3a6114cd565b6128d781831015604051806040016040528060138152602001721a5b9cdd59999a58da595b9d081c995dd85c99606a1b81525061339e565b6128e561154182600a614de8565b836128f261157e8261348a565b6128ff335f3489896134c5565b9350336001600160a01b03167ffbe74eb38ea9de3d74d481a4f701ae121d794895c5797db8260d06d317901d263a34878a8a604051612942959493929190614e1e565b60405180910390a250505092915050565b61298960405180608001604052805f6001600160a01b031681526020015f62ffffff168152602001606081526020015f81525090565b60405163a667533f60e01b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__9063a667533f906024015f60405180830381865af41580156129de573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b91908101906157fe565b604080518082019091525f8152606060208201525f612a2383611fa9565b90506040518060400160405280825f015160ff811115612a4557612a456140bd565b60ff16815260200173__$39c1c75f9ff01712a7ae2d1d1d8c462aa1$__6371aad10d84604051602001612a78919061464c565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401612aa39190613e4e565b5f60405180830381865af4158015612abd573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612ae49190810190614f76565b90529392505050565b612af5613d29565b6040518060400160405280612b09846110e6565b8152602001612b1784612ff1565b905292915050565b5f612b365f516020615b305f395f51905f52610eba565b6113db868663ffffffff1686868661133a565b612b51613cae565b604051631600b78b60e01b815273__$713c4f4487e8756194dbc5b3b091cd4345$__90631600b78b90612b8c90879087908790600401615364565b5f60405180830381865af4158015612ba6573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113de9190810190615414565b6040805180820190915260168152752bb4ba27b930b1b632aa393ab9ba30b13632a7bb369960511b602082015290565b606073__$39c1c75f9ff01712a7ae2d1d1d8c462aa1$__6371aad10d73__$713c4f4487e8756194dbc5b3b091cd4345$__6359209b39856040518263ffffffff1660e01b8152600401612c5291815260200190565b5f60405180830381865af4158015612c6c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612c9391908101906152c1565b604051602001612ca3919061464c565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016124199190613e4e565b5f5f516020615b305f395f51905f5254611ee3906001600160401b0316600161582f565b6040805160a0810182525f80825260208201819052918101829052606080820152608081019190915260405163ca7da98b60e01b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__9063ca7da98b906024015f60405180830381865af4158015612d70573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b919081019061584e565b5f612da384848461386e565b8251612dae906132eb565b6110be9190614cb7565b5f6110be846040518060600160405280602061ffff168152602001865f016020810190612de59190614e85565b60ff168152602090810190612e009060408901908901614853565b6001600160401b031690526040805180820190915233815262ffffff861660208201526114eb565b80600180612e3583612197565b6006811115612e4657612e466140bd565b14612ed157604051638f191e5f60e01b8152612ecc9073__$713c4f4487e8756194dbc5b3b091cd4345$__90638f191e5f90612e869085906004016140e1565b5f60405180830381865af4158015612ea0573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612ec79190810190614f76565b613849565b505050565b5f612edb84613541565b90505f346009830154612efe9190600160781b90046001600160481b0316614cb7565b6009830180546001600160481b038316600160781b0268ffffffffffffffffff60781b19909116179055604080516001600160401b03881681523360208201523a818301526060810183905290519192507f66f95ec285ca572fa1cac40e7019e14ab45a8fc619c6405222e8af55534c2f67919081900360800190a15050505050565b612f896133fe565b600180546001600160a01b0383166001600160a01b03199091168117909155612fb95f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6130376040518060a001604052805f6001600160a01b031681526020015f6001600160401b031681526020015f63ffffffff1681526020015f8152602001606081525090565b5f8281525f516020615b505f395f51905f526020526040902060018101805461ffff919061306490614d43565b905011156130a85750506040805160a0810182525f808252602080830182905282840182905260608301829052835191825281019092526080810191909152919050565b60038101541561319d576040805160a08101825260048301546001600160a01b038116825263ffffffff600160a01b82048116602080850191909152600160c01b90920490911c16918101919091526005820154606082015260068201805460808301919061311690614d43565b80601f016020809104026020016040519081016040528092919081815260200182805461314290614d43565b801561318d5780601f106131645761010080835404028352916020019161318d565b820191905f5260205f20905b81548152906001019060200180831161317057829003601f168201915b5050505050815250915050919050565b6040805160a08101825260048301546001600160a01b038116825260098401546001600160401b03600160c01b9182900416602084015263ffffffff910416918101919091526005820154606082015260068201805460808301919061311690614d43565b5f8061322f7f00000000000000000000000000000000000000000000000000000000000000006003614de8565b613259907f0000000000000000000000000000000000000000000000000000000000000000614cb7565b9050808362ffffff16108061329b57508061329962ffffff85167f0000000000000000000000000000000000000000000000000000000000000000614cb7565b105b156132b2576132aa8185614de8565b915050610e7b565b6132e162ffffff84167f0000000000000000000000000000000000000000000000000000000000000000614cb7565b6132aa9085614de8565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166349948e0e613324846138ee565b604051602001613334919061587f565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161335f9190613e4e565b602060405180830381865afa15801561337a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7b91906157e7565b816133ac576133ac81613849565b5050565b5f6133f286868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506135ef92505050565b90506113de338261372d565b5f546001600160a01b031633146121e25760405163118cdaa760e01b815233600482015260240161042e565b5f6134567f00000000000000000000000000000000000000000000000000000000000000006004614de8565b613480907f0000000000000000000000000000000000000000000000000000000000000000614cb7565b610e7b9083614de8565b5f5f826020015161ffff161180156134ab5750607f826020015161ffff1611155b8015610e7b575050604001516001600160401b0316151590565b5f6134d386868686866139a6565b90507ffb94adf28ab7e538d2691d90927f622cbc1100eae6afec58052efdee6c98a61681346040518060400160405280866020015160ff16815260200186604001516001600160401b0316815250604051613530939291906158f1565b60405180910390a195945050505050565b5f9081525f516020615b505f395f51905f526020526040902090565b600180546001600160a01b03191690556122c281613b11565b73__$713c4f4487e8756194dbc5b3b091cd4345$__634c9f72e3828060200190518101906135a49190615920565b6040518263ffffffff1660e01b81526004016135c091906159bb565b5f6040518083038186803b1580156135d6575f5ffd5b505af41580156135e8573d5f5f3e3d5ffd5b5050505050565b5f6136ab6001604051631bc1eaf360e21b81526004810188905273__$713c4f4487e8756194dbc5b3b091cd4345$__90636f07abcc90602401602060405180830381865af4158015613643573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136679190614d81565b6006811115613678576136786140bd565b14604051806040016040528060148152602001736e6f7420696e20506f737465642073746174757360601b81525061339e565b604051637102a0df60e11b815273__$713c4f4487e8756194dbc5b3b091cd4345$__9063e20541be906136ee9033903a9043908b908b908b908b906004016159fb565b602060405180830381865af4158015613709573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113de91906157e7565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015612ecc573d5f5f3e3d5ffd5b60605f61376c83613b60565b6001600160401b03811115613783576137836140f4565b6040519080825280601f01601f1916602001820160405280156137ad576020820181803683370190505b5090505f5b8151811015611fa2578381602081106137cd576137cd614ca3565b1a60f81b8282815181106137e3576137e3614ca3565b60200101906001600160f81b03191690815f1a9053506001016137b2565b604080516001600160a01b038316602082015246918101919091525f906060015b604051602081830303815290604052805190602001209050919050565b5f610ea0836114cd565b613851612bcd565b81604051602001610408929190614fba565b6121e2612ec7613b98565b5f6020825f015161ffff1611613884575f6138d6565b8151602090613894908290615a4b565b61389e9190615a65565b61ffff166138cc7f000000000000000000000000000000000000000000000000000000000000000086614de8565b6138d69190614de8565b6040830151612dae906001600160401b031685614de8565b60605f602061ffff84160461ffff166001600160401b03811115613914576139146140f4565b60405190808252806020026020018201604052801561393d578160200160208202803683370190505b5090505f5b8151811015613972575f1982828151811061395f5761395f614ca3565b6020908102919091010152600101613942565b5060405161398f9082905f196001601f88161b0190602001615a88565b604051602081830303815290604052915050919050565b5f5f516020615b305f395f51905f5280545f906139cb906001600160401b0316615ac2565b91906101000a8154816001600160401b0302191690836001600160401b0316021790556001600160401b031690505f613a0382613541565b6009810180546001600160c01b0316600160c01b436001600160401b0316021790559050613a3a8285613a3586613be7565b613c3a565b60098201805460889290921c6001600160c01b031990921691909117600160781b6001600160481b0388160217905580546001600160a01b0319166001600160a01b0388161781556002810184905562ffffff861615613aaf57805462ffffff60a01b1916600160a01b62ffffff8816021781555b82516008909101805460208501516040909501516001600160401b0316640100000000026bffffffffffffffff000000001961ffff968716620100000263ffffffff199093169690941695909517179190911692909217909155949350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5b6020811015611e1657818160208110613b7d57613b7d614ca3565b1a60f81b6001600160f81b03191615611e1657600101613b62565b60606040518060400160405260108152806020016f2bb4ba27b930b1b632a230ba30a634b160811b815250604051602001613bd39190615aec565b604051602081830303815290604052905090565b5f815f0151826020015183604001516040516020016138229392919060f093841b6001600160f01b031990811682529290931b909116600283015260c01b6001600160c01b0319166004820152600c0190565b5f613c4430613801565b613c4f600143615b1c565b604080516001600160e01b031990931660208401529040908201526001600160401b03851660608201526080810184905260a0810183905260c0016040516020818303038152906040528051906020012090509392505050565b905290565b6040805160c08101909152805f81526020015f81526020015f81526020015f81526020015f6001600160401b03168152602001613ca9604080516101008101909152606060c082019081525f60e0830152819081525f6020820181905260408201819052606082018190526080820181905260a09091015290565b6040518060400160405280613d776040805160c0810182525f80825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b81526040805160a0810182525f80825260208281018290529282018190526060808301919091526080820152910190613ca9565b5f81518060208401855e5f93019283525090919050565b7f5769746e657455706772616461626c65426173653a206e6f7420696d706c656d8152680cadce8cac8744060f60bb1b60208201525f6113db613e1a613e14613e0e602986018a613dab565b88613dab565b86613dab565b84613dab565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610ea06020830184613e20565b6001600160a01b03811681146122c2575f5ffd5b5f60208284031215613e84575f5ffd5b8135610ea081613e60565b62ffffff811681146122c2575f5ffd5b5f5f60408385031215613eb0575f5ffd5b823591506020830135613ec281613e8f565b809150509250929050565b5f5f83601f840112613edd575f5ffd5b5081356001600160401b03811115613ef3575f5ffd5b6020830191508360208260051b8501011115613f0d575f5ffd5b9250929050565b5f5f60208385031215613f25575f5ffd5b82356001600160401b03811115613f3a575f5ffd5b613f4685828601613ecd565b90969095509350505050565b5f60208284031215613f62575f5ffd5b5035919050565b60018060a01b03815116825262ffffff60208201511660208301526001600160481b0360408201511660408301525f606082015160e06060850152613fb160e0850182613e20565b90506080830151608085015260a0830151613fe560a0860182805160ff1682526020908101516001600160401b0316910152565b509392505050565b602081525f610ea06020830184613f69565b6001600160401b03811681146122c2575f5ffd5b5f5f83601f840112614023575f5ffd5b5081356001600160401b03811115614039575f5ffd5b602083019150836020828501011115613f0d575f5ffd5b5f5f5f5f5f60808688031215614064575f5ffd5b853561406f81613fff565b9450602086013561407f81613fff565b93506040860135925060608601356001600160401b038111156140a0575f5ffd5b6140ac88828901614013565b969995985093965092949392505050565b634e487b7160e01b5f52602160045260245ffd5b600781106122c2576122c26140bd565b602081016140ee836140d1565b91905290565b634e487b7160e01b5f52604160045260245ffd5b606081018181106001600160401b0382111715614127576141276140f4565b60405250565b604081018181106001600160401b0382111715614127576141276140f4565b608081018181106001600160401b0382111715614127576141276140f4565b60c081018181106001600160401b0382111715614127576141276140f4565b601f8201601f191681016001600160401b03811182821017156141af576141af6140f4565b6040525050565b6040516141c460c08261418a565b90565b61ffff811681146122c2575f5ffd5b5f606082840312156141e6575f5ffd5b6040516141f281614108565b8091508235614200816141c7565b81526020830135614210816141c7565b6020820152604083013561422381613fff565b6040919091015292915050565b5f5f5f83850360c0811215614243575f5ffd5b8435935061425486602087016141d6565b92506040607f1982011215614267575f5ffd5b506040516142748161412d565b608085013561428281613e60565b815260a085013561429281613e8f565b602082015292959194509192509050565b5f60408284031215611334575f5ffd5b5f5f606083850312156142c4575f5ffd5b823591506142d584602085016142a3565b90509250929050565b5f6001600160401b038211156142f6576142f66140f4565b50601f01601f191660200190565b5f82601f830112614313575f5ffd5b813561431e816142de565b60405161432b828261418a565b82815285602084870101111561433f575f5ffd5b826020860160208301375f92810160200192909252509392505050565b5f6020828403121561436c575f5ffd5b81356001600160401b03811115614381575f5ffd5b6110be84828501614304565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156143e457603f198786030184526143cf858351613e20565b945060209384019391909101906001016143b3565b50929695505050505050565b6101008110614401576144016140bd565b9052565b60208101610e7b82846143f0565b5f6001600160401b0382111561442b5761442b6140f4565b5060051b60200190565b5f60208284031215614445575f5ffd5b81356001600160401b0381111561445a575f5ffd5b8201601f8101841361446a575f5ffd5b803561447581614413565b604051614482828261418a565b80915082815260208101915060208360051b8501019250868311156144a5575f5ffd5b602084015b838110156145515780356001600160401b038111156144c7575f5ffd5b85016080818a03601f190112156144dc575f5ffd5b6040516144e88161414c565b60208201356144f681613fff565b8152604082013561450681613fff565b60208201526060820135604082015260808201356001600160401b0381111561452d575f5ffd5b61453c8b602083860101614304565b606083015250845250602092830192016144aa565b509695505050505050565b5f6020828403121561456c575f5ffd5b81356001600160401b03811115614581575f5ffd5b8201601f81018413614591575f5ffd5b803561459c81614413565b6040516145a9828261418a565b80915082815260208101915060208360051b8501019250868311156145cc575f5ffd5b6020840193505b828410156145f75783356145e681613fff565b8252602093840193909101906145d3565b9695505050505050565b602080825282518282018190525f918401906040840190835b8181101561464157835161462d816140d1565b83526020938401939092019160010161461a565b509095945050505050565b6020815261465e6020820183516143f0565b5f602083015160148110614674576146746140bd565b8060408401525060408301516060830152606083015160808301526001600160401b0360808401511660a083015260a083015160c080840152805160c060e0850152805160406101a08601526146ce6101e0860182613e20565b6020928301516101c08701529183015160ff16610100860152506040820151906146fe61012086018360ff169052565b606083015160ff1661014086015260808301516001600160401b0380821661016088015260a09094015193841661018087015291506113de565b5f5f5f5f6060858703121561474b575f5ffd5b843593506020850135925060408501356001600160401b0381111561476e575f5ffd5b61477a87828801614013565b95989497509550505050565b5f5f5f60408486031215614798575f5ffd5b83356001600160401b038111156147ad575f5ffd5b840160e081870312156147be575f5ffd5b925060208401356001600160401b038111156147d8575f5ffd5b6147e486828701614013565b9497909650939450505050565b5f5f5f5f60608587031215614804575f5ffd5b843561480f81613fff565b93506020850135925060408501356001600160401b0381111561476e575f5ffd5b5f5f60408385031215614841575f5ffd5b823591506020830135613ec2816141c7565b5f60208284031215614863575f5ffd5b8135610ea081613fff565b60018060a01b03815116825262ffffff60208201511660208301525f6040820151608060408501526148a36080850182613e20565b606093840151949093019390935250919050565b60018060a01b0381511682526001600160401b036020820151166020830152604081015160408301525f606082015160a060608501526148fa60a0850182613e20565b6080938401516001600160a01b0316949093019390935250919050565b602081525f8251610100602084015261493461012084018261486e565b90506020840151601f1984830301604085015261495182826148b7565b915050604084015161498e606085018261ffff815116825261ffff60208201511660208301526001600160401b0360408201511660408301525050565b5060608401516001600160881b03191660c084015260808401516001600160481b031660e084015260a0909301516001600160401b0316610100909201919091525090565b5f5f5f5f5f5f608087890312156149e8575f5ffd5b86356001600160401b038111156149fd575f5ffd5b614a0989828a01613ecd565b90975095505060208701356001600160401b03811115614a27575f5ffd5b614a3389828a01614013565b979a9699509760408101359660609091013595509350505050565b5f5f60408385031215614a5f575f5ffd5b50508035926020909101359150565b5f5f60808385031215614a7f575f5ffd5b823591506142d584602085016141d6565b602081525f610ea0602083018461486e565b6020815260ff82511660208201525f60208301516040808401526110be6060840182613e20565b60018060a01b0381511682526001600160401b03602082015116602083015263ffffffff6040820151166040830152606081015160608301525f608082015160a060808501526110be60a0850182613e20565b602081525f825160406020840152614b376060840182613f69565b90506020840151601f198483030160408501526113de8282614ac9565b803563ffffffff81168114611e16575f5ffd5b5f5f5f5f5f60808688031215614b7b575f5ffd5b8535945061407f60208701614b54565b602081525f610ea060208301846148b7565b5f5f5f60a08486031215614baf575f5ffd5b8335925060208401359150614bc785604086016141d6565b90509250925092565b5f5f5f60808486031215614be2575f5ffd5b83359250614bf385602086016142a3565b91506060840135614c0381613e8f565b809150509250925092565b602081525f610ea06020830184614ac9565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60ff831680614c5a57614c5a614c20565b8060ff84160491505092915050565b60ff8181168382160190811115610e7b57610e7b614c34565b5f60ff831680614c9457614c94614c20565b8060ff84160691505092915050565b634e487b7160e01b5f52603260045260245ffd5b80820180821115610e7b57610e7b614c34565b5f8235607e19833603018112614cde575f5ffd5b9190910192915050565b5f60208284031215614cf8575f5ffd5b610ea082614b54565b5f5f8335601e19843603018112614d16575f5ffd5b8301803591506001600160401b03821115614d2f575f5ffd5b602001915036819003821315613f0d575f5ffd5b600181811c90821680614d5757607f821691505b60208210810361133457634e487b7160e01b5f52602260045260245ffd5b600781106122c2575f5ffd5b5f60208284031215614d91575f5ffd5b8151610ea081614d75565b602080825281018290525f8360408301825b85811015614dde578235614dc181613e60565b6001600160a01b0316825260209283019290910190600101614dae565b5095945050505050565b8082028115828204841417610e7b57610e7b614c34565b5f60208284031215614e0f575f5ffd5b81518015158114610ea0575f5ffd5b858152602081018590526001600160401b03841660408201526060810183905260e081016145f7608083018461ffff815116825261ffff60208201511660208301526001600160401b0360408201511660408301525050565b60ff811681146122c2575f5ffd5b5f60208284031215614e95575f5ffd5b8135610ea081614e77565b5f614eaa836142de565b604051614eb7828261418a565b809250848152858585011115614ecb575f5ffd5b8484602083015e5f6020868301015250509392505050565b5f82601f830112614ef2575f5ffd5b610ea083835160208501614ea0565b5f5f60408385031215614f12575f5ffd5b8251614f1d81613e60565b60208401519092506001600160401b03811115614f38575f5ffd5b614f4485828601614ee3565b9150509250929050565b80516101008110611e16575f5ffd5b5f60208284031215614f6d575f5ffd5b610ea082614f4e565b5f60208284031215614f86575f5ffd5b81516001600160401b03811115614f9b575f5ffd5b8201601f81018413614fab575f5ffd5b6110be84825160208401614ea0565b5f614fc58285613dab565b6101d160f51b81526113de6002820185613dab565b6001600160401b0383168152604060208201525f6110be6040830184613e20565b5f6150068284613dab565b743a20696e76616c6964207265706f7274206461746160581b81526015019392505050565b6001600160a01b03831681526040602080830182905283519183018290525f91908401906060840190835b8181101561507d5783516001600160401b0316835260209384019390920191600101615056565b50909695505050505050565b5f60208284031215615099575f5ffd5b81516001600160401b038111156150ae575f5ffd5b8201601f810184136150be575f5ffd5b80516150c981614413565b6040516150d6828261418a565b80915082815260208101915060208360051b8501019250868311156150f9575f5ffd5b602084015b838110156145515780516001600160401b0381111561511b575f5ffd5b61512a89602083890101614ee3565b845250602092830192016150fe565b8051611e1681613fff565b8051611e1681614e77565b5f60c0828403121561515f575f5ffd5b60405161516b8161416b565b80915082516001600160401b03811115615183575f5ffd5b830160408186031215615194575f5ffd5b6040516151a08161412d565b81516001600160401b038111156151b5575f5ffd5b6151c187828501614ee3565b8252506020918201518282015282526151db908401615144565b60208201526151ec60408401615144565b60408201526151fd60608401615144565b606082015261520e60808401615139565b608082015261521f60a08401615139565b60a08201525092915050565b5f60c0828403121561523b575f5ffd5b6040516152478161416b565b80915061525383614f4e565b8152602083015160148110615266575f5ffd5b6020820152604083810151908201526060808401519082015261528b60808401615139565b608082015260a08301516001600160401b038111156152a8575f5ffd5b6152b48582860161514f565b60a0830152505092915050565b5f602082840312156152d1575f5ffd5b81516001600160401b038111156152e6575f5ffd5b6110be8482850161522b565b80356152fd816141c7565b61ffff1682526020810135615311816141c7565b61ffff166020830152604081013561532881613fff565b6001600160401b0381166040840152505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6040808252843582820152602085013560608301525f9061538b90608084019087016152f2565b60a085013561539981613fff565b6001600160401b031660e083015260c085013536869003601e190181126153be575f5ffd5b85016020810190356001600160401b038111156153d9575f5ffd5b8036038213156153e7575f5ffd5b60e06101008501526153fe6101208501828461533c565b91505082810360208401526145f781858761533c565b5f5f60408385031215615425575f5ffd5b825161543081613e60565b60208401519092506001600160401b0381111561544b575f5ffd5b614f448582860161522b565b6001600160a01b0388168152602081018790526040810186905261547e60608201866152f2565b6001600160401b03841660c082015261010060e08201525f6154a56101008301848661533c565b9998505050505050505050565b80516001600160481b0381168114611e16575f5ffd5b5f602082840312156154d8575f5ffd5b610ea0826154b2565b5f60033d11156141c45760045f5f3e505f5160e01c90565b5f60443d10156155065790565b6040513d600319016004823e80513d60248201116001600160401b038211171561552f57505090565b80820180516001600160401b0381111561554a575050505090565b3d8401600319018282016020011115615564575050505090565b613fe56020828501018561418a565b5f60808284031215615583575f5ffd5b60405161558f8161414c565b809150825161559d81613e60565b815260208301516155ad81613e8f565b602082015260408301516001600160401b038111156155ca575f5ffd5b6155d685828601614ee3565b604083015250606092830151920191909152919050565b5f60a082840312156155fd575f5ffd5b60405160a081018181106001600160401b038211171561561f5761561f6140f4565b8060405250809150825161563281613e60565b8152602083015161564281613fff565b60208201526040838101519082015260608301516001600160401b03811115615669575f5ffd5b61567585828601614ee3565b606083015250608083015161568981613e60565b6080919091015292915050565b5f606082840312156156a6575f5ffd5b6040516156b281614108565b80915082516156c0816141c7565b815260208301516156d0816141c7565b6020820152604083015161422381613fff565b80516001600160881b031981168114611e16575f5ffd5b5f6020828403121561570a575f5ffd5b81516001600160401b0381111561571f575f5ffd5b82016101008185031215615731575f5ffd5b6157396141b6565b81516001600160401b0381111561574e575f5ffd5b61575a86828501615573565b82525060208201516001600160401b03811115615775575f5ffd5b615781868285016155ed565b6020830152506157948560408401615696565b60408201526157a560a083016156e3565b60608201526157b660c083016154b2565b60808201526157c760e08301615139565b60a0820152949350505050565b602081525f6110be60208301848661533c565b5f602082840312156157f7575f5ffd5b5051919050565b5f6020828403121561580e575f5ffd5b81516001600160401b03811115615823575f5ffd5b6110be84828501615573565b6001600160401b038181168382160190811115610e7b57610e7b614c34565b5f6020828403121561585e575f5ffd5b81516001600160401b03811115615873575f5ffd5b6110be848285016155ed565b630375962160e11b8152600160e51b6020820152600160e01b604082015260ff600160e51b0160608201526001600160e01b031960808201525f1960a08201526001600160d41b031960c0820152600160df1b60e082015260ff60d81b6101008201525f610ea0610105830184613dab565b8381526020808201849052825160ff1660408301528201516001600160401b03166060820152608081016110be565b5f60208284031215615930575f5ffd5b81516001600160401b03811115615945575f5ffd5b8201601f81018413615955575f5ffd5b805161596081614413565b60405161596d828261418a565b80915082815260208101915060208360051b850101925086831115615990575f5ffd5b6020840193505b828410156145f75783516159aa81613e60565b825260209384019390910190615997565b602080825282518282018190525f918401906040840190835b818110156146415783516001600160a01b03168352602093840193909201916001016159d4565b60018060a01b03881681528660208201526001600160401b03861660408201528460608201526001600160401b03841660808201528260a082015260e060c08201525f6154a560e0830184613e20565b61ffff8281168282160390811115610e7b57610e7b614c34565b5f61ffff831680615a7857615a78614c20565b8061ffff84160491505092915050565b82515f90829060208601835b82811015615ab2578151845260209384019390910190600101615a94565b5050509283525050602001919050565b5f6001600160401b0382166001600160401b038103615ae357615ae3614c34565b60010192915050565b5f615af78284613dab565b741d103ab73430b7323632b21030b9b9b2b93a34b7b760591b81526015019392505050565b81810381811115610e7b57610e7b614c3456fef595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e183f595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e184a264697066735822122086324f744cc19cadc533953f362cab27d938081ad04cf9f1d1889fdf40b551c764736f6c634300081e0033",
  "deployedBytecode": "0x6080604052600436106103ac575f3560e01c806379ba5097116101e6578063adb7c3f71161010c578063d0a92a081161009f578063e900aa331161006e578063e900aa3314610ce3578063ec5946db14610cf6578063f2fde38b14610d09578063f61921b214610d28576103ac565b8063d0a92a0814610c41578063d5f3948814610c60578063e30c397814610c93578063e5a6b10f14610cb0576103ac565b8063bff852fa116100db578063bff852fa14610bb6578063c258134814610bca578063c805dd0f14610be9578063ca7da98b14610c15576103ac565b8063adb7c3f714610b33578063aeb2ffc114610b4c578063b207e73014610b78578063b783922b14610b97576103ac565b80638d3d8b3811610184578063a58f680311610153578063a58f680314610a95578063a667533f14610aa8578063a77fc1a414610ad4578063a9e954b914610b00576103ac565b80638d3d8b3814610a075780638da5cb5b14610a2657806393d5185c14610a425780639cc56e6714610a76576103ac565b80637bd88218116101c05780637bd882181461097e5780637c1fbda31461099d578063838d44e2146109bc5780638cfcdea2146109db576103ac565b806379ba50971461090a5780637b1039991461091e5780637bbdb96e14610951576103ac565b80634cddf615116102d657806359209b39116102695780636f07abcc116102385780636f07abcc146108565780636fdaab7e14610875578063715018a6146108d757806376d0e357146108eb576103ac565b806359209b39146107cd5780636280bce8146107f95780636b58960a146108185780636d0d6a7e14610837576103ac565b80635304bba2116102a55780635304bba21461073c5780635479d9401461075b57806354fd4d501461078d578063581f5094146107a1576103ac565b80634cddf615146106785780634e6c13a1146106a45780635001f3b5146106c357806352d1902d14610709576103ac565b806328a78d9b1161034e5780633fa595761161031d5780633fa59576146105c0578063439fab911461060e57806345ea6c171461062d5780634c9f72e314610659576103ac565b806328a78d9b1461055a57806339a8653e1461057b5780633b3195b71461059a5780633dc2b7a2146105ad576103ac565b806308b7e85e1161038a57806308b7e85e146104b75780630aa4112a146104e35780631aea970b1461050f578063234fe6e31461052e576103ac565b8063044ad7be1461043757806305e742ef1461046b57806306eb2c4214610498575b3480156103b7575f5ffd5b506103c55f3560f81c610d54565b6103d560ff5f3560f01c16610d54565b6103e560ff5f3560e81c16610d54565b6103f560ff5f3560e01c16610d54565b6040516020016104089493929190613dc2565b60408051601f198184030181529082905262461bcd60e51b825261042e91600401613e4e565b60405180910390fd5b348015610442575f5ffd5b50610456610451366004613e74565b610e40565b60405190151581526020015b60405180910390f35b348015610476575f5ffd5b5061048a610485366004613e9f565b610e81565b604051908152602001610462565b3480156104a3575f5ffd5b5061048a6104b2366004613f14565b610ea7565b3480156104c2575f5ffd5b506104d66104d1366004613f52565b6110c6565b6040516104629190613e4e565b3480156104ee575f5ffd5b506105026104fd366004613f52565b6110e6565b6040516104629190613fed565b34801561051a575f5ffd5b5061048a610529366004614050565b61133a565b348015610539575f5ffd5b5061054d610548366004613f52565b6113e7565b60405161046291906140e1565b348015610565575f5ffd5b50610579610574366004613f14565b61145c565b005b348015610586575f5ffd5b5061048a610595366004613f52565b6114cd565b61048a6105a8366004614230565b6114eb565b61048a6105bb3660046142b3565b6116d7565b3480156105cb575f5ffd5b506105df6105da366004613f52565b61172f565b604051610462949392919093845260208401929092526001600160401b03166040830152606082015260800190565b348015610619575f5ffd5b5061057961062836600461435c565b611780565b348015610638575f5ffd5b5061064c610647366004613f14565b6119b4565b604051610462919061438d565b348015610664575f5ffd5b50610579610673366004613f14565b611a5b565b348015610683575f5ffd5b50610697610692366004613f52565b611a9c565b6040516104629190614405565b3480156106af575f5ffd5b5061048a6106be366004614435565b611b10565b3480156106ce575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610462565b348015610714575f5ffd5b5061048a7f000000000000000000000000000000000000000000000000000000000000000081565b348015610747575f5ffd5b5061064c61075636600461455c565b611e1b565b348015610766575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610456565b348015610798575f5ffd5b506104d6611eb8565b3480156107ac575f5ffd5b506107c06107bb366004613f14565b611ee8565b6040516104629190614601565b3480156107d8575f5ffd5b506107ec6107e7366004613f52565b611fa9565b604051610462919061464c565b348015610804575f5ffd5b5061048a610813366004614738565b612025565b348015610823575f5ffd5b50610456610832366004613e74565b612048565b348015610842575f5ffd5b506107ec610851366004614786565b61209c565b348015610861575f5ffd5b5061054d610870366004613f52565b612197565b348015610880575f5ffd5b506108bf61088f366004613f52565b5f9081525f516020615b505f395f51905f526020526040902060090154600160781b90046001600160481b031690565b6040516001600160481b039091168152602001610462565b3480156108e2575f5ffd5b506105796121d1565b3480156108f6575f5ffd5b5061048a6109053660046147f1565b6121e4565b348015610915575f5ffd5b5061057961224b565b348015610929575f5ffd5b506106f17f000000000000000000000000000000000000000000000000000000000000000081565b34801561095c575f5ffd5b506109656122c5565b6040516001600160e01b03199091168152602001610462565b348015610989575f5ffd5b5061048a610998366004614830565b6122cf565b3480156109a8575f5ffd5b506108bf6109b7366004613f52565b6122e3565b3480156109c7575f5ffd5b506104d66109d6366004613f52565b6123d8565b3480156109e6575f5ffd5b506109fa6109f5366004614853565b61245a565b6040516104629190614917565b348015610a12575f5ffd5b506104d6610a21366004613f52565b61256c565b348015610a31575f5ffd5b505f546001600160a01b03166106f1565b348015610a4d575f5ffd5b50610a61610a5c3660046149d3565b612581565b60408051928352602083019190915201610462565b348015610a81575f5ffd5b5061048a610a90366004614a4e565b6127ce565b61048a610aa3366004614a6e565b612894565b348015610ab3575f5ffd5b50610ac7610ac2366004614853565b612953565b6040516104629190614a90565b348015610adf575f5ffd5b50610af3610aee366004613f52565b612a05565b6040516104629190614aa2565b348015610b0b575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f61048a565b348015610b3e575f5ffd5b506304722eaf60e31b610965565b348015610b57575f5ffd5b50610b6b610b66366004613f52565b612aed565b6040516104629190614b1c565b348015610b83575f5ffd5b5061048a610b92366004614b67565b612b1f565b348015610ba2575f5ffd5b506107ec610bb1366004614786565b612b49565b348015610bc1575f5ffd5b506104d6612bcd565b348015610bd5575f5ffd5b506104d6610be4366004613f52565b612bfd565b348015610bf4575f5ffd5b50610bfd612cce565b6040516001600160401b039091168152602001610462565b348015610c20575f5ffd5b50610c34610c2f366004614853565b612cf2565b6040516104629190614b8b565b348015610c4c575f5ffd5b5061048a610c5b366004614b9d565b612d97565b348015610c6b575f5ffd5b506106f17f000000000000000000000000000000000000000000000000000000000000000081565b348015610c9e575f5ffd5b506001546001600160a01b03166106f1565b348015610cbb575f5ffd5b506106f17f000000000000000000000000000000000000000000000000000000000000000081565b61048a610cf1366004614bd0565b612db8565b610579610d04366004613f52565b612e28565b348015610d14575f5ffd5b50610579610d23366004613e74565b612f81565b348015610d33575f5ffd5b50610d47610d42366004613f52565b612ff1565b6040516104629190614c0e565b6040805160028082528183019092526060915f91906020820181803683370190505090505f610d84601085614c48565b610d8f906030614c69565b90505f610d9d601086614c82565b610da8906030614c69565b905060398260ff161115610dc457610dc1600783614c69565b91505b60398160ff161115610dde57610ddb600782614c69565b90505b8160f81b835f81518110610df457610df4614ca3565b60200101906001600160f81b03191690815f1a9053508060f81b83600181518110610e2157610e21614ca3565b60200101906001600160f81b03191690815f1a90535091949350505050565b6001600160a01b0381165f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e185602052604081205460ff165b92915050565b5f610e8c8383613202565b610e9660206132eb565b610ea09190614cb7565b9392505050565b5f610f065f516020615b305f395f51905f525b335f908152600291909101602090815260409182902054825180840190935260158352743ab730baba3437b934bd32b2103932b837b93a32b960591b9183019190915260ff169061339e565b5f826001600160401b03811115610f1f57610f1f6140f4565b604051908082528060200260200182016040528015610f6e57816020015b604080516080810182525f80825260208083018290529282015260608082015282525f19909201910181610f3d5790505b5090505f5b838110156110b4576040518060800160405280868684818110610f9857610f98614ca3565b9050602002810190610faa9190614cca565b356001600160401b03168152602001868684818110610fcb57610fcb614ca3565b9050602002810190610fdd9190614cca565b610fee906040810190602001614ce8565b63ffffffff16815260200186868481811061100b5761100b614ca3565b905060200281019061101d9190614cca565b60400135815260200186868481811061103857611038614ca3565b905060200281019061104a9190614cca565b611058906060810190614d01565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505091525082518390839081106110a1576110a1614ca3565b6020908102919091010152600101610f73565b506110be81611b10565b949350505050565b60606110d1826122e3565b505060408051602081019091525f8152919050565b6111296040805160c0810182525f80825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b5f8281525f516020615b505f395f51905f526020526040902060018101805461ffff919061115690614d43565b905011156111b1576040805160c0810182525f8082526020808301829052828401829052835180820185528281526060840152600290940154608083015282518084019093528083529282019290925260a082015292915050565b6003810154156112da576040805160c08101825282546001600160a01b0381168252600160a01b810462ffffff166020830152600160b81b90046001600160481b03169181019190915260018201805460608301919061121090614d43565b80601f016020809104026020016040519081016040528092919081815260200182805461123c90614d43565b80156112875780601f1061125e57610100808354040283529160200191611287565b820191905f5260205f20905b81548152906001019060200180831161126a57829003601f168201915b5050509183525050600283015460208083019190915260408051808201825260089095015462010000810460ff16865264010000000090046001600160401b031691850191909152019190915292915050565b6040805160c08101825282546001600160a01b0381168252600160a01b900462ffffff1660208201526009830154600160781b90046001600160481b03169181019190915260018201805460608301919061121090614d43565b50919050565b5f6113515f516020615b305f395f51905f52610eba565b61138b6001600160401b03861615156040518060400160405280600d81526020016c06261642074696d657374616d7609c1b81525061339e565b604080518082019091526016815275726573756c742063616e6e6f7420626520656d70747960501b60208201526113c5908315159061339e565b6113db866001600160401b0316868686866133b0565b90505b95945050505050565b60405163234fe6e360e01b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__9063234fe6e3906024015b602060405180830381865af4158015611438573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7b9190614d81565b6114646133fe565b6040516328a78d9b60e01b815273__$713c4f4487e8756194dbc5b3b091cd4345$__906328a78d9b9061149d9085908590600401614d9c565b5f6040518083038186803b1580156114b3575f5ffd5b505af41580156114c5573d5f5f3e3d5ffd5b505050505050565b5f6114d78261342a565b6114e160206132eb565b610e7b9190614cb7565b5f346114fb3a8460200151610e81565b61153381831015604051806040016040528060138152602001721a5b9cdd59999a58da595b9d081c995dd85c99606a1b81525061339e565b61157161154182600a614de8565b8311156040518060400160405280600f81526020016e1d1bdbc81b5d58da081c995dd85c99608a1b81525061339e565b846115a761157e8261348a565b6040518060400160405280600b81526020016a696e76616c696420534c4160a81b81525061339e565b8461166d5f825f01516001600160a01b03163b11801561162b575081516040516323d0872b60e11b81523060048201526001600160a01b03909116906347a10e5690602401602060405180830381865afa158015611607573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061162b9190614dff565b801561163f57505f826020015162ffffff16115b6040518060400160405280601081526020016f696e76616c69642063616c6c6261636b60801b81525061339e565b855160208701516116819190348b8b6134c5565b9450336001600160a01b03167ffbe74eb38ea9de3d74d481a4f701ae121d794895c5797db8260d06d317901d263a34888c8c6040516116c4959493929190614e1e565b60405180910390a2505050509392505050565b5f610ea0836040518060600160405280602061ffff168152602001855f0160208101906117049190614e85565b60ff16815260209081019061171f9060408801908801614853565b6001600160401b03169052612894565b5f5f5f5f5f61173d86613541565b600981015460058201546004909201546001600160881b0319608883901b16999298506001600160401b03600160c01b9182900481169850910416945092505050565b5f546001600160a01b0316806117b657818060200190518101906117a49190614f01565b925090506117b18161355d565b6117fe565b336001600160a01b038216146117fe5760405162461bcd60e51b815260206004820152600d60248201526c3737ba103a34329037bbb732b960991b604482015260640161042e565b61180782613576565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe541580159061187857507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe547f00000000000000000000000000000000000000000000000000000000000000003f145b156118c55760405162461bcd60e51b815260206004820152601c60248201527f616c726561647920696e697469616c697a656420636f64656861736800000000604482015260640161042e565b7f00000000000000000000000000000000000000000000000000000000000000003f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc600201557f00000000000000000000000000000000000000000000000000000000000000003f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119695f546001600160a01b031690565b6001600160a01b03167fe73e754121f0bad1327816970101955bfffdf53d270ac509d777c25be070d7f661199b611eb8565b6040516119a89190613e4e565b60405180910390a45050565b60605f826001600160401b038111156119cf576119cf6140f4565b6040519080825280602002602001820160405280156119f8578160200160208202803683370190505b5090505f5b8151811015611a5157848482818110611a1857611a18614ca3565b90506020020135828281518110611a3157611a31614ca3565b6001600160401b03909216602092830291909101909101526001016119fd565b506110be81611e1b565b611a636133fe565b604051634c9f72e360e01b815273__$713c4f4487e8756194dbc5b3b091cd4345$__90634c9f72e39061149d9085908590600401614d9c565b604051634cddf61560e01b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__90634cddf61590602401602060405180830381865af4158015611aec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7b9190614f5d565b5f611b275f516020615b305f395f51905f52610eba565b5f5b8251811015611e05575f838281518110611b4557611b45614ca3565b6020908102919091010151516001600160401b031690506001611b6782612197565b6006811115611b7857611b786140bd565b14611c75577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848381518110611bb057611bb0614ca3565b60200260200101515f0151611bc3612bcd565b604051638f191e5f60e01b815273__$713c4f4487e8756194dbc5b3b091cd4345$__90638f191e5f90611bfb906001906004016140e1565b5f60405180830381865af4158015611c15573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c3c9190810190614f76565b604051602001611c4d929190614fba565b60408051601f1981840301815290829052611c689291614fda565b60405180910390a1611dfc565b426001600160401b0316848381518110611c9157611c91614ca3565b6020026020010151602001516001600160401b03161180611ce45750611ce4848381518110611cc257611cc2614ca3565b6020026020010151602001516001600160401b03166001600160401b03161590565b80611d0c5750838281518110611cfc57611cfc614ca3565b602002602001015160600151515f145b15611d67577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848381518110611d4457611d44614ca3565b60200260200101515f0151611d57612bcd565b604051602001611c4d9190614ffb565b611def848381518110611d7c57611d7c614ca3565b60200260200101515f01516001600160401b0316858481518110611da257611da2614ca3565b602002602001015160200151868581518110611dc057611dc0614ca3565b602002602001015160400151878681518110611dde57611dde614ca3565b6020026020010151606001516135ef565b611df99084614cb7565b92505b50600101611b29565b508015611e1657611e16338261372d565b919050565b604051633ab5a66d60e11b815260609073__$713c4f4487e8756194dbc5b3b091cd4345$__9063756b4cda90611e77907f000000000000000000000000000000000000000000000000000000000000000090869060040161502b565b5f60405180830381865af4158015611e91573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b9190810190615089565b6060611ee37f0000000000000000000000000000000000000000000000000000000000000000613760565b905090565b6060816001600160401b03811115611f0257611f026140f4565b604051908082528060200260200182016040528015611f2b578160200160208202803683370190505b5090505f5b82811015611fa257611f59848483818110611f4d57611f4d614ca3565b90506020020135612197565b828281518110611f6b57611f6b614ca3565b60200260200101906006811115611f8457611f846140bd565b90816006811115611f9757611f976140bd565b905250600101611f30565b5092915050565b611fb1613cae565b6040516359209b3960e01b81526004810183905273__$713c4f4487e8756194dbc5b3b091cd4345$__906359209b39906024015f60405180830381865af4158015611ffe573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b91908101906152c1565b5f61203c5f516020615b305f395f51905f52610eba565b6113de858585856121e4565b5f7f00000000000000000000000000000000000000000000000000000000000000008015610e7b5750816001600160a01b031661208c5f546001600160a01b031690565b6001600160a01b03161492915050565b6120a4613cae565b5f5f73__$713c4f4487e8756194dbc5b3b091cd4345$__631600b78b8787876040518463ffffffff1660e01b81526004016120e193929190615364565b5f60405180830381865af41580156120fb573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121229190810190615414565b909250905033327f7a9001dc4425127400f09e4c0b02908ad0e1f642ee9c92932a222c686674648284893560208b013560408c0161216660c08e0160a08f01614853565b61217360c08f018f614d01565b6040516121869796959493929190615457565b60405180910390a395945050505050565b604051631bc1eaf360e21b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__90636f07abcc9060240161141d565b6121d96133fe565b6121e25f61355d565b565b5f6121fb5f516020615b305f395f51905f52610eba565b604080518082019091526016815275726573756c742063616e6e6f7420626520656d70747960501b6020820152612235908315159061339e565b6113de856001600160401b0316428686866133b0565b60015433906001600160a01b031681146122b95760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161042e565b6122c28161355d565b50565b5f611ee330613801565b5f6122da838361383f565b610e96836132eb565b604051637c1fbda360e01b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__90637c1fbda390602401602060405180830381865af4925050508015612351575060408051601f3d908101601f1916820190925261234e918101906154c8565b60015b6123be5761235d6154e1565b806308c379a00361238557506123716154f9565b8061237c5750612387565b61133481613849565b505b3d8080156123b0576040519150601f19603f3d011682016040523d82523d5f602084013e6123b5565b606091505b50611334613863565b6001600160481b0381168015611fa257611fa2338261372d565b606073__$713c4f4487e8756194dbc5b3b091cd4345$__634cbc7ff86123fd84612197565b6040518263ffffffff1660e01b815260040161241991906140e1565b5f60405180830381865af4158015612433573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b9190810190614f76565b6124f06040805161014081019091525f60c0820181815260e083018290526060610100840152610120830191909152819081526040805160a0810182525f808252602082810182905292820181905260608083015260808201529101908152604080516060810182525f80825260208281018290529282015291019081525f602082018190526040820181905260609091015290565b60405163467e6f5160e11b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__90638cfcdea2906024015f60405180830381865af4158015612545573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b91908101906156fa565b606061257782612cf2565b6060015192915050565b5f80805b87811015612729575f8989838181106125a0576125a0614ca3565b60200291909101359150600190506125b782612197565b60068111156125c8576125c86140bd565b03612720575f6125d782613541565b8054909150600160a01b900462ffffff161561266757604080516060810182525f8152600883015461ffff62010000820416602083015264010000000090046001600160401b031691810191909152612633908890889061386e565b815461264c908990600160a01b900462ffffff16613202565b6126569190614cb7565b6126609085614cb7565b93506126cf565b60408051606081018252600883015461ffff808216835262010000820416602083015264010000000090046001600160401b0316918101919091526126af908890889061386e565b6126b88861342a565b6126c29190614cb7565b6126cc9085614cb7565b93505b60088101546126f090879064010000000090046001600160401b0316614de8565b6126fa9085614cb7565b600982015490945061271c90600160781b90046001600160481b031686614cb7565b9450505b50600101612585565b506040516324ca470760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906349948e0e9061277890899089906004016157d4565b602060405180830381865afa158015612793573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127b791906157e7565b6127c19082614cb7565b9050965096945050505050565b604051631a3b01e960e21b8152600481018290525f9061288b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906368ec07a490602401602060405180830381865afa158015612837573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061285b9190614dff565b604051806040016040528060128152602001710eadcd6dcdeeedc40e4c2c8dedc40d0c2e6d60731b81525061339e565b610ea0836114cd565b5f3461289f3a6114cd565b6128d781831015604051806040016040528060138152602001721a5b9cdd59999a58da595b9d081c995dd85c99606a1b81525061339e565b6128e561154182600a614de8565b836128f261157e8261348a565b6128ff335f3489896134c5565b9350336001600160a01b03167ffbe74eb38ea9de3d74d481a4f701ae121d794895c5797db8260d06d317901d263a34878a8a604051612942959493929190614e1e565b60405180910390a250505092915050565b61298960405180608001604052805f6001600160a01b031681526020015f62ffffff168152602001606081526020015f81525090565b60405163a667533f60e01b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__9063a667533f906024015f60405180830381865af41580156129de573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b91908101906157fe565b604080518082019091525f8152606060208201525f612a2383611fa9565b90506040518060400160405280825f015160ff811115612a4557612a456140bd565b60ff16815260200173__$39c1c75f9ff01712a7ae2d1d1d8c462aa1$__6371aad10d84604051602001612a78919061464c565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401612aa39190613e4e565b5f60405180830381865af4158015612abd573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612ae49190810190614f76565b90529392505050565b612af5613d29565b6040518060400160405280612b09846110e6565b8152602001612b1784612ff1565b905292915050565b5f612b365f516020615b305f395f51905f52610eba565b6113db868663ffffffff1686868661133a565b612b51613cae565b604051631600b78b60e01b815273__$713c4f4487e8756194dbc5b3b091cd4345$__90631600b78b90612b8c90879087908790600401615364565b5f60405180830381865af4158015612ba6573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113de9190810190615414565b6040805180820190915260168152752bb4ba27b930b1b632aa393ab9ba30b13632a7bb369960511b602082015290565b606073__$39c1c75f9ff01712a7ae2d1d1d8c462aa1$__6371aad10d73__$713c4f4487e8756194dbc5b3b091cd4345$__6359209b39856040518263ffffffff1660e01b8152600401612c5291815260200190565b5f60405180830381865af4158015612c6c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612c9391908101906152c1565b604051602001612ca3919061464c565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016124199190613e4e565b5f5f516020615b305f395f51905f5254611ee3906001600160401b0316600161582f565b6040805160a0810182525f80825260208201819052918101829052606080820152608081019190915260405163ca7da98b60e01b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__9063ca7da98b906024015f60405180830381865af4158015612d70573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b919081019061584e565b5f612da384848461386e565b8251612dae906132eb565b6110be9190614cb7565b5f6110be846040518060600160405280602061ffff168152602001865f016020810190612de59190614e85565b60ff168152602090810190612e009060408901908901614853565b6001600160401b031690526040805180820190915233815262ffffff861660208201526114eb565b80600180612e3583612197565b6006811115612e4657612e466140bd565b14612ed157604051638f191e5f60e01b8152612ecc9073__$713c4f4487e8756194dbc5b3b091cd4345$__90638f191e5f90612e869085906004016140e1565b5f60405180830381865af4158015612ea0573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612ec79190810190614f76565b613849565b505050565b5f612edb84613541565b90505f346009830154612efe9190600160781b90046001600160481b0316614cb7565b6009830180546001600160481b038316600160781b0268ffffffffffffffffff60781b19909116179055604080516001600160401b03881681523360208201523a818301526060810183905290519192507f66f95ec285ca572fa1cac40e7019e14ab45a8fc619c6405222e8af55534c2f67919081900360800190a15050505050565b612f896133fe565b600180546001600160a01b0383166001600160a01b03199091168117909155612fb95f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6130376040518060a001604052805f6001600160a01b031681526020015f6001600160401b031681526020015f63ffffffff1681526020015f8152602001606081525090565b5f8281525f516020615b505f395f51905f526020526040902060018101805461ffff919061306490614d43565b905011156130a85750506040805160a0810182525f808252602080830182905282840182905260608301829052835191825281019092526080810191909152919050565b60038101541561319d576040805160a08101825260048301546001600160a01b038116825263ffffffff600160a01b82048116602080850191909152600160c01b90920490911c16918101919091526005820154606082015260068201805460808301919061311690614d43565b80601f016020809104026020016040519081016040528092919081815260200182805461314290614d43565b801561318d5780601f106131645761010080835404028352916020019161318d565b820191905f5260205f20905b81548152906001019060200180831161317057829003601f168201915b5050505050815250915050919050565b6040805160a08101825260048301546001600160a01b038116825260098401546001600160401b03600160c01b9182900416602084015263ffffffff910416918101919091526005820154606082015260068201805460808301919061311690614d43565b5f8061322f7f00000000000000000000000000000000000000000000000000000000000000006003614de8565b613259907f0000000000000000000000000000000000000000000000000000000000000000614cb7565b9050808362ffffff16108061329b57508061329962ffffff85167f0000000000000000000000000000000000000000000000000000000000000000614cb7565b105b156132b2576132aa8185614de8565b915050610e7b565b6132e162ffffff84167f0000000000000000000000000000000000000000000000000000000000000000614cb7565b6132aa9085614de8565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166349948e0e613324846138ee565b604051602001613334919061587f565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161335f9190613e4e565b602060405180830381865afa15801561337a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7b91906157e7565b816133ac576133ac81613849565b5050565b5f6133f286868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506135ef92505050565b90506113de338261372d565b5f546001600160a01b031633146121e25760405163118cdaa760e01b815233600482015260240161042e565b5f6134567f00000000000000000000000000000000000000000000000000000000000000006004614de8565b613480907f0000000000000000000000000000000000000000000000000000000000000000614cb7565b610e7b9083614de8565b5f5f826020015161ffff161180156134ab5750607f826020015161ffff1611155b8015610e7b575050604001516001600160401b0316151590565b5f6134d386868686866139a6565b90507ffb94adf28ab7e538d2691d90927f622cbc1100eae6afec58052efdee6c98a61681346040518060400160405280866020015160ff16815260200186604001516001600160401b0316815250604051613530939291906158f1565b60405180910390a195945050505050565b5f9081525f516020615b505f395f51905f526020526040902090565b600180546001600160a01b03191690556122c281613b11565b73__$713c4f4487e8756194dbc5b3b091cd4345$__634c9f72e3828060200190518101906135a49190615920565b6040518263ffffffff1660e01b81526004016135c091906159bb565b5f6040518083038186803b1580156135d6575f5ffd5b505af41580156135e8573d5f5f3e3d5ffd5b5050505050565b5f6136ab6001604051631bc1eaf360e21b81526004810188905273__$713c4f4487e8756194dbc5b3b091cd4345$__90636f07abcc90602401602060405180830381865af4158015613643573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136679190614d81565b6006811115613678576136786140bd565b14604051806040016040528060148152602001736e6f7420696e20506f737465642073746174757360601b81525061339e565b604051637102a0df60e11b815273__$713c4f4487e8756194dbc5b3b091cd4345$__9063e20541be906136ee9033903a9043908b908b908b908b906004016159fb565b602060405180830381865af4158015613709573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113de91906157e7565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015612ecc573d5f5f3e3d5ffd5b60605f61376c83613b60565b6001600160401b03811115613783576137836140f4565b6040519080825280601f01601f1916602001820160405280156137ad576020820181803683370190505b5090505f5b8151811015611fa2578381602081106137cd576137cd614ca3565b1a60f81b8282815181106137e3576137e3614ca3565b60200101906001600160f81b03191690815f1a9053506001016137b2565b604080516001600160a01b038316602082015246918101919091525f906060015b604051602081830303815290604052805190602001209050919050565b5f610ea0836114cd565b613851612bcd565b81604051602001610408929190614fba565b6121e2612ec7613b98565b5f6020825f015161ffff1611613884575f6138d6565b8151602090613894908290615a4b565b61389e9190615a65565b61ffff166138cc7f000000000000000000000000000000000000000000000000000000000000000086614de8565b6138d69190614de8565b6040830151612dae906001600160401b031685614de8565b60605f602061ffff84160461ffff166001600160401b03811115613914576139146140f4565b60405190808252806020026020018201604052801561393d578160200160208202803683370190505b5090505f5b8151811015613972575f1982828151811061395f5761395f614ca3565b6020908102919091010152600101613942565b5060405161398f9082905f196001601f88161b0190602001615a88565b604051602081830303815290604052915050919050565b5f5f516020615b305f395f51905f5280545f906139cb906001600160401b0316615ac2565b91906101000a8154816001600160401b0302191690836001600160401b0316021790556001600160401b031690505f613a0382613541565b6009810180546001600160c01b0316600160c01b436001600160401b0316021790559050613a3a8285613a3586613be7565b613c3a565b60098201805460889290921c6001600160c01b031990921691909117600160781b6001600160481b0388160217905580546001600160a01b0319166001600160a01b0388161781556002810184905562ffffff861615613aaf57805462ffffff60a01b1916600160a01b62ffffff8816021781555b82516008909101805460208501516040909501516001600160401b0316640100000000026bffffffffffffffff000000001961ffff968716620100000263ffffffff199093169690941695909517179190911692909217909155949350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5b6020811015611e1657818160208110613b7d57613b7d614ca3565b1a60f81b6001600160f81b03191615611e1657600101613b62565b60606040518060400160405260108152806020016f2bb4ba27b930b1b632a230ba30a634b160811b815250604051602001613bd39190615aec565b604051602081830303815290604052905090565b5f815f0151826020015183604001516040516020016138229392919060f093841b6001600160f01b031990811682529290931b909116600283015260c01b6001600160c01b0319166004820152600c0190565b5f613c4430613801565b613c4f600143615b1c565b604080516001600160e01b031990931660208401529040908201526001600160401b03851660608201526080810184905260a0810183905260c0016040516020818303038152906040528051906020012090509392505050565b905290565b6040805160c08101909152805f81526020015f81526020015f81526020015f81526020015f6001600160401b03168152602001613ca9604080516101008101909152606060c082019081525f60e0830152819081525f6020820181905260408201819052606082018190526080820181905260a09091015290565b6040518060400160405280613d776040805160c0810182525f80825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b81526040805160a0810182525f80825260208281018290529282018190526060808301919091526080820152910190613ca9565b5f81518060208401855e5f93019283525090919050565b7f5769746e657455706772616461626c65426173653a206e6f7420696d706c656d8152680cadce8cac8744060f60bb1b60208201525f6113db613e1a613e14613e0e602986018a613dab565b88613dab565b86613dab565b84613dab565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610ea06020830184613e20565b6001600160a01b03811681146122c2575f5ffd5b5f60208284031215613e84575f5ffd5b8135610ea081613e60565b62ffffff811681146122c2575f5ffd5b5f5f60408385031215613eb0575f5ffd5b823591506020830135613ec281613e8f565b809150509250929050565b5f5f83601f840112613edd575f5ffd5b5081356001600160401b03811115613ef3575f5ffd5b6020830191508360208260051b8501011115613f0d575f5ffd5b9250929050565b5f5f60208385031215613f25575f5ffd5b82356001600160401b03811115613f3a575f5ffd5b613f4685828601613ecd565b90969095509350505050565b5f60208284031215613f62575f5ffd5b5035919050565b60018060a01b03815116825262ffffff60208201511660208301526001600160481b0360408201511660408301525f606082015160e06060850152613fb160e0850182613e20565b90506080830151608085015260a0830151613fe560a0860182805160ff1682526020908101516001600160401b0316910152565b509392505050565b602081525f610ea06020830184613f69565b6001600160401b03811681146122c2575f5ffd5b5f5f83601f840112614023575f5ffd5b5081356001600160401b03811115614039575f5ffd5b602083019150836020828501011115613f0d575f5ffd5b5f5f5f5f5f60808688031215614064575f5ffd5b853561406f81613fff565b9450602086013561407f81613fff565b93506040860135925060608601356001600160401b038111156140a0575f5ffd5b6140ac88828901614013565b969995985093965092949392505050565b634e487b7160e01b5f52602160045260245ffd5b600781106122c2576122c26140bd565b602081016140ee836140d1565b91905290565b634e487b7160e01b5f52604160045260245ffd5b606081018181106001600160401b0382111715614127576141276140f4565b60405250565b604081018181106001600160401b0382111715614127576141276140f4565b608081018181106001600160401b0382111715614127576141276140f4565b60c081018181106001600160401b0382111715614127576141276140f4565b601f8201601f191681016001600160401b03811182821017156141af576141af6140f4565b6040525050565b6040516141c460c08261418a565b90565b61ffff811681146122c2575f5ffd5b5f606082840312156141e6575f5ffd5b6040516141f281614108565b8091508235614200816141c7565b81526020830135614210816141c7565b6020820152604083013561422381613fff565b6040919091015292915050565b5f5f5f83850360c0811215614243575f5ffd5b8435935061425486602087016141d6565b92506040607f1982011215614267575f5ffd5b506040516142748161412d565b608085013561428281613e60565b815260a085013561429281613e8f565b602082015292959194509192509050565b5f60408284031215611334575f5ffd5b5f5f606083850312156142c4575f5ffd5b823591506142d584602085016142a3565b90509250929050565b5f6001600160401b038211156142f6576142f66140f4565b50601f01601f191660200190565b5f82601f830112614313575f5ffd5b813561431e816142de565b60405161432b828261418a565b82815285602084870101111561433f575f5ffd5b826020860160208301375f92810160200192909252509392505050565b5f6020828403121561436c575f5ffd5b81356001600160401b03811115614381575f5ffd5b6110be84828501614304565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156143e457603f198786030184526143cf858351613e20565b945060209384019391909101906001016143b3565b50929695505050505050565b6101008110614401576144016140bd565b9052565b60208101610e7b82846143f0565b5f6001600160401b0382111561442b5761442b6140f4565b5060051b60200190565b5f60208284031215614445575f5ffd5b81356001600160401b0381111561445a575f5ffd5b8201601f8101841361446a575f5ffd5b803561447581614413565b604051614482828261418a565b80915082815260208101915060208360051b8501019250868311156144a5575f5ffd5b602084015b838110156145515780356001600160401b038111156144c7575f5ffd5b85016080818a03601f190112156144dc575f5ffd5b6040516144e88161414c565b60208201356144f681613fff565b8152604082013561450681613fff565b60208201526060820135604082015260808201356001600160401b0381111561452d575f5ffd5b61453c8b602083860101614304565b606083015250845250602092830192016144aa565b509695505050505050565b5f6020828403121561456c575f5ffd5b81356001600160401b03811115614581575f5ffd5b8201601f81018413614591575f5ffd5b803561459c81614413565b6040516145a9828261418a565b80915082815260208101915060208360051b8501019250868311156145cc575f5ffd5b6020840193505b828410156145f75783356145e681613fff565b8252602093840193909101906145d3565b9695505050505050565b602080825282518282018190525f918401906040840190835b8181101561464157835161462d816140d1565b83526020938401939092019160010161461a565b509095945050505050565b6020815261465e6020820183516143f0565b5f602083015160148110614674576146746140bd565b8060408401525060408301516060830152606083015160808301526001600160401b0360808401511660a083015260a083015160c080840152805160c060e0850152805160406101a08601526146ce6101e0860182613e20565b6020928301516101c08701529183015160ff16610100860152506040820151906146fe61012086018360ff169052565b606083015160ff1661014086015260808301516001600160401b0380821661016088015260a09094015193841661018087015291506113de565b5f5f5f5f6060858703121561474b575f5ffd5b843593506020850135925060408501356001600160401b0381111561476e575f5ffd5b61477a87828801614013565b95989497509550505050565b5f5f5f60408486031215614798575f5ffd5b83356001600160401b038111156147ad575f5ffd5b840160e081870312156147be575f5ffd5b925060208401356001600160401b038111156147d8575f5ffd5b6147e486828701614013565b9497909650939450505050565b5f5f5f5f60608587031215614804575f5ffd5b843561480f81613fff565b93506020850135925060408501356001600160401b0381111561476e575f5ffd5b5f5f60408385031215614841575f5ffd5b823591506020830135613ec2816141c7565b5f60208284031215614863575f5ffd5b8135610ea081613fff565b60018060a01b03815116825262ffffff60208201511660208301525f6040820151608060408501526148a36080850182613e20565b606093840151949093019390935250919050565b60018060a01b0381511682526001600160401b036020820151166020830152604081015160408301525f606082015160a060608501526148fa60a0850182613e20565b6080938401516001600160a01b0316949093019390935250919050565b602081525f8251610100602084015261493461012084018261486e565b90506020840151601f1984830301604085015261495182826148b7565b915050604084015161498e606085018261ffff815116825261ffff60208201511660208301526001600160401b0360408201511660408301525050565b5060608401516001600160881b03191660c084015260808401516001600160481b031660e084015260a0909301516001600160401b0316610100909201919091525090565b5f5f5f5f5f5f608087890312156149e8575f5ffd5b86356001600160401b038111156149fd575f5ffd5b614a0989828a01613ecd565b90975095505060208701356001600160401b03811115614a27575f5ffd5b614a3389828a01614013565b979a9699509760408101359660609091013595509350505050565b5f5f60408385031215614a5f575f5ffd5b50508035926020909101359150565b5f5f60808385031215614a7f575f5ffd5b823591506142d584602085016141d6565b602081525f610ea0602083018461486e565b6020815260ff82511660208201525f60208301516040808401526110be6060840182613e20565b60018060a01b0381511682526001600160401b03602082015116602083015263ffffffff6040820151166040830152606081015160608301525f608082015160a060808501526110be60a0850182613e20565b602081525f825160406020840152614b376060840182613f69565b90506020840151601f198483030160408501526113de8282614ac9565b803563ffffffff81168114611e16575f5ffd5b5f5f5f5f5f60808688031215614b7b575f5ffd5b8535945061407f60208701614b54565b602081525f610ea060208301846148b7565b5f5f5f60a08486031215614baf575f5ffd5b8335925060208401359150614bc785604086016141d6565b90509250925092565b5f5f5f60808486031215614be2575f5ffd5b83359250614bf385602086016142a3565b91506060840135614c0381613e8f565b809150509250925092565b602081525f610ea06020830184614ac9565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60ff831680614c5a57614c5a614c20565b8060ff84160491505092915050565b60ff8181168382160190811115610e7b57610e7b614c34565b5f60ff831680614c9457614c94614c20565b8060ff84160691505092915050565b634e487b7160e01b5f52603260045260245ffd5b80820180821115610e7b57610e7b614c34565b5f8235607e19833603018112614cde575f5ffd5b9190910192915050565b5f60208284031215614cf8575f5ffd5b610ea082614b54565b5f5f8335601e19843603018112614d16575f5ffd5b8301803591506001600160401b03821115614d2f575f5ffd5b602001915036819003821315613f0d575f5ffd5b600181811c90821680614d5757607f821691505b60208210810361133457634e487b7160e01b5f52602260045260245ffd5b600781106122c2575f5ffd5b5f60208284031215614d91575f5ffd5b8151610ea081614d75565b602080825281018290525f8360408301825b85811015614dde578235614dc181613e60565b6001600160a01b0316825260209283019290910190600101614dae565b5095945050505050565b8082028115828204841417610e7b57610e7b614c34565b5f60208284031215614e0f575f5ffd5b81518015158114610ea0575f5ffd5b858152602081018590526001600160401b03841660408201526060810183905260e081016145f7608083018461ffff815116825261ffff60208201511660208301526001600160401b0360408201511660408301525050565b60ff811681146122c2575f5ffd5b5f60208284031215614e95575f5ffd5b8135610ea081614e77565b5f614eaa836142de565b604051614eb7828261418a565b809250848152858585011115614ecb575f5ffd5b8484602083015e5f6020868301015250509392505050565b5f82601f830112614ef2575f5ffd5b610ea083835160208501614ea0565b5f5f60408385031215614f12575f5ffd5b8251614f1d81613e60565b60208401519092506001600160401b03811115614f38575f5ffd5b614f4485828601614ee3565b9150509250929050565b80516101008110611e16575f5ffd5b5f60208284031215614f6d575f5ffd5b610ea082614f4e565b5f60208284031215614f86575f5ffd5b81516001600160401b03811115614f9b575f5ffd5b8201601f81018413614fab575f5ffd5b6110be84825160208401614ea0565b5f614fc58285613dab565b6101d160f51b81526113de6002820185613dab565b6001600160401b0383168152604060208201525f6110be6040830184613e20565b5f6150068284613dab565b743a20696e76616c6964207265706f7274206461746160581b81526015019392505050565b6001600160a01b03831681526040602080830182905283519183018290525f91908401906060840190835b8181101561507d5783516001600160401b0316835260209384019390920191600101615056565b50909695505050505050565b5f60208284031215615099575f5ffd5b81516001600160401b038111156150ae575f5ffd5b8201601f810184136150be575f5ffd5b80516150c981614413565b6040516150d6828261418a565b80915082815260208101915060208360051b8501019250868311156150f9575f5ffd5b602084015b838110156145515780516001600160401b0381111561511b575f5ffd5b61512a89602083890101614ee3565b845250602092830192016150fe565b8051611e1681613fff565b8051611e1681614e77565b5f60c0828403121561515f575f5ffd5b60405161516b8161416b565b80915082516001600160401b03811115615183575f5ffd5b830160408186031215615194575f5ffd5b6040516151a08161412d565b81516001600160401b038111156151b5575f5ffd5b6151c187828501614ee3565b8252506020918201518282015282526151db908401615144565b60208201526151ec60408401615144565b60408201526151fd60608401615144565b606082015261520e60808401615139565b608082015261521f60a08401615139565b60a08201525092915050565b5f60c0828403121561523b575f5ffd5b6040516152478161416b565b80915061525383614f4e565b8152602083015160148110615266575f5ffd5b6020820152604083810151908201526060808401519082015261528b60808401615139565b608082015260a08301516001600160401b038111156152a8575f5ffd5b6152b48582860161514f565b60a0830152505092915050565b5f602082840312156152d1575f5ffd5b81516001600160401b038111156152e6575f5ffd5b6110be8482850161522b565b80356152fd816141c7565b61ffff1682526020810135615311816141c7565b61ffff166020830152604081013561532881613fff565b6001600160401b0381166040840152505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6040808252843582820152602085013560608301525f9061538b90608084019087016152f2565b60a085013561539981613fff565b6001600160401b031660e083015260c085013536869003601e190181126153be575f5ffd5b85016020810190356001600160401b038111156153d9575f5ffd5b8036038213156153e7575f5ffd5b60e06101008501526153fe6101208501828461533c565b91505082810360208401526145f781858761533c565b5f5f60408385031215615425575f5ffd5b825161543081613e60565b60208401519092506001600160401b0381111561544b575f5ffd5b614f448582860161522b565b6001600160a01b0388168152602081018790526040810186905261547e60608201866152f2565b6001600160401b03841660c082015261010060e08201525f6154a56101008301848661533c565b9998505050505050505050565b80516001600160481b0381168114611e16575f5ffd5b5f602082840312156154d8575f5ffd5b610ea0826154b2565b5f60033d11156141c45760045f5f3e505f5160e01c90565b5f60443d10156155065790565b6040513d600319016004823e80513d60248201116001600160401b038211171561552f57505090565b80820180516001600160401b0381111561554a575050505090565b3d8401600319018282016020011115615564575050505090565b613fe56020828501018561418a565b5f60808284031215615583575f5ffd5b60405161558f8161414c565b809150825161559d81613e60565b815260208301516155ad81613e8f565b602082015260408301516001600160401b038111156155ca575f5ffd5b6155d685828601614ee3565b604083015250606092830151920191909152919050565b5f60a082840312156155fd575f5ffd5b60405160a081018181106001600160401b038211171561561f5761561f6140f4565b8060405250809150825161563281613e60565b8152602083015161564281613fff565b60208201526040838101519082015260608301516001600160401b03811115615669575f5ffd5b61567585828601614ee3565b606083015250608083015161568981613e60565b6080919091015292915050565b5f606082840312156156a6575f5ffd5b6040516156b281614108565b80915082516156c0816141c7565b815260208301516156d0816141c7565b6020820152604083015161422381613fff565b80516001600160881b031981168114611e16575f5ffd5b5f6020828403121561570a575f5ffd5b81516001600160401b0381111561571f575f5ffd5b82016101008185031215615731575f5ffd5b6157396141b6565b81516001600160401b0381111561574e575f5ffd5b61575a86828501615573565b82525060208201516001600160401b03811115615775575f5ffd5b615781868285016155ed565b6020830152506157948560408401615696565b60408201526157a560a083016156e3565b60608201526157b660c083016154b2565b60808201526157c760e08301615139565b60a0820152949350505050565b602081525f6110be60208301848661533c565b5f602082840312156157f7575f5ffd5b5051919050565b5f6020828403121561580e575f5ffd5b81516001600160401b03811115615823575f5ffd5b6110be84828501615573565b6001600160401b038181168382160190811115610e7b57610e7b614c34565b5f6020828403121561585e575f5ffd5b81516001600160401b03811115615873575f5ffd5b6110be848285016155ed565b630375962160e11b8152600160e51b6020820152600160e01b604082015260ff600160e51b0160608201526001600160e01b031960808201525f1960a08201526001600160d41b031960c0820152600160df1b60e082015260ff60d81b6101008201525f610ea0610105830184613dab565b8381526020808201849052825160ff1660408301528201516001600160401b03166060820152608081016110be565b5f60208284031215615930575f5ffd5b81516001600160401b03811115615945575f5ffd5b8201601f81018413615955575f5ffd5b805161596081614413565b60405161596d828261418a565b80915082815260208101915060208360051b850101925086831115615990575f5ffd5b6020840193505b828410156145f75783516159aa81613e60565b825260209384019390910190615997565b602080825282518282018190525f918401906040840190835b818110156146415783516001600160a01b03168352602093840193909201916001016159d4565b60018060a01b03881681528660208201526001600160401b03861660408201528460608201526001600160401b03841660808201528260a082015260e060c08201525f6154a560e0830184613e20565b61ffff8281168282160390811115610e7b57610e7b614c34565b5f61ffff831680615a7857615a78614c20565b8061ffff84160491505092915050565b82515f90829060208601835b82811015615ab2578151845260209384019390910190600101615a94565b5050509283525050602001919050565b5f6001600160401b0382166001600160401b038103615ae357615ae3614c34565b60010192915050565b5f615af78284613dab565b741d103ab73430b7323632b21030b9b9b2b93a34b7b760591b81526015019392505050565b81810381811115610e7b57610e7b614c3456fef595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e183f595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e184a264697066735822122086324f744cc19cadc533953f362cab27d938081ad04cf9f1d1889fdf40b551c764736f6c634300081e0033",
  "linkReferences": {
    "project/contracts/data/WitOracleDataLib.sol": {
      "WitOracleDataLib": [
        {
          "length": 20,
          "start": 6547
        },
        {
          "length": 20,
          "start": 6663
        },
        {
          "length": 20,
          "start": 8198
        },
        {
          "length": 20,
          "start": 8264
        },
        {
          "length": 20,
          "start": 8550
        },
        {
          "length": 20,
          "start": 9153
        },
        {
          "length": 20,
          "start": 9563
        },
        {
          "length": 20,
          "start": 9788
        },
        {
          "length": 20,
          "start": 10051
        },
        {
          "length": 20,
          "start": 10383
        },
        {
          "length": 20,
          "start": 10608
        },
        {
          "length": 20,
          "start": 10914
        },
        {
          "length": 20,
          "start": 12091
        },
        {
          "length": 20,
          "start": 12532
        },
        {
          "length": 20,
          "start": 12719
        },
        {
          "length": 20,
          "start": 13005
        },
        {
          "length": 20,
          "start": 13298
        },
        {
          "length": 20,
          "start": 15116
        },
        {
          "length": 20,
          "start": 15263
        },
        {
          "length": 20,
          "start": 15438
        }
      ]
    },
    "project/contracts/libs/WitOracleResultStatusLib.sol": {
      "WitOracleResultStatusLib": [
        {
          "length": 20,
          "start": 12259
        },
        {
          "length": 20,
          "start": 12693
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "project/contracts/data/WitOracleDataLib.sol": {
      "WitOracleDataLib": [
        {
          "length": 20,
          "start": 5119
        },
        {
          "length": 20,
          "start": 5235
        },
        {
          "length": 20,
          "start": 6770
        },
        {
          "length": 20,
          "start": 6836
        },
        {
          "length": 20,
          "start": 7122
        },
        {
          "length": 20,
          "start": 7725
        },
        {
          "length": 20,
          "start": 8135
        },
        {
          "length": 20,
          "start": 8360
        },
        {
          "length": 20,
          "start": 8623
        },
        {
          "length": 20,
          "start": 8955
        },
        {
          "length": 20,
          "start": 9180
        },
        {
          "length": 20,
          "start": 9486
        },
        {
          "length": 20,
          "start": 10663
        },
        {
          "length": 20,
          "start": 11104
        },
        {
          "length": 20,
          "start": 11291
        },
        {
          "length": 20,
          "start": 11577
        },
        {
          "length": 20,
          "start": 11870
        },
        {
          "length": 20,
          "start": 13688
        },
        {
          "length": 20,
          "start": 13835
        },
        {
          "length": 20,
          "start": 14010
        }
      ]
    },
    "project/contracts/libs/WitOracleResultStatusLib.sol": {
      "WitOracleResultStatusLib": [
        {
          "length": 20,
          "start": 10831
        },
        {
          "length": 20,
          "start": 11265
        }
      ]
    }
  },
  "immutableReferences": {
    "9009": [
      {
        "length": 32,
        "start": 7871
      }
    ],
    "9013": [
      {
        "length": 32,
        "start": 3185
      }
    ],
    "9104": [
      {
        "length": 32,
        "start": 1818
      }
    ],
    "10085": [
      {
        "length": 32,
        "start": 2351
      },
      {
        "length": 32,
        "start": 7757
      },
      {
        "length": 32,
        "start": 10226
      }
    ],
    "10087": [
      {
        "length": 32,
        "start": 13404
      }
    ],
    "10089": [
      {
        "length": 32,
        "start": 12917
      },
      {
        "length": 32,
        "start": 12989
      }
    ],
    "10091": [
      {
        "length": 32,
        "start": 12853
      }
    ],
    "10093": [
      {
        "length": 32,
        "start": 12809
      },
      {
        "length": 32,
        "start": 13360
      },
      {
        "length": 32,
        "start": 14503
      }
    ],
    "17079": [
      {
        "length": 32,
        "start": 10049
      },
      {
        "length": 32,
        "start": 13038
      }
    ],
    "45715": [
      {
        "length": 32,
        "start": 3265
      }
    ],
    "45824": [
      {
        "length": 32,
        "start": 1745
      },
      {
        "length": 32,
        "start": 2830
      },
      {
        "length": 32,
        "start": 6230
      },
      {
        "length": 32,
        "start": 6343
      },
      {
        "length": 32,
        "start": 6414
      },
      {
        "length": 32,
        "start": 6448
      }
    ],
    "45828": [
      {
        "length": 32,
        "start": 1897
      },
      {
        "length": 32,
        "start": 8267
      }
    ]
  },
  "inputSourceName": "project/contracts/core/trustable/WitOracleTrustableOvm2.sol",
  "buildInfoId": "solc-0_8_30-47301052af11a5aa5062e9b98ca44d5e142950cf"
}