(CommandList
  children: [
    (C {(set)} {(-o)} {(errexit)})
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SALT_ROOT)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(dirname)} {(DQ (${ VSub_Name BASH_SOURCE))})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [71 79]
              )
            }
          spids: [70]
        )
      ]
      spids: [70]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(LhsName name:SALT_ROOT) op:Equal spids:[83])]
      spids: [81]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBE_DOCKER_WRAPPED_BINARIES)
          op: Equal
          rhs: 
            {
              (ArrayLiteralPart
                words: [{(kube-apiserver)} {(kube-controller-manager)} {(kube-scheduler)} {(kube-proxy)}]
              )
            }
          spids: [88]
        )
      ]
      spids: [86]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:SERVER_BIN_TAR)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Number 1>
                suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{})
                spids: [109 112]
              )
            }
          spids: [108]
        )
      ]
      spids: [106]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Name '$SERVER_BIN_TAR'))})
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('!!! No binaries specified'))})
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 127]
        )
      ]
      spids: [16777215 141]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBE_TEMP)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(mktemp)} {(--tmpdir) (Lit_Other '=') (/srv)} {(-d)} {(-t)} 
                        {(kubernetes.XXXXXX)}
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [148 160]
              )
            }
          spids: [147]
        )
      ]
      spids: [147]
    )
    (C {(trap)} {(SQ <'rm -rf "${KUBE_TEMP}"'>)} {(EXIT)})
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:SALTDIRS)
          op: Equal
          rhs: {(ArrayLiteralPart words:[{(salt)} {(pillar)} {(reactor)}])}
          spids: [183]
        )
      ]
      spids: [181]
    )
    (C {(echo)} {(DQ ('+++ Installing salt files into new trees'))})
    (C {(rm)} {(-rf)} {(/srv/salt-new)})
    (C {(mkdir)} {(-p)} {(/srv/salt-new)})
    (C {(cp)} {(-v)} {(-R)} {(--preserve) (Lit_Other '=') (mode)} 
      {
        (DQ 
          (BracedVarSub
            token: <VSub_Name SALTDIRS>
            bracket_op: (WholeArray op_id:Lit_At)
            suffix_op: 
              (PatSub
                pat: {}
                replace: {(${ VSub_Name SALT_ROOT) (Lit_Slash /)}
                do_all: F
                do_prefix: T
                do_suffix: F
              )
            spids: [229 241]
          )
        )
      } {(/srv/salt-new)}
    )
    (C {(echo)} {(DQ ('+++ Installing salt overlay files'))})
    (ForEach
      iter_name: dir
      iter_words: [
        {
          (DQ 
            (BracedVarSub
              token: <VSub_Name SALTDIRS>
              bracket_op: (WholeArray op_id:Lit_At)
              spids: [260 265]
            )
          )
        }
      ]
      do_arg_iter: F
      body: 
        (DoGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolUnary
                              op_id: BoolUnary_d
                              child: {(DQ (/srv/salt-overlay/) ($ VSub_Name '$dir'))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(cp)} {(-v)} {(-R)} {(--preserve) (Lit_Other '=') (mode)} 
                      {(DQ (/srv/salt-overlay/) ($ VSub_Name '$dir'))} {(DQ (/srv/salt-new/))}
                    )
                  ]
                  spids: [16777215 286]
                )
              ]
              spids: [16777215 309]
            )
          ]
          spids: [269 311]
        )
      spids: [258 267]
    )
    (C {(echo)} {(DQ ('+++ Install binaries from tar: ') ($ VSub_Number '$1'))})
    (C {(tar)} {(-xz)} {(-C)} {(DQ (${ VSub_Name KUBE_TEMP))} {(-f)} {(DQ ($ VSub_Number '$1'))})
    (C {(mkdir)} {(-p)} {(/srv/salt-new/salt/kube-bins)})
    (C {(mkdir)} {(-p)} {(/srv/salt-new/salt/kube-docs)})
    (C {(cp)} {(-v)} {(DQ (${ VSub_Name KUBE_TEMP) (/kubernetes/server/bin/)) (Lit_Other '*')} 
      {(/srv/salt-new/salt/kube-bins/)}
    )
    (C {(cp)} {(-v)} {(DQ (${ VSub_Name KUBE_TEMP) (/kubernetes/LICENSES))} 
      {(/srv/salt-new/salt/kube-docs/)}
    )
    (C {(cp)} {(-v)} {(DQ (${ VSub_Name KUBE_TEMP) (/kubernetes/kubernetes-src.tar.gz))} 
      {(/srv/salt-new/salt/kube-docs/)}
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:kube_bin_dir)
              op: Equal
              rhs: {(DQ (/srv/salt-new/salt/kube-bins))}
              spids: [392]
            )
          ]
          spids: [392]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:docker_images_sls_file)
              op: Equal
              rhs: {(DQ (/srv/salt-new/pillar/docker-images.sls))}
              spids: [398]
            )
          ]
          spids: [398]
        )
      terminator: <Op_Semi ';'>
    )
    (ForEach
      iter_name: docker_file
      iter_words: [
        {
          (DQ 
            (BracedVarSub
              token: <VSub_Name KUBE_DOCKER_WRAPPED_BINARIES>
              bracket_op: (WholeArray op_id:Lit_At)
              spids: [411 416]
            )
          )
        }
      ]
      do_arg_iter: F
      body: 
        (DoGroup
          children: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:docker_tag)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(cat)} 
                                    {(${ VSub_Name kube_bin_dir) (/) (${ VSub_Name docker_file) 
                                      (.docker_tag)
                                    }
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [424 435]
                          )
                        }
                      spids: [423]
                    )
                  ]
                  spids: [423]
                )
              terminator: <Op_Semi ';'>
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (LogicalNot
                              child: 
                                (BoolUnary
                                  op_id: BoolUnary_z
                                  child: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          token: <VSub_Name KUBE_IMAGE_TAG>
                                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(EmptyPart)})
                                          spids: [448 451]
                                        )
                                      )
                                    }
                                )
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:docker_tag)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name KUBE_IMAGE_TAG))}
                          spids: [460]
                        )
                      ]
                      spids: [460]
                    )
                  ]
                  spids: [16777215 457]
                )
              ]
              spids: [16777215 468]
            )
            (Sentence
              child: 
                (C {(sed)} {(-i)} 
                  {
                    (DQ ('s/#') (${ VSub_Name docker_file) ('_docker_tag_value#/') 
                      (${ VSub_Name docker_tag) (/)
                    )
                  } {(DQ (${ VSub_Name docker_images_sls_file))}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [420 494]
        )
      spids: [409 418]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {
              (DQ ("kube_docker_registry: '") 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (C {(echo)} 
                          {
                            (BracedVarSub
                              token: <VSub_Name KUBE_DOCKER_REGISTRY>
                              suffix_op: 
                                (StringUnary
                                  op_id: VTest_ColonHyphen
                                  arg_word: {(gcr.io) (Lit_Slash /) (google_containers)}
                                )
                              spids: [513 519]
                            )
                          }
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [510 520]
                ) ("'\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: T
          spids: [499]
        )
        (Redir
          op_id: Redir_DGreat
          fd: 16777215
          arg_word: {(DQ (${ VSub_Name docker_images_sls_file))}
          spids: [502]
        )
      ]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:kube_addon_registry)
          op: Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  token: <VSub_Name KUBE_ADDON_REGISTRY>
                  suffix_op: 
                    (StringUnary
                      op_id: VTest_ColonHyphen
                      arg_word: {(gcr.io) (Lit_Slash /) (google_containers)}
                    )
                  spids: [543 549]
                )
              )
            }
          spids: [541]
        )
      ]
      spids: [539]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobNEqual
                      left: {(DQ (${ VSub_Name kube_addon_registry))}
                      right: {(DQ (gcr.io/google_containers))}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Pipeline
              children: [
                (C {(find)} {(/srv/salt-new)} {(-name)} 
                  {(EscapedLiteralPart token:<Lit_EscapedChar '\\*'>) (.yaml)} {(-or)} {(-name)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\*'>) (.yaml.in)}
                )
                (C {(xargs)} {(sed)} {(-ri)} 
                  {
                    (DQ ('s@(image:') (Lit_Other '\\') ('s.*)gcr.io/google_containers@') 
                      (Lit_Other '\\') (1) (${ VSub_Name kube_addon_registry) ('@')
                    )
                  }
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(find)} {(/srv/salt-new)} {(-name)} 
                  {(EscapedLiteralPart token:<Lit_EscapedChar '\\*'>) (.manifest)} {(-or)} {(-name)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\*'>) (.json)}
                )
                (C {(xargs)} {(sed)} {(-ri)} 
                  {
                    (DQ ('s@(image') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (':') 
                      (Lit_Other '\\') ('s+') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (')gcr.io/google_containers@') 
                      (Lit_Other '\\') (1) (${ VSub_Name kube_addon_registry) ('@')
                    )
                  }
                )
              ]
              negated: F
            )
          ]
          spids: [16777215 571]
        )
      ]
      spids: [16777215 659]
    )
    (C {(echo)} {(DQ ('+++ Swapping in new configs'))})
    (ForEach
      iter_name: dir
      iter_words: [
        {
          (DQ 
            (BracedVarSub
              token: <VSub_Name SALTDIRS>
              bracket_op: (WholeArray op_id:Lit_At)
              spids: [675 680]
            )
          )
        }
      ]
      do_arg_iter: F
      body: 
        (DoGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_d child:{(DQ (/srv/) ($ VSub_Name '$dir'))})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(rm)} {(-rf)} {(DQ (/srv/) ($ VSub_Name '$dir'))})]
                  spids: [16777215 701]
                )
              ]
              spids: [16777215 714]
            )
            (C {(mv)} {(-v)} {(DQ (/srv/salt-new/) ($ VSub_Name '$dir'))} 
              {(DQ (/srv/) ($ VSub_Name '$dir'))}
            )
          ]
          spids: [684 731]
        )
      spids: [673 682]
    )
    (C {(rm)} {(-rf)} {(/srv/salt-new)})
  ]
)