@chainlink/functions-toolkit
Version:
An NPM package with collection of functions that can be used for working with Chainlink Functions.
1,306 lines • 138 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.FunctionsCoordinatorTestHelperSource = void 0;
exports.FunctionsCoordinatorTestHelperSource = {
_format: 'hh-sol-artifact-1',
contractName: 'FunctionsCoordinatorTestHelper',
sourceName: 'FunctionsCoordinatorTestHelper.sol',
abi: [
{
inputs: [
{
internalType: 'address',
name: 'router',
type: 'address',
},
{
components: [
{
internalType: 'uint32',
name: 'fulfillmentGasPriceOverEstimationBP',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'feedStalenessSeconds',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'gasOverheadBeforeCallback',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'gasOverheadAfterCallback',
type: 'uint32',
},
{
internalType: 'uint40',
name: 'minimumEstimateGasPriceWei',
type: 'uint40',
},
{
internalType: 'uint16',
name: 'maxSupportedRequestDataVersion',
type: 'uint16',
},
{
internalType: 'uint64',
name: 'fallbackUsdPerUnitLink',
type: 'uint64',
},
{
internalType: 'uint8',
name: 'fallbackUsdPerUnitLinkDecimals',
type: 'uint8',
},
{
internalType: 'uint224',
name: 'fallbackNativePerUnitLink',
type: 'uint224',
},
{
internalType: 'uint32',
name: 'requestTimeoutSeconds',
type: 'uint32',
},
{
internalType: 'uint16',
name: 'donFeeCentsUsd',
type: 'uint16',
},
{
internalType: 'uint16',
name: 'operationFeeCentsUsd',
type: 'uint16',
},
],
internalType: 'struct FunctionsBillingConfig',
name: 'config',
type: 'tuple',
},
{
internalType: 'address',
name: 'linkToNativeFeed',
type: 'address',
},
{
internalType: 'address',
name: 'linkToUsdFeed',
type: 'address',
},
],
stateMutability: 'nonpayable',
type: 'constructor',
},
{
inputs: [],
name: 'EmptyPublicKey',
type: 'error',
},
{
inputs: [],
name: 'InconsistentReportData',
type: 'error',
},
{
inputs: [],
name: 'InsufficientBalance',
type: 'error',
},
{
inputs: [],
name: 'InvalidCalldata',
type: 'error',
},
{
inputs: [
{
internalType: 'string',
name: 'message',
type: 'string',
},
],
name: 'InvalidConfig',
type: 'error',
},
{
inputs: [
{
internalType: 'int256',
name: 'linkWei',
type: 'int256',
},
],
name: 'InvalidLinkWeiPrice',
type: 'error',
},
{
inputs: [],
name: 'InvalidSubscription',
type: 'error',
},
{
inputs: [
{
internalType: 'int256',
name: 'usdLink',
type: 'int256',
},
],
name: 'InvalidUsdLinkPrice',
type: 'error',
},
{
inputs: [
{
internalType: 'address',
name: 'owner',
type: 'address',
},
],
name: 'MustBeSubOwner',
type: 'error',
},
{
inputs: [],
name: 'NoTransmittersSet',
type: 'error',
},
{
inputs: [],
name: 'OnlyCallableByRouter',
type: 'error',
},
{
inputs: [],
name: 'OnlyCallableByRouterOwner',
type: 'error',
},
{
inputs: [],
name: 'PaymentTooLarge',
type: 'error',
},
{
inputs: [
{
internalType: 'string',
name: 'message',
type: 'string',
},
],
name: 'ReportInvalid',
type: 'error',
},
{
inputs: [],
name: 'RouterMustBeSet',
type: 'error',
},
{
inputs: [],
name: 'UnauthorizedPublicKeyChange',
type: 'error',
},
{
inputs: [],
name: 'UnauthorizedSender',
type: 'error',
},
{
inputs: [],
name: 'UnsupportedRequestDataVersion',
type: 'error',
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: 'bytes32',
name: 'requestId',
type: 'bytes32',
},
],
name: 'CommitmentDeleted',
type: 'event',
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: 'uint32',
name: 'previousConfigBlockNumber',
type: 'uint32',
},
{
indexed: false,
internalType: 'bytes32',
name: 'configDigest',
type: 'bytes32',
},
{
indexed: false,
internalType: 'uint64',
name: 'configCount',
type: 'uint64',
},
{
indexed: false,
internalType: 'address[]',
name: 'signers',
type: 'address[]',
},
{
indexed: false,
internalType: 'address[]',
name: 'transmitters',
type: 'address[]',
},
{
indexed: false,
internalType: 'uint8',
name: 'f',
type: 'uint8',
},
{
indexed: false,
internalType: 'bytes',
name: 'onchainConfig',
type: 'bytes',
},
{
indexed: false,
internalType: 'uint64',
name: 'offchainConfigVersion',
type: 'uint64',
},
{
indexed: false,
internalType: 'bytes',
name: 'offchainConfig',
type: 'bytes',
},
],
name: 'ConfigSet',
type: 'event',
},
{
anonymous: false,
inputs: [
{
components: [
{
internalType: 'uint32',
name: 'fulfillmentGasPriceOverEstimationBP',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'feedStalenessSeconds',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'gasOverheadBeforeCallback',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'gasOverheadAfterCallback',
type: 'uint32',
},
{
internalType: 'uint40',
name: 'minimumEstimateGasPriceWei',
type: 'uint40',
},
{
internalType: 'uint16',
name: 'maxSupportedRequestDataVersion',
type: 'uint16',
},
{
internalType: 'uint64',
name: 'fallbackUsdPerUnitLink',
type: 'uint64',
},
{
internalType: 'uint8',
name: 'fallbackUsdPerUnitLinkDecimals',
type: 'uint8',
},
{
internalType: 'uint224',
name: 'fallbackNativePerUnitLink',
type: 'uint224',
},
{
internalType: 'uint32',
name: 'requestTimeoutSeconds',
type: 'uint32',
},
{
internalType: 'uint16',
name: 'donFeeCentsUsd',
type: 'uint16',
},
{
internalType: 'uint16',
name: 'operationFeeCentsUsd',
type: 'uint16',
},
],
indexed: false,
internalType: 'struct FunctionsBillingConfig',
name: 'config',
type: 'tuple',
},
],
name: 'ConfigUpdated',
type: 'event',
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: 'bytes32',
name: 'requestId',
type: 'bytes32',
},
{
indexed: true,
internalType: 'address',
name: 'requestingContract',
type: 'address',
},
{
indexed: false,
internalType: 'address',
name: 'requestInitiator',
type: 'address',
},
{
indexed: false,
internalType: 'uint64',
name: 'subscriptionId',
type: 'uint64',
},
{
indexed: false,
internalType: 'address',
name: 'subscriptionOwner',
type: 'address',
},
{
indexed: false,
internalType: 'bytes',
name: 'data',
type: 'bytes',
},
{
indexed: false,
internalType: 'uint16',
name: 'dataVersion',
type: 'uint16',
},
{
indexed: false,
internalType: 'bytes32',
name: 'flags',
type: 'bytes32',
},
{
indexed: false,
internalType: 'uint64',
name: 'callbackGasLimit',
type: 'uint64',
},
{
components: [
{
internalType: 'bytes32',
name: 'requestId',
type: 'bytes32',
},
{
internalType: 'address',
name: 'coordinator',
type: 'address',
},
{
internalType: 'uint96',
name: 'estimatedTotalCostJuels',
type: 'uint96',
},
{
internalType: 'address',
name: 'client',
type: 'address',
},
{
internalType: 'uint64',
name: 'subscriptionId',
type: 'uint64',
},
{
internalType: 'uint32',
name: 'callbackGasLimit',
type: 'uint32',
},
{
internalType: 'uint72',
name: 'adminFee',
type: 'uint72',
},
{
internalType: 'uint72',
name: 'donFee',
type: 'uint72',
},
{
internalType: 'uint40',
name: 'gasOverheadBeforeCallback',
type: 'uint40',
},
{
internalType: 'uint40',
name: 'gasOverheadAfterCallback',
type: 'uint40',
},
{
internalType: 'uint32',
name: 'timeoutTimestamp',
type: 'uint32',
},
],
indexed: false,
internalType: 'struct FunctionsResponse.Commitment',
name: 'commitment',
type: 'tuple',
},
],
name: 'OracleRequest',
type: 'event',
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: 'bytes32',
name: 'requestId',
type: 'bytes32',
},
{
indexed: false,
internalType: 'address',
name: 'transmitter',
type: 'address',
},
],
name: 'OracleResponse',
type: 'event',
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: 'address',
name: 'from',
type: 'address',
},
{
indexed: true,
internalType: 'address',
name: 'to',
type: 'address',
},
],
name: 'OwnershipTransferRequested',
type: 'event',
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: 'address',
name: 'from',
type: 'address',
},
{
indexed: true,
internalType: 'address',
name: 'to',
type: 'address',
},
],
name: 'OwnershipTransferred',
type: 'event',
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: 'bytes32',
name: 'requestId',
type: 'bytes32',
},
{
indexed: false,
internalType: 'uint96',
name: 'juelsPerGas',
type: 'uint96',
},
{
indexed: false,
internalType: 'uint256',
name: 'l1FeeShareWei',
type: 'uint256',
},
{
indexed: false,
internalType: 'uint96',
name: 'callbackCostJuels',
type: 'uint96',
},
{
indexed: false,
internalType: 'uint72',
name: 'donFeeJuels',
type: 'uint72',
},
{
indexed: false,
internalType: 'uint72',
name: 'adminFeeJuels',
type: 'uint72',
},
{
indexed: false,
internalType: 'uint72',
name: 'operationFeeJuels',
type: 'uint72',
},
],
name: 'RequestBilled',
type: 'event',
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: 'bytes32',
name: 'configDigest',
type: 'bytes32',
},
{
indexed: false,
internalType: 'uint32',
name: 'epoch',
type: 'uint32',
},
],
name: 'Transmitted',
type: 'event',
},
{
inputs: [],
name: 'acceptOwnership',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [
{
internalType: 'bytes',
name: 'report',
type: 'bytes',
},
],
name: 'callReport',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [
{
internalType: 'bytes',
name: 'report',
type: 'bytes',
},
{
internalType: 'address',
name: 'secondSigner',
type: 'address',
},
],
name: 'callReportMultipleSigners',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [
{
internalType: 'bytes32',
name: 'requestId',
type: 'bytes32',
},
],
name: 'deleteCommitment',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [
{
internalType: 'uint64',
name: 'subscriptionId',
type: 'uint64',
},
{
internalType: 'bytes',
name: 'data',
type: 'bytes',
},
{
internalType: 'uint32',
name: 'callbackGasLimit',
type: 'uint32',
},
{
internalType: 'uint256',
name: 'gasPriceWei',
type: 'uint256',
},
],
name: 'estimateCost',
outputs: [
{
internalType: 'uint96',
name: '',
type: 'uint96',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'getAdminFeeJuels',
outputs: [
{
internalType: 'uint72',
name: '',
type: 'uint72',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'getConfig',
outputs: [
{
components: [
{
internalType: 'uint32',
name: 'fulfillmentGasPriceOverEstimationBP',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'feedStalenessSeconds',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'gasOverheadBeforeCallback',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'gasOverheadAfterCallback',
type: 'uint32',
},
{
internalType: 'uint40',
name: 'minimumEstimateGasPriceWei',
type: 'uint40',
},
{
internalType: 'uint16',
name: 'maxSupportedRequestDataVersion',
type: 'uint16',
},
{
internalType: 'uint64',
name: 'fallbackUsdPerUnitLink',
type: 'uint64',
},
{
internalType: 'uint8',
name: 'fallbackUsdPerUnitLinkDecimals',
type: 'uint8',
},
{
internalType: 'uint224',
name: 'fallbackNativePerUnitLink',
type: 'uint224',
},
{
internalType: 'uint32',
name: 'requestTimeoutSeconds',
type: 'uint32',
},
{
internalType: 'uint16',
name: 'donFeeCentsUsd',
type: 'uint16',
},
{
internalType: 'uint16',
name: 'operationFeeCentsUsd',
type: 'uint16',
},
],
internalType: 'struct FunctionsBillingConfig',
name: '',
type: 'tuple',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [
{
internalType: 'bytes',
name: '',
type: 'bytes',
},
],
name: 'getDONFeeJuels',
outputs: [
{
internalType: 'uint72',
name: '',
type: 'uint72',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'getDONPublicKey',
outputs: [
{
internalType: 'bytes',
name: '',
type: 'bytes',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'getOperationFeeJuels',
outputs: [
{
internalType: 'uint72',
name: '',
type: 'uint72',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'getThresholdPublicKey',
outputs: [
{
internalType: 'bytes',
name: '',
type: 'bytes',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'getUsdPerUnitLink',
outputs: [
{
internalType: 'uint256',
name: '',
type: 'uint256',
},
{
internalType: 'uint8',
name: '',
type: 'uint8',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'getWeiPerUnitLink',
outputs: [
{
internalType: 'uint256',
name: '',
type: 'uint256',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'latestConfigDetails',
outputs: [
{
internalType: 'uint32',
name: 'configCount',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'blockNumber',
type: 'uint32',
},
{
internalType: 'bytes32',
name: 'configDigest',
type: 'bytes32',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'latestConfigDigestAndEpoch',
outputs: [
{
internalType: 'bool',
name: 'scanLogs',
type: 'bool',
},
{
internalType: 'bytes32',
name: 'configDigest',
type: 'bytes32',
},
{
internalType: 'uint32',
name: 'epoch',
type: 'uint32',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [
{
internalType: 'address',
name: 'recipient',
type: 'address',
},
{
internalType: 'uint96',
name: 'amount',
type: 'uint96',
},
],
name: 'oracleWithdraw',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [],
name: 'oracleWithdrawAll',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [],
name: 'owner',
outputs: [
{
internalType: 'address',
name: '',
type: 'address',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [
{
internalType: 'address[]',
name: '_signers',
type: 'address[]',
},
{
internalType: 'address[]',
name: '_transmitters',
type: 'address[]',
},
{
internalType: 'uint8',
name: '_f',
type: 'uint8',
},
{
internalType: 'bytes',
name: '_onchainConfig',
type: 'bytes',
},
{
internalType: 'uint64',
name: '_offchainConfigVersion',
type: 'uint64',
},
{
internalType: 'bytes',
name: '_offchainConfig',
type: 'bytes',
},
],
name: 'setConfig',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [
{
internalType: 'bytes',
name: 'donPublicKey',
type: 'bytes',
},
],
name: 'setDONPublicKey',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [
{
internalType: 'bytes',
name: 'thresholdPublicKey',
type: 'bytes',
},
],
name: 'setThresholdPublicKey',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [
{
components: [
{
internalType: 'bytes',
name: 'data',
type: 'bytes',
},
{
internalType: 'bytes32',
name: 'flags',
type: 'bytes32',
},
{
internalType: 'address',
name: 'requestingContract',
type: 'address',
},
{
internalType: 'uint96',
name: 'availableBalance',
type: 'uint96',
},
{
internalType: 'uint72',
name: 'adminFee',
type: 'uint72',
},
{
internalType: 'uint64',
name: 'subscriptionId',
type: 'uint64',
},
{
internalType: 'uint64',
name: 'initiatedRequests',
type: 'uint64',
},
{
internalType: 'uint32',
name: 'callbackGasLimit',
type: 'uint32',
},
{
internalType: 'uint16',
name: 'dataVersion',
type: 'uint16',
},
{
internalType: 'uint64',
name: 'completedRequests',
type: 'uint64',
},
{
internalType: 'address',
name: 'subscriptionOwner',
type: 'address',
},
],
internalType: 'struct FunctionsResponse.RequestMeta',
name: 'request',
type: 'tuple',
},
],
name: 'startRequest',
outputs: [
{
components: [
{
internalType: 'bytes32',
name: 'requestId',
type: 'bytes32',
},
{
internalType: 'address',
name: 'coordinator',
type: 'address',
},
{
internalType: 'uint96',
name: 'estimatedTotalCostJuels',
type: 'uint96',
},
{
internalType: 'address',
name: 'client',
type: 'address',
},
{
internalType: 'uint64',
name: 'subscriptionId',
type: 'uint64',
},
{
internalType: 'uint32',
name: 'callbackGasLimit',
type: 'uint32',
},
{
internalType: 'uint72',
name: 'adminFee',
type: 'uint72',
},
{
internalType: 'uint72',
name: 'donFee',
type: 'uint72',
},
{
internalType: 'uint40',
name: 'gasOverheadBeforeCallback',
type: 'uint40',
},
{
internalType: 'uint40',
name: 'gasOverheadAfterCallback',
type: 'uint40',
},
{
internalType: 'uint32',
name: 'timeoutTimestamp',
type: 'uint32',
},
],
internalType: 'struct FunctionsResponse.Commitment',
name: 'commitment',
type: 'tuple',
},
],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [
{
internalType: 'address',
name: 'to',
type: 'address',
},
],
name: 'transferOwnership',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [
{
internalType: 'bytes32[3]',
name: 'reportContext',
type: 'bytes32[3]',
},
{
internalType: 'bytes',
name: 'report',
type: 'bytes',
},
{
internalType: 'bytes32[]',
name: 'rs',
type: 'bytes32[]',
},
{
internalType: 'bytes32[]',
name: 'ss',
type: 'bytes32[]',
},
{
internalType: 'bytes32',
name: 'rawVs',
type: 'bytes32',
},
],
name: 'transmit',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [],
name: 'transmitters',
outputs: [
{
internalType: 'address[]',
name: '',
type: 'address[]',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'typeAndVersion',
outputs: [
{
internalType: 'string',
name: '',
type: 'string',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [
{
components: [
{
internalType: 'uint32',
name: 'fulfillmentGasPriceOverEstimationBP',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'feedStalenessSeconds',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'gasOverheadBeforeCallback',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'gasOverheadAfterCallback',
type: 'uint32',
},
{
internalType: 'uint40',
name: 'minimumEstimateGasPriceWei',
type: 'uint40',
},
{
internalType: 'uint16',
name: 'maxSupportedRequestDataVersion',
type: 'uint16',
},
{
internalType: 'uint64',
name: 'fallbackUsdPerUnitLink',
type: 'uint64',
},
{
internalType: 'uint8',
name: 'fallbackUsdPerUnitLinkDecimals',
type: 'uint8',
},
{
internalType: 'uint224',
name: 'fallbackNativePerUnitLink',
type: 'uint224',
},
{
internalType: 'uint32',
name: 'requestTimeoutSeconds',
type: 'uint32',
},
{
internalType: 'uint16',
name: 'donFeeCentsUsd',
type: 'uint16',
},
{
internalType: 'uint16',
name: 'operationFeeCentsUsd',
type: 'uint16',
},
],
internalType: 'struct FunctionsBillingConfig',
name: 'config',
type: 'tuple',
},
],
name: 'updateConfig',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
],
bytecode: '0x60a06040523480156200001157600080fd5b5060405162006196380380620061968339810160408190526200003491620004e3565b8383838383838383833380600081620000945760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c757620000c78162000156565b5050506001600160a01b038116620000f257604051632530e88560e11b815260040160405180910390fd5b6001600160a01b03908116608052600c80546001600160601b03166c0100000000000000000000000085841602179055600d80546001600160a01b031916918316919091179055620001448362000201565b5050505050505050505050506200074a565b336001600160a01b03821603620001b05760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016200008b565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6200020b620003a6565b80516008805460208401516040808601516060870151608088015160a089015160c08a015160e08b015160ff16600160f81b026001600160f81b036001600160401b03909216600160b81b02919091166001600160b81b0361ffff938416600160a81b0261ffff60a81b1964ffffffffff909616600160801b029590951666ffffffffffffff60801b1963ffffffff9788166c010000000000000000000000000263ffffffff60601b19998916680100000000000000000299909916600160401b600160801b03199b8916640100000000026001600160401b0319909d169e89169e909e179b909b17999099169b909b1795909517979097169590951717969096161792909217909255610100840151610120850151909316600160e01b026001600160e01b0390931692909217600955610140830151600a80546101608601518416620100000263ffffffff19919091169290931691909117919091179055517f2e2c8535dcc25459d519f2300c114d2d2128bf6399722d04eca078461a3bf33a906200039b90839062000641565b60405180910390a150565b620003b0620003b2565b565b6000546001600160a01b03163314620003b05760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000060448201526064016200008b565b80516001600160a01b03811681146200042657600080fd5b919050565b60405161018081016001600160401b03811182821017156200045d57634e487b7160e01b600052604160045260246000fd5b60405290565b805163ffffffff811681146200042657600080fd5b805164ffffffffff811681146200042657600080fd5b805161ffff811681146200042657600080fd5b80516001600160401b03811681146200042657600080fd5b805160ff811681146200042657600080fd5b80516001600160e01b03811681146200042657600080fd5b6000806000808486036101e0811215620004fc57600080fd5b62000507866200040e565b945061018080601f19830112156200051e57600080fd5b620005286200042b565b9150620005386020880162000463565b8252620005486040880162000463565b60208301526200055b6060880162000463565b60408301526200056e6080880162000463565b60608301526200058160a0880162000478565b60808301526200059460c088016200048e565b60a0830152620005a760e08801620004a1565b60c0830152610100620005bc818901620004b9565b60e0840152610120620005d1818a01620004cb565b828501526101409150620005e7828a0162000463565b90840152610160620005fb8982016200048e565b828501526200060c838a016200048e565b90840152509093506200062590506101a086016200040e565b9150620006366101c086016200040e565b905092959194509250565b815163ffffffff1681526101808101602083015162000668602084018263ffffffff169052565b50604083015162000681604084018263ffffffff169052565b5060608301516200069a606084018263ffffffff169052565b506080830151620006b4608084018264ffffffffff169052565b5060a0830151620006cb60a084018261ffff169052565b5060c0830151620006e760c08401826001600160401b03169052565b5060e0830151620006fd60e084018260ff169052565b50610100838101516001600160e01b0316908301526101208084015163ffffffff16908301526101408084015161ffff908116918401919091526101609384015116929091019190915290565b608051615a06620007906000396000818161085501528181610d960152818161102a0152818161114001528181611c4501528181612b0301526139e30152615a066000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806385b214cf116100f9578063d227d24511610097578063e4ddcea611610071578063e4ddcea614610611578063f2f22ef114610627578063f2fde38b1461062f578063f6ea41f61461064257600080fd5b8063d227d245146105c6578063d328a91e146105f6578063e3d0e712146105fe57600080fd5b8063afcb95d7116100d3578063afcb95d7146103b2578063b1dc65a4146103d2578063ba9c924d146103e5578063c3f909d4146103f857600080fd5b806385b214cf146103575780638da5cb5b1461036a578063a631571e1461039257600080fd5b8063736d7e0f116101665780637f15e166116101405780637f15e166146102ba57806381411834146102cd57806381f1b938146102e257806381ff7048146102ea57600080fd5b8063736d7e0f1461029757806379ba5097146102aa5780637d480787146102b257600080fd5b8063626f458c11610197578063626f458c1461023857806366316d8d146102655780637212762f1461027857600080fd5b8063083a5466146101be578063181f5a77146101d35780633901c40e14610225575b600080fd5b6101d16101cc366004614128565b61064a565b005b61020f6040518060400160405280601c81526020017f46756e6374696f6e7320436f6f7264696e61746f722076312e332e300000000081525081565b60405161021c91906141d8565b60405180910390f35b6101d1610233366004614218565b61069f565b61024b6102463660046143c9565b61071c565b60405168ffffffffffffffffff909116815260200161021c565b6101d1610273366004614423565b610759565b610280610912565b6040805192835260ff90911660208301520161021c565b6101d16102a5366004614128565b610b25565b6101d1610b85565b6101d1610c82565b6101d16102c8366004614128565b610e82565b6102d5610ed2565b60405161021c91906144ad565b61020f610f41565b61033460015460025463ffffffff74010000000000000000000000000000000000000000830481169378010000000000000000000000000000000000000000000000009093041691565b6040805163ffffffff94851681529390921660208401529082015260600161021c565b6101d16103653660046144c0565b611012565b60005460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021c565b6103a56103a03660046144d9565b6110cf565b60405161021c919061462e565b60408051600181526000602082018190529181019190915260600161021c565b6101d16103e0366004614682565b611360565b6101d16103f33660046147ed565b611976565b6105b96040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915250604080516101808101825260085463ffffffff80821683526401000000008204811660208401526801000000000000000082048116938301939093526c01000000000000000000000000810483166060830152700100000000000000000000000000000000810464ffffffffff1660808301527501000000000000000000000000000000000000000000810461ffff90811660a084015277010000000000000000000000000000000000000000000000820467ffffffffffffffff1660c08401527f010000000000000000000000000000000000000000000000000000000000000090910460ff1660e08301526009547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81166101008401527c01000000000000000000000000000000000000000000000000000000009004909216610120820152600a5480831661014083015262010000900490911661016082015290565b60405161021c91906148d9565b6105d96105d43660046149f6565b611c41565b6040516bffffffffffffffffffffffff909116815260200161021c565b61020f611daf565b6101d161060c366004614afe565b611e06565b610619612982565b60405190815260200161021c565b61024b612ac6565b6101d161063d366004614bcb565b612aeb565b61024b612aff565b610652612b90565b600081900361068d576040517f4f42be3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600f61069a828483614c7b565b505050565b6106a76140c7565b33815273ffffffffffffffffffffffffffffffffffffffff821660208201526000808080806106d88989018a614ea0565b945094509450945094506107116040518060a0016040528087815260200186815260200185815260200184815260200183815250612c13565b505050505050505050565b600a54600090610753906064906107369061ffff16612d62565b6107409190614fd0565b6bffffffffffffffffffffffff16612daf565b92915050565b610761612e4e565b806bffffffffffffffffffffffff1660000361079b5750336000908152600b60205260409020546bffffffffffffffffffffffff166107f5565b336000908152600b60205260409020546bffffffffffffffffffffffff808316911610156107f5576040517ff4d678b80000000000000000000000