Fail to download sonar-scanner-engine-shaded-9.7.1.62043-all.jar

I keep getting an error from running a .net scan.
Sonarqube in k8s web interface accessible and fine.

WORKS - http://localhost:30009/batch/index and returns

sonar-scanner-engine-shaded-9.7.1.62043-all.jar|3842e0cb649733fa7f81884057a20d72

However http://localhost:30009/batch/file?name=sonar-scanner-engine-shaded-9.7.1.62043-all.ja
return OK-200 but never gives any chunks, it shows file size of 39Mb but never downloads.

Any help please.

18:41:40.118 INFO: Scanner configuration file: C:\Users\UserA\.dotnet\tools\.store\dotnet-sonarscanner\5.8.0\dotnet-sonarscanner\5.8.0\tools\net5.0\any\sonar-scanner-4.7.0.2747\bin\..\conf\sonar-scanner.properties
18:41:40.121 INFO: Project root configuration file: C:\Pkg\sms-connector\DlbSmsConnector\.sonarqube\out\sonar-project.properties
18:41:40.149 INFO: SonarScanner 4.7.0.2747
18:41:40.149 INFO: Java 19.0.1 Oracle Corporation (64-bit)
18:41:40.149 INFO: Windows 11 10.0 amd64
18:41:40.265 DEBUG: keyStore is : 
18:41:40.265 DEBUG: keyStore type is : pkcs12
18:41:40.265 DEBUG: keyStore provider is :
18:41:40.265 DEBUG: init keystore
18:41:40.266 DEBUG: init keymanager of type SunX509
18:41:40.393 DEBUG: Create: C:\Users\UserA\.sonar\cache
18:41:40.394 INFO: User cache: C:\Users\UserA\.sonar\cache
18:41:40.394 DEBUG: Create: C:\Users\UserA\.sonar\cache\_tmp
18:41:40.397 DEBUG: Extract sonar-scanner-api-batch in temp...
18:41:40.400 DEBUG: Get bootstrap index...
18:41:40.400 DEBUG: Download: http://localhost:30009/batch/index
18:41:40.449 DEBUG: Get bootstrap completed
18:41:40.454 DEBUG: Download http://localhost:30009/batch/file?name=sonar-scanner-engine-shaded-9.7.1.62043-all.jar to C:\Users\UserA\.sonar\cache\_tmp\fileCache5452730354611494976.tmp
18:42:59.895 INFO: ------------------------------------------------------------------------
18:42:59.895 INFO: EXECUTION FAILURE
18:42:59.895 INFO: ------------------------------------------------------------------------
18:42:59.896 INFO: Total time: 1:19.792s
18:42:59.904 INFO: Final Memory: 3M/80M
18:42:59.905 INFO: ------------------------------------------------------------------------
18:42:59.905 ERROR: Error during SonarScanner execution
org.sonarsource.scanner.api.internal.ScannerException: Unable to execute SonarScanner analysis
        at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory.lambda$createLauncher$0(IsolatedLauncherFactory.java:85)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
        at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory.createLauncher(IsolatedLauncherFactory.java:74)
        at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory.createLauncher(IsolatedLauncherFactory.java:70)
        at org.sonarsource.scanner.api.EmbeddedScanner.doStart(EmbeddedScanner.java:185)
        at org.sonarsource.scanner.api.EmbeddedScanner.start(EmbeddedScanner.java:123)
        at org.sonarsource.scanner.cli.Main.execute(Main.java:73)
        at org.sonarsource.scanner.cli.Main.main(Main.java:61)
Caused by: java.lang.IllegalStateException: Fail to download sonar-scanner-engine-shaded-9.7.1.62043-all.jar to C:\Users\UserA\.sonar\cache\_tmp\fileCache5452730354611494976.tmp
        at org.sonarsource.scanner.api.internal.cache.FileCache.download(FileCache.java:100)
        at org.sonarsource.scanner.api.internal.cache.FileCache.get(FileCache.java:84)
        at org.sonarsource.scanner.api.internal.JarDownloader.lambda$getScannerEngineFiles$0(JarDownloader.java:60)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
        at org.sonarsource.scanner.api.internal.JarDownloader.getScannerEngineFiles(JarDownloader.java:61)
        at org.sonarsource.scanner.api.internal.JarDownloader.download(JarDownloader.java:53)
        at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory.lambda$createLauncher$0(IsolatedLauncherFactory.java:76)
        at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:789)
        at java.base/java.net.Socket$SocketInputStream.read(Socket.java:1025)
        at org.sonarsource.scanner.api.internal.shaded.okio.Okio$2.read(Okio.java:140)
        at org.sonarsource.scanner.api.internal.shaded.okio.AsyncTimeout$2.read(AsyncTimeout.java:237)
        at org.sonarsource.scanner.api.internal.shaded.okio.RealBufferedSource.request(RealBufferedSource.java:72)
        at org.sonarsource.scanner.api.internal.shaded.okio.RealBufferedSource.require(RealBufferedSource.java:65)
        at org.sonarsource.scanner.api.internal.shaded.okio.RealBufferedSource.readHexadecimalUnsignedLong(RealBufferedSource.java:307)
        at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.http1.Http1ExchangeCodec$ChunkedSource.readChunkSize(Http1ExchangeCodec.java:492)
        at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.http1.Http1ExchangeCodec$ChunkedSource.read(Http1ExchangeCodec.java:471)
        at org.sonarsource.scanner.api.internal.shaded.okhttp.internal.connection.Exchange$ResponseBodySource.read(Exchange.java:286)
        at org.sonarsource.scanner.api.internal.shaded.okio.RealBufferedSource$1.read(RealBufferedSource.java:447)
        at java.base/java.io.InputStream.transferTo(InputStream.java:790)
        at java.base/java.nio.file.Files.copy(Files.java:3170)
        at org.sonarsource.scanner.api.internal.ServerConnection.downloadFile(ServerConnection.java:82)
        at org.sonarsource.scanner.api.internal.JarDownloader$ScannerFileDownloader.download(JarDownloader.java:73)
        at org.sonarsource.scanner.api.internal.cache.FileCache.download(FileCache.java:98)
        ... 19 more
Process returned exit code 1
The SonarScanner did not complete successfully
18:42:59.954  Post-processing failed. Exit code: 1
{
	"Health": "GREEN",
	"Health Causes": [

	],
	"System": {
		"Server ID": "AA2DD71C-AYS90KPp5tVoc9sbMFt4",
		"Version": "9.7.1.62043",
		"Docker": true,
		"High Availability": false,
		"Official Distribution": true,
		"Force authentication": false,
		"Home Dir": "/opt/sonarqube",
		"Data Dir": "/opt/sonarqube/data",
		"Temp Dir": "/opt/sonarqube/temp",
		"Processors": 6
	},
	"Database": {
		"Database": "PostgreSQL",
		"Database Version": "15.1 (Debian 15.1-1.pgdg110+1)",
		"Username": "postgres",
		"URL": "jdbc:postgresql://postgres:5432/sonarqube",
		"Driver": "PostgreSQL JDBC Driver",
		"Driver Version": "42.4.1",
		"Default transaction isolation": "TRANSACTION_READ_COMMITTED"
	},
	"Bundled": {
		"python": "3.19.0.10254 [Python Code Quality and Security]",
		"go": "1.11.0.3905 [Go Code Quality and Security]",
		"kotlin": "2.10.0.1456 [Kotlin Code Quality and Security]",
		"jacoco": "1.1.1.1157 [JaCoCo]",
		"iac": "1.9.2.2279 [IaC Code Quality and Security]",
		"javascript": "9.9.0.19492 [JavaScript/TypeScript/CSS Code Quality and Security]",
		"ruby": "1.11.0.3905 [Ruby Code Quality and Security]",
		"sonarscala": "1.11.0.3905 [Scala Code Quality and Security]",
		"csharp": "8.46.0.54807 [C# Code Quality and Security]",
		"java": "7.14.0.30229 [Java Code Quality and Security]",
		"web": "3.6.0.3106 [HTML Code Quality and Security]",
		"xml": "2.6.1.3686 [XML Code Quality and Security]",
		"flex": "2.7.0.2865 [Flex Code Quality and Security]",
		"php": "3.25.0.9077 [PHP Code Quality and Security]",
		"text": "1.1.0.282 [Text file Code Quality and Security]",
		"vbnet": "8.46.0.54807 [VB.NET Code Quality and Security]",
		"config": "1.2.0.267 [Configuration detection fot Code Quality and Security]"
	},
	"Plugins": {

	},
	"Web JVM State": {
		"Max Memory (MB)": 512,
		"Free Memory (MB)": 49,
		"Heap Committed (MB)": 128,
		"Heap Init (MB)": 128,
		"Heap Max (MB)": 512,
		"Heap Used (MB)": 77,
		"Non Heap Committed (MB)": 163,
		"Non Heap Init (MB)": 7,
		"Non Heap Used (MB)": 155,
		"System Load Average": "10.2% (last minute)",
		"Threads": 33
	},
	"Web Database Connection": {
		"Pool Total Connections": 10,
		"Pool Active Connections": 1,
		"Pool Idle Connections": 9,
		"Pool Max Connections": 60,
		"Pool Min Idle Connections": 10,
		"Pool Max Wait (ms)": 8000,
		"Pool Max Lifetime (ms)": 1800000
	},
	"Web Logging": {
		"Logs Level": "INFO",
		"Logs Dir": "/opt/sonarqube/logs"
	},
	"Web JVM Properties": {
		"awt.toolkit": "sun.awt.X11.XToolkit",
		"catalina.base": "/opt/sonarqube/temp/tc",
		"catalina.home": "/opt/sonarqube/temp/tc",
		"catalina.useNaming": "false",
		"com.redhat.fips": "false",
		"com.zaxxer.hikari.pool_number": "1",
		"file.encoding": "UTF-8",
		"file.separator": "/",
		"http.agent": "SonarQube 9.7.1.62043 # AA2DD71C-AYS90KPp5tVoc9sbMFt4",
		"http.nonProxyHosts": "localhost|127.*|[::1]",
		"java.awt.graphicsenv": "sun.awt.X11GraphicsEnvironment",
		"java.awt.headless": "true",
		"java.awt.printerjob": "sun.print.PSPrinterJob",
		"java.class.path": "./lib/sonar-application-9.7.1.62043.jar:/opt/sonarqube/lib/jdbc/postgresql/postgresql-42.4.1.jar",
		"java.class.version": "55.0",
		"java.home": "/usr/lib/jvm/java-11-openjdk",
		"java.io.tmpdir": "/opt/sonarqube/temp",
		"java.library.path": "/usr/lib/jvm/java-11-openjdk/lib/server:/usr/lib/jvm/java-11-openjdk/lib:/usr/lib/jvm/java-11-openjdk/../lib:/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib",
		"java.runtime.name": "OpenJDK Runtime Environment",
		"java.runtime.version": "11.0.15+10-alpine-r0",
		"java.specification.name": "Java Platform API Specification",
		"java.specification.vendor": "Oracle Corporation",
		"java.specification.version": "11",
		"java.vendor": "Alpine",
		"java.vendor.url": "https://alpinelinux.org/",
		"java.vendor.url.bug": "https://gitlab.alpinelinux.org/alpine/aports/issues",
		"java.version": "11.0.15",
		"java.version.date": "2022-04-19",
		"java.vm.compressedOopsMode": "32-bit",
		"java.vm.info": "mixed mode",
		"java.vm.name": "OpenJDK 64-Bit Server VM",
		"java.vm.specification.name": "Java Virtual Machine Specification",
		"java.vm.specification.vendor": "Oracle Corporation",
		"java.vm.specification.version": "11",
		"java.vm.vendor": "Alpine",
		"java.vm.version": "11.0.15+10-alpine-r0",
		"jdk.debug": "release",
		"line.separator": "\n",
		"logbackDisableServletContainerInitializer": "true",
		"org.apache.catalina.startup.EXIT_ON_INIT_FAILURE": "true",
		"org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH": "true",
		"os.arch": "amd64",
		"os.name": "Linux",
		"os.version": "5.15.74.2-microsoft-standard-WSL2",
		"path.separator": ":",
		"sun.arch.data.model": "64",
		"sun.boot.library.path": "/usr/lib/jvm/java-11-openjdk/lib",
		"sun.cpu.endian": "little",
		"sun.cpu.isalist": "",
		"sun.io.unicode.encoding": "UnicodeLittle",
		"sun.java.command": "org.sonar.server.app.WebServer /opt/sonarqube/temp/sq-process17936980112666222922properties",
		"sun.java.launcher": "SUN_STANDARD",
		"sun.jnu.encoding": "UTF-8",
		"sun.management.compiler": "HotSpot 64-Bit Tiered Compilers",
		"sun.os.patch.level": "unknown",
		"user.country": "US",
		"user.dir": "/opt/sonarqube",
		"user.home": "/home/sonarqube",
		"user.language": "en",
		"user.name": "sonarqube",
		"user.timezone": "GMT"
	},
	"Compute Engine Tasks": {
		"Pending": 0,
		"Longest Time Pending (ms)": 0,
		"In Progress": 0,
		"Processed With Error": 0,
		"Processed With Success": 0,
		"Processing Time (ms)": 0,
		"Worker Count": 1,
		"Max Worker Count": 1,
		"Workers Paused": false
	},
	"Compute Engine JVM State": {
		"Max Memory (MB)": 512,
		"Free Memory (MB)": 54,
		"Heap Committed (MB)": 128,
		"Heap Init (MB)": 128,
		"Heap Max (MB)": 512,
		"Heap Used (MB)": 73,
		"Non Heap Committed (MB)": 68,
		"Non Heap Init (MB)": 7,
		"Non Heap Used (MB)": 64,
		"System Load Average": "10.2% (last minute)",
		"Threads": 13
	},
	"Compute Engine Database Connection": {
		"Pool Total Connections": 10,
		"Pool Active Connections": 0,
		"Pool Idle Connections": 10,
		"Pool Max Connections": 60,
		"Pool Min Idle Connections": 10,
		"Pool Max Wait (ms)": 8000,
		"Pool Max Lifetime (ms)": 1800000
	},
	"Compute Engine Logging": {
		"Logs Level": "INFO",
		"Logs Dir": "/opt/sonarqube/logs"
	},
	"Compute Engine JVM Properties": {
		"awt.toolkit": "sun.awt.X11.XToolkit",
		"com.redhat.fips": "false",
		"com.zaxxer.hikari.pool_number": "1",
		"file.encoding": "UTF-8",
		"file.separator": "/",
		"http.nonProxyHosts": "localhost|127.*|[::1]",
		"java.awt.graphicsenv": "sun.awt.X11GraphicsEnvironment",
		"java.awt.headless": "true",
		"java.awt.printerjob": "sun.print.PSPrinterJob",
		"java.class.path": "./lib/sonar-application-9.7.1.62043.jar:/opt/sonarqube/lib/jdbc/postgresql/postgresql-42.4.1.jar",
		"java.class.version": "55.0",
		"java.home": "/usr/lib/jvm/java-11-openjdk",
		"java.io.tmpdir": "/opt/sonarqube/temp",
		"java.library.path": "/usr/lib/jvm/java-11-openjdk/lib/server:/usr/lib/jvm/java-11-openjdk/lib:/usr/lib/jvm/java-11-openjdk/../lib:/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib",
		"java.runtime.name": "OpenJDK Runtime Environment",
		"java.runtime.version": "11.0.15+10-alpine-r0",
		"java.specification.name": "Java Platform API Specification",
		"java.specification.vendor": "Oracle Corporation",
		"java.specification.version": "11",
		"java.vendor": "Alpine",
		"java.vendor.url": "https://alpinelinux.org/",
		"java.vendor.url.bug": "https://gitlab.alpinelinux.org/alpine/aports/issues",
		"java.version": "11.0.15",
		"java.version.date": "2022-04-19",
		"java.vm.compressedOopsMode": "32-bit",
		"java.vm.info": "mixed mode",
		"java.vm.name": "OpenJDK 64-Bit Server VM",
		"java.vm.specification.name": "Java Virtual Machine Specification",
		"java.vm.specification.vendor": "Oracle Corporation",
		"java.vm.specification.version": "11",
		"java.vm.vendor": "Alpine",
		"java.vm.version": "11.0.15+10-alpine-r0",
		"jdk.debug": "release",
		"line.separator": "\n",
		"os.arch": "amd64",
		"os.name": "Linux",
		"os.version": "5.15.74.2-microsoft-standard-WSL2",
		"path.separator": ":",
		"sun.arch.data.model": "64",
		"sun.boot.library.path": "/usr/lib/jvm/java-11-openjdk/lib",
		"sun.cpu.endian": "little",
		"sun.cpu.isalist": "",
		"sun.io.unicode.encoding": "UnicodeLittle",
		"sun.java.command": "org.sonar.ce.app.CeServer /opt/sonarqube/temp/sq-process4304092410225579574properties",
		"sun.java.launcher": "SUN_STANDARD",
		"sun.jnu.encoding": "UTF-8",
		"sun.management.compiler": "HotSpot 64-Bit Tiered Compilers",
		"sun.os.patch.level": "unknown",
		"user.country": "US",
		"user.dir": "/opt/sonarqube",
		"user.home": "/home/sonarqube",
		"user.language": "en",
		"user.name": "sonarqube",
		"user.timezone": "GMT"
	},
	"Search State": {
		"State": "GREEN",
		"CPU Usage (%)": 0,
		"Disk Available": "1.0 TB",
		"Store Size": "10.6 MB",
		"Translog Size": "1.3 kB",
		"Open File Descriptors": 176,
		"Max File Descriptors": 1048576,
		"JVM Heap Usage": "24.0%",
		"JVM Heap Used": "132.2 MB",
		"JVM Heap Max": "536.9 MB",
		"JVM Non Heap Used": "129.7 MB",
		"JVM Threads": 57,
		"Field Data Memory": "574.3 kB",
		"Field Data Circuit Breaker Limit": "214.7 MB",
		"Field Data Circuit Breaker Estimation": "574.3 kB",
		"Request Circuit Breaker Limit": "322.1 MB",
		"Request Circuit Breaker Estimation": "0 bytes",
		"Query Cache Memory": "0 bytes",
		"Request Cache Memory": "0 bytes"
	},
	"Search Indexes": {
		"Index components - Docs": 2,
		"Index components - Shards": 5,
		"Index components - Store Size": "14.4 kB",
		"Index projectmeasures - Docs": 2,
		"Index projectmeasures - Shards": 5,
		"Index projectmeasures - Store Size": "13.3 kB",
		"Index metadatas - Docs": 17,
		"Index metadatas - Shards": 1,
		"Index metadatas - Store Size": "34.3 kB",
		"Index rules - Docs": 9503,
		"Index rules - Shards": 2,
		"Index rules - Store Size": "10.5 MB",
		"Index issues - Docs": 1,
		"Index issues - Shards": 5,
		"Index issues - Store Size": "6.1 kB",
		"Index views - Docs": 0,
		"Index views - Shards": 5,
		"Index views - Store Size": "1.1 kB",
		"Index users - Docs": 2,
		"Index users - Shards": 1,
		"Index users - Store Size": "11.8 kB"
	},
	"ALMs": {

	},
	"Server Push Connections": {
		"SonarLint Connected Clients": 0
	},
	"Settings": {
		"http.nonProxyHosts": "localhost|127.*|[::1]",
		"process.gracefulStopTimeout": "270000",
		"process.index": "2",
		"process.key": "web",
		"process.sharedDir": "/opt/sonarqube/temp",
		"projects.default.visibility": "public",
		"qualitygate.default": "AYS90J9f5tVoc9sbMFtn",
		"sonar.authenticator.ignoreStartupFailure": "false",
		"sonar.blueGreenEnabled": "false",
		"sonar.ce.gracefulStopTimeOutInMs": "21600000",
		"sonar.ce.javaAdditionalOpts": "",
		"sonar.ce.javaOpts": "-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError",
		"sonar.cluster.enabled": "false",
		"sonar.cluster.kubernetes": "false",
		"sonar.cluster.name": "sonarqube",
		"sonar.cluster.node.name": "sonarqube-38d422b1-0d96-4552-9c00-53d7f09ae776",
		"sonar.cluster.node.port": "9003",
		"sonar.cluster.web.startupLeader": "true",
		"sonar.core.id": "AA2DD71C-AYS90KPp5tVoc9sbMFt4",
		"sonar.core.startTime": "2022-11-28T11:49:21+0000",
		"sonar.es.port": "37713",
		"sonar.forceAuthentication": "false",
		"sonar.jdbc.driverPath": "/opt/sonarqube/lib/jdbc/postgresql/postgresql-42.4.1.jar",
		"sonar.jdbc.maxActive": "60",
		"sonar.jdbc.maxWait": "8000",
		"sonar.jdbc.minIdle": "10",
		"sonar.jdbc.password": "xxxxxxxx",
		"sonar.jdbc.url": "jdbc:postgresql://postgres:5432/sonarqube",
		"sonar.jdbc.username": "postgres",
		"sonar.log.console": "true",
		"sonar.log.jsonOutput": "false",
		"sonar.path.data": "/opt/sonarqube/data",
		"sonar.path.home": "/opt/sonarqube",
		"sonar.path.logs": "/opt/sonarqube/logs",
		"sonar.path.temp": "/opt/sonarqube/temp",
		"sonar.path.web": "/opt/sonarqube/web",
		"sonar.search.host": "127.0.0.1",
		"sonar.search.javaAdditionalOpts": "",
		"sonar.search.javaOpts": "-Xmx512m -Xms512m -XX:MaxDirectMemorySize\u003d256m -XX:+HeapDumpOnOutOfMemoryError",
		"sonar.search.port": "9001",
		"sonar.telemetry.compression": "true",
		"sonar.telemetry.enable": "true",
		"sonar.telemetry.frequencyInSeconds": "10800",
		"sonar.telemetry.url": "https://telemetry.sonarsource.com/sonarqube",
		"sonar.updatecenter.activate": "true",
		"sonar.web.gracefulStopTimeOutInMs": "240000",
		"sonar.web.javaAdditionalOpts": "",
		"sonar.web.javaOpts": "-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError",
		"sonar.web.sso.emailHeader": "X-Forwarded-Email",
		"sonar.web.sso.enable": "false",
		"sonar.web.sso.groupsHeader": "X-Forwarded-Groups",
		"sonar.web.sso.loginHeader": "X-Forwarded-Login",
		"sonar.web.sso.nameHeader": "X-Forwarded-Name",
		"sonar.web.sso.refreshIntervalInMinutes": "5",
		"Default New Code Definition": "PREVIOUS_VERSION"
	}
}

Hi,

What happens when you access that URL manually?

Is there something on your network, e.g. a proxy, that could be interfering with the download?

 
Ann

When I visit the url I see that the browser is trying to download the file. I can see that it’s 39 MB, however fines never starts downloading, and after a while browser gives up and stops waiting

Hi,

It might be interesting to check the SonarQube access.log to see what it has to say about those requests, but ultimately I think you probably need to talk to your network folks to figure out what on the network is blocking delivery and make it stop.

 
Ann

Hi, I have pretty similar issue

I faced with it trying to launch sonarqube server locally as a docker instance so I am not sure what network issue can be in such case. access.log just return /GET 200 for file download request.

Is there something else that can be checked?

Thanks!