```\nfunction _validateAccountAndPaymasterValidationData(uint256 opIndex, uint256 validationData, uint256 paymasterValidationData, address expectedAggregator) internal view {\n    (address aggregator, bool outOfTimeRange) = _getValidationData(validationData);\n    if (expectedAggregator != aggregator) {\n        revert FailedOp(opIndex, "AA24 signature error");\n    }\n    if (outOfTimeRange) {\n        revert FailedOp(opIndex, "AA22 expired or not due");\n    }\n    //pmAggregator is not a real signature aggregator: we don't have logic to handle it as address.\n    // non-zero address means that the paymaster fails due to some signature check (which is ok only during estimation)\n    address pmAggregator;\n    (pmAggregator, outOfTimeRange) = _getValidationData(paymasterValidationData);\n    if (pmAggregator != address(0)) {\n        revert FailedOp(opIndex, "AA34 signature error");\n    }\n    if (outOfTimeRange) {\n        revert FailedOp(opIndex, "AA32 paymaster expired or not due");\n    }\n}\n```\n