(command.CommandList
  children: [
    (C {(Id.KW_Set set)} {(-o)} {(errexit)})
    (C {(Id.KW_Set set)} {(-o)} {(nounset)})
    (C {(Id.KW_Set set)} {(-o)} {(pipefail)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:KUBE_ROOT)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:125)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.AndOr
                        ops: [Id.Op_DAmp]
                        children: [
                          (C {(cd)} 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:128)
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(dirname)} {(DQ (${ Id.VSub_Name BASH_SOURCE))})]
                                  )
                              ) (/..)
                            }
                          )
                          (C {(pwd)})
                        ]
                      )
                    ]
                  )
              )
            }
          spids: [124]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:KUBERNETES_RELEASE_URL)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (braced_var_sub
                  token: (Token id:Id.VSub_Name val:KUBERNETES_RELEASE_URL span_id:148)
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {('https:') (Id.Lit_Slash /) (Id.Lit_Slash /) (dl.k8s.io)}
                    )
                )
              )
            }
          spids: [145]
        )
      ]
    )
    (command.ShFunction
      name: detect_kube_release
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_n
                              child: 
                                {
                                  (DQ 
                                    (braced_var_sub
                                      token: (Token id:Id.VSub_Name val:KUBE_VERSION span_id:175)
                                      suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                    )
                                  )
                                }
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:181)
                    )
                  ]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:186)
                      arg_word: {(0)}
                    )
                  ]
                  spids: [167 183]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.LogicalNot
                              child: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_e
                                  child: {(DQ (${ Id.VSub_Name KUBE_ROOT) (/version))}
                                )
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:214)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(echo)} {(DQ ("Can't determine Kubernetes release."))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:225)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ (${ Id.VSub_Name BASH_SOURCE) 
                            (' should only be run from a prebuilt Kubernetes release.')
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:238)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)} {(DQ ('Did you mean to use get-kube.sh instead?'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:248)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:252)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [198 216]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:KUBE_VERSION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:262)
                        command_list: 
                          (command.CommandList
                            children: [(C {(cat)} {(DQ (${ Id.VSub_Name KUBE_ROOT) (/version))})]
                          )
                      )
                    }
                  spids: [261]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: detect_client_info
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'kernel=') 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:288)
                  command_list: (command.CommandList children:[(C {(uname)} {(-s)})])
                )
              }
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name kernel))}
              arms: [
                (case_arm
                  pat_list: [{(Darwin)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CLIENT_PLATFORM)
                          op: assign_op.Equal
                          rhs: {(DQ (darwin))}
                          spids: [310]
                        )
                      ]
                    )
                  ]
                  spids: [306 307 316 -1]
                )
                (case_arm
                  pat_list: [{(Linux)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CLIENT_PLATFORM)
                          op: assign_op.Equal
                          rhs: {(DQ (linux))}
                          spids: [323]
                        )
                      ]
                    )
                  ]
                  spids: [319 320 329 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {(DQ ('Unknown, unsupported platform: ') (${ Id.VSub_Name kernel) (.))}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:346)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)} {(DQ ('Supported platforms: Linux, Darwin.'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:356)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)} {(DQ ('Bailing out.'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:366)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:370)
                      arg_word: {(2)}
                    )
                  ]
                  spids: [332 333 -1 375]
                )
              ]
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'machine=') 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:390)
                  command_list: (command.CommandList children:[(C {(uname)} {(-m)})])
                )
              }
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name machine))}
              arms: [
                (case_arm
                  pat_list: [
                    {(x86_64) (Id.Lit_Star '*')}
                    {(i) (Id.Lit_QMark '?') (86_64) (Id.Lit_Star '*')}
                    {(amd64) (Id.Lit_Star '*')}
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CLIENT_ARCH)
                          op: assign_op.Equal
                          rhs: {(DQ (amd64))}
                          spids: [421]
                        )
                      ]
                    )
                  ]
                  spids: [408 418 427 -1]
                )
                (case_arm
                  pat_list: [{(aarch64) (Id.Lit_Star '*')} {(arm64) (Id.Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CLIENT_ARCH)
                          op: assign_op.Equal
                          rhs: {(DQ (arm64))}
                          spids: [438]
                        )
                      ]
                    )
                  ]
                  spids: [430 435 444 -1]
                )
                (case_arm
                  pat_list: [{(arm) (Id.Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CLIENT_ARCH)
                          op: assign_op.Equal
                          rhs: {(DQ (arm))}
                          spids: [452]
                        )
                      ]
                    )
                  ]
                  spids: [447 449 458 -1]
                )
                (case_arm
                  pat_list: [{(i) (Id.Lit_QMark '?') (86) (Id.Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CLIENT_ARCH)
                          op: assign_op.Equal
                          rhs: {(DQ (386))}
                          spids: [468]
                        )
                      ]
                    )
                  ]
                  spids: [461 465 474 -1]
                )
                (case_arm
                  pat_list: [{(s390x) (Id.Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CLIENT_ARCH)
                          op: assign_op.Equal
                          rhs: {(DQ (s390x))}
                          spids: [482]
                        )
                      ]
                    )
                  ]
                  spids: [477 479 488 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ('Unknown, unsupported architecture (') (${ Id.VSub_Name machine) (').'))
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:506)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [
                        {(echo)}
                        {(DQ ('Supported architectures x86_64, i686, arm, arm64, s390x.'))}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:516)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)} {(DQ ('Bailing out.'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:526)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:530)
                      arg_word: {(3)}
                    )
                  ]
                  spids: [492 493 535 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: md5sum_file
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{(which)} {(md5)}]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'>' span_id:558)
                              fd: -1
                              arg_word: {(/dev/null)}
                            )
                            (redir.Redir
                              op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:561)
                              fd: 2
                              arg_word: {(1)}
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:563)
                    )
                  ]
                  action: [(C {(md5)} {(-q)} {(DQ ($ Id.VSub_Number '$1'))})]
                  spids: [552 565]
                )
              ]
              else_action: [
                (command.Pipeline
                  children: [
                    (C {(md5sum)} {(DQ ($ Id.VSub_Number '$1'))})
                    (C {(awk)} {(SQ (Token id:Id.Lit_Chars val:'{ print $1 }' span_id:591))})
                  ]
                  negated: F
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: sha1sum_file
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{(which)} {(sha1sum)}]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'>' span_id:615)
                              fd: -1
                              arg_word: {(/dev/null)}
                            )
                            (redir.Redir
                              op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:618)
                              fd: 2
                              arg_word: {(1)}
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:620)
                    )
                  ]
                  action: [
                    (command.Pipeline
                      children: [
                        (C {(sha1sum)} {(DQ ($ Id.VSub_Number '$1'))})
                        (C {(awk)} {(SQ (Token id:Id.Lit_Chars val:'{ print $1 }' span_id:636))})
                      ]
                      negated: F
                    )
                  ]
                  spids: [609 622]
                )
              ]
              else_action: [
                (command.Pipeline
                  children: [
                    (C {(shasum)} {(-a1)} {(DQ ($ Id.VSub_Number '$1'))})
                    (C {(awk)} {(SQ (Token id:Id.Lit_Chars val:'{ print $1 }' span_id:656))})
                  ]
                  negated: F
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: download_tarball
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(-r)} {(Id.Lit_VarLike 'download_path=') (DQ ($ Id.VSub_Number '$1'))})
            (C {(local)} {(-r)} {(Id.Lit_VarLike 'file=') (DQ ($ Id.VSub_Number '$2'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:url)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name DOWNLOAD_URL_PREFIX) (/) (${ Id.VSub_Name file))}
                  spids: [694]
                )
              ]
            )
            (C {(mkdir)} {(-p)} {(DQ (${ Id.VSub_Name download_path))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.WordTest
                              w: 
                                {
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:721)
                                    command_list: 
                                      (command.CommandList
                                        children: [(C {(which)} {(curl)})]
                                      )
                                  )
                                }
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:728)
                    )
                  ]
                  action: [
                    (C {(curl)} {(-fL)} {(--retry)} {(3)} {(--keepalive-time)} {(2)} 
                      {(DQ (${ Id.VSub_Name url))} {(-o)} {(DQ (${ Id.VSub_Name download_path) (/) (${ Id.VSub_Name file))}
                    )
                  ]
                  spids: [717 730]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.WordTest
                              w: 
                                {
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:768)
                                    command_list: 
                                      (command.CommandList
                                        children: [(C {(which)} {(wget)})]
                                      )
                                  )
                                }
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:775)
                    )
                  ]
                  action: [
                    (C {(wget)} {(DQ (${ Id.VSub_Name url))} {(-O)} 
                      {(DQ (${ Id.VSub_Name download_path) (/) (${ Id.VSub_Name file))}
                    )
                  ]
                  spids: [764 777]
                )
              ]
              else_action: [
                (command.Simple
                  words: [{(echo)} {(DQ ("Couldn't find curl or wget.  Bailing out."))}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:810)
                      fd: -1
                      arg_word: {(2)}
                    )
                  ]
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:814)
                  arg_word: {(4)}
                )
              ]
            )
            (C {(echo)})
            (C {(local)} 
              {(Id.Lit_VarLike 'md5sum=') 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:828)
                  command_list: 
                    (command.CommandList
                      children: [
                        (C {(md5sum_file)} 
                          {(DQ (${ Id.VSub_Name download_path) (/) (${ Id.VSub_Name file))}
                        )
                      ]
                    )
                )
              }
            )
            (C {(echo)} {(DQ ('md5sum(') (${ Id.VSub_Name file) (')=') (${ Id.VSub_Name md5sum))})
            (C {(local)} 
              {(Id.Lit_VarLike 'sha1sum=') 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:860)
                  command_list: 
                    (command.CommandList
                      children: [
                        (C {(sha1sum_file)} 
                          {(DQ (${ Id.VSub_Name download_path) (/) (${ Id.VSub_Name file))}
                        )
                      ]
                    )
                )
              }
            )
            (C {(echo)} {(DQ ('sha1sum(') (${ Id.VSub_Name file) (')=') (${ Id.VSub_Name sha1sum))})
            (C {(echo)})
          ]
        )
    )
    (command.ShFunction
      name: extract_arch_tarball
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(-r)} {(Id.Lit_VarLike 'tarfile=') (DQ ($ Id.VSub_Number '$1'))})
            (C {(local)} {(-r)} {(Id.Lit_VarLike 'platform=') (DQ ($ Id.VSub_Number '$2'))})
            (C {(local)} {(-r)} {(Id.Lit_VarLike 'arch=') (DQ ($ Id.VSub_Number '$3'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:platforms_dir)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ (${ Id.VSub_Name KUBE_ROOT) (/platforms/) (${ Id.VSub_Name platform) (/) 
                        (${ Id.VSub_Name arch)
                      )
                    }
                  spids: [938]
                )
              ]
            )
            (C {(echo)} 
              {
                (DQ ('Extracting ') (${ Id.VSub_Name tarfile) (' into ') (${ Id.VSub_Name platforms_dir))
              }
            )
            (C {(mkdir)} {(-p)} {(DQ (${ Id.VSub_Name platforms_dir))})
            (C {(tar)} {(-xzf)} {(DQ (${ Id.VSub_Name tarfile))} {(--strip-components)} {(3)} {(-C)} 
              {(DQ (${ Id.VSub_Name platforms_dir))}
            )
            (C {(ln)} {(-sf)} {(DQ (${ Id.VSub_Name platforms_dir))} 
              {
                (DQ 
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1021)
                    command_list: 
                      (command.CommandList
                        children: [(C {(dirname)} {(${ Id.VSub_Name tarfile)})]
                      )
                  ) (/bin)
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("Add '") 
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1036)
                    command_list: 
                      (command.CommandList
                        children: [(C {(dirname)} {(${ Id.VSub_Name tarfile)})]
                      )
                  ) ("/bin' to your PATH to use newly-installed binaries.")
                )
              }
            )
          ]
        )
    )
    (C {(detect_kube_release)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DOWNLOAD_URL_PREFIX)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name KUBERNETES_RELEASE_URL) (/) (${ Id.VSub_Name KUBE_VERSION))}
          spids: [1051]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SERVER_PLATFORM)
          op: assign_op.Equal
          rhs: {(DQ (linux))}
          spids: [1063]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SERVER_ARCH)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (braced_var_sub
                  token: (Token id:Id.VSub_Name val:KUBERNETES_SERVER_ARCH span_id:1071)
                  suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(amd64)})
                )
              )
            }
          spids: [1068]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SERVER_TAR)
          op: assign_op.Equal
          rhs: 
            {
              (DQ (kubernetes-server-) (${ Id.VSub_Name SERVER_PLATFORM) (-) 
                (${ Id.VSub_Name SERVER_ARCH) (.tar.gz)
              )
            }
          spids: [1077]
        )
      ]
    )
    (C {(detect_client_info)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CLIENT_TAR)
          op: assign_op.Equal
          rhs: 
            {
              (DQ (kubernetes-client-) (${ Id.VSub_Name CLIENT_PLATFORM) (-) 
                (${ Id.VSub_Name CLIENT_ARCH) (.tar.gz)
              )
            }
          spids: [1093]
        )
      ]
    )
    (C {(echo)} {(DQ ('Kubernetes release: ') (${ Id.VSub_Name KUBE_VERSION))})
    (C {(echo)} 
      {
        (DQ ('Server: ') (${ Id.VSub_Name SERVER_PLATFORM) (/) (${ Id.VSub_Name SERVER_ARCH) 
          ('  (to override, set KUBERNETES_SERVER_ARCH)')
        )
      }
    )
    (C {(echo)} 
      {
        (DQ ('Client: ') (${ Id.VSub_Name CLIENT_PLATFORM) (/) (${ Id.VSub_Name CLIENT_ARCH) 
          ('  (autodetected)')
        )
      }
    )
    (C {(echo)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DOWNLOAD_SERVER_TAR)
          op: assign_op.Equal
          rhs: {(false)}
          spids: [1153]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.LogicalNot
                      child: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_e
                          child: 
                            {(DQ (${ Id.VSub_Name KUBE_ROOT) (/server/) (${ Id.VSub_Name SERVER_TAR))}
                        )
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1175)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWNLOAD_SERVER_TAR)
                  op: assign_op.Equal
                  rhs: {(true)}
                  spids: [1180]
                )
              ]
            )
            (C {(echo)} 
              {
                (DQ ('Will download ') (${ Id.VSub_Name SERVER_TAR) (' from ') 
                  (${ Id.VSub_Name DOWNLOAD_URL_PREFIX)
                )
              }
            )
          ]
          spids: [1156 1177]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DOWNLOAD_CLIENT_TAR)
          op: assign_op.Equal
          rhs: {(false)}
          spids: [1206]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.LogicalNot
                      child: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_x
                          child: 
                            {
                              (DQ (${ Id.VSub_Name KUBE_ROOT) (/platforms/) 
                                (${ Id.VSub_Name CLIENT_PLATFORM) (/) (${ Id.VSub_Name CLIENT_ARCH) (/kubectl)
                              )
                            }
                        )
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1233)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWNLOAD_CLIENT_TAR)
                  op: assign_op.Equal
                  rhs: {(true)}
                  spids: [1238]
                )
              ]
            )
            (C {(echo)} 
              {
                (DQ ('Will download and extract ') (${ Id.VSub_Name CLIENT_TAR) (' from ') 
                  (${ Id.VSub_Name DOWNLOAD_URL_PREFIX)
                )
              }
            )
          ]
          spids: [1209 1235]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TESTS_TAR)
          op: assign_op.Equal
          rhs: {(DQ (kubernetes-test.tar.gz))}
          spids: [1258]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DOWNLOAD_TESTS_TAR)
          op: assign_op.Equal
          rhs: {(false)}
          spids: [1263]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_n
                      child: 
                        {
                          (DQ 
                            (braced_var_sub
                              token: 
                                (Token
                                  id: Id.VSub_Name
                                  val: KUBERNETES_DOWNLOAD_TESTS
                                  span_id: 1274
                                )
                              suffix_op: (suffix_op.Unary op_id:Id.VTest_Hyphen arg_word:(word.Empty))
                            )
                          )
                        }
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1280)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOWNLOAD_TESTS_TAR)
                  op: assign_op.Equal
                  rhs: {(true)}
                  spids: [1285]
                )
              ]
            )
            (C {(echo)} 
              {
                (DQ ('Will download and extract ') (${ Id.VSub_Name TESTS_TAR) (' from ') 
                  (${ Id.VSub_Name DOWNLOAD_URL_PREFIX)
                )
              }
            )
          ]
          spids: [1266 1282]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.LogicalAnd
                      left: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobDEqual
                          left: {(DQ (${ Id.VSub_Name DOWNLOAD_CLIENT_TAR))}
                          right: {(false)}
                        )
                      right: 
                        (bool_expr.LogicalAnd
                          left: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {(DQ (${ Id.VSub_Name DOWNLOAD_SERVER_TAR))}
                              right: {(false)}
                            )
                          right: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {(DQ (${ Id.VSub_Name DOWNLOAD_TESTS_TAR))}
                              right: {(false)}
                            )
                        )
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1348)
            )
          ]
          action: [
            (C {(echo)} {(DQ ('Nothing additional to download.'))})
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:1360)
              arg_word: {(0)}
            )
          ]
          spids: [1305 1350]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_z
                      child: 
                        {
                          (DQ 
                            (braced_var_sub
                              token: (Token id:Id.VSub_Name val:KUBERNETES_SKIP_CONFIRM span_id:1375)
                              suffix_op: (suffix_op.Unary op_id:Id.VTest_Hyphen arg_word:(word.Empty))
                            )
                          )
                        }
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1381)
            )
          ]
          action: [
            (C {(echo)} {(DQ ('Is this ok? [Y]/n'))})
            (C {(read)} {(confirm)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_EqualTilde
                              left: {(DQ (${ Id.VSub_Name confirm))}
                              right: 
                                {(Id.Lit_Other '^') (Id.Lit_Other '[') (nN) (Id.Lit_Other ']') 
                                  (Id.Lit_Other '$')
                                }
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1417)
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ (Aborting.))})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:1429)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [1398 1419]
                )
              ]
            )
          ]
          spids: [1367 1383]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(DQ (${ Id.VSub_Name DOWNLOAD_SERVER_TAR))})
              terminator: (Token id:Id.Op_Semi val:';' span_id:1446)
            )
          ]
          action: [
            (C {(download_tarball)} {(DQ (${ Id.VSub_Name KUBE_ROOT) (/server))} 
              {(DQ (${ Id.VSub_Name SERVER_TAR))}
            )
          ]
          spids: [1439 1448]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(DQ (${ Id.VSub_Name DOWNLOAD_CLIENT_TAR))})
              terminator: (Token id:Id.Op_Semi val:';' span_id:1476)
            )
          ]
          action: [
            (C {(download_tarball)} {(DQ (${ Id.VSub_Name KUBE_ROOT) (/client))} 
              {(DQ (${ Id.VSub_Name CLIENT_TAR))}
            )
            (C {(extract_arch_tarball)} 
              {(DQ (${ Id.VSub_Name KUBE_ROOT) (/client/) (${ Id.VSub_Name CLIENT_TAR))} {(DQ (${ Id.VSub_Name CLIENT_PLATFORM))} {(DQ (${ Id.VSub_Name CLIENT_ARCH))}
            )
          ]
          spids: [1469 1478]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(DQ (${ Id.VSub_Name DOWNLOAD_TESTS_TAR))})
              terminator: (Token id:Id.Op_Semi val:';' span_id:1531)
            )
          ]
          action: [
            (C {(download_tarball)} {(DQ (${ Id.VSub_Name KUBE_ROOT) (/test))} 
              {(DQ (${ Id.VSub_Name TESTS_TAR))}
            )
            (C {(echo)} 
              {
                (DQ ('Extracting ') (${ Id.VSub_Name TESTS_TAR) (' into ') (${ Id.VSub_Name KUBE_ROOT))
              }
            )
            (C {(tar)} {(-xzf)} {(DQ (${ Id.VSub_Name KUBE_ROOT) (/test/) (${ Id.VSub_Name TESTS_TAR))} 
              {(--strip-components)} {(1)} {(-C)} {(DQ (${ Id.VSub_Name KUBE_ROOT))}
            )
          ]
          spids: [1524 1533]
        )
      ]
    )
  ]
)