(CommandList
  children: [
    (FuncDef
      name: p666_show_usage
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-ne)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(p666_printf_error)} {(DQ (${ VSub_At '@'))})]
                  spids: [-1 117]
                )
              ]
              spids: [-1 129]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {('usage: posixcube.sh -h HOST... [OPTION]... COMMAND...\n') ('\n') 
                      (
'  posixcube.sh is a POSIX compliant shell script server automation framework.\n'
                      ) ('  Use consistent APIs for common tasks and package functionality and file\n') 
                      ('  templates in cubes (like recipes/playbooks from other frameworks).\n') ('\n') ('  -?        Help.\n') 
                      (
'  -h HOST   Target host. Option may be specified multiple times. If a host has\n'
                      ) ("            a wildcard ('*'), then HOST is interpeted as a regular expression,\n") 
                      (
"            with '*' replaced with '.*' and any matching hosts in the following\n"
                      ) ('            files are added to the HOST list: /etc/ssh_config,\n') 
                      ('            /etc/ssh/ssh_config, ~/.ssh/config, /etc/ssh_known_hosts,\n') ('            /etc/ssh/ssh_known_hosts, ~/.ssh/known_hosts, and /etc/hosts.\n') 
                      (
'  -c CUBE   Execute a cube. Option may be specified multiple times. If COMMANDS\n'
                      ) ('            are also specified, cubes are run first.\n') 
                      ('  -u USER   SSH user. Defaults to ${USER}.\n') ('  -e ENVAR  Shell script with environment variable assignments which is\n') 
                      ('            uploaded and sourced on each HOST. Option may be specified\n') ('            multiple times. Files ending with .enc will be decrypted\n') 
                      (
'            temporarily. If not specified, defaults to envars*sh envars*sh.enc\n'
                      ) ('  -p PWD    Password for decrypting .enc ENVAR files.\n') 
                      (
'  -w PWDF   File that contains the password for decrypting .enc ENVAR files.\n'
                      ) ('            Defaults to ~/.posixcube.pwd\n') 
                      ('  -r ROLE   Role name. Option may be specified multiple times.\n') ('  -o P=V    Set the specified parameter P with the value V. Do not put double\n') 
                      (
'            quotes around V. If V contains *, try to find matching hosts per\n'
                      ) ('            the -h algorithm. Option may be specified multiple times.\n') 
                      (
'  -i CUBE   Upload a CUBE but do not execute it. This is needed when one CUBE\n'
                      ) ('            includes this CUBE using cube_include.\n') ('  -v        Show version information.\n') 
                      ('  -d        Print debugging information.\n') ('  -q        Quiet; minimize output.\n') 
                      (
'  -b        If using bash, install programmable tab completion for SSH hosts.\n'
                      ) ('  -s        Skip remote host initialization (making ~/posixcubes, uploading\n') 
                      ('            posixcube.sh, etc.\n') ('  -k        Keep the cube_exec.sh generated script.\n') 
                      ('  -z SPEC   Use the SPEC set of options from the ./cubespecs.ini file\n') ('  -a        Asynchronously execute remote CUBEs/COMMANDs. Works on Bash only.\n') 
                      (
'  -y        If a HOST returns a non-zero code, continue processing other HOSTs.\n'
                      ) ('  COMMAND   Remote command to run on each HOST. Option may be specified\n') 
                      (
'            multiple times. If no HOSTs are specified, available sub-commands:\n'
                      ) ('              edit: Decrypt, edit, and re-encrypt ENVAR file with $EDITOR.\n') 
                      ('              show: Decrypt and print ENVAR file.\n') ('              source: Source all ENVAR files. Must be run with\n') 
                      (
'                      POSIXCUBE_SOURCED (see Public Variables section below).\n'
                      ) ('\n') ('Description:\n') ('\n') 
                      (
'  posixcube.sh is used to execute CUBEs and/or COMMANDs on one or more HOSTs.\n'
                      ) ('  \n') ('  A CUBE is a shell script or directory containing shell scripts. The CUBE\n') 
                      (
"  is rsync'ed to each HOST. If CUBE is a shell script, it's executed. If\n"
                      ) ('  CUBE is a directory, a shell script of the same name in that directory\n') 
                      ('  is executed. In both cases, the directory is changed to the directory\n') ('  containing the script before execution so that you may reference files\n') 
                      ('  such as templates using relative paths.\n') ('  \n') ('  An ENVAR script is encouraged to use environment variable names of the form\n') 
                      (
'  cubevar_${uniquecontext}_envar="value". If a CUBE directory contains the\n'
                      ) ("  file `envars.sh`, it's sourced before anything else (including `-e ENVARs`).\n") ('  \n') 
                      (
'  Both CUBEs and COMMANDs may execute any of the functions defined in the\n'
                      ) ('  "Public APIs" in the posixcube.sh script. Short descriptions of the functions\n') 
                      (
'  are in the APIs section below. See the source comments above each function\n'
                      ) ('  for details.\n') ('  \n') 
                      ('Examples (assuming posixcube.sh is on ${PATH}, or executed absolutely):\n') ('\n') ('  posixcube.sh -h socrates uptime\n') ('  \n') 
                      (
'    Run the `uptime` command on host `socrates`. This is not very different\n'
                      ) ('    from ssh ${USER}@socrates uptime, except that COMMANDs (`uptime`) have\n') 
                      ('    access to the cube_* public functions.\n') ('  \n') ('  posixcube.sh -h socrates -c test.sh\n') ('  \n') 
                      ('    Run the `test.sh` script (CUBE) on host `socrates`. The script has\n') ('    access to the cube_* public functions.\n') ('  \n') ('  posixcube.sh -h socrates -c test\n') 
                      ('  \n') ('    Upload the entire `test` directory (CUBE) to the host `socrates` and\n') 
                      ('    then execute the `test.sh` script within that directory (the name\n') ('    of the script is expected to be the same as the name of the CUBE). This\n') 
                      ('    allows for easily packaging other scripts and resources needed by\n') ('    `test.sh`.\n') ('  \n') ('  posixcube.sh -u root -h socrates -h seneca uptime\n') ('  \n') 
                      ('    Run the `uptime` command on hosts `socrates` and `seneca`\n') ('    as the user `root`.\n') ('  \n') ('  posixcube.sh -h web*.test.com uptime\n') ('  \n') 
                      (
'    Run the `uptime` command on all hosts matching the regular expression\n'
                      ) ('    web.*.test.com in the SSH configuration files.\n') ('  \n') 
                      (
'  sudo ${PATH_TO}/posixcube.sh -b && . /etc/bash_completion.d/posixcube_completion.sh\n'
                      ) ('  \n') ('    For Bash users, install a programmable completion script to support tab\n') 
                      ('    auto-completion of hosts from SSH configuration files.\n') ('\n') ('  posixcube.sh -e production.sh.enc show\n') ('  \n') 
                      ('    Decrypt and show the contents of production.sh\n') ('  \n') ('  posixcube.sh -e production.sh.enc edit\n') ('  \n') 
                      (
'    Decrypt, edit, and re-encrypt the contents of production.sh with $EDITOR\n'
                      ) ('\n') ('Philosophy:\n') ('\n') 
                      (
'  Fail hard and fast. In principle, a well written script would check ${?}\n'
                      ) ('  after each command and either gracefully handle it, or report an error.\n') 
                      ('  Few people write scripts this well, so we enforce this check (using\n') ('  `cube_check_return` within all APIs) and we encourage you to do the same\n') 
                      (
'  in your scripts with `touch /etc/fstab || cube_check_return`. All cube_*\n'
                      ) ("  APIs are guaranteed to do their own checks, so you don't have to do this\n") 
                      (
"  for those calls; however, note that if you're executing a cube_* API in a\n"
                      ) ('  sub-shell, although any failures will be reported by cube_check_return,\n') 
                      (
'  the script will continue unless you also check the return of the sub-shell.\n'
                      ) ('  For example: $(cube_readlink /etc/localtime) || cube_check_return\n') 
                      (
'  With this strategy, unfortunately piping becomes more difficult. There are\n'
                      ) ('  non-standard mechanisms like pipefail and PIPESTATUS, but the standardized\n') 
                      (
'  approach is to run each command separately and check the status. For example:\n'
                      ) ('  cube_app_result1="$(command1 || cube_check_return)" || cube_check_return\n') 
                      (
'  cube_app_result2="$(printf \'%s\' "${cube_app_result1}" | command2 || cube_check_return)" || cube_check_return\n'
                      ) ('  \n') ('  We do not use `set -e` because some functions may handle all errors\n') 
                      (
'  internally (with `cube_check_return`) and use a positive return code as a\n'
                      ) ('  "benign" result (e.g. `cube_set_file_contents`).\n') ('\n') ('Frequently Asked Questions:\n') ('\n') 
                      (
'  * Why is there a long delay between "Preparing hosts" and the first remote\n'
                      ) ('    execution?\n') ('  \n') 
                      (
"    You can see details of what's happening with the `-d` flag. By default,\n"
                      ) ('    the script first loops through every host and ensures that ~/posixcubes/\n') 
                      (
'    exists, then it transfers itself to the remote host. These two actions\n'
                      ) ("    may be skipped with the `-s` parameter if you've already run the script\n") 
                      (
"    at least once and your version of this script hasn't been updated. Next,\n"
                      ) ('    the script loops through every host and transfers any CUBEs and a script\n') 
                      ('    containing the CUBEs and COMMANDs to run (`cube_exec.sh`). Finally,\n') ('    you\'ll see the "Executing on HOST..." line and the real execution starts.\n') ('\n') 
                      ('Cube Development:\n') ('\n') ("  Shell scripts don't have scoping, so to reduce the chances of function name\n") 
                      (
'  conflicts, name functions cube_${cubename}_${function} and name variables\n'
                      ) ('  cubevar_${cubename}_${var}.\n') ('\n') ('Public APIs:\n') ('  \n') ('  * cube_echo\n') 
                      ('      Print ${@} to stdout prefixed with ([$(date)] [$(hostname)]) and\n') ('      suffixed with a newline.\n') ('      Example: cube_echo "Hello World"\n') ('\n') 
                      ('  * cube_printf\n') ('      Print $1 to stdout prefixed with ([$(date)] [$(hostname)]) and\n') 
                      ('      suffixed with a newline (with optional printf arguments in $@).\n') ('      Example: cube_printf "Hello World from PID %5s" $$\n') ('\n') ('  * cube_error_echo\n') 
                      (
'      Same as cube_echo except output to stderr and include a red "Error: "\n'
                      ) ('      message prefix.\n') ('      Example: cube_error "Goodbye World"\n') ('\n') 
                      ('  * cube_error_printf\n') ('      Same as cube_printf except output to stderr and include a red "Error: "\n') 
                      ('      message prefix.\n') ('      Example: cube_error "Goodbye World from PID %5s" $$\n') ('\n') ('  * cube_throw\n') 
                      (
'      Same as cube_error_echo but also print a stack of functions and processes\n'
                      ) ('      (if available) and then call `exit 1`.\n') 
                      ('      Example: cube_throw "Expected some_file."\n') ('\n') ('  * cube_check_return\n') ('      Check if $? is non-zero and call cube_throw if so.\n') 
                      ('      Example: some_command || cube_check_return\n') ('\n') ('  * cube_include\n') ('      Include the ${1} cube\n') 
                      ('      Example: cube_include core_cube\n') ('\n') ('  * cube_check_numargs\n') 
                      ('      Call cube_throw if there are less than $1 arguments in $@\n') ('      Example: cube_check_numargs 2 "${@}"\n') ('\n') ('  * cube_service\n') 
                      ('      Run the $1 action on the $2 service.\n') ('      Example: cube_service start crond\n') ('\n') ('  * cube_package\n') 
                      (
'      Pass $@ to the package manager. Implicitly passes the the parameter\n'
                      ) ('      to say yes to questions.\n') ('      Example: cube_package install python\n') ('\n') 
                      ('  * cube_append_str\n') ('      Echo $1 with $2 appended after a space if $1 was not blank.\n') 
                      (
'      Example: cubevar_app_str=$(cube_append_str "${cubevar_app_str}" "Test")\n'
                      ) ('\n') ('  * cube_command_exists\n') 
                      ('      Check if $1 command or function exists in the current context.\n') ('      Example: cube_command_exists systemctl\n') ('\n') ('  * cube_dir_exists\n') 
                      ('      Check if $1 exists as a directory.\n') ('      Example: cube_dir_exists /etc/cron.d/\n') ('\n') ('  * cube_file_exists\n') 
                      ('      Check if $1 exists as a file with read access.\n') ('      Example: cube_file_exists /etc/cron.d/0hourly\n') ('\n') ('  * cube_operating_system\n') 
                      (
'      Detect operating system and return one of the POSIXCUBE_OS_* values.\n'
                      ) ('      Example: [ $(cube_operating_system) -eq ${POSIXCUBE_OS_LINUX} ] && ...\n') ('\n') 
                      ('  * cube_operating_system_has_flavor\n') ('      Check if the operating system flavor includes the flavor specified in $1\n') 
                      ('      by one of the POSIXCUBE_OS_FLAVOR_* values.\n') ('      Example: cube_operating_system_has_flavor ${POSIXCUBE_OS_FLAVOR_FEDORA} && ...\n') ('\n') 
                      ('  * cube_shell\n') ('      Detect running shell and return one of the CUBE_SHELL_* values.\n') 
                      ('      Example: [ $(cube_shell) -eq ${POSIXCUBE_SHELL_BASH} ] && ...\n') ('\n') ('  * cube_current_script_name\n') 
                      ('      echo the basename of the currently executing script.\n') ('      Example: script_name=$(cube_current_script_name)\n') ('\n') 
                      ('  * cube_current_script_abs_path\n') ('      echo the absolute path the currently executing script.\n') 
                      ('      Example: script_name=$(cube_current_script_abs_path)\n') ('\n') ('  * cube_file_size\n') ('      echo the size of a file $1 in bytes\n') 
                      ('      Example: cube_file_size some_file\n') ('\n') ('  * cube_set_file_contents\n') 
                      (
"      Copy the contents of $2 on top of $1 if $1 doesn't exist or the contents\n"
                      ) ('      are different than $2. If $2 ends with ".template", first evaluate all\n') 
                      ('      ${VARIABLE} expressions (except for \\${VARIABLE}).\n') ('      Example: cube_set_file_contents "/etc/npt.conf" "templates/ntp.conf"\n') ('\n') 
                      ('  * cube_set_file_contents_string\n') ("      Set the contents of $1 to the string $@. Create file if it doesn't exist.\n") 
                      ('      Example: cube_set_file_contents_string ~/.info "Hello World"\n') ('\n') ('  * cube_expand_parameters\n') 
                      (
"      echo stdin to stdout with all ${VAR}'s evaluated (except for \\${VAR})\n"
                      ) ('      Example: cube_expand_parameters < template > output\n') ('\n') ('  * cube_readlink\n') 
                      ('      Echo the absolute path of $1 without any symbolic links.\n') ('      Example: cube_readlink /etc/localtime\n') ('\n') ('  * cube_random_number\n') 
                      ('      Echo a random number between 1 and $1\n') ('      Example: cube_random_number 10\n') ('\n') ('  * cube_tmpdir\n') 
                      ('      Echo a temporary directory\n') ('      Example: cube_tmpdir\n') ('\n') ('  * cube_total_memory\n') 
                      ('      Echo total system memory in bytes\n') ('      Example: cube_total_memory\n') ('\n') ('  * cube_ensure_directory\n') 
                      ('      Ensure directory $1 exists\n') ('      Example: cube_ensure_directory ~/.ssh/\n') ('\n') ('  * cube_ensure_file\n') 
                      ('      Ensure file $1 exists\n') ('      Example: cube_ensure_file ~/.ssh/authorized_keys\n') ('\n') ('  * cube_pushd\n') 
                      ('      Equivalent to `pushd` with $1\n') ('      Example: cube_pushd ~/.ssh/\n') ('\n') ('  * cube_popd\n') ('      Equivalent to `popd`\n') 
                      ('      Example: cube_popd\n') ('\n') ('  * cube_has_role\n') ('      Return true if the role $1 is set.\n') 
                      ('      Example: cube_has_role "database_backup"\n') ('\n') ('  * cube_file_contains\n') ('      Check if the file $1 contains $2\n') 
                      ('      Example: cube_file_contains /etc/fstab nfsmount\n') ('\n') ('  * cube_stdin_contains\n') ('      Check if stdin contains $1\n') 
                      ('      Example: echo "Hello World" | cube_stdin_contains "Hello"\n') ('\n') ('  * cube_interface_ipv4_address\n') ('      Echo the IPv4 address of interface $1\n') 
                      ('      Example: cube_interface_ipv4_address eth0\n') ('\n') ('  * cube_interface_ipv6_address\n') ('      Echo the IPv6 address of interface $1\n') 
                      ('      Example: cube_interface_ipv6_address eth0\n') ('\n') ('  * cube_prompt\n') 
                      (
'      Prompt the question $1 followed by " (y/N)" and prompt for an answer.\n'
                      ) ('      A blank string answer is equivalent to No. Return true if yes, false otherwise.\n') 
                      ('      Example: cube_prompt "Are you sure?"\n') ('\n') ('  * cube_hostname\n') ('      Echo full hostname.\n') ('      Example: cube_hostname\n') ('\n') 
                      ('  * cube_user_exists\n') ('      Check if the $1 user exists\n') ('      Example: cube_user_exists nginx\n') ('\n') 
                      ('  * cube_create_user\n') ('      Create the user $1\n') ('      Example: cube_create_user nginx\n') ('\n') 
                      ('  * cube_group_exists\n') ('      Check if the $1 group exists\n') ('      Example: cube_group_exists nginx\n') ('\n') 
                      ('  * cube_create_group\n') ('      Create the group $1\n') ('      Example: cube_create_group nginx\n') ('\n') 
                      ('  * cube_group_contains_user\n') ('      Check if the $1 group contains the user $2\n') 
                      ('      Example: cube_group_contains_user nginx nginx\n') ('\n') ('  * cube_add_group_user\n') ('      Add the user $2 to group $1\n') 
                      ('      Example: cube_add_group_user nginx nginx\n') ('\n') ('Public Variables:\n') ('\n') ('  * POSIXCUBE_APIS_ONLY\n') 
                      (
'      Set this to any value to only source the public APIs in posixcube.sh.\n'
                      ) ('      Example: POSIXCUBE_APIS_ONLY=true . posixcube.sh && cube_echo $(cube_random_number 10)\n') 
                      ('  \n') ('  * POSIXCUBE_SOURCED\n') 
                      (
'      Set this to any value to only run a sub-COMMAND, most commonly `source`,\n'
                      ) ('      to source in all ENVAR files, but skip actual execution of posixcube.\n') 
                      (
'      Example: POSIXCUBE_SOURCED=true . posixcube.sh source; POSIXCUBE_SOURCED= ; cube_echo Test\n'
                      ) ('\n') ('Source: https://github.com/myplaceonline/posixcube\n')
                    }
                  do_expansion: False
                  here_end: HEREDOC
                  was_filled: True
                  spids: [139]
                )
              ]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-ne)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(p666_printf_error)} {(DQ (${ VSub_At '@'))})]
                  spids: [-1 159]
                )
              ]
              spids: [-1 171]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name POSIXCUBE_SOURCED))} {(Lit_Other '=')} {(DQ )} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(exit)} {(1)})]
                  spids: [-1 193]
                )
              ]
              spids: [-1 201]
            )
          ]
          spids: [101]
        )
      spids: [97 100]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:POSIXCUBE_VERSION) op:Equal rhs:{(0.1)} spids:[216])]
      spids: [216]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:POSIXCUBE_DEBUG) op:Equal rhs:{(0)} spids:[219])]
      spids: [219]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:POSIXCUBE_COLOR_RESET)
          op: Equal
          rhs: {(DQ (EscapedLiteralPart token:<Lit_EscapedChar '\\x'>) ('1B[0m'))}
          spids: [222]
        )
      ]
      spids: [222]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:POSIXCUBE_COLOR_RED)
          op: Equal
          rhs: {(DQ (EscapedLiteralPart token:<Lit_EscapedChar '\\x'>) ('1B[31m'))}
          spids: [228]
        )
      ]
      spids: [228]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:POSIXCUBE_COLOR_GREEN)
          op: Equal
          rhs: {(DQ (EscapedLiteralPart token:<Lit_EscapedChar '\\x'>) ('1B[32m'))}
          spids: [234]
        )
      ]
      spids: [234]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:POSIXCUBE_COLOR_YELLOW)
          op: Equal
          rhs: {(DQ (EscapedLiteralPart token:<Lit_EscapedChar '\\x'>) ('1B[33m'))}
          spids: [240]
        )
      ]
      spids: [240]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:POSIXCUBE_COLOR_BLUE)
          op: Equal
          rhs: {(DQ (EscapedLiteralPart token:<Lit_EscapedChar '\\x'>) ('1B[34m'))}
          spids: [246]
        )
      ]
      spids: [246]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:POSIXCUBE_COLOR_PURPLE)
          op: Equal
          rhs: {(DQ (EscapedLiteralPart token:<Lit_EscapedChar '\\x'>) ('1B[35m'))}
          spids: [252]
        )
      ]
      spids: [252]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:POSIXCUBE_COLOR_CYAN)
          op: Equal
          rhs: {(DQ (EscapedLiteralPart token:<Lit_EscapedChar '\\x'>) ('1B[36m'))}
          spids: [258]
        )
      ]
      spids: [258]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:POSIXCUBE_COLOR_WHITE)
          op: Equal
          rhs: {(DQ (EscapedLiteralPart token:<Lit_EscapedChar '\\x'>) ('1B[37m'))}
          spids: [264]
        )
      ]
      spids: [264]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:POSIXCUBE_NEWLINE)
          op: Equal
          rhs: {(DQ ('\n'))}
          spids: [271]
        )
      ]
      spids: [271]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:POSIXCUBE_CUBE_NAME) op:Equal rhs:{(DQ )} spids:[276])]
      spids: [276]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:POSIXCUBE_CUBE_NAME_WITH_PREFIX)
          op: Equal
          rhs: {(DQ )}
          spids: [280]
        )
      ]
      spids: [280]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:POSIXCUBE_OS_UNKNOWN) op:Equal rhs:{(-1)} spids:[285])]
      spids: [285]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:POSIXCUBE_OS_LINUX) op:Equal rhs:{(1)} spids:[288])]
      spids: [288]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:POSIXCUBE_OS_MAC_OSX) op:Equal rhs:{(2)} spids:[291])]
      spids: [291]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:POSIXCUBE_OS_WINDOWS) op:Equal rhs:{(3)} spids:[294])]
      spids: [294]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:POSIXCUBE_OS_FLAVOR_UNKNOWN)
          op: Equal
          rhs: {(-1)}
          spids: [298]
        )
      ]
      spids: [298]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:POSIXCUBE_OS_FLAVOR_FEDORA)
          op: Equal
          rhs: {(1)}
          spids: [301]
        )
      ]
      spids: [301]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:POSIXCUBE_OS_FLAVOR_DEBIAN)
          op: Equal
          rhs: {(2)}
          spids: [304]
        )
      ]
      spids: [304]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:POSIXCUBE_OS_FLAVOR_UBUNTU)
          op: Equal
          rhs: {(3)}
          spids: [307]
        )
      ]
      spids: [307]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:POSIXCUBE_SHELL_UNKNOWN)
          op: Equal
          rhs: {(-1)}
          spids: [311]
        )
      ]
      spids: [311]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:POSIXCUBE_SHELL_BASH) op:Equal rhs:{(1)} spids:[314])]
      spids: [314]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:POSIXCUBE_NODE_HOSTNAME)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(hostname)})])
                  left_token: <Left_CommandSub '$('>
                  spids: [320 322]
                )
              )
            }
          spids: [318]
        )
      ]
      spids: [318]
    )
    (FuncDef
      name: cube_echo
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name POSIXCUBE_CUBE_NAME_WITH_PREFIX))} 
                          {(Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(printf)} 
                      {
                        (DQ ('[') 
                          (CommandSubPart
                            command_list: (CommandList children:[(C {(date)})])
                            left_token: <Left_CommandSub '$('>
                            spids: [382 384]
                          ) ('] [') (${ VSub_Name POSIXCUBE_COLOR_GREEN) (${ VSub_Name POSIXCUBE_NODE_HOSTNAME) 
                          (${ VSub_Name POSIXCUBE_COLOR_RESET) ('] ')
                        )
                      }
                    )
                  ]
                  spids: [-1 375]
                )
              ]
              else_action: [
                (C {(printf)} 
                  {
                    (DQ ('[') 
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(date)})])
                        left_token: <Left_CommandSub '$('>
                        spids: [406 408]
                      ) ('] [') (${ VSub_Name POSIXCUBE_COLOR_GREEN) (${ VSub_Name POSIXCUBE_NODE_HOSTNAME) 
                      (${ VSub_Name POSIXCUBE_COLOR_RESET) (${ VSub_Name POSIXCUBE_COLOR_CYAN) (${ VSub_Name POSIXCUBE_CUBE_NAME_WITH_PREFIX) 
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(cube_line_number)} {(DQ (':'))})])
                        left_token: <Left_CommandSub '$('>
                        spids: [425 431]
                      ) (${ VSub_Name POSIXCUBE_COLOR_RESET) ('] ')
                    )
                  }
                )
              ]
              spids: [399 439]
            )
            (C {(echo)} {(DQ (${ VSub_At '@'))})
          ]
          spids: [354]
        )
      spids: [350 353]
    )
    (FuncDef
      name: cube_printf
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:cube_printf_str)
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                      spids: [496]
                    )
                  ]
                  spids: [496]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name POSIXCUBE_CUBE_NAME_WITH_PREFIX))} 
                          {(Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(printf)} 
                      {
                        (DQ ('[') 
                          (CommandSubPart
                            command_list: (CommandList children:[(C {(date)})])
                            left_token: <Left_CommandSub '$('>
                            spids: [528 530]
                          ) ('] [') (${ VSub_Name POSIXCUBE_COLOR_GREEN) (${ VSub_Name POSIXCUBE_NODE_HOSTNAME) 
                          (${ VSub_Name POSIXCUBE_COLOR_RESET) ('] ') (${ VSub_Name cube_printf_str) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                        )
                      } {(DQ (${ VSub_At '@'))}
                    )
                  ]
                  spids: [-1 521]
                )
              ]
              else_action: [
                (C {(printf)} 
                  {
                    (DQ ('[') 
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(date)})])
                        left_token: <Left_CommandSub '$('>
                        spids: [562 564]
                      ) ('] [') (${ VSub_Name POSIXCUBE_COLOR_GREEN) (${ VSub_Name POSIXCUBE_NODE_HOSTNAME) 
                      (${ VSub_Name POSIXCUBE_COLOR_RESET) (${ VSub_Name POSIXCUBE_COLOR_CYAN) (${ VSub_Name POSIXCUBE_CUBE_NAME_WITH_PREFIX) 
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(cube_line_number)} {(DQ (':'))})])
                        left_token: <Left_CommandSub '$('>
                        spids: [581 587]
                      ) (${ VSub_Name POSIXCUBE_COLOR_RESET) ('] ') (${ VSub_Name cube_printf_str) 
                      (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                    )
                  } {(DQ (${ VSub_At '@'))}
                )
              ]
              spids: [555 605]
            )
          ]
          spids: [493]
        )
      spids: [489 492]
    )
    (FuncDef
      name: cube_error_echo
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name POSIXCUBE_CUBE_NAME_WITH_PREFIX))} 
                          {(Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(printf)}
                        {
                          (DQ ('[') 
                            (CommandSubPart
                              command_list: (CommandList children:[(C {(date)})])
                              left_token: <Left_CommandSub '$('>
                              spids: [666 668]
                            ) ('] [') (${ VSub_Name POSIXCUBE_COLOR_RED) (${ VSub_Name POSIXCUBE_NODE_HOSTNAME) 
                            (${ VSub_Name POSIXCUBE_COLOR_RESET) ('] ') (${ VSub_Name POSIXCUBE_COLOR_RED) (Error) (${ VSub_Name POSIXCUBE_COLOR_RESET) (': ')
                          )
                        }
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[690])]
                    )
                  ]
                  spids: [-1 659]
                )
              ]
              else_action: [
                (SimpleCommand
                  words: [
                    {(printf)}
                    {
                      (DQ ('[') 
                        (CommandSubPart
                          command_list: (CommandList children:[(C {(date)})])
                          left_token: <Left_CommandSub '$('>
                          spids: [701 703]
                        ) ('] [') (${ VSub_Name POSIXCUBE_COLOR_RED) (${ VSub_Name POSIXCUBE_NODE_HOSTNAME) 
                        (${ VSub_Name POSIXCUBE_CUBE_NAME_WITH_PREFIX) 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [(C {(cube_line_number)} {(DQ (':'))})]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [714 720]
                        ) (${ VSub_Name POSIXCUBE_COLOR_RESET) ('] ') (${ VSub_Name POSIXCUBE_COLOR_RED) (Error) 
                        (${ VSub_Name POSIXCUBE_COLOR_RESET) (': ')
                      )
                    }
                  ]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[735])]
                )
              ]
              spids: [694 739]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (${ VSub_At '@'))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[750])]
            )
          ]
          spids: [638]
        )
      spids: [634 637]
    )
    (FuncDef
      name: cube_error_printf
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:cube_error_printf_str)
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                      spids: [799]
                    )
                  ]
                  spids: [799]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name POSIXCUBE_CUBE_NAME_WITH_PREFIX))} 
                          {(Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(printf)}
                        {
                          (DQ ('[') 
                            (CommandSubPart
                              command_list: (CommandList children:[(C {(date)})])
                              left_token: <Left_CommandSub '$('>
                              spids: [831 833]
                            ) ('] [') (${ VSub_Name POSIXCUBE_COLOR_RED) (${ VSub_Name POSIXCUBE_NODE_HOSTNAME) 
                            (${ VSub_Name POSIXCUBE_COLOR_RESET) ('] ') (${ VSub_Name POSIXCUBE_COLOR_RED) (Error) (${ VSub_Name POSIXCUBE_COLOR_RESET) (': ') 
                            (${ VSub_Name cube_error_printf_str) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                          )
                        }
                        {(DQ (${ VSub_At '@'))}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[865])]
                    )
                  ]
                  spids: [-1 824]
                )
              ]
              else_action: [
                (SimpleCommand
                  words: [
                    {(printf)}
                    {
                      (DQ ('[') 
                        (CommandSubPart
                          command_list: (CommandList children:[(C {(date)})])
                          left_token: <Left_CommandSub '$('>
                          spids: [876 878]
                        ) ('] [') (${ VSub_Name POSIXCUBE_COLOR_RED) (${ VSub_Name POSIXCUBE_NODE_HOSTNAME) 
                        (${ VSub_Name POSIXCUBE_CUBE_NAME_WITH_PREFIX) 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [(C {(cube_line_number)} {(DQ (':'))})]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [889 895]
                        ) (${ VSub_Name POSIXCUBE_COLOR_RESET) ('] ') (${ VSub_Name POSIXCUBE_COLOR_RED) (Error) 
                        (${ VSub_Name POSIXCUBE_COLOR_RESET) (': ') (${ VSub_Name cube_error_printf_str) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                      )
                    }
                    {(DQ (${ VSub_At '@'))}
                  ]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[920])]
                )
              ]
              spids: [869 924]
            )
          ]
          spids: [796]
        )
      spids: [792 795]
    )
    (FuncDef
      name: cube_throw
      body: 
        (BraceGroup
          children: [
            (C {(cube_error_echo)} {(DQ (${ VSub_At '@'))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_throw_pid)
                  op: Equal
                  rhs: {($ VSub_Dollar '$$')}
                  spids: [965]
                )
              ]
              spids: [965]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          children: [
                            (C {(cube_command_exists)} {(caller)})
                            (C {(Lit_Other '[')} {(-r)} 
                              {(/proc/) (${ VSub_Name cube_throw_pid) (/cmdline)} {(Lit_Other ']')}
                            )
                          ]
                          op_id: Op_DPipe
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cube_error_echo)} {(Stack) (Lit_Other ':')})]
                  spids: [-1 992]
                )
              ]
              spids: [-1 1001]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(cube_command_exists)} {(caller)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:x) op:Equal rhs:{(0)} spids:[1017])]
                      spids: [1017]
                    )
                    (While
                      cond: [(Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)]
                      body: 
                        (DoGroup
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cube_error_caller)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [(C {(caller)} {($ VSub_Name '$x')})]
                                          )
                                        left_token: <Left_CommandSub '$('>
                                        spids: [1030 1034]
                                      )
                                    }
                                  spids: [1029]
                                )
                              ]
                              spids: [1029]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cube_error_caller_result)
                                  op: Equal
                                  rhs: {(${ VSub_QMark '?')}
                                  spids: [1037]
                                )
                              ]
                              spids: [1037]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(${ VSub_Name cube_error_caller_result)} 
                                          {(-eq)} {(0)} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:cube_error_caller_result_lineno)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (Pipeline
                                                        children: [
                                                          (C {(echo)} 
                                                            {(DQ (${ VSub_Name cube_error_caller))}
                                                          )
                                                          (C {(awk)} {(SQ <'{ print $1 }'>)})
                                                        ]
                                                        negated: False
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [1062 1078]
                                              )
                                            }
                                          spids: [1061]
                                        )
                                      ]
                                      spids: [1061]
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:cube_error_caller_result_subroutine)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (Pipeline
                                                        children: [
                                                          (C {(echo)} 
                                                            {(DQ (${ VSub_Name cube_error_caller))}
                                                          )
                                                          (C {(awk)} {(SQ <'{ print $2 }'>)})
                                                        ]
                                                        negated: False
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [1082 1098]
                                              )
                                            }
                                          spids: [1081]
                                        )
                                      ]
                                      spids: [1081]
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:cube_error_caller_result_sourcefile)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (Pipeline
                                                        children: [
                                                          (C {(echo)} 
                                                            {(DQ (${ VSub_Name cube_error_caller))}
                                                          )
                                                          (C {(awk)} 
                                                            {
                                                              (SQ 
                                                                <
'{ for(i=3;i<=NF;i++){ printf "%s ", $i }; printf "\\n" }'
                                                                >
                                                              )
                                                            }
                                                          )
                                                          (C {(sed)} {(SQ <'s/ $//'>)})
                                                        ]
                                                        negated: False
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [1102 1126]
                                              )
                                            }
                                          spids: [1101]
                                        )
                                      ]
                                      spids: [1101]
                                    )
                                    (C {(cube_error_printf)} 
                                      {
                                        (DQ ('  [func] %4s ') 
                                          (${ VSub_Name cube_error_caller_result_subroutine) (' ') (${ VSub_Name cube_error_caller_result_sourcefile)
                                        )
                                      } {(DQ (${ VSub_Name cube_error_caller_result_lineno))}
                                    )
                                  ]
                                  spids: [-1 1058]
                                )
                              ]
                              else_action: [(ControlFlow token:<ControlFlow_Break break>)]
                              spids: [1149 1155]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:x)
                                  op: Equal
                                  rhs: 
                                    {
                                      (ArithSubPart
                                        anode: 
                                          (ArithBinary
                                            op_id: Arith_Plus
                                            left: (ArithWord w:{(${ VSub_Name x)})
                                            right: (ArithWord w:{(Lit_Digits 1)})
                                          )
                                        spids: [1159 1166]
                                      )
                                    }
                                  spids: [1158]
                                )
                              ]
                              spids: [1158]
                            )
                          ]
                          spids: [1026 1169]
                        )
                    )
                  ]
                  spids: [-1 1014]
                )
              ]
              spids: [-1 1172]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-r)} {(/proc/) (${ VSub_Name cube_throw_pid) (/cmdline)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (While
                      cond: [(C {(true)})]
                      body: 
                        (DoGroup
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cube_throw_cmdline)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (C {(cat)} 
                                                {(/proc/) (${ VSub_Name cube_throw_pid) (/cmdline)}
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub '$('>
                                        spids: [1208 1216]
                                      )
                                    }
                                  spids: [1207]
                                )
                              ]
                              spids: [1207]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cube_throw_ppid)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (Pipeline
                                                children: [
                                                  (C {(grep)} {(PPid)} 
                                                    {(/proc/) (${ VSub_Name cube_throw_pid) (/status)}
                                                  )
                                                  (C {(awk)} {(SQ <'{ print $2; }'>)})
                                                ]
                                                negated: False
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub '$('>
                                        spids: [1220 1238]
                                      )
                                    }
                                  spids: [1219]
                                )
                              ]
                              spids: [1219]
                            )
                            (C {(cube_error_printf)} 
                              {(DQ ('  [pid] %5s ') (${ VSub_Name cube_throw_cmdline))} {(${ VSub_Name cube_throw_pid)}
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name cube_throw_pid))} 
                                          {(Lit_Other '=')} {(DQ (1))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [(ControlFlow token:<ControlFlow_Break break>)]
                                  spids: [-1 1274]
                                )
                              ]
                              spids: [-1 1283]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cube_throw_pid)
                                  op: Equal
                                  rhs: {(${ VSub_Name cube_throw_ppid)}
                                  spids: [1286]
                                )
                              ]
                              spids: [1286]
                            )
                          ]
                          spids: [1204 1292]
                        )
                    )
                  ]
                  spids: [-1 1196]
                )
              ]
              spids: [-1 1295]
            )
            (C {(exit)} {(1)})
          ]
          spids: [951]
        )
      spids: [947 950]
    )
    (FuncDef
      name: cube_line_number
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(cube_command_exists)} {(caller)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:x) op:Equal rhs:{(0)} spids:[1346])]
                      spids: [1346]
                    )
                    (While
                      cond: [(Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)]
                      body: 
                        (DoGroup
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cube_api_caller_output)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [(C {(caller)} {($ VSub_Name '$x')})]
                                          )
                                        left_token: <Left_CommandSub '$('>
                                        spids: [1359 1363]
                                      )
                                    }
                                  spids: [1358]
                                )
                              ]
                              spids: [1358]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cube_api_caller_result)
                                  op: Equal
                                  rhs: {(${ VSub_QMark '?')}
                                  spids: [1366]
                                )
                              ]
                              spids: [1366]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(${ VSub_Name cube_api_caller_result)} 
                                          {(-eq)} {(0)} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:cube_api_caller_result_lineno)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (Pipeline
                                                        children: [
                                                          (C {(echo)} 
                                                            {
                                                              (DQ 
                                                                (${ VSub_Name cube_api_caller_output)
                                                              )
                                                            }
                                                          )
                                                          (C {(awk)} {(SQ <'{ print $1 }'>)})
                                                        ]
                                                        negated: False
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [1391 1407]
                                              )
                                            }
                                          spids: [1390]
                                        )
                                      ]
                                      spids: [1390]
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:cube_api_caller_result_subroutine)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (Pipeline
                                                        children: [
                                                          (C {(echo)} 
                                                            {
                                                              (DQ 
                                                                (${ VSub_Name cube_api_caller_output)
                                                              )
                                                            }
                                                          )
                                                          (C {(awk)} {(SQ <'{ print $2 }'>)})
                                                        ]
                                                        negated: False
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [1411 1427]
                                              )
                                            }
                                          spids: [1410]
                                        )
                                      ]
                                      spids: [1410]
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:cube_api_caller_result_sourcefile)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (Pipeline
                                                        children: [
                                                          (C {(echo)} 
                                                            {
                                                              (DQ 
                                                                (${ VSub_Name cube_api_caller_output)
                                                              )
                                                            }
                                                          )
                                                          (C {(awk)} 
                                                            {
                                                              (SQ 
                                                                <
'{ for(i=3;i<=NF;i++){ printf "%s ", $i }; printf "\\n" }'
                                                                >
                                                              )
                                                            }
                                                          )
                                                          (C {(sed)} {(SQ <'s/ $//'>)})
                                                        ]
                                                        negated: False
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [1431 1455]
                                              )
                                            }
                                          spids: [1430]
                                        )
                                      ]
                                      spids: [1430]
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (LhsName
                                              name: cube_api_caller_result_sourcefile_basename
                                            )
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (C {(basename)} 
                                                        {
                                                          (DQ 
                                                            (${ VSub_Name 
cube_api_caller_result_sourcefile
                                                            )
                                                          )
                                                        }
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [1459 1467]
                                              )
                                            }
                                          spids: [1458]
                                        )
                                      ]
                                      spids: [1458]
                                    )
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(Lit_Other '[')} 
                                                  {
                                                    (DQ 
                                                      (${ VSub_Name 
cube_api_caller_result_sourcefile_basename
                                                      )
                                                    )
                                                  } {(KW_Bang '!') (Lit_Other '=')} {(DQ (posixcube.sh))} {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (Sentence
                                                      child: 
                                                        (C {(Lit_Other '[')} {(DQ (${ VSub_Number 1))} 
                                                          {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                                        )
                                                      terminator: <Op_Semi ';'>
                                                    )
                                                  ]
                                                  action: [
                                                    (C {(printf)} {(DQ ('%s'))} {(DQ (${ VSub_Number 1))})
                                                  ]
                                                  spids: [-1 1512]
                                                )
                                              ]
                                              spids: [-1 1528]
                                            )
                                            (C {(printf)} {(DQ ('%s'))} 
                                              {(DQ (${ VSub_Name cube_api_caller_result_lineno))}
                                            )
                                            (ControlFlow
                                              token: <ControlFlow_Break break>
                                            )
                                          ]
                                          spids: [-1 1490]
                                        )
                                      ]
                                      spids: [-1 1547]
                                    )
                                  ]
                                  spids: [-1 1387]
                                )
                              ]
                              else_action: [(ControlFlow token:<ControlFlow_Break break>)]
                              spids: [1550 1556]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:x)
                                  op: Equal
                                  rhs: 
                                    {
                                      (ArithSubPart
                                        anode: 
                                          (ArithBinary
                                            op_id: Arith_Plus
                                            left: (ArithWord w:{(${ VSub_Name x)})
                                            right: (ArithWord w:{(Lit_Digits 1)})
                                          )
                                        spids: [1560 1567]
                                      )
                                    }
                                  spids: [1559]
                                )
                              ]
                              spids: [1559]
                            )
                          ]
                          spids: [1355 1570]
                        )
                    )
                  ]
                  spids: [-1 1343]
                )
              ]
              spids: [-1 1573]
            )
          ]
          spids: [1332]
        )
      spids: [1328 1331]
    )
    (FuncDef
      name: cube_check_return
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_check_return_val)
                  op: Equal
                  rhs: {(${ VSub_QMark '?')}
                  spids: [1600]
                )
              ]
              spids: [1600]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name cube_check_return_val)} {(-ne)} {(0)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_check_return_info)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [1624]
                        )
                      ]
                      spids: [1624]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ (${ VSub_Star '*'))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cube_check_return_info)
                                  op: Equal
                                  rhs: {(DQ (' (') (${ VSub_Star '*') (')'))}
                                  spids: [1651]
                                )
                              ]
                              spids: [1651]
                            )
                          ]
                          spids: [-1 1648]
                        )
                      ]
                      spids: [-1 1661]
                    )
                    (C {(cube_throw)} 
                      {
                        (DQ ('Previous command failed with code ') 
                          (${ VSub_Name cube_check_return_val) (${ VSub_Name cube_check_return_info)
                        )
                      }
                    )
                  ]
                  spids: [-1 1621]
                )
              ]
              spids: [-1 1677]
            )
            (ControlFlow
              token: <ControlFlow_Return return>
              arg_word: {(${ VSub_Name cube_check_return_val)}
            )
          ]
          spids: [1597]
        )
      spids: [1593 1596]
    )
    (FuncDef
      name: cube_append_str
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Number 1))} {(Lit_Other '=')} {(DQ )} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(echo)} {(DQ (${ VSub_Number 2))})]
                  spids: [-1 1757]
                )
              ]
              else_action: [
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(Lit_Other '[')} {(DQ (${ VSub_Number 3))} {(Lit_Other '=')} {(DQ )} 
                              {(Lit_Other ']')}
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [(C {(echo)} {(DQ (${ VSub_Number 1) (' ') (${ VSub_Number 2))})]
                      spids: [-1 1790]
                    )
                  ]
                  else_action: [
                    (C {(echo)} {(DQ (${ VSub_Number 1) (${ VSub_Number 3) (${ VSub_Number 2))})
                  ]
                  spids: [1806 1824]
                )
              ]
              spids: [1769 1827]
            )
          ]
          spids: [1723]
        )
      spids: [1719 1722]
    )
    (FuncDef
      name: cube_command_exists
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (SimpleCommand
              words: [{(command)} {(-v)} {(${ VSub_Number 1)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[1879])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1882])
              ]
            )
          ]
          spids: [1857]
        )
      spids: [1853 1856]
    )
    (FuncDef
      name: cube_dir_exists
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (C {(Lit_Other '[')} {(-d)} {(DQ (${ VSub_Number 1))} {(Lit_Other ']')})
          ]
          spids: [1913]
        )
      spids: [1909 1912]
    )
    (FuncDef
      name: cube_file_exists
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (C {(Lit_Other '[')} {(-r)} {(DQ (${ VSub_Number 1))} {(Lit_Other ']')})
          ]
          spids: [1967]
        )
      spids: [1963 1966]
    )
    (FuncDef
      name: cube_operating_system
      body: 
        (BraceGroup
          children: [
            (Case
              to_match: 
                {
                  (DQ 
                    (CommandSubPart
                      command_list: (CommandList children:[(C {(uname)} {(-s)})])
                      left_token: <Left_CommandSub '$('>
                      spids: [2025 2029]
                    )
                  )
                }
              arms: [
                (case_arm
                  pat_list: [{(Linux)}]
                  action: [(C {(echo)} {(${ VSub_Name POSIXCUBE_OS_LINUX)})]
                  spids: [2035 2036 2046 -1]
                )
                (case_arm
                  pat_list: [{(Darwin)}]
                  action: [(C {(echo)} {(${ VSub_Name POSIXCUBE_OS_MAC_OSX)})]
                  spids: [2049 2050 2060 -1]
                )
                (case_arm
                  pat_list: [
                    {(CYGWIN) (Lit_Other '*')}
                    {(MINGW32) (Lit_Other '*')}
                    {(MSYS) (Lit_Other '*')}
                  ]
                  action: [(C {(echo)} {(${ VSub_Name POSIXCUBE_OS_WINDOWS)})]
                  spids: [2063 2071 2081 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(echo)} {(${ VSub_Name POSIXCUBE_OS_UNKNOWN)})]
                  spids: [2084 2085 2095 -1]
                )
              ]
              spids: [2022 2032 2098]
            )
          ]
          spids: [2015]
        )
      spids: [2011 2014]
    )
    (FuncDef
      name: cube_operating_system_has_flavor
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (Case
              to_match: {(DQ (${ VSub_Number 1))}
              arms: [
                (case_arm
                  pat_list: [{(${ VSub_Name POSIXCUBE_OS_FLAVOR_FEDORA)}]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: (C {(cube_file_exists)} {(DQ (/etc/fedora-release))})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                          spids: [-1 2168]
                        )
                      ]
                      spids: [-1 2176]
                    )
                  ]
                  spids: [2153 2156 2179 -1]
                )
                (case_arm
                  pat_list: [{(${ VSub_Name POSIXCUBE_OS_FLAVOR_UBUNTU)}]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: (C {(cube_file_exists)} {(DQ (/etc/lsb-release))})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                          spids: [-1 2197]
                        )
                      ]
                      spids: [-1 2205]
                    )
                  ]
                  spids: [2182 2185 2208 -1]
                )
                (case_arm
                  pat_list: [{(${ VSub_Name POSIXCUBE_OS_FLAVOR_DEBIAN)}]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (AndOr
                                  children: [
                                    (C {(cube_file_contains)} {(/etc/os-release)} 
                                      {
                                        (DQ ('NAME=') 
                                          (EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\"'>
                                          ) (Debian)
                                        )
                                      }
                                    )
                                    (C {(cube_file_exists)} {(DQ (/etc/lsb-release))})
                                  ]
                                  op_id: Op_DPipe
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                          spids: [-1 2238]
                        )
                      ]
                      spids: [-1 2246]
                    )
                  ]
                  spids: [2211 2214 2249 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(cube_throw)} {(DQ ('Unknown flavor ') (${ VSub_Number 1))})]
                  spids: [2252 2253 2266 -1]
                )
              ]
              spids: [2142 2150 2269]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [2128]
        )
      spids: [2124 2127]
    )
    (FuncDef
      name: cube_shell
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$BASH'))} 
                          {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(echo)} {(${ VSub_Name POSIXCUBE_SHELL_BASH)})]
                  spids: [-1 2322]
                )
              ]
              else_action: [(C {(echo)} {(${ VSub_Name POSIXCUBE_SHELL_UNKNOWN)})]
              spids: [2332 2342]
            )
          ]
          spids: [2298]
        )
      spids: [2294 2297]
    )
    (FuncDef
      name: cube_check_numargs
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:cube_check_numargs_expected)
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                      spids: [2378]
                    )
                  ]
                  spids: [2378]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (AndOr
              children: [
                (C {(Lit_Other '[')} {(${ VSub_Pound '#')} {(-lt)} 
                  {(${ VSub_Name cube_check_numargs_expected)} {(Lit_Other ']')}
                )
                (C {(cube_throw)} 
                  {
                    (DQ ('Expected ') (${ VSub_Name cube_check_numargs_expected) 
                      (' arguments, received ') (${ VSub_Pound '#') (.)
                    )
                  }
                )
              ]
              op_id: Op_DAmp
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [2375]
        )
      spids: [2371 2374]
    )
    (FuncDef
      name: cube_service
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(cube_command_exists)} {(systemctl)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ (${ VSub_Number 1))} {(Lit_Other '=')} 
                                  {(DQ (daemon-reload))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (AndOr
                              children: [
                                (C {(systemctl)} {($ VSub_Number '$1')})
                                (C {(cube_check_return)})
                              ]
                              op_id: Op_DPipe
                            )
                          ]
                          spids: [-1 2495]
                        )
                      ]
                      else_action: [
                        (AndOr
                          children: [
                            (C {(systemctl)} {($ VSub_Number '$1')} {($ VSub_Number '$2')})
                            (C {(cube_check_return)})
                          ]
                          op_id: Op_DPipe
                        )
                      ]
                      spids: [2507 2521]
                    )
                  ]
                  spids: [-1 2473]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(cube_command_exists)} {(service)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ (${ VSub_Number 1))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ (daemon-reload))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (AndOr
                              children: [
                                (C {(service)} {($ VSub_Number '$2')} {($ VSub_Number '$1')})
                                (C {(cube_check_return)})
                              ]
                              op_id: Op_DPipe
                            )
                          ]
                          spids: [-1 2555]
                        )
                      ]
                      spids: [-1 2569]
                    )
                  ]
                  spids: [2524 2532]
                )
              ]
              else_action: [(C {(cube_throw)} {(DQ ('Could not find service program'))})]
              spids: [2572 2582]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Number 2))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Case
                      to_match: {(DQ (${ VSub_Number 1))}
                      arms: [
                        (case_arm
                          pat_list: [{(stop)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cube_service_verb)
                                  op: Equal
                                  rhs: {(DQ (stopped))}
                                  spids: [2622]
                                )
                              ]
                              spids: [2622]
                            )
                          ]
                          spids: [2618 2619 2628 -1]
                        )
                        (case_arm
                          pat_list: [{(enable)} {(disable)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cube_service_verb)
                                  op: Equal
                                  rhs: {(DQ (${ VSub_Number 1) (d))}
                                  spids: [2637]
                                )
                              ]
                              spids: [2637]
                            )
                          ]
                          spids: [2631 2634 2646 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cube_service_verb)
                                  op: Equal
                                  rhs: {(DQ (${ VSub_Number 1) (ed))}
                                  spids: [2653]
                                )
                              ]
                              spids: [2653]
                            )
                          ]
                          spids: [2649 2650 2662 -1]
                        )
                      ]
                      spids: [2607 2615 2665]
                    )
                    (C {(cube_echo)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Pipeline
                                    children: [
                                      (C {(echo)} {(${ VSub_Name cube_service_verb)})
                                      (C {(cut)} {(-c1)})
                                      (C {(tr)} {(Lit_Other '[') (a-z) (Lit_Other ']')} 
                                        {(Lit_Other '[') (A-Z) (Lit_Other ']')}
                                      )
                                    ]
                                    negated: False
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [2671 2695]
                          ) 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Pipeline
                                    children: [
                                      (C {(echo)} {(${ VSub_Name cube_service_verb)})
                                      (C {(cut)} {(-c2-)})
                                    ]
                                    negated: False
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [2696 2708]
                          ) (' ') ($ VSub_Number '$2') (' service')
                        )
                      }
                    )
                  ]
                  spids: [-1 2604]
                )
              ]
              else_action: [(C {(cube_echo)} {(DQ ('Executed ') ($ VSub_Number '$1'))})]
              spids: [2715 2726]
            )
          ]
          spids: [2451]
        )
      spids: [2447 2450]
    )
    (FuncDef
      name: cube_service_exists
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(cube_command_exists)} {(systemctl)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_service_exists_output)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [
                                        (SimpleCommand
                                          words: [{(systemctl)} {(status)} {(${ VSub_Number 1)}]
                                          redirects: [
                                            (Redir
                                              op_id: Redir_GreatAnd
                                              fd: 2
                                              arg_word: {(1)}
                                              spids: [2792]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [2783 2794]
                                )
                              )
                            }
                          spids: [2781]
                        )
                      ]
                      spids: [2781]
                    )
                    (Pipeline
                      children: [
                        (C {(echo)} {(DQ (${ VSub_Name cube_service_exists_output))})
                        (SimpleCommand
                          words: [{(grep)} {(-l)} {(loaded)}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: -1
                              arg_word: {(/dev/null)}
                              spids: [2814]
                            )
                            (Redir
                              op_id: Redir_GreatAnd
                              fd: 2
                              arg_word: {(1)}
                              spids: [2817]
                            )
                          ]
                        )
                      ]
                      negated: False
                    )
                    (ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {($ VSub_QMark '$?')}
                    )
                  ]
                  spids: [-1 2778]
                )
              ]
              else_action: [(C {(cube_throw)} {(DQ ('Not implemented'))})]
              spids: [2826 2836]
            )
          ]
          spids: [2756]
        )
      spids: [2752 2755]
    )
    (FuncDef
      name: cube_package
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (If
              arms: [
                (if_arm
                  cond: [(Sentence child:(C {(cube_command_exists)} {(dnf)}) terminator:<Op_Semi ';'>)]
                  action: [
                    (C {(cube_echo)} {(DQ ('Executing dnf -y ') (${ VSub_At '@'))})
                    (AndOr
                      children: [(C {(dnf)} {(-y)} {(DQ (${ VSub_At '@'))}) (C {(cube_check_return)})]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 2893]
                )
                (if_arm
                  cond: [(Sentence child:(C {(cube_command_exists)} {(yum)}) terminator:<Op_Semi ';'>)]
                  action: [
                    (C {(cube_echo)} {(DQ ('Executing yum -y ') (${ VSub_At '@'))})
                    (AndOr
                      children: [(C {(yum)} {(-y)} {(DQ (${ VSub_At '@'))}) (C {(cube_check_return)})]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [2921 2929]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(cube_command_exists)} {(apt-get)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(cube_echo)} {(DQ ('Executing apt-get -y ') (${ VSub_At '@'))})
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [{(apt-get)} {(-y)} {(DQ (${ VSub_At '@'))}]
                          more_env: [
                            (env_pair
                              name: DEBIAN_FRONTEND
                              val: {(noninteractive)}
                              spids: [2982]
                            )
                          ]
                        )
                        (C {(cube_check_return)})
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [2957 2965]
                )
              ]
              else_action: [
                (C {(cube_throw)} {(DQ ('cube_package has not implemented your operating system yet'))})
              ]
              spids: [3000 3010]
            )
          ]
          spids: [2869]
        )
      spids: [2865 2868]
    )
    (FuncDef
      name: cube_current_script_name
      body: (BraceGroup children:[(C {(basename)} {(DQ ($ VSub_Number '$0'))})] spids:[3034])
      spids: [3030 3033]
    )
    (FuncDef
      name: cube_current_script_abs_path
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_current_script_abs_path_dirname)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Sentence
                                child: 
                                  (C {(cd)} 
                                    {
                                      (DQ 
                                        (CommandSubPart
                                          command_list: 
                                            (CommandList
                                              children: [(C {(dirname)} {(DQ ($ VSub_Number '$0'))})]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [3074 3080]
                                        )
                                      )
                                    }
                                  )
                                terminator: <Op_Semi ';'>
                              )
                              (C {(pwd)} {(-P)})
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [3069 3089]
                      )
                    }
                  spids: [3068]
                )
              ]
              spids: [3068]
            )
            (C {(echo)} 
              {
                (DQ (${ VSub_Name cube_current_script_abs_path_dirname) (/) 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(cube_current_script_name)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [3099 3101]
                  )
                )
              }
            )
          ]
          spids: [3065]
        )
      spids: [3061 3064]
    )
    (FuncDef
      name: cube_file_size
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(cube_file_exists)} {(DQ (${ VSub_Number 1))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(wc)} {(-c)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Less
                          fd: -1
                          arg_word: {(DQ (${ VSub_Number 1))}
                          spids: [3165]
                        )
                      ]
                    )
                  ]
                  spids: [-1 3158]
                )
              ]
              else_action: [
                (C {(cube_throw)} {(DQ ('Could not find or read file ') (${ VSub_Number 1))})
              ]
              spids: [3174 3187]
            )
          ]
          spids: [3132]
        )
      spids: [3128 3131]
    )
    (FuncDef
      name: cube_expand_parameters
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_expand_parameters_is_bash)
                  op: Equal
                  rhs: {(0)}
                  spids: [3220]
                )
              ]
              spids: [3220]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (CommandSubPart
                              command_list: (CommandList children:[(C {(cube_shell)})])
                              left_token: <Left_CommandSub '$('>
                              spids: [3228 3230]
                            )
                          } {(-eq)} {(${ VSub_Name POSIXCUBE_SHELL_BASH)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_expand_parameters_is_bash)
                          op: Equal
                          rhs: {(0)}
                          spids: [3252]
                        )
                      ]
                      spids: [3252]
                    )
                  ]
                  spids: [-1 3241]
                )
              ]
              spids: [-1 3260]
            )
            (While
              cond: [
                (Sentence
                  child: 
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [{(read)} {(-r)} {(cube_expand_parameters_line)}]
                          more_env: [(env_pair name:IFS val:{(SQ )} spids:[3271])]
                        )
                        (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name cube_expand_parameters_line))} 
                          {(Lit_Other ']')}
                        )
                      ]
                      op_id: Op_DPipe
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_expand_parameters_line_escaped)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(printf)} {(Lit_Other '%') (s)} 
                                            {(DQ (${ VSub_Name cube_expand_parameters_line))}
                                          )
                                          (C {(tr)} {(SQ <'`([$\\\\"'>)} {(SQ <'\\1\\2\\3\\4\\5\\6'>)})
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [3304 3327]
                              )
                            }
                          spids: [3303]
                        )
                      ]
                      spids: [3303]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {($ VSub_Name '$cube_expand_parameters_is_bash')} 
                                  {(-eq)} {(1)} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cube_expand_parameters_line_escaped)
                                  op: Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name cube_expand_parameters_line_escaped>
                                        suffix_op: 
                                          (PatSub
                                            pat: {(SQ <Lit_EscapedChar '\\4'>) ('{')}
                                            replace: 
                                              {(EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
                                                ('{')
                                              }
                                            do_all: True
                                            do_prefix: False
                                            do_suffix: False
                                          )
                                        spids: [3353 3364]
                                      )
                                    }
                                  spids: [3352]
                                )
                              ]
                              spids: [3352]
                            )
                          ]
                          spids: [-1 3349]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cube_expand_parameters_line_escaped)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(printf)} {(Lit_Other '%') (s)} 
                                                {
                                                  (DQ 
                                                    (${ VSub_Name cube_expand_parameters_line_escaped)
                                                  )
                                                }
                                              )
                                              (C {(sed)} {(SQ <'s/\\([^\\x05]\\)\\x04{/\\1${/g'>)})
                                              (C {(sed)} {(SQ <'s/^\\x04{/${/g'>)})
                                            ]
                                            negated: False
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [3371 3398]
                                  )
                                }
                              spids: [3370]
                            )
                          ]
                          spids: [3370]
                        )
                      ]
                      spids: [3367 3401]
                    )
                    (AndOr
                      children: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cube_expand_parameters_output)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (C {(eval)} 
                                            {
                                              (DQ ("printf '%s") 
                                                (EscapedLiteralPart
                                                  token: <Lit_EscapedChar '\\n'>
                                                ) ("' ") (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                                                (${ VSub_Name cube_expand_parameters_line_escaped) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                                              )
                                            }
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [3407 3420]
                                  )
                                }
                              spids: [3406]
                            )
                          ]
                          spids: [3406]
                        )
                        (C {(cube_check_return)} 
                          {(DQ (${ VSub_Name cube_expand_parameters_line_escaped))}
                        )
                      ]
                      op_id: Op_DPipe
                    )
                    (Pipeline
                      children: [
                        (C {(echo)} {(DQ (${ VSub_Name cube_expand_parameters_output))})
                        (C {(tr)} {(SQ <'\\1\\2\\3\\4\\5\\6'>)} {(SQ <'`([$\\\\"'>)})
                      ]
                      negated: False
                    )
                  ]
                  spids: [3296 3456]
                )
            )
          ]
          spids: [3211]
        )
      spids: [3207 3210]
    )
    (FuncDef
      name: cube_read_heredoc
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_read_heredoc_first)
                  op: Equal
                  rhs: {(1)}
                  spids: [3489]
                )
              ]
              spids: [3489]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_read_heredoc_result)
                  op: Equal
                  rhs: {(DQ )}
                  spids: [3493]
                )
              ]
              spids: [3493]
            )
            (While
              cond: [
                (Sentence
                  child: 
                    (SimpleCommand
                      words: [{(read)} {(-r)} {(cube_read_heredoc_line)}]
                      more_env: [(env_pair name:IFS val:{(SQ <'\\n'>)} spids:[3500])]
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(${ VSub_Name cube_read_heredoc_first)} {(-eq)} 
                                  {(1)} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cube_read_heredoc_result)
                                  op: Equal
                                  rhs: {(DQ (${ VSub_Name cube_read_heredoc_line))}
                                  spids: [3533]
                                )
                              ]
                              spids: [3533]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cube_read_heredoc_first)
                                  op: Equal
                                  rhs: {(0)}
                                  spids: [3541]
                                )
                              ]
                              spids: [3541]
                            )
                          ]
                          spids: [-1 3530]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cube_read_heredoc_result)
                              op: Equal
                              rhs: 
                                {
                                  (DQ (${ VSub_Name cube_read_heredoc_result) 
                                    (${ VSub_Name POSIXCUBE_NEWLINE) (${ VSub_Name cube_read_heredoc_line)
                                  )
                                }
                              spids: [3548]
                            )
                          ]
                          spids: [3548]
                        )
                      ]
                      spids: [3545 3562]
                    )
                  ]
                  spids: [3512 3565]
                )
            )
          ]
          spids: [3486]
        )
      spids: [3482 3485]
    )
    (FuncDef
      name: cube_set_file_contents
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(2)} {(DQ (${ VSub_At '@'))})
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:cube_set_file_contents_target_file)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [3621]
                    )
                  ]
                  spids: [3621]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:cube_set_file_contents_input_file)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [3630]
                    )
                  ]
                  spids: [3630]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_set_file_contents_debug)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name cube_set_file_contents_input_file))}
                  spids: [3640]
                )
              ]
              spids: [3640]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_set_file_contents_needs_replace)
                  op: Equal
                  rhs: {(0)}
                  spids: [3650]
                )
              ]
              spids: [3650]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_set_file_contents_input_file_needs_remove)
                  op: Equal
                  rhs: {(0)}
                  spids: [3654]
                )
              ]
              spids: [3654]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(cube_file_exists)} 
                              {(DQ (${ VSub_Name cube_set_file_contents_input_file))}
                            )
                          ]
                          negated: True
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(cube_throw)} 
                      {
                        (DQ ('Could not find or read input ') 
                          (${ VSub_Name cube_set_file_contents_input_file)
                        )
                      }
                    )
                  ]
                  spids: [-1 3674]
                )
              ]
              spids: [-1 3687]
            )
            (C {(cube_ensure_directory)} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (C {(dirname)} {(DQ (${ VSub_Name cube_set_file_contents_target_file))})
                        ]
                      )
                    left_token: <Left_CommandSub '$('>
                    spids: [3695 3703]
                  )
                )
              }
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_set_file_contents_input_file_is_template)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(expr)} {(DQ (${ VSub_Name cube_set_file_contents_input_file))} 
                                {(Lit_Other ':')} {(SQ <'.*\\.template$'>)}
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [3710 3724]
                      )
                    }
                  spids: [3709]
                )
              ]
              spids: [3709]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {(${ VSub_Name cube_set_file_contents_input_file_is_template)} {(-ne)} {(0)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_set_file_contents_input_file_original)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name cube_set_file_contents_input_file))}
                          spids: [3747]
                        )
                      ]
                      spids: [3747]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_set_file_contents_input_file)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name cube_set_file_contents_input_file) (.tmp))}
                          spids: [3755]
                        )
                      ]
                      spids: [3755]
                    )
                    (C {(cube_echo)} 
                      {
                        (DQ ('Expanding parameters of ') 
                          (${ VSub_Name cube_set_file_contents_input_file_original)
                        )
                      }
                    )
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [{(cube_expand_parameters)}]
                          redirects: [
                            (Redir
                              op_id: Redir_Less
                              fd: -1
                              arg_word: 
                                {(DQ (${ VSub_Name cube_set_file_contents_input_file_original))}
                              spids: [3807]
                            )
                            (Redir
                              op_id: Redir_Great
                              fd: -1
                              arg_word: {(DQ (${ VSub_Name cube_set_file_contents_input_file))}
                              spids: [3815]
                            )
                          ]
                        )
                        (C {(cube_check_return)})
                      ]
                      op_id: Op_DPipe
                    )
                    (C {(cube_echo)} {(DQ ('Expansion complete'))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_set_file_contents_input_file_needs_remove)
                          op: Equal
                          rhs: {(1)}
                          spids: [3847]
                        )
                      ]
                      spids: [3847]
                    )
                  ]
                  spids: [-1 3742]
                )
              ]
              spids: [-1 3851]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(cube_file_exists)} {(DQ (${ VSub_Name cube_set_file_contents_target_file))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_set_file_contents_target_file_size)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(cube_file_size)} 
                                        {(DQ (${ VSub_Name cube_set_file_contents_target_file))}
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [3878 3886]
                              )
                            }
                          spids: [3877]
                        )
                      ]
                      spids: [3877]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_set_file_contents_input_file_size)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(cube_file_size)} 
                                        {(DQ (${ VSub_Name cube_set_file_contents_input_file))}
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [3890 3898]
                              )
                            }
                          spids: [3889]
                        )
                      ]
                      spids: [3889]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(${ VSub_Name POSIXCUBE_DEBUG)} {(-eq)} {(1)} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(cube_echo)} 
                              {
                                (DQ ('Target file ') (${ VSub_Name cube_set_file_contents_target_file) 
                                  (' exists. Target size: ') (${ VSub_Name cube_set_file_contents_target_file_size) (', source size: ') 
                                  (${ VSub_Name cube_set_file_contents_input_file_size)
                                )
                              }
                            )
                          ]
                          spids: [-1 3918]
                        )
                      ]
                      spids: [-1 3939]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} 
                                  {(${ VSub_Name cube_set_file_contents_target_file_size)} {(-eq)} {(${ VSub_Name cube_set_file_contents_input_file_size)} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cube_set_file_contents_target_file_cksum)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (Pipeline
                                                children: [
                                                  (C {(cksum)} 
                                                    {
                                                      (DQ 
                                                        (${ VSub_Name 
cube_set_file_contents_target_file
                                                        )
                                                      )
                                                    }
                                                  )
                                                  (C {(awk)} {(SQ <'{print $1}'>)})
                                                ]
                                                negated: False
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub '$('>
                                        spids: [3970 3986]
                                      )
                                    }
                                  spids: [3969]
                                )
                              ]
                              spids: [3969]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cube_set_file_contents_input_file_cksum)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (Pipeline
                                                children: [
                                                  (C {(cksum)} 
                                                    {
                                                      (DQ 
                                                        (${ VSub_Name 
cube_set_file_contents_input_file
                                                        )
                                                      )
                                                    }
                                                  )
                                                  (C {(awk)} {(SQ <'{print $1}'>)})
                                                ]
                                                negated: False
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub '$('>
                                        spids: [3990 4006]
                                      )
                                    }
                                  spids: [3989]
                                )
                              ]
                              spids: [3989]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(${ VSub_Name POSIXCUBE_DEBUG)} {(-eq)} 
                                          {(1)} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(cube_echo)} 
                                      {
                                        (DQ ('Target cksum: ') 
                                          (${ VSub_Name cube_set_file_contents_target_file_cksum) (', source cksum: ') (${ VSub_Name cube_set_file_contents_input_file_cksum)
                                        )
                                      }
                                    )
                                  ]
                                  spids: [-1 4025]
                                )
                              ]
                              spids: [-1 4042]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} 
                                          {
                                            (DQ 
                                              (${ VSub_Name cube_set_file_contents_target_file_cksum)
                                            )
                                          } {(KW_Bang '!') (Lit_Other '=')} {(DQ (${ VSub_Name cube_set_file_contents_input_file_cksum))} 
                                          {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:cube_set_file_contents_needs_replace)
                                          op: Equal
                                          rhs: {(1)}
                                          spids: [4072]
                                        )
                                      ]
                                      spids: [4072]
                                    )
                                  ]
                                  spids: [-1 4069]
                                )
                              ]
                              spids: [-1 4076]
                            )
                          ]
                          spids: [-1 3961]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cube_set_file_contents_needs_replace)
                              op: Equal
                              rhs: {(1)}
                              spids: [4082]
                            )
                          ]
                          spids: [4082]
                        )
                      ]
                      spids: [4079 4086]
                    )
                  ]
                  spids: [-1 3868]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:cube_set_file_contents_needs_replace)
                      op: Equal
                      rhs: {(1)}
                      spids: [4092]
                    )
                  ]
                  spids: [4092]
                )
              ]
              spids: [4089 4096]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name cube_set_file_contents_needs_replace)} 
                          {(-eq)} {(1)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(cube_echo)} 
                      {
                        (DQ ('Updating file contents of ') 
                          (${ VSub_Name cube_set_file_contents_target_file) (' with ') (${ VSub_Name cube_set_file_contents_debug)
                        )
                      }
                    )
                    (AndOr
                      children: [
                        (C {(cp)} {(DQ (${ VSub_Name cube_set_file_contents_input_file))} 
                          {(DQ (${ VSub_Name cube_set_file_contents_target_file))}
                        )
                        (C {(cube_check_return)})
                      ]
                      op_id: Op_DPipe
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} 
                                  {(${ VSub_Name cube_set_file_contents_input_file_needs_remove)} {(-eq)} {(1)} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (AndOr
                              children: [
                                (C {(rm)} {(-f)} {(DQ (${ VSub_Name cube_set_file_contents_input_file))})
                                (C {(cube_check_return)})
                              ]
                              op_id: Op_DPipe
                            )
                          ]
                          spids: [-1 4168]
                        )
                      ]
                      spids: [-1 4186]
                    )
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                  ]
                  spids: [-1 4116]
                )
              ]
              else_action: [
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(Lit_Other '[')} 
                              {(${ VSub_Name cube_set_file_contents_input_file_needs_remove)} {(-eq)} {(1)} {(Lit_Other ']')}
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (AndOr
                          children: [
                            (C {(rm)} {(-f)} {(DQ (${ VSub_Name cube_set_file_contents_input_file))})
                            (C {(cube_check_return)})
                          ]
                          op_id: Op_DPipe
                        )
                      ]
                      spids: [-1 4213]
                    )
                  ]
                  spids: [-1 4231]
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
              spids: [4194 4239]
            )
          ]
          spids: [3607]
        )
      spids: [3603 3606]
    )
    (FuncDef
      name: cube_random_number
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (Pipeline
              children: [
                (C {(echo)} {(DQ )})
                (C {(awk)} {(DQ ('{ srand(); print int(') (${ VSub_Number 1) (' * rand()) + 1; }'))})
              ]
              negated: False
            )
          ]
          spids: [4269]
        )
      spids: [4265 4268]
    )
    (FuncDef
      name: cube_tmpdir
      body: (BraceGroup children:[(C {(echo)} {(DQ (/tmp/))})] spids:[4322])
      spids: [4318 4321]
    )
    (FuncDef
      name: cube_set_file_contents_string
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(2)} {(DQ (${ VSub_At '@'))})
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:cube_set_file_contents_target_file)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [4379]
                    )
                  ]
                  spids: [4379]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_set_file_contents_tmp)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: (CommandList children:[(C {(cube_tmpdir)})])
                          left_token: <Left_CommandSub '$('>
                          spids: [4392 4394]
                        ) (/tmpcontents_) 
                        (CommandSubPart
                          command_list: (CommandList children:[(C {(cube_random_number)} {(10000)})])
                          left_token: <Left_CommandSub '$('>
                          spids: [4396 4400]
                        ) (.template)
                      )
                    }
                  spids: [4390]
                )
              ]
              spids: [4390]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (${ VSub_At '@'))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ (${ VSub_Name cube_set_file_contents_tmp))}
                  spids: [4413]
                )
              ]
            )
            (C {(cube_set_file_contents)} {(DQ (${ VSub_Name cube_set_file_contents_target_file))} 
              {(DQ (${ VSub_Name cube_set_file_contents_tmp))} {(DQ ('from string'))}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_set_file_contents_result)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [4441]
                )
              ]
              spids: [4441]
            )
            (C {(rm)} {(DQ (${ VSub_Name cube_set_file_contents_tmp))})
            (ControlFlow
              token: <ControlFlow_Return return>
              arg_word: {(${ VSub_Name cube_set_file_contents_result)}
            )
          ]
          spids: [4365]
        )
      spids: [4361 4364]
    )
    (FuncDef
      name: cube_readlink
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_readlink_target)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [4527]
                )
              ]
              spids: [4527]
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:cube_readlink_path)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (AndOr
                                    children: [
                                      (C {(cd)} {(-P)} {(--)} 
                                        {
                                          (DQ 
                                            (CommandSubPart
                                              command_list: 
                                                (CommandList
                                                  children: [
                                                    (C {(dirname)} {(--)} 
                                                      {(DQ (${ VSub_Name cube_readlink_target))}
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [4540 4550]
                                            )
                                          )
                                        }
                                      )
                                      (C {(pwd)} {(-P)})
                                    ]
                                    op_id: Op_DAmp
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [4532 4558]
                          )
                        }
                      spids: [4531]
                    )
                  ]
                  spids: [4531]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:cube_readlink_path)
                      op: Equal
                      rhs: 
                        {(${ VSub_Name cube_readlink_path) (/) 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(basename)} {(--)} {(DQ (${ VSub_Name cube_readlink_target))})
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [4567 4577]
                          )
                        }
                      spids: [4562]
                    )
                  ]
                  spids: [4562]
                )
              ]
              op_id: Op_DAmp
            )
            (While
              cond: [
                (Sentence
                  child: 
                    (C {(Lit_Other '[')} {(-h)} {(DQ (${ VSub_Name cube_readlink_path))} 
                      {(Lit_Other ']')}
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_readlink_dir)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(dirname)} {(--)} {(DQ (${ VSub_Name cube_readlink_path))})
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [4601 4611]
                              )
                            }
                          spids: [4600]
                        )
                      ]
                      spids: [4600]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_readlink_sym)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(readlink)} {(DQ (${ VSub_Name cube_readlink_path))})]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [4615 4623]
                              )
                            }
                          spids: [4614]
                        )
                      ]
                      spids: [4614]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_readlink_path)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (AndOr
                                        children: [
                                          (C {(cd)} {(DQ (${ VSub_Name cube_readlink_dir))})
                                          (AndOr
                                            children: [
                                              (C {(cd)} 
                                                {
                                                  (DQ 
                                                    (CommandSubPart
                                                      command_list: 
                                                        (CommandList
                                                          children: [
                                                            (C {(dirname)} {(--)} 
                                                              {(DQ (${ VSub_Name cube_readlink_sym))}
                                                            )
                                                          ]
                                                        )
                                                      left_token: <Left_CommandSub '$('>
                                                      spids: [4641 4651]
                                                    )
                                                  )
                                                }
                                              )
                                              (C {(pwd)})
                                            ]
                                            op_id: Op_DAmp
                                          )
                                        ]
                                        op_id: Op_DAmp
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [4627 4657]
                              ) (/) 
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(basename)} {(--)} {(DQ (${ VSub_Name cube_readlink_sym))})
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [4659 4669]
                              )
                            }
                          spids: [4626]
                        )
                      ]
                      spids: [4626]
                    )
                  ]
                  spids: [4597 4672]
                )
            )
            (C {(echo)} {(${ VSub_Name cube_readlink_path)})
          ]
          spids: [4488]
        )
      spids: [4484 4487]
    )
    (FuncDef
      name: cube_total_memory
      body: 
        (BraceGroup
          children: [
            (Case
              to_match: {(DQ (${ VSub_Number 1))}
              arms: [
                (case_arm
                  pat_list: [{(kb)} {(KB)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_total_memory_divisor)
                          op: Equal
                          rhs: {(1024)}
                          spids: [4735]
                        )
                      ]
                      spids: [4735]
                    )
                  ]
                  spids: [4729 4732 4739 -1]
                )
                (case_arm
                  pat_list: [{(mb)} {(MB)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_total_memory_divisor)
                          op: Equal
                          rhs: {(1048576)}
                          spids: [4748]
                        )
                      ]
                      spids: [4748]
                    )
                  ]
                  spids: [4742 4745 4752 -1]
                )
                (case_arm
                  pat_list: [{(gb)} {(GB)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_total_memory_divisor)
                          op: Equal
                          rhs: {(1073741824)}
                          spids: [4761]
                        )
                      ]
                      spids: [4761]
                    )
                  ]
                  spids: [4755 4758 4765 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_total_memory_divisor)
                          op: Equal
                          rhs: {(1)}
                          spids: [4772]
                        )
                      ]
                      spids: [4772]
                    )
                  ]
                  spids: [4768 4769 4776 -1]
                )
              ]
              spids: [4718 4726 4779]
            )
            (C {(echo)} 
              {
                (ArithSubPart
                  anode: 
                    (ArithBinary
                      op_id: Arith_Slash
                      left: 
                        (ArithBinary
                          op_id: Arith_Star
                          left: 
                            (ArithWord
                              w: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(grep)} {(DQ ('^MemTotal:'))} {(/proc/meminfo)})
                                              (C {(awk)} {(SQ <'{print $2}'>)})
                                            ]
                                            negated: False
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [4786 4802]
                                  )
                                }
                            )
                          right: (ArithWord w:{(Lit_Digits 1024)})
                        )
                      right: (ArithWord w:{(${ VSub_Name cube_total_memory_divisor)})
                    )
                  spids: [4784 4811]
                )
              }
            )
          ]
          spids: [4715]
        )
      spids: [4711 4714]
    )
    (FuncDef
      name: cube_ensure_directory
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_ensure_directory_result)
                  op: Equal
                  rhs: {(1)}
                  spids: [4867]
                )
              ]
              spids: [4867]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [(C {(cube_dir_exists)} {(DQ (${ VSub_Number 1))})]
                          negated: True
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      children: [
                        (C {(mkdir)} {(-p)} {(DQ (${ VSub_Number 1))})
                        (C {(cube_check_return)})
                      ]
                      op_id: Op_DPipe
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_ensure_directory_result)
                          op: Equal
                          rhs: {(0)}
                          spids: [4904]
                        )
                      ]
                      spids: [4904]
                    )
                    (C {(cube_echo)} {(DQ ('Created directory ') (${ VSub_Number 1))})
                  ]
                  spids: [-1 4886]
                )
              ]
              spids: [-1 4918]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Number 2))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      children: [
                        (C {(chmod)} {(${ VSub_Number 2)} {(DQ (${ VSub_Number 1))})
                        (C {(cube_check_return)})
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 4940]
                )
              ]
              spids: [-1 4960]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Number 3))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      children: [
                        (C {(chown)} {(${ VSub_Number 3)} {(DQ (${ VSub_Number 1))})
                        (C {(cube_check_return)})
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 4982]
                )
              ]
              spids: [-1 5002]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Number 4))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      children: [
                        (C {(chgrp)} {(${ VSub_Number 4)} {(DQ (${ VSub_Number 1))})
                        (C {(cube_check_return)})
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 5024]
                )
              ]
              spids: [-1 5044]
            )
            (ControlFlow
              token: <ControlFlow_Return return>
              arg_word: {(${ VSub_Name cube_ensure_directory_result)}
            )
          ]
          spids: [4853]
        )
      spids: [4849 4852]
    )
    (FuncDef
      name: cube_ensure_file
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_ensure_file_result)
                  op: Equal
                  rhs: {(1)}
                  spids: [5109]
                )
              ]
              spids: [5109]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [(C {(cube_file_exists)} {(DQ (${ VSub_Number 1))})]
                          negated: True
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(cube_ensure_directory)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(dirname)} {(DQ (${ VSub_Number 1))})]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [5136 5144]
                          )
                        )
                      } {($ VSub_Number '$2')} {($ VSub_Number '$3')} {($ VSub_Number '$4')}
                    )
                    (AndOr
                      children: [(C {(touch)} {(DQ (${ VSub_Number 1))}) (C {(cube_check_return)})]
                      op_id: Op_DPipe
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_ensure_file_result)
                          op: Equal
                          rhs: {(0)}
                          spids: [5169]
                        )
                      ]
                      spids: [5169]
                    )
                    (C {(cube_echo)} {(DQ ('Created file ') (${ VSub_Number 1))})
                  ]
                  spids: [-1 5128]
                )
              ]
              spids: [-1 5183]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Number 2))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      children: [
                        (C {(chmod)} {(${ VSub_Number 2)} {(DQ (${ VSub_Number 1))})
                        (C {(cube_check_return)})
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 5205]
                )
              ]
              spids: [-1 5225]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Number 3))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      children: [
                        (C {(chown)} {(${ VSub_Number 3)} {(DQ (${ VSub_Number 1))})
                        (C {(cube_check_return)})
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 5247]
                )
              ]
              spids: [-1 5267]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Number 4))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      children: [
                        (C {(chgrp)} {(${ VSub_Number 4)} {(DQ (${ VSub_Number 1))})
                        (C {(cube_check_return)})
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 5289]
                )
              ]
              spids: [-1 5309]
            )
            (ControlFlow
              token: <ControlFlow_Return return>
              arg_word: {(${ VSub_Name cube_ensure_file_result)}
            )
          ]
          spids: [5095]
        )
      spids: [5091 5094]
    )
    (FuncDef
      name: cube_pushd
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(cube_command_exists)} {(pushd)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      children: [(C {(pushd)} {(DQ (${ VSub_At '@'))}) (C {(cube_check_return)})]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 5371]
                )
              ]
              else_action: [(C {(cube_throw)} {(DQ ('TODO: Not implemented'))})]
              spids: [5387 5397]
            )
          ]
          spids: [5347]
        )
      spids: [5343 5346]
    )
    (FuncDef
      name: cube_popd
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(cube_command_exists)} {(popd)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      children: [(C {(popd)} {(DQ (${ VSub_At '@'))}) (C {(cube_check_return)})]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 5432]
                )
              ]
              else_action: [(C {(cube_throw)} {(DQ ('TODO: Not implemented'))})]
              spids: [5448 5458]
            )
          ]
          spids: [5421]
        )
      spids: [5417 5420]
    )
    (FuncDef
      name: cube_has_role
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (ForEach
              iter_name: cube_has_role_name
              iter_words: [{(${ VSub_Name cubevar_api_roles)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ (${ VSub_Name cube_has_role_name))} 
                                  {(Lit_Other '=')} {(DQ (${ VSub_Number 1))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                          spids: [-1 5539]
                        )
                      ]
                      spids: [-1 5547]
                    )
                  ]
                  spids: [5515 5550]
                )
              spids: [5509 5513]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [5488]
        )
      spids: [5484 5487]
    )
    (FuncDef
      name: cube_file_contains
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(2)} {(DQ (${ VSub_At '@'))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_file_contains_grep_output)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (C {(grep)} {(-l)} {(DQ (${ VSub_Number 2))} {(DQ (${ VSub_Number 1))})
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [5610 5626]
                        )
                      )
                    }
                  spids: [5608]
                )
              ]
              spids: [5608]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_file_contains_grep_results)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [5630]
                )
              ]
              spids: [5630]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name cube_file_contains_grep_results)} {(-eq)} 
                          {(2)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cube_throw)} {(DQ (${ VSub_Name cube_file_contains_grep_output))})]
                  spids: [-1 5651]
                )
              ]
              else_action: [
                (ControlFlow
                  token: <ControlFlow_Return return>
                  arg_word: {(${ VSub_Name cube_file_contains_grep_results)}
                )
              ]
              spids: [5663 5673]
            )
          ]
          spids: [5588]
        )
      spids: [5584 5587]
    )
    (FuncDef
      name: cube_stdin_contains
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_stdin_contains_output)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(grep)} {(-l)} {(DQ (${ VSub_Number 1))} {(-)})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [5718 5730]
                      )
                    }
                  spids: [5717]
                )
              ]
              spids: [5717]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_stdin_contains_result)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [5733]
                )
              ]
              spids: [5733]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name cube_stdin_contains_result)} {(-eq)} {(2)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cube_throw)} {(DQ (${ VSub_Name cube_stdin_contains_output))})]
                  spids: [-1 5752]
                )
              ]
              else_action: [
                (ControlFlow
                  token: <ControlFlow_Return return>
                  arg_word: {(${ VSub_Name cube_stdin_contains_result)}
                )
              ]
              spids: [5764 5774]
            )
          ]
          spids: [5703]
        )
      spids: [5699 5702]
    )
    (FuncDef
      name: cube_interface_ipv4_address
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (AndOr
              children: [
                (Pipeline
                  children: [
                    (C {(ip)} {(-4)} {(-o)} {(address)} {(show)} {(dev)} {(${ VSub_Number 1)})
                    (C {(head)} {(-1)})
                    (C {(awk)} {(SQ <'{print $4}'>)})
                    (C {(sed)} {(SQ <'s/\\/.*$//g'>)})
                  ]
                  negated: False
                )
                (C {(cube_check_return)})
              ]
              op_id: Op_DPipe
            )
          ]
          spids: [5804]
        )
      spids: [5800 5803]
    )
    (FuncDef
      name: cube_interface_ipv6_address
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (AndOr
              children: [
                (Pipeline
                  children: [
                    (C {(ip)} {(-6)} {(-o)} {(address)} {(show)} {(dev)} {(${ VSub_Number 1)})
                    (C {(head)} {(-1)})
                    (C {(awk)} {(SQ <'{print $4}'>)})
                    (C {(sed)} {(SQ <'s/\\/.*$//g'>)})
                  ]
                  negated: False
                )
                (C {(cube_check_return)})
              ]
              op_id: Op_DPipe
            )
          ]
          spids: [5888]
        )
      spids: [5884 5887]
    )
    (FuncDef
      name: cube_prompt
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (While
              cond: [(Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (C {(printf)} {(DQ (${ VSub_Number 1) (' (y/N)? '))})
                    (AndOr
                      children: [(C {(read)} {(cube_prompt_response)}) (C {(cube_check_return)})]
                      op_id: Op_DPipe
                    )
                    (Case
                      to_match: {(DQ (${ VSub_Name cube_prompt_response))}
                      arms: [
                        (case_arm
                          pat_list: [{(Lit_Other '[') (Yy) (Lit_Other ']') (Lit_Other '*')}]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                          spids: [6027 6031 6039 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ )} {(Lit_Other '[') (Nn) (Lit_Other ']') (Lit_Other '*')}]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                          spids: [-1 6049 6057 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [(C {(echo)} {(DQ ('Please answer yes or no.'))})]
                          spids: [6060 6061 6071 -1]
                        )
                      ]
                      spids: [6016 6024 6074]
                    )
                  ]
                  spids: [5994 6077]
                )
            )
          ]
          spids: [5975]
        )
      spids: [5971 5974]
    )
    (FuncDef
      name: cube_hostname
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Number 1))} {(Lit_Other '=')} {(DQ )} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      children: [(C {(uname)} {(-n)}) (C {(cube_check_return)})]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 6128]
                )
              ]
              else_action: [
                (AndOr
                  children: [
                    (Pipeline
                      children: [(C {(uname)} {(-n)}) (C {(sed)} {(SQ <'s/\\..*$//g'>)})]
                      negated: False
                    )
                    (C {(cube_check_return)})
                  ]
                  op_id: Op_DPipe
                )
              ]
              spids: [6140 6160]
            )
          ]
          spids: [6107]
        )
      spids: [6103 6106]
    )
    (FuncDef
      name: cube_user_exists
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (SimpleCommand
              words: [{(id)} {(-u)} {(DQ (${ VSub_Number 1))}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[6214])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[6217])
              ]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{($ VSub_QMark '$?')})
          ]
          spids: [6190]
        )
      spids: [6186 6189]
    )
    (FuncDef
      name: cube_create_user
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (AndOr
              children: [(C {(useradd)} {(DQ (${ VSub_Number 1))}) (C {(cube_check_return)})]
              op_id: Op_DPipe
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Number 2))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      children: [
                        (C {(usermod)} {(-s)} {(DQ (${ VSub_Number 2))} {(DQ (${ VSub_Number 1))})
                        (C {(cube_check_return)})
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 6309]
                )
              ]
              spids: [-1 6333]
            )
          ]
          spids: [6259]
        )
      spids: [6255 6258]
    )
    (FuncDef
      name: cube_group_exists
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (C {(cube_file_contains)} {(/etc/group)} {(DQ ('^') (${ VSub_Number 1) (':'))})
          ]
          spids: [6363]
        )
      spids: [6359 6362]
    )
    (FuncDef
      name: cube_create_group
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (AndOr
              children: [(C {(groupadd)} {(DQ (${ VSub_Number 1))}) (C {(cube_check_return)})]
              op_id: Op_DPipe
            )
          ]
          spids: [6417]
        )
      spids: [6413 6416]
    )
    (FuncDef
      name: cube_group_contains_user
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(2)} {(DQ (${ VSub_At '@'))})
            (ForEach
              iter_name: cube_group_contains_user
              iter_words: [
                {
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (Pipeline
                            children: [
                              (C {(groups)} {(DQ (${ VSub_Number 2))})
                              (C {(sed)} {(DQ (s/) (${ VSub_Number 2) (' : //g'))})
                            ]
                            negated: False
                          )
                        ]
                      )
                    left_token: <Left_CommandSub '$('>
                    spids: [6498 6518]
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ (${ VSub_Name cube_group_contains_user))} 
                                  {(Lit_Other '=')} {(DQ (${ VSub_Number 1))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                          spids: [-1 6545]
                        )
                      ]
                      spids: [-1 6553]
                    )
                  ]
                  spids: [6521 6556]
                )
              spids: [6497 6519]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [6476]
        )
      spids: [6472 6475]
    )
    (FuncDef
      name: cube_add_group_user
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(2)} {(DQ (${ VSub_At '@'))})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Number 3))} {(Lit_Other '=')} {(DQ )} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(usermod)} {(-a)} {(-G)} {(DQ (${ VSub_Number 1))} {(DQ (${ VSub_Number 2))})
                  ]
                  spids: [-1 6634]
                )
              ]
              else_action: [(C {(usermod)} {(-g)} {(DQ (${ VSub_Number 1))} {(DQ (${ VSub_Number 2))})]
              spids: [6656 6676]
            )
          ]
          spids: [6600]
        )
      spids: [6596 6599]
    )
    (FuncDef
      name: cube_include
      body: 
        (BraceGroup
          children: [
            (C {(cube_check_numargs)} {(1)} {(DQ (${ VSub_At '@'))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cube_include_name)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Number 1>
                          suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{(Lit_Slash /)})
                          spids: [6724 6728]
                        )
                      )
                    }
                  spids: [6722]
                )
              ]
              spids: [6722]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-d)} {(DQ (../) (${ VSub_Name cube_include_name))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cube_include_name_base)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(basename)} {(DQ (${ VSub_Name cube_include_name))} {(.sh)})
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [6752 6762]
                              )
                            }
                          spids: [6751]
                        )
                      ]
                      spids: [6751]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-r)} 
                                  {
                                    (DQ (../) (${ VSub_Name cube_include_name) (/) 
                                      (${ VSub_Name cube_include_name_base) (.sh)
                                    )
                                  } {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(cube_echo)} 
                              {(DQ ('Including ') (${ VSub_Name cube_include_name) (' cube...'))}
                            )
                            (C {(.)} 
                              {
                                (DQ (../) (${ VSub_Name cube_include_name) (/) 
                                  (${ VSub_Name cube_include_name_base) (.sh)
                                )
                              }
                            )
                          ]
                          spids: [-1 6786]
                        )
                      ]
                      else_action: [
                        (C {(cube_throw)} 
                          {
                            (DQ ('Cannot read ') (${ VSub_Name cube_include_name) (/) 
                              (${ VSub_Name cube_include_name_base) (.sh)
                            )
                          }
                        )
                      ]
                      spids: [6815 6833]
                    )
                  ]
                  spids: [-1 6748]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-r)} {(DQ (../) (${ VSub_Name cube_include_name))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(cube_echo)} {(DQ ('Including ') (${ VSub_Name cube_include_name) (' cube...'))})
                    (C {(.)} {(DQ (../) (${ VSub_Name cube_include_name))})
                  ]
                  spids: [6836 6852]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-r)} {(DQ (${ VSub_Name cube_include_name) (.sh))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(cube_echo)} {(DQ ('Including ') (${ VSub_Name cube_include_name) (' cube...'))})
                    (C {(.)} {(DQ (../) (${ VSub_Name cube_include_name) (.sh))})
                  ]
                  spids: [6876 6892]
                )
              ]
              else_action: [
                (C {(cube_throw)} 
                  {
                    (DQ ('Cube ') (${ VSub_Name cube_include_name) 
                      (' not found (did you upload it with -i ') (${ VSub_Name cube_include_name) (' ?).')
                    )
                  }
                )
              ]
              spids: [6917 6935]
            )
          ]
          spids: [6706]
        )
      spids: [6702 6705]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:cubevar_api_post_restart)
          op: Equal
          rhs: {(DQ )}
          spids: [6943]
        )
      ]
      spids: [6943]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:cubevar_api_roles) op:Equal rhs:{(DQ )} spids:[6948])]
      spids: [6948]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ (${ VSub_Name POSIXCUBE_APIS_ONLY))} {(Lit_Other '=')} {(DQ )} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:p666_debug) op:Equal rhs:{(0)} spids:[6997])]
              spids: [6997]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:p666_quiet) op:Equal rhs:{(0)} spids:[7001])]
              spids: [7001]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:p666_skip_init) op:Equal rhs:{(0)} spids:[7005])]
              spids: [7005]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:p666_keep_exec) op:Equal rhs:{(0)} spids:[7009])]
              spids: [7009]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:p666_skip_host_errors)
                  op: Equal
                  rhs: {(0)}
                  spids: [7013]
                )
              ]
              spids: [7013]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:p666_hosts) op:Equal rhs:{(DQ )} spids:[7017])]
              spids: [7017]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:p666_cubes) op:Equal rhs:{(DQ )} spids:[7022])]
              spids: [7022]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:p666_include_cubes)
                  op: Equal
                  rhs: {(DQ )}
                  spids: [7027]
                )
              ]
              spids: [7027]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:p666_envar_scripts)
                  op: Equal
                  rhs: {(DQ )}
                  spids: [7032]
                )
              ]
              spids: [7032]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:p666_envar_scripts_password)
                  op: Equal
                  rhs: {(DQ )}
                  spids: [7037]
                )
              ]
              spids: [7037]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:p666_user)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name USER))}
                  spids: [7042]
                )
              ]
              spids: [7042]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:p666_cubedir)
                  op: Equal
                  rhs: {(DQ ('~/posixcubes/'))}
                  spids: [7050]
                )
              ]
              spids: [7050]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:p666_roles) op:Equal rhs:{(DQ )} spids:[7056])]
              spids: [7056]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:p666_options) op:Equal rhs:{(DQ )} spids:[7061])]
              spids: [7061]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:p666_specfile)
                  op: Equal
                  rhs: {(DQ (./cubespecs.ini))}
                  spids: [7066]
                )
              ]
              spids: [7066]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:p666_parallel) op:Equal rhs:{(0)} spids:[7072])]
              spids: [7072]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:p666_async_cubes)
                  op: Equal
                  rhs: {(0)}
                  spids: [7076]
                )
              ]
              spids: [7076]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:p666_default_envars)
                  op: Equal
                  rhs: {(DQ ('envars*sh envars*sh.enc'))}
                  spids: [7080]
                )
              ]
              spids: [7080]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (CommandSubPart
                              command_list: (CommandList children:[(C {(cube_shell)})])
                              left_token: <Left_CommandSub '$('>
                              spids: [7092 7094]
                            )
                          } {(-eq)} {(${ VSub_Name POSIXCUBE_SHELL_BASH)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_parallel)
                          op: Equal
                          rhs: {(64)}
                          spids: [7108]
                        )
                      ]
                      spids: [7108]
                    )
                  ]
                  spids: [-1 7105]
                )
              ]
              spids: [-1 7112]
            )
            (FuncDef
              name: p666_show_version
              body: 
                (BraceGroup
                  children: [
                    (C {(p666_printf)} 
                      {
                        (DQ ('posixcube.sh version ') (${ VSub_Name POSIXCUBE_VERSION) 
                          (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                        )
                      }
                    )
                  ]
                  spids: [7120]
                )
              spids: [7116 7119]
            )
            (FuncDef
              name: p666_printf
              body: 
                (BraceGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_printf_str)
                          op: Equal
                          rhs: {($ VSub_Number '$1')}
                          spids: [7145]
                        )
                      ]
                      spids: [7145]
                    )
                    (C {(shift)})
                    (C {(printf)} 
                      {
                        (DQ ('[') 
                          (CommandSubPart
                            command_list: (CommandList children:[(C {(date)})])
                            left_token: <Left_CommandSub '$('>
                            spids: [7156 7158]
                          ) ('] ') (${ VSub_Name p666_printf_str)
                        )
                      } {(DQ (${ VSub_At '@'))}
                    )
                  ]
                  spids: [7142]
                )
              spids: [7138 7141]
            )
            (FuncDef
              name: p666_printf_error
              body: 
                (BraceGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_printf_str)
                          op: Equal
                          rhs: {($ VSub_Number '$1')}
                          spids: [7183]
                        )
                      ]
                      spids: [7183]
                    )
                    (C {(shift)})
                    (SimpleCommand
                      words: [
                        {(printf)}
                        {
                          (DQ (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ('[') 
                            (CommandSubPart
                              command_list: (CommandList children:[(C {(date)})])
                              left_token: <Left_CommandSub '$('>
                              spids: [7195 7197]
                            ) ('] ') (${ VSub_Name POSIXCUBE_COLOR_RED) (Error) (${ VSub_Name POSIXCUBE_COLOR_RESET) (': ') 
                            (${ VSub_Name p666_printf_str) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                          )
                        }
                        {(DQ (${ VSub_At '@'))}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[7220])]
                    )
                  ]
                  spids: [7180]
                )
              spids: [7176 7179]
            )
            (FuncDef
              name: p666_exit
              body: 
                (BraceGroup
                  children: [
                    (ForEach
                      iter_name: p666_envar_script
                      iter_words: [{(${ VSub_Name p666_envar_scripts)}]
                      do_arg_iter: False
                      body: 
                        (DoGroup
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_envar_script_enc_matches)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (C {(expr)} {(${ VSub_Name p666_envar_script)} 
                                                {(Lit_Other ':')} {(SQ <'.*\\.dec$'>)}
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub '$('>
                                        spids: [7251 7263]
                                      )
                                    }
                                  spids: [7250]
                                )
                              ]
                              spids: [7250]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} 
                                          {(${ VSub_Name p666_envar_script_enc_matches)} {(-ne)} {(0)} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (SimpleCommand
                                      words: [{(rm)} {(DQ (${ VSub_Name p666_envar_script))}]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_Great
                                          fd: 2
                                          arg_word: {(/dev/null)}
                                          spids: [7300]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [-1 7281]
                                )
                              ]
                              spids: [-1 7304]
                            )
                          ]
                          spids: [7247 7307]
                        )
                      spids: [7241 7245]
                    )
                    (AndOr
                      children: [
                        (C {(Lit_Other '[')} {(${ VSub_Name p666_keep_exec)} {(-eq)} {(0)} 
                          {(Lit_Other ']')}
                        )
                        (SimpleCommand
                          words: [{(rm)} {(-f)} {(DQ (${ VSub_Name p666_script))}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 2
                              arg_word: {(/dev/null)}
                              spids: [7335]
                            )
                          ]
                        )
                      ]
                      op_id: Op_DAmp
                    )
                    (C {(exit)} {(${ VSub_Number 1)})
                  ]
                  spids: [7233]
                )
              spids: [7229 7232]
            )
            (FuncDef
              name: p666_install
              body: 
                (BraceGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_func_result)
                          op: Equal
                          rhs: {(0)}
                          spids: [7359]
                        )
                      ]
                      spids: [7359]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-d)} {(DQ (/etc/bash_completion.d/))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_autocomplete_file)
                                  op: Equal
                                  rhs: {(/etc/bash_completion.d/posixcube_completion.sh)}
                                  spids: [7379]
                                )
                              ]
                              spids: [7379]
                            )
                            (Pipeline
                              children: [
                                (SimpleCommand
                                  words: [{(cat)}]
                                  redirects: [
                                    (HereDoc
                                      op_id: Redir_DLess
                                      fd: -1
                                      body: 
                                        {('_posixcube_complete() {\n') ('  COMPREPLY=()\n') 
                                          ('  cur="${COMP_WORDS[COMP_CWORD]}"\n') ('  prev="${COMP_WORDS[COMP_CWORD-1]}"\n') ('  case "${prev}" in\n') ('    \\-h)\n') 
                                          ('      p666_host_list=$({ \n') ('        for c in /etc/ssh_config /etc/ssh/ssh_config ~/.ssh/config\n') 
                                          (
"        do [ -r $c ] && sed -n -e 's/^Host[[:space:]]//p' -e 's/^[[:space:]]*HostName[[:space:]]//p' $c\n"
                                          ) ('        done\n') 
                                          (
'        for k in /etc/ssh_known_hosts /etc/ssh/ssh_known_hosts ~/.ssh/known_hosts\n'
                                          ) ("        do [ -r $k ] && egrep -v '^[#\\[]' $k|cut -f 1 -d ' '|sed -e 's/[,:].*//g'\n") 
                                          ('        done\n') ("        sed -n -e 's/^[0-9][0-9\\.]*//p' /etc/hosts; }|tr ' ' '\\n'|grep -v '*')\n") 
                                          (
'      COMPREPLY=( $(compgen -W "${p666_host_list}" -- $cur))\n'
                                          ) ('      ;;\n') ('    \\-z)\n') ('      p666_complete_specs="$(sed \'s/=.*//g\' cubespecs.ini)"\n') 
                                          (
'      COMPREPLY=( $(compgen -W "${p666_complete_specs}" -- $cur))\n'
                                          ) ('      ;;\n') ('    *)\n') ('      ;;\n') ('  esac\n') ('  return 0\n') ('}\n') 
                                          (
'complete -o default -F _posixcube_complete posixcube.sh\n'
                                          )
                                        }
                                      do_expansion: False
                                      here_end: HEREDOC
                                      was_filled: True
                                      spids: [7397]
                                    )
                                  ]
                                )
                                (SimpleCommand
                                  words: [{(tee)} {(${ VSub_Name p666_autocomplete_file)}]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_Great
                                      fd: -1
                                      arg_word: {(/dev/null)}
                                      spids: [7410]
                                    )
                                  ]
                                )
                              ]
                              negated: False
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_func_result)
                                  op: Equal
                                  rhs: {($ VSub_QMark '$?')}
                                  spids: [7416]
                                )
                              ]
                              spids: [7416]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(${ VSub_Name p666_func_result)} {(-eq)} 
                                          {(0)} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(chmod)} {(Lit_Other '+') (x)} 
                                      {(${ VSub_Name p666_autocomplete_file)}
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_func_result)
                                          op: Equal
                                          rhs: {($ VSub_QMark '$?')}
                                          spids: [7448]
                                        )
                                      ]
                                      spids: [7448]
                                    )
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(Lit_Other '[')} {(${ VSub_Name p666_func_result)} 
                                                  {(-eq)} {(0)} {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (C {(.)} {(${ VSub_Name p666_autocomplete_file)})
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_func_result)
                                                  op: Equal
                                                  rhs: {($ VSub_QMark '$?')}
                                                  spids: [7477]
                                                )
                                              ]
                                              spids: [7477]
                                            )
                                            (If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (Sentence
                                                      child: 
                                                        (C {(Lit_Other '[')} 
                                                          {(${ VSub_Name p666_func_result)} {(-eq)} {(0)} {(Lit_Other ']')}
                                                        )
                                                      terminator: <Op_Semi ';'>
                                                    )
                                                  ]
                                                  action: [
                                                    (C {(p666_printf)} 
                                                      {
                                                        (DQ 
                                                          (
'Installed Bash programmable completion script into '
                                                          ) (${ VSub_Name p666_autocomplete_file) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                                        )
                                                      }
                                                    )
                                                  ]
                                                  spids: [-1 7496]
                                                )
                                              ]
                                              else_action: [
                                                (C {(p666_printf)} 
                                                  {
                                                    (DQ ('Could not execute ') 
                                                      (${ VSub_Name p666_autocomplete_file) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                                    )
                                                  }
                                                )
                                              ]
                                              spids: [7510 7524]
                                            )
                                          ]
                                          spids: [-1 7467]
                                        )
                                      ]
                                      else_action: [
                                        (C {(p666_printf)} 
                                          {
                                            (DQ ('Could not chmod +x ') 
                                              (${ VSub_Name p666_autocomplete_file) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                            )
                                          }
                                        )
                                      ]
                                      spids: [7527 7541]
                                    )
                                  ]
                                  spids: [-1 7435]
                                )
                              ]
                              else_action: [
                                (C {(p666_printf)} 
                                  {
                                    (DQ ('Could not create ') (${ VSub_Name p666_autocomplete_file) 
                                      (EscapedLiteralPart
                                        token: <Lit_EscapedChar '\\n'>
                                      )
                                    )
                                  }
                                )
                                (C {(p666_printf)} 
                                  {
                                    (DQ ('You may need to try with sudo. For example:') 
                                      (EscapedLiteralPart
                                        token: <Lit_EscapedChar '\\n'>
                                      )
                                    )
                                  }
                                )
                                (C {(p666_printf)} 
                                  {
                                    (DQ ('  sudo ') 
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [(C {(cube_current_script_abs_path)})]
                                          )
                                        left_token: <Left_CommandSub '$('>
                                        spids: [7570 7572]
                                      ) (' -b && . ') (${ VSub_Name p666_autocomplete_file) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                    )
                                  }
                                )
                                (C {(p666_printf)} 
                                  {
                                    (DQ 
                                      (
'You only need to source the command the first time. Subsequent shells will automatically source it.'
                                      ) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                    )
                                  }
                                )
                              ]
                              spids: [7544 7589]
                            )
                          ]
                          spids: [-1 7376]
                        )
                      ]
                      else_action: [
                        (C {(p666_printf)} 
                          {
                            (DQ 
                              (
'No directory /etc/bash_completion.d/ found, skipping Bash programmable completion installation.'
                              ) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                            )
                          }
                        )
                      ]
                      spids: [7592 7603]
                    )
                    (C {(exit)} {(${ VSub_Name p666_func_result)})
                  ]
                  spids: [7356]
                )
              spids: [7352 7355]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:p666_all_hosts)
                  op: Equal
                  rhs: {(DQ )}
                  spids: [7617]
                )
              ]
              spids: [7617]
            )
            (FuncDef
              name: p666_process_hostname
              body: 
                (BraceGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_hostname_wildcard)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(expr)} {(DQ (${ VSub_Number 1))} {(Lit_Other ':')} 
                                        {(SQ <'.*\\*.*'>)}
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [7631 7645]
                              )
                            }
                          spids: [7630]
                        )
                      ]
                      spids: [7630]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(${ VSub_Name p666_hostname_wildcard)} {(-ne)} 
                                  {(0)} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name p666_all_hosts))} 
                                          {(Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_all_hosts)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (Pipeline
                                                        children: [
                                                          (BraceGroup
                                                            children: [
                                                              (ForEach
                                                                iter_name: c
                                                                iter_words: [
                                                                  {(/etc/ssh_config)}
                                                                  {(/etc/ssh/ssh_config)}
                                                                  {(TildeSubPart prefix:'') 
                                                                    (/.ssh/config)
                                                                  }
                                                                ]
                                                                do_arg_iter: False
                                                                body: 
                                                                  (DoGroup
                                                                    children: [
                                                                      (AndOr
                                                                        children: [
                                                                          (C {(Lit_Other '[')} {(-r)} 
                                                                            {($ VSub_Name '$c')} {(Lit_Other ']')}
                                                                          )
                                                                          (C {(sed)} {(-n)} {(-e)} 
                                                                            {
                                                                              (SQ 
                                                                                <
's/^Host[[:space:]]//p'
                                                                                >
                                                                              )
                                                                            } {(-e)} {(SQ <'s/^[[:space:]]*HostName[[:space:]]//p'>)} {($ VSub_Name '$c')}
                                                                          )
                                                                        ]
                                                                        op_id: Op_DAmp
                                                                      )
                                                                    ]
                                                                    spids: [7713 7744]
                                                                  )
                                                                spids: [7704 -1]
                                                              )
                                                              (ForEach
                                                                iter_name: k
                                                                iter_words: [
                                                                  {(/etc/ssh_known_hosts)}
                                                                  {(/etc/ssh/ssh_known_hosts)}
                                                                  {(TildeSubPart prefix:'') 
                                                                    (/.ssh/known_hosts)
                                                                  }
                                                                ]
                                                                do_arg_iter: False
                                                                body: 
                                                                  (DoGroup
                                                                    children: [
                                                                      (AndOr
                                                                        children: [
                                                                          (C {(Lit_Other '[')} {(-r)} 
                                                                            {($ VSub_Name '$k')} {(Lit_Other ']')}
                                                                          )
                                                                          (Pipeline
                                                                            children: [
                                                                              (C {(egrep)} {(-v)} 
                                                                                {(SQ <'^[#\\[]'>)} {($ VSub_Name '$k')}
                                                                              )
                                                                              (C {(cut)} {(-f)} {(1)} 
                                                                                {(-d)} {(SQ <' '>)}
                                                                              )
                                                                              (C {(sed)} {(-e)} 
                                                                                {
                                                                                  (SQ <'s/[,:].*//g'>)
                                                                                }
                                                                              )
                                                                            ]
                                                                            negated: False
                                                                          )
                                                                        ]
                                                                        op_id: Op_DAmp
                                                                      )
                                                                    ]
                                                                    spids: [7761 7804]
                                                                  )
                                                                spids: [7752 -1]
                                                              )
                                                              (Sentence
                                                                child: 
                                                                  (C {(sed)} {(-n)} {(-e)} 
                                                                    {(SQ <'s/^[0-9][0-9\\.]*//p'>)} {(/etc/hosts)}
                                                                  )
                                                                terminator: <Op_Semi ';'>
                                                              )
                                                            ]
                                                            spids: [7695]
                                                          )
                                                          (C {(tr)} {(SQ <'\\n'>)} {(SQ <' '>)})
                                                          (C {(grep)} {(-v)} {(SQ <'*'>)})
                                                        ]
                                                        negated: False
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [7694 7839]
                                              )
                                            }
                                          spids: [7693]
                                        )
                                      ]
                                      spids: [7693]
                                    )
                                  ]
                                  spids: [-1 7690]
                                )
                              ]
                              spids: [-1 7842]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_process_hostname_search)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (Pipeline
                                                children: [
                                                  (C {(printf)} {(DQ (${ VSub_Number 1))})
                                                  (C {(sed)} {(SQ <'s/\\*/\\.\\*/g'>)})
                                                ]
                                                negated: False
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub '$('>
                                        spids: [7848 7864]
                                      )
                                    }
                                  spids: [7847]
                                )
                              ]
                              spids: [7847]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_process_hostname_list)
                                  op: Equal
                                  rhs: {(DQ )}
                                  spids: [7869]
                                )
                              ]
                              spids: [7869]
                            )
                            (ForEach
                              iter_name: p666_all_host
                              iter_words: [{(${ VSub_Name p666_all_hosts)}]
                              do_arg_iter: False
                              body: 
                                (DoGroup
                                  children: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_all_host_match)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (C {(expr)} {(${ VSub_Name p666_all_host)} 
                                                        {(Lit_Other ':')} {(${ VSub_Name p666_process_hostname_search)}
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [7889 7901]
                                              )
                                            }
                                          spids: [7888]
                                        )
                                      ]
                                      spids: [7888]
                                    )
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(Lit_Other '[')} 
                                                  {(${ VSub_Name p666_all_host_match)} {(-ne)} {(0)} {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_process_hostname_list)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (CommandSubPart
                                                        command_list: 
                                                          (CommandList
                                                            children: [
                                                              (C {(cube_append_str)} 
                                                                {
                                                                  (DQ 
                                                                    (${ VSub_Name 
p666_process_hostname_list
                                                                    )
                                                                  )
                                                                } {(DQ (${ VSub_Name p666_all_host))}
                                                              )
                                                            ]
                                                          )
                                                        left_token: <Left_CommandSub '$('>
                                                        spids: [7923 7937]
                                                      )
                                                    }
                                                  spids: [7922]
                                                )
                                              ]
                                              spids: [7922]
                                            )
                                          ]
                                          spids: [-1 7919]
                                        )
                                      ]
                                      spids: [-1 7940]
                                    )
                                  ]
                                  spids: [7885 7943]
                                )
                              spids: [7879 7883]
                            )
                            (C {(echo)} {(DQ (${ VSub_Name p666_process_hostname_list))})
                          ]
                          spids: [-1 7663]
                        )
                      ]
                      else_action: [(C {(echo)} {(DQ (${ VSub_Number 1))})]
                      spids: [7955 7967]
                    )
                  ]
                  spids: [7627]
                )
              spids: [7623 7626]
            )
            (FuncDef
              name: p666_process_options
              body: 
                (BraceGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:OPTIND) op:Equal rhs:{(1)} spids:[7986])]
                      spids: [7986]
                    )
                    (While
                      cond: [
                        (Sentence
                          child: 
                            (C {(getopts)} {(DQ ('?vdqbskyah:u:c:e:p:w:r:o:z:i:'))} {(p666_opt)} 
                              {(DQ (${ VSub_At '@'))}
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      body: 
                        (DoGroup
                          children: [
                            (Case
                              to_match: {(DQ ($ VSub_Name '$p666_opt'))}
                              arms: [
                                (case_arm
                                  pat_list: [{(EscapedLiteralPart token:<Lit_EscapedChar '\\?'>)}]
                                  action: [(C {(p666_show_usage)})]
                                  spids: [8024 8025 8031 -1]
                                )
                                (case_arm
                                  pat_list: [{(v)}]
                                  action: [(C {(p666_show_version)}) (C {(exit)} {(1)})]
                                  spids: [8034 8035 8046 -1]
                                )
                                (case_arm
                                  pat_list: [{(d)}]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_debug)
                                          op: Equal
                                          rhs: {(1)}
                                          spids: [8053]
                                        )
                                      ]
                                      spids: [8053]
                                    )
                                  ]
                                  spids: [8049 8050 8057 -1]
                                )
                                (case_arm
                                  pat_list: [{(q)}]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_quiet)
                                          op: Equal
                                          rhs: {(1)}
                                          spids: [8064]
                                        )
                                      ]
                                      spids: [8064]
                                    )
                                  ]
                                  spids: [8060 8061 8068 -1]
                                )
                                (case_arm
                                  pat_list: [{(s)}]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_skip_init)
                                          op: Equal
                                          rhs: {(1)}
                                          spids: [8075]
                                        )
                                      ]
                                      spids: [8075]
                                    )
                                  ]
                                  spids: [8071 8072 8079 -1]
                                )
                                (case_arm
                                  pat_list: [{(k)}]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_keep_exec)
                                          op: Equal
                                          rhs: {(1)}
                                          spids: [8086]
                                        )
                                      ]
                                      spids: [8086]
                                    )
                                  ]
                                  spids: [8082 8083 8090 -1]
                                )
                                (case_arm
                                  pat_list: [{(y)}]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_skip_host_errors)
                                          op: Equal
                                          rhs: {(1)}
                                          spids: [8097]
                                        )
                                      ]
                                      spids: [8097]
                                    )
                                  ]
                                  spids: [8093 8094 8101 -1]
                                )
                                (case_arm
                                  pat_list: [{(a)}]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_async_cubes)
                                          op: Equal
                                          rhs: {(1)}
                                          spids: [8108]
                                        )
                                      ]
                                      spids: [8108]
                                    )
                                  ]
                                  spids: [8104 8105 8112 -1]
                                )
                                (case_arm
                                  pat_list: [{(b)}]
                                  action: [(C {(p666_install)})]
                                  spids: [8115 8116 8122 -1]
                                )
                                (case_arm
                                  pat_list: [{(h)}]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_processed_hostname)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (C {(p666_process_hostname)} 
                                                        {(DQ (${ VSub_Name OPTARG))}
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [8130 8138]
                                              )
                                            }
                                          spids: [8129]
                                        )
                                      ]
                                      spids: [8129]
                                    )
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(Lit_Other '[')} 
                                                  {(DQ (${ VSub_Name p666_processed_hostname))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_hosts)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (CommandSubPart
                                                        command_list: 
                                                          (CommandList
                                                            children: [
                                                              (C {(cube_append_str)} 
                                                                {(DQ (${ VSub_Name p666_hosts))} {(DQ (${ VSub_Name p666_processed_hostname))}
                                                              )
                                                            ]
                                                          )
                                                        left_token: <Left_CommandSub '$('>
                                                        spids: [8164 8178]
                                                      )
                                                    }
                                                  spids: [8163]
                                                )
                                              ]
                                              spids: [8163]
                                            )
                                          ]
                                          spids: [-1 8160]
                                        )
                                      ]
                                      else_action: [
                                        (C {(p666_printf_error)} 
                                          {
                                            (DQ ('No known hosts match ') (${ VSub_Name OPTARG) 
                                              (' from ') (${ VSub_Name p666_all_hosts)
                                            )
                                          }
                                        )
                                        (C {(exit)} {(1)})
                                      ]
                                      spids: [8181 8203]
                                    )
                                  ]
                                  spids: [8125 8126 8206 -1]
                                )
                                (case_arm
                                  pat_list: [{(c)}]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_cubes)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (C {(cube_append_str)} 
                                                        {(DQ (${ VSub_Name p666_cubes))} {(DQ (${ VSub_Name OPTARG))}
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [8214 8228]
                                              )
                                            }
                                          spids: [8213]
                                        )
                                      ]
                                      spids: [8213]
                                    )
                                  ]
                                  spids: [8209 8210 8231 -1]
                                )
                                (case_arm
                                  pat_list: [{(i)}]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_include_cubes)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (C {(cube_append_str)} 
                                                        {(DQ (${ VSub_Name p666_include_cubes))} {(DQ (${ VSub_Name OPTARG))}
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [8239 8253]
                                              )
                                            }
                                          spids: [8238]
                                        )
                                      ]
                                      spids: [8238]
                                    )
                                  ]
                                  spids: [8234 8235 8256 -1]
                                )
                                (case_arm
                                  pat_list: [{(e)}]
                                  action: [
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-r)} 
                                                  {(DQ (${ VSub_Name OPTARG))} {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (C {(p666_printf_error)} 
                                              {
                                                (DQ ('Could not find ') (${ VSub_Name OPTARG) 
                                                  (' ENVAR script.')
                                                )
                                              }
                                            )
                                            (C {(exit)} {(1)})
                                          ]
                                          spids: [-1 8280]
                                        )
                                      ]
                                      spids: [-1 8299]
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_envar_scripts)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (C {(cube_append_str)} 
                                                        {(DQ (${ VSub_Name p666_envar_scripts))} {(DQ (${ VSub_Name OPTARG))}
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [8303 8317]
                                              )
                                            }
                                          spids: [8302]
                                        )
                                      ]
                                      spids: [8302]
                                    )
                                  ]
                                  spids: [8259 8260 8320 -1]
                                )
                                (case_arm
                                  pat_list: [{(u)}]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_user)
                                          op: Equal
                                          rhs: {(DQ (${ VSub_Name OPTARG))}
                                          spids: [8327]
                                        )
                                      ]
                                      spids: [8327]
                                    )
                                  ]
                                  spids: [8323 8324 8335 -1]
                                )
                                (case_arm
                                  pat_list: [{(p)}]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_envar_scripts_password)
                                          op: Equal
                                          rhs: {(DQ (${ VSub_Name OPTARG))}
                                          spids: [8342]
                                        )
                                      ]
                                      spids: [8342]
                                    )
                                  ]
                                  spids: [8338 8339 8350 -1]
                                )
                                (case_arm
                                  pat_list: [{(w)}]
                                  action: [
                                    (AndOr
                                      children: [
                                        (Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (LhsName name:p666_envar_scripts_password)
                                              op: Equal
                                              rhs: 
                                                {
                                                  (DQ 
                                                    (CommandSubPart
                                                      command_list: 
                                                        (CommandList
                                                          children: [
                                                            (C {(cat)} {(${ VSub_Name OPTARG)})
                                                          ]
                                                        )
                                                      left_token: <Left_CommandSub '$('>
                                                      spids: [8359 8365]
                                                    )
                                                  )
                                                }
                                              spids: [8357]
                                            )
                                          ]
                                          spids: [8357]
                                        )
                                        (C {(cube_check_return)})
                                      ]
                                      op_id: Op_DPipe
                                    )
                                  ]
                                  spids: [8353 8354 8373 -1]
                                )
                                (case_arm
                                  pat_list: [{(r)}]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_roles)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (C {(cube_append_str)} 
                                                        {(DQ (${ VSub_Name p666_roles))} {(DQ (${ VSub_Name OPTARG))}
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [8381 8395]
                                              )
                                            }
                                          spids: [8380]
                                        )
                                      ]
                                      spids: [8380]
                                    )
                                  ]
                                  spids: [8376 8377 8398 -1]
                                )
                                (case_arm
                                  pat_list: [{(o)}]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_option_name)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (Pipeline
                                                        children: [
                                                          (C {(echo)} {(DQ (${ VSub_Name OPTARG))})
                                                          (C {(sed)} {(SQ <'s/=.*//'>)})
                                                        ]
                                                        negated: False
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [8410 8426]
                                              )
                                            }
                                          spids: [8409]
                                        )
                                      ]
                                      spids: [8409]
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_option_value)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (Pipeline
                                                        children: [
                                                          (C {(echo)} {(DQ (${ VSub_Name OPTARG))})
                                                          (C {(sed)} 
                                                            {
                                                              (DQ ('s/^') 
                                                                (${ VSub_Name p666_option_name) ('=//')
                                                              )
                                                            }
                                                          )
                                                        ]
                                                        negated: False
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [8430 8450]
                                              )
                                            }
                                          spids: [8429]
                                        )
                                      ]
                                      spids: [8429]
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_option_value)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (C {(p666_process_hostname)} 
                                                        {(DQ (${ VSub_Name p666_option_value))}
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [8454 8462]
                                              )
                                            }
                                          spids: [8453]
                                        )
                                      ]
                                      spids: [8453]
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_options)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (C {(cube_append_str)} 
                                                        {(DQ (${ VSub_Name p666_options))} 
                                                        {
                                                          (DQ (${ VSub_Name p666_option_name) ('=') 
                                                            (EscapedLiteralPart
                                                              token: <Lit_EscapedChar '\\"'>
                                                            ) (${ VSub_Name p666_option_value) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                                                          )
                                                        } {(DQ (${ VSub_Name POSIXCUBE_NEWLINE))}
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [8466 8492]
                                              )
                                            }
                                          spids: [8465]
                                        )
                                      ]
                                      spids: [8465]
                                    )
                                  ]
                                  spids: [8401 8402 8495 -1]
                                )
                                (case_arm
                                  pat_list: [{(z)}]
                                  action: [
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(Lit_Other '[')} {(-r)} 
                                                  {(DQ (${ VSub_Name p666_specfile))} {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_foundspec)
                                                  op: Equal
                                                  rhs: {(0)}
                                                  spids: [8520]
                                                )
                                              ]
                                              spids: [8520]
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_foundspec_names)
                                                  op: Equal
                                                  rhs: {(DQ )}
                                                  spids: [8526]
                                                )
                                              ]
                                              spids: [8526]
                                            )
                                            (While
                                              cond: [
                                                (Sentence
                                                  child: (C {(read)} {(p666_specfile_line)})
                                                  terminator: <Op_Semi ';'>
                                                )
                                              ]
                                              body: 
                                                (DoGroup
                                                  children: [
                                                    (Assignment
                                                      keyword: Assign_None
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (LhsName name:p666_specfile_line_name)
                                                          op: Equal
                                                          rhs: 
                                                            {
                                                              (CommandSubPart
                                                                command_list: 
                                                                  (CommandList
                                                                    children: [
                                                                      (Pipeline
                                                                        children: [
                                                                          (C {(echo)} 
                                                                            {
                                                                              (DQ 
                                                                                (${ VSub_Name 
p666_specfile_line
                                                                                )
                                                                              )
                                                                            }
                                                                          )
                                                                          (C {(sed)} {(SQ <'s/=.*//'>)})
                                                                        ]
                                                                        negated: False
                                                                      )
                                                                    ]
                                                                  )
                                                                left_token: <Left_CommandSub '$('>
                                                                spids: [8544 8560]
                                                              )
                                                            }
                                                          spids: [8543]
                                                        )
                                                      ]
                                                      spids: [8543]
                                                    )
                                                    (Assignment
                                                      keyword: Assign_None
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (LhsName name:p666_foundspec_names)
                                                          op: Equal
                                                          rhs: 
                                                            {
                                                              (CommandSubPart
                                                                command_list: 
                                                                  (CommandList
                                                                    children: [
                                                                      (C {(cube_append_str)} 
                                                                        {
                                                                          (DQ 
                                                                            (${ VSub_Name 
p666_foundspec_names
                                                                            )
                                                                          )
                                                                        } {(DQ (${ VSub_Name p666_specfile_line_name))}
                                                                      )
                                                                    ]
                                                                  )
                                                                left_token: <Left_CommandSub '$('>
                                                                spids: [8564 8578]
                                                              )
                                                            }
                                                          spids: [8563]
                                                        )
                                                      ]
                                                      spids: [8563]
                                                    )
                                                    (If
                                                      arms: [
                                                        (if_arm
                                                          cond: [
                                                            (Sentence
                                                              child: 
                                                                (C {(Lit_Other '[')} 
                                                                  {
                                                                    (DQ 
                                                                      (${ VSub_Name 
p666_specfile_line_name
                                                                      )
                                                                    )
                                                                  } {(Lit_Other '=')} {(DQ (${ VSub_Name OPTARG))} {(Lit_Other ']')}
                                                                )
                                                              terminator: <Op_Semi ';'>
                                                            )
                                                          ]
                                                          action: [
                                                            (Assignment
                                                              keyword: Assign_None
                                                              pairs: [
                                                                (assign_pair
                                                                  lhs: (LhsName name:p666_foundspec)
                                                                  op: Equal
                                                                  rhs: {(1)}
                                                                  spids: [8605]
                                                                )
                                                              ]
                                                              spids: [8605]
                                                            )
                                                            (Assignment
                                                              keyword: Assign_None
                                                              pairs: [
                                                                (assign_pair
                                                                  lhs: 
                                                                    (LhsName
                                                                      name: p666_specfile_line_value
                                                                    )
                                                                  op: Equal
                                                                  rhs: 
                                                                    {
                                                                      (CommandSubPart
                                                                        command_list: 
                                                                          (CommandList
                                                                            children: [
                                                                              (Pipeline
                                                                                children: [
                                                                                  (C {(echo)} 
                                                                                    {
                                                                                      (DQ 
                                                                                        (${ 
VSub_Name p666_specfile_line
                                                                                        )
                                                                                      )
                                                                                    }
                                                                                  )
                                                                                  (C {(sed)} 
                                                                                    {
                                                                                      (DQ ('s/^') 
                                                                                        (${ 
VSub_Name p666_specfile_line_name
                                                                                        ) ('=//')
                                                                                      )
                                                                                    }
                                                                                  )
                                                                                ]
                                                                                negated: False
                                                                              )
                                                                            ]
                                                                          )
                                                                        left_token: 
                                                                          <Left_CommandSub '$('>
                                                                        spids: [8610 8630]
                                                                      )
                                                                    }
                                                                  spids: [8609]
                                                                )
                                                              ]
                                                              spids: [8609]
                                                            )
                                                            (C {(p666_process_options)} 
                                                              {
                                                                (${ VSub_Name 
p666_specfile_line_value
                                                                )
                                                              }
                                                            )
                                                            (ControlFlow
                                                              token: <ControlFlow_Break break>
                                                            )
                                                          ]
                                                          spids: [-1 8602]
                                                        )
                                                      ]
                                                      spids: [-1 8643]
                                                    )
                                                  ]
                                                  spids: [8540 8646]
                                                )
                                              redirects: [
                                                (Redir
                                                  op_id: Redir_Less
                                                  fd: -1
                                                  arg_word: {(DQ (${ VSub_Name p666_specfile))}
                                                  spids: [8648]
                                                )
                                              ]
                                            )
                                            (If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (Sentence
                                                      child: 
                                                        (C {(Lit_Other '[')} 
                                                          {(${ VSub_Name p666_foundspec)} {(-eq)} {(0)} {(Lit_Other ']')}
                                                        )
                                                      terminator: <Op_Semi ';'>
                                                    )
                                                  ]
                                                  action: [
                                                    (C {(p666_printf_error)} 
                                                      {
                                                        (DQ ('Could not find ') (${ VSub_Name OPTARG) 
                                                          (' in ') (${ VSub_Name p666_specfile) (' file with specs ') (${ VSub_Name p666_foundspec_names)
                                                        )
                                                      }
                                                    )
                                                    (C {(exit)} {(1)})
                                                  ]
                                                  spids: [-1 8674]
                                                )
                                              ]
                                              spids: [-1 8700]
                                            )
                                          ]
                                          spids: [-1 8517]
                                        )
                                      ]
                                      else_action: [
                                        (C {(p666_printf_error)} 
                                          {
                                            (DQ ('Could not find ') (${ VSub_Name p666_specfile) 
                                              (' file')
                                            )
                                          }
                                        )
                                        (C {(exit)} {(1)})
                                      ]
                                      spids: [8703 8722]
                                    )
                                  ]
                                  spids: [8498 8499 8725 -1]
                                )
                              ]
                              spids: [8015 8021 8728]
                            )
                          ]
                          spids: [8012 8731]
                        )
                    )
                  ]
                  spids: [7979]
                )
              spids: [7975 7978]
            )
            (C {(p666_process_options)} {(DQ (${ VSub_At '@'))})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          children: [
                            (C {(Lit_Other '[')} {(DQ (${ VSub_Name p666_envar_scripts_password))} 
                              {(Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                            )
                            (C {(Lit_Other '[')} {(-r)} {(TildeSubPart prefix:'') (/.posixcube.pwd)} 
                              {(Lit_Other ']')}
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      children: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:p666_envar_scripts_password)
                              op: Equal
                              rhs: 
                                {
                                  (DQ 
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (C {(cat)} {(TildeSubPart prefix:'') (/.posixcube.pwd)})
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [8787 8792]
                                    )
                                  )
                                }
                              spids: [8785]
                            )
                          ]
                          spids: [8785]
                        )
                        (C {(cube_check_return)})
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 8782]
                )
              ]
              spids: [-1 8800]
            )
            (C {(shift)} 
              {
                (ArithSubPart
                  anode: 
                    (ArithBinary
                      op_id: Arith_Minus
                      left: (ArithWord w:{(${ VSub_Name OPTIND)})
                      right: (ArithWord w:{(Lit_Digits 1)})
                    )
                  spids: [8806 8813]
                )
              }
            )
            (AndOr
              children: [
                (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (--))} 
                  {(Lit_Other ']')}
                )
                (C {(shift)})
              ]
              op_id: Op_DAmp
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name p666_envar_scripts))} {(Lit_Other '=')} {(DQ )} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_envar_scripts)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [
                                        (Pipeline
                                          children: [
                                            (SimpleCommand
                                              words: [{(ls)} {(-1)} {(${ VSub_Name p666_default_envars)}]
                                              redirects: [
                                                (Redir
                                                  op_id: Redir_Great
                                                  fd: 2
                                                  arg_word: {(/dev/null)}
                                                  spids: [8870]
                                                )
                                              ]
                                            )
                                            (C {(paste)} {(-sd)} {(SQ <' '>)} {(-)})
                                          ]
                                          negated: False
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [8861 8884]
                                )
                              )
                            }
                          spids: [8859]
                        )
                      ]
                      spids: [8859]
                    )
                  ]
                  spids: [-1 8856]
                )
              ]
              spids: [-1 8888]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name p666_envar_scripts))} 
                          {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      children: [
                        (C {(Lit_Other '[')} {(${ VSub_Name p666_debug)} {(-eq)} {(1)} {(Lit_Other ']')})
                        (C {(p666_printf)} 
                          {
                            (DQ ('Using ENVAR files: ') (${ VSub_Name p666_envar_scripts) 
                              (EscapedLiteralPart
                                token: <Lit_EscapedChar '\\n'>
                              )
                            )
                          }
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  spids: [-1 8911]
                )
              ]
              spids: [-1 8939]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:p666_commands)
                  op: Equal
                  rhs: {(DQ (${ VSub_At '@'))}
                  spids: [8944]
                )
              ]
              spids: [8944]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name p666_hosts))} {(Lit_Other '=')} {(DQ )} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ (${ VSub_Name p666_commands))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Case
                              to_match: {(DQ (${ VSub_Number 1))}
                              arms: [
                                (case_arm
                                  pat_list: [{(edit)} {(show)} {(source)}]
                                  action: [
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(Lit_Other '[')} 
                                                  {(DQ (${ VSub_Name p666_envar_scripts))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (ForEach
                                              iter_name: p666_envar_script
                                              iter_words: [{(${ VSub_Name p666_envar_scripts)}]
                                              do_arg_iter: False
                                              body: 
                                                (DoGroup
                                                  children: [
                                                    (Assignment
                                                      keyword: Assign_None
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (LhsName name:p666_envar_scripts_enc)
                                                          op: Equal
                                                          rhs: 
                                                            {
                                                              (CommandSubPart
                                                                command_list: 
                                                                  (CommandList
                                                                    children: [
                                                                      (C {(expr)} 
                                                                        {
                                                                          (${ VSub_Name 
p666_envar_script
                                                                          )
                                                                        } {(Lit_Other ':')} {(SQ <'.*enc$'>)}
                                                                      )
                                                                    ]
                                                                  )
                                                                left_token: <Left_CommandSub '$('>
                                                                spids: [9056 9068]
                                                              )
                                                            }
                                                          spids: [9055]
                                                        )
                                                      ]
                                                      spids: [9055]
                                                    )
                                                    (If
                                                      arms: [
                                                        (if_arm
                                                          cond: [
                                                            (Sentence
                                                              child: 
                                                                (C {(Lit_Other '[')} 
                                                                  {
                                                                    (${ VSub_Name 
p666_envar_scripts_enc
                                                                    )
                                                                  } {(-ne)} {(0)} {(Lit_Other ']')}
                                                                )
                                                              terminator: <Op_Semi ';'>
                                                            )
                                                          ]
                                                          action: [
                                                            (If
                                                              arms: [
                                                                (if_arm
                                                                  cond: [
                                                                    (Sentence
                                                                      child: 
                                                                        (C {(cube_command_exists)} 
                                                                          {(gpg)}
                                                                        )
                                                                      terminator: <Op_Semi ';'>
                                                                    )
                                                                  ]
                                                                  action: [
                                                                    (Assignment
                                                                      keyword: Assign_None
                                                                      pairs: [
                                                                        (assign_pair
                                                                          lhs: 
                                                                            (LhsName
                                                                              name: 
p666_envar_script_new
                                                                            )
                                                                          op: Equal
                                                                          rhs: 
                                                                            {
                                                                              (CommandSubPart
                                                                                command_list: 
                                                                                  (CommandList
                                                                                    children: [
                                                                                      (Pipeline
                                                                                        children: [
                                                                                          (C {(echo)} 
                                                                                            {
                                                                                              (DQ 
                                                                                                (${ 
VSub_Name p666_envar_script
                                                                                                )
                                                                                              )
                                                                                            }
                                                                                          )
                                                                                          (C {(sed)} 
                                                                                            {
                                                                                              (SQ 
                                                                                                <
's/enc$/dec/g'
                                                                                                >
                                                                                              )
                                                                                            }
                                                                                          )
                                                                                        ]
                                                                                        negated: 
False
                                                                                      )
                                                                                    ]
                                                                                  )
                                                                                left_token: 
                                                                                  <Left_CommandSub 
'$('
                                                                                  >
                                                                                spids: [9101 9117]
                                                                              )
                                                                            }
                                                                          spids: [9100]
                                                                        )
                                                                      ]
                                                                      spids: [9100]
                                                                    )
                                                                    (If
                                                                      arms: [
                                                                        (if_arm
                                                                          cond: [
                                                                            (Sentence
                                                                              child: 
                                                                                (C {(Lit_Other '[')} 
                                                                                  {
                                                                                    (DQ 
                                                                                      (${ VSub_Name 
p666_envar_scripts_password
                                                                                      )
                                                                                    )
                                                                                  } {(Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                                                                )
                                                                              terminator: 
                                                                                <Op_Semi ';'>
                                                                            )
                                                                          ]
                                                                          action: [
                                                                            (C {(p666_printf)} 
                                                                              {
                                                                                (DQ 
                                                                                  (
'Enter the password for '
                                                                                  ) (${ VSub_Name p666_envar_script) (':') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                                                                )
                                                                              }
                                                                            )
                                                                            (AndOr
                                                                              children: [
                                                                                (C {(gpg)} {(--output)} 
                                                                                  {
                                                                                    (DQ 
                                                                                      (${ VSub_Name 
p666_envar_script_new
                                                                                      )
                                                                                    )
                                                                                  } {(--yes)} {(--decrypt)} {(DQ (${ VSub_Name p666_envar_script))}
                                                                                )
                                                                                (C 
                                                                                  {
                                                                                    (
cube_check_return
                                                                                    )
                                                                                  }
                                                                                )
                                                                              ]
                                                                              op_id: Op_DPipe
                                                                            )
                                                                          ]
                                                                          spids: [-1 9140]
                                                                        )
                                                                      ]
                                                                      else_action: [
                                                                        (AndOr
                                                                          children: [
                                                                            (C {(Lit_Other '[')} 
                                                                              {
                                                                                (${ VSub_Name 
p666_debug
                                                                                )
                                                                              } {(-eq)} {(1)} {(Lit_Other ']')}
                                                                            )
                                                                            (C {(p666_printf)} 
                                                                              {
                                                                                (DQ ('Decrypting ') 
                                                                                  (${ VSub_Name 
p666_envar_script
                                                                                  ) (' ...') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                                                                )
                                                                              }
                                                                            )
                                                                          ]
                                                                          op_id: Op_DAmp
                                                                        )
                                                                        (AndOr
                                                                          children: [
                                                                            (Assignment
                                                                              keyword: Assign_None
                                                                              pairs: [
                                                                                (assign_pair
                                                                                  lhs: 
                                                                                    (LhsName
                                                                                      name: 
p666_gpg_output
                                                                                    )
                                                                                  op: Equal
                                                                                  rhs: 
                                                                                    {
                                                                                      (DQ 
                                                                                        (CommandSubPart
                                                                                          command_list: 
                                                                                            (CommandList
                                                                                              children: [
                                                                                                (Pipeline
                                                                                                  children: [
                                                                                                    (C 
                                                                                                      {
                                                                                                        (
echo
                                                                                                        )
                                                                                                      } {(DQ (${ VSub_Name p666_envar_scripts_password))}
                                                                                                    )
                                                                                                    (SimpleCommand
                                                                                                      words: [
                                                                                                        {
                                                                                                          (
gpg
                                                                                                          )
                                                                                                        }
                                                                                                        {
                                                                                                          (
--passphrase-fd
                                                                                                          )
                                                                                                        }
                                                                                                        {
                                                                                                          (
0
                                                                                                          )
                                                                                                        }
                                                                                                        {
                                                                                                          (
--batch
                                                                                                          )
                                                                                                        }
                                                                                                        {
                                                                                                          (
--yes
                                                                                                          )
                                                                                                        }
                                                                                                        {
                                                                                                          (
--output
                                                                                                          )
                                                                                                        }
                                                                                                        {
                                                                                                          (DQ 
                                                                                                            (${ 
VSub_Name p666_envar_script_new
                                                                                                            )
                                                                                                          )
                                                                                                        }
                                                                                                        {
                                                                                                          (
--decrypt
                                                                                                          )
                                                                                                        }
                                                                                                        {
                                                                                                          (DQ 
                                                                                                            (${ 
VSub_Name p666_envar_script
                                                                                                            )
                                                                                                          )
                                                                                                        }
                                                                                                      ]
                                                                                                      redirects: [
                                                                                                        (Redir
                                                                                                          op_id: 
Redir_GreatAnd
                                                                                                          fd: 
2
                                                                                                          arg_word: 
                                                                                                            {
                                                                                                              (
1
                                                                                                              )
                                                                                                            }
                                                                                                          spids: [
9248
                                                                                                          ]
                                                                                                        )
                                                                                                      ]
                                                                                                    )
                                                                                                  ]
                                                                                                  negated: 
False
                                                                                                )
                                                                                              ]
                                                                                            )
                                                                                          left_token: 
                                                                                            <
Left_CommandSub '$('
                                                                                            >
                                                                                          spids: [
9211
9250
                                                                                          ]
                                                                                        )
                                                                                      )
                                                                                    }
                                                                                  spids: [9209]
                                                                                )
                                                                              ]
                                                                              spids: [9209]
                                                                            )
                                                                            (C {(cube_check_return)} 
                                                                              {
                                                                                (DQ 
                                                                                  (${ VSub_Name 
p666_gpg_output
                                                                                  )
                                                                                )
                                                                              }
                                                                            )
                                                                          ]
                                                                          op_id: Op_DPipe
                                                                        )
                                                                      ]
                                                                      spids: [9180 9264]
                                                                    )
                                                                    (Case
                                                                      to_match: 
                                                                        {(DQ (${ VSub_Number 1))}
                                                                      arms: [
                                                                        (case_arm
                                                                          pat_list: [{(show)}]
                                                                          action: [
                                                                            (C {(p666_printf)} 
                                                                              {
                                                                                (DQ ('Contents of ') 
                                                                                  (${ VSub_Name 
p666_envar_script
                                                                                  ) (':') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                                                                )
                                                                              }
                                                                            )
                                                                            (C {(cat)} 
                                                                              {
                                                                                (DQ 
                                                                                  (${ VSub_Name 
p666_envar_script_new
                                                                                  )
                                                                                )
                                                                              }
                                                                            )
                                                                          ]
                                                                          spids: [9280 9281 9305 -1]
                                                                        )
                                                                        (case_arm
                                                                          pat_list: [{(source)}]
                                                                          action: [
                                                                            (C {(chmod)} 
                                                                              {(u) (Lit_Other '+') 
                                                                                (x)
                                                                              } {(DQ (${ VSub_Name p666_envar_script_new))}
                                                                            )
                                                                            (C {(.)} 
                                                                              {
                                                                                (DQ 
                                                                                  (CommandSubPart
                                                                                    command_list: 
                                                                                      (CommandList
                                                                                        children: [
                                                                                          (C 
                                                                                            {
                                                                                              (
cube_readlink
                                                                                              )
                                                                                            } {(DQ (${ VSub_Name p666_envar_script_new))}
                                                                                          )
                                                                                        ]
                                                                                      )
                                                                                    left_token: 
                                                                                      <
Left_CommandSub '$('
                                                                                      >
                                                                                    spids: [9328 9336]
                                                                                  )
                                                                                )
                                                                              }
                                                                            )
                                                                            (AndOr
                                                                              children: [
                                                                                (C {(Lit_Other '[')} 
                                                                                  {
                                                                                    (${ VSub_Name 
p666_debug
                                                                                    )
                                                                                  } {(-eq)} {(1)} {(Lit_Other ']')}
                                                                                )
                                                                                (C {(p666_printf)} 
                                                                                  {
                                                                                    (DQ ('Sourced ') 
                                                                                      (${ VSub_Name 
p666_envar_script
                                                                                      ) (...) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                                                                    )
                                                                                  }
                                                                                )
                                                                              ]
                                                                              op_id: Op_DAmp
                                                                            )
                                                                          ]
                                                                          spids: [9308 9309 9366 -1]
                                                                        )
                                                                        (case_arm
                                                                          pat_list: [{(edit)}]
                                                                          action: [
                                                                            (AndOr
                                                                              children: [
                                                                                (C 
                                                                                  {
                                                                                    (DQ 
                                                                                      (BracedVarSub
                                                                                        token: 
                                                                                          <
VSub_Name EDITOR
                                                                                          >
                                                                                        suffix_op: 
                                                                                          (StringUnary
                                                                                            op_id: 
VTest_ColonHyphen
                                                                                            arg_word: 
                                                                                              {(vi)}
                                                                                          )
                                                                                        spids: [
9374
9378
                                                                                        ]
                                                                                      )
                                                                                    )
                                                                                  } {(DQ (${ VSub_Name p666_envar_script_new))}
                                                                                )
                                                                                (C 
                                                                                  {
                                                                                    (
cube_check_return
                                                                                    )
                                                                                  }
                                                                                )
                                                                              ]
                                                                              op_id: Op_DPipe
                                                                            )
                                                                            (If
                                                                              arms: [
                                                                                (if_arm
                                                                                  cond: [
                                                                                    (Sentence
                                                                                      child: 
                                                                                        (C 
                                                                                          {
                                                                                            (
Lit_Other '['
                                                                                            )
                                                                                          } {(DQ (${ VSub_Name p666_envar_scripts_password))} {(Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                                                                        )
                                                                                      terminator: 
                                                                                        <Op_Semi 
';'
                                                                                        >
                                                                                    )
                                                                                  ]
                                                                                  action: [
                                                                                    (C {(p666_printf)} 
                                                                                      {
                                                                                        (DQ 
                                                                                          (
'Enter the password to re-encrypt '
                                                                                          ) (${ VSub_Name p666_envar_script) (':') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                                                                        )
                                                                                      }
                                                                                    )
                                                                                    (AndOr
                                                                                      children: [
                                                                                        (C {(gpg)} 
                                                                                          {(--yes)} {(--s2k-mode)} {(3)} {(--s2k-count)} {(65536)} {(--force-mdc)} {(--cipher-algo)} {(AES256)} 
                                                                                          {
                                                                                            (
--s2k-digest-algo
                                                                                            )
                                                                                          } {(SHA512)} {(-o)} {(DQ (${ VSub_Name p666_envar_script))} {(--symmetric)} 
                                                                                          {
                                                                                            (DQ 
                                                                                              (${ 
VSub_Name p666_envar_script_new
                                                                                              )
                                                                                            )
                                                                                          }
                                                                                        )
                                                                                        (C 
                                                                                          {
                                                                                            (
cube_check_return
                                                                                            )
                                                                                          }
                                                                                        )
                                                                                      ]
                                                                                      op_id: 
Op_DPipe
                                                                                    )
                                                                                  ]
                                                                                  spids: [-1 9412]
                                                                                )
                                                                              ]
                                                                              else_action: [
                                                                                (AndOr
                                                                                  children: [
                                                                                    (C 
                                                                                      {
                                                                                        (Lit_Other 
'['
                                                                                        )
                                                                                      } {(${ VSub_Name p666_debug)} {(-eq)} {(1)} {(Lit_Other ']')}
                                                                                    )
                                                                                    (C {(p666_printf)} 
                                                                                      {
                                                                                        (DQ 
                                                                                          (
'Re-encrypting '
                                                                                          ) (${ VSub_Name p666_envar_script) (' ...') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                                                                        )
                                                                                      }
                                                                                    )
                                                                                  ]
                                                                                  op_id: Op_DAmp
                                                                                )
                                                                                (AndOr
                                                                                  children: [
                                                                                    (Assignment
                                                                                      keyword: 
Assign_None
                                                                                      pairs: [
                                                                                        (assign_pair
                                                                                          lhs: 
                                                                                            (LhsName
                                                                                              name: 
p666_gpg_output
                                                                                            )
                                                                                          op: Equal
                                                                                          rhs: 
                                                                                            {
                                                                                              (DQ 
                                                                                                (CommandSubPart
                                                                                                  command_list: 
                                                                                                    (CommandList
                                                                                                      children: [
                                                                                                        (Pipeline
                                                                                                          children: [
                                                                                                            (C 
                                                                                                              {
                                                                                                                (
echo
                                                                                                                )
                                                                                                              } {(DQ (${ VSub_Name p666_envar_scripts_password))}
                                                                                                            )
                                                                                                            (SimpleCommand
                                                                                                              words: [
                                                                                                                {
                                                                                                                  (
gpg
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (
--batch
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (
--passphrase-fd
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (
0
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (
--yes
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (
--no-use-agent
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (
--s2k-mode
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (
3
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (
--s2k-count
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (
65536
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (
--force-mdc
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (
--cipher-algo
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (
AES256
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (
--s2k-digest-algo
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (
SHA512
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (
-o
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (DQ 
                                                                                                                    (${ 
VSub_Name p666_envar_script
                                                                                                                    )
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (
--symmetric
                                                                                                                  )
                                                                                                                }
                                                                                                                {
                                                                                                                  (DQ 
                                                                                                                    (${ 
VSub_Name p666_envar_script_new
                                                                                                                    )
                                                                                                                  )
                                                                                                                }
                                                                                                              ]
                                                                                                              redirects: [
                                                                                                                (Redir
                                                                                                                  op_id: 
Redir_GreatAnd
                                                                                                                  fd: 
2
                                                                                                                  arg_word: 
                                                                                                                    {
                                                                                                                      (
1
                                                                                                                      )
                                                                                                                    }
                                                                                                                  spids: [
9560
                                                                                                                  ]
                                                                                                                )
                                                                                                              ]
                                                                                                            )
                                                                                                          ]
                                                                                                          negated: 
False
                                                                                                        )
                                                                                                      ]
                                                                                                    )
                                                                                                  left_token: 
                                                                                                    <
Left_CommandSub '$('
                                                                                                    >
                                                                                                  spids: [
9503
9562
                                                                                                  ]
                                                                                                )
                                                                                              )
                                                                                            }
                                                                                          spids: [
9501
                                                                                          ]
                                                                                        )
                                                                                      ]
                                                                                      spids: [9501]
                                                                                    )
                                                                                    (C 
                                                                                      {
                                                                                        (
cube_check_return
                                                                                        )
                                                                                      } {(DQ (${ VSub_Name p666_gpg_output))}
                                                                                    )
                                                                                  ]
                                                                                  op_id: Op_DPipe
                                                                                )
                                                                              ]
                                                                              spids: [9470 9576]
                                                                            )
                                                                          ]
                                                                          spids: [9369 9370 9579 -1]
                                                                        )
                                                                        (case_arm
                                                                          pat_list: [{(Lit_Other '*')}]
                                                                          action: [
                                                                            (C {(p666_show_usage)} 
                                                                              {
                                                                                (DQ 
                                                                                  (
'Not implemented'
                                                                                  )
                                                                                )
                                                                              }
                                                                            )
                                                                          ]
                                                                          spids: [9582 9583 9593 -1]
                                                                        )
                                                                      ]
                                                                      spids: [9269 9277 9596]
                                                                    )
                                                                    (AndOr
                                                                      children: [
                                                                        (C {(rm)} {(-f)} 
                                                                          {
                                                                            (DQ 
                                                                              (${ VSub_Name 
p666_envar_script_new
                                                                              )
                                                                            )
                                                                          }
                                                                        )
                                                                        (C {(cube_check_return)})
                                                                      ]
                                                                      op_id: Op_DPipe
                                                                    )
                                                                  ]
                                                                  spids: [-1 9097]
                                                                )
                                                              ]
                                                              else_action: [
                                                                (C {(p666_show_usage)} 
                                                                  {
                                                                    (DQ 
                                                                      (
'gpg program not found on the PATH'
                                                                      )
                                                                    )
                                                                  }
                                                                )
                                                              ]
                                                              spids: [9616 9626]
                                                            )
                                                          ]
                                                          spids: [-1 9086]
                                                        )
                                                      ]
                                                      else_action: [
                                                        (Case
                                                          to_match: {(DQ (${ VSub_Number 1))}
                                                          arms: [
                                                            (case_arm
                                                              pat_list: [{(show)}]
                                                              action: [
                                                                (Pipeline
                                                                  children: [
                                                                    (C {(cat)} 
                                                                      {
                                                                        (DQ 
                                                                          (${ VSub_Name 
p666_envar_script
                                                                          )
                                                                        )
                                                                      }
                                                                    )
                                                                    (C {(grep)} {(-v)} 
                                                                      {
                                                                        (DQ ('^#!/bin/sh') 
                                                                          (Lit_Other '$')
                                                                        )
                                                                      }
                                                                    )
                                                                  ]
                                                                  negated: False
                                                                )
                                                              ]
                                                              spids: [9643 9644 9667 -1]
                                                            )
                                                            (case_arm
                                                              pat_list: [{(source)}]
                                                              action: [
                                                                (C {(.)} 
                                                                  {
                                                                    (DQ 
                                                                      (CommandSubPart
                                                                        command_list: 
                                                                          (CommandList
                                                                            children: [
                                                                              (C {(cube_readlink)} 
                                                                                {
                                                                                  (DQ 
                                                                                    (${ VSub_Name 
p666_envar_script
                                                                                    )
                                                                                  )
                                                                                }
                                                                              )
                                                                            ]
                                                                          )
                                                                        left_token: 
                                                                          <Left_CommandSub '$('>
                                                                        spids: [9677 9685]
                                                                      )
                                                                    )
                                                                  }
                                                                )
                                                                (AndOr
                                                                  children: [
                                                                    (C {(Lit_Other '[')} 
                                                                      {(${ VSub_Name p666_debug)} {(-eq)} {(1)} {(Lit_Other ']')}
                                                                    )
                                                                    (C {(p666_printf)} 
                                                                      {
                                                                        (DQ ('Sourced ') 
                                                                          (${ VSub_Name 
p666_envar_script
                                                                          ) (...) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                                                        )
                                                                      }
                                                                    )
                                                                  ]
                                                                  op_id: Op_DAmp
                                                                )
                                                              ]
                                                              spids: [9670 9671 9715 -1]
                                                            )
                                                            (case_arm
                                                              pat_list: [{(Lit_Other '*')}]
                                                              action: [
                                                                (C {(p666_show_usage)} 
                                                                  {(DQ ('Not implemented'))}
                                                                )
                                                              ]
                                                              spids: [9718 9719 9729 -1]
                                                            )
                                                          ]
                                                          spids: [9632 9640 9732]
                                                        )
                                                      ]
                                                      spids: [9629 9735]
                                                    )
                                                  ]
                                                  spids: [9052 9738]
                                                )
                                              spids: [9046 9050]
                                            )
                                            (Case
                                              to_match: {(DQ (${ VSub_Number 1))}
                                              arms: [
                                                (case_arm
                                                  pat_list: [{(source)}]
                                                  action: [(C {(true)})]
                                                  spids: [9754 9755 9761 -1]
                                                )
                                                (case_arm
                                                  pat_list: [{(Lit_Other '*')}]
                                                  action: [(C {(exit)} {(0)})]
                                                  spids: [9764 9765 9773 -1]
                                                )
                                              ]
                                              spids: [9743 9751 9776]
                                            )
                                          ]
                                          spids: [-1 9038]
                                        )
                                      ]
                                      else_action: [
                                        (C {(p666_show_usage)} 
                                          {
                                            (DQ ('Sub-COMMAND without -e ENVAR file and ') 
                                              (${ VSub_Name p666_default_envars) (' not found.')
                                            )
                                          }
                                        )
                                      ]
                                      spids: [9779 9793]
                                    )
                                    (Case
                                      to_match: {(DQ (${ VSub_Number 1))}
                                      arms: [
                                        (case_arm
                                          pat_list: [{(source)}]
                                          action: [(C {(true)})]
                                          spids: [9807 9808 9814 -1]
                                        )
                                        (case_arm
                                          pat_list: [{(Lit_Other '*')}]
                                          action: [(C {(exit)} {(0)})]
                                          spids: [9817 9818 9826 -1]
                                        )
                                      ]
                                      spids: [9796 9804 9829]
                                    )
                                  ]
                                  spids: [9011 9016 9832 -1]
                                )
                                (case_arm
                                  pat_list: [{(Lit_Other '*')}]
                                  action: [
                                    (C {(p666_show_usage)} 
                                      {(DQ ('Unknown sub-COMMAND ') (${ VSub_Number 1))}
                                    )
                                  ]
                                  spids: [9835 9836 9849 -1]
                                )
                              ]
                              spids: [9000 9008 9852]
                            )
                          ]
                          spids: [-1 8997]
                        )
                      ]
                      else_action: [
                        (C {(p666_show_usage)} 
                          {(DQ ('No hosts specified with -h and no sub-COMMAND specified.'))}
                        )
                      ]
                      spids: [9855 9865]
                    )
                  ]
                  spids: [-1 8971]
                )
              ]
              spids: [-1 9868]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name POSIXCUBE_SOURCED))} {(Lit_Other '=')} {(DQ )} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (AndOr
                                  children: [
                                    (C {(Lit_Other '[')} {(DQ (${ VSub_Name p666_commands))} 
                                      {(Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                    )
                                    (C {(Lit_Other '[')} {(DQ (${ VSub_Name p666_cubes))} 
                                      {(Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                    )
                                  ]
                                  op_id: Op_DAmp
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(p666_show_usage)} {(DQ ('No COMMANDs or CUBEs specified.'))})]
                          spids: [-1 9929]
                        )
                      ]
                      spids: [-1 9939]
                    )
                    (AndOr
                      children: [
                        (C {(Lit_Other '[')} {(${ VSub_Name p666_debug)} {(-eq)} {(1)} {(Lit_Other ']')})
                        (C {(p666_show_version)})
                      ]
                      op_id: Op_DAmp
                    )
                    (FuncDef
                      name: p666_handle_remote_response
                      body: 
                        (BraceGroup
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_handle_remote_response_context)
                                  op: Equal
                                  rhs: {(DQ (${ VSub_Number 1))}
                                  spids: [9969]
                                )
                              ]
                              spids: [9969]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} 
                                          {(DQ (${ VSub_Name p666_handle_remote_response_context))} {(Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_handle_remote_response_context)
                                          op: Equal
                                          rhs: {(DQ ('Last command'))}
                                          spids: [9998]
                                        )
                                      ]
                                      spids: [9998]
                                    )
                                  ]
                                  spids: [-1 9995]
                                )
                              ]
                              spids: [-1 10004]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_host_output_color)
                                  op: Equal
                                  rhs: {(${ VSub_Name POSIXCUBE_COLOR_GREEN)}
                                  spids: [10007]
                                )
                              ]
                              spids: [10007]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_host_output)
                                  op: Equal
                                  rhs: {(DQ )}
                                  spids: [10013]
                                )
                              ]
                              spids: [10013]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(${ VSub_Name p666_host_output_result)} 
                                          {(-ne)} {(0)} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_host_output_color)
                                          op: Equal
                                          rhs: {(${ VSub_Name POSIXCUBE_COLOR_RED)}
                                          spids: [10036]
                                        )
                                      ]
                                      spids: [10036]
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_host_output)
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ (${ VSub_Name p666_handle_remote_response_context) 
                                                (' failed with return code ') (${ VSub_Name p666_host_output_result)
                                              )
                                            }
                                          spids: [10042]
                                        )
                                      ]
                                      spids: [10042]
                                    )
                                  ]
                                  spids: [-1 10033]
                                )
                              ]
                              else_action: [
                                (AndOr
                                  children: [
                                    (C {(Lit_Other '[')} {(${ VSub_Name p666_debug)} {(-eq)} {(1)} 
                                      {(Lit_Other ']')}
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_host_output)
                                          op: Equal
                                          rhs: {(DQ ('Commands succeeded.'))}
                                          spids: [10071]
                                        )
                                      ]
                                      spids: [10071]
                                    )
                                  ]
                                  op_id: Op_DAmp
                                )
                              ]
                              spids: [10054 10077]
                            )
                            (AndOr
                              children: [
                                (C {(Lit_Other '[')} {(DQ (${ VSub_Name p666_host_output))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                )
                                (C {(p666_printf)} 
                                  {
                                    (DQ ('[') (${ VSub_Name p666_host_output_color) 
                                      (${ VSub_Name p666_host) (${ VSub_Name POSIXCUBE_COLOR_RESET) ('] %s') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                    )
                                  } {(DQ (${ VSub_Name p666_host_output))}
                                )
                              ]
                              op_id: Op_DAmp
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(${ VSub_Name p666_host_output_result)} 
                                          {(-ne)} {(0)} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [(C {(p666_exit)} {(${ VSub_Name p666_host_output_result)})]
                                  spids: [-1 10137]
                                )
                              ]
                              spids: [-1 10147]
                            )
                          ]
                          spids: [9966]
                        )
                      spids: [9962 9965]
                    )
                    (FuncDef
                      name: p666_remote_ssh
                      body: 
                        (BraceGroup
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_remote_ssh_commands)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$1'))}
                                  spids: [10161]
                                )
                              ]
                              spids: [10161]
                            )
                            (AndOr
                              children: [
                                (C {(Lit_Other '[')} {(${ VSub_Name p666_debug)} {(-eq)} {(1)} 
                                  {(Lit_Other ']')}
                                )
                                (C {(p666_printf)} 
                                  {
                                    (DQ ('[') (${ VSub_Name POSIXCUBE_COLOR_GREEN) 
                                      (${ VSub_Name p666_host) (${ VSub_Name POSIXCUBE_COLOR_RESET) ('] Executing ssh ') (${ VSub_Name p666_user) ('@') 
                                      (${ VSub_Name p666_host) (' ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (${ VSub_Name p666_remote_ssh_commands) 
                                      (EscapedLiteralPart
                                        token: <Lit_EscapedChar '\\"'>
                                      ) (' ...') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                    )
                                  }
                                )
                              ]
                              op_id: Op_DAmp
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (AndOr
                                          children: [
                                            (C {(Lit_Other '[')} {(${ VSub_Name p666_parallel)} {(-gt)} 
                                              {(0)} {(Lit_Other ']')}
                                            )
                                            (C {(Lit_Other '[')} {(${ VSub_Name p666_async)} {(-eq)} 
                                              {(1)} {(Lit_Other ']')}
                                            )
                                          ]
                                          op_id: Op_DAmp
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Sentence
                                      child: 
                                        (SimpleCommand
                                          words: [
                                            {(ssh)}
                                            {(-o)}
                                            {(Lit_VarLike 'ConnectTimeout=') (10)}
                                            {(${ VSub_Name p666_user) (Lit_Other '@') 
                                              (${ VSub_Name p666_host)
                                            }
                                            {(${ VSub_Name p666_remote_ssh_commands)}
                                          ]
                                          redirects: [
                                            (Redir
                                              op_id: Redir_GreatAnd
                                              fd: 2
                                              arg_word: {(1)}
                                              spids: [10266]
                                            )
                                          ]
                                        )
                                      terminator: <Op_Amp '&'>
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_wait_pids)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (C {(cube_append_str)} 
                                                        {(DQ (${ VSub_Name p666_wait_pids))} {(DQ ($ VSub_Bang '$!'))}
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [10273 10285]
                                              )
                                            }
                                          spids: [10272]
                                        )
                                      ]
                                      spids: [10272]
                                    )
                                  ]
                                  spids: [-1 10244]
                                )
                              ]
                              else_action: [
                                (SimpleCommand
                                  words: [
                                    {(ssh)}
                                    {(-o)}
                                    {(Lit_VarLike 'ConnectTimeout=') (10)}
                                    {(${ VSub_Name p666_user) (Lit_Other '@') 
                                      (${ VSub_Name p666_host)
                                    }
                                    {(${ VSub_Name p666_remote_ssh_commands)}
                                  ]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_GreatAnd
                                      fd: 2
                                      arg_word: {(1)}
                                      spids: [10310]
                                    )
                                  ]
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:p666_host_output_result)
                                      op: Equal
                                      rhs: {($ VSub_QMark '$?')}
                                      spids: [10314]
                                    )
                                  ]
                                  spids: [10314]
                                )
                                (AndOr
                                  children: [
                                    (C {(Lit_Other '[')} {(${ VSub_Name p666_debug)} {(-eq)} {(1)} 
                                      {(Lit_Other ']')}
                                    )
                                    (C {(p666_printf)} 
                                      {
                                        (DQ ('Finished executing on ') (${ VSub_Name p666_host) 
                                          (EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\n'>
                                          )
                                        )
                                      }
                                    )
                                  ]
                                  op_id: Op_DAmp
                                )
                                (C {(p666_handle_remote_response)} 
                                  {(DQ ('Remote commands through SSH'))}
                                )
                                (ControlFlow
                                  token: <ControlFlow_Return return>
                                  arg_word: {(${ VSub_Name p666_host_output_result)}
                                )
                              ]
                              spids: [10288 10361]
                            )
                          ]
                          spids: [10158]
                        )
                      spids: [10154 10157]
                    )
                    (FuncDef
                      name: p666_remote_transfer
                      body: 
                        (BraceGroup
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_remote_transfer_source)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$1'))}
                                  spids: [10375]
                                )
                              ]
                              spids: [10375]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_remote_transfer_dest)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$2'))}
                                  spids: [10381]
                                )
                              ]
                              spids: [10381]
                            )
                            (AndOr
                              children: [
                                (C {(Lit_Other '[')} {(${ VSub_Name p666_debug)} {(-eq)} {(1)} 
                                  {(Lit_Other ']')}
                                )
                                (C {(p666_printf)} 
                                  {
                                    (DQ ('[') (${ VSub_Name POSIXCUBE_COLOR_GREEN) 
                                      (${ VSub_Name p666_host) (${ VSub_Name POSIXCUBE_COLOR_RESET) ('] Executing rsync ') (${ VSub_Name p666_remote_transfer_source) 
                                      (' to ') (${ VSub_Name p666_user) ('@') (${ VSub_Name p666_host) (':') (${ VSub_Name p666_remote_transfer_dest) 
                                      (' ...') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                    )
                                  }
                                )
                              ]
                              op_id: Op_DAmp
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (AndOr
                                          children: [
                                            (C {(Lit_Other '[')} {(${ VSub_Name p666_parallel)} {(-gt)} 
                                              {(0)} {(Lit_Other ']')}
                                            )
                                            (C {(Lit_Other '[')} {(${ VSub_Name p666_async)} {(-eq)} 
                                              {(1)} {(Lit_Other ']')}
                                            )
                                          ]
                                          op_id: Op_DAmp
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (AndOr
                                      children: [
                                        (C {(Lit_Other '[')} {(${ VSub_Name p666_debug)} {(-eq)} {(1)} 
                                          {(Lit_Other ']')}
                                        )
                                        (C {(p666_printf)} 
                                          {
                                            (DQ ('Rsyncing in background: ') 
                                              (${ VSub_Name p666_remote_transfer_source) (' ') (${ VSub_Name p666_user) ('@') (${ VSub_Name p666_host) (':') 
                                              (${ VSub_Name p666_remote_transfer_dest) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                            )
                                          }
                                        )
                                      ]
                                      op_id: Op_DAmp
                                    )
                                    (Sentence
                                      child: 
                                        (C {(rsync)} {(-rlpt)} 
                                          {(${ VSub_Name p666_remote_transfer_source)} 
                                          {
                                            (DQ (${ VSub_Name p666_user) ('@') (${ VSub_Name p666_host) 
                                              (':') (${ VSub_Name p666_remote_transfer_dest)
                                            )
                                          }
                                        )
                                      terminator: <Op_Amp '&'>
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_wait_pids)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (C {(cube_append_str)} 
                                                        {(DQ (${ VSub_Name p666_wait_pids))} {(DQ ($ VSub_Bang '$!'))}
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [10536 10548]
                                              )
                                            }
                                          spids: [10535]
                                        )
                                      ]
                                      spids: [10535]
                                    )
                                  ]
                                  spids: [-1 10470]
                                )
                              ]
                              else_action: [
                                (AndOr
                                  children: [
                                    (C {(Lit_Other '[')} {(${ VSub_Name p666_debug)} {(-eq)} {(1)} 
                                      {(Lit_Other ']')}
                                    )
                                    (C {(p666_printf)} 
                                      {
                                        (DQ ('Rsyncing in foreground: ') 
                                          (${ VSub_Name p666_remote_transfer_source) (' ') (${ VSub_Name p666_user) ('@') (${ VSub_Name p666_host) (':') 
                                          (${ VSub_Name p666_remote_transfer_dest) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                        )
                                      }
                                    )
                                  ]
                                  op_id: Op_DAmp
                                )
                                (C {(rsync)} {(-rlpt)} {(${ VSub_Name p666_remote_transfer_source)} 
                                  {
                                    (DQ (${ VSub_Name p666_user) ('@') (${ VSub_Name p666_host) (':') 
                                      (${ VSub_Name p666_remote_transfer_dest)
                                    )
                                  }
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:p666_host_output_result)
                                      op: Equal
                                      rhs: {($ VSub_QMark '$?')}
                                      spids: [10614]
                                    )
                                  ]
                                  spids: [10614]
                                )
                                (C {(p666_handle_remote_response)} {(DQ (rsync))})
                              ]
                              spids: [10551 10625]
                            )
                          ]
                          spids: [10372]
                        )
                      spids: [10368 10371]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_cubedir)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name p666_cubedir>
                                suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /)})
                                spids: [10633 10637]
                              )
                            }
                          spids: [10632]
                        )
                      ]
                      spids: [10632]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_script_name)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [(C {(cube_current_script_name)})]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [10644 10646]
                                )
                              )
                            }
                          spids: [10642]
                        )
                      ]
                      spids: [10642]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_script_path)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [(C {(cube_current_script_abs_path)})]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [10652 10654]
                                )
                              )
                            }
                          spids: [10650]
                        )
                      ]
                      spids: [10650]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_remote_script)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name p666_cubedir) (/) (${ VSub_Name p666_script_name))}
                          spids: [10660]
                        )
                      ]
                      spids: [10660]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_script_contents)
                          op: Equal
                          rhs: 
                            {
                              (DQ ('cube_initial_directory=') 
                                (EscapedLiteralPart
                                  token: <Lit_EscapedChar '\\$'>
                                ) ('{PWD}')
                              )
                            }
                          spids: [10677]
                        )
                      ]
                      spids: [10677]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_script_envar_contents)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [10685]
                        )
                      ]
                      spids: [10685]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_envar_scripts_final)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [10692]
                        )
                      ]
                      spids: [10692]
                    )
                    (ForEach
                      iter_name: p666_envar_script
                      iter_words: [{(${ VSub_Name p666_envar_scripts)}]
                      do_arg_iter: False
                      body: 
                        (DoGroup
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_envar_script_remove)
                                  op: Equal
                                  rhs: {(0)}
                                  spids: [10714]
                                )
                              ]
                              spids: [10714]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_envar_script_enc_matches)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (C {(expr)} {(${ VSub_Name p666_envar_script)} 
                                                {(Lit_Other ':')} {(SQ <'.*\\.enc$'>)}
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub '$('>
                                        spids: [10721 10733]
                                      )
                                    }
                                  spids: [10720]
                                )
                              ]
                              spids: [10720]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} 
                                          {(${ VSub_Name p666_envar_script_enc_matches)} {(-ne)} {(0)} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: (C {(cube_command_exists)} {(gpg)})
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (AndOr
                                              children: [
                                                (C {(Lit_Other '[')} {(${ VSub_Name p666_debug)} {(-eq)} 
                                                  {(1)} {(Lit_Other ']')}
                                                )
                                                (C {(p666_printf)} 
                                                  {
                                                    (DQ ('Decrypting ') 
                                                      (${ VSub_Name p666_envar_script)
                                                    )
                                                  }
                                                )
                                              ]
                                              op_id: Op_DAmp
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_envar_script_new)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (CommandSubPart
                                                        command_list: 
                                                          (CommandList
                                                            children: [
                                                              (Pipeline
                                                                children: [
                                                                  (C {(echo)} 
                                                                    {
                                                                      (DQ 
                                                                        (${ VSub_Name 
p666_envar_script
                                                                        )
                                                                      )
                                                                    }
                                                                  )
                                                                  (C {(sed)} {(SQ <'s/enc$/dec/g'>)})
                                                                ]
                                                                negated: False
                                                              )
                                                            ]
                                                          )
                                                        left_token: <Left_CommandSub '$('>
                                                        spids: [10794 10810]
                                                      )
                                                    }
                                                  spids: [10793]
                                                )
                                              ]
                                              spids: [10793]
                                            )
                                            (If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (Sentence
                                                      child: 
                                                        (C {(Lit_Other '[')} 
                                                          {
                                                            (DQ 
                                                              (${ VSub_Name 
p666_envar_scripts_password
                                                              )
                                                            )
                                                          } {(Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                                        )
                                                      terminator: <Op_Semi ';'>
                                                    )
                                                  ]
                                                  action: [
                                                    (C {(p666_printf)} 
                                                      {
                                                        (DQ ('Enter the password for ') 
                                                          (${ VSub_Name p666_envar_script) (':') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                                        )
                                                      }
                                                    )
                                                    (AndOr
                                                      children: [
                                                        (C {(gpg)} {(--output)} 
                                                          {(DQ (${ VSub_Name p666_envar_script_new))} {(--yes)} {(--decrypt)} {(DQ (${ VSub_Name p666_envar_script))}
                                                        )
                                                        (C {(cube_check_return)})
                                                      ]
                                                      op_id: Op_DPipe
                                                    )
                                                  ]
                                                  spids: [-1 10833]
                                                )
                                              ]
                                              else_action: [
                                                (AndOr
                                                  children: [
                                                    (C {(Lit_Other '[')} {(${ VSub_Name p666_debug)} 
                                                      {(-eq)} {(1)} {(Lit_Other ']')}
                                                    )
                                                    (C {(p666_printf)} 
                                                      {
                                                        (DQ ('Decrypting ') 
                                                          (${ VSub_Name p666_envar_script) (' ...') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                                        )
                                                      }
                                                    )
                                                  ]
                                                  op_id: Op_DAmp
                                                )
                                                (AndOr
                                                  children: [
                                                    (Assignment
                                                      keyword: Assign_None
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (LhsName name:p666_gpg_output)
                                                          op: Equal
                                                          rhs: 
                                                            {
                                                              (DQ 
                                                                (CommandSubPart
                                                                  command_list: 
                                                                    (CommandList
                                                                      children: [
                                                                        (Pipeline
                                                                          children: [
                                                                            (C {(echo)} 
                                                                              {
                                                                                (DQ 
                                                                                  (${ VSub_Name 
p666_envar_scripts_password
                                                                                  )
                                                                                )
                                                                              }
                                                                            )
                                                                            (SimpleCommand
                                                                              words: [
                                                                                {(gpg)}
                                                                                {(--passphrase-fd)}
                                                                                {(0)}
                                                                                {(--batch)}
                                                                                {(--yes)}
                                                                                {(--output)}
                                                                                {
                                                                                  (DQ 
                                                                                    (${ VSub_Name 
p666_envar_script_new
                                                                                    )
                                                                                  )
                                                                                }
                                                                                {(--decrypt)}
                                                                                {
                                                                                  (DQ 
                                                                                    (${ VSub_Name 
p666_envar_script
                                                                                    )
                                                                                  )
                                                                                }
                                                                              ]
                                                                              redirects: [
                                                                                (Redir
                                                                                  op_id: 
Redir_GreatAnd
                                                                                  fd: 2
                                                                                  arg_word: {(1)}
                                                                                  spids: [10941]
                                                                                )
                                                                              ]
                                                                            )
                                                                          ]
                                                                          negated: False
                                                                        )
                                                                      ]
                                                                    )
                                                                  left_token: <Left_CommandSub '$('>
                                                                  spids: [10904 10943]
                                                                )
                                                              )
                                                            }
                                                          spids: [10902]
                                                        )
                                                      ]
                                                      spids: [10902]
                                                    )
                                                    (C {(cube_check_return)} 
                                                      {(DQ (${ VSub_Name p666_gpg_output))}
                                                    )
                                                  ]
                                                  op_id: Op_DPipe
                                                )
                                              ]
                                              spids: [10873 10957]
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_envar_script)
                                                  op: Equal
                                                  rhs: {(DQ (${ VSub_Name p666_envar_script_new))}
                                                  spids: [10962]
                                                )
                                              ]
                                              spids: [10962]
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_envar_script_remove)
                                                  op: Equal
                                                  rhs: {(1)}
                                                  spids: [10970]
                                                )
                                              ]
                                              spids: [10970]
                                            )
                                          ]
                                          spids: [-1 10764]
                                        )
                                      ]
                                      else_action: [
                                        (C {(p666_printf_error)} 
                                          {(DQ ('gpg program not found on the PATH'))}
                                        )
                                        (C {(p666_exit)} {(1)})
                                      ]
                                      spids: [10974 10989]
                                    )
                                  ]
                                  spids: [-1 10753]
                                )
                              ]
                              spids: [-1 10992]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_envar_scripts_final)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (C {(cube_append_str)} 
                                                {(DQ (${ VSub_Name p666_envar_scripts_final))} {(DQ (${ VSub_Name p666_envar_script))}
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub '$('>
                                        spids: [10998 11012]
                                      )
                                    }
                                  spids: [10997]
                                )
                              ]
                              spids: [10997]
                            )
                            (C {(chmod)} {(u) (Lit_Other '+') (x)} 
                              {(DQ (${ VSub_Name p666_envar_script))}
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_script_contents)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ (${ VSub_Name p666_script_contents) ('\n') ('cd ') 
                                        (${ VSub_Name p666_cubedir) ('/ || cube_check_return\n') ('. ') (${ VSub_Name p666_cubedir) (/) 
                                        (CommandSubPart
                                          command_list: 
                                            (CommandList
                                              children: [
                                                (C {(basename)} {(${ VSub_Name p666_envar_script)})
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [11048 11054]
                                        ) (' || cube_check_return')
                                      )
                                    }
                                  spids: [11032]
                                )
                              ]
                              spids: [11032]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(${ VSub_Name p666_envar_script_remove)} 
                                          {(-eq)} {(1)} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_script_contents)
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ (${ VSub_Name p666_script_contents) ('\n') ('rm -f ') 
                                                (${ VSub_Name p666_cubedir) (/) 
                                                (CommandSubPart
                                                  command_list: 
                                                    (CommandList
                                                      children: [
                                                        (C {(basename)} 
                                                          {(${ VSub_Name p666_envar_script)}
                                                        )
                                                      ]
                                                    )
                                                  left_token: <Left_CommandSub '$('>
                                                  spids: [11089 11095]
                                                ) (' || cube_check_return')
                                              )
                                            }
                                          spids: [11078]
                                        )
                                      ]
                                      spids: [11078]
                                    )
                                  ]
                                  spids: [-1 11075]
                                )
                              ]
                              spids: [-1 11100]
                            )
                          ]
                          spids: [10709 11103]
                        )
                      spids: [10703 10707]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_envar_scripts)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name p666_envar_scripts_final))}
                          spids: [11108]
                        )
                      ]
                      spids: [11108]
                    )
                    (ForEach
                      iter_name: p666_cube
                      iter_words: [{(${ VSub_Name p666_cubes)}]
                      do_arg_iter: False
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-d)} {(DQ (${ VSub_Name p666_cube))} 
                                          {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_cube_name)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (C {(basename)} {(DQ (${ VSub_Name p666_cube))})
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [11151 11159]
                                              )
                                            }
                                          spids: [11150]
                                        )
                                      ]
                                      spids: [11150]
                                    )
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(Lit_Other '[')} {(-r)} 
                                                  {
                                                    (DQ (${ VSub_Name p666_cube) (/) 
                                                      (${ VSub_Name p666_cube_name) (.sh)
                                                    )
                                                  } {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (C {(chmod)} {(u) (Lit_Other '+') (x)} 
                                              {(${ VSub_Name p666_cube) (/) (Lit_Other '*') (.sh)}
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_cube)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (BracedVarSub
                                                        token: <VSub_Name p666_cube>
                                                        suffix_op: 
                                                          (StringUnary
                                                            op_id: VOp1_Percent
                                                            arg_word: {(Lit_Slash /)}
                                                          )
                                                        spids: [11200 11204]
                                                      )
                                                    }
                                                  spids: [11199]
                                                )
                                              ]
                                              spids: [11199]
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_script_contents)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (DQ (${ VSub_Name p666_script_contents) ('\n') 
                                                        ('cd ') (${ VSub_Name p666_cubedir) (/) (${ VSub_Name p666_cube) ('/ || cube_check_return\n') ('cube_echo ') 
                                                        (EscapedLiteralPart
                                                          token: <Lit_EscapedChar '\\"'>
                                                        ) ('Started cube: ') (${ VSub_Name p666_cube_name) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                                                        ('\n') ('POSIXCUBE_CUBE_NAME=') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                                                        (${ VSub_Name p666_cube_name) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' POSIXCUBE_CUBE_NAME_WITH_PREFIX=') 
                                                        (EscapedLiteralPart
                                                          token: <Lit_EscapedChar '\\"'>
                                                        ) (' ') (${ VSub_Name p666_cube_name) (.sh) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' . ') 
                                                        (${ VSub_Name p666_cubedir) (/) (${ VSub_Name p666_cube) (/) (${ VSub_Name p666_cube_name) ('.sh || cube_check_return ') 
                                                        (EscapedLiteralPart
                                                          token: <Lit_EscapedChar '\\"'>
                                                        ) ('Last command in cube') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('\n') ('cube_echo ') 
                                                        (EscapedLiteralPart
                                                          token: <Lit_EscapedChar '\\"'>
                                                        ) ('Finished cube: ') (${ VSub_Name p666_cube_name) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                                                        ('\n')
                                                      )
                                                    }
                                                  spids: [11207]
                                                )
                                              ]
                                              spids: [11207]
                                            )
                                            (If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (Sentence
                                                      child: 
                                                        (C {(Lit_Other '[')} {(-r)} 
                                                          {
                                                            (DQ (${ VSub_Name p666_cube) (/envars.sh))
                                                          } {(Lit_Other ']')}
                                                        )
                                                      terminator: <Op_Semi ';'>
                                                    )
                                                  ]
                                                  action: [
                                                    (Assignment
                                                      keyword: Assign_None
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: 
                                                            (LhsName
                                                              name: p666_script_envar_contents
                                                            )
                                                          op: Equal
                                                          rhs: 
                                                            {
                                                              (DQ 
                                                                (${ VSub_Name 
p666_script_envar_contents
                                                                ) ('\n') ('. ') (${ VSub_Name p666_cubedir) (/) (${ VSub_Name p666_cube) 
                                                                (
'/envars.sh || cube_check_return '
                                                                ) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('Failed loading cube envars') 
                                                                (EscapedLiteralPart
                                                                  token: <Lit_EscapedChar '\\"'>
                                                                ) ('\n')
                                                              )
                                                            }
                                                          spids: [11291]
                                                        )
                                                      ]
                                                      spids: [11291]
                                                    )
                                                  ]
                                                  spids: [-1 11288]
                                                )
                                              ]
                                              spids: [-1 11313]
                                            )
                                          ]
                                          spids: [-1 11182]
                                        )
                                      ]
                                      else_action: [
                                        (C {(p666_printf_error)} 
                                          {
                                            (DQ ('Could not find ') (${ VSub_Name p666_cube_name) 
                                              ('.sh in cube ') (${ VSub_Name p666_cube) (' directory.')
                                            )
                                          }
                                        )
                                        (C {(p666_exit)} {(1)})
                                      ]
                                      spids: [11316 11339]
                                    )
                                  ]
                                  spids: [-1 11147]
                                )
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-r)} {(DQ (${ VSub_Name p666_cube))} 
                                          {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_cube_name)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (C {(basename)} {(DQ (${ VSub_Name p666_cube))})
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [11361 11369]
                                              )
                                            }
                                          spids: [11360]
                                        )
                                      ]
                                      spids: [11360]
                                    )
                                    (C {(chmod)} {(u) (Lit_Other '+') (x)} 
                                      {(DQ (${ VSub_Name p666_cube))}
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_script_contents)
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ (${ VSub_Name p666_script_contents) ('\n') ('cd ') 
                                                (${ VSub_Name p666_cubedir) ('/ || cube_check_return\n') ('cube_echo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                                                ('Started cube: ') (${ VSub_Name p666_cube_name) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('\n') 
                                                ('POSIXCUBE_CUBE_NAME=') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (${ VSub_Name p666_cube_name) 
                                                (EscapedLiteralPart
                                                  token: <Lit_EscapedChar '\\"'>
                                                ) (' POSIXCUBE_CUBE_NAME_WITH_PREFIX=') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' ') 
                                                (${ VSub_Name p666_cube_name) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' . ') (${ VSub_Name p666_cubedir) (/) 
                                                (${ VSub_Name p666_cube_name) (' || cube_check_return ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('Last command in cube') 
                                                (EscapedLiteralPart
                                                  token: <Lit_EscapedChar '\\"'>
                                                ) ('\n') ('cube_echo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('Finished cube: ') 
                                                (${ VSub_Name p666_cube_name) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('\n')
                                              )
                                            }
                                          spids: [11385]
                                        )
                                      ]
                                      spids: [11385]
                                    )
                                  ]
                                  spids: [11342 11357]
                                )
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-r)} {(DQ (${ VSub_Name p666_cube) (.sh))} 
                                          {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_cube_name)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (C {(basename)} 
                                                        {(DQ (${ VSub_Name p666_cube) (.sh))}
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [11461 11470]
                                              )
                                            }
                                          spids: [11460]
                                        )
                                      ]
                                      spids: [11460]
                                    )
                                    (C {(chmod)} {(u) (Lit_Other '+') (x)} 
                                      {(DQ (${ VSub_Name p666_cube) (.sh))}
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_script_contents)
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ (${ VSub_Name p666_script_contents) ('\n') ('cd ') 
                                                (${ VSub_Name p666_cubedir) ('/ || cube_check_return\n') ('cube_echo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                                                ('Started cube: ') (${ VSub_Name p666_cube_name) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('\n') 
                                                ('POSIXCUBE_CUBE_NAME=') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (${ VSub_Name p666_cube_name) 
                                                (EscapedLiteralPart
                                                  token: <Lit_EscapedChar '\\"'>
                                                ) (' POSIXCUBE_CUBE_NAME_WITH_PREFIX=') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' ') 
                                                (${ VSub_Name p666_cube_name) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' . ') (${ VSub_Name p666_cubedir) (/) 
                                                (${ VSub_Name p666_cube_name) (' || cube_check_return ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('Last command in cube') 
                                                (EscapedLiteralPart
                                                  token: <Lit_EscapedChar '\\"'>
                                                ) ('\n') ('cube_echo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('Finished cube: ') 
                                                (${ VSub_Name p666_cube_name) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('\n')
                                              )
                                            }
                                          spids: [11487]
                                        )
                                      ]
                                      spids: [11487]
                                    )
                                  ]
                                  spids: [11441 11457]
                                )
                              ]
                              else_action: [
                                (C {(p666_printf_error)} 
                                  {
                                    (DQ ('Cube ') (${ VSub_Name p666_cube) 
                                      (
" could not be found as a directory or script, or you don't have read permissions."
                                      )
                                    )
                                  }
                                )
                                (C {(p666_exit)} {(1)})
                              ]
                              spids: [11543 11562]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_script_contents)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ (${ VSub_Name p666_script_contents) 
                                        (${ VSub_Name POSIXCUBE_NEWLINE) ('cd ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('{cube_initial_directory}')
                                      )
                                    }
                                  spids: [11565]
                                )
                              ]
                              spids: [11565]
                            )
                          ]
                          spids: [11129 11579]
                        )
                      spids: [11123 11127]
                    )
                    (ForEach
                      iter_name: p666_cube
                      iter_words: [{(${ VSub_Name p666_include_cubes)}]
                      do_arg_iter: False
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-d)} {(DQ (${ VSub_Name p666_cube))} 
                                          {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_cube_name)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (C {(basename)} {(DQ (${ VSub_Name p666_cube))})
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [11617 11625]
                                              )
                                            }
                                          spids: [11616]
                                        )
                                      ]
                                      spids: [11616]
                                    )
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(Lit_Other '[')} {(-r)} 
                                                  {
                                                    (DQ (${ VSub_Name p666_cube) (/) 
                                                      (${ VSub_Name p666_cube_name) (.sh)
                                                    )
                                                  } {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (C {(chmod)} {(u) (Lit_Other '+') (x)} 
                                              {(${ VSub_Name p666_cube) (/) (Lit_Other '*') (.sh)}
                                            )
                                          ]
                                          spids: [-1 11648]
                                        )
                                      ]
                                      spids: [-1 11665]
                                    )
                                  ]
                                  spids: [-1 11613]
                                )
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-r)} {(DQ (${ VSub_Name p666_cube))} 
                                          {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(chmod)} {(u) (Lit_Other '+') (x)} 
                                      {(DQ (${ VSub_Name p666_cube))}
                                    )
                                  ]
                                  spids: [11668 11683]
                                )
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-r)} {(DQ (${ VSub_Name p666_cube) (.sh))} 
                                          {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(chmod)} {(u) (Lit_Other '+') (x)} 
                                      {(DQ (${ VSub_Name p666_cube) (.sh))}
                                    )
                                  ]
                                  spids: [11699 11715]
                                )
                              ]
                              else_action: [
                                (C {(p666_printf_error)} 
                                  {
                                    (DQ ('Cube ') (${ VSub_Name p666_cube) 
                                      (
" could not be found as a directory or script, or you don't have read permissions."
                                      )
                                    )
                                  }
                                )
                                (C {(p666_exit)} {(1)})
                              ]
                              spids: [11732 11751]
                            )
                          ]
                          spids: [11595 11754]
                        )
                      spids: [11589 11593]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ (${ VSub_Name p666_commands))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_script_contents)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ (${ VSub_Name p666_script_contents) ('\n') ('  ') 
                                        (${ VSub_Name p666_commands)
                                      )
                                    }
                                  spids: [11781]
                                )
                              ]
                              spids: [11781]
                            )
                          ]
                          spids: [-1 11778]
                        )
                      ]
                      spids: [-1 11794]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_script)
                          op: Equal
                          rhs: {(DQ (./cube_exec.sh))}
                          spids: [11799]
                        )
                      ]
                      spids: [11799]
                    )
                    (SimpleCommand
                      words: [{(cat)}]
                      redirects: [
                        (HereDoc
                          op_id: Redir_DLess
                          fd: -1
                          body: 
                            {
                              (DQ ('#!/bin/sh\n') ('POSIXCUBE_APIS_ONLY=1\n') ('. ') 
                                (${ VSub_Name p666_remote_script) ('\n') ('if [ ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('? -ne 0 ] ; then\n') ('  echo ') 
                                (Right_DoubleQuote '"') ('Could not source ') (${ VSub_Name p666_remote_script) (' script') (Right_DoubleQuote '"') (' 1>&2\n') 
                                ('  exit 1\n') ('fi\n') ('\n') ('POSIXCUBE_DEBUG=') (${ VSub_Name p666_debug) ('\n') ('cubevar_api_roles=') 
                                (Right_DoubleQuote '"') (${ VSub_Name p666_roles) (Right_DoubleQuote '"') ('\n') (${ VSub_Name p666_script_envar_contents) ('\n') 
                                (${ VSub_Name p666_options) ('\n') (${ VSub_Name p666_script_contents) ('\n') ('\n') ('if [ ') (Right_DoubleQuote '"') 
                                (EscapedLiteralPart
                                  token: <Lit_EscapedChar '\\$'>
                                ) ('{cubevar_api_post_restart}') (Right_DoubleQuote '"') (' != ') (Right_DoubleQuote '"') 
                                (Right_DoubleQuote '"') (' ]; then\n') ('  for p666_post in ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
                                ('{cubevar_api_post_restart}; do\n') ('    cube_service restart ') (Right_DoubleQuote '"') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
                                ('{p666_post}') (Right_DoubleQuote '"') ('\n') ('  done\n') ('fi\n')
                              )
                            }
                          do_expansion: True
                          here_end: HEREDOC
                          was_filled: True
                          spids: [11809]
                        )
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {(DQ (${ VSub_Name p666_script))}
                          spids: [11812]
                        )
                      ]
                    )
                    (C {(chmod)} {(Lit_Other '+') (x)} {(DQ (${ VSub_Name p666_script))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_upload)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name p666_script) (' '))}
                          spids: [11903]
                        )
                      ]
                      spids: [11903]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ (${ VSub_Name p666_cubes))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (ForEach
                              iter_name: p666_cube
                              iter_words: [{(${ VSub_Name p666_cubes)}]
                              do_arg_iter: False
                              body: 
                                (DoGroup
                                  children: [
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(Lit_Other '[')} {(-d)} 
                                                  {(DQ (${ VSub_Name p666_cube))} {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_cube_name)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (CommandSubPart
                                                        command_list: 
                                                          (CommandList
                                                            children: [
                                                              (C {(basename)} 
                                                                {(DQ (${ VSub_Name p666_cube))}
                                                              )
                                                            ]
                                                          )
                                                        left_token: <Left_CommandSub '$('>
                                                        spids: [11968 11976]
                                                      )
                                                    }
                                                  spids: [11967]
                                                )
                                              ]
                                              spids: [11967]
                                            )
                                            (If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (Sentence
                                                      child: 
                                                        (C {(Lit_Other '[')} {(-r)} 
                                                          {
                                                            (DQ (${ VSub_Name p666_cube) (/) 
                                                              (${ VSub_Name p666_cube_name) (.sh)
                                                            )
                                                          } {(Lit_Other ']')}
                                                        )
                                                      terminator: <Op_Semi ';'>
                                                    )
                                                  ]
                                                  action: [
                                                    (Assignment
                                                      keyword: Assign_None
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (LhsName name:p666_cube)
                                                          op: Equal
                                                          rhs: 
                                                            {
                                                              (BracedVarSub
                                                                token: <VSub_Name p666_cube>
                                                                suffix_op: 
                                                                  (StringUnary
                                                                    op_id: VOp1_Percent
                                                                    arg_word: {(Lit_Slash /)}
                                                                  )
                                                                spids: [12003 12007]
                                                              )
                                                            }
                                                          spids: [12002]
                                                        )
                                                      ]
                                                      spids: [12002]
                                                    )
                                                    (Assignment
                                                      keyword: Assign_None
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (LhsName name:p666_upload)
                                                          op: Equal
                                                          rhs: 
                                                            {
                                                              (DQ (${ VSub_Name p666_upload) (' ') 
                                                                (${ VSub_Name p666_cube)
                                                              )
                                                            }
                                                          spids: [12010]
                                                        )
                                                      ]
                                                      spids: [12010]
                                                    )
                                                  ]
                                                  spids: [-1 11999]
                                                )
                                              ]
                                              spids: [-1 12022]
                                            )
                                          ]
                                          spids: [-1 11964]
                                        )
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(Lit_Other '[')} {(-r)} 
                                                  {(DQ (${ VSub_Name p666_cube))} {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_cube_name)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (CommandSubPart
                                                        command_list: 
                                                          (CommandList
                                                            children: [
                                                              (C {(basename)} 
                                                                {(DQ (${ VSub_Name p666_cube))}
                                                              )
                                                            ]
                                                          )
                                                        left_token: <Left_CommandSub '$('>
                                                        spids: [12044 12052]
                                                      )
                                                    }
                                                  spids: [12043]
                                                )
                                              ]
                                              spids: [12043]
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_upload)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (DQ (${ VSub_Name p666_upload) (' ') 
                                                        (${ VSub_Name p666_cube)
                                                      )
                                                    }
                                                  spids: [12055]
                                                )
                                              ]
                                              spids: [12055]
                                            )
                                          ]
                                          spids: [12025 12040]
                                        )
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(Lit_Other '[')} {(-r)} 
                                                  {(DQ (${ VSub_Name p666_cube) (.sh))} {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_cube_name)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (CommandSubPart
                                                        command_list: 
                                                          (CommandList
                                                            children: [
                                                              (C {(basename)} 
                                                                {(DQ (${ VSub_Name p666_cube) (.sh))}
                                                              )
                                                            ]
                                                          )
                                                        left_token: <Left_CommandSub '$('>
                                                        spids: [12087 12096]
                                                      )
                                                    }
                                                  spids: [12086]
                                                )
                                              ]
                                              spids: [12086]
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_upload)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (DQ (${ VSub_Name p666_upload) (' ') 
                                                        (${ VSub_Name p666_cube) (.sh)
                                                      )
                                                    }
                                                  spids: [12099]
                                                )
                                              ]
                                              spids: [12099]
                                            )
                                          ]
                                          spids: [12067 12083]
                                        )
                                      ]
                                      spids: [-1 12112]
                                    )
                                  ]
                                  spids: [11946 12115]
                                )
                              spids: [11940 11944]
                            )
                          ]
                          spids: [-1 11932]
                        )
                      ]
                      spids: [-1 12118]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ (${ VSub_Name p666_include_cubes))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (ForEach
                              iter_name: p666_cube
                              iter_words: [{(${ VSub_Name p666_include_cubes)}]
                              do_arg_iter: False
                              body: 
                                (DoGroup
                                  children: [
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(Lit_Other '[')} {(-d)} 
                                                  {(DQ (${ VSub_Name p666_cube))} {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_cube_name)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (CommandSubPart
                                                        command_list: 
                                                          (CommandList
                                                            children: [
                                                              (C {(basename)} 
                                                                {(DQ (${ VSub_Name p666_cube))}
                                                              )
                                                            ]
                                                          )
                                                        left_token: <Left_CommandSub '$('>
                                                        spids: [12177 12185]
                                                      )
                                                    }
                                                  spids: [12176]
                                                )
                                              ]
                                              spids: [12176]
                                            )
                                            (If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (Sentence
                                                      child: 
                                                        (C {(Lit_Other '[')} {(-r)} 
                                                          {
                                                            (DQ (${ VSub_Name p666_cube) (/) 
                                                              (${ VSub_Name p666_cube_name) (.sh)
                                                            )
                                                          } {(Lit_Other ']')}
                                                        )
                                                      terminator: <Op_Semi ';'>
                                                    )
                                                  ]
                                                  action: [
                                                    (Assignment
                                                      keyword: Assign_None
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (LhsName name:p666_cube)
                                                          op: Equal
                                                          rhs: 
                                                            {
                                                              (BracedVarSub
                                                                token: <VSub_Name p666_cube>
                                                                suffix_op: 
                                                                  (StringUnary
                                                                    op_id: VOp1_Percent
                                                                    arg_word: {(Lit_Slash /)}
                                                                  )
                                                                spids: [12212 12216]
                                                              )
                                                            }
                                                          spids: [12211]
                                                        )
                                                      ]
                                                      spids: [12211]
                                                    )
                                                    (Assignment
                                                      keyword: Assign_None
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (LhsName name:p666_upload)
                                                          op: Equal
                                                          rhs: 
                                                            {
                                                              (DQ (${ VSub_Name p666_upload) (' ') 
                                                                (${ VSub_Name p666_cube)
                                                              )
                                                            }
                                                          spids: [12219]
                                                        )
                                                      ]
                                                      spids: [12219]
                                                    )
                                                  ]
                                                  spids: [-1 12208]
                                                )
                                              ]
                                              spids: [-1 12231]
                                            )
                                          ]
                                          spids: [-1 12173]
                                        )
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(Lit_Other '[')} {(-r)} 
                                                  {(DQ (${ VSub_Name p666_cube))} {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_cube_name)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (CommandSubPart
                                                        command_list: 
                                                          (CommandList
                                                            children: [
                                                              (C {(basename)} 
                                                                {(DQ (${ VSub_Name p666_cube))}
                                                              )
                                                            ]
                                                          )
                                                        left_token: <Left_CommandSub '$('>
                                                        spids: [12253 12261]
                                                      )
                                                    }
                                                  spids: [12252]
                                                )
                                              ]
                                              spids: [12252]
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_upload)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (DQ (${ VSub_Name p666_upload) (' ') 
                                                        (${ VSub_Name p666_cube)
                                                      )
                                                    }
                                                  spids: [12264]
                                                )
                                              ]
                                              spids: [12264]
                                            )
                                          ]
                                          spids: [12234 12249]
                                        )
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(Lit_Other '[')} {(-r)} 
                                                  {(DQ (${ VSub_Name p666_cube) (.sh))} {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_cube_name)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (CommandSubPart
                                                        command_list: 
                                                          (CommandList
                                                            children: [
                                                              (C {(basename)} 
                                                                {(DQ (${ VSub_Name p666_cube) (.sh))}
                                                              )
                                                            ]
                                                          )
                                                        left_token: <Left_CommandSub '$('>
                                                        spids: [12296 12305]
                                                      )
                                                    }
                                                  spids: [12295]
                                                )
                                              ]
                                              spids: [12295]
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:p666_upload)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (DQ (${ VSub_Name p666_upload) (' ') 
                                                        (${ VSub_Name p666_cube) (.sh)
                                                      )
                                                    }
                                                  spids: [12308]
                                                )
                                              ]
                                              spids: [12308]
                                            )
                                          ]
                                          spids: [12276 12292]
                                        )
                                      ]
                                      else_action: [
                                        (C {(p666_printf_error)} 
                                          {(DQ ('Could not find ') (${ VSub_Name p666_cube))}
                                        )
                                        (C {(p666_exit)} {(1)})
                                      ]
                                      spids: [12321 12339]
                                    )
                                  ]
                                  spids: [12155 12342]
                                )
                              spids: [12149 12153]
                            )
                          ]
                          spids: [-1 12141]
                        )
                      ]
                      spids: [-1 12345]
                    )
                    (AndOr
                      children: [
                        (C {(Lit_Other '[')} {(${ VSub_Name p666_quiet)} {(-eq)} {(0)} {(Lit_Other ']')})
                        (C {(p666_printf)} 
                          {
                            (DQ ('Transferring files to hosts: ') (${ VSub_Name p666_hosts) (' ...') 
                              (EscapedLiteralPart
                                token: <Lit_EscapedChar '\\n'>
                              )
                            )
                          }
                        )
                      ]
                      op_id: Op_DAmp
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_async)
                          op: Equal
                          rhs: {(1)}
                          spids: [12377]
                        )
                      ]
                      spids: [12377]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(${ VSub_Name p666_skip_init)} {(-eq)} {(0)} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_wait_pids)
                                  op: Equal
                                  rhs: {(DQ )}
                                  spids: [12401]
                                )
                              ]
                              spids: [12401]
                            )
                            (ForEach
                              iter_name: p666_host
                              iter_words: [{(${ VSub_Name p666_hosts)}]
                              do_arg_iter: False
                              body: 
                                (DoGroup
                                  children: [
                                    (C {(p666_remote_ssh)} 
                                      {
                                        (DQ ('[ ! -d ') 
                                          (EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\"'>
                                          ) (${ VSub_Name p666_cubedir) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' ] && mkdir -p ') 
                                          (${ VSub_Name p666_cubedir) ('; RC=') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
                                          (
'?; command -v rsync >/dev/null 2>&1 || (command -v apt-get >/dev/null 2>&1 && apt-get -y install rsync); exit '
                                          ) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('{RC};')
                                        )
                                      }
                                    )
                                  ]
                                  spids: [12417 12449]
                                )
                              spids: [12411 12415]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name p666_wait_pids))} 
                                          {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (AndOr
                                      children: [
                                        (C {(Lit_Other '[')} {(${ VSub_Name p666_debug)} {(-eq)} {(1)} 
                                          {(Lit_Other ']')}
                                        )
                                        (C {(p666_printf)} 
                                          {
                                            (DQ ('Waiting on initialization PIDs: ') 
                                              (${ VSub_Name p666_wait_pids) (' ...') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                            )
                                          }
                                        )
                                      ]
                                      op_id: Op_DAmp
                                    )
                                    (C {(wait)} {(${ VSub_Name p666_wait_pids)})
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:p666_host_output_result)
                                          op: Equal
                                          rhs: {($ VSub_QMark '$?')}
                                          spids: [12507]
                                        )
                                      ]
                                      spids: [12507]
                                    )
                                    (C {(p666_handle_remote_response)} 
                                      {(DQ ('Remote commands through SSH'))}
                                    )
                                  ]
                                  spids: [-1 12471]
                                )
                              ]
                              spids: [-1 12518]
                            )
                          ]
                          spids: [-1 12398]
                        )
                      ]
                      spids: [-1 12521]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_wait_pids)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [12526]
                        )
                      ]
                      spids: [12526]
                    )
                    (ForEach
                      iter_name: p666_host
                      iter_words: [{(${ VSub_Name p666_hosts)}]
                      do_arg_iter: False
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(${ VSub_Name p666_skip_init)} {(-eq)} 
                                          {(0)} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(p666_remote_transfer)} 
                                      {
                                        (DQ (${ VSub_Name p666_upload) (' ') 
                                          (${ VSub_Name p666_script_path) (' ') (${ VSub_Name p666_envar_scripts)
                                        )
                                      } {(DQ (${ VSub_Name p666_cubedir) (/))}
                                    )
                                  ]
                                  spids: [-1 12560]
                                )
                              ]
                              else_action: [
                                (C {(p666_remote_transfer)} 
                                  {
                                    (DQ (${ VSub_Name p666_upload) (' ') 
                                      (${ VSub_Name p666_envar_scripts)
                                    )
                                  } {(DQ (${ VSub_Name p666_cubedir) (/))}
                                )
                              ]
                              spids: [12587 12610]
                            )
                          ]
                          spids: [12542 12613]
                        )
                      spids: [12536 12540]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ (${ VSub_Name p666_wait_pids))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (AndOr
                              children: [
                                (C {(Lit_Other '[')} {(${ VSub_Name p666_debug)} {(-eq)} {(1)} 
                                  {(Lit_Other ']')}
                                )
                                (C {(p666_printf)} 
                                  {
                                    (DQ ('Waiting on transfer PIDs: ') (${ VSub_Name p666_wait_pids) 
                                      (' ...') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                    )
                                  }
                                )
                              ]
                              op_id: Op_DAmp
                            )
                            (C {(wait)} {(${ VSub_Name p666_wait_pids)})
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_host_output_result)
                                  op: Equal
                                  rhs: {($ VSub_QMark '$?')}
                                  spids: [12673]
                                )
                              ]
                              spids: [12673]
                            )
                            (C {(p666_handle_remote_response)} {(DQ (rsync))})
                          ]
                          spids: [-1 12637]
                        )
                      ]
                      spids: [-1 12684]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_wait_pids)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [12688]
                        )
                      ]
                      spids: [12688]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:p666_async)
                          op: Equal
                          rhs: {(${ VSub_Name p666_async_cubes)}
                          spids: [12693]
                        )
                      ]
                      spids: [12693]
                    )
                    (ForEach
                      iter_name: p666_host
                      iter_words: [{(${ VSub_Name p666_hosts)}]
                      do_arg_iter: False
                      body: 
                        (DoGroup
                          children: [
                            (AndOr
                              children: [
                                (C {(Lit_Other '[')} {(${ VSub_Name p666_quiet)} {(-eq)} {(0)} 
                                  {(Lit_Other ']')}
                                )
                                (C {(p666_printf)} 
                                  {
                                    (DQ ('[') (${ VSub_Name POSIXCUBE_COLOR_GREEN) 
                                      (${ VSub_Name p666_host) (${ VSub_Name POSIXCUBE_COLOR_RESET) ('] Executing on ') (${ VSub_Name p666_host) (' ...') 
                                      (EscapedLiteralPart
                                        token: <Lit_EscapedChar '\\n'>
                                      )
                                    )
                                  }
                                )
                              ]
                              op_id: Op_DAmp
                            )
                            (C {(p666_remote_ssh)} 
                              {
                                (DQ ('. ') (${ VSub_Name p666_cubedir) (/) (${ VSub_Name p666_script))
                              }
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_remote_ssh_result)
                                  op: Equal
                                  rhs: {($ VSub_QMark '$?')}
                                  spids: [12765]
                                )
                              ]
                              spids: [12765]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(${ VSub_Name p666_async)} {(-eq)} {(0)} 
                                          {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (AndOr
                                      children: [
                                        (C {(Lit_Other '[')} {(${ VSub_Name p666_skip_host_errors)} 
                                          {(-eq)} {(0)} {(Lit_Other ']')}
                                        )
                                        (AndOr
                                          children: [
                                            (C {(Lit_Other '[')} 
                                              {(${ VSub_Name p666_remote_ssh_result)} {(-ne)} {(0)} {(Lit_Other ']')}
                                            )
                                            (C {(p666_exit)} {(${ VSub_Name p666_remote_ssh_result)})
                                          ]
                                          op_id: Op_DAmp
                                        )
                                      ]
                                      op_id: Op_DAmp
                                    )
                                  ]
                                  spids: [-1 12784]
                                )
                              ]
                              spids: [-1 12822]
                            )
                          ]
                          spids: [12712 12825]
                        )
                      spids: [12706 12710]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ (${ VSub_Name p666_wait_pids))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (AndOr
                              children: [
                                (C {(Lit_Other '[')} {(${ VSub_Name p666_debug)} {(-eq)} {(1)} 
                                  {(Lit_Other ']')}
                                )
                                (C {(p666_printf)} 
                                  {
                                    (DQ ('Waiting on cube execution PIDs: ') 
                                      (${ VSub_Name p666_wait_pids) (' ...') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                    )
                                  }
                                )
                              ]
                              op_id: Op_DAmp
                            )
                            (C {(wait)} {(${ VSub_Name p666_wait_pids)})
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:p666_host_output_result)
                                  op: Equal
                                  rhs: {($ VSub_QMark '$?')}
                                  spids: [12884]
                                )
                              ]
                              spids: [12884]
                            )
                            (C {(p666_handle_remote_response)} {(DQ ('Cube execution'))})
                          ]
                          spids: [-1 12848]
                        )
                      ]
                      spids: [-1 12895]
                    )
                    (C {(p666_exit)} {(0)})
                  ]
                  spids: [-1 9891]
                )
              ]
              spids: [-1 12904]
            )
          ]
          spids: [-1 6994]
        )
      ]
      spids: [-1 12906]
    )
  ]
)