(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:is_push)
          op: assign_op.Equal
          rhs: {($ Id.VSub_At '$@')}
          spids: [66]
        )
      ]
    )
    (command.ShFunction
      name: ensure-basic-networking
      body: 
        (command.BraceGroup
          children: [
            (command.WhileUntil
              keyword: (Token id:Id.KW_Until val:until span_id:91)
              cond: [
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [{(getent)} {(hosts)} {(metadata.google.internal)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_AndGreat val:'&>' span_id:99)
                          fd: -1
                          arg_word: {(/dev/null)}
                        )
                      ]
                    )
                  terminator: (Token id:Id.Op_Semi val:';' span_id:101)
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (C {(echo)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: 
'Waiting for functional DNS (trying to resolve metadata.google.internal)...'
                            span_id: 109
                          )
                        )
                      }
                    )
                    (C {(sleep)} {(3)})
                  ]
                )
            )
            (command.WhileUntil
              keyword: (Token id:Id.KW_Until val:until span_id:121)
              cond: [
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [
                        {(getent)}
                        {(hosts)}
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:127)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.AndOr
                                    ops: [Id.Op_DPipe]
                                    children: [(C {(hostname)} {(-f)}) (C {(echo)} {(_error_)})]
                                  )
                                ]
                              )
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_AndGreat val:'&>' span_id:139)
                          fd: -1
                          arg_word: {(/dev/null)}
                        )
                      ]
                    )
                  terminator: (Token id:Id.Op_Semi val:';' span_id:141)
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (C {(echo)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: 'Waiting for functional DNS (trying to resolve my own FQDN)...'
                            span_id: 149
                          )
                        )
                      }
                    )
                    (C {(sleep)} {(3)})
                  ]
                )
            )
            (command.WhileUntil
              keyword: (Token id:Id.KW_Until val:until span_id:161)
              cond: [
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [
                        {(getent)}
                        {(hosts)}
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:167)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.AndOr
                                    ops: [Id.Op_DPipe]
                                    children: [(C {(hostname)} {(-i)}) (C {(echo)} {(_error_)})]
                                  )
                                ]
                              )
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_AndGreat val:'&>' span_id:179)
                          fd: -1
                          arg_word: {(/dev/null)}
                        )
                      ]
                    )
                  terminator: (Token id:Id.Op_Semi val:';' span_id:181)
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (C {(echo)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: 'Waiting for functional DNS (trying to resolve my own IP)...'
                            span_id: 189
                          )
                        )
                      }
                    )
                    (C {(sleep)} {(3)})
                  ]
                )
            )
            (C {(echo)} 
              {
                (DQ ('Networking functional on ') 
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:206)
                    command_list: (command.CommandList children:[(C {(hostname)})])
                  ) (' (') 
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:210)
                    command_list: (command.CommandList children:[(C {(hostname)} {(-i)})])
                  ) (')')
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: ensure-packages
      body: (command.BraceGroup children:[(C {(Id.Lit_Other ':')})])
    )
    (command.ShFunction
      name: create-node-pki
      body: 
        (command.BraceGroup
          children: [
            (C {(echo)} {(DQ ('Creating node pki files'))})
            (C {(local)} {(-r)} {(Id.Lit_VarLike 'pki_dir=') (DQ (/etc/kubernetes/pki))})
            (C {(mkdir)} {(-p)} {(DQ (${ Id.VSub_Name pki_dir))})
            (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:CA_CERT_BUNDLE span_id:281)
                                      suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                    )
                                  )
                                }
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:287)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CA_CERT_BUNDLE)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name CA_CERT))}
                          spids: [292]
                        )
                      ]
                    )
                  ]
                  spids: [273 289]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CA_CERT_BUNDLE_PATH)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name pki_dir) (/ca-certificates.crt))}
                  spids: [304]
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ (${ Id.VSub_Name CA_CERT_BUNDLE))})
                (command.Simple
                  words: [{(base64)} {(--decode)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:327)
                      fd: -1
                      arg_word: {(DQ (${ Id.VSub_Name CA_CERT_BUNDLE_PATH))}
                    )
                  ]
                )
              ]
              negated: F
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.LogicalAnd
                              left: 
                                (bool_expr.LogicalNot
                                  child: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_z
                                      child: 
                                        {
                                          (DQ 
                                            (braced_var_sub
                                              token: 
                                                (Token
                                                  id: Id.VSub_Name
                                                  val: KUBELET_CERT
                                                  span_id: 347
                                                )
                                              suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                            )
                                          )
                                        }
                                    )
                                )
                              right: 
                                (bool_expr.LogicalNot
                                  child: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_z
                                      child: 
                                        {
                                          (DQ 
                                            (braced_var_sub
                                              token: 
                                                (Token
                                                  id: Id.VSub_Name
                                                  val: KUBELET_KEY
                                                  span_id: 360
                                                )
                                              suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                            )
                                          )
                                        }
                                    )
                                )
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:366)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:KUBELET_CERT_PATH)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name pki_dir) (/kubelet.crt))}
                          spids: [371]
                        )
                      ]
                    )
                    (command.Pipeline
                      children: [
                        (C {(echo)} {(DQ (${ Id.VSub_Name KUBELET_CERT))})
                        (command.Simple
                          words: [{(base64)} {(--decode)}]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'>' span_id:394)
                              fd: -1
                              arg_word: {(DQ (${ Id.VSub_Name KUBELET_CERT_PATH))}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:KUBELET_KEY_PATH)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name pki_dir) (/kubelet.key))}
                          spids: [404]
                        )
                      ]
                    )
                    (command.Pipeline
                      children: [
                        (C {(echo)} {(DQ (${ Id.VSub_Name KUBELET_KEY))})
                        (command.Simple
                          words: [{(base64)} {(--decode)}]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'>' span_id:427)
                              fd: -1
                              arg_word: {(DQ (${ Id.VSub_Name KUBELET_KEY_PATH))}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                  ]
                  spids: [337 368]
                )
              ]
            )
            (C {(ln)} {(-sf)} {(DQ (${ Id.VSub_Name CA_CERT_BUNDLE_PATH))} {(/etc/kubernetes/ca.crt)})
          ]
        )
    )
    (command.ShFunction
      name: ensure-local-disks
      body: 
        (command.BraceGroup
          children: [
            (command.ForEach
              iter_name: ssd
              iter_words: [{(/dev/disk/by-id/google-local-ssd-) (Id.Lit_Star '*')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(-e)} {(DQ ($ Id.VSub_DollarName '$ssd'))} 
                                  {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:497)
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:ssdnum)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:503)
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.Pipeline
                                                children: [
                                                  (C {(echo)} {($ Id.VSub_DollarName '$ssd')})
                                                  (C {(sed)} {(-e)} 
                                                    {
                                                      (SQ 
                                                        (Token
                                                          id: Id.Lit_Chars
                                                          val: 
's/\\/dev\\/disk\\/by-id\\/google-local-ssd-\\([0-9]*\\)/\\1/'
                                                          span_id: 531
                                                        )
                                                      )
                                                    }
                                                  )
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                      )
                                    }
                                  spids: [502]
                                )
                              ]
                            )
                            (C {(echo)} 
                              {
                                (DQ ('Formatting and mounting local SSD ') 
                                  ($ Id.VSub_DollarName '$ssd') (' to /mnt/disks/ssd') ($ Id.VSub_DollarName '$ssdnum')
                                )
                              }
                            )
                            (C {(mkdir)} {(-p)} {(/mnt/disks/ssd) ($ Id.VSub_DollarName '$ssdnum')})
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (command.Simple
                                  words: [
                                    {(/usr/share/google/safe_format_and_mount)}
                                    {(-m)}
                                    {(DQ ('mkfs.ext4 -F'))}
                                    {(DQ (${ Id.VSub_Name ssd))}
                                    {(/mnt/disks/ssd) ($ Id.VSub_DollarName '$ssdnum')}
                                  ]
                                  redirects: [
                                    (redir.Redir
                                      op: (Token id:Id.Redir_AndGreat val:'&>' span_id:571)
                                      fd: -1
                                      arg_word: 
                                        {(/var/log/local-ssd-) ($ Id.VSub_DollarName '$ssdnum') 
                                          (-mount.log)
                                        }
                                    )
                                  ]
                                )
                                (command.BraceGroup
                                  children: [
                                    (command.Sentence
                                      child: 
                                        (C {(echo)} 
                                          {
                                            (DQ ('Local SSD ') ($ Id.VSub_DollarName '$ssdnum') 
                                              (' mount failed, review /var/log/local-ssd-') ($ Id.VSub_DollarName '$ssdnum') (-mount.log)
                                            )
                                          }
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:591)
                                    )
                                    (command.Sentence
                                      child: 
                                        (command.ControlFlow
                                          token: 
                                            (Token
                                              id: Id.ControlFlow_Return
                                              val: return
                                              span_id: 593
                                            )
                                          arg_word: {(1)}
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:596)
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [486 499]
                        )
                      ]
                      else_action: [(C {(echo)} {(DQ ('No local SSD disks found.'))})]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: config-ip-firewall
      body: 
        (command.BraceGroup
          children: [
            (C {(echo)} {(DQ ('Configuring IP firewall rules'))})
            (C {(iptables)} {(-N)} {(KUBE-METADATA-SERVER)})
            (C {(iptables)} {(-I)} {(FORWARD)} {(-p)} {(tcp)} {(-d)} {(169.254.169.254)} {(--dport)} {(80)} 
              {(-j)} {(KUBE-METADATA-SERVER)}
            )
            (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_FIREWALL_METADATA_SERVER
                                          span_id: 673
                                        )
                                      suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                    )
                                  )
                                }
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:679)
                    )
                  ]
                  action: [(C {(iptables)} {(-A)} {(KUBE-METADATA-SERVER)} {(-j)} {(DROP)})]
                  spids: [665 681]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: ensure-install-dir
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:INSTALL_DIR)
                  op: assign_op.Equal
                  rhs: {(DQ (/var/cache/kubernetes-install))}
                  spids: [709]
                )
              ]
            )
            (C {(mkdir)} {(-p)} {(${ Id.VSub_Name INSTALL_DIR)})
            (C {(cd)} {(${ Id.VSub_Name INSTALL_DIR)})
          ]
        )
    )
    (command.ShFunction
      name: salt-apiserver-timeout-grain
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:744)
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 754
                  stdin_parts: [("  minRequestTimeout: '") ($ Id.VSub_Number '$1') ("'\n")]
                )
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:747)
                  fd: -1
                  arg_word: {(/etc/salt/minion.d/grains.conf)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: set-broken-motd
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [
                {(echo)}
                {(-e)}
                {
                  (SQ 
                    (Token
                      id: Id.Lit_Chars
                      val: 
'\\nBroken (or in progress) Kubernetes node setup! Suggested first step:\\n  tail /var/log/startupscript.log\\n'
                      span_id: 772
                    )
                  )
                }
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:775)
                  fd: -1
                  arg_word: {(/etc/motd)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: reset-motd
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(-r)} 
              {(Id.Lit_VarLike 'version=') 
                (DQ 
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:801)
                    command_list: 
                      (command.CommandList
                        children: [
                          (command.Pipeline
                            children: [
                              (C {(/usr/local/bin/kubelet)} {(--version) (Id.Lit_Equals '=') (true)})
                              (C {(cut)} {(-f2)} {(-d)} {(DQ (' '))})
                            ]
                            negated: F
                          )
                        ]
                      )
                  )
                )
              }
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'gitref=') 
                (DQ 
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:835)
                    command_list: 
                      (command.CommandList
                        children: [
                          (command.Pipeline
                            children: [
                              (C {(echo)} {(DQ (${ Id.VSub_Name version))})
                              (C {(sed)} {(-r)} 
                                {
                                  (DQ ('s/(v[0-9]+') (Id.Lit_Other '\\') ('.[0-9]+') (Id.Lit_Other '\\') 
                                    ('.[0-9]+)(-[a-z]+') (Id.Lit_Other '\\') ('.[0-9]+)?.*/') (Id.Lit_Other '\\') (1) (Id.Lit_Other '\\') (2/g)
                                  )
                                }
                              )
                            ]
                            negated: F
                          )
                        ]
                      )
                  )
                )
              }
            )
            (C {(local)} {(Id.Lit_VarLike 'devel=') (DQ )})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobNEqual
                              left: {(DQ (${ Id.VSub_Name gitref))}
                              right: {(DQ (${ Id.VSub_Name version))}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:893)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:devel)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ('\n') 
                                (
'Note: This looks like a development version, which might not be present on GitHub.\n'
                                ) ("If it isn't, the closest tag is at:\n") ('  https://github.com/kubernetes/kubernetes/tree/') 
                                (${ Id.VSub_Name gitref) ('\n')
                              )
                            }
                          spids: [898]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:gitref)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: (Token id:Id.VSub_Name val:version span_id:914)
                                  suffix_op: 
                                    (suffix_op.PatSub
                                      pat: {('*+')}
                                      replace: (word.Empty)
                                      replace_mode: Id.Lit_Slash
                                    )
                                )
                              )
                            }
                          spids: [911]
                        )
                      ]
                    )
                  ]
                  spids: [874 895]
                )
              ]
            )
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:928)
                  fd: -1
                  arg_word: {(/etc/motd)}
                )
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:932)
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 968
                  stdin_parts: [
                    ('\n')
                    ('Welcome to Kubernetes ')
                    (${ Id.VSub_Name version)
                    ('!\n')
                    ('\n')
                    ('You can find documentation for Kubernetes at:\n')
                    ('  http://docs.kubernetes.io/\n')
                    ('\n')
                    ('The source for this release can be found at:\n')
                    ('  /usr/local/share/doc/kubernetes/kubernetes-src.tar.gz\n')
                    ('Or you can download it at:\n')
                    ('  https://storage.googleapis.com/kubernetes-release/release/')
                    (${ Id.VSub_Name version)
                    ('/kubernetes-src.tar.gz\n')
                    ('\n')
                    ('It is based on the Kubernetes source at:\n')
                    ('  https://github.com/kubernetes/kubernetes/tree/')
                    (${ Id.VSub_Name gitref)
                    ('\n')
                    (${ Id.VSub_Name devel)
                    ('\n')
                    ('For Kubernetes copyright and licensing information, see:\n')
                    ('  /usr/local/share/doc/kubernetes/LICENSES\n')
                    ('\n')
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: curl-metadata
      body: 
        (command.BraceGroup
          children: [
            (C {(curl)} {(--fail)} {(--retry)} {(5)} {(--silent)} {(-H)} 
              {(SQ (Token id:Id.Lit_Chars val:'Metadata-Flavor: Google' span_id:994))} {(DQ ('http://metadata/computeMetadata/v1/instance/attributes/') (${ Id.VSub_Number 1))}
            )
          ]
        )
    )
    (command.ShFunction
      name: set-kube-env
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'kube_env_yaml=') (DQ (${ Id.VSub_Name INSTALL_DIR) (/kube_env.yaml))}
            )
            (command.WhileUntil
              keyword: (Token id:Id.KW_Until val:until span_id:1028)
              cond: [
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [{(curl-metadata)} {(kube-env)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:1034)
                          fd: -1
                          arg_word: {(DQ (${ Id.VSub_Name kube_env_yaml))}
                        )
                      ]
                    )
                  terminator: (Token id:Id.Op_Semi val:';' span_id:1041)
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (C {(echo)} 
                      {(SQ (Token id:Id.Lit_Chars val:'Waiting for kube-env...' span_id:1049))}
                    )
                    (C {(sleep)} {(3)})
                  ]
                )
            )
            (C {(eval)} 
              {
                (DQ 
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1069)
                    command_list: 
                      (command.CommandList
                        children: [
                          (command.Simple
                            words: [
                              {(python)}
                              {(-c)}
                              {
                                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1075) 
                                  (Token
                                    id: Id.Lit_Chars
                                    val: 'import pipes,sys,yaml\n'
                                    span_id: 1076
                                  ) (Token id:Id.Lit_Chars val:'\n' span_id:1077) 
                                  (Token
                                    id: Id.Lit_Chars
                                    val: 'for k,v in yaml.load(sys.stdin).iteritems():\n'
                                    span_id: 1078
                                  ) 
                                  (Token
                                    id: Id.Lit_Chars
                                    val: 
'  print("""readonly {var}={value}""".format(var = k, value = pipes.quote(str(v))))\n'
                                    span_id: 1079
                                  ) (Token id:Id.Lit_Chars val:'  print("""export {var}""".format(var = k))\n' span_id:1080) 
                                  (Token
                                    id: Id.Lit_Chars
                                    val: '  '
                                    span_id: 1081
                                  )
                                )
                              }
                            ]
                            redirects: [
                              (redir.Redir
                                op: (Token id:Id.Redir_Less val:'<' span_id:1084)
                                fd: -1
                                arg_word: {(DQ ) (DQ (${ Id.VSub_Name kube_env_yaml)) (DQ )}
                              )
                            ]
                          )
                        ]
                      )
                  )
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: remove-docker-artifacts
      body: 
        (command.BraceGroup
          children: [
            (C {(echo)} {(DQ ('== Deleting docker0 =='))})
            (C {(apt-get-install)} {(bridge-utils)})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [(C {(iptables)} {(-t)} {(nat)} {(-F)}) (C {(true)})]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [(C {(ifconfig)} {(docker0)} {(down)}) (C {(true)})]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [(C {(brctl)} {(delbr)} {(docker0)}) (C {(true)})]
            )
            (C {(echo)} {(DQ ('== Finished deleting docker0 =='))})
          ]
        )
    )
    (command.ShFunction
      name: download-or-bust
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(-r)} {(Id.Lit_VarLike 'hash=') (DQ ($ Id.VSub_Number '$1'))})
            (C {(shift)} {(1)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:urls)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: (Token id:Id.Op_LParen val:'(' span_id:1207)
                        words: [{($ Id.VSub_Star '$*')}]
                      )
                    }
                  spids: [1206]
                )
              ]
            )
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:1214)
              cond: [
                (command.Sentence
                  child: (C {(true)})
                  terminator: (Token id:Id.Op_Semi val:';' span_id:1217)
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.ForEach
                      iter_name: url
                      iter_words: [
                        {
                          (DQ 
                            (braced_var_sub
                              token: (Token id:Id.VSub_Name val:urls span_id:1230)
                              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                            )
                          )
                        }
                      ]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (C {(local)} 
                              {(Id.Lit_VarLike 'file=') 
                                (DQ 
                                  (braced_var_sub
                                    token: (Token id:Id.VSub_Name val:url span_id:1246)
                                    suffix_op: 
                                      (suffix_op.Unary
                                        op_id: Id.VOp1_DPound
                                        arg_word: {('*') (Id.Lit_Slash /)}
                                      )
                                  )
                                )
                              }
                            )
                            (C {(rm)} {(-f)} {(DQ (${ Id.VSub_Name file))})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.Pipeline
                                          children: [
                                            (C {(curl)} {(-f)} {(--ipv4)} {(-Lo)} 
                                              {(DQ (${ Id.VSub_Name file))} {(--connect-timeout)} {(20)} {(--max-time)} {(300)} {(--retry)} {(6)} {(--retry-delay)} {(10)} 
                                              {(DQ (${ Id.VSub_Name url))}
                                            )
                                          ]
                                          negated: T
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:1304)
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} 
                                      {
                                        (DQ ('== Failed to download ') (${ Id.VSub_Name url) 
                                          ('. Retrying. ==')
                                        )
                                      }
                                    )
                                  ]
                                  spids: [1265 1306]
                                )
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.AndOr
                                          ops: [Id.Op_DAmp]
                                          children: [
                                            (command.DBracket
                                              expr: 
                                                (bool_expr.Unary
                                                  op_id: Id.BoolUnary_n
                                                  child: {(DQ (${ Id.VSub_Name hash))}
                                                )
                                            )
                                            (command.Pipeline
                                              children: [
                                                (C {(validate-hash)} {(DQ (${ Id.VSub_Name file))} 
                                                  {(DQ (${ Id.VSub_Name hash))}
                                                )
                                              ]
                                              negated: T
                                            )
                                          ]
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:1351)
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} 
                                      {
                                        (DQ ('== Hash validation of ') (${ Id.VSub_Name url) 
                                          (' failed. Retrying. ==')
                                        )
                                      }
                                    )
                                  ]
                                  spids: [1320 1353]
                                )
                              ]
                              else_action: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (command.Sentence
                                          child: 
                                            (command.DBracket
                                              expr: 
                                                (bool_expr.Unary
                                                  op_id: Id.BoolUnary_n
                                                  child: {(DQ (${ Id.VSub_Name hash))}
                                                )
                                            )
                                          terminator: (Token id:Id.Op_Semi val:';' span_id:1383)
                                        )
                                      ]
                                      action: [
                                        (C {(echo)} 
                                          {
                                            (DQ ('== Downloaded ') (${ Id.VSub_Name url) (' (SHA1 = ') 
                                              (${ Id.VSub_Name hash) (') ==')
                                            )
                                          }
                                        )
                                      ]
                                      spids: [1370 1385]
                                    )
                                  ]
                                  else_action: [
                                    (C {(echo)} {(DQ ('== Downloaded ') (${ Id.VSub_Name url) (' =='))})
                                  ]
                                )
                                (command.ControlFlow
                                  token: (Token id:Id.ControlFlow_Return val:return span_id:1420)
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: validate-hash
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(-r)} {(Id.Lit_VarLike 'file=') (DQ ($ Id.VSub_Number '$1'))})
            (C {(local)} {(-r)} {(Id.Lit_VarLike 'expected=') (DQ ($ Id.VSub_Number '$2'))})
            (C {(local)} {(actual)})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:actual)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1468)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Pipeline
                                    children: [
                                      (C {(sha1sum)} {(${ Id.VSub_Name file)})
                                      (C {(awk)} 
                                        {(SQ (Token id:Id.Lit_Chars val:'{ print $1 }' span_id:1480))}
                                      )
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                          )
                        }
                      spids: [1467]
                    )
                  ]
                )
                (C {(true)})
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobNEqual
                              left: {(DQ (${ Id.VSub_Name actual))}
                              right: {(DQ (${ Id.VSub_Name expected))}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1508)
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('== ') (${ Id.VSub_Name file) (' corrupted, sha1 ') 
                          (${ Id.VSub_Name actual) (" doesn't match expected ") (${ Id.VSub_Name expected) (' ==')
                        )
                      }
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:1532)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [1489 1510]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: apt-get-install
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(-r)} 
              {(Id.Lit_VarLike 'packages=') 
                (sh_array_literal
                  left: (Token id:Id.Op_LParen val:'(' span_id:1554)
                  words: [{($ Id.VSub_At '$@')}]
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:installed)
                  op: assign_op.Equal
                  rhs: {(true)}
                  spids: [1561]
                )
              ]
            )
            (command.ForEach
              iter_name: package
              iter_words: [
                {
                  (DQ 
                    (braced_var_sub
                      token: (Token id:Id.VSub_Name val:packages span_id:1573)
                      bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                    )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.Pipeline
                                  children: [
                                    (command.Simple
                                      words: [{(dpkg)} {(-s)} {(DQ (${ Id.VSub_Name package))}]
                                      redirects: [
                                        (redir.Redir
                                          op: (Token id:Id.Redir_AndGreat val:'&>' span_id:1598)
                                          fd: -1
                                          arg_word: {(/dev/null)}
                                        )
                                      ]
                                    )
                                  ]
                                  negated: T
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:1600)
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:installed)
                                  op: assign_op.Equal
                                  rhs: {(false)}
                                  spids: [1605]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Break val:break span_id:1609)
                            )
                          ]
                          spids: [1584 1602]
                        )
                      ]
                    )
                  ]
                )
            )
            (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 installed))}
                              right: {(DQ (true))}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1635)
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('== ') 
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:packages span_id:1645)
                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          ) (' already installed, skipped apt-get install ') 
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:packages span_id:1652)
                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          ) (' ==')
                        )
                      }
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:1661)
                    )
                  ]
                  spids: [1618 1637]
                )
              ]
            )
            (C {(apt-get-update)})
            (command.WhileUntil
              keyword: (Token id:Id.KW_Until val:until span_id:1676)
              cond: [
                (command.Sentence
                  child: 
                    (C {(apt-get)} {(-q)} {(-y)} {(-o)} 
                      {(DPkg) (Id.Lit_Other ':') (Id.Lit_Other ':') (Options) (Id.Lit_Other ':') 
                        (Id.Lit_Other ':') (Id.Lit_Equals '=') (--force-confold)
                      } {(-o)} 
                      {(DPkg) (Id.Lit_Other ':') (Id.Lit_Other ':') (Options) (Id.Lit_Other ':') 
                        (Id.Lit_Other ':') (Id.Lit_Equals '=') (--force-confdef)
                      } {(install)} {($ Id.VSub_At '$@')}
                    )
                  terminator: (Token id:Id.Op_Semi val:';' span_id:1709)
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (C {(echo)} 
                      {(DQ ('== install of packages ') ($ Id.VSub_At '$@') (' failed, retrying =='))}
                    )
                    (C {(sleep)} {(5)})
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: apt-get-update
      body: 
        (command.BraceGroup
          children: [
            (C {(echo)} {(DQ ('== Refreshing package database =='))})
            (command.WhileUntil
              keyword: (Token id:Id.KW_Until val:until span_id:1747)
              cond: [
                (command.Sentence
                  child: (C {(apt-get)} {(update)})
                  terminator: (Token id:Id.Op_Semi val:';' span_id:1752)
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (C {(echo)} {(DQ ('== apt-get update failed, retrying =='))})
                    (C {(sleep)} {(5)})
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: restart-updated-services
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobNEqual
                              left: 
                                {
                                  (DQ 
                                    (braced_var_sub
                                      token: 
                                        (Token
                                          id: Id.VSub_Name
                                          val: AUTO_RESTART_SERVICES
                                          span_id: 1797
                                        )
                                      suffix_op: 
                                        (suffix_op.Unary
                                          op_id: Id.VTest_ColonHyphen
                                          arg_word: {(true)}
                                        )
                                    )
                                  )
                                }
                              right: {(DQ (true))}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1810)
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('Auto restart of services prevented by AUTO_RESTART_SERVICES=') 
                          (${ Id.VSub_Name AUTO_RESTART_SERVICES)
                        )
                      }
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:1825)
                    )
                  ]
                  spids: [1791 1812]
                )
              ]
            )
            (C {(echo)} {(DQ ('Restarting services with updated libraries (needrestart -r a)'))})
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ )})
                (command.Simple
                  words: [{(needrestart)} {(-r)} {(a)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1859)
                      fd: 2
                      arg_word: {(1)}
                    )
                  ]
                )
                (C {(tee)} {(/dev/null)})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: reboot-if-required
      body: 
        (command.BraceGroup
          children: [
            (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 (/var/run/reboot-required))}
                                )
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1894)
                    )
                  ]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:1899)
                    )
                  ]
                  spids: [1881 1896]
                )
              ]
            )
            (C {(echo)} {(DQ ('Reboot is required (/var/run/reboot-required detected)'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_e
                              child: {(DQ (/var/run/reboot-required.pkgs))}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1924)
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Packages that triggered reboot:'))})
                    (C {(cat)} {(/var/run/reboot-required.pkgs)})
                  ]
                  spids: [1913 1926]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobNEqual
                              left: 
                                {
                                  (DQ 
                                    (braced_var_sub
                                      token: (Token id:Id.VSub_Name val:AUTO_REBOOT span_id:1955)
                                      suffix_op: 
                                        (suffix_op.Unary
                                          op_id: Id.VTest_ColonHyphen
                                          arg_word: {(true)}
                                        )
                                    )
                                  )
                                }
                              right: {(DQ (true))}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1968)
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {(DQ ('Reboot prevented by AUTO_REBOOT=') (${ Id.VSub_Name AUTO_REBOOT))}
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:1983)
                    )
                  ]
                  spids: [1949 1970]
                )
              ]
            )
            (C {(rm)} {(-f)} {(/var/run/reboot-required)})
            (C {(rm)} {(-f)} {(/var/run/reboot-required.pkgs)})
            (C {(echo)} {(DQ ('Triggering reboot'))})
            (C {(init)} {(6)})
          ]
        )
    )
    (command.ShFunction
      name: auto-upgrade
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobNEqual
                              left: 
                                {
                                  (DQ 
                                    (braced_var_sub
                                      token: (Token id:Id.VSub_Name val:AUTO_UPGRADE span_id:2038)
                                      suffix_op: 
                                        (suffix_op.Unary
                                          op_id: Id.VTest_ColonHyphen
                                          arg_word: {(false)}
                                        )
                                    )
                                  )
                                }
                              right: {(DQ (true))}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2051)
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ("AUTO_UPGRADE not set to true; won't auto-upgrade"))})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:2063)
                    )
                  ]
                  spids: [2032 2053]
                )
              ]
            )
            (C {(apt-get-install)} {(unattended-upgrades)} {(needrestart)})
            (C {(unattended-upgrade)} {(--debug)})
            (C {(reboot-if-required)})
            (C {(restart-updated-services)})
          ]
        )
    )
    (command.ShFunction
      name: install-salt
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{(dpkg)} {(-s)} {(salt-minion)}]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_AndGreat val:'&>' span_id:2116)
                              fd: -1
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2118)
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('== SaltStack already installed, skipping install step =='))})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:2130)
                    )
                  ]
                  spids: [2108 2120]
                )
              ]
            )
            (C {(echo)} {(DQ ('== Refreshing package database =='))})
            (command.WhileUntil
              keyword: (Token id:Id.KW_Until val:until span_id:2144)
              cond: [
                (command.Sentence
                  child: (C {(apt-get)} {(update)})
                  terminator: (Token id:Id.Op_Semi val:';' span_id:2149)
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (C {(echo)} {(DQ ('== apt-get update failed, retrying =='))})
                    (C {(sleep)} {(5)})
                  ]
                )
            )
            (C {(mkdir)} {(-p)} {(/var/cache/salt-install)})
            (C {(cd)} {(/var/cache/salt-install)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DEBS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: (Token id:Id.Op_LParen val:'(' span_id:2184)
                        words: [
                          {(libzmq3_3.2.3) (Id.Lit_Other '+') (dfsg-1) (Id.Lit_TildeLike '~bpo70') 
                            (Id.Lit_TildeLike '~dst') (Id.Lit_Other '+') (1_amd64.deb)
                          }
                          {(python-zmq_13.1.0-1) (Id.Lit_TildeLike '~bpo70') (Id.Lit_TildeLike '~dst') 
                            (Id.Lit_Other '+') (1_amd64.deb)
                          }
                          {(salt-common_2014.1.13) (Id.Lit_Other '+') (ds-1) 
                            (Id.Lit_TildeLike '~bpo70') (Id.Lit_Other '+') (1_all.deb)
                          }
                          {(salt-minion_2014.1.13) (Id.Lit_Other '+') (ds-1) 
                            (Id.Lit_TildeLike '~bpo70') (Id.Lit_Other '+') (1_all.deb)
                          }
                        ]
                      )
                    }
                  spids: [2183]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:URL_BASE)
                  op: assign_op.Equal
                  rhs: {(DQ ('https://storage.googleapis.com/kubernetes-release/salt'))}
                  spids: [2222]
                )
              ]
            )
            (command.ForEach
              iter_name: deb
              iter_words: [
                {
                  (DQ 
                    (braced_var_sub
                      token: (Token id:Id.VSub_Name val:DEBS span_id:2237)
                      bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                    )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-e)} 
                                  {(DQ (${ Id.VSub_Name deb))} {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:2263)
                            )
                          ]
                          action: [
                            (C {(download-or-bust)} {(DQ )} 
                              {(DQ (${ Id.VSub_Name URL_BASE) (/) (${ Id.VSub_Name deb))}
                            )
                          ]
                          spids: [2248 2265]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:2317)
                  fd: -1
                  arg_word: {(/usr/sbin/policy-rc.d)}
                )
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:2321)
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 2332
                  stdin_parts: [
                    ('#!/bin/sh\n')
                    ('echo ')
                    (Id.Right_DoubleQuote '"')
                    ('Salt shall not start.')
                    (Id.Right_DoubleQuote '"')
                    (' >&2\n')
                    ('exit 101\n')
                  ]
                )
              ]
            )
            (C {(chmod)} {(0755)} {(/usr/sbin/policy-rc.d)})
            (command.ForEach
              iter_name: deb
              iter_words: [
                {
                  (DQ 
                    (braced_var_sub
                      token: (Token id:Id.VSub_Name val:DEBS span_id:2350)
                      bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                    )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(echo)} 
                      {
                        (DQ ('== Installing ') (${ Id.VSub_Name deb) 
                          (', ignore dependency complaints (will fix later) ==')
                        )
                      }
                    )
                    (C {(dpkg)} {(--skip-same-version)} {(--force-depends)} {(-i)} 
                      {(DQ (${ Id.VSub_Name deb))}
                    )
                  ]
                )
            )
            (C {(echo)} {(DQ ('== Installing unmet dependencies =='))})
            (command.WhileUntil
              keyword: (Token id:Id.KW_Until val:until span_id:2402)
              cond: [
                (command.Sentence
                  child: (C {(apt-get)} {(install)} {(-f)} {(-y)})
                  terminator: (Token id:Id.Op_Semi val:';' span_id:2411)
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (C {(echo)} {(DQ ('== apt-get install failed, retrying =='))})
                    (C {(sleep)} {(5)})
                  ]
                )
            )
            (C {(rm)} {(/usr/sbin/policy-rc.d)})
            (C {(echo)} {(DQ ('== Finished installing Salt =='))})
          ]
        )
    )
    (command.ShFunction
      name: stop-salt-minion
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_e
                              child: {(/etc/init/salt-minion.override)}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2470)
                    )
                  ]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:2479)
                    )
                  ]
                  spids: [2461 2472]
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(manual)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:2494)
                  fd: -1
                  arg_word: {(/etc/init/salt-minion.override)}
                )
              ]
            )
            (C {(update-rc.d)} {(salt-minion)} {(disable)})
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:2507)
              cond: [
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [{(service)} {(salt-minion)} {(status)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:2515)
                          fd: -1
                          arg_word: {(/dev/null)}
                        )
                      ]
                    )
                  terminator: (Token id:Id.Op_Semi val:';' span_id:2517)
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (C {(echo)} {(DQ ('salt-minion found running, stopping'))})
                    (C {(service)} {(salt-minion)} {(stop)})
                    (C {(sleep)} {(1)})
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: find-master-pd
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:MASTER_PD_DEVICE)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [2556]
                )
              ]
            )
            (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: {(/dev/disk/by-id/google-master-pd)}
                                )
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2572)
                    )
                  ]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:2577)
                    )
                  ]
                  spids: [2561 2574]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:device_info)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2584)
                        command_list: 
                          (command.CommandList
                            children: [(C {(ls)} {(-l)} {(/dev/disk/by-id/google-master-pd)})]
                          )
                      )
                    }
                  spids: [2583]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:relative_path)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:device_info span_id:2595)
                        suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{('* ')})
                      )
                    }
                  spids: [2593]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:MASTER_PD_DEVICE)
                  op: assign_op.Equal
                  rhs: {(DQ (/dev/disk/by-id/) (${ Id.VSub_Name relative_path))}
                  spids: [2601]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: create-salt-pillar
      body: 
        (command.BraceGroup
          children: [
            (C {(mkdir)} {(-p)} {(/srv/salt-overlay/pillar)})
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:2647)
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 3503
                  stdin_parts: [
                    ("instance_prefix: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2654)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$INSTANCE_PREFIX'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("node_tags: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2673)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$NODE_TAGS'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("node_instance_prefix: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2692)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$NODE_INSTANCE_PREFIX'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("cluster_cidr: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2711)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$CLUSTER_IP_RANGE'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("allocate_node_cidrs: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2730)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ALLOCATE_NODE_CIDRS'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("non_masquerade_cidr: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2749)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$NON_MASQUERADE_CIDR'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("service_cluster_ip_range: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2768)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$SERVICE_CLUSTER_IP_RANGE'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("enable_cluster_monitoring: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2787)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ENABLE_CLUSTER_MONITORING'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("enable_cluster_logging: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2806)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ENABLE_CLUSTER_LOGGING'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("enable_cluster_ui: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2825)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ENABLE_CLUSTER_UI'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("enable_node_problem_detector: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2844)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} 
                                  {(DQ ($ Id.VSub_DollarName '$ENABLE_NODE_PROBLEM_DETECTOR'))}
                                )
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("enable_l7_loadbalancing: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2863)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ENABLE_L7_LOADBALANCING'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("enable_node_logging: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2882)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ENABLE_NODE_LOGGING'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("enable_metadata_proxy: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2901)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ENABLE_METADATA_PROXY'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("enable_metrics_server: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2920)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ENABLE_METRICS_SERVER'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("enable_rescheduler: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2939)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ENABLE_RESCHEDULER'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("logging_destination: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2958)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$LOGGING_DESTINATION'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("elasticsearch_replicas: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2977)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} 
                                  {(DQ ($ Id.VSub_DollarName '$ELASTICSEARCH_LOGGING_REPLICAS'))}
                                )
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("enable_cluster_dns: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2996)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ENABLE_CLUSTER_DNS'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("enable_cluster_registry: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3015)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ENABLE_CLUSTER_REGISTRY'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("dns_server: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3034)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$DNS_SERVER_IP'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("dns_domain: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3053)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$DNS_DOMAIN'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("enable_dns_horizontal_autoscaler: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3072)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} 
                                  {(DQ ($ Id.VSub_DollarName '$ENABLE_DNS_HORIZONTAL_AUTOSCALER'))}
                                )
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("admission_control: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3091)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ADMISSION_CONTROL'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("network_provider: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3110)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$NETWORK_PROVIDER'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("prepull_e2e_images: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3129)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$PREPULL_E2E_IMAGES'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("hairpin_mode: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3148)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$HAIRPIN_MODE'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("softlockup_panic: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3167)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$SOFTLOCKUP_PANIC'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("opencontrail_tag: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3186)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$OPENCONTRAIL_TAG'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("opencontrail_kubernetes_tag: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3205)
                      command_list: 
                        (command.CommandList
                          children: [
                            (C {(echo)} {(DQ ($ Id.VSub_DollarName '$OPENCONTRAIL_KUBERNETES_TAG'))})
                          ]
                        )
                    )
                    ("'\n")
                    ("opencontrail_public_subnet: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3214)
                      command_list: 
                        (command.CommandList
                          children: [
                            (C {(echo)} {(DQ ($ Id.VSub_DollarName '$OPENCONTRAIL_PUBLIC_SUBNET'))})
                          ]
                        )
                    )
                    ("'\n")
                    ("network_policy_provider: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3223)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$NETWORK_POLICY_PROVIDER'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("enable_manifest_url: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3242)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: 
                                          (Token
                                            id: Id.VSub_Name
                                            val: ENABLE_MANIFEST_URL
                                            span_id: 3247
                                          )
                                        suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                      )
                                    )
                                  }
                                )
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("manifest_url: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3264)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:MANIFEST_URL span_id:3269)
                                        suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                      )
                                    )
                                  }
                                )
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("manifest_url_header: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3286)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: 
                                          (Token
                                            id: Id.VSub_Name
                                            val: MANIFEST_URL_HEADER
                                            span_id: 3291
                                          )
                                        suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                      )
                                    )
                                  }
                                )
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ('num_nodes: ')
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3308)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:NUM_NODES span_id:3313)
                                        suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                      )
                                    )
                                  }
                                )
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ('\n')
                    ("e2e_storage_test_environment: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3330)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} 
                                  {(DQ ($ Id.VSub_DollarName '$E2E_STORAGE_TEST_ENVIRONMENT'))}
                                )
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("kube_uid: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3349)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ (${ Id.VSub_Name KUBE_UID))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("initial_etcd_cluster: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3370)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: 
                                          (Token
                                            id: Id.VSub_Name
                                            val: INITIAL_ETCD_CLUSTER
                                            span_id: 3375
                                          )
                                        suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                      )
                                    )
                                  }
                                )
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("initial_etcd_cluster_state: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3392)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: 
                                          (Token
                                            id: Id.VSub_Name
                                            val: INITIAL_ETCD_CLUSTER_STATE
                                            span_id: 3397
                                          )
                                        suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                      )
                                    )
                                  }
                                )
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("ca_cert_bundle_path: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3414)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: 
                                          (Token
                                            id: Id.VSub_Name
                                            val: CA_CERT_BUNDLE_PATH
                                            span_id: 3419
                                          )
                                        suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                      )
                                    )
                                  }
                                )
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ('hostname: ')
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3436)
                      command_list: (command.CommandList children:[(C {(hostname)} {(-s)})])
                    )
                    ('\n')
                    ("enable_pod_priority: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3443)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: 
                                          (Token
                                            id: Id.VSub_Name
                                            val: ENABLE_POD_PRIORITY
                                            span_id: 3448
                                          )
                                        suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                      )
                                    )
                                  }
                                )
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("enable_default_storage_class: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3465)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} 
                                  {(DQ ($ Id.VSub_DollarName '$ENABLE_DEFAULT_STORAGE_CLASS'))}
                                )
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                    ("kube_proxy_daemonset: '")
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3484)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$KUBE_PROXY_DAEMONSET'))})
                                (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    ("'\n")
                  ]
                )
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:2650)
                  fd: -1
                  arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:STORAGE_BACKEND span_id:3513)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3519)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:3526)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 3552
                          stdin_parts: [
                            ("storage_backend: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3533)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ ($ Id.VSub_DollarName '$STORAGE_BACKEND'))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:3529)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [3505 3521]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:STORAGE_MEDIA_TYPE span_id:3565)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3571)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:3578)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 3604
                          stdin_parts: [
                            ("storage_media_type: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3585)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ ($ Id.VSub_DollarName '$STORAGE_MEDIA_TYPE'))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:3581)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [3557 3573]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: 
                                  (Token
                                    id: Id.VSub_Name
                                    val: KUBE_APISERVER_REQUEST_TIMEOUT_SEC
                                    span_id: 3617
                                  )
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3623)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:3630)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 3656
                          stdin_parts: [
                            ("kube_apiserver_request_timeout_sec: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3637)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} 
                                          {
                                            (DQ 
                                              ($ Id.VSub_DollarName 
'$KUBE_APISERVER_REQUEST_TIMEOUT_SEC'
                                              )
                                            )
                                          }
                                        )
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:3633)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [3609 3625]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (C {(Id.Lit_LBracket '[')} {(-n)} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: (Token id:Id.VSub_Name val:ADMISSION_CONTROL span_id:3669)
                                    suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                  )
                                )
                              } {(Id.Lit_RBracket ']')}
                            )
                            (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name ADMISSION_CONTROL)} 
                              {(Id.Lit_Equals '=') (Id.Lit_Equals '=')} {(Id.Lit_Star '*') (DQ (ImagePolicyWebhook)) (Id.Lit_Star '*')} {(Id.Lit_RBracket ']')}
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3694)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:3701)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 3709
                          stdin_parts: [
                            ('admission-control-config-file: /etc/admission_controller.config\n')
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:3704)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [3661 3696]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:KUBELET_PORT span_id:3722)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3728)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:3735)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 3761
                          stdin_parts: [
                            ("kubelet_port: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3742)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ ($ Id.VSub_DollarName '$KUBELET_PORT'))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:3738)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [3714 3730]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:ETCD_IMAGE span_id:3774)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3780)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:3787)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 3813
                          stdin_parts: [
                            ("etcd_docker_tag: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3794)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ETCD_IMAGE'))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:3790)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [3766 3782]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: 
                                  (Token
                                    id: Id.VSub_Name
                                    val: ETCD_DOCKER_REPOSITORY
                                    span_id: 3826
                                  )
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3832)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:3839)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 3865
                          stdin_parts: [
                            ("etcd_docker_repository: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3846)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} 
                                          {(DQ ($ Id.VSub_DollarName '$ETCD_DOCKER_REPOSITORY'))}
                                        )
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:3842)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [3818 3834]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:ETCD_VERSION span_id:3878)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3884)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:3891)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 3917
                          stdin_parts: [
                            ("etcd_version: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3898)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ETCD_VERSION'))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:3894)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [3870 3886]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.LogicalAnd
                              left: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: (Token id:Id.VSub_Name val:ETCD_CA_KEY span_id:3930)
                                          suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                        )
                                      )
                                    }
                                )
                              right: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_n
                                      child: 
                                        {
                                          (DQ 
                                            (braced_var_sub
                                              token: 
                                                (Token
                                                  id: Id.VSub_Name
                                                  val: ETCD_CA_CERT
                                                  span_id: 3941
                                                )
                                              suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                            )
                                          )
                                        }
                                    )
                                  right: 
                                    (bool_expr.LogicalAnd
                                      left: 
                                        (bool_expr.Unary
                                          op_id: Id.BoolUnary_n
                                          child: 
                                            {
                                              (DQ 
                                                (braced_var_sub
                                                  token: 
                                                    (Token
                                                      id: Id.VSub_Name
                                                      val: ETCD_PEER_KEY
                                                      span_id: 3952
                                                    )
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      op_id: Id.VTest_ColonHyphen
                                                      arg_word: (word.Empty)
                                                    )
                                                )
                                              )
                                            }
                                        )
                                      right: 
                                        (bool_expr.Unary
                                          op_id: Id.BoolUnary_n
                                          child: 
                                            {
                                              (DQ 
                                                (braced_var_sub
                                                  token: 
                                                    (Token
                                                      id: Id.VSub_Name
                                                      val: ETCD_PEER_CERT
                                                      span_id: 3963
                                                    )
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      op_id: Id.VTest_ColonHyphen
                                                      arg_word: (word.Empty)
                                                    )
                                                )
                                              )
                                            }
                                        )
                                    )
                                )
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3969)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:3976)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 3984
                          stdin_parts: [("etcd_over_ssl: 'true'\n")]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:3979)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [3922 3971]
                )
              ]
              else_action: [
                (command.Simple
                  words: [{(cat)}]
                  redirects: [
                    (redir.HereDoc
                      op: (Token id:Id.Redir_DLess val:'<<' span_id:3991)
                      fd: -1
                      here_begin: {(EOF)}
                      here_end_span_id: 3999
                      stdin_parts: [("etcd_over_ssl: 'false'\n")]
                    )
                    (redir.Redir
                      op: (Token id:Id.Redir_DGreat val:'>>' span_id:3994)
                      fd: -1
                      arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:ETCD_QUORUM_READ span_id:4012)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4018)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4025)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4053
                          stdin_parts: [
                            ("etcd_quorum_read: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4032)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ (${ Id.VSub_Name ETCD_QUORUM_READ))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4028)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4004 4020]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:APISERVER_TEST_ARGS span_id:4070)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4076)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4083)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4109
                          stdin_parts: [
                            ("apiserver_test_args: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4090)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ ($ Id.VSub_DollarName '$APISERVER_TEST_ARGS'))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4086)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4062 4078]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: 
                                  (Token
                                    id: Id.VSub_Name
                                    val: API_SERVER_TEST_LOG_LEVEL
                                    span_id: 4122
                                  )
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4128)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4135)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4161
                          stdin_parts: [
                            ("api_server_test_log_level: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4142)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} 
                                          {(DQ ($ Id.VSub_DollarName '$API_SERVER_TEST_LOG_LEVEL'))}
                                        )
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4138)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4114 4130]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:KUBELET_TEST_ARGS span_id:4174)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4180)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4187)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4213
                          stdin_parts: [
                            ("kubelet_test_args: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4194)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ ($ Id.VSub_DollarName '$KUBELET_TEST_ARGS'))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4190)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4166 4182]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: 
                                  (Token
                                    id: Id.VSub_Name
                                    val: KUBELET_TEST_LOG_LEVEL
                                    span_id: 4226
                                  )
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4232)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4239)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4265
                          stdin_parts: [
                            ("kubelet_test_log_level: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4246)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} 
                                          {(DQ ($ Id.VSub_DollarName '$KUBELET_TEST_LOG_LEVEL'))}
                                        )
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4242)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4218 4234]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:DOCKER_TEST_LOG_LEVEL span_id:4278)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4284)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4291)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4317
                          stdin_parts: [
                            ("docker_test_log_level: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4298)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} 
                                          {(DQ ($ Id.VSub_DollarName '$DOCKER_TEST_LOG_LEVEL'))}
                                        )
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4294)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4270 4286]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: 
                                  (Token
                                    id: Id.VSub_Name
                                    val: CONTROLLER_MANAGER_TEST_ARGS
                                    span_id: 4330
                                  )
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4336)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4343)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4369
                          stdin_parts: [
                            ("controller_manager_test_args: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4350)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} 
                                          {
                                            (DQ 
                                              ($ Id.VSub_DollarName '$CONTROLLER_MANAGER_TEST_ARGS')
                                            )
                                          }
                                        )
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4346)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4322 4338]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: 
                                  (Token
                                    id: Id.VSub_Name
                                    val: CONTROLLER_MANAGER_TEST_LOG_LEVEL
                                    span_id: 4382
                                  )
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4388)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4395)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4421
                          stdin_parts: [
                            ("controller_manager_test_log_level: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4402)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} 
                                          {
                                            (DQ 
                                              ($ Id.VSub_DollarName 
'$CONTROLLER_MANAGER_TEST_LOG_LEVEL'
                                              )
                                            )
                                          }
                                        )
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4398)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4374 4390]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:SCHEDULER_TEST_ARGS span_id:4434)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4440)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4447)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4473
                          stdin_parts: [
                            ("scheduler_test_args: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4454)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ ($ Id.VSub_DollarName '$SCHEDULER_TEST_ARGS'))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4450)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4426 4442]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: 
                                  (Token
                                    id: Id.VSub_Name
                                    val: SCHEDULER_TEST_LOG_LEVEL
                                    span_id: 4486
                                  )
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4492)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4499)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4525
                          stdin_parts: [
                            ("scheduler_test_log_level: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4506)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} 
                                          {(DQ ($ Id.VSub_DollarName '$SCHEDULER_TEST_LOG_LEVEL'))}
                                        )
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4502)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4478 4494]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:KUBEPROXY_TEST_ARGS span_id:4538)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4544)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4551)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4577
                          stdin_parts: [
                            ("kubeproxy_test_args: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4558)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ ($ Id.VSub_DollarName '$KUBEPROXY_TEST_ARGS'))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4554)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4530 4546]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: 
                                  (Token
                                    id: Id.VSub_Name
                                    val: KUBEPROXY_TEST_LOG_LEVEL
                                    span_id: 4590
                                  )
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4596)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4603)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4629
                          stdin_parts: [
                            ("kubeproxy_test_log_level: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4610)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} 
                                          {(DQ ($ Id.VSub_DollarName '$KUBEPROXY_TEST_LOG_LEVEL'))}
                                        )
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4606)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4582 4598]
                )
              ]
            )
            (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 ENABLE_CLUSTER_REGISTRY))}
                                  right: {(true)}
                                )
                              right: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: {(DQ (${ Id.VSub_Name CLUSTER_REGISTRY_DISK))}
                                )
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4663)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4670)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4720
                          stdin_parts: [
                            ('cluster_registry_disk_type: gce\n')
                            ('cluster_registry_disk_size: ')
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4678)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} 
                                          {
                                            (command_sub
                                              left_token: 
                                                (Token
                                                  id: Id.Left_DollarParen
                                                  val: '$('
                                                  span_id: 4681
                                                )
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (C {(convert-bytes-gce-kube)} 
                                                      {(${ Id.VSub_Name CLUSTER_REGISTRY_DISK_SIZE)}
                                                    )
                                                  ]
                                                )
                                            )
                                          }
                                        )
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ('\n')
                            ('cluster_registry_disk_name: ')
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4701)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(${ Id.VSub_Name CLUSTER_REGISTRY_DISK)})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ('\n')
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4673)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4638 4665]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: 
                                  (Token
                                    id: Id.VSub_Name
                                    val: TERMINATED_POD_GC_THRESHOLD
                                    span_id: 4733
                                  )
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4739)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4746)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4774
                          stdin_parts: [
                            ("terminated_pod_gc_threshold: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4753)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ (${ Id.VSub_Name TERMINATED_POD_GC_THRESHOLD))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4749)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4725 4741]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:ENABLE_CUSTOM_METRICS span_id:4787)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4793)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4800)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4828
                          stdin_parts: [
                            ("enable_custom_metrics: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4807)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ (${ Id.VSub_Name ENABLE_CUSTOM_METRICS))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4803)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4779 4795]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:NODE_LABELS span_id:4841)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4847)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4854)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4882
                          stdin_parts: [
                            ("node_labels: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4861)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ (${ Id.VSub_Name NODE_LABELS))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4857)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4833 4849]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:NODE_TAINTS span_id:4895)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4901)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4908)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4936
                          stdin_parts: [
                            ("node_taints: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4915)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ (${ Id.VSub_Name NODE_TAINTS))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4911)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4887 4903]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:EVICTION_HARD span_id:4949)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4955)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:4962)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 4990
                          stdin_parts: [
                            ("eviction_hard: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4969)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ (${ Id.VSub_Name EVICTION_HARD))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:4965)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4941 4957]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: 
                                {
                                  (DQ 
                                    (braced_var_sub
                                      token: 
                                        (Token
                                          id: Id.VSub_Name
                                          val: ENABLE_CLUSTER_AUTOSCALER
                                          span_id: 5001
                                        )
                                      suffix_op: 
                                        (suffix_op.Unary
                                          op_id: Id.VTest_ColonHyphen
                                          arg_word: {(false)}
                                        )
                                    )
                                  )
                                }
                              right: {(DQ (true))}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:5014)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:5021)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 5091
                          stdin_parts: [
                            ("enable_cluster_autoscaler: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:5028)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ (${ Id.VSub_Name ENABLE_CLUSTER_AUTOSCALER))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                            ("autoscaler_mig_config: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:5049)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ (${ Id.VSub_Name AUTOSCALER_MIG_CONFIG))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                            ("autoscaler_expander_config: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:5070)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ (${ Id.VSub_Name AUTOSCALER_EXPANDER_CONFIG))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:5024)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [4995 5016]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: 
                                  (Token
                                    id: Id.VSub_Name
                                    val: SCHEDULING_ALGORITHM_PROVIDER
                                    span_id: 5104
                                  )
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:5110)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:5117)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 5145
                          stdin_parts: [
                            ("scheduling_algorithm_provider: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:5124)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} 
                                          {(DQ (${ Id.VSub_Name SCHEDULING_ALGORITHM_PROVIDER))}
                                        )
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:5120)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [5096 5112]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:ENABLE_IP_ALIASES span_id:5158)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:5164)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:5171)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 5197
                          stdin_parts: [
                            ("enable_ip_aliases: '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:5178)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ENABLE_IP_ALIASES'))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:5174)
                          fd: -1
                          arg_word: {(/srv/salt-overlay/pillar/cluster-params.sls)}
                        )
                      ]
                    )
                  ]
                  spids: [5150 5166]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: convert-bytes-gce-kube
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(-r)} {(Id.Lit_VarLike 'storage_space=') ($ Id.VSub_Number '$1')})
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ (${ Id.VSub_Name storage_space))})
                (C {(sed)} {(-e)} 
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: 's/^\\([0-9]\\+\\)\\([A-Z]\\)\\?i\\?B$/\\1\\2/g'
                        span_id: 5263
                      )
                    )
                  } {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/\\([A-Z]\\)$/\\1i/' span_id:5269))}
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: create-salt-kubelet-auth
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(-r)} 
              {(Id.Lit_VarLike 'kubelet_kubeconfig_file=') 
                (DQ (/srv/salt-overlay/salt/kubelet/bootstrap-kubeconfig))
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-e)} 
                          {(DQ (${ Id.VSub_Name kubelet_kubeconfig_file))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:5325)
                    )
                  ]
                  action: [
                    (C {(mkdir)} {(-p)} {(/srv/salt-overlay/salt/kubelet)})
                    (command.Subshell
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Sentence
                              child: (C {(umask)} {(077)})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:5341)
                            )
                            (command.Simple
                              words: [{(cat)}]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Great val:'>' span_id:5346)
                                  fd: -1
                                  arg_word: {(DQ (${ Id.VSub_Name kubelet_kubeconfig_file))}
                                )
                                (redir.HereDoc
                                  op: (Token id:Id.Redir_DLess val:'<<' span_id:5354)
                                  fd: -1
                                  here_begin: {(EOF)}
                                  here_end_span_id: 5392
                                  stdin_parts: [
                                    ('apiVersion: v1\n')
                                    ('kind: Config\n')
                                    ('users:\n')
                                    ('- name: kubelet\n')
                                    ('  user:\n')
                                    ('    client-certificate: ')
                                    (${ Id.VSub_Name KUBELET_CERT_PATH)
                                    ('\n')
                                    ('    client-key: ')
                                    (${ Id.VSub_Name KUBELET_KEY_PATH)
                                    ('\n')
                                    ('clusters:\n')
                                    ('- name: local\n')
                                    ('  cluster:\n')
                                    ('    server: https://')
                                    (${ Id.VSub_Name KUBERNETES_MASTER_NAME)
                                    ('\n')
                                    ('    certificate-authority: ')
                                    (${ Id.VSub_Name CA_CERT_BUNDLE_PATH)
                                    ('\n')
                                    ('contexts:\n')
                                    ('- context:\n')
                                    ('    cluster: local\n')
                                    ('    user: kubelet\n')
                                    ('  name: service-account-context\n')
                                    ('current-context: service-account-context\n')
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [5310 5327]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: create-salt-kubeproxy-auth
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(-r)} 
              {(Id.Lit_VarLike 'kube_proxy_kubeconfig_file=') 
                (DQ (/srv/salt-overlay/salt/kube-proxy/kubeconfig))
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-e)} 
                          {(DQ (${ Id.VSub_Name kube_proxy_kubeconfig_file))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:5447)
                    )
                  ]
                  action: [
                    (C {(mkdir)} {(-p)} {(/srv/salt-overlay/salt/kube-proxy)})
                    (command.Subshell
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Sentence
                              child: (C {(umask)} {(077)})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:5463)
                            )
                            (command.Simple
                              words: [{(cat)}]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Great val:'>' span_id:5468)
                                  fd: -1
                                  arg_word: {(DQ (${ Id.VSub_Name kube_proxy_kubeconfig_file))}
                                )
                                (redir.HereDoc
                                  op: (Token id:Id.Redir_DLess val:'<<' span_id:5476)
                                  fd: -1
                                  here_begin: {(EOF)}
                                  here_end_span_id: 5504
                                  stdin_parts: [
                                    ('apiVersion: v1\n')
                                    ('kind: Config\n')
                                    ('users:\n')
                                    ('- name: kube-proxy\n')
                                    ('  user:\n')
                                    ('    token: ')
                                    (${ Id.VSub_Name KUBE_PROXY_TOKEN)
                                    ('\n')
                                    ('clusters:\n')
                                    ('- name: local\n')
                                    ('  cluster:\n')
                                    ('    certificate-authority-data: ')
                                    (${ Id.VSub_Name CA_CERT_BUNDLE)
                                    ('\n')
                                    ('contexts:\n')
                                    ('- context:\n')
                                    ('    cluster: local\n')
                                    ('    user: kube-proxy\n')
                                    ('  name: service-account-context\n')
                                    ('current-context: service-account-context\n')
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [5432 5449]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: split-commas
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {(echo)} {($ Id.VSub_Number '$1')})
                (C {(tr)} {(DQ (','))} {(DQ (Id.Lit_Other '\\') (n))})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: try-download-release
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(-r)} 
              {(Id.Lit_VarLike 'server_binary_tar_urls=') 
                (sh_array_literal
                  left: (Token id:Id.Op_LParen val:'(' span_id:5565)
                  words: [
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:5567)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(split-commas)} {(DQ (${ Id.VSub_Name SERVER_BINARY_TAR_URL))})
                            ]
                          )
                      )
                    }
                  ]
                )
              }
            )
            (C {(local)} {(-r)} 
              {(Id.Lit_VarLike 'server_binary_tar=') 
                (DQ 
                  (braced_var_sub
                    token: (Token id:Id.VSub_Name val:server_binary_tar_urls span_id:5587)
                    bracket_op: 
                      (bracket_op.ArrayIndex
                        expr: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)})
                      )
                    suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{('*') (Id.Lit_Slash /)})
                  )
                )
              }
            )
            (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: SERVER_BINARY_TAR_HASH
                                          span_id: 5606
                                        )
                                      suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                    )
                                  )
                                }
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:5612)
                    )
                  ]
                  action: [
                    (C {(local)} {(-r)} 
                      {(Id.Lit_VarLike 'server_binary_tar_hash=') 
                        (DQ (${ Id.VSub_Name SERVER_BINARY_TAR_HASH))
                      }
                    )
                  ]
                  spids: [5598 5614]
                )
              ]
              else_action: [
                (C {(echo)} {(DQ ('Downloading binary release sha1 (not found in env)'))})
                (C {(download-or-bust)} {(DQ )} 
                  {
                    (DQ 
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:server_binary_tar_urls span_id:5646)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: {(.tar.gz)}
                            replace: {(.tar.gz.sha1)}
                            replace_mode: Id.Undefined_Tok
                          )
                      )
                    )
                  }
                )
                (C {(local)} {(-r)} 
                  {(Id.Lit_VarLike 'server_binary_tar_hash=') 
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:5663)
                      command_list: 
                        (command.CommandList
                          children: [(C {(cat)} {(DQ (${ Id.VSub_Name server_binary_tar) (.sha1))})]
                        )
                    )
                  }
                )
              ]
            )
            (C {(echo)} 
              {
                (DQ ('Downloading binary release tar (') 
                  (braced_var_sub
                    token: (Token id:Id.VSub_Name val:server_binary_tar_urls span_id:5684)
                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                  ) (')')
                )
              }
            )
            (C {(download-or-bust)} {(DQ (${ Id.VSub_Name server_binary_tar_hash))} 
              {
                (DQ 
                  (braced_var_sub
                    token: (Token id:Id.VSub_Name val:server_binary_tar_urls span_id:5703)
                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                  )
                )
              }
            )
            (C {(local)} {(-r)} 
              {(Id.Lit_VarLike 'salt_tar_urls=') 
                (sh_array_literal
                  left: (Token id:Id.Op_LParen val:'(' span_id:5717)
                  words: [
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:5719)
                        command_list: 
                          (command.CommandList
                            children: [(C {(split-commas)} {(DQ (${ Id.VSub_Name SALT_TAR_URL))})]
                          )
                      )
                    }
                  ]
                )
              }
            )
            (C {(local)} {(-r)} 
              {(Id.Lit_VarLike 'salt_tar=') 
                (DQ 
                  (braced_var_sub
                    token: (Token id:Id.VSub_Name val:salt_tar_urls span_id:5739)
                    bracket_op: 
                      (bracket_op.ArrayIndex
                        expr: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)})
                      )
                    suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{('*') (Id.Lit_Slash /)})
                  )
                )
              }
            )
            (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:SALT_TAR_HASH span_id:5758)
                                      suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                    )
                                  )
                                }
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:5764)
                    )
                  ]
                  action: [
                    (C {(local)} {(-r)} 
                      {(Id.Lit_VarLike 'salt_tar_hash=') (DQ (${ Id.VSub_Name SALT_TAR_HASH))}
                    )
                  ]
                  spids: [5750 5766]
                )
              ]
              else_action: [
                (C {(echo)} {(DQ ('Downloading Salt tar sha1 (not found in env)'))})
                (C {(download-or-bust)} {(DQ )} 
                  {
                    (DQ 
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:salt_tar_urls span_id:5798)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: {(.tar.gz)}
                            replace: {(.tar.gz.sha1)}
                            replace_mode: Id.Undefined_Tok
                          )
                      )
                    )
                  }
                )
                (C {(local)} {(-r)} 
                  {(Id.Lit_VarLike 'salt_tar_hash=') 
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:5815)
                      command_list: 
                        (command.CommandList
                          children: [(C {(cat)} {(DQ (${ Id.VSub_Name salt_tar) (.sha1))})]
                        )
                    )
                  }
                )
              ]
            )
            (C {(echo)} 
              {
                (DQ ('Downloading Salt tar (') 
                  (braced_var_sub
                    token: (Token id:Id.VSub_Name val:salt_tar_urls span_id:5836)
                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                  ) (')')
                )
              }
            )
            (C {(download-or-bust)} {(DQ (${ Id.VSub_Name salt_tar_hash))} 
              {
                (DQ 
                  (braced_var_sub
                    token: (Token id:Id.VSub_Name val:salt_tar_urls span_id:5855)
                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                  )
                )
              }
            )
            (C {(echo)} {(DQ ('Unpacking Salt tree and checking integrity of binary release tar'))})
            (C {(rm)} {(-rf)} {(kubernetes)})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(tar)} {(xzf)} {(DQ (${ Id.VSub_Name salt_tar))})
                (command.Simple
                  words: [{(tar)} {(tzf)} {(DQ (${ Id.VSub_Name server_binary_tar))}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:5900)
                      fd: -1
                      arg_word: {(/dev/null)}
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: download-release
      body: 
        (command.BraceGroup
          children: [
            (command.WhileUntil
              keyword: (Token id:Id.KW_Until val:until span_id:5920)
              cond: [
                (command.Sentence
                  child: (C {(try-download-release)})
                  terminator: (Token id:Id.Op_Semi val:';' span_id:5923)
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (C {(sleep)} {(15)})
                    (C {(echo)} {(DQ ("Couldn't download release. Retrying..."))})
                  ]
                )
            )
            (C {(echo)} {(DQ ('Running release install script'))})
            (C {(kubernetes/saltbase/install.sh)} 
              {
                (DQ 
                  (braced_var_sub
                    token: (Token id:Id.VSub_Name val:SERVER_BINARY_TAR_URL span_id:5955)
                    suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{('*') (Id.Lit_Slash /)})
                  )
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: fix-apt-sources
      body: 
        (command.BraceGroup
          children: [
            (C {(sed)} {(-i)} {(-e)} 
              {(DQ (Id.Lit_Other '\\') ('|^deb.*http://http.debian.net/debian| s/^/#/'))} {(/etc/apt/sources.list)}
            )
            (C {(sed)} {(-i)} {(-e)} 
              {(DQ (Id.Lit_Other '\\') ('|^deb.*http://ftp.debian.org/debian| s/^/#/'))} {(/etc/apt/sources.list.d/backports.list)}
            )
          ]
        )
    )
    (command.ShFunction
      name: salt-run-local
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:6015)
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 6026
                  stdin_parts: [
                    ('file_client: local\n')
                    ('file_roots:\n')
                    ('  base:\n')
                    ('    - /srv/salt\n')
                  ]
                )
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:6018)
                  fd: -1
                  arg_word: {(/etc/salt/minion.d/local.conf)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: salt-debug-log
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:6041)
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 6050
                  stdin_parts: [('log_level: debug\n') ('log_level_logfile: debug\n')]
                )
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:6044)
                  fd: -1
                  arg_word: {(/etc/salt/minion.d/log-level-debug.conf)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: salt-node-role
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(-r)} 
              {(Id.Lit_VarLike 'kubelet_bootstrap_kubeconfig=') 
                (DQ (/srv/salt-overlay/salt/kubelet/bootstrap-kubeconfig))
              }
            )
            (C {(local)} {(-r)} 
              {(Id.Lit_VarLike 'kubelet_kubeconfig=') (DQ (/srv/salt-overlay/salt/kubelet/kubeconfig))}
            )
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:6085)
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 6103
                  stdin_parts: [
                    ('grains:\n')
                    ('  roles:\n')
                    ('    - kubernetes-pool\n')
                    ('  cloud: gce\n')
                    ("  api_servers: '")
                    (${ Id.VSub_Name KUBERNETES_MASTER_NAME)
                    ("'\n")
                    ('  kubelet_bootstrap_kubeconfig: /var/lib/kubelet/bootstrap-kubeconfig\n')
                    ('  kubelet_kubeconfig: /var/lib/kubelet/kubeconfig\n')
                  ]
                )
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:6088)
                  fd: -1
                  arg_word: {(/etc/salt/minion.d/grains.conf)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: env-to-grains
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'key=') ($ Id.VSub_Number '$1')})
            (C {(local)} 
              {(Id.Lit_VarLike 'env_key=') 
                (command_sub
                  left_token: (Token id:Id.Left_Backtick val:'`' span_id:6123)
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Pipeline
                          children: [
                            (C {(echo)} {($ Id.VSub_DollarName '$key')})
                            (C {(tr)} {(SQ (Token id:Id.Lit_Chars val:'[:lower:]' span_id:6135))} 
                              {(SQ (Token id:Id.Lit_Chars val:'[:upper:]' span_id:6139))}
                            )
                          ]
                          negated: F
                        )
                      ]
                    )
                )
              }
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'value=') 
                (braced_var_sub
                  token: (Token id:Id.VSub_Name val:env_key span_id:6149)
                  prefix_op: (Id.VSub_Bang)
                  suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{})
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_n
                              child: {(DQ (${ Id.VSub_Name value))}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:6167)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:6178)
                          fd: -1
                          here_begin: {(EOF)}
                          here_end_span_id: 6210
                          stdin_parts: [
                            ('  ')
                            (${ Id.VSub_Name key)
                            (": '")
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6189)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ (${ Id.VSub_Name value))})
                                        (C {(sed)} {(-e)} {(DQ ("s/'/''/g"))})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                            )
                            ("'\n")
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:6181)
                          fd: -1
                          arg_word: {(/etc/salt/minion.d/grains.conf)}
                        )
                      ]
                    )
                  ]
                  spids: [6154 6169]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: node-docker-opts
      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: EXTRA_DOCKER_OPTS
                                          span_id: 6234
                                        )
                                      suffix_op: (suffix_op.Unary op_id:Id.VTest_Hyphen arg_word:(word.Empty))
                                    )
                                  )
                                }
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:6240)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DOCKER_OPTS)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: (Token id:Id.VSub_Name val:DOCKER_OPTS span_id:6248)
                                  suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                ) (' ') (${ Id.VSub_Name EXTRA_DOCKER_OPTS)
                              )
                            }
                          spids: [6245]
                        )
                      ]
                    )
                  ]
                  spids: [6226 6242]
                )
              ]
            )
            (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: DOCKER_REGISTRY_MIRROR_URL
                                          span_id: 6278
                                        )
                                      suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                    )
                                  )
                                }
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:6284)
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('Enable docker registry mirror at: ') 
                          (${ Id.VSub_Name DOCKER_REGISTRY_MIRROR_URL)
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DOCKER_OPTS)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: (Token id:Id.VSub_Name val:DOCKER_OPTS span_id:6302)
                                  suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                ) (' --registry-mirror=') (${ Id.VSub_Name DOCKER_REGISTRY_MIRROR_URL)
                              )
                            }
                          spids: [6299]
                        )
                      ]
                    )
                  ]
                  spids: [6270 6286]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: salt-grains
      body: 
        (command.BraceGroup
          children: [
            (C {(env-to-grains)} {(DQ (docker_opts))})
            (C {(env-to-grains)} {(DQ (docker_root))})
            (C {(env-to-grains)} {(DQ (kubelet_root))})
            (C {(env-to-grains)} {(DQ (feature_gates))})
          ]
        )
    )
    (command.ShFunction
      name: configure-salt
      body: 
        (command.BraceGroup
          children: [
            (C {(mkdir)} {(-p)} {(/etc/salt/minion.d)})
            (C {(salt-run-local)})
            (C {(salt-node-role)})
            (C {(node-docker-opts)})
            (C {(salt-grains)})
            (C {(install-salt)})
            (C {(stop-salt-minion)})
          ]
        )
    )
    (command.ShFunction
      name: run-salt
      body: 
        (command.BraceGroup
          children: [
            (C {(echo)} {(DQ ('== Calling Salt =='))})
            (C {(local)} {(Id.Lit_VarLike 'rc=') (0)})
            (command.ForEach
              iter_name: i
              iter_words: [
                (word.BracedTree
                  parts: [(word_part.BracedRange kind:Id.Range_Int start:0 end:6 step:1)]
                )
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp Id.Op_DPipe]
                      children: [
                        (C {(salt-call)} {(--retcode-passthrough)} {(--local)} {(state.highstate)})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:rc)
                              op: assign_op.Equal
                              rhs: {(0)}
                              spids: [6438]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:rc)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_QMark '$?')}
                              spids: [6443]
                            )
                          ]
                        )
                      ]
                    )
                    (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 rc))}
                                      right: {(0)}
                                    )
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:6462)
                            )
                          ]
                          action: [
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Return val:return span_id:6467)
                              arg_word: {(0)}
                            )
                          ]
                          spids: [6447 6464]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.Simple
              words: [{(echo)} {(DQ ('Salt failed to run repeatedly'))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:6484)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:6488)
              arg_word: {(DQ (${ Id.VSub_Name rc))}
            )
          ]
        )
    )
    (command.ShFunction
      name: run-user-script
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{(curl-metadata)} {(k8s-user-startup-script)}]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'>' span_id:6514)
                              fd: -1
                              arg_word: {(DQ (${ Id.VSub_Name INSTALL_DIR) (/k8s-user-script.sh))}
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:6522)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:user_script)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6528)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(cat)} 
                                        {(DQ (${ Id.VSub_Name INSTALL_DIR) (/k8s-user-script.sh))}
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [6527]
                        )
                      ]
                    )
                  ]
                  spids: [6508 6524]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.LogicalNot
                              child: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: 
                                    {
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:user_script span_id:6552)
                                        suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{})
                                      )
                                    }
                                )
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:6557)
                    )
                  ]
                  action: [
                    (C {(chmod)} {(u) (Id.Lit_Other '+') (x)} 
                      {(DQ (${ Id.VSub_Name INSTALL_DIR) (/k8s-user-script.sh))}
                    )
                    (C {(echo)} {(DQ ('== running user startup script =='))})
                    (C {(DQ (${ Id.VSub_Name INSTALL_DIR) (/k8s-user-script.sh))})
                  ]
                  spids: [6543 6559]
                )
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobDEqual
                      left: 
                        {
                          (DQ 
                            (braced_var_sub
                              token: (Token id:Id.VSub_Name val:KUBERNETES_MASTER span_id:6602)
                              suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                            )
                          )
                        }
                      right: {(DQ (true))}
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:6614)
            )
          ]
          action: [
            (C {(echo)} {(DQ ('Support for debian master has been removed'))})
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:6626)
              arg_word: {(1)}
            )
          ]
          spids: [6596 6616]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{(DQ (${ Id.VSub_Name is_push))})
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:6646)
            )
          ]
          action: [
            (C {(echo)} {(DQ ('== kube-up node config starting =='))})
            (C {(set-broken-motd)})
            (C {(config-ip-firewall)})
            (C {(ensure-basic-networking)})
            (C {(fix-apt-sources)})
            (C {(ensure-install-dir)})
            (C {(ensure-packages)})
            (C {(set-kube-env)})
            (C {(auto-upgrade)})
            (C {(ensure-local-disks)})
            (C {(create-node-pki)})
            (C {(create-salt-pillar)})
            (C {(create-salt-kubelet-auth)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobNEqual
                              left: 
                                {
                                  (DQ 
                                    (braced_var_sub
                                      token: 
                                        (Token
                                          id: Id.VSub_Name
                                          val: KUBE_PROXY_DAEMONSET
                                          span_id: 6700
                                        )
                                      suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                    )
                                  )
                                }
                              right: {(DQ (true))}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:6712)
                    )
                  ]
                  action: [(C {(create-salt-kubeproxy-auth)})]
                  spids: [6694 6714]
                )
              ]
            )
            (C {(download-release)})
            (C {(configure-salt)})
            (C {(remove-docker-artifacts)})
            (C {(run-salt)})
            (C {(reset-motd)})
            (C {(run-user-script)})
            (C {(echo)} {(DQ ('== kube-up node config done =='))})
          ]
          spids: [6633 6648]
        )
      ]
      else_action: [
        (C {(echo)} {(DQ ('== kube-push node config starting =='))})
        (C {(ensure-basic-networking)})
        (C {(ensure-install-dir)})
        (C {(set-kube-env)})
        (C {(create-salt-pillar)})
        (C {(download-release)})
        (C {(reset-motd)})
        (C {(run-salt)})
        (C {(echo)} {(DQ ('== kube-push node config done =='))})
      ]
    )
  ]
)