```\\nfunction simulateValidation(UserOperation calldata userOp) external {\\n    UserOpInfo memory outOpInfo;\\n\\n    _simulationOnlyValidations(userOp);\\n    (uint256 validationData, uint256 paymasterValidationData) = _validatePrepayment(0, userOp, outOpInfo);\\n    StakeInfo memory paymasterInfo = _getStakeInfo(outOpInfo.mUserOp.paymaster);\\n    StakeInfo memory senderInfo = _getStakeInfo(outOpInfo.mUserOp.sender);\\n    StakeInfo memory factoryInfo;\\n    {\\n        bytes calldata initCode = userOp.initCode;\\n        address factory = initCode.length >= 20 ? address(bytes20(initCode[0 : 20])) : address(0);\\n        factoryInfo = _getStakeInfo(factory);\\n    }\\n\\n    ValidationData memory data = _intersectTimeRange(validationData, paymasterValidationData);\\n    address aggregator = data.aggregator;\\n    bool sigFailed = aggregator == address(1);\\n    ReturnInfo memory returnInfo = ReturnInfo(outOpInfo.preOpGas, outOpInfo.prefund,\\n        sigFailed, data.validAfter, data.validUntil, getMemoryBytesFromOffset(outOpInfo.contextOffset));\\n\\n    if (aggregator != address(0) && aggregator != address(1)) {\\n        AggregatorStakeInfo memory aggregatorInfo = AggregatorStakeInfo(aggregator, _getStakeInfo(aggregator));\\n        revert ValidationResultWithAggregation(returnInfo, senderInfo, factoryInfo, paymasterInfo, aggregatorInfo);\\n    }\\n    revert ValidationResult(returnInfo, senderInfo, factoryInfo, paymasterInfo);\\n\\n}\\n```\\n