(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: 
            {
              (braced_var_sub
                token: (Token id:Id.VSub_Name val:KUBE_ROOT span_id:65)
                suffix_op: 
                  (suffix_op.Unary
                    op_id: Id.VTest_ColonHyphen
                    arg_word: 
                      {
                        (command_sub
                          left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:67)
                          command_list: 
                            (command.CommandList
                              children: [(C {(dirname)} {(DQ (${ Id.VSub_Name BASH_SOURCE))})]
                            )
                        ) (Id.Lit_Slash /) (..)
                      }
                  )
              )
            }
          spids: [63]
        )
      ]
    )
    (command.Case
      to_match: 
        {
          (DQ 
            (command_sub
              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:87)
              command_list: (command.CommandList children:[(C {(uname)} {(-s)})])
            )
          )
        }
      arms: [
        (case_arm
          pat_list: [{(Darwin)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:host_os)
                  op: assign_op.Equal
                  rhs: {(darwin)}
                  spids: [101]
                )
              ]
            )
          ]
          spids: [97 98 105 -1]
        )
        (case_arm
          pat_list: [{(Linux)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:host_os)
                  op: assign_op.Equal
                  rhs: {(linux)}
                  spids: [112]
                )
              ]
            )
          ]
          spids: [108 109 116 -1]
        )
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (command.Simple
              words: [{(echo)} {(DQ ('Unsupported host OS.  Must be Linux or Mac OS X.'))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:129)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:133)
              arg_word: {(1)}
            )
          ]
          spids: [119 120 138 -1]
        )
      ]
    )
    (command.Case
      to_match: 
        {
          (DQ 
            (command_sub
              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:146)
              command_list: (command.CommandList children:[(C {(uname)} {(-m)})])
            )
          )
        }
      arms: [
        (case_arm
          pat_list: [{(x86_64) (Id.Lit_Star '*')}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:host_arch)
                  op: assign_op.Equal
                  rhs: {(amd64)}
                  spids: [161]
                )
              ]
            )
          ]
          spids: [156 158 165 -1]
        )
        (case_arm
          pat_list: [{(i) (Id.Lit_QMark '?') (86_64) (Id.Lit_Star '*')}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:host_arch)
                  op: assign_op.Equal
                  rhs: {(amd64)}
                  spids: [175]
                )
              ]
            )
          ]
          spids: [168 172 179 -1]
        )
        (case_arm
          pat_list: [{(amd64) (Id.Lit_Star '*')}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:host_arch)
                  op: assign_op.Equal
                  rhs: {(amd64)}
                  spids: [187]
                )
              ]
            )
          ]
          spids: [182 184 191 -1]
        )
        (case_arm
          pat_list: [{(arm) (Id.Lit_Star '*')}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:host_arch)
                  op: assign_op.Equal
                  rhs: {(arm)}
                  spids: [199]
                )
              ]
            )
          ]
          spids: [194 196 203 -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:host_arch)
                  op: assign_op.Equal
                  rhs: {(386)}
                  spids: [213]
                )
              ]
            )
          ]
          spids: [206 210 217 -1]
        )
        (case_arm
          pat_list: [{(s390x) (Id.Lit_Star '*')}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:host_arch)
                  op: assign_op.Equal
                  rhs: {(s390x)}
                  spids: [225]
                )
              ]
            )
          ]
          spids: [220 222 229 -1]
        )
        (case_arm
          pat_list: [{(ppc64le) (Id.Lit_Star '*')}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:host_arch)
                  op: assign_op.Equal
                  rhs: {(ppc64le)}
                  spids: [237]
                )
              ]
            )
          ]
          spids: [232 234 241 -1]
        )
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {(DQ ('Unsupported host arch. Must be x86_64, 386, arm, s390x or ppc64le.'))}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:254)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:258)
              arg_word: {(1)}
            )
          ]
          spids: [244 245 263 -1]
        )
      ]
    )
    (command.ShFunction
      name: get_absolute_dirname
      body: 
        (command.BraceGroup
          children: [
            (C {(echo)} 
              {
                (DQ 
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:284)
                    command_list: 
                      (command.CommandList
                        children: [
                          (command.AndOr
                            ops: [Id.Op_DAmp]
                            children: [
                              (C {(cd)} 
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:288)
                                      command_list: 
                                        (command.CommandList
                                          children: [(C {(dirname)} {(DQ ($ Id.VSub_Number '$1'))})]
                                        )
                                    )
                                  )
                                }
                              )
                              (C {(pwd)})
                            ]
                          )
                        ]
                      )
                  )
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: get_bin
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:bin)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: (Token id:Id.VSub_Number val:1 span_id:318)
                          suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                        )
                      )
                    }
                  spids: [315]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:srcdir)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: (Token id:Id.VSub_Number val:2 span_id:327)
                          suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                        )
                      )
                    }
                  spids: [324]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {(DQ (${ Id.VSub_Name bin))}
                              right: {(DQ )}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:349)
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Binary name is required'))})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:361)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [333 351]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {(DQ (${ Id.VSub_Name srcdir))}
                              right: {(DQ )}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:385)
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Source directory path is required'))})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:397)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [369 387]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:locations)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: (Token id:Id.Op_LParen val:'(' span_id:408)
                        words: [
                          {(DQ (${ Id.VSub_Name KUBE_ROOT) (/_output/bin/) (${ Id.VSub_Name bin))}
                          {
                            (DQ (${ Id.VSub_Name KUBE_ROOT) (/_output/dockerized/bin/) 
                              (${ Id.VSub_Name host_os) (/) (${ Id.VSub_Name host_arch) (/) (${ Id.VSub_Name bin)
                            )
                          }
                          {
                            (DQ (${ Id.VSub_Name KUBE_ROOT) (/_output/local/bin/) 
                              (${ Id.VSub_Name host_os) (/) (${ Id.VSub_Name host_arch) (/) (${ Id.VSub_Name bin)
                            )
                          }
                          {
                            (DQ (${ Id.VSub_Name KUBE_ROOT) (/bazel-bin/) (${ Id.VSub_Name srcdir) (/) 
                              (${ Id.VSub_Name bin)
                            )
                          }
                          {
                            (DQ (${ Id.VSub_Name KUBE_ROOT) (/platforms/) (${ Id.VSub_Name host_os) (/) 
                              (${ Id.VSub_Name host_arch) (/) (${ Id.VSub_Name bin)
                            )
                          }
                        ]
                      )
                    }
                  spids: [407]
                )
              ]
            )
            (C {(echo)} 
              {
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:499)
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Pipeline
                          children: [
                            (command.Subshell
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (command.Simple
                                          words: [
                                            {(ls)}
                                            {(-t)}
                                            {
                                              (DQ 
                                                (braced_var_sub
                                                  token: 
                                                    (Token
                                                      id: Id.VSub_Name
                                                      val: locations
                                                      span_id: 508
                                                    )
                                                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                                )
                                              )
                                            }
                                          ]
                                          redirects: [
                                            (redir.Redir
                                              op: (Token id:Id.Redir_Great val:'2>' span_id:515)
                                              fd: 2
                                              arg_word: {(/dev/null)}
                                            )
                                          ]
                                        )
                                        (C {(true)})
                                      ]
                                    )
                                  ]
                                )
                            )
                            (C {(head)} {(-1)})
                          ]
                          negated: F
                        )
                      ]
                    )
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: print_error
      body: 
        (command.BraceGroup
          children: [
            (command.BraceGroup
              children: [
                (C {(echo)} 
                  {
                    (DQ ("It looks as if you don't have a compiled ") 
                      (braced_var_sub
                        token: (Token id:Id.VSub_Number val:1 span_id:551)
                        suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                      ) (' binary')
                    )
                  }
                )
                (C {(echo)})
                (C {(echo)} {(DQ ('If you are running from a clone of the git repo, please run'))})
                (C {(echo)} {(DQ ("'./build/run.sh make cross'. Note that this requires having"))})
                (C {(echo)} {(DQ ('Docker installed.'))})
                (C {(echo)})
                (C {(echo)} 
                  {(DQ ('If you are running from a binary release tarball, something is wrong. '))}
                )
                (C {(echo)} 
                  {(DQ ('Look at http://kubernetes.io/ for information on how to contact the '))}
                )
                (C {(echo)} {(DQ ('development team for help.'))})
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:608)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
          ]
        )
    )
  ]
)