(command.CommandList
  children: [
    (command.ShFunction
      name: smallyes
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'YES='> name:YES)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Number 1>
                          var_name: 1
                          suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:{<y>})
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  spids: [11]
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{<echo>} {(DQ ($ Id.VSub_DollarName YES))}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Sentence
                      child: (C {<Id.Lit_Colon ':'>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: in_path
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'OLD_IFS='> (DQ ($ Id.VSub_DollarName IFS))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                  op: assign_op.Equal
                  rhs: {(DQ <':'>)}
                  spids: [61]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [dir]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PATH)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-x>} 
                                      {(DQ ($ Id.VSub_DollarName dir) <'/'> ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName OLD_IFS))}
                                  spids: [97]
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [79 94]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName OLD_IFS))}
                  spids: [114]
                )
              ]
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: error
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'err='> (DQ ($ Id.VSub_Number 1))})
            (C {<local>} {<Id.Lit_VarLike 'name='> (DQ ($ Id.VSub_Number 2))})
            (C {<local>} {<Id.Lit_VarLike 'fmt='> (DQ ($ Id.VSub_Number 3))})
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (C {<shift>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {(DQ ($ Id.VSub_DollarName USE_DEBIANINSTALLER_INTERACTION))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Subshell
                      child: 
                        (command.CommandList
                          children: [
                            (C {<echo>} {(DQ <'E: '> ($ Id.VSub_DollarName name))})
                            (command.ForEach
                              iter_names: [x]
                              iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Sentence
                                      child: (C {<echo>} {(DQ <'EA: '> ($ Id.VSub_DollarName x))})
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              redirects: []
                            )
                            (C {<echo>} {(DQ <'EF: '> ($ Id.VSub_DollarName fmt))})
                          ]
                        )
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})]
                    )
                  ]
                  spids: [176 187]
                )
              ]
              else_action: [
                (command.Subshell
                  child: 
                    (C {<printf>} 
                      {(DQ <'E: '> ($ Id.VSub_DollarName fmt) <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_At '@'))}
                    )
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})]
                )
              ]
              redirects: []
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_DollarName err)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: warning
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'name='> (DQ ($ Id.VSub_Number 1))})
            (C {<local>} {<Id.Lit_VarLike 'fmt='> (DQ ($ Id.VSub_Number 2))})
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (C {<shift>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {(DQ ($ Id.VSub_DollarName USE_DEBIANINSTALLER_INTERACTION))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Subshell
                      child: 
                        (command.CommandList
                          children: [
                            (C {<echo>} {(DQ <'W: '> ($ Id.VSub_DollarName name))})
                            (command.ForEach
                              iter_names: [x]
                              iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Sentence
                                      child: (C {<echo>} {(DQ <'WA: '> ($ Id.VSub_DollarName x))})
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              redirects: []
                            )
                            (C {<echo>} {(DQ <'WF: '> ($ Id.VSub_DollarName fmt))})
                          ]
                        )
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})]
                    )
                  ]
                  spids: [301 312]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<printf>}
                    {(DQ <'W: '> ($ Id.VSub_DollarName fmt) <Id.Lit_BadBackslash '\\'> <n>)}
                    {(DQ ($ Id.VSub_At '@'))}
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})]
                  more_env: []
                  do_fork: T
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: info
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'name='> (DQ ($ Id.VSub_Number 1))})
            (C {<local>} {<Id.Lit_VarLike 'fmt='> (DQ ($ Id.VSub_Number 2))})
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (C {<shift>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {(DQ ($ Id.VSub_DollarName USE_DEBIANINSTALLER_INTERACTION))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Subshell
                      child: 
                        (command.CommandList
                          children: [
                            (C {<echo>} {(DQ <'I: '> ($ Id.VSub_DollarName name))})
                            (command.ForEach
                              iter_names: [x]
                              iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Sentence
                                      child: (C {<echo>} {(DQ <'IA: '> ($ Id.VSub_DollarName x))})
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              redirects: []
                            )
                            (C {<echo>} {(DQ <'IF: '> ($ Id.VSub_DollarName fmt))})
                          ]
                        )
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})]
                    )
                  ]
                  spids: [419 430]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<printf>}
                    {(DQ <'I: '> ($ Id.VSub_DollarName fmt) <Id.Lit_BadBackslash '\\'> <n>)}
                    {(DQ ($ Id.VSub_At '@'))}
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})]
                  more_env: []
                  do_fork: T
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROGRESS_NOW='> name:PROGRESS_NOW)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [503]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROGRESS_END='> name:PROGRESS_END)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [506]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROGRESS_NEXT='> name:PROGRESS_NEXT)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [509]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROGRESS_WHAT='> name:PROGRESS_WHAT)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [513]
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: progress_next
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROGRESS_NEXT='> name:PROGRESS_NEXT)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                  spids: [526]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: wgetprogress
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {(DQ ($ Id.VSub_DollarName VERBOSE))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'QSWITCH='> name:QSWITCH)
                      op: assign_op.Equal
                      rhs: {(DQ <-q>)}
                      spids: [554]
                    )
                  ]
                  redirects: []
                )
              ]
            )
            (C {<local>} {<Id.Lit_VarLike 'ret='> <0>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} 
                                  {(DQ ($ Id.VSub_DollarName USE_DEBIANINSTALLER_INTERACTION))} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName PROGRESS_NEXT))} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Pipeline
                      children: [
                        (command.Simple
                          words: [{<wget>} {(DQ ($ Id.VSub_At '@'))}]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '2>&'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<1>}
                            )
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (command.Simple
                          words: [
                            {($ Id.VSub_DollarName PKGDETAILS)}
                            {(DQ <'WGET%'>)}
                            {($ Id.VSub_DollarName PROGRESS_NOW)}
                            {($ Id.VSub_DollarName PROGRESS_NEXT)}
                            {($ Id.VSub_DollarName PROGRESS_END)}
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<3>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      negated: F
                      stderr_indices: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '?')}
                          spids: [620]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [566 587]
                )
              ]
              else_action: [
                (C {<wget>} {($ Id.VSub_DollarName QSWITCH)} {(DQ ($ Id.VSub_At '@'))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_QMark '?')}
                      spids: [637]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName ret)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: progress
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'now='> (DQ ($ Id.VSub_Number 1))})
            (C {<local>} {<Id.Lit_VarLike 'end='> (DQ ($ Id.VSub_Number 2))})
            (C {<local>} {<Id.Lit_VarLike 'name='> (DQ ($ Id.VSub_Number 3))})
            (C {<local>} {<Id.Lit_VarLike 'fmt='> (DQ ($ Id.VSub_Number 4))})
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (C {<shift>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {(DQ ($ Id.VSub_DollarName USE_DEBIANINSTALLER_INTERACTION))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'PROGRESS_NOW='>
                              name: PROGRESS_NOW
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName now))}
                          spids: [721]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'PROGRESS_END='>
                              name: PROGRESS_END
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName end))}
                          spids: [727]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'PROGRESS_NEXT='>
                              name: PROGRESS_NEXT
                            )
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [733]
                        )
                      ]
                      redirects: []
                    )
                    (command.Subshell
                      child: 
                        (command.CommandList
                          children: [
                            (C {<echo>} 
                              {
                                (DQ <'P: '> ($ Id.VSub_DollarName now) <' '> ($ Id.VSub_DollarName end) 
                                  <' '> ($ Id.VSub_DollarName name)
                                )
                              }
                            )
                            (command.ForEach
                              iter_names: [x]
                              iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Sentence
                                      child: (C {<echo>} {(DQ <'PA: '> ($ Id.VSub_DollarName x))})
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              redirects: []
                            )
                            (C {<echo>} {(DQ <'PF: '> ($ Id.VSub_DollarName fmt))})
                          ]
                        )
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
                    )
                  ]
                  spids: [707 718]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: dpkg_progress
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'now='> (DQ ($ Id.VSub_Number 1))})
            (C {<local>} {<Id.Lit_VarLike 'end='> (DQ ($ Id.VSub_Number 2))})
            (C {<local>} {<Id.Lit_VarLike 'name='> (DQ ($ Id.VSub_Number 3))})
            (C {<local>} {<Id.Lit_VarLike 'desc='> (DQ ($ Id.VSub_Number 4))})
            (C {<local>} {<Id.Lit_VarLike 'action='> (DQ ($ Id.VSub_Number 5))})
            (C {<local>} {<Id.Lit_VarLike 'expect='>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName action))} 
                              {<Id.Lit_Equals '='>} {<UNPACKING>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expect='> name:expect)
                          op: assign_op.Equal
                          rhs: {<half-installed>}
                          spids: [868]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [850 865]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName action))} 
                              {<Id.Lit_Equals '='>} {<CONFIGURING>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expect='> name:expect)
                          op: assign_op.Equal
                          rhs: {<half-configured>}
                          spids: [890]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [872 887]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShFunction
              name: dp
              body: 
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'now='> name:now)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.ArithSub
                                  anode: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: {($ Id.VSub_DollarName now)}
                                      right: 
                                        {
                                          (braced_var_sub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Number 1>
                                            var_name: 1
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op: <Id.VTest_ColonHyphen _>
                                                arg_word: {<1>}
                                              )
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        }
                                    )
                                )
                              )
                            }
                          spids: [906]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exitcode='> name:exitcode)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [927]
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: (C {<read>} {<status>} {<pkg>} {<qstate>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName status))} 
                                      {<Id.Lit_Equals '='>} {(DQ <EXITCODE>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'exitcode='>
                                      name: exitcode
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName pkg))}
                                  spids: [965]
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [945 962]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName qstate))} 
                          {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName expect))} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName qstate)}
                      arms: [
                        (case_arm
                          pat_list: [{<half-installed>}]
                          action: [
                            (command.Sentence
                              child: (C {<dp>})
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<progress>} {(DQ ($ Id.VSub_DollarName now))} 
                              {(DQ ($ Id.VSub_DollarName end))} {(DQ ($ Id.VSub_DollarName name))} {(DQ ($ Id.VSub_DollarName desc))}
                            )
                            (C {<info>} {(DQ ($ Id.VSub_DollarName action))} {(DQ <'Unpacking %s...'>)} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name pkg>
                                    var_name: pkg
                                    suffix_op: 
                                      (suffix_op.Unary
                                        op: <Id.VOp1_Percent '%'>
                                        arg_word: {<':'>}
                                      )
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expect='> name:expect)
                                  op: assign_op.Equal
                                  rhs: {<unpacked>}
                                  spids: [1048]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1003 1004 1052 -1]
                        )
                        (case_arm
                          pat_list: [{<unpacked>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expect='> name:expect)
                                  op: assign_op.Equal
                                  rhs: {<half-installed>}
                                  spids: [1059]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1055 1056 1063 -1]
                        )
                        (case_arm
                          pat_list: [{<half-configured>}]
                          action: [
                            (command.Sentence
                              child: (C {<dp>})
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<progress>} {(DQ ($ Id.VSub_DollarName now))} 
                              {(DQ ($ Id.VSub_DollarName end))} {(DQ ($ Id.VSub_DollarName name))} {(DQ ($ Id.VSub_DollarName desc))}
                            )
                            (C {<info>} {(DQ ($ Id.VSub_DollarName action))} {(DQ <'Configuring %s...'>)} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name pkg>
                                    var_name: pkg
                                    suffix_op: 
                                      (suffix_op.Unary
                                        op: <Id.VOp1_Percent '%'>
                                        arg_word: {<':'>}
                                      )
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expect='> name:expect)
                                  op: assign_op.Equal
                                  rhs: {<installed>}
                                  spids: [1111]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1066 1067 1115 -1]
                        )
                        (case_arm
                          pat_list: [{<installed>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expect='> name:expect)
                                  op: assign_op.Equal
                                  rhs: {<half-configured>}
                                  spids: [1122]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1118 1119 1126 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName exitcode)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: default_mirror
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEF_MIRROR='> name:DEF_MIRROR)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                  spids: [1154]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'FINDDEBS_NEEDS_INDICES='>
              name: FINDDEBS_NEEDS_INDICES
            )
          op: assign_op.Equal
          rhs: {<false>}
          spids: [1162]
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: finddebs_style
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number 1))}
              arms: [
                (case_arm
                  pat_list: [{<hardcoded>}]
                  action: []
                  spids: [1182 1183 1186 -1]
                )
                (case_arm
                  pat_list: [{<from-indices>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'FINDDEBS_NEEDS_INDICES='>
                              name: FINDDEBS_NEEDS_INDICES
                            )
                          op: assign_op.Equal
                          rhs: {<true>}
                          spids: [1193]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1189 1190 1197 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<error>} {<1>} {<BADFINDDEBS>} {(DQ <'unknown finddebs style'>)})]
                  spids: [1200 1201 1215 -1]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: mk_download_dirs
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DLDEST)} 
                              {<Id.Lit_Equals '='>} {(DQ <apt_dest>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<mkdir>} {<-p>} 
                      {
                        (DQ ($ Id.VSub_DollarName TARGET) <'/'> ($ Id.VSub_DollarName APTSTATE) 
                          <'/lists/partial'>
                        )
                      }
                    )
                    (C {<mkdir>} {<-p>} 
                      {(DQ ($ Id.VSub_DollarName TARGET) <'/var/cache/apt/archives/partial'>)}
                    )
                  ]
                  spids: [1231 1246]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: download_style
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number 1))}
              arms: [
                (case_arm
                  pat_list: [{<apt>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 2))} 
                                      {<Id.Lit_Equals '='>} {(DQ <var-state>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'APTSTATE='>
                                      name: APTSTATE
                                    )
                                  op: assign_op.Equal
                                  rhs: {<'var/state/apt'>}
                                  spids: [1317]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1297 1314]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'APTSTATE='> name:APTSTATE)
                              op: assign_op.Equal
                              rhs: {<'var/lib/apt'>}
                              spids: [1324]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DLDEST='> name:DLDEST)
                          op: assign_op.Equal
                          rhs: {<apt_dest>}
                          spids: [1331]
                        )
                      ]
                      redirects: []
                    )
                    (C {<export>} {<APTSTATE>} {<DLDEST>} {<DEBFOR>})
                  ]
                  spids: [1293 1294 1344 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<error>} {<1>} {<BADDLOAD>} {(DQ <'unknown download style'>)})]
                  spids: [1347 1348 1362 -1]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: keyring
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName KEYRING))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_Number 1))} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'KEYRING='>
                                      name: KEYRING
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number 1))}
                                  spids: [1410]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1394 1407]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-z>} 
                                      {(DQ ($ Id.VSub_DollarName DISABLE_KEYRING))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.AndOr
                                              ops: [Id.Op_DAmp Id.Op_DAmp]
                                              children: [
                                                (C {<Id.Lit_LBracket '['>} {<-n>} 
                                                  {(DQ ($ Id.VSub_DollarName DEF_HTTPS_MIRROR))} {<Id.Lit_RBracket ']'>}
                                                )
                                                (C {<Id.Lit_LBracket '['>} {<-z>} 
                                                  {(DQ ($ Id.VSub_DollarName USER_MIRROR))} {<Id.Lit_RBracket ']'>}
                                                )
                                                (C {<Id.Lit_LBracket '['>} {<-z>} 
                                                  {(DQ ($ Id.VSub_DollarName FORCE_KEYRING))} {<Id.Lit_RBracket ']'>}
                                                )
                                              ]
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<info>} {<KEYRING>} 
                                      {
                                        (DQ 
                                          <
'Keyring file not available at %s; switching to https mirror %s'
                                          >
                                        )
                                      } {(DQ ($ Id.VSub_Number 1))} {(DQ ($ Id.VSub_DollarName DEF_HTTPS_MIRROR))}
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'USER_MIRROR='>
                                              name: USER_MIRROR
                                            )
                                          op: assign_op.Equal
                                          rhs: {(DQ ($ Id.VSub_DollarName DEF_HTTPS_MIRROR))}
                                          spids: [1489]
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [1432 1469]
                                )
                              ]
                              else_action: [
                                (C {<warning>} {<KEYRING>} 
                                  {
                                    (DQ 
                                      <
'Cannot check Release signature; keyring file not available %s'
                                      >
                                    )
                                  } {(DQ ($ Id.VSub_Number 1))}
                                )
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} {<-n>} 
                                                  {(DQ ($ Id.VSub_DollarName FORCE_KEYRING))} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (C {<error>} {<1>} {<KEYRING>} 
                                          {
                                            (DQ 
                                              <
'Keyring-based check was requested; aborting accordingly'
                                              >
                                            )
                                          }
                                        )
                                      ]
                                      spids: [1511 1524]
                                    )
                                  ]
                                  else_action: []
                                  redirects: []
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1416 1429]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [1378 1391]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: doing_variant
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName VARIANT))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [1564 1581]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} 
                                  {<Id.Lit_Equals '='>} {(DQ <->)} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName VARIANT))} 
                                  {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [1591 1623]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SUPPORTED_VARIANTS='> name:SUPPORTED_VARIANTS)
          op: assign_op.Equal
          rhs: {(DQ <->)}
          spids: [1640]
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: variants
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'SUPPORTED_VARIANTS='>
                      name: SUPPORTED_VARIANTS
                    )
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Star '*'))}
                  spids: [1653]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [v]
              iterable: (for_iter.Words words:[{($ Id.VSub_Star '*')}])
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<doing_variant>} {(DQ ($ Id.VSub_DollarName v))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: 
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Return return>
                                  arg_word: {<0>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [1671 1680]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (C {<error>} {<1>} {<UNSUPPVARIANT>} {(DQ <'unsupported variant'>)})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: mirror_style
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number 1))}
              arms: [
                (case_arm
                  pat_list: [{<release>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'DOWNLOAD_INDICES='>
                              name: DOWNLOAD_INDICES
                            )
                          op: assign_op.Equal
                          rhs: {<download_release_indices>}
                          spids: [1731]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'DOWNLOAD_DEBS='>
                              name: DOWNLOAD_DEBS
                            )
                          op: assign_op.Equal
                          rhs: {<download_release>}
                          spids: [1735]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1727 1728 1739 -1]
                )
                (case_arm
                  pat_list: [{<main>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'DOWNLOAD_INDICES='>
                              name: DOWNLOAD_INDICES
                            )
                          op: assign_op.Equal
                          rhs: {<download_main_indices>}
                          spids: [1746]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'DOWNLOAD_DEBS='>
                              name: DOWNLOAD_DEBS
                            )
                          op: assign_op.Equal
                          rhs: {<download_main>}
                          spids: [1750]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1742 1743 1754 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<error>} {<1>} {<BADMIRROR>} {(DQ <'unknown mirror style'>)})]
                  spids: [1757 1758 1772 -1]
                )
              ]
              redirects: []
            )
            (C {<export>} {<DOWNLOAD_INDICES>})
            (C {<export>} {<DOWNLOAD_DEBS>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: force_md5
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEBOOTSTRAP_CHECKSUM_FIELD='>
                      name: DEBOOTSTRAP_CHECKSUM_FIELD
                    )
                  op: assign_op.Equal
                  rhs: {<MD5SUM>}
                  spids: [1798]
                )
              ]
              redirects: []
            )
            (C {<export>} {<DEBOOTSTRAP_CHECKSUM_FIELD>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: verify_checksum
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'expchecksum='> (DQ ($ Id.VSub_Number 2))})
            (C {<local>} {<Id.Lit_VarLike 'expsize='> (DQ ($ Id.VSub_Number 3))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {(DQ ($ Id.VSub_DollarName DEBOOTSTRAP_CHECKSUM_FIELD))} {<Id.Lit_Equals '='>} {(DQ <MD5SUM>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<in_path>} {<md5sum>})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'relchecksum='>
                                      name: relchecksum
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (command.Simple
                                                words: [{<md5sum>}]
                                                redirects: [
                                                  (redir
                                                    op: <Id.Redir_Less '<'>
                                                    loc: (redir_loc.Fd fd:0)
                                                    arg: {(DQ ($ Id.VSub_Number 1))}
                                                  )
                                                ]
                                                more_env: []
                                                do_fork: T
                                              )
                                              (C {<sed>} {(SQ <'s/ .*$//'>)})
                                            ]
                                            negated: F
                                            stderr_indices: []
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [1867]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1857 1864]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<in_path>} {<md5>})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'relchecksum='>
                                      name: relchecksum
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Simple
                                            words: [{<md5>}]
                                            redirects: [
                                              (redir
                                                op: <Id.Redir_Less '<'>
                                                loc: (redir_loc.Fd fd:0)
                                                arg: {(DQ ($ Id.VSub_Number 1))}
                                              )
                                            ]
                                            more_env: []
                                            do_fork: T
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [1899]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1889 1896]
                        )
                      ]
                      else_action: [(C {<error>} {<1>} {<SIGCHECK>} {(DQ <'Cannot check md5sum'>)})]
                      redirects: []
                    )
                  ]
                  spids: [1837 1854]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: (C {<in_path>} {(DQ <sha> (${ Id.VSub_Name SHA_SIZE) <sum>)})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'relchecksum='>
                                  name: relchecksum
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (command.Simple
                                            words: [{<sha> (${ Id.VSub_Name SHA_SIZE) <sum>}]
                                            redirects: [
                                              (redir
                                                op: <Id.Redir_Less '<'>
                                                loc: (redir_loc.Fd fd:0)
                                                arg: {(DQ ($ Id.VSub_Number 1))}
                                              )
                                            ]
                                            more_env: []
                                            do_fork: T
                                          )
                                          (C {<sed>} {(SQ <'s/ .*$//'>)})
                                        ]
                                        negated: F
                                        stderr_indices: []
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                              spids: [1949]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [1933 1946]
                    )
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: (C {<in_path>} {(DQ <sha> (${ Id.VSub_Name SHA_SIZE))})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'relchecksum='>
                                  name: relchecksum
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        words: [{<sha> (${ Id.VSub_Name SHA_SIZE)}]
                                        redirects: [
                                          (redir
                                            op: <Id.Redir_Less '<'>
                                            loc: (redir_loc.Fd fd:0)
                                            arg: {(DQ ($ Id.VSub_Number 1))}
                                          )
                                        ]
                                        more_env: []
                                        do_fork: T
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                              spids: [1990]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [1975 1987]
                    )
                  ]
                  else_action: [
                    (C {<error>} {<1>} {<SIGCHECK>} 
                      {(DQ <'Cannot check sha'> (${ Id.VSub_Name SHA_SIZE) <sum>)}
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'relsize='> name:relsize)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [{<wc>} {<-c>}]
                            redirects: [
                              (redir
                                op: <Id.Redir_Less '<'>
                                loc: (redir_loc.Fd fd:0)
                                arg: {(DQ ($ Id.VSub_Number 1))}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2031]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName expsize))} {<-ne>} 
                                  {(DQ ($ Id.VSub_DollarName relsize))} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName expchecksum))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName relchecksum))} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})]
                  spids: [2047 2081]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<displayname>})
            (C {<local>} {<versionname>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Number 2>
                                    var_name: 2
                                    suffix_op: 
                                      (suffix_op.Unary
                                        op: <Id.VOp1_Percent '%'>
                                        arg_word: {<.deb>}
                                      )
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                )
                              } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Number 2))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'displayname='>
                              name: displayname
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (C {<echo>} {(DQ ($ Id.VSub_Number 2))})
                                        (C {<sed>} {(SQ <'s,^.*/,,;s,_.*$,,'>)})
                                      ]
                                      negated: F
                                      stderr_indices: []
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          spids: [2150]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'versionname='>
                              name: versionname
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (C {<echo>} {(DQ ($ Id.VSub_Number 2))})
                                        (C {<sed>} {(SQ <'s,^.*/,,'>)})
                                        (C {<cut>} {<-d_>} {<-f2>})
                                        (C {<sed>} {(SQ <'s/%3a/:/'>)})
                                      ]
                                      negated: F
                                      stderr_indices: []
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          spids: [2170]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2125 2147]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'displayname='> name:displayname)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Pipeline
                                  children: [
                                    (C {<echo>} {(DQ ($ Id.VSub_Number 1))})
                                    (C {<sed>} {(SQ <'s,^.*/,,'>)})
                                  ]
                                  negated: F
                                  stderr_indices: []
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      spids: [2209]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_Number 2))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number 3))} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [2249 2262]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 3))} 
                                      {<Id.Lit_Equals '='>} {<nocache>} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number 2))})]
                          spids: [2270 2285]
                        )
                      ]
                      else_action: [
                        (C {<info>} {<VALIDATING>} {(DQ <'Validating %s %s'>)} 
                          {(DQ ($ Id.VSub_DollarName displayname))} {(DQ ($ Id.VSub_DollarName versionname))}
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (C {<verify_checksum>} {(DQ ($ Id.VSub_Number 2))} 
                                          {(DQ ($ Id.VSub_Number 3))} {(DQ ($ Id.VSub_Number 4))}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Return return>
                                  arg_word: {<0>}
                                )
                              ]
                              spids: [2317 2334]
                            )
                          ]
                          else_action: [(C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number 2))})]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2233 2246]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 3))} {<Id.Lit_Equals '='>} 
                              {<nocache>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<set>} {(DQ ($ Id.VSub_Number 1))} {(DQ ($ Id.VSub_Number 2))})]
                  spids: [2367 2382]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Pound '#'))} {<-gt>} {<5>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<local>} {<Id.Lit_VarLike 'st='> <3>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 5))} 
                                      {<Id.Lit_Equals '='>} {(DQ <->)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'st='> name:st)
                                      op: assign_op.Equal
                                      rhs: {<6>}
                                      spids: [2443]
                                    )
                                  ]
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [2424 2441]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'order='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.CommandList
                                children: [
                                  (command.Sentence
                                    child: 
                                      (command.ShAssignment
                                        pairs: [
                                          (assign_pair
                                            lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a)
                                            op: assign_op.Equal
                                            rhs: {($ Id.VSub_DollarName st)}
                                            spids: [2455]
                                          )
                                        ]
                                        redirects: []
                                      )
                                    terminator: <Id.Op_Semi _>
                                  )
                                  (command.Pipeline
                                    children: [
                                      (command.WhileUntil
                                        keyword: <Id.KW_While while>
                                        cond: 
                                          (condition.Shell
                                            commands: [
                                              (command.Sentence
                                                child: 
                                                  (C {<Id.Lit_LBracket '['>} 
                                                    {(DQ ($ Id.VSub_DollarName a))} {<-le>} {($ Id.VSub_Pound '#')} {<Id.Lit_RBracket ']'>}
                                                  )
                                                terminator: <Id.Op_Semi _>
                                              )
                                            ]
                                          )
                                        body: 
                                          (command.DoGroup
                                            children: [
                                              (command.Sentence
                                                child: 
                                                  (C {<eval>} {<echo>} 
                                                    {
                                                      (word_part.EscapedLiteral
                                                        token: <Id.Lit_EscapedChar '\\"'>
                                                        ch: '"'
                                                      ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <Id.Lit_LBrace '{'> 
                                                      (word_part.ArithSub
                                                        anode: 
                                                          (arith_expr.Binary
                                                            op_id: Id.Arith_Plus
                                                            left: {($ Id.VSub_DollarName a)}
                                                            right: {<Id.Lit_Digits 1>}
                                                          )
                                                      ) <Id.Lit_RBrace '}'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
                                                    } {($ Id.VSub_DollarName a)}
                                                  )
                                                terminator: <Id.Op_Semi _>
                                              )
                                              (command.Sentence
                                                child: 
                                                  (command.ShAssignment
                                                    pairs: [
                                                      (assign_pair
                                                        lhs: 
                                                          (sh_lhs_expr.Name
                                                            left: <Id.Lit_VarLike 'a='>
                                                            name: a
                                                          )
                                                        op: assign_op.Equal
                                                        rhs: 
                                                          {
                                                            (word_part.ArithSub
                                                              anode: 
                                                                (arith_expr.Binary
                                                                  op_id: Id.Arith_Plus
                                                                  left: {($ Id.VSub_DollarName a)}
                                                                  right: {<Id.Lit_Digits 3>}
                                                                )
                                                            )
                                                          }
                                                        spids: [2496]
                                                      )
                                                    ]
                                                    redirects: []
                                                  )
                                                terminator: <Id.Op_Semi _>
                                              )
                                            ]
                                          )
                                        redirects: []
                                      )
                                      (C {<sort>} {<-n>})
                                      (C {<sed>} {(SQ <'s/.* //'>)})
                                    ]
                                    negated: F
                                    stderr_indices: []
                                  )
                                ]
                              )
                            right: <Id.Eof_RParen _>
                          )
                        )
                      }
                    )
                  ]
                  spids: [2400 2415]
                )
              ]
              else_action: [(C {<local>} {<Id.Lit_VarLike 'order='> <3>})]
              redirects: []
            )
            (command.ForEach
              iter_names: [a]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName order)}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'checksum='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<eval>} {<echo>} 
                                {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                  <Id.Lit_LBrace '{'> ($ Id.VSub_DollarName a) <Id.Lit_RBrace '}'>
                                }
                              )
                            right: <Id.Eof_RParen _>
                          )
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'siz='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<eval>} {<echo>} 
                                {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                  <Id.Lit_LBrace '{'> 
                                  (word_part.ArithSub
                                    anode: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_Plus
                                        left: {($ Id.VSub_DollarName a)}
                                        right: {<Id.Lit_Digits 1>}
                                      )
                                  ) <Id.Lit_RBrace '}'>
                                }
                              )
                            right: <Id.Eof_RParen _>
                          )
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'typ='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<eval>} {<echo>} 
                                {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                  <Id.Lit_LBrace '{'> 
                                  (word_part.ArithSub
                                    anode: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_Plus
                                        left: {($ Id.VSub_DollarName a)}
                                        right: {<Id.Lit_Digits 2>}
                                      )
                                  ) <Id.Lit_RBrace '}'>
                                }
                              )
                            right: <Id.Eof_RParen _>
                          )
                        )
                      }
                    )
                    (C {<local>} {<from>})
                    (C {<local>} {<dest>})
                    (C {<local>} {<Id.Lit_VarLike 'iters='> <0>})
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName typ))}
                      arms: [
                        (case_arm
                          pat_list: [{<xz>}]
                          action: [
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'from='> name:from)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_Number 1) <.xz>)}
                                      spids: [2644]
                                    )
                                  ]
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dest='> name:dest)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number 2) <.xz>)}
                                  spids: [2651]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2641 2642 2657 -1]
                        )
                        (case_arm
                          pat_list: [{<bz2>}]
                          action: [
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'from='> name:from)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_Number 1) <.bz2>)}
                                      spids: [2663]
                                    )
                                  ]
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dest='> name:dest)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number 2) <.bz2>)}
                                  spids: [2670]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2660 2661 2676 -1]
                        )
                        (case_arm
                          pat_list: [{<gz>}]
                          action: [
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'from='> name:from)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_Number 1) <.gz>)}
                                      spids: [2682]
                                    )
                                  ]
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dest='> name:dest)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number 2) <.gz>)}
                                  spids: [2689]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2679 2680 2695 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'from='> name:from)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_Number 1))}
                                      spids: [2701]
                                    )
                                  ]
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dest='> name:dest)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number 2))}
                                  spids: [2707]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2698 2699 2712 -1]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name dest>
                                            var_name: dest
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op: <Id.VOp1_Pound '#'>
                                                arg_word: {<Id.Lit_Slash '/'>}
                                              )
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        )
                                      } {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName dest))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dest='> name:dest)
                                  op: assign_op.Equal
                                  rhs: {(DQ <'./'> ($ Id.VSub_DollarName dest))}
                                  spids: [2743]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2719 2740]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {<local>} {<Id.Lit_VarLike 'dest2='> (DQ ($ Id.VSub_DollarName dest))})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-d>} 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name dest2>
                                            var_name: dest2
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op: <Id.VOp1_Percent '%'>
                                                arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>}
                                              )
                                            right: <Id.Right_DollarBrace '}'>
                                          ) <'/partial'>
                                        )
                                      } {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dest2='> name:dest2)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name dest2>
                                          var_name: dest2
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op: <Id.VOp1_Percent '%'>
                                              arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>}
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        ) <'/partial/'> 
                                        (braced_var_sub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name dest2>
                                          var_name: dest2
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op: <Id.VOp1_DPound '##'>
                                              arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>}
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  spids: [2783]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2761 2780]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName iters))} {<-lt>} 
                                  {<10>} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<info>} {<RETRIEVING>} {(DQ <'Retrieving %s %s'>)} 
                              {(DQ ($ Id.VSub_DollarName displayname))} {(DQ ($ Id.VSub_DollarName versionname))}
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Pipeline
                                              children: [
                                                (C {<just_get>} {(DQ ($ Id.VSub_DollarName from))} 
                                                  {(DQ ($ Id.VSub_DollarName dest2))}
                                                )
                                              ]
                                              negated: T
                                              stderr_indices: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Sentence
                                      child: 
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Continue continue>
                                          arg_word: {<2>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  spids: [2840 2855]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(DQ ($ Id.VSub_DollarName checksum))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<info>} {<VALIDATING>} {(DQ <'Validating %s %s'>)} 
                                      {(DQ ($ Id.VSub_DollarName displayname))} {(DQ ($ Id.VSub_DollarName versionname))}
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<verify_checksum>} 
                                                      {(DQ ($ Id.VSub_DollarName dest2))} {(DQ ($ Id.VSub_DollarName checksum))} {(DQ ($ Id.VSub_DollarName siz))}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'checksum='>
                                                      name: checksum
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ )}
                                                  spids: [2922]
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          spids: [2902 2919]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                  spids: [2865 2882]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-z>} 
                                              {(DQ ($ Id.VSub_DollarName checksum))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName dest2))} 
                                          {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName dest))} {<Id.Lit_RBracket ']'>}
                                        )
                                        (C {<mv>} {(DQ ($ Id.VSub_DollarName dest2))} 
                                          {(DQ ($ Id.VSub_DollarName dest))}
                                        )
                                      ]
                                    )
                                    (command.Case
                                      to_match: {(DQ ($ Id.VSub_DollarName typ))}
                                      arms: [
                                        (case_arm
                                          pat_list: [{<gz>}]
                                          action: [(C {<gunzip>} {(DQ ($ Id.VSub_DollarName dest))})]
                                          spids: [2985 2986 2994 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<bz2>}]
                                          action: [(C {<bunzip2>} {(DQ ($ Id.VSub_DollarName dest))})]
                                          spids: [2997 2998 3006 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<xz>}]
                                          action: [(C {<unxz>} {(DQ ($ Id.VSub_DollarName dest))})]
                                          spids: [3009 3010 3018 -1]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Return return>
                                      arg_word: {<0>}
                                    )
                                  ]
                                  spids: [2933 2946]
                                )
                              ]
                              else_action: [
                                (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName dest2))})
                                (C {<warning>} {<RETRYING>} {(DQ <'Retrying failed download of %s'>)} 
                                  {(DQ ($ Id.VSub_DollarName from))}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'iters='>
                                          name: iters
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (word_part.ArithSub
                                              anode: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Plus
                                                  left: {($ Id.VSub_DollarName iters)}
                                                  right: {<Id.Lit_Digits 1>}
                                                )
                                            )
                                          )
                                        }
                                      spids: [3054]
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              redirects: []
                            )
                          ]
                        )
                      redirects: []
                    )
                    (C {<warning>} {<CORRUPTFILE>} {(DQ <'%s was corrupt'>)} 
                      {(DQ ($ Id.VSub_DollarName from))}
                    )
                  ]
                )
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: just_get
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'from='> (DQ ($ Id.VSub_Number 1))})
            (C {<local>} {<Id.Lit_VarLike 'dest='> (DQ ($ Id.VSub_Number 2))})
            (C {<mkdir>} {<-p>} 
              {
                (DQ 
                  (braced_var_sub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name dest>
                    var_name: dest
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VOp1_Percent '%'>
                        arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name from>
                                    var_name: from
                                    suffix_op: 
                                      (suffix_op.Unary
                                        op: <Id.VOp1_Pound '#'>
                                        arg_word: {<'null:'>}
                                      )
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                )
                              } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName from))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<error>} {<1>} {<NOTPREDL>} {(DQ <'%s was not pre-downloaded'>)} 
                      {
                        (DQ 
                          (braced_var_sub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name from>
                            var_name: from
                            suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<'null:'>})
                            right: <Id.Right_DollarBrace '}'>
                          )
                        )
                      }
                    )
                  ]
                  spids: [3138 3160]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<Id.Lit_LBracket '['>} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name from>
                                        var_name: from
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op: <Id.VOp1_Pound '#'>
                                            arg_word: 
                                              {<'http:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'>}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    )
                                  } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName from))} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name from>
                                        var_name: from
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op: <Id.VOp1_Pound '#'>
                                            arg_word: {<'ftp:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'>}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    )
                                  } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName from))} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<wgetprogress>} {<-O>} {(DQ ($ Id.VSub_DollarName dest))} 
                                      {(DQ ($ Id.VSub_DollarName from))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [3236 3251]
                        )
                      ]
                      else_action: [
                        (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName dest))})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3182 3229]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name from>
                                    var_name: from
                                    suffix_op: 
                                      (suffix_op.Unary
                                        op: <Id.VOp1_Pound '#'>
                                        arg_word: {<'https:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'>}
                                      )
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                )
                              } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName from))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<wgetprogress>} {($ Id.VSub_DollarName CHECKCERTIF)} 
                                      {($ Id.VSub_DollarName CERTIFICATE)} {($ Id.VSub_DollarName PRIVATEKEY)} {<-O>} {(DQ ($ Id.VSub_DollarName dest))} 
                                      {(DQ ($ Id.VSub_DollarName from))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [3311 3332]
                        )
                      ]
                      else_action: [
                        (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName dest))})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3279 3304]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name from>
                                    var_name: from
                                    suffix_op: 
                                      (suffix_op.Unary
                                        op: <Id.VOp1_Pound '#'>
                                        arg_word: {<'file:'>}
                                      )
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                )
                              } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName from))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'base='> 
                        (DQ 
                          (braced_var_sub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name from>
                            var_name: from
                            suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<'file:'>})
                            right: <Id.Right_DollarBrace '}'>
                          )
                        )
                      }
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name base>
                                            var_name: base
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op: <Id.VOp1_Pound '#'>
                                                arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Slash '/'>}
                                              )
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        )
                                      } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName base))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'base='> name:base)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'/'> 
                                        (braced_var_sub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name from>
                                          var_name: from
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op: <Id.VOp1_Pound '#'>
                                              arg_word: 
                                                {<'file:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'> 
                                                  <Id.Lit_Other '*'> <Id.Lit_Slash '/'>
                                                }
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  spids: [3423]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [3397 3420]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_DollarName base))} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<cp>} {(DQ ($ Id.VSub_DollarName base))} 
                              {(DQ ($ Id.VSub_DollarName dest))}
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [3441 3454]
                        )
                      ]
                      else_action: [
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3360 3382]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name from>
                                    var_name: from
                                    suffix_op: 
                                      (suffix_op.Unary
                                        op: <Id.VOp1_Pound '#'>
                                        arg_word: {<'ssh:'>}
                                      )
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                )
                              } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName from))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'ssh_dest='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (C {<echo>} {($ Id.VSub_DollarName from)})
                                  (C {<sed>} {<-e>} {(SQ <'s#ssh://##'>)} {<-e>} {(SQ <'s#/#:/#'>)})
                                ]
                                negated: F
                                stderr_indices: []
                              )
                            right: <Id.Eof_RParen _>
                          )
                        )
                      }
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                                      {(DQ ($ Id.VSub_DollarName ssh_dest))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<scp>} {(DQ ($ Id.VSub_DollarName ssh_dest))} 
                              {(DQ ($ Id.VSub_DollarName dest))}
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [3537 3550]
                        )
                      ]
                      else_action: [
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3484 3506]
                )
              ]
              else_action: [
                (C {<error>} {<1>} {<UNKNOWNLOC>} {(DQ <'unknown location %s'>)} 
                  {(DQ ($ Id.VSub_DollarName from))}
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: download
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<mk_download_dirs>})
            (C {(DQ ($ Id.VSub_DollarName DOWNLOAD_DEBS))} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<echo>} {(DQ ($ Id.VSub_At '@'))})
                        (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                        (C {<sort>})
                      ]
                      negated: F
                      stderr_indices: []
                    )
                  right: <Id.Eof_RParen _>
                )
              }
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: download_indices
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<mk_download_dirs>})
            (C {(DQ ($ Id.VSub_DollarName DOWNLOAD_INDICES))} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<echo>} {(DQ ($ Id.VSub_At '@'))})
                        (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                        (C {<sort>})
                      ]
                      negated: F
                      stderr_indices: []
                    )
                  right: <Id.Eof_RParen _>
                )
              }
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: debfor
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Subshell
              child: 
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<read>} {<pkg>} {<path>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      children: [
                        (command.ForEach
                          iter_names: [p]
                          iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}])
                          body: 
                            (command.DoGroup
                              children: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName p))} 
                                          {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName pkg))} {<Id.Lit_RBracket ']'>}
                                        )
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Continue continue>
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                                (C {<echo>} {(DQ ($ Id.VSub_DollarName path))})
                              ]
                            )
                          redirects: []
                        )
                      ]
                    )
                  redirects: [
                    (redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {(DQ ($ Id.VSub_DollarName TARGET) <'/debootstrap/debpaths'>)}
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: apt_dest
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number 1))}
              arms: [
                (case_arm
                  pat_list: [{<deb>}]
                  action: [
                    (command.Pipeline
                      children: [
                        (C {<echo>} 
                          {
                            (DQ <'/var/cache/apt/archives/'> (${ Id.VSub_Number 2) <_> 
                              (${ Id.VSub_Number 3) <_> (${ Id.VSub_Number 4) <.deb>
                            )
                          }
                        )
                        (C {<sed>} {(SQ <'s/:/%3a/'>)})
                      ]
                      negated: F
                      stderr_indices: []
                    )
                  ]
                  spids: [3799 3800 3830 -1]
                )
                (case_arm
                  pat_list: [{<pkg>}]
                  action: [
                    (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number 5))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'm='> name:m)
                          op: assign_op.Equal
                          rhs: {(DQ <debootstrap.invalid>)}
                          spids: [3845]
                        )
                      ]
                      redirects: []
                    )
                    (C {<printf>} {(DQ <'%s'>)} {(DQ ($ Id.VSub_DollarName APTSTATE) <'/lists/'>)})
                    (command.Pipeline
                      children: [
                        (C {<echo>} {(DQ (${ Id.VSub_Name m) <_> ($ Id.VSub_Number 6))})
                        (C {<sed>} {(SQ <'s/\\//_/g'>)})
                      ]
                      negated: F
                      stderr_indices: []
                    )
                  ]
                  spids: [3833 3834 3911 -1]
                )
                (case_arm
                  pat_list: [{<rel>}]
                  action: [
                    (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number 3))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'm='> name:m)
                          op: assign_op.Equal
                          rhs: {(DQ <debootstrap.invalid>)}
                          spids: [3926]
                        )
                      ]
                      redirects: []
                    )
                    (C {<printf>} {(DQ <'%s'>)} {(DQ ($ Id.VSub_DollarName APTSTATE) <'/lists/'>)})
                    (command.Pipeline
                      children: [
                        (C {<echo>} {(DQ (${ Id.VSub_Name m) <_> ($ Id.VSub_Number 4))})
                        (C {<sed>} {(SQ <'s/\\//_/g'>)})
                      ]
                      negated: F
                      stderr_indices: []
                    )
                  ]
                  spids: [3914 3915 3991 -1]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_release_checksum
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'reldest='> (DQ ($ Id.VSub_Number 1))})
            (C {<local>} {<Id.Lit_VarLike 'path='> (DQ ($ Id.VSub_Number 2))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {(DQ ($ Id.VSub_DollarName DEBOOTSTRAP_CHECKSUM_FIELD))} {<Id.Lit_Equals '='>} {<MD5SUM>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<local>} {<Id.Lit_VarLike 'match='> (DQ <'^[Mm][Dd]5[Ss][Uu][Mm]'>)})]
                  spids: [4027 4042]
                )
              ]
              else_action: [
                (C {<local>} 
                  {<Id.Lit_VarLike 'match='> 
                    (DQ <'^[Ss][Hh][Aa]'> ($ Id.VSub_DollarName SHA_SIZE) <':'>)
                  }
                )
              ]
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  words: [{<sed>} {<-n>} {(DQ <'/'> ($ Id.VSub_DollarName match) <'/,/^[^ ]/p'>)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {(DQ ($ Id.VSub_DollarName reldest))}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<read>} {<a>} {<b>} {<c>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      children: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName c))} 
                                          {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName path))} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.Sentence
                                  child: 
                                    (C {<echo>} 
                                      {(DQ ($ Id.VSub_DollarName a) <' '> ($ Id.VSub_DollarName b))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                              spids: [4103 4120]
                            )
                          ]
                          else_action: []
                          redirects: []
                        )
                      ]
                    )
                  redirects: []
                )
                (C {<head>} {<-n>} {<1>})
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: extract_release_components
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Sentence
              child: (C {<local>} {<Id.Lit_VarLike 'reldest='> (DQ ($ Id.VSub_Number 1))})
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TMPCOMPONENTS='> name:TMPCOMPONENTS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (C {<sed>} {<-n>} {(SQ <'s/Components: *//p'>)} 
                              {(DQ ($ Id.VSub_DollarName reldest))}
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  spids: [4166]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [c]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName TMPCOMPONENTS)}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<eval>} 
                      {
                        (DQ <'\n'> <'\t\tcase '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\"'>
                            ch: '"'
                          ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <c> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\"'>
                            ch: '"'
                          ) <' in\n'> <'\t\t    '> ($ Id.VSub_DollarName USE_COMPONENTS) <')\n'> <'\t\t\tCOMPONENTS='> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\"'>
                            ch: '"'
                          ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'COMPONENTS '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\$'>
                            ch: '$'
                          ) <c> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'\n'> <'\t\t\t;;\n'> 
                          <'\t\tesac\n'> <'\t\t'>
                        )
                      }
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPONENTS='> name:COMPONENTS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<echo>} {($ Id.VSub_DollarName COMPONENTS)})
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  spids: [4227]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName COMPONENTS))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<mv>} {(DQ ($ Id.VSub_DollarName reldest))} 
                      {(DQ ($ Id.VSub_DollarName reldest) <.malformed>)}
                    )
                    (C {<error>} {<1>} {<INVALIDREL>} {(DQ <'Invalid Release file, no valid components'>)})
                  ]
                  spids: [4237 4250]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CODENAME='> name:CODENAME)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [4281]
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: validate_suite
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'reldest='> (DQ ($ Id.VSub_Number 1))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CODENAME='> name:CODENAME)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<sed>} {<-n>} {(DQ <'s/^Codename: *//p'>)} 
                            {(DQ ($ Id.VSub_DollarName reldest))}
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [4302]
                )
              ]
              redirects: []
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'suite='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (C {<sed>} {<-n>} {(DQ <'s/^Suite: *//p'>)} {(DQ ($ Id.VSub_DollarName reldest))})
                  right: <Id.Eof_RParen _>
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName SUITE))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName suite))} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName SUITE))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName CODENAME))} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<error>} {<1>} {<WRONGSUITE>} 
                      {(DQ <'Asked to install suite %s, but got %s (codename: %s) from mirror'>)} {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName suite))} 
                      {(DQ ($ Id.VSub_DollarName CODENAME))}
                    )
                  ]
                  spids: [4337 4372]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: split_inline_sig
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'inreldest='> (DQ ($ Id.VSub_Number 1))})
            (C {<local>} {<Id.Lit_VarLike 'reldest='> (DQ ($ Id.VSub_Number 2))})
            (C {<local>} {<Id.Lit_VarLike 'relsigdest='> (DQ ($ Id.VSub_Number 3))})
            (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName reldest))} 
              {(DQ ($ Id.VSub_DollarName relsigdest))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nl='> name:nl)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [4469]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'state='> name:state)
                  op: assign_op.Equal
                  rhs: {<pre-begin>}
                  spids: [4474]
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{<read>} {<-r>} {<line>}]
                          redirects: []
                          more_env: [(env_pair name:IFS val:(rhs_word.Empty) spids:[4480])]
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Name state))}
                      arms: [
                        (case_arm
                          pat_list: [{<pre-begin>}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {(DQ <x> (${ Id.VSub_Name line))} 
                                              {<Id.Lit_Equals '='>} {(DQ <'x-----BEGIN PGP SIGNED MESSAGE-----'>)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'state='>
                                              name: state
                                            )
                                          op: assign_op.Equal
                                          rhs: {<begin>}
                                          spids: [4530]
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [4507 4527]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                          spids: [4503 4504 4537 -1]
                        )
                        (case_arm
                          pat_list: [{<begin>}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {(DQ <x> (${ Id.VSub_Name line))} 
                                              {<Id.Lit_Equals '='>} {(DQ <x>)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'state='>
                                              name: state
                                            )
                                          op: assign_op.Equal
                                          rhs: {<Id.KW_Data data>}
                                          spids: [4567]
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [4544 4564]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                          spids: [4540 4541 4574 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.KW_Data data>}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {(DQ <x> (${ Id.VSub_Name line))} 
                                              {<Id.Lit_Equals '='>} {(DQ <'x-----BEGIN PGP SIGNATURE-----'>)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Simple
                                      words: [
                                        {<printf>}
                                        {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)}
                                        {(DQ (${ Id.VSub_Name line))}
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {(DQ ($ Id.VSub_DollarName relsigdest))}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'state='>
                                              name: state
                                            )
                                          op: assign_op.Equal
                                          rhs: {<signature>}
                                          spids: [4625]
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [4581 4601]
                                )
                              ]
                              else_action: [
                                (command.Simple
                                  words: [
                                    {<printf>}
                                    {(DQ (${ Id.VSub_Name nl) <'%s'>)}
                                    {(DQ (${ Id.VSub_Name line))}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_DGreat '>>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {(DQ ($ Id.VSub_DollarName reldest))}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nl='> name:nl)
                                      op: assign_op.Equal
                                      rhs: {(DQ <Id.Lit_BadBackslash '\\'> <n>)}
                                      spids: [4654]
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [4577 4578 4664 -1]
                        )
                        (case_arm
                          pat_list: [{<signature>}]
                          action: [
                            (command.Simple
                              words: [
                                {<printf>}
                                {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)}
                                {(DQ (${ Id.VSub_Name line))}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(DQ ($ Id.VSub_DollarName relsigdest))}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {(DQ <x> (${ Id.VSub_Name line))} 
                                              {<Id.Lit_Equals '='>} {(DQ <'x-----END PGP SIGNATURE-----'>)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                                  spids: [4692 4712]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                          spids: [4667 4668 -1 4721]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_DollarName inreldest))}
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: download_release_sig
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'm1='> (DQ ($ Id.VSub_Number 1))})
            (C {<local>} {<Id.Lit_VarLike 'inreldest='> (DQ ($ Id.VSub_Number 2))})
            (C {<local>} {<Id.Lit_VarLike 'reldest='> (DQ ($ Id.VSub_Number 3))})
            (C {<local>} {<Id.Lit_VarLike 'relsigdest='> (DQ ($ Id.VSub_Number 4))})
            (C {<progress>} {<0>} {<100>} {<DOWNREL>} {(DQ <'Downloading Release file'>)})
            (C {<progress_next>} {<100>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<get>} 
                              {
                                (DQ ($ Id.VSub_DollarName m1) <'/dists/'> ($ Id.VSub_DollarName SUITE) 
                                  <'/InRelease'>
                                )
                              } {(DQ ($ Id.VSub_DollarName inreldest))} {<nocache>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<split_inline_sig>} {(DQ ($ Id.VSub_DollarName inreldest))} 
                      {(DQ ($ Id.VSub_DollarName reldest))} {(DQ ($ Id.VSub_DollarName relsigdest))}
                    )
                    (C {<progress>} {<100>} {<100>} {<DOWNREL>} {(DQ <'Downloading Release file'>)})
                  ]
                  spids: [4794 4812]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<get>} 
                      {
                        (DQ ($ Id.VSub_DollarName m1) <'/dists/'> ($ Id.VSub_DollarName SUITE) 
                          <'/Release'>
                        )
                      } {(DQ ($ Id.VSub_DollarName reldest))} {<nocache>}
                    )
                    (C {<error>} {<1>} {<NOGETREL>} {(DQ <'Failed getting release file %s'>)} 
                      {
                        (DQ ($ Id.VSub_DollarName m1) <'/dists/'> ($ Id.VSub_DollarName SUITE) 
                          <'/Release'>
                        )
                      }
                    )
                  ]
                )
                (C {<progress>} {<100>} {<100>} {<DOWNREL>} {(DQ <'Downloading Release file'>)})
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName KEYRING))} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} {<-z>} 
                                  {(DQ ($ Id.VSub_DollarName DISABLE_KEYRING))} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<progress>} {<0>} {<100>} {<DOWNRELSIG>} 
                      {(DQ <'Downloading Release file signature'>)}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {<-f>} 
                                          {(DQ ($ Id.VSub_DollarName relsigdest))} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                      negated: T
                                      stderr_indices: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<progress_next>} {<50>})
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<get>} 
                                  {
                                    (DQ ($ Id.VSub_DollarName m1) <'/dists/'> 
                                      ($ Id.VSub_DollarName SUITE) <'/Release.gpg'>
                                    )
                                  } {(DQ ($ Id.VSub_DollarName relsigdest))} {<nocache>}
                                )
                                (C {<error>} {<1>} {<NOGETRELSIG>} 
                                  {(DQ <'Failed getting release signature file %s'>)} {(DQ ($ Id.VSub_DollarName m1) <'/dists/'> ($ Id.VSub_DollarName SUITE) <'/Release.gpg'>)}
                                )
                              ]
                            )
                            (C {<progress>} {<50>} {<100>} {<DOWNRELSIG>} 
                              {(DQ <'Downloading Release file signature'>)}
                            )
                          ]
                          spids: [4939 4954]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {<info>} {<RELEASESIG>} {(DQ <'Checking Release signature'>)})
                    (command.Pipeline
                      children: [
                        (command.Subshell
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<gpgv>} {<--status-fd>} {<1>} {<--keyring>} 
                                  {(DQ ($ Id.VSub_DollarName KEYRING))} {<--ignore-time-conflict>} {(DQ ($ Id.VSub_DollarName relsigdest))} {(DQ ($ Id.VSub_DollarName reldest))}
                                )
                                (C {<true>})
                              ]
                            )
                          redirects: []
                        )
                        (C {<read_gpg_status>})
                      ]
                      negated: F
                      stderr_indices: []
                    )
                    (C {<progress>} {<100>} {<100>} {<DOWNRELSIG>} 
                      {(DQ <'Downloading Release file signature'>)}
                    )
                  ]
                  spids: [4898 4923]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: download_release_indices
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'm1='> 
                (DQ 
                  (braced_var_sub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name MIRRORS>
                    var_name: MIRRORS
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VOp1_DPercent '%%'>
                        arg_word: {<' '> <Id.Lit_Other '*'>}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'inreldest='> 
                (DQ ($ Id.VSub_DollarName TARGET) <'/'> 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (C {($ Id.VSub_DollarName DLDEST)} {<rel>} {(DQ ($ Id.VSub_DollarName SUITE))} 
                        {(DQ ($ Id.VSub_DollarName m1))} {(DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/InRelease'>)}
                      )
                    right: <Id.Eof_RParen _>
                  )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'reldest='> 
                (DQ ($ Id.VSub_DollarName TARGET) <'/'> 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (C {($ Id.VSub_DollarName DLDEST)} {<rel>} {(DQ ($ Id.VSub_DollarName SUITE))} 
                        {(DQ ($ Id.VSub_DollarName m1))} {(DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/Release'>)}
                      )
                    right: <Id.Eof_RParen _>
                  )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'relsigdest='> 
                (DQ ($ Id.VSub_DollarName TARGET) <'/'> 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (C {($ Id.VSub_DollarName DLDEST)} {<rel>} {(DQ ($ Id.VSub_DollarName SUITE))} 
                        {(DQ ($ Id.VSub_DollarName m1))} {(DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/Release.gpg'>)}
                      )
                    right: <Id.Eof_RParen _>
                  )
                )
              }
            )
            (C {<download_release_sig>} {(DQ ($ Id.VSub_DollarName m1))} 
              {(DQ ($ Id.VSub_DollarName inreldest))} {(DQ ($ Id.VSub_DollarName reldest))} {(DQ ($ Id.VSub_DollarName relsigdest))}
            )
            (C {<validate_suite>} {(DQ ($ Id.VSub_DollarName reldest))})
            (C {<extract_release_components>} {($ Id.VSub_DollarName reldest)})
            (C {<local>} {<Id.Lit_VarLike 'totalpkgs='> <0>})
            (command.ForEach
              iter_names: [c]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName COMPONENTS)}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'subpath='> 
                        (DQ ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) 
                          <'/Packages'>
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'xzi='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName reldest))} 
                                {(DQ ($ Id.VSub_DollarName subpath) <.xz>)}
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'bz2i='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName reldest))} 
                                {(DQ ($ Id.VSub_DollarName subpath) <.bz2>)}
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'gzi='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName reldest))} 
                                {(DQ ($ Id.VSub_DollarName subpath) <.gz>)}
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'normi='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName reldest))} 
                                {(DQ ($ Id.VSub_DollarName subpath))}
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        )
                      }
                    )
                    (C {<local>} {<Id.Lit_VarLike 'i='>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName normi))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName normi))}
                                  spids: [5364]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [5344 5361]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<in_path>} {<bunzip2>})
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName bz2i))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName bz2i))}
                                  spids: [5396]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [5370 5393]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<in_path>} {<unxz>})
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName xzi))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName xzi))}
                                  spids: [5428]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [5402 5425]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<in_path>} {<gunzip>})
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName gzi))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName gzi))}
                                  spids: [5460]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [5434 5457]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName i))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'totalpkgs='>
                                      name: totalpkgs
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (word_part.ArithSub
                                          anode: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_Plus
                                              left: {($ Id.VSub_DollarName totalpkgs)}
                                              right: 
                                                {
                                                  (braced_var_sub
                                                    left: <Id.Left_DollarBrace '${'>
                                                    token: <Id.VSub_Name i>
                                                    var_name: i
                                                    suffix_op: 
                                                      (suffix_op.Unary
                                                        op: <Id.VOp1_Pound '#'>
                                                        arg_word: {<Id.Lit_Other '*'> <' '>}
                                                      )
                                                    right: <Id.Right_DollarBrace '}'>
                                                  )
                                                }
                                            )
                                        )
                                      )
                                    }
                                  spids: [5489]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [5469 5486]
                        )
                      ]
                      else_action: [
                        (C {<mv>} {(DQ ($ Id.VSub_DollarName reldest))} 
                          {(DQ ($ Id.VSub_DollarName reldest) <.malformed>)}
                        )
                        (C {<error>} {<1>} {<MISSINGRELENTRY>} 
                          {(DQ <'Invalid Release file, no entry for %s'>)} {(DQ ($ Id.VSub_DollarName subpath))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (C {<local>} {<Id.Lit_VarLike 'donepkgs='> <0>})
            (C {<local>} {<pkgdest>})
            (C {<progress>} {<0>} {($ Id.VSub_DollarName totalpkgs)} {<DOWNPKGS>} 
              {(DQ <'Downloading Packages files'>)}
            )
            (command.ForEach
              iter_names: [c]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName COMPONENTS)}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'subpath='> 
                        (DQ ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) 
                          <'/Packages'>
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'path='> 
                        (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> ($ Id.VSub_DollarName subpath))
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'xzi='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName reldest))} 
                                {(DQ ($ Id.VSub_DollarName subpath) <.xz>)}
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'bz2i='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName reldest))} 
                                {(DQ ($ Id.VSub_DollarName subpath) <.bz2>)}
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'gzi='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName reldest))} 
                                {(DQ ($ Id.VSub_DollarName subpath) <.gz>)}
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'normi='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName reldest))} 
                                {(DQ ($ Id.VSub_DollarName subpath))}
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        )
                      }
                    )
                    (C {<local>} {<Id.Lit_VarLike 'ext='>})
                    (C {<local>} {<Id.Lit_VarLike 'i='>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName normi))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName ext) <' '> ($ Id.VSub_DollarName normi) 
                                        <' .'>
                                      )
                                    }
                                  spids: [5717]
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName normi))}
                                  spids: [5726]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [5697 5714]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<in_path>} {<unxz>})
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName xzi))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName ext) <' '> ($ Id.VSub_DollarName xzi) 
                                        <' xz'>
                                      )
                                    }
                                  spids: [5761]
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name i>
                                          var_name: i
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op: <Id.VTest_ColonHyphen _>
                                              arg_word: {($ Id.VSub_DollarName xzi)}
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  spids: [5770]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [5735 5758]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<in_path>} {<bunzip2>})
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName bz2i))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName ext) <' '> ($ Id.VSub_DollarName bz2i) 
                                        <' bz2'>
                                      )
                                    }
                                  spids: [5809]
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name i>
                                          var_name: i
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op: <Id.VTest_ColonHyphen _>
                                              arg_word: {($ Id.VSub_DollarName bz2i)}
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  spids: [5818]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [5783 5806]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<in_path>} {<gunzip>})
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName gzi))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName ext) <' '> ($ Id.VSub_DollarName gzi) 
                                        <' gz'>
                                      )
                                    }
                                  spids: [5857]
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name i>
                                          var_name: i
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op: <Id.VTest_ColonHyphen _>
                                              arg_word: {($ Id.VSub_DollarName gzi)}
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  spids: [5866]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [5831 5854]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {<progress_next>} 
                      {
                        (DQ 
                          (word_part.ArithSub
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Plus
                                left: {($ Id.VSub_DollarName donepkgs)}
                                right: 
                                  {
                                    (braced_var_sub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name i>
                                      var_name: i
                                      suffix_op: 
                                        (suffix_op.Unary
                                          op: <Id.VOp1_Pound '#'>
                                          arg_word: {<Id.Lit_Other '*'> <' '>}
                                        )
                                      right: <Id.Right_DollarBrace '}'>
                                    )
                                  }
                              )
                          )
                        )
                      }
                    )
                    (command.ForEach
                      iter_names: [m]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName MIRRORS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'pkgdest='>
                                      name: pkgdest
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName TARGET) <'/'> 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} 
                                              {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m))} 
                                              {(DQ ($ Id.VSub_DollarName path))}
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  spids: [5910]
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<get>} 
                                              {
                                                (DQ ($ Id.VSub_DollarName m) <'/'> 
                                                  ($ Id.VSub_DollarName path)
                                                )
                                              } {(DQ ($ Id.VSub_DollarName pkgdest))} {($ Id.VSub_DollarName ext)}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Sentence
                                      child: (command.ControlFlow token:<Id.ControlFlow_Break break>)
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  spids: [5942 5959]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                        )
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} 
                                      {(DQ ($ Id.VSub_DollarName pkgdest))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<error>} {<1>} {<COULDNTDL>} {(DQ <'Couldn\'t download %s'>)} 
                              {(DQ ($ Id.VSub_DollarName path))}
                            )
                          ]
                          spids: [5970 5985]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'donepkgs='> name:donepkgs)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.ArithSub
                                  anode: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: {($ Id.VSub_DollarName donepkgs)}
                                      right: 
                                        {
                                          (braced_var_sub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name i>
                                            var_name: i
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op: <Id.VOp1_Pound '#'>
                                                arg_word: {<Id.Lit_Other '*'> <' '>}
                                              )
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        }
                                    )
                                )
                              )
                            }
                          spids: [6006]
                        )
                      ]
                      redirects: []
                    )
                    (C {<progress>} {($ Id.VSub_DollarName donepkgs)} {($ Id.VSub_DollarName totalpkgs)} 
                      {<DOWNPKGS>} {(DQ <'Downloading Packages files'>)}
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_package_sizes
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Sentence
              child: (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number 1))})
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.Sentence
              child: (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_Number 1))})
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.Pipeline
              children: [
                (C {($ Id.VSub_DollarName PKGDETAILS)} {<PKGS>} {(DQ ($ Id.VSub_DollarName m))} 
                  {(DQ ($ Id.VSub_DollarName pkgdest))} {(DQ ($ Id.VSub_At '@'))}
                )
                (command.Subshell
                  child: 
                    (command.CommandList
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'newleft='> name:newleft)
                              op: assign_op.Equal
                              rhs: {(DQ )}
                              spids: [6097]
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'totaldebs='>
                                  name: totaldebs
                                )
                              op: assign_op.Equal
                              rhs: {<0>}
                              spids: [6102]
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'countdebs='>
                                  name: countdebs
                                )
                              op: assign_op.Equal
                              rhs: {<0>}
                              spids: [6106]
                            )
                          ]
                          redirects: []
                        )
                        (command.WhileUntil
                          keyword: <Id.KW_While while>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<read>} {<p>} {<details>})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          body: 
                            (command.DoGroup
                              children: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(DQ ($ Id.VSub_DollarName details))} {<Id.Lit_Equals '='>} {(DQ <->)} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'newleft='>
                                                  name: newleft
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName newleft) <' '> 
                                                    ($ Id.VSub_DollarName p)
                                                  )
                                                }
                                              spids: [6142]
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      spids: [6122 6139]
                                    )
                                  ]
                                  else_action: [
                                    (command.Sentence
                                      child: 
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'size='>
                                                  name: size
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ 
                                                    (braced_var_sub
                                                      left: <Id.Left_DollarBrace '${'>
                                                      token: <Id.VSub_Name details>
                                                      var_name: details
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          op: <Id.VOp1_DPound '##'>
                                                          arg_word: {<Id.Lit_Other '*'> <' '>}
                                                        )
                                                      right: <Id.Right_DollarBrace '}'>
                                                    )
                                                  )
                                                }
                                              spids: [6153]
                                            )
                                          ]
                                          redirects: []
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'totaldebs='>
                                              name: totaldebs
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (word_part.ArithSub
                                                  anode: 
                                                    (arith_expr.Binary
                                                      op_id: Id.Arith_Plus
                                                      left: {($ Id.VSub_DollarName totaldebs)}
                                                      right: {($ Id.VSub_DollarName size)}
                                                    )
                                                )
                                              )
                                            }
                                          spids: [6165]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'countdebs='>
                                              name: countdebs
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (word_part.ArithSub
                                                  anode: 
                                                    (arith_expr.Binary
                                                      op_id: Id.Arith_Plus
                                                      left: {($ Id.VSub_DollarName countdebs)}
                                                      right: {<Id.Lit_Digits 1>}
                                                    )
                                                )
                                              )
                                            }
                                          spids: [6178]
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                            )
                          redirects: []
                        )
                        (C {<echo>} 
                          {
                            (DQ ($ Id.VSub_DollarName countdebs) <' '> ($ Id.VSub_DollarName totaldebs) 
                              ($ Id.VSub_DollarName newleft)
                            )
                          }
                        )
                      ]
                    )
                  redirects: []
                )
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: download_debs
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number 1))})
            (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_Number 2))})
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (C {<shift>})
            (command.Pipeline
              children: [
                (C {($ Id.VSub_DollarName PKGDETAILS)} {<PKGS>} {(DQ ($ Id.VSub_DollarName m))} 
                  {(DQ ($ Id.VSub_DollarName pkgdest))} {(DQ ($ Id.VSub_At '@'))}
                )
                (command.Subshell
                  child: 
                    (command.CommandList
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'leftover='> name:leftover)
                              op: assign_op.Equal
                              rhs: {(DQ )}
                              spids: [6267]
                            )
                          ]
                          redirects: []
                        )
                        (command.WhileUntil
                          keyword: <Id.KW_While while>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<read>} {<p>} {<ver>} {<arc>} {<mdup>} {<fil>} {<checksum>} {<size>})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          body: 
                            (command.DoGroup
                              children: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(DQ ($ Id.VSub_DollarName ver))} {<Id.Lit_Equals '='>} {(DQ <->)} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'leftover='>
                                                  name: leftover
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName leftover) <' '> 
                                                    ($ Id.VSub_DollarName p)
                                                  )
                                                }
                                              spids: [6314]
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      spids: [6294 6311]
                                    )
                                  ]
                                  else_action: [
                                    (C {<progress_next>} 
                                      {
                                        (DQ 
                                          (word_part.ArithSub
                                            anode: 
                                              (arith_expr.Binary
                                                op_id: Id.Arith_Plus
                                                left: {($ Id.VSub_DollarName dloaddebs)}
                                                right: {($ Id.VSub_DollarName size)}
                                              )
                                          )
                                        )
                                      }
                                    )
                                    (C {<local>} 
                                      {<Id.Lit_VarLike 'debdest='> 
                                        (DQ 
                                          (command_sub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (C {($ Id.VSub_DollarName DLDEST)} {<deb>} 
                                                {(DQ ($ Id.VSub_DollarName p))} {(DQ ($ Id.VSub_DollarName ver))} {(DQ ($ Id.VSub_DollarName arc))} {(DQ ($ Id.VSub_DollarName m))} 
                                                {(DQ ($ Id.VSub_DollarName fil))}
                                              )
                                            right: <Id.Eof_RParen _>
                                          )
                                        )
                                      }
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<get>} 
                                                      {
                                                        (DQ ($ Id.VSub_DollarName m) <'/'> 
                                                          ($ Id.VSub_DollarName fil)
                                                        )
                                                      } {(DQ ($ Id.VSub_DollarName TARGET) <'/'> ($ Id.VSub_DollarName debdest))} 
                                                      {(DQ ($ Id.VSub_DollarName checksum))} {(DQ ($ Id.VSub_DollarName size))}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'dloaddebs='>
                                                      name: dloaddebs
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (word_part.ArithSub
                                                          anode: 
                                                            (arith_expr.Binary
                                                              op_id: Id.Arith_Plus
                                                              left: {($ Id.VSub_DollarName dloaddebs)}
                                                              right: {($ Id.VSub_DollarName size)}
                                                            )
                                                        )
                                                      )
                                                    }
                                                  spids: [6399]
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.Simple
                                              words: [
                                                {<echo>}
                                                {
                                                  (DQ ($ Id.VSub_DollarName p) <' '> 
                                                    ($ Id.VSub_DollarName ver) <' '> ($ Id.VSub_DollarName m) <'/'> ($ Id.VSub_DollarName fil)
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_DGreat '>>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: 
                                                    {($ Id.VSub_DollarName TARGET) 
                                                      <'/debootstrap/deburis'>
                                                    }
                                                )
                                              ]
                                              more_env: []
                                              do_fork: T
                                            )
                                            (command.Simple
                                              words: [
                                                {<echo>}
                                                {
                                                  (DQ ($ Id.VSub_DollarName p) <' '> 
                                                    ($ Id.VSub_DollarName debdest)
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_DGreat '>>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: 
                                                    {($ Id.VSub_DollarName TARGET) 
                                                      <'/debootstrap/debpaths'>
                                                    }
                                                )
                                              ]
                                              more_env: []
                                              do_fork: T
                                            )
                                          ]
                                          spids: [6371 6396]
                                        )
                                      ]
                                      else_action: [
                                        (C {<warning>} {<COULDNTDL>} 
                                          {(DQ <'Couldn\'t download package %s (ver %s arch %s)'>)} {(DQ ($ Id.VSub_DollarName p))} {(DQ ($ Id.VSub_DollarName ver))} {(DQ ($ Id.VSub_DollarName arc))}
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'leftover='>
                                                  name: leftover
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName leftover) <' '> 
                                                    ($ Id.VSub_DollarName p)
                                                  )
                                                }
                                              spids: [6466]
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                            )
                          redirects: []
                        )
                        (command.Simple
                          words: [
                            {<echo>}
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name leftover>
                                var_name: leftover
                                suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<' '>})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<5>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                    )
                  redirects: []
                )
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: download_release
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'm1='> 
                (DQ 
                  (braced_var_sub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name MIRRORS>
                    var_name: MIRRORS
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VOp1_DPercent '%%'>
                        arg_word: {<' '> <Id.Lit_Other '*'>}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                )
              }
            )
            (C {<local>} {<Id.Lit_VarLike 'numdebs='> (DQ ($ Id.VSub_Pound '#'))})
            (C {<local>} {<Id.Lit_VarLike 'countdebs='> <0>})
            (C {<progress>} {($ Id.VSub_DollarName countdebs)} {($ Id.VSub_DollarName numdebs)} 
              {<SIZEDEBS>} {(DQ <'Finding package sizes'>)}
            )
            (C {<local>} {<Id.Lit_VarLike 'totaldebs='> <0>})
            (C {<local>} {<Id.Lit_VarLike 'leftoverdebs='> (DQ ($ Id.VSub_Star '*'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'leftoverdebs='> name:leftoverdebs)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<printf>} {(DQ ($ Id.VSub_DollarName leftoverdebs))})
                              (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                              (C {<sort>} {<-u>})
                              (C {<tr>} {(SQ <'\\n'>)} {(SQ <' '>)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [6570]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'numdebs='> name:numdebs)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<printf>} {(DQ ($ Id.VSub_DollarName leftoverdebs))})
                              (C {<wc>} {<-w>})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [6604]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [c]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName COMPONENTS)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName countdebs))} 
                                      {<-ge>} {(DQ ($ Id.VSub_DollarName numdebs))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: (command.ControlFlow token:<Id.ControlFlow_Break break>)
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [6631 6648]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'path='> 
                        (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> ($ Id.VSub_DollarName c) 
                          <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'>
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'pkgdest='> 
                        (DQ ($ Id.VSub_DollarName TARGET) <'/'> 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} 
                                {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m1))} 
                                {(DQ ($ Id.VSub_DollarName path))}
                              )
                            right: <Id.Eof_RParen _>
                          )
                        )
                      }
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} 
                                      {(DQ ($ Id.VSub_DollarName pkgdest))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: (command.ControlFlow token:<Id.ControlFlow_Continue continue>)
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [6705 6720]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {<info>} {<CHECKINGSIZES>} {(DQ <'Checking component %s on %s...'>)} 
                      {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName m1))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'leftoverdebs='>
                              name: leftoverdebs
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (C {<get_package_sizes>} {(DQ ($ Id.VSub_DollarName m1))} 
                                      {(DQ ($ Id.VSub_DollarName pkgdest))} {($ Id.VSub_DollarName leftoverdebs)}
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          spids: [6747]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'countdebs='> name:countdebs)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: {($ Id.VSub_DollarName countdebs)}
                                    right: 
                                      {
                                        (braced_var_sub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name leftoverdebs>
                                          var_name: leftoverdebs
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op: <Id.VOp1_DPercent '%%'>
                                              arg_word: {<' '> <Id.Lit_Other '*'>}
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      }
                                  )
                              )
                            }
                          spids: [6766]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'leftoverdebs='>
                              name: leftoverdebs
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name leftoverdebs>
                                var_name: leftoverdebs
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VOp1_Pound '#'>
                                    arg_word: {<Id.Lit_Other '*'> <' '>}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          spids: [6782]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'totaldebs='> name:totaldebs)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name leftoverdebs>
                                var_name: leftoverdebs
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VOp1_DPercent '%%'>
                                    arg_word: {<' '> <Id.Lit_Other '*'>}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          spids: [6792]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'leftoverdebs='>
                              name: leftoverdebs
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name leftoverdebs>
                                var_name: leftoverdebs
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VOp1_Pound '#'>
                                    arg_word: {<Id.Lit_Other '*'> <' '>}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          spids: [6801]
                        )
                      ]
                      redirects: []
                    )
                    (C {<progress>} {($ Id.VSub_DollarName countdebs)} {($ Id.VSub_DollarName numdebs)} 
                      {<SIZEDEBS>} {(DQ <'Finding package sizes'>)}
                    )
                  ]
                )
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName countdebs))} {<-ne>} 
                              {(DQ ($ Id.VSub_DollarName numdebs))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<error>} {<1>} {<LEFTOVERDEBS>} {(DQ <'Couldn\'t find these debs: %s'>)} 
                      {(DQ ($ Id.VSub_DollarName leftoverdebs))}
                    )
                  ]
                  spids: [6828 6845]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<local>} {<Id.Lit_VarLike 'dloaddebs='> <0>})
            (C {<progress>} {($ Id.VSub_DollarName dloaddebs)} {($ Id.VSub_DollarName totaldebs)} 
              {<DOWNDEBS>} {(DQ <'Downloading packages'>)}
            )
            (command.Simple
              words: [{<Id.Lit_Colon ':'>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName TARGET) <'/debootstrap/debpaths'>}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pkgs_to_get='> name:pkgs_to_get)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Star '*'))}
                  spids: [6894]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [c]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName COMPONENTS)}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'path='> 
                        (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> ($ Id.VSub_DollarName c) 
                          <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'>
                        )
                      }
                    )
                    (command.ForEach
                      iter_names: [m]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName MIRRORS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<local>} 
                              {<Id.Lit_VarLike 'pkgdest='> 
                                (DQ ($ Id.VSub_DollarName TARGET) <'/'> 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} 
                                        {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m))} 
                                        {(DQ ($ Id.VSub_DollarName path))}
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                )
                              }
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} 
                                              {(DQ ($ Id.VSub_DollarName pkgdest))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Sentence
                                      child: 
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Continue continue>
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  spids: [6972 6987]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'pkgs_to_get='>
                                      name: pkgs_to_get
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              words: [
                                                {<download_debs>}
                                                {(DQ ($ Id.VSub_DollarName m))}
                                                {(DQ ($ Id.VSub_DollarName pkgdest))}
                                                {($ Id.VSub_DollarName pkgs_to_get)}
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_GreatAnd '5>&'>
                                                  loc: (redir_loc.Fd fd:5)
                                                  arg: {<1>}
                                                )
                                                (redir
                                                  op: <Id.Redir_GreatAnd '1>&'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {<6>}
                                                )
                                              ]
                                              more_env: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  spids: [6995]
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-z>} 
                                              {(DQ ($ Id.VSub_DollarName pkgs_to_get))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Sentence
                                      child: (command.ControlFlow token:<Id.ControlFlow_Break break>)
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  spids: [7019 7032]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                        )
                      redirects: [
                        (redir
                          op: <Id.Redir_GreatAnd '6>&'>
                          loc: (redir_loc.Fd fd:6)
                          arg: {<1>}
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-z>} 
                                      {(DQ ($ Id.VSub_DollarName pkgs_to_get))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: (command.ControlFlow token:<Id.ControlFlow_Break break>)
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [7046 7059]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (C {<progress>} {($ Id.VSub_DollarName dloaddebs)} {($ Id.VSub_DollarName totaldebs)} 
              {<DOWNDEBS>} {(DQ <'Downloading packages'>)}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName pkgs_to_get))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<error>} {<1>} {<COULDNTDLPKGS>} {(DQ <'Couldn\'t download packages: %s'>)} 
                      {(DQ ($ Id.VSub_DollarName pkgs_to_get))}
                    )
                  ]
                  spids: [7083 7100]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: download_main_indices
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'm1='> 
                (DQ 
                  (braced_var_sub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name MIRRORS>
                    var_name: MIRRORS
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VOp1_DPercent '%%'>
                        arg_word: {<' '> <Id.Lit_Other '*'>}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                )
              }
            )
            (C {<local>} {<Id.Lit_VarLike 'comp='> (DQ (${ Id.VSub_Name USE_COMPONENTS))})
            (C {<progress>} {<0>} {<100>} {<DOWNMAINPKGS>} {(DQ <'Downloading Packages file'>)})
            (C {<progress_next>} {<100>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName comp))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'comp='> name:comp)
                              op: assign_op.Equal
                              rhs: {<main>}
                              spids: [7188]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [7173 7186]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPONENTS='> name:COMPONENTS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<echo>} {($ Id.VSub_DollarName comp)})
                                (C {<tr>} {(SQ <'|'>)} {(SQ <' '>)})
                              ]
                              negated: F
                              stderr_indices: []
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  spids: [7195]
                )
              ]
              redirects: []
            )
            (C {<export>} {<COMPONENTS>})
            (command.ForEach
              iter_names: [m]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName MIRRORS)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ForEach
                      iter_names: [c]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName COMPONENTS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<local>} 
                              {<Id.Lit_VarLike 'path='> 
                                (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> 
                                  ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'>
                                )
                              }
                            )
                            (C {<local>} 
                              {<Id.Lit_VarLike 'pkgdest='> 
                                (DQ ($ Id.VSub_DollarName TARGET) <'/'> 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} 
                                        {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m))} 
                                        {(DQ ($ Id.VSub_DollarName path))}
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                )
                              }
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.AndOr
                                              ops: [Id.Op_DAmp]
                                              children: [
                                                (C {<in_path>} {<gunzip>})
                                                (C {<get>} 
                                                  {
                                                    (DQ ($ Id.VSub_DollarName m) <'/'> 
                                                      (${ Id.VSub_Name path) <.gz>
                                                    )
                                                  } {(DQ (${ Id.VSub_Name pkgdest) <.gz>)}
                                                )
                                              ]
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName pkgdest))})
                                    (C {<gunzip>} {(DQ ($ Id.VSub_DollarName pkgdest) <.gz>)})
                                  ]
                                  spids: [7295 7322]
                                )
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<get>} 
                                              {
                                                (DQ ($ Id.VSub_DollarName m) <'/'> 
                                                  ($ Id.VSub_DollarName path)
                                                )
                                              } {(DQ ($ Id.VSub_DollarName pkgdest))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [(C {<true>})]
                                  spids: [7342 7357]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (C {<progress>} {<100>} {<100>} {<DOWNMAINPKGS>} {(DQ <'Downloading Packages file'>)})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: download_main
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'm1='> 
                (DQ 
                  (braced_var_sub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name MIRRORS>
                    var_name: MIRRORS
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VOp1_DPercent '%%'>
                        arg_word: {<' '> <Id.Lit_Other '*'>}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                )
              }
            )
            (command.Simple
              words: [{<Id.Lit_Colon ':'>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName TARGET) <'/debootstrap/debpaths'>}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ForEach
              iter_names: [p]
              iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ForEach
                      iter_names: [c]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName COMPONENTS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<local>} {<Id.Lit_VarLike 'details='> (DQ )})
                            (command.ForEach
                              iter_names: [m]
                              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName MIRRORS)}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (C {<local>} 
                                      {<Id.Lit_VarLike 'path='> 
                                        (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> 
                                          ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'>
                                        )
                                      }
                                    )
                                    (C {<local>} 
                                      {<Id.Lit_VarLike 'pkgdest='> 
                                        (DQ ($ Id.VSub_DollarName TARGET) <'/'> 
                                          (command_sub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} 
                                                {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m))} 
                                                {(DQ ($ Id.VSub_DollarName path))}
                                              )
                                            right: <Id.Eof_RParen _>
                                          )
                                        )
                                      }
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} 
                                                      {(DQ ($ Id.VSub_DollarName pkgdest))} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.Sentence
                                              child: 
                                                (command.ControlFlow
                                                  token: <Id.ControlFlow_Continue continue>
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          spids: [7508 7523]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'details='>
                                              name: details
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (command_sub
                                                  left_token: <Id.Left_DollarParen '$('>
                                                  child: 
                                                    (C {($ Id.VSub_DollarName PKGDETAILS)} {<PKGS>} 
                                                      {(DQ ($ Id.VSub_DollarName m))} {(DQ ($ Id.VSub_DollarName pkgdest))} {(DQ ($ Id.VSub_DollarName p))}
                                                    )
                                                  right: <Id.Eof_RParen _>
                                                )
                                              )
                                            }
                                          spids: [7531]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<Id.Lit_LBracket '['>} 
                                                      {(DQ ($ Id.VSub_DollarName details))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName p) <' -'>)} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'details='>
                                                      name: details
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ )}
                                                  spids: [7574]
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ControlFlow
                                              token: <Id.ControlFlow_Continue continue>
                                            )
                                          ]
                                          spids: [7553 7571]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                    (command.Sentence
                                      child: 
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'size='>
                                                  name: size
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ 
                                                    (braced_var_sub
                                                      left: <Id.Left_DollarBrace '${'>
                                                      token: <Id.VSub_Name details>
                                                      var_name: details
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          op: <Id.VOp1_DPound '##'>
                                                          arg_word: {<Id.Lit_Other '*'> <' '>}
                                                        )
                                                      right: <Id.Right_DollarBrace '}'>
                                                    )
                                                  )
                                                }
                                              spids: [7585]
                                            )
                                          ]
                                          redirects: []
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'details='>
                                              name: details
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (braced_var_sub
                                                  left: <Id.Left_DollarBrace '${'>
                                                  token: <Id.VSub_Name details>
                                                  var_name: details
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      op: <Id.VOp1_Percent '%'>
                                                      arg_word: {<' '> <Id.Lit_Other '*'>}
                                                    )
                                                  right: <Id.Right_DollarBrace '}'>
                                                )
                                              )
                                            }
                                          spids: [7596]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.Sentence
                                      child: 
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'checksum='>
                                                  name: checksum
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ 
                                                    (braced_var_sub
                                                      left: <Id.Left_DollarBrace '${'>
                                                      token: <Id.VSub_Name details>
                                                      var_name: details
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          op: <Id.VOp1_DPound '##'>
                                                          arg_word: {<Id.Lit_Other '*'> <' '>}
                                                        )
                                                      right: <Id.Right_DollarBrace '}'>
                                                    )
                                                  )
                                                }
                                              spids: [7607]
                                            )
                                          ]
                                          redirects: []
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'details='>
                                              name: details
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (braced_var_sub
                                                  left: <Id.Left_DollarBrace '${'>
                                                  token: <Id.VSub_Name details>
                                                  var_name: details
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      op: <Id.VOp1_Percent '%'>
                                                      arg_word: {<' '> <Id.Lit_Other '*'>}
                                                    )
                                                  right: <Id.Right_DollarBrace '}'>
                                                )
                                              )
                                            }
                                          spids: [7618]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (C {<local>} 
                                      {<Id.Lit_VarLike 'debdest='> 
                                        (DQ 
                                          (command_sub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (C {($ Id.VSub_DollarName DLDEST)} {<deb>} 
                                                {($ Id.VSub_DollarName details)}
                                              )
                                            right: <Id.Eof_RParen _>
                                          )
                                        )
                                      }
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<get>} 
                                                      {
                                                        (DQ ($ Id.VSub_DollarName m) <'/'> 
                                                          (braced_var_sub
                                                            left: <Id.Left_DollarBrace '${'>
                                                            token: <Id.VSub_Name details>
                                                            var_name: details
                                                            suffix_op: 
                                                              (suffix_op.Unary
                                                                op: <Id.VOp1_DPound '##'>
                                                                arg_word: {<Id.Lit_Other '*'> <' '>}
                                                              )
                                                            right: <Id.Right_DollarBrace '}'>
                                                          )
                                                        )
                                                      } {(DQ ($ Id.VSub_DollarName TARGET) <'/'> ($ Id.VSub_DollarName debdest))} 
                                                      {(DQ ($ Id.VSub_DollarName checksum))} {(DQ ($ Id.VSub_DollarName size))}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.Simple
                                              words: [
                                                {<echo>}
                                                {
                                                  (DQ ($ Id.VSub_DollarName p) <' '> 
                                                    ($ Id.VSub_DollarName debdest)
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_DGreat '>>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: 
                                                    {($ Id.VSub_DollarName TARGET) 
                                                      <'/debootstrap/debpaths'>
                                                    }
                                                )
                                              ]
                                              more_env: []
                                              do_fork: T
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'details='>
                                                      name: details
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ <done>)}
                                                  spids: [7689]
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ControlFlow
                                              token: <Id.ControlFlow_Break break>
                                            )
                                          ]
                                          spids: [7643 7673]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                )
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(DQ ($ Id.VSub_DollarName details))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                                  spids: [7704 7721]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                        )
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName details))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <done>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<error>} {<1>} {<COULDNTDL>} {(DQ <'Couldn\'t download %s'>)} 
                              {(DQ ($ Id.VSub_DollarName p))}
                            )
                          ]
                          spids: [7733 7751]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_debs
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'field='> (DQ ($ Id.VSub_Number 1))})
            (C {<shift>})
            (C {<local>} {<m1>} {<c>})
            (command.ForEach
              iter_names: [m1]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName MIRRORS)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ForEach
                      iter_names: [c]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName COMPONENTS)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<local>} 
                              {<Id.Lit_VarLike 'path='> 
                                (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> 
                                  ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'>
                                )
                              }
                            )
                            (C {<local>} 
                              {<Id.Lit_VarLike 'pkgdest='> 
                                (DQ ($ Id.VSub_DollarName TARGET) <'/'> 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} 
                                        {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m1))} 
                                        {(DQ ($ Id.VSub_DollarName path))}
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                )
                              }
                            )
                            (C {<echo>} 
                              {
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (C {(DQ ($ Id.VSub_DollarName PKGDETAILS))} {<FIELD>} 
                                          {(DQ ($ Id.VSub_DollarName field))} {(DQ ($ Id.VSub_DollarName m1))} {(DQ ($ Id.VSub_DollarName pkgdest))} {(DQ ($ Id.VSub_At '@'))}
                                        )
                                        (C {<sed>} {(SQ <'s/ .*//'>)})
                                      ]
                                      negated: F
                                      stderr_indices: []
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              }
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'EXTRACTORS_SUPPORTED='>
              name: EXTRACTORS_SUPPORTED
            )
          op: assign_op.Equal
          rhs: {(DQ <'dpkg-deb ar'>)}
          spids: [7926]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'EXTRACT_DEB_TAR_OPTIONS='>
              name: EXTRACT_DEB_TAR_OPTIONS
            )
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [7931]
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: extract_dpkg_deb_field
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'pkg='> (DQ ($ Id.VSub_Number 1))})
            (C {<local>} {<Id.Lit_VarLike 'field='> (DQ ($ Id.VSub_Number 2))})
            (C {<dpkg-deb>} {<-f>} {(DQ ($ Id.VSub_DollarName pkg))} {(DQ ($ Id.VSub_DollarName field))})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: extract_dpkg_deb_data
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'pkg='> (DQ ($ Id.VSub_Number 1))})
            (command.Pipeline
              children: [
                (C {<dpkg-deb>} {<--fsys-tarfile>} {(DQ ($ Id.VSub_DollarName pkg))})
                (C {<tar>} {($ Id.VSub_DollarName EXTRACT_DEB_TAR_OPTIONS)} {<-xf>} {<->})
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: extract_ar_deb_field
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'pkg='> (DQ ($ Id.VSub_Number 1))})
            (C {<local>} {<Id.Lit_VarLike 'field='> (DQ ($ Id.VSub_Number 2))})
            (C {<local>} 
              {<Id.Lit_VarLike 'tarball='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<ar>} {<-t>} {(DQ ($ Id.VSub_DollarName pkg))})
                        (C {<grep>} {(DQ <'^control'> <Id.Lit_BadBackslash '\\'> <.tar>)})
                      ]
                      negated: F
                      stderr_indices: []
                    )
                  right: <Id.Eof_RParen _>
                )
              }
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName tarball))}
              arms: [
                (case_arm
                  pat_list: [{<control.tar.gz>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cat_cmd='> name:cat_cmd)
                          op: assign_op.Equal
                          rhs: {<zcat>}
                          spids: [8079]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [8076 8077 8082 -1]
                )
                (case_arm
                  pat_list: [{<control.tar.xz>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cat_cmd='> name:cat_cmd)
                          op: assign_op.Equal
                          rhs: {<xzcat>}
                          spids: [8088]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [8085 8086 8091 -1]
                )
                (case_arm
                  pat_list: [{<control.tar>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cat_cmd='> name:cat_cmd)
                          op: assign_op.Equal
                          rhs: {<cat>}
                          spids: [8097]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [8094 8095 8100 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<error>} {<1>} {<UNKNOWNCONTROLCOMP>} 
                      {(DQ <'Unknown compression type for %s in %s'>)} {(DQ ($ Id.VSub_DollarName tarball))} {(DQ ($ Id.VSub_DollarName pkg))}
                    )
                  ]
                  spids: [8103 8104 8124 -1]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              words: [{<type>} {($ Id.VSub_DollarName cat_cmd)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                                (redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<1>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Pipeline
                      children: [
                        (C {<ar>} {<-p>} {(DQ ($ Id.VSub_DollarName pkg))} 
                          {(DQ ($ Id.VSub_DollarName tarball))}
                        )
                        (C {($ Id.VSub_DollarName cat_cmd)})
                        (command.Simple
                          words: [{<tar>} {<-O>} {<-xf>} {<->} {<control>} {<'./control'>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (C {<grep>} {<-i>} {(DQ <'^'> ($ Id.VSub_DollarName field) <':'>)})
                        (C {<sed>} {<-e>} {(SQ <'s/[^:]*: *//'>)})
                        (C {<head>} {<-n>} {<1>})
                      ]
                      negated: F
                      stderr_indices: []
                    )
                  ]
                  spids: [8131 8144]
                )
              ]
              else_action: [
                (C {<error>} {<1>} {<UNPACKCMDUNVL>} 
                  {(DQ <'Extracting %s requires the %s command, which is not available'>)} {(DQ ($ Id.VSub_DollarName pkg))} {(DQ ($ Id.VSub_DollarName cat_cmd))}
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: extract_ar_deb_data
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'pkg='> (DQ ($ Id.VSub_Number 1))})
            (C {<local>} 
              {<Id.Lit_VarLike 'tarball='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<ar>} {<-t>} {(DQ ($ Id.VSub_DollarName pkg))})
                        (C {<grep>} {(DQ <'^data.tar'>)})
                      ]
                      negated: F
                      stderr_indices: []
                    )
                  right: <Id.Eof_RParen _>
                )
              }
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName tarball))}
              arms: [
                (case_arm
                  pat_list: [{<data.tar.gz>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cat_cmd='> name:cat_cmd)
                          op: assign_op.Equal
                          rhs: {<zcat>}
                          spids: [8291]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [8288 8289 8294 -1]
                )
                (case_arm
                  pat_list: [{<data.tar.bz2>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cat_cmd='> name:cat_cmd)
                          op: assign_op.Equal
                          rhs: {<bzcat>}
                          spids: [8300]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [8297 8298 8303 -1]
                )
                (case_arm
                  pat_list: [{<data.tar.xz>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cat_cmd='> name:cat_cmd)
                          op: assign_op.Equal
                          rhs: {<xzcat>}
                          spids: [8309]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [8306 8307 8312 -1]
                )
                (case_arm
                  pat_list: [{<data.tar>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cat_cmd='> name:cat_cmd)
                          op: assign_op.Equal
                          rhs: {<cat>}
                          spids: [8318]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [8315 8316 8321 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<error>} {<1>} {<UNKNOWNDATACOMP>} 
                      {(DQ <'Unknown compression type for %s in %s'>)} {(DQ ($ Id.VSub_DollarName tarball))} {(DQ ($ Id.VSub_DollarName pkg))}
                    )
                  ]
                  spids: [8324 8325 8345 -1]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              words: [{<type>} {($ Id.VSub_DollarName cat_cmd)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                                (redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<1>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Pipeline
                      children: [
                        (C {<ar>} {<-p>} {(DQ ($ Id.VSub_DollarName pkg))} 
                          {(DQ ($ Id.VSub_DollarName tarball))}
                        )
                        (C {($ Id.VSub_DollarName cat_cmd)})
                        (C {<tar>} {($ Id.VSub_DollarName EXTRACT_DEB_TAR_OPTIONS)} {<-xf>} {<->})
                      ]
                      negated: F
                      stderr_indices: []
                    )
                  ]
                  spids: [8352 8365]
                )
              ]
              else_action: [
                (C {<error>} {<1>} {<UNPACKCMDUNVL>} 
                  {(DQ <'Extracting %s requires the %s command, which is not available'>)} {(DQ ($ Id.VSub_DollarName pkg))} {(DQ ($ Id.VSub_DollarName cat_cmd))}
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: valid_extractor
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'extractor='> (DQ ($ Id.VSub_Number 1))})
            (command.ForEach
              iter_names: [E]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName EXTRACTORS_SUPPORTED)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName extractor))} 
                                      {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName E))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [8451 8468]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: choose_extractor
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<extractor>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                              {(DQ ($ Id.VSub_DollarName EXTRACTOR_OVERRIDE))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'extractor='> name:extractor)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName EXTRACTOR_OVERRIDE))}
                          spids: [8520]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [8504 8517]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              words: [{<type>} {<dpkg-deb>}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                                (redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<1>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'extractor='> name:extractor)
                          op: assign_op.Equal
                          rhs: {(DQ <dpkg-deb>)}
                          spids: [8542]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [8526 8539]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'extractor='> name:extractor)
                      op: assign_op.Equal
                      rhs: {(DQ <ar>)}
                      spids: [8551]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (C {<info>} {<CHOSENEXTRACTOR>} {(DQ <'Chosen extractor for .deb packages: %s'>)} 
              {(DQ ($ Id.VSub_DollarName extractor))}
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName extractor))}
              arms: [
                (case_arm
                  pat_list: [{<dpkg-deb>}]
                  action: [
                    (command.ShFunction
                      name: extract_deb_field
                      body: 
                        (BraceGroup
                          left: <Id.Lit_LBrace '{'>
                          children: [
                            (command.Sentence
                              child: (C {<extract_dpkg_deb_field>} {(DQ ($ Id.VSub_At '@'))})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          redirects: []
                          right: <Id.Lit_RBrace '}'>
                        )
                    )
                    (command.ShFunction
                      name: extract_deb_data
                      body: 
                        (BraceGroup
                          left: <Id.Lit_LBrace '{'>
                          children: [
                            (command.Sentence
                              child: (C {<extract_dpkg_deb_data>} {(DQ ($ Id.VSub_At '@'))})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          redirects: []
                          right: <Id.Lit_RBrace '}'>
                        )
                    )
                  ]
                  spids: [8583 8584 8621 -1]
                )
                (case_arm
                  pat_list: [{<ar>}]
                  action: [
                    (command.ShFunction
                      name: extract_deb_field
                      body: 
                        (BraceGroup
                          left: <Id.Lit_LBrace '{'>
                          children: [
                            (command.Sentence
                              child: (C {<extract_ar_deb_field>} {(DQ ($ Id.VSub_At '@'))})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          redirects: []
                          right: <Id.Lit_RBrace '}'>
                        )
                    )
                    (command.ShFunction
                      name: extract_deb_data
                      body: 
                        (BraceGroup
                          left: <Id.Lit_LBrace '{'>
                          children: [
                            (command.Sentence
                              child: (C {<extract_ar_deb_data>} {(DQ ($ Id.VSub_At '@'))})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          redirects: []
                          right: <Id.Lit_RBrace '}'>
                        )
                    )
                  ]
                  spids: [8624 8625 8662 -1]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: extract
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Sentence
              child: 
                (command.Subshell
                  child: 
                    (command.CommandList
                      children: [
                        (C {<cd>} {(DQ ($ Id.VSub_DollarName TARGET))})
                        (C {<local>} {<Id.Lit_VarLike 'p='> <0>} {<cat_cmd>})
                        (command.ForEach
                          iter_names: [pkg]
                          iterable: 
                            (for_iter.Words
                              words: [
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: (C {<debfor>} {(DQ ($ Id.VSub_At '@'))})
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                              ]
                            )
                          body: 
                            (command.DoGroup
                              children: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (word_part.ArithSub
                                              anode: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Plus
                                                  left: {($ Id.VSub_DollarName p)}
                                                  right: {<Id.Lit_Digits 1>}
                                                )
                                            )
                                          )
                                        }
                                      spids: [8713]
                                    )
                                  ]
                                  redirects: []
                                )
                                (C {<progress>} {(DQ ($ Id.VSub_DollarName p))} 
                                  {(DQ ($ Id.VSub_Pound '#'))} {<EXTRACTPKGS>} {(DQ <'Extracting packages'>)}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'packagename='>
                                          name: packagename
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (command_sub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Pipeline
                                                  children: [
                                                    (C {<echo>} {(DQ ($ Id.VSub_DollarName pkg))})
                                                    (C {<sed>} {(SQ <'s,^.*/,,;s,_.*$,,'>)})
                                                  ]
                                                  negated: F
                                                  stderr_indices: []
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                      spids: [8743]
                                    )
                                  ]
                                  redirects: []
                                )
                                (C {<info>} {<EXTRACTING>} {(DQ <'Extracting %s...'>)} 
                                  {(DQ ($ Id.VSub_DollarName packagename))}
                                )
                                (C {<extract_deb_data>} {(DQ <'./'> ($ Id.VSub_DollarName pkg))})
                              ]
                            )
                          redirects: []
                        )
                      ]
                    )
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: in_target_nofail
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  words: [{($ Id.VSub_DollarName CHROOT_CMD)} {(DQ ($ Id.VSub_At '@'))}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '2>'>
                                      loc: (redir_loc.Fd fd:2)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                              ]
                              negated: T
                              stderr_indices: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<true>})]
                  spids: [8800 8814]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: in_target_failmsg
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'code='> (DQ ($ Id.VSub_Number 1))})
            (C {<local>} {<Id.Lit_VarLike 'msg='> (DQ ($ Id.VSub_Number 2))})
            (C {<local>} {<Id.Lit_VarLike 'arg='> (DQ ($ Id.VSub_Number 3))})
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (C {<shift>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [
                                (C {($ Id.VSub_DollarName CHROOT_CMD)} {(DQ ($ Id.VSub_At '@'))})
                              ]
                              negated: T
                              stderr_indices: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<warning>} {(DQ ($ Id.VSub_DollarName code))} {(DQ ($ Id.VSub_DollarName msg))} 
                      {(DQ ($ Id.VSub_DollarName arg))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msg='> name:msg)
                          op: assign_op.Equal
                          rhs: {(DQ <'See %s for details'>)}
                          spids: [8904]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-e>} 
                                      {
                                        (DQ ($ Id.VSub_DollarName TARGET) 
                                          <'/debootstrap/debootstrap.log'>
                                        )
                                      } {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arg='> name:arg)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName TARGET) 
                                        <'/debootstrap/debootstrap.log'>
                                      )
                                    }
                                  spids: [8927]
                                )
                              ]
                              redirects: []
                            )
                            (C {<local>} 
                              {<Id.Lit_VarLike 'pkg='> 
                                (DQ 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (C {<grep>} {(SQ <'^dpkg: error processing '>)} 
                                            {
                                              (DQ ($ Id.VSub_DollarName TARGET) 
                                                <'/debootstrap/debootstrap.log'>
                                              )
                                            }
                                          )
                                          (C {<head>} {<-n>} {<1>})
                                          (C {<sed>} 
                                            {
                                              (SQ 
                                                <
's/\\(error processing \\)\\(package \\|archive \\)/\\1/'
                                                >
                                              )
                                            }
                                          )
                                          (C {<cut>} {<-d>} {(SQ <' '>)} {<-f>} {<4>})
                                        ]
                                        negated: F
                                        stderr_indices: []
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                )
                              }
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                                              {(DQ ($ Id.VSub_DollarName pkg))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'msg='>
                                              name: msg
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName msg) 
                                                <' (possibly the package '> ($ Id.VSub_DollarName pkg) <' is at fault)'>
                                              )
                                            }
                                          spids: [8999]
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [8983 8996]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                          spids: [8910 8924]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arg='> name:arg)
                              op: assign_op.Equal
                              rhs: {(DQ <'the log'>)}
                              spids: [9014]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                    (C {<warning>} {(DQ ($ Id.VSub_DollarName code))} {(DQ ($ Id.VSub_DollarName msg))} 
                      {(DQ ($ Id.VSub_DollarName arg))}
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [8871 8882]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: in_target
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<in_target_failmsg>} {<IN_TARGET_FAIL>} {(DQ <'Failure trying to run: %s'>)} 
              {(DQ ($ Id.VSub_DollarName CHROOT_CMD) <' '> ($ Id.VSub_Star '*'))} {(DQ ($ Id.VSub_At '@'))}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: conditional_cp
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} 
                              {(DQ ($ Id.VSub_Number 2) <'/'> ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {<-L>} {(DQ ($ Id.VSub_Number 1))} 
                                          {<Id.Lit_RBracket ']'>}
                                        )
                                        (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_Number 1))} 
                                          {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [{<cat>} {(DQ ($ Id.VSub_Number 1))}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(DQ ($ Id.VSub_Number 2) <'/'> ($ Id.VSub_Number 1))}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [9114 9139]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_Number 1))} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<cp>} {<-a>} {(DQ ($ Id.VSub_Number 1))} 
                              {(DQ ($ Id.VSub_Number 2) <'/'> ($ Id.VSub_Number 1))}
                            )
                          ]
                          spids: [9156 9169]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [9094 9111]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: mv_invalid_to
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number 1))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'm='> name:m)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<echo>} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name m>
                                        var_name: m
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op: <Id.VOp1_Pound '#'>
                                            arg_word: 
                                              {<'http:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'>}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    )
                                  }
                                )
                                (C {<tr>} {(SQ <'/'>)} {(SQ <_>)})
                                (C {<sed>} {(SQ <'s/_*//'>)})
                              ]
                              negated: F
                              stderr_indices: []
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  spids: [9211]
                )
              ]
              redirects: []
            )
            (command.Subshell
              child: 
                (command.CommandList
                  children: [
                    (C {<cd>} 
                      {
                        (DQ ($ Id.VSub_DollarName TARGET) <'/'> ($ Id.VSub_DollarName APTSTATE) 
                          <'/lists'>
                        )
                      }
                    )
                    (command.ForEach
                      iter_names: [a]
                      iterable: (for_iter.Words words:[{<debootstrap.invalid_> <Id.Lit_Star '*'>}])
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<mv>} {(DQ ($ Id.VSub_DollarName a))} 
                              {
                                (DQ (${ Id.VSub_Name m) <_> 
                                  (braced_var_sub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name a>
                                    var_name: a
                                    suffix_op: 
                                      (suffix_op.Unary
                                        op: <Id.VOp1_Pound '#'>
                                        arg_word: {<Id.Lit_Other '*'> <_>}
                                      )
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                )
                              }
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: setup_apt_sources
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName TARGET) <'/etc/apt'>)})
            (command.ForEach
              iter_names: [m]
              iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<local>} {<Id.Lit_VarLike 'cs='> (DQ )})
                    (command.ForEach
                      iter_names: [c]
                      iterable: 
                        (for_iter.Words
                          words: [
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name COMPONENTS>
                                var_name: COMPONENTS
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonHyphen _>
                                    arg_word: {($ Id.VSub_DollarName USE_COMPONENTS)}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<local>} 
                              {<Id.Lit_VarLike 'path='> 
                                (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> 
                                  ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'>
                                )
                              }
                            )
                            (C {<local>} 
                              {<Id.Lit_VarLike 'pkgdest='> 
                                (DQ ($ Id.VSub_DollarName TARGET) <'/'> 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} 
                                        {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m))} 
                                        {(DQ ($ Id.VSub_DollarName path))}
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                )
                              }
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-e>} 
                                              {(DQ ($ Id.VSub_DollarName pkgdest))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Sentence
                                      child: 
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'cs='>
                                                  name: cs
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName cs) <' '> 
                                                    ($ Id.VSub_DollarName c)
                                                  )
                                                }
                                              spids: [9419]
                                            )
                                          ]
                                          redirects: []
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  spids: [9404 9417]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                        )
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName cs))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: 
                                (C {<echo>} 
                                  {
                                    (DQ <'deb '> ($ Id.VSub_DollarName m) <' '> 
                                      ($ Id.VSub_DollarName SUITE) ($ Id.VSub_DollarName cs)
                                    )
                                  }
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [9433 9450]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName TARGET) <'/etc/apt/sources.list'>)}
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: setup_etc
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName TARGET) <'/etc'>)})
            (C {<conditional_cp>} {<'/etc/resolv.conf'>} {(DQ ($ Id.VSub_DollarName TARGET))})
            (C {<conditional_cp>} {<'/etc/hostname'>} {(DQ ($ Id.VSub_DollarName TARGET))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName DLDEST))} 
                                  {<Id.Lit_Equals '='>} {<apt_dest>} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} 
                                  {(DQ ($ Id.VSub_DollarName TARGET) <'/etc/apt/sources.list'>)} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<setup_apt_sources>} {(DQ <'http://debootstrap.invalid/'>)})]
                  spids: [9516 9546]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UMOUNT_DIRS='> name:UMOUNT_DIRS)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [9561]
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: umount_exit_function
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<realdir>})
            (command.ForEach
              iter_names: [dir]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName UMOUNT_DIRS)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'realdir='> name:realdir)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (C {<in_target_nofail>} {<readlink>} {<-f>} 
                                      {(DQ ($ Id.VSub_DollarName dir))}
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          spids: [9589]
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName realdir))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Subshell
                          child: 
                            (command.CommandList
                              children: [
                                (command.Sentence
                                  child: (C {<cd>} {<'/'>})
                                  terminator: <Id.Op_Semi _>
                                )
                                (C {<umount>} 
                                  {
                                    (DQ ($ Id.VSub_DollarName TARGET) <'/'> 
                                      (braced_var_sub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name realdir>
                                        var_name: realdir
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op: <Id.VOp1_Pound '#'>
                                            arg_word: {<Id.Lit_Slash '/'>}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    )
                                  }
                                )
                              ]
                            )
                          redirects: []
                        )
                        (C {<true>})
                      ]
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: umount_on_exit
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName UMOUNT_DIRS))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'UMOUNT_DIRS='>
                              name: UMOUNT_DIRS
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName UMOUNT_DIRS) <' '> ($ Id.VSub_Number 1))}
                          spids: [9672]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [9658 9669]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UMOUNT_DIRS='> name:UMOUNT_DIRS)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_Number 1))}
                      spids: [9683]
                    )
                  ]
                  redirects: []
                )
                (C {<on_exit>} {<umount_exit_function>})
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: clear_mtab
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {<-f>} 
                                  {(DQ ($ Id.VSub_DollarName TARGET) <'/etc/mtab'>)} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-h>} 
                                  {(DQ ($ Id.VSub_DollarName TARGET) <'/etc/mtab'>)} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName TARGET) <'/etc/mtab'>)})]
                  spids: [9707 9736]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: setup_proc
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName HOST_OS))}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <freebsd> <Id.Lit_Star '*'>}]
                  action: [
                    (C {<umount_on_exit>} {<'/dev'>})
                    (C {<umount_on_exit>} {<'/proc'>})
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{<umount>} {(DQ ($ Id.VSub_DollarName TARGET) <'/proc'>)}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (C {<true>})
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName HOST_OS))} 
                                      {<Id.Lit_Equals '='>} {<kfreebsd>} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<in_target>} {<mount>} {<-t>} {<linprocfs>} {<Id.KW_Proc proc>} {<'/proc'>})
                          ]
                          spids: [9802 9817]
                        )
                      ]
                      else_action: [
                        (C {<mount>} {<-t>} {<linprocfs>} {<Id.KW_Proc proc>} 
                          {($ Id.VSub_DollarName TARGET) <'/proc'>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [9771 9774 9851 -1]
                )
                (case_arm
                  pat_list: [{<hurd> <Id.Lit_Star '*'>}]
                  action: [
                    (C {<settrans>} {<-a>} {(DQ ($ Id.VSub_DollarName TARGET) <'/dev'>)} 
                      {<'/hurd/firmlink'>} {<'/dev'>}
                    )
                    (C {<settrans>} {<-a>} {(DQ ($ Id.VSub_DollarName TARGET) <'/servers'>)} 
                      {<'/hurd/firmlink'>} {<'/servers'>}
                    )
                    (C {<settrans>} {<-a>} {(DQ ($ Id.VSub_DollarName TARGET) <'/proc'>)} 
                      {<'/hurd/firmlink'>} {<'/proc'>}
                    )
                  ]
                  spids: [9854 9856 9905 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<umount_on_exit>} {<'/dev/pts'>})
                    (C {<umount_on_exit>} {<'/dev/shm'>})
                    (C {<umount_on_exit>} {<'/proc/bus/usb'>})
                    (C {<umount_on_exit>} {<'/proc'>})
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{<umount>} {(DQ ($ Id.VSub_DollarName TARGET) <'/proc'>)}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (C {<true>})
                      ]
                    )
                    (C {<in_target>} {<mount>} {<-t>} {<Id.KW_Proc proc>} {<Id.KW_Proc proc>} {<'/proc'>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {<-d>} 
                                          {(DQ ($ Id.VSub_DollarName TARGET) <'/sys'>)} {<Id.Lit_RBracket ']'>}
                                        )
                                        (command.Simple
                                          words: [
                                            {<grep>}
                                            {<-q>}
                                            {(SQ <'[[:space:]]sysfs'>)}
                                            {<'/proc/filesystems'>}
                                          ]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_Great '2>'>
                                              loc: (redir_loc.Fd fd:2)
                                              arg: {<'/dev/null'>}
                                            )
                                          ]
                                          more_env: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<umount_on_exit>} {<'/sys'>})
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (command.Simple
                                  words: [{<umount>} {(DQ ($ Id.VSub_DollarName TARGET) <'/sys'>)}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '2>'>
                                      loc: (redir_loc.Fd fd:2)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                                (C {<true>})
                              ]
                            )
                            (C {<in_target>} {<mount>} {<-t>} {<sysfs>} {<sysfs>} {<'/sys'>})
                          ]
                          spids: [9960 9991]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {<on_exit>} {<clear_mtab>})
                  ]
                  spids: [9908 9909 10035 -1]
                )
              ]
              redirects: []
            )
            (C {<umount_on_exit>} {<'/lib/init/rw'>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: setup_proc_fakechroot
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName TARGET) <'/proc'>)})
            (C {<ln>} {<-s>} {<'/proc'>} {(DQ ($ Id.VSub_DollarName TARGET))})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: setup_devices
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<doing_variant>} {<fakechroot>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<setup_devices_fakechroot>})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [10090 10097]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName HOST_OS))}
              arms: [
                (case_arm
                  pat_list: [{<kfreebsd> <Id.Lit_Star '*'>}]
                  action: []
                  spids: [10121 10123 10126 -1]
                )
                (case_arm
                  pat_list: [{<freebsd>}]
                  action: []
                  spids: [10129 10130 10133 -1]
                )
                (case_arm
                  pat_list: [{<hurd> <Id.Lit_Star '*'>}]
                  action: []
                  spids: [10136 10138 10141 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<setup_devices_simple>})]
                  spids: [10144 10145 10151 -1]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: setup_dynamic_devices
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<doing_variant>} {<fakechroot>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [10170 10177]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName HOST_OS))}
              arms: [
                (case_arm
                  pat_list: [{<kfreebsd> <Id.Lit_Star '*'>}]
                  action: [(C {<in_target>} {<mount>} {<-t>} {<devfs>} {<devfs>} {<'/dev'>})]
                  spids: [10198 10200 10215 -1]
                )
                (case_arm
                  pat_list: [{<freebsd>}]
                  action: [
                    (C {<mount>} {<-t>} {<devfs>} {<devfs>} {($ Id.VSub_DollarName TARGET) <'/dev'>})
                  ]
                  spids: [10218 10219 10233 -1]
                )
                (case_arm
                  pat_list: [{<hurd> <Id.Lit_Star '*'>}]
                  action: [(C {<in_target>} {<'/usr/lib/hurd/setup-translators'>} {<-k>})]
                  spids: [10236 10238 10251 -1]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: setup_devices_simple
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName TARGET) <'/dev/null'>} {<c>} {<1>} {<3>})
            (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName TARGET) <'/dev/zero'>} {<c>} {<1>} {<5>})
            (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName TARGET) <'/dev/full'>} {<c>} {<1>} {<7>})
            (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName TARGET) <'/dev/random'>} {<c>} {<1>} {<8>})
            (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName TARGET) <'/dev/urandom'>} {<c>} {<1>} {<9>})
            (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName TARGET) <'/dev/tty'>} {<c>} {<5>} {<0>})
            (C {<mkdir>} {($ Id.VSub_DollarName TARGET) <'/dev/pts/'>} 
              {($ Id.VSub_DollarName TARGET) <'/dev/shm/'>}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName TARGET) <'/dev/ptmx'>} 
                                  {<c>} {<5>} {<2>}
                                )
                              ]
                              negated: T
                              stderr_indices: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<warning>} {<MKNOD>} 
                      {
                        (DQ 
                          <
'Could not create /dev/ptmx, falling back to symlink. This chroot will require /dev/pts mounted with ptmxmode=666'
                          >
                        )
                      }
                    )
                    (C {<ln>} {<-s>} {<'pts/ptmx'>} {($ Id.VSub_DollarName TARGET) <'/dev/ptmx'>})
                  ]
                  spids: [10388 10408]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<ln>} {<-s>} {<'/proc/self/fd'>} {($ Id.VSub_DollarName TARGET) <'/dev/fd'>})
            (C {<ln>} {<-s>} {<'/proc/self/fd/0'>} {($ Id.VSub_DollarName TARGET) <'/dev/stdin'>})
            (C {<ln>} {<-s>} {<'/proc/self/fd/1'>} {($ Id.VSub_DollarName TARGET) <'/dev/stdout'>})
            (C {<ln>} {<-s>} {<'/proc/self/fd/2'>} {($ Id.VSub_DollarName TARGET) <'/dev/stderr'>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: setup_devices_fakechroot
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName TARGET) <'/dev'>)})
            (C {<ln>} {<-s>} {<'/dev'>} {(DQ ($ Id.VSub_DollarName TARGET))})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: setup_dselect_method
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number 1))}
              arms: [
                (case_arm
                  pat_list: [{<apt>}]
                  action: [
                    (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName TARGET) <'/var/lib/dpkg'>)})
                    (command.Simple
                      words: [{<echo>} {(DQ <'apt apt'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName TARGET) <'/var/lib/dpkg/cmethopt'>)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (C {<chmod>} {<644>} {(DQ ($ Id.VSub_DollarName TARGET) <'/var/lib/dpkg/cmethopt'>)})
                  ]
                  spids: [10523 10524 10561 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<error>} {<1>} {<UNKNOWNDSELECT>} {(DQ <'unknown dselect method'>)})]
                  spids: [10564 10565 10579 -1]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: setup_merged_usr
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MERGED_USR))} 
                              {<Id.Lit_Equals '='>} {(DQ <no>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [10618 10635]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<local>} {<link_dir>})
            (command.Case
              to_match: {($ Id.VSub_DollarName ARCH)}
              arms: [
                (case_arm
                  pat_list: [{<hurd-> <Id.Lit_Star '*'>}]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [10658 10660 10666 -1]
                )
                (case_arm
                  pat_list: [{<amd64>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <'lib32 lib64 libx32'>)}
                          spids: [10672]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [10669 10670 10677 -1]
                )
                (case_arm
                  pat_list: [{<i386>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <'lib64 libx32'>)}
                          spids: [10683]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [10680 10681 10688 -1]
                )
                (case_arm
                  pat_list: [{<mips>} {<mipsel>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <'lib32 lib64'>)}
                          spids: [10697]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [10691 10694 10702 -1]
                )
                (case_arm
                  pat_list: [{<mips64> <Id.Lit_Star '*'>} {<mipsn32> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <'lib32 lib64 libo32'>)}
                          spids: [10713]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [10705 10710 10718 -1]
                )
                (case_arm
                  pat_list: [{<powerpc>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <lib64>)}
                          spids: [10724]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [10721 10722 10729 -1]
                )
                (case_arm
                  pat_list: [{<ppc64>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <'lib32 lib64'>)}
                          spids: [10735]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [10732 10733 10740 -1]
                )
                (case_arm
                  pat_list: [{<ppc64el>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <lib64>)}
                          spids: [10746]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [10743 10744 10751 -1]
                )
                (case_arm
                  pat_list: [{<s390x>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <lib32>)}
                          spids: [10757]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [10754 10755 10762 -1]
                )
                (case_arm
                  pat_list: [{<sparc>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <lib64>)}
                          spids: [10768]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [10765 10766 10773 -1]
                )
                (case_arm
                  pat_list: [{<sparc64>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <'lib32 lib64'>)}
                          spids: [10779]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [10776 10777 10784 -1]
                )
                (case_arm
                  pat_list: [{<x32>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <'lib32 lib64 libx32'>)}
                          spids: [10790]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [10787 10788 10795 -1]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir)
                  op: assign_op.Equal
                  rhs: {(DQ <'bin sbin lib '> ($ Id.VSub_DollarName link_dir))}
                  spids: [10801]
                )
              ]
              redirects: []
            )
            (C {<local>} {<dir>})
            (command.ForEach
              iter_names: [dir]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName link_dir)}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<ln>} {<-s>} {<'usr/'> ($ Id.VSub_DollarName dir)} 
                      {($ Id.VSub_DollarName TARGET) <'/'> ($ Id.VSub_DollarName dir)}
                    )
                    (C {<mkdir>} {<-p>} 
                      {($ Id.VSub_DollarName TARGET) <'/usr/'> ($ Id.VSub_DollarName dir)}
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [(command.Sentence child:(C {<in_path>} {<perl>}) terminator:<Id.Op_Semi _>)]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PKGDETAILS='> name:PKGDETAILS)
                  op: assign_op.Equal
                  rhs: {<pkgdetails_perl>}
                  spids: [10876]
                )
              ]
              redirects: []
            )
            (command.ShFunction
              name: pkgdetails_field
              body: 
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (C {<perl>} {<-le>} 
                      {
                        (SQ <'\n'> 
                          <
'$unique = shift @ARGV; $field = lc(shift @ARGV); $mirror = shift @ARGV;\n'
                          > <'%fields = map { $_, 0 } @ARGV;\n'> <'$prevpkg = "";\n'> <'while (<STDIN>) {\n'> <'\tchomp;\n'> 
                          <'\tnext if (/^ /);\n'> <'\tif (/^([^:]*:)\\s*(.*)$/) {\n'> <'\t\t$f = lc($1); $v = $2;\n'> <'\t\tif ($f eq "package:") {\n'> 
                          <'\t\t\t$last = 0;\n'> <'\t\t\t$pkg = $v;\n'> <'\t\t\tif ($pkg ne $prevpkg) {\n'> 
                          <'\t\t\t\tprint $output if defined $output;\n'> <'\t\t\t\tif ($unique && defined $output_val) {\n'> <'\t\t\t\t\tdelete $fields{$output_val};\n'> 
                          <'\t\t\t\t\t$last = 1 unless keys %fields;\n'> <'\t\t\t\t}\n'> <'\t\t\t\t$prevpkg = $pkg;\n'> <'\t\t\t}\n'> <'\t\t\tundef $output;\n'> 
                          <'\t\t\tundef $output_val;\n'> <'\t\t\tlast if $last;\n'> <'\t\t}\n'> <'\t\t$ver = $v if ($f eq "version:");\n'> 
                          <'\t\t$arc = $v if ($f eq "architecture:");\n'> <'\t\t$fil = $v if ($f eq "filename:");\n'> 
                          <
'\t\t$chk = $v if (lc $f eq lc($ENV{DEBOOTSTRAP_CHECKSUM_FIELD}).":");\n'
                          > <'\t\t$siz = $v if ($f eq "size:");\n'> <'\t\t$val = $v if ($f eq $field);\n'> <'\t} elsif (/^$/) {\n'> 
                          <'\t\tif (defined $val && defined $fields{$val}) {\n'> <'\t\t\t$output = sprintf "%s %s %s %s %s %s %s",\n'> 
                          <'\t\t\t $pkg, $ver, $arc, $mirror, $fil, $chk, $siz;\n'> <'\t\t\t$output_val = $val;\n'> <'\t\t}\n'> <'\t\tundef $val;\n'> <'\t}\n'> <'}\n'> 
                          <'print $output if defined $output;\n'> <'delete $fields{$output_val} if $unique && defined $output_val;\n'> <'for $v (keys %fields) {\n'> 
                          <'\tprintf ("%s -\\n", $v) if ($unique);\n'> <'}\n'>
                        )
                      } {(DQ ($ Id.VSub_At '@'))}
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
            )
            (command.ShFunction
              name: pkgdetails_perl
              body: 
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} 
                                      {<Id.Lit_Equals '='>} {(DQ <'WGET%'>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<perl>} {<-e>} 
                              {
                                (SQ <'\n'> <'$v = 0;\n'> <'$allow_percentage = 0;\n'> 
                                  <'while (read STDIN, $x, 1) {\n'> <'\tif ($x =~ m/\\s/) {\n'> <'\t\t$allow_percentage = 1;\n'> 
                                  <'\t} elsif ($allow_percentage and $x =~ m/\\d/) {\n'> <'\t\t$v *= 10;\n'> <'\t\t$v += $x;\n'> <'\t} elsif ($allow_percentage and $x eq "%") {\n'> 
                                  <
'\t\tprintf "P: %d %d%s\\n", int($v / 100.0 * ($ARGV[1] - $ARGV[0]) + $ARGV[0]), $ARGV[2], ($#ARGV == 3 ? " $ARGV[3]" : "");\n'
                                  > <'\t\t$v = 0;\n'> <'\t} else {\n'> <'\t\t$v = 0;\n'> <'\t\t$allow_percentage = 0;\n'> <'\t}\n'> <'}'>
                                )
                              } {(DQ ($ Id.VSub_At '@'))}
                            )
                          ]
                          spids: [10961 10978]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} 
                                      {<Id.Lit_Equals '='>} {(DQ <GETDEPS>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: 
                                (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_Number 2))})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<shift>})
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  words: [
                                    {<perl>}
                                    {<-e>}
                                    {
                                      (SQ <'\n'> <'$prevpkg = "";\n'> <'@d = ();\n'> 
                                        <'while (<STDIN>) {\n'> <'\tchomp;\n'> <'\tif (/^Package: (.*)$/) {\n'> <'\t\t$pkg = $1;\n'> <'\t\tif ($pkg ne $prevpkg) {\n'> 
                                        <'\t\t\tfor my $d (@d) {\n'> <'\t\t\t\tprint "$d\\n";\n'> <'\t\t\t}\n'> <'\t\t}\n'> <'\t\t$prevpkg = $1;\n'> <'\t\t@d = ();\n'> 
                                        <'\t}\n'> <'\t$in = 1 if (grep {$_ eq $pkg} @ARGV);\n'> <'\t$in = 0 if (/^$/);\n'> 
                                        <
'\tif ($in and (/^Depends: (.*)$/ or /^Pre-Depends: (.*)$/)) {\n'
                                        > <'\t\tfor $d (split /\\s*,\\s*/, $1) {\n'> <'\t\t\t$d =~ s/\\s*[|].*$//;\n'> 
                                        <'\t\t\t$d =~ s/\\s*[(].*[)]\\s*//;\n'> <'\t\t\t$d =~ s/:.*//;\n'> <'\t\t\tpush @d, $d;\n'> <'\t\t}\n'> <'\t}\n'> <'}\n'> <'for my $d (@d) {\n'> 
                                        <'\tprint "$d\\n";\n'> <'}'>
                                      )
                                    }
                                    {(DQ ($ Id.VSub_At '@'))}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Less '<'>
                                      loc: (redir_loc.Fd fd:0)
                                      arg: {(DQ ($ Id.VSub_DollarName pkgdest))}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                                (C {<sort>})
                                (C {<uniq>})
                              ]
                              negated: F
                              stderr_indices: []
                            )
                          ]
                          spids: [11014 11031]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} 
                                      {<Id.Lit_Equals '='>} {(DQ <PKGS>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number 2))})
                            (C {<local>} {<Id.Lit_VarLike 'p='> (DQ ($ Id.VSub_Number 3))})
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<shift>})
                            (command.Simple
                              words: [
                                {<pkgdetails_field>}
                                {<1>}
                                {<Package> <Id.Lit_Colon ':'>}
                                {(DQ ($ Id.VSub_DollarName m))}
                                {(DQ ($ Id.VSub_At '@'))}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Less '<'>
                                  loc: (redir_loc.Fd fd:0)
                                  arg: {(DQ ($ Id.VSub_DollarName p))}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [11102 11119]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} 
                                      {<Id.Lit_Equals '='>} {(DQ <FIELD>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<local>} {<Id.Lit_VarLike 'f='> (DQ ($ Id.VSub_Number 2))})
                            (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number 3))})
                            (C {<local>} {<Id.Lit_VarLike 'p='> (DQ ($ Id.VSub_Number 4))})
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<shift>})
                            (command.Simple
                              words: [
                                {<pkgdetails_field>}
                                {<0>}
                                {(DQ ($ Id.VSub_DollarName f))}
                                {(DQ ($ Id.VSub_DollarName m))}
                                {(DQ ($ Id.VSub_At '@'))}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Less '<'>
                                  loc: (redir_loc.Fd fd:0)
                                  arg: {(DQ ($ Id.VSub_DollarName p))}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [11169 11186]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} 
                                      {<Id.Lit_Equals '='>} {(DQ <STANZAS>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: 
                                (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_Number 2))})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<shift>})
                            (command.Simple
                              words: [
                                {<perl>}
                                {<-e>}
                                {
                                  (SQ <'\n'> <'my $accum = "";\n'> <'while (<STDIN>) {\n'> 
                                    <'\t$accum .= $_;\n'> <'\t$in = 1 if (/^Package: (.*)$/ && grep {$_ eq $1} @ARGV);\n'> <'\tif ($in and /^$/) {\n'> 
                                    <'\t\tprint $accum;\n'> <'\t\tif (substr($accum, -1) != "\\n") {\n'> <'\t\t\tprint "\\n\\n";\n'> 
                                    <'\t\t} elsif (substr($accum, -2, 1) != "\\n") {\n'> <'\t\t\tprint "\\n";\n'> <'\t\t}\n'> <'\t\t$in = 0;\n'> <'\t}\n'> <'\t$accum = "" if /^$/;\n'> <'}'>
                                  )
                                }
                                {(DQ ($ Id.VSub_At '@'))}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Less '<'>
                                  loc: (redir_loc.Fd fd:0)
                                  arg: {(DQ ($ Id.VSub_DollarName pkgdest))}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [11248 11265]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
            )
          ]
          spids: [10866 10873]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ <'/usr/lib/debootstrap/pkgdetails'>)} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PKGDETAILS='> name:PKGDETAILS)
                  op: assign_op.Equal
                  rhs: {(DQ <'/usr/lib/debootstrap/pkgdetails'>)}
                  spids: [11336]
                )
              ]
              redirects: []
            )
          ]
          spids: [11320 11333]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-e>} 
                      {(DQ ($ Id.VSub_DollarName DEBOOTSTRAP_DIR) <'/pkgdetails'>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PKGDETAILS='> name:PKGDETAILS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName DEBOOTSTRAP_DIR) <'/pkgdetails'>)}
                  spids: [11358]
                )
              ]
              redirects: []
            )
          ]
          spids: [11341 11355]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PKGDETAILS='> name:PKGDETAILS)
              op: assign_op.Equal
              rhs: {(DQ )}
              spids: [11367]
            )
          ]
          redirects: []
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: resolve_deps
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'm1='> 
                (DQ 
                  (braced_var_sub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name MIRRORS>
                    var_name: MIRRORS
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VOp1_DPercent '%%'>
                        arg_word: {<' '> <Id.Lit_Other '*'>}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                )
              }
            )
            (C {<local>} {<Id.Lit_VarLike 'PKGS='> (DQ ($ Id.VSub_Star '*'))})
            (command.Sentence
              child: (C {<local>} {<Id.Lit_VarLike 'ALLPKGS='> (DQ ($ Id.VSub_DollarName PKGS))})
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: (C {<local>} {<Id.Lit_VarLike 'ALLPKGS2='> (DQ )})
              terminator: <Id.Op_Semi _>
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName PKGS))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (C {<local>} {<Id.Lit_VarLike 'NEWPKGS='> (DQ )})
                    (command.ForEach
                      iter_names: [c]
                      iterable: 
                        (for_iter.Words
                          words: [
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name COMPONENTS>
                                var_name: COMPONENTS
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonHyphen _>
                                    arg_word: {($ Id.VSub_DollarName USE_COMPONENTS)}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<local>} 
                              {<Id.Lit_VarLike 'path='> 
                                (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> 
                                  ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'>
                                )
                              }
                            )
                            (C {<local>} 
                              {<Id.Lit_VarLike 'pkgdest='> 
                                (DQ ($ Id.VSub_DollarName TARGET) <'/'> 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} 
                                        {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m1))} 
                                        {(DQ ($ Id.VSub_DollarName path))}
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'NEWPKGS='>
                                      name: NEWPKGS
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName NEWPKGS) <' '> 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (C {(DQ ($ Id.VSub_DollarName PKGDETAILS))} {<GETDEPS>} 
                                              {(DQ ($ Id.VSub_DollarName pkgdest))} {($ Id.VSub_DollarName PKGS)}
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  spids: [11516]
                                )
                              ]
                              redirects: []
                            )
                          ]
                        )
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PKGS='> name:PKGS)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<echo>} 
                                        {
                                          (DQ ($ Id.VSub_DollarName PKGS) <' '> 
                                            ($ Id.VSub_DollarName NEWPKGS)
                                          )
                                        }
                                      )
                                      (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                                      (C {<sort>})
                                      (C {<uniq>})
                                    ]
                                    negated: F
                                    stderr_indices: []
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [11539]
                        )
                      ]
                      redirects: []
                    )
                    (C {<local>} {<Id.Lit_VarLike 'REALPKGS='> (DQ )})
                    (command.ForEach
                      iter_names: [c]
                      iterable: 
                        (for_iter.Words
                          words: [
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name COMPONENTS>
                                var_name: COMPONENTS
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonHyphen _>
                                    arg_word: {($ Id.VSub_DollarName USE_COMPONENTS)}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<local>} 
                              {<Id.Lit_VarLike 'path='> 
                                (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> 
                                  ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'>
                                )
                              }
                            )
                            (C {<local>} 
                              {<Id.Lit_VarLike 'pkgdest='> 
                                (DQ ($ Id.VSub_DollarName TARGET) <'/'> 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} 
                                        {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m1))} 
                                        {(DQ ($ Id.VSub_DollarName path))}
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'REALPKGS='>
                                      name: REALPKGS
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName REALPKGS) <' '> 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Pipeline
                                              children: [
                                                (C {(DQ ($ Id.VSub_DollarName PKGDETAILS))} {<PKGS>} 
                                                  {<REAL>} {(DQ ($ Id.VSub_DollarName pkgdest))} {($ Id.VSub_DollarName PKGS)}
                                                )
                                                (C {<sed>} {<-n>} {(SQ <'s/ .*REAL.*$//p'>)})
                                              ]
                                              negated: F
                                              stderr_indices: []
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  spids: [11642]
                                )
                              ]
                              redirects: []
                            )
                          ]
                        )
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PKGS='> name:PKGS)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName REALPKGS))}
                          spids: [11677]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ALLPKGS2='> name:ALLPKGS2)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<echo>} 
                                        {
                                          (DQ ($ Id.VSub_DollarName PKGS) <' '> 
                                            ($ Id.VSub_DollarName ALLPKGS)
                                          )
                                        }
                                      )
                                      (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                                      (C {<sort>})
                                      (C {<uniq>})
                                    ]
                                    negated: F
                                    stderr_indices: []
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [11683]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PKGS='> name:PKGS)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<without>} {(DQ ($ Id.VSub_DollarName ALLPKGS2))} 
                                    {(DQ ($ Id.VSub_DollarName ALLPKGS))}
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [11715]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ALLPKGS='> name:ALLPKGS)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName ALLPKGS2))}
                          spids: [11729]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (C {<echo>} {($ Id.VSub_DollarName ALLPKGS)})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: setup_available
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'm1='> 
                (DQ 
                  (braced_var_sub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name MIRRORS>
                    var_name: MIRRORS
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VOp1_DPercent '%%'>
                        arg_word: {<' '> <Id.Lit_Other '*'>}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                )
              }
            )
            (command.ForEach
              iter_names: [c]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name COMPONENTS>
                        var_name: COMPONENTS
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_ColonHyphen _>
                            arg_word: {($ Id.VSub_DollarName USE_COMPONENTS)}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'path='> 
                        (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> ($ Id.VSub_DollarName c) 
                          <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'>
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'pkgdest='> 
                        (DQ ($ Id.VSub_DollarName TARGET) <'/'> 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} 
                                {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m1))} 
                                {(DQ ($ Id.VSub_DollarName path))}
                              )
                            right: <Id.Eof_RParen _>
                          )
                        )
                      }
                    )
                    (C {(DQ ($ Id.VSub_DollarName PKGDETAILS))} {<STANZAS>} 
                      {(DQ ($ Id.VSub_DollarName pkgdest))} {(DQ ($ Id.VSub_At '@'))}
                    )
                  ]
                )
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName TARGET) <'/var/lib/dpkg/available'>)}
                )
              ]
            )
            (command.Pipeline
              children: [
                (command.ForEach
                  iter_names: [pkg]
                  iterable: (for_iter.Args)
                  body: 
                    (command.DoGroup
                      children: [(C {<echo>} {(DQ ($ Id.VSub_DollarName pkg) <' install'>)})]
                    )
                  redirects: []
                )
                (C {<in_target>} {<dpkg>} {<--set-selections>})
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_next_predep
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'stanza='> 
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<in_target_nofail>} {<dpkg>} {<--predep-package>})
                    right: <Id.Eof_RParen _>
                  )
                )
              }
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName stanza))} {<Id.Lit_RBracket ']'>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {<echo>} {(DQ ($ Id.VSub_DollarName stanza))})
                (C {<grep>} {(SQ <'^Package:'>)})
                (C {<sed>} {(SQ <'s/^Package://; s/^ *//'>)})
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: check_sane_mount
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_Number 1))})
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName HOST_OS))}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <freebsd> <Id.Lit_Star '*'>} {<hurd> <Id.Lit_Star '*'>}]
                  action: []
                  spids: [11995 12001 12004 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<mknod>} {(DQ ($ Id.VSub_Number 1) <'/test-dev-null'>)} {<c>} {<1>} {<3>})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          words: [{<echo>} {<test>}]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_Great '>'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {(DQ ($ Id.VSub_Number 1) <'/test-dev-null'>)}
                                            )
                                          ]
                                          more_env: []
                                          do_fork: T
                                        )
                                      ]
                                      negated: T
                                      stderr_indices: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number 1) <'/test-dev-null'>)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [12031 12047]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number 1) <'/test-dev-null'>)})
                  ]
                  spids: [12007 12008 12078 -1]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SH='> name:SH)
                  op: assign_op.Equal
                  rhs: {<'/bin/sh'>}
                  spids: [12085]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-x>} {($ Id.VSub_DollarName SH)} {<Id.Lit_RBracket ']'>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SH='> name:SH)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: (C {<which>} {<sh>})
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                      spids: [12099]
                    )
                  ]
                  redirects: []
                )
              ]
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_Number 1) <'/test-exec'>)}
                )
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 12127
                      stdin_parts: [<'#! '> ($ Id.VSub_DollarName SH) <'\n'> <':\n'>]
                    )
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<chmod>} {<Id.Lit_Other '+'> <x>} {(DQ ($ Id.VSub_Number 1) <'/test-exec'>)})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [(C {(DQ ($ Id.VSub_Number 1) <'/test-exec'>)})]
                              negated: T
                              stderr_indices: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number 1) <'/test-exec'>)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [12140 12150]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number 1) <'/test-exec'>)})
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: read_gpg_status
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'badsig='> name:badsig)
                  op: assign_op.Equal
                  rhs: (rhs_word.Empty)
                  spids: [12197]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'unkkey='> name:unkkey)
                  op: assign_op.Equal
                  rhs: (rhs_word.Empty)
                  spids: [12200]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'validsig='> name:validsig)
                  op: assign_op.Equal
                  rhs: (rhs_word.Empty)
                  spids: [12203]
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: (C {<read>} {<prefix>} {<keyword>} {<keyid>} {<rest>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName prefix))} 
                          {<Id.Lit_Equals '='>} {(SQ <'[GNUPG:]'>)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName keyword)}
                      arms: [
                        (case_arm
                          pat_list: [{<BADSIG>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'badsig='> name:badsig)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName keyid))}
                                  spids: [12251]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [12248 12249 12256 -1]
                        )
                        (case_arm
                          pat_list: [{<NO_PUBKEY>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'unkkey='> name:unkkey)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName keyid))}
                                  spids: [12262]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [12259 12260 12267 -1]
                        )
                        (case_arm
                          pat_list: [{<VALIDSIG>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'validsig='>
                                      name: validsig
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName keyid))}
                                  spids: [12273]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [12270 12271 12278 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName validsig))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<info>} {<VALIDRELSIG>} {(DQ <'Valid Release signature (key id %s)'>)} 
                      {(DQ ($ Id.VSub_DollarName validsig))}
                    )
                  ]
                  spids: [12287 12298]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName badsig))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<error>} {<1>} {<BADRELSIG>} {(DQ <'Invalid Release signature (key id %s)'>)} 
                      {(DQ ($ Id.VSub_DollarName badsig))}
                    )
                  ]
                  spids: [12314 12325]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName unkkey))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<error>} {<1>} {<UNKNOWNRELSIG>} 
                      {(DQ <'Release signed by unknown key (key id %s)'>)} {(DQ ($ Id.VSub_DollarName unkkey))}
                    )
                  ]
                  spids: [12343 12354]
                )
              ]
              else_action: [
                (C {<error>} {<1>} {<SIGCHECK>} {(DQ <'Error executing gpgv to check Release signature'>)})
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: without
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Subshell
                  child: 
                    (command.CommandList
                      children: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<echo>} {($ Id.VSub_Number 1)})
                                (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                                (C {<sort>})
                                (C {<uniq>})
                              ]
                              negated: F
                              stderr_indices: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                        (command.Pipeline
                          children: [
                            (C {<echo>} {($ Id.VSub_Number 2)} {($ Id.VSub_Number 2)})
                            (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                          ]
                          negated: F
                          stderr_indices: []
                        )
                      ]
                    )
                  redirects: []
                )
                (C {<sort>})
                (C {<uniq>} {<-u>})
                (C {<tr>} {(SQ <'\\n'>)} {(SQ <' '>)})
              ]
              negated: F
              stderr_indices: []
            )
            (C {<echo>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: repeatn
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'n='> (DQ ($ Id.VSub_Number 1))})
            (C {<shift>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName n))} {<-gt>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {(DQ ($ Id.VSub_At '@'))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                          spids: [12517 12524]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (word_part.ArithSub
                                      anode: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_Minus
                                          left: {($ Id.VSub_DollarName n)}
                                          right: {<Id.Lit_Digits 1>}
                                        )
                                    )
                                  )
                                }
                              spids: [12533]
                            )
                          ]
                          redirects: []
                        )
                        (C {<sleep>} {<1>})
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName n))} {<-eq>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [12559 12574]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'N_EXIT_THINGS='> name:N_EXIT_THINGS)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [12591]
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: exit_function
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'n='> <0>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName n))} {<-lt>} 
                          {(DQ ($ Id.VSub_DollarName N_EXIT_THINGS))} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Subshell
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (command.Simple
                              words: [
                                {<eval>}
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {<eval>} {<echo>} 
                                        {
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\$'>
                                            ch: '$'
                                          ) <Id.Lit_LBrace '{'> <EXIT_THING_> ($ Id.VSub_DollarName n) <Id.Lit_RBrace '}'>
                                        }
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (C {<true>})
                          ]
                        )
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.ArithSub
                                  anode: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: {($ Id.VSub_DollarName n)}
                                      right: {<Id.Lit_Digits 1>}
                                    )
                                )
                              )
                            }
                          spids: [12652]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'N_EXIT_THINGS='> name:N_EXIT_THINGS)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [12670]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (C {<trap>} {(DQ <exit_function>)} {<0>})
    (C {<trap>} {(DQ <'exit 129'>)} {<1>})
    (C {<trap>} 
      {
        (DQ <'error 130 INTERRUPTED '> 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'Interrupt caught ... exiting'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
        )
      } {<2>}
    )
    (C {<trap>} {(DQ <'exit 131'>)} {<3>})
    (C {<trap>} {(DQ <'exit 143'>)} {<15>})
    (command.ShFunction
      name: on_exit
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<eval>} 
              {
                (command_sub
                  left_token: <Id.Left_Backtick '`'>
                  child: 
                    (C {<echo>} 
                      {<EXIT_THING_> (${ Id.VSub_Name N_EXIT_THINGS) <Id.Lit_Equals '='> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                          ch: '"'
                        ) ($ Id.VSub_Number 1) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
                      }
                    )
                  right: <Id.Backtick_Right '`'>
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'N_EXIT_THINGS='> name:N_EXIT_THINGS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (word_part.ArithSub
                          anode: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Plus
                              left: {($ Id.VSub_DollarName N_EXIT_THINGS)}
                              right: {<Id.Lit_Digits 1>}
                            )
                        )
                      )
                    }
                  spids: [12749]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: install_fakechroot_tools
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName VARIANT))} 
                              {<Id.Lit_Equals '='>} {(DQ <fakechroot>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<export>} 
                      {<Id.Lit_VarLike 'PATH='> <'/usr/sbin'> <Id.Lit_Colon ':'> <'/sbin'> 
                        <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PATH)
                      }
                    )
                  ]
                  spids: [12778 12795]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<mv>} {(DQ ($ Id.VSub_DollarName TARGET) <'/sbin/ldconfig'>)} 
              {(DQ ($ Id.VSub_DollarName TARGET) <'/sbin/ldconfig.REAL'>)}
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'#!/bin/sh\n'> <'echo\n'> <'echo '> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) <'Warning: Fake ldconfig called, doing nothing'> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    )
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName TARGET) <'/sbin/ldconfig'>)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<chmod>} {<755>} {(DQ ($ Id.VSub_DollarName TARGET) <'/sbin/ldconfig'>)})
            (command.Simple
              words: [{<echo>} {(DQ <'/sbin/ldconfig\n'> <'/sbin/ldconfig.REAL\n'> <fakechroot>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName TARGET) <'/var/lib/dpkg/diversions'>)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<mv>} {(DQ ($ Id.VSub_DollarName TARGET) <'/usr/bin/ldd'>)} 
              {(DQ ($ Id.VSub_DollarName TARGET) <'/usr/bin/ldd.REAL'>)}
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <END>)}
                      here_end_span_id: 13060
                      stdin_parts: [
                        <'#!/usr/bin/perl\n'>
                        <'\n'>
                        <'# fakeldd\n'>
                        <'#\n'>
                        <'# Replacement for ldd with usage of objdump\n'>
                        <'#\n'>
                        <'# (c) 2003-2005 Piotr Roszatycki <dexter@debian.org>, BSD\n'>
                        <'\n'>
                        <'\n'>
                        <'my %libs = ();\n'>
                        <'\n'>
                        <'my $status = 0;\n'>
                        <'my $dynamic = 0;\n'>
                        <'my $biarch = 0;\n'>
                        <'\n'>
                        <'my $ldlinuxsodir = "/lib";\n'>
                        <'my @ld_library_path = qw(/usr/lib /lib);\n'>
                        <'\n'>
                        <'\n'>
                        <'sub ldso($) {\n'>
                        <'\tmy ($lib) = @_;\n'>
                        <'\tmy @files = ();\n'>
                        <'\n'>
                        <'\tif ($lib =~ /^\\//) {\n'>
                        <'\t    $libs{$lib} = $lib;\n'>
                        <'\t    push @files, $lib;\n'>
                        <'\t} else {\n'>
                        <'\t    foreach my $ld_path (@ld_library_path) {\n'>
                        <'\t\tnext unless -f "$ld_path/$lib";\n'>
                        <'\t\tmy $badformat = 0;\n'>
                        <'\t\topen OBJDUMP, "objdump -p $ld_path/$lib 2>/dev/null |";\n'>
                        <'\t \twhile (my $line = <OBJDUMP>) {\n'>
                        <'\t\t    if ($line =~ /file format (\\S*)$/) {\n'>
                        <'\t\t\t\t$badformat = 1 unless $format eq $1;\n'>
                        <'\t\t\t\tlast;\n'>
                        <'\t\t    }\n'>
                        <'\t\t}\n'>
                        <'\t\tclose OBJDUMP;\n'>
                        <'\t\tnext if $badformat;\n'>
                        <'\t\t$libs{$lib} = "$ld_path/$lib";\n'>
                        <'\t\tpush @files, "$ld_path/$lib";\n'>
                        <'\t    }\n'>
                        <'\t    objdump(@files);\n'>
                        <'\t}\n'>
                        <'}\n'>
                        <'\n'>
                        <'\n'>
                        <'sub objdump(@) {\n'>
                        <'\tmy (@files) = @_;\n'>
                        <'\tmy @libs = ();\n'>
                        <'\n'>
                        <'\tforeach my $file (@files) {\n'>
                        <'\t    open OBJDUMP, "objdump -p $file 2>/dev/null |";\n'>
                        <'\t    while (my $line = <OBJDUMP>) {\n'>
                        <'\t\t$line =~ s/^\\s+//;\n'>
                        <'\t\tmy @f = split (/\\s+/, $line);\n'>
                        <'\t\tif ($line =~ /file format (\\S*)$/) {\n'>
                        <'\t\t    if (not $format) {\n'>
                        <'\t\t\t$format = $1;\n'>
                        <'\t\t\tif ($unamearch eq "x86_64" and $format eq "elf32-i386") {\n'>
                        <'\t\t\t    my $link = readlink "/lib/ld-linux.so.2";\n'>
                        <'\t\t\t    if ($link =~ /^\\/emul\\/ia32-linux\\//) {\n'>
                        <'\t\t\t\t$ld_library_path[-2] = "/emul/ia32-linux/usr/lib";\n'>
                        <'\t\t\t\t$ld_library_path[-1] = "/emul/ia32-linux/lib";\n'>
                        <'\t\t\t    }\n'>
                        <
'\t\t\t} elsif ($unamearch =~ /^(sparc|sparc64)$/ and $format eq "elf64-sparc") {\n'
                        >
                        <'\t\t\t    $ldlinuxsodir = "/lib64";\n'>
                        <'\t\t\t    $ld_library_path[-2] = "/usr/lib64";\n'>
                        <'\t\t\t    $ld_library_path[-1] = "/lib64";\n'>
                        <'\t\t\t}\n'>
                        <'\t\t    } else {\n'>
                        <'\t\t\tnext unless $format eq $1;\n'>
                        <'\t\t    }\n'>
                        <'\t\t}\n'>
                        <'\t\tif (not $dynamic and $f[0] eq "Dynamic") {\n'>
                        <'\t\t    $dynamic = 1;\n'>
                        <'\t\t}\n'>
                        <'\t\tnext unless $f[0] eq "NEEDED";\n'>
                        <'\t\tif ($f[1] =~ /^ld-linux(\\.|-)/) {\n'>
                        <'\t\t    $f[1] = "$ldlinuxsodir/" . $f[1];\n'>
                        <'\t\t}\n'>
                        <'\t\tif (not defined $libs{$f[1]}) {\n'>
                        <'\t\t    $libs{$f[1]} = undef;\n'>
                        <'\t\t    push @libs, $f[1];\n'>
                        <'\t\t}\n'>
                        <'\t    }\n'>
                        <'\t    close OBJDUMP;\n'>
                        <'\t}\n'>
                        <'\n'>
                        <'\tforeach my $lib (@libs) {\n'>
                        <'\t    ldso($lib);\n'>
                        <'\t}\n'>
                        <'}\n'>
                        <'\n'>
                        <'\n'>
                        <'if ($#ARGV < 0) {\n'>
                        <'\tprint STDERR "fakeldd: missing file arguments\\n";\n'>
                        <'\texit 1;\n'>
                        <'}\n'>
                        <'\n'>
                        <'while ($ARGV[0] =~ /^-/) {\n'>
                        <'\tmy $arg = $ARGV[0];\n'>
                        <'\tshift @ARGV;\n'>
                        <'\tlast if $arg eq "--";\n'>
                        <'}\n'>
                        <'\n'>
                        <'open LD_SO_CONF, "/etc/ld.so.conf";\n'>
                        <'while ($line = <LD_SO_CONF>) {\n'>
                        <'\tchomp $line;\n'>
                        <'\tunshift @ld_library_path, $line;\n'>
                        <'}\n'>
                        <'close LD_SO_CONF;\n'>
                        <'\n'>
                        <'unshift @ld_library_path, split(/:/, $ENV{LD_LIBRARY_PATH});\n'>
                        <'\n'>
                        <'$unamearch = `/bin/uname -m`;\n'>
                        <'chomp $unamearch;\n'>
                        <'\n'>
                        <'foreach my $file (@ARGV) {\n'>
                        <'\tmy $address;\n'>
                        <'\t%libs = ();\n'>
                        <'\t$dynamic = 0;\n'>
                        <'\n'>
                        <'\tif ($#ARGV > 0) {\n'>
                        <'\t\tprint "$file:\\n";\n'>
                        <'\t}\n'>
                        <'\n'>
                        <'\tif (not -f $file) {\n'>
                        <'\t\tprint STDERR "ldd: $file: No such file or directory\\n";\n'>
                        <'\t\t$status = 1;\n'>
                        <'\t\tnext;\n'>
                        <'\t}\n'>
                        <'\n'>
                        <'\tobjdump($file);\n'>
                        <'\n'>
                        <'\tif ($dynamic == 0) {\n'>
                        <'\t\tprint "\\tnot a dynamic executable\\n";\n'>
                        <'\t\t$status = 1;\n'>
                        <'\t} elsif (scalar %libs eq "0") {\n'>
                        <'\t\tprint "\\tstatically linked\\n";\n'>
                        <'\t}\n'>
                        <'\n'>
                        <'\tif ($format =~ /^elf64-/) {\n'>
                        <'\t\t$address = "0x0000000000000000";\n'>
                        <'\t} else {\n'>
                        <'\t\t$address = "0x00000000";\n'>
                        <'\t}\n'>
                        <'\n'>
                        <'\tforeach $lib (keys %libs) {\n'>
                        <'\t\tif ($libs{$lib}) {\n'>
                        <'\t\t\tprintf "\\t%s => %s (%s)\\n", $lib, $libs{$lib}, $address;\n'>
                        <'\t\t} else {\n'>
                        <'\t\t\tprintf "\\t%s => not found\\n", $lib;\n'>
                        <'\t\t}\n'>
                        <'\t}\n'>
                        <'}\n'>
                        <'\n'>
                        <'exit $status;\n'>
                      ]
                    )
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName TARGET) <'/usr/bin/ldd'>)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<chmod>} {<755>} {(DQ ($ Id.VSub_DollarName TARGET) <'/usr/bin/ldd'>)})
            (command.Simple
              words: [{<echo>} {(DQ <'/usr/bin/ldd\n'> <'/usr/bin/ldd.REAL\n'> <fakechroot>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName TARGET) <'/var/lib/dpkg/diversions'>)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
  ]
)