\\\\\#!/bin/sh \\\\\# \\\\\# Copyright © 2015-2021 the original authors. \\\\\# \\\\\# Licensed under the Apache License, Version 2.0 (the "License"); \\\\\# you may not use this file except in compliance with the License. \\\\\# You may obtain a copy of the License at \\\\\# \\\\\# https://www.apache.org/licenses/LICENSE-2.0 \\\\\# \\\\\# Unless required by applicable law or agreed to in writing, software \\\\\# distributed under the License is distributed on an "AS IS" BASIS, \\\\\# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \\\\\# See the License for the specific language governing permissions and \\\\\# limitations under the License. \\\\\# \\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\# \\\\\# \\\\\# Gradle start up script for POSIX generated by Gradle. \\\\\# \\\\\# Important for running: \\\\\# \\\\\# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is \\\\\# noncompliant, but you have some other compliant shell such as ksh or \\\\\# bash, then to run this script, type that shell name before the whole \\\\\# command line, like: \\\\\# \\\\\# ksh Gradle \\\\\# \\\\\# Busybox and similar reduced shells will NOT work, because this script \\\\\# requires all of these POSIX shell features: \\\\\# * functions; \\\\\# * expansions «\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#var», «\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#{var}», «\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#{var:-default}», «\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#{var+SET}», \\\\\# «\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#{var\\\\\#prefix}», «\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#{var%suffix}», and «\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#( cmd )»; \\\\\# * compound commands having a testable exit status, especially «case»; \\\\\# * various built-in commands including «command», «set», and «ulimit». \\\\\# \\\\\# Important for patching: \\\\\# \\\\\# (2) This script targets any POSIX shell, so it avoids extensions provided \\\\\# by Bash, Ksh, etc; in particular arrays are avoided. \\\\\# \\\\\# The "traditional" practice of packing multiple parameters into a \\\\\# space-separated string is a well documented source of bugs and security \\\\\# problems, so this is (mostly) avoided, by progressively accumulating \\\\\# options in "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#@", and eventually passing that to Java. \\\\\# \\\\\# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, \\\\\# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; \\\\\# see the in-line comments for details. \\\\\# \\\\\# There are tweaks for specific operating systems such as AIX, CygWin, \\\\\# Darwin, MinGW, and NonStop. \\\\\# \\\\\# (3) This script is generated from the Groovy template \\\\\# https://github.com/gradle/gradle/blob/master/subprojects/\#[[\#[[\$]]#]]\#{IJ_BASE_PACKAGE}s/src/main/resources/org/gradle/api/internal/\#[[\#[[\$]]#]]\#{IJ_BASE_PACKAGE}s/unixStartScript.txt \\\\\# within the Gradle project. \\\\\# \\\\\# You can find Gradle at https://github.com/gradle/gradle/. \\\\\# \\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\#\\\\\# \\\\\# Attempt to set APP_HOME \\\\\# Resolve links: \\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#0 may be a link app_path=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#0 \\\\\# Need this for daisy-chained symlinks. while APP_HOME=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#{app_path%"\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#{app_path\\\\\#\\\\\#*/}"} \\\\\# leaves a trailing /; empty if no leading path [ -h "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#app_path" ] do ls=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#( ls -ld "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#app_path" ) link=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#{ls\\\\\#*' -> '} case \\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#link in \\\\\#( /*) app_path=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#link ;; \\\\\#( *) app_path=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#APP_HOME\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#link ;; esac done APP_HOME=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#( cd "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#{APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" APP_BASE_NAME=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#{0\\\\\#\\\\\#*/} \\\\\# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' \\\\\# Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum warn () { echo "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#*" } >&2 die () { echo echo "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#*" echo exit 1 } >&2 \\\\\# OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false case "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#( uname )" in \\\\\#( CYGWIN* ) cygwin=true ;; \\\\\#( Darwin* ) darwin=true ;; \\\\\#( MSYS* | MINGW* ) msys=true ;; \\\\\#( NONSTOP* ) nonstop=true ;; esac CLASSPATH=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#APP_HOME/gradle/wrapper/gradle-wrapper.jar \\\\\# Determine the Java command to use to start the JVM. if [ -n "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#JAVA_HOME" ] ; then if [ -x "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#JAVA_HOME/jre/sh/java" ] ; then \\\\\# IBM's JDK on AIX uses strange locations for the executables JAVACMD=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#JAVA_HOME/jre/sh/java else JAVACMD=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#JAVA_HOME/bin/java fi if [ ! -x "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: \\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#JAVA_HOME Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi \\\\\# Increase the maximum file descriptors if we can. if ! "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#cygwin" && ! "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#darwin" && ! "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#nonstop" ; then case \\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#MAX_FD in \\\\\#( max*) MAX_FD=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case \\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#MAX_FD in \\\\\#( '' | soft) :;; \\\\\#( *) ulimit -n "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#MAX_FD" || warn "Could not set maximum file descriptor limit to \\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#MAX_FD" esac fi \\\\\# Collect all arguments for the java command, stacking in reverse order: \\\\\# * args from the command line \\\\\# * the main class name \\\\\# * -classpath \\\\\# * -D...appname settings \\\\\# * --module-path (only if needed) \\\\\# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. \\\\\# For Cygwin or MSYS, switch paths to Windows format before running java if "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#cygwin" || "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#msys" ; then APP_HOME=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#( cygpath --path --mixed "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#APP_HOME" ) CLASSPATH=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#( cygpath --path --mixed "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#CLASSPATH" ) JAVACMD=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#( cygpath --unix "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#JAVACMD" ) \\\\\# Now convert the arguments - kludge to limit ourselves to /bin/sh for arg do if case \\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#arg in \\\\\#( -*) false ;; \\\\\# don't mess with options \\\\\#( /?*) t=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#{arg\\\\\#/} t=/\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#{t%%/*} \\\\\# looks like a POSIX filepath [ -e "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#t" ] ;; \\\\\#( *) false ;; esac then arg=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#( cygpath --path --ignore --mixed "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#arg" ) fi \\\\\# Roll the args list around exactly as many times as the number of \\\\\# args, so each arg winds up back in the position where it started, but \\\\\# possibly modified. \\\\\# \\\\\# NB: a `for` loop captures its iteration list before it begins, so \\\\\# changing the positional parameters here affects neither the number of \\\\\# iterations, nor the values presented in `arg`. shift \\\\\# remove old arg set -- "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#@" "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#arg" \\\\\# push replacement arg done fi \\\\\# Collect all arguments for the java command; \\\\\# * \\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#DEFAULT_JVM_OPTS, \\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#JAVA_OPTS, and \\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#GRADLE_OPTS can contain fragments of \\\\\# shell script including quotes and variable substitutions, so put them in \\\\\# double quotes to make sure that they get re-expanded; and \\\\\# * put everything else in single quotes, so that it's not re-expanded. set -- \ "-Dorg.gradle.appname=\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#APP_BASE_NAME" \ -classpath "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#CLASSPATH" \ org.gradle.wrapper.GradleWrapperMain \ "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#@" \\\\\# Use "xargs" to parse quoted args. \\\\\# \\\\\# With -n1 it outputs one arg per line, with the quotes and backslashes removed. \\\\\# \\\\\# In Bash we could simply go: \\\\\# \\\\\# readarray ARGS < <( xargs -n1 <<<"\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#var" ) && \\\\\# set -- "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#{ARGS[@]}" "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#@" \\\\\# \\\\\# but POSIX shell has neither arrays nor command substitution, so instead we \\\\\# post-process each arg (as a line of input to sed) to backslash-escape any \\\\\# character that might be a shell metacharacter, then use eval to reverse \\\\\# that process (while maintaining the separation between arguments), and wrap \\\\\# the whole thing up as a single "set" statement. \\\\\# \\\\\# This will of course break if any of these variables contains a newline or \\\\\# an unmatched quote. \\\\\# eval "set -- \\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#( printf '%s\n' "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#DEFAULT_JVM_OPTS \\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#JAVA_OPTS \\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#GRADLE_OPTS" | xargs -n1 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | tr '\n' ' ' )" '"\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#@"' exec "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#JAVACMD" "\\\\#[[\\\\#[[\\\#[[\\#[[\#[[\$]]#]]\#]]\\#]]\\\#]]\\\\#@"