(command.CommandList
  children: [
    (command.FuncDef
      name: smallyes
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:YES spids:[11])
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (word_part.BracedVarSub
                          token: <VSub_Number 1>
                          suffix_op: (suffix_op.StringUnary op_id:VTest_Hyphen arg_word:{(y)})
                          spids: [13 17]
                        )
                      )
                    }
                  spids: [11]
                )
              ]
              spids: [11]
            )
            (command.WhileUntil
              keyword: <KW_While while>
              cond: [
                (command.Sentence
                  child: 
                    (command.SimpleCommand
                      words: [{(echo)} {(DQ ($ VSub_DollarName '$YES'))}]
                      redirects: [(redir.Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})]
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (command.DoGroup
                  children: [(command.Sentence child:(C {(Lit_Other ':')}) terminator:<Op_Semi ';'>)]
                  spids: [34 40]
                )
            )
          ]
          spids: [8]
        )
      spids: [4 7]
    )
    (command.FuncDef
      name: in_path
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:OLD_IFS spids:[55])
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$IFS'))}
                  spids: [55]
                )
              ]
              spids: [53]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:IFS spids:[61])
                  op: Equal
                  rhs: {(DQ (':'))}
                  spids: [61]
                )
              ]
              spids: [61]
            )
            (command.ForEach
              iter_name: dir
              iter_words: [{($ VSub_DollarName '$PATH')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-x)} 
                                  {(DQ ($ VSub_DollarName '$dir') (/) ($ VSub_Number '$1'))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:IFS spids:[97])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_DollarName '$OLD_IFS'))}
                                  spids: [97]
                                )
                              ]
                              spids: [97]
                            )
                            (command.ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(0)}
                            )
                          ]
                          spids: [16777215 94]
                        )
                      ]
                      spids: [16777215 108]
                    )
                  ]
                  spids: [76 111]
                )
              spids: [72 74]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:IFS spids:[114])
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$OLD_IFS'))}
                  spids: [114]
                )
              ]
              spids: [114]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [50]
        )
      spids: [45 49]
    )
    (command.FuncDef
      name: error
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:err spids:[145])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [145]
                )
              ]
              spids: [143]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:name spids:[153])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [153]
                )
              ]
              spids: [151]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:fmt spids:[161])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$3'))}
                  spids: [161]
                )
              ]
              spids: [159]
            )
            (command.Sentence child:(C {(shift)}) terminator:<Op_Semi ';'>)
            (command.Sentence child:(C {(shift)}) terminator:<Op_Semi ';'>)
            (C {(shift)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {(DQ ($ VSub_DollarName '$USE_DEBIANINSTALLER_INTERACTION'))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Subshell
                      child: 
                        (command.CommandList
                          children: [
                            (C {(echo)} {(DQ ('E: ') ($ VSub_DollarName '$name'))})
                            (command.ForEach
                              iter_name: x
                              iter_words: [{(DQ ($ VSub_At '$@'))}]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Sentence
                                      child: (C {(echo)} {(DQ ('EA: ') ($ VSub_DollarName '$x'))})
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  spids: [210 220]
                                )
                              spids: [204 208]
                            )
                            (C {(echo)} {(DQ ('EF: ') ($ VSub_DollarName '$fmt'))})
                          ]
                        )
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(4)})]
                      spids: [190 229]
                    )
                  ]
                  spids: [16777215 187]
                )
              ]
              else_action: [
                (command.Subshell
                  child: 
                    (C {(printf)} {(DQ ('E: ') ($ VSub_DollarName '$fmt') (Lit_Other '\\') (n))} 
                      {(DQ ($ VSub_At '$@'))}
                    )
                  redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(4)})]
                  spids: [238 251]
                )
              ]
              spids: [235 257]
            )
            (command.ControlFlow
              token: <ControlFlow_Exit exit>
              arg_word: {($ VSub_DollarName '$err')}
            )
          ]
          spids: [136]
        )
      spids: [131 135]
    )
    (command.FuncDef
      name: warning
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:name spids:[281])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [281]
                )
              ]
              spids: [279]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:fmt spids:[289])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [289]
                )
              ]
              spids: [287]
            )
            (command.Sentence child:(C {(shift)}) terminator:<Op_Semi ';'>)
            (C {(shift)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {(DQ ($ VSub_DollarName '$USE_DEBIANINSTALLER_INTERACTION'))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Subshell
                      child: 
                        (command.CommandList
                          children: [
                            (C {(echo)} {(DQ ('W: ') ($ VSub_DollarName '$name'))})
                            (command.ForEach
                              iter_name: x
                              iter_words: [{(DQ ($ VSub_At '$@'))}]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Sentence
                                      child: (C {(echo)} {(DQ ('WA: ') ($ VSub_DollarName '$x'))})
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  spids: [335 345]
                                )
                              spids: [329 333]
                            )
                            (C {(echo)} {(DQ ('WF: ') ($ VSub_DollarName '$fmt'))})
                          ]
                        )
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(4)})]
                      spids: [315 354]
                    )
                  ]
                  spids: [16777215 312]
                )
              ]
              else_action: [
                (command.SimpleCommand
                  words: [
                    {(printf)}
                    {(DQ ('W: ') ($ VSub_DollarName '$fmt') (Lit_Other '\\') (n))}
                    {(DQ ($ VSub_At '$@'))}
                  ]
                  redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(4)})]
                )
              ]
              spids: [360 380]
            )
          ]
          spids: [272]
        )
      spids: [267 271]
    )
    (command.FuncDef
      name: info
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:name spids:[399])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [399]
                )
              ]
              spids: [397]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:fmt spids:[407])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [407]
                )
              ]
              spids: [405]
            )
            (command.Sentence child:(C {(shift)}) terminator:<Op_Semi ';'>)
            (C {(shift)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {(DQ ($ VSub_DollarName '$USE_DEBIANINSTALLER_INTERACTION'))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Subshell
                      child: 
                        (command.CommandList
                          children: [
                            (C {(echo)} {(DQ ('I: ') ($ VSub_DollarName '$name'))})
                            (command.ForEach
                              iter_name: x
                              iter_words: [{(DQ ($ VSub_At '$@'))}]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Sentence
                                      child: (C {(echo)} {(DQ ('IA: ') ($ VSub_DollarName '$x'))})
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  spids: [453 463]
                                )
                              spids: [447 451]
                            )
                            (C {(echo)} {(DQ ('IF: ') ($ VSub_DollarName '$fmt'))})
                          ]
                        )
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(4)})]
                      spids: [433 472]
                    )
                  ]
                  spids: [16777215 430]
                )
              ]
              else_action: [
                (command.SimpleCommand
                  words: [
                    {(printf)}
                    {(DQ ('I: ') ($ VSub_DollarName '$fmt') (Lit_Other '\\') (n))}
                    {(DQ ($ VSub_At '$@'))}
                  ]
                  redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(4)})]
                )
              ]
              spids: [478 498]
            )
          ]
          spids: [390]
        )
      spids: [385 389]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:PROGRESS_NOW spids:[503])
          op: Equal
          rhs: {(0)}
          spids: [503]
        )
      ]
      spids: [503]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:PROGRESS_END spids:[506])
          op: Equal
          rhs: {(0)}
          spids: [506]
        )
      ]
      spids: [506]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:PROGRESS_NEXT spids:[509])
          op: Equal
          rhs: {(DQ )}
          spids: [509]
        )
      ]
      spids: [509]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:PROGRESS_WHAT spids:[513])
          op: Equal
          rhs: {(DQ )}
          spids: [513]
        )
      ]
      spids: [513]
    )
    (command.FuncDef
      name: progress_next
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:PROGRESS_NEXT spids:[526])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [526]
                )
              ]
              spids: [526]
            )
          ]
          spids: [523]
        )
      spids: [518 522]
    )
    (command.FuncDef
      name: wgetprogress
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_Other '[')} {(KW_Bang '!')} {(DQ ($ VSub_DollarName '$VERBOSE'))} 
                  {(Lit_Other ']')}
                )
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:QSWITCH spids:[554])
                      op: Equal
                      rhs: {(DQ (-q))}
                      spids: [554]
                    )
                  ]
                  spids: [554]
                )
              ]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ret spids:[562])
                  op: Equal
                  rhs: {(0)}
                  spids: [562]
                )
              ]
              spids: [560]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(Lit_Other '[')} 
                              {(DQ ($ VSub_DollarName '$USE_DEBIANINSTALLER_INTERACTION'))} {(Lit_Other ']')}
                            )
                            (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$PROGRESS_NEXT'))} 
                              {(Lit_Other ']')}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Pipeline
                      children: [
                        (command.SimpleCommand
                          words: [{(wget)} {(DQ ($ VSub_At '$@'))}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_GreatAnd '2>&'>
                              fd: 2
                              arg_word: {(1)}
                            )
                            (redir.Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                        (command.SimpleCommand
                          words: [
                            {($ VSub_DollarName '$PKGDETAILS')}
                            {(DQ ('WGET%'))}
                            {($ VSub_DollarName '$PROGRESS_NOW')}
                            {($ VSub_DollarName '$PROGRESS_NEXT')}
                            {($ VSub_DollarName '$PROGRESS_END')}
                          ]
                          redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(3)})]
                        )
                      ]
                      negated: F
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:ret spids:[620])
                          op: Equal
                          rhs: {($ VSub_QMark '$?')}
                          spids: [620]
                        )
                      ]
                      spids: [620]
                    )
                  ]
                  spids: [16777215 587]
                )
              ]
              else_action: [
                (C {(wget)} {($ VSub_DollarName '$QSWITCH')} {(DQ ($ VSub_At '$@'))})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:ret spids:[637])
                      op: Equal
                      rhs: {($ VSub_QMark '$?')}
                      spids: [637]
                    )
                  ]
                  spids: [637]
                )
              ]
              spids: [624 641]
            )
            (command.ControlFlow
              token: <ControlFlow_Return return>
              arg_word: {($ VSub_DollarName '$ret')}
            )
          ]
          spids: [539]
        )
      spids: [534 538]
    )
    (command.FuncDef
      name: progress
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:now spids:[665])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [665]
                )
              ]
              spids: [663]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:end spids:[673])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [673]
                )
              ]
              spids: [671]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:name spids:[681])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$3'))}
                  spids: [681]
                )
              ]
              spids: [679]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:fmt spids:[689])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$4'))}
                  spids: [689]
                )
              ]
              spids: [687]
            )
            (command.Sentence child:(C {(shift)}) terminator:<Op_Semi ';'>)
            (command.Sentence child:(C {(shift)}) terminator:<Op_Semi ';'>)
            (command.Sentence child:(C {(shift)}) terminator:<Op_Semi ';'>)
            (C {(shift)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {(DQ ($ VSub_DollarName '$USE_DEBIANINSTALLER_INTERACTION'))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:PROGRESS_NOW spids:[721])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$now'))}
                          spids: [721]
                        )
                      ]
                      spids: [721]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:PROGRESS_END spids:[727])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$end'))}
                          spids: [727]
                        )
                      ]
                      spids: [727]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:PROGRESS_NEXT spids:[733])
                          op: Equal
                          rhs: {(DQ )}
                          spids: [733]
                        )
                      ]
                      spids: [733]
                    )
                    (command.Subshell
                      child: 
                        (command.CommandList
                          children: [
                            (C {(echo)} 
                              {
                                (DQ ('P: ') ($ VSub_DollarName '$now') (' ') ($ VSub_DollarName '$end') 
                                  (' ') ($ VSub_DollarName '$name')
                                )
                              }
                            )
                            (command.ForEach
                              iter_name: x
                              iter_words: [{(DQ ($ VSub_At '$@'))}]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Sentence
                                      child: (C {(echo)} {(DQ ('PA: ') ($ VSub_DollarName '$x'))})
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  spids: [762 772]
                                )
                              spids: [756 760]
                            )
                            (C {(echo)} {(DQ ('PF: ') ($ VSub_DollarName '$fmt'))})
                          ]
                        )
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(3)})]
                      spids: [738 781]
                    )
                  ]
                  spids: [16777215 718]
                )
              ]
              spids: [16777215 787]
            )
          ]
          spids: [656]
        )
      spids: [651 655]
    )
    (command.FuncDef
      name: dpkg_progress
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:now spids:[806])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [806]
                )
              ]
              spids: [804]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:end spids:[814])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [814]
                )
              ]
              spids: [812]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:name spids:[822])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$3'))}
                  spids: [822]
                )
              ]
              spids: [820]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:desc spids:[830])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$4'))}
                  spids: [830]
                )
              ]
              spids: [828]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:action spids:[838])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$5'))}
                  spids: [838]
                )
              ]
              spids: [836]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:expect spids:[846])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [846]
                )
              ]
              spids: [844]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$action'))} {(Lit_Other '=')} 
                          {(UNPACKING)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:expect spids:[868])
                          op: Equal
                          rhs: {(half-installed)}
                          spids: [868]
                        )
                      ]
                      spids: [868]
                    )
                  ]
                  spids: [16777215 865]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$action'))} {(Lit_Other '=')} 
                          {(CONFIGURING)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:expect spids:[890])
                          op: Equal
                          rhs: {(half-configured)}
                          spids: [890]
                        )
                      ]
                      spids: [890]
                    )
                  ]
                  spids: [872 887]
                )
              ]
              spids: [16777215 894]
            )
            (command.FuncDef
              name: dp
              body: 
                (command.BraceGroup
                  children: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:now spids:[906])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.ArithSubPart
                                  anode: 
                                    (arith_expr.ArithBinary
                                      op_id: Arith_Plus
                                      left: (arith_expr.ArithWord w:{($ VSub_DollarName '$now')})
                                      right: 
                                        (arith_expr.ArithWord
                                          w: 
                                            {
                                              (word_part.BracedVarSub
                                                token: <VSub_Number 1>
                                                suffix_op: 
                                                  (suffix_op.StringUnary
                                                    op_id: VTest_ColonHyphen
                                                    arg_word: {(1)}
                                                  )
                                                spids: [913 917]
                                              )
                                            }
                                        )
                                    )
                                  spids: [908 919]
                                )
                              )
                            }
                          spids: [906]
                        )
                      ]
                      spids: [906]
                    )
                  ]
                  spids: [903]
                )
              spids: [898 902]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:exitcode spids:[927])
                  op: Equal
                  rhs: {(0)}
                  spids: [927]
                )
              ]
              spids: [927]
            )
            (command.WhileUntil
              keyword: <KW_While while>
              cond: [
                (command.Sentence
                  child: (C {(read)} {(status)} {(pkg)} {(qstate)})
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$status'))} 
                                  {(Lit_Other '=')} {(DQ (EXITCODE))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:exitcode spids:[965])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_DollarName '$pkg'))}
                                  spids: [965]
                                )
                              ]
                              spids: [965]
                            )
                            (command.ControlFlow
                              token: <ControlFlow_Continue continue>
                            )
                          ]
                          spids: [16777215 962]
                        )
                      ]
                      spids: [16777215 974]
                    )
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$qstate'))} {(Lit_Other '=')} 
                          {(DQ ($ VSub_DollarName '$expect'))} {(Lit_Other ']')}
                        )
                        (command.ControlFlow
                          token: <ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.Case
                      to_match: {($ VSub_DollarName '$qstate')}
                      arms: [
                        (case_arm
                          pat_list: [{(half-installed)}]
                          action: [
                            (command.Sentence
                              child: (C {(dp)})
                              terminator: <Op_Semi ';'>
                            )
                            (C {(progress)} {(DQ ($ VSub_DollarName '$now'))} 
                              {(DQ ($ VSub_DollarName '$end'))} {(DQ ($ VSub_DollarName '$name'))} {(DQ ($ VSub_DollarName '$desc'))}
                            )
                            (C {(info)} {(DQ ($ VSub_DollarName '$action'))} {(DQ ('Unpacking %s...'))} 
                              {
                                (DQ 
                                  (word_part.BracedVarSub
                                    token: <VSub_Name pkg>
                                    suffix_op: 
                                      (suffix_op.StringUnary
                                        op_id: VOp1_Percent
                                        arg_word: {(':')}
                                      )
                                    spids: [1040 1044]
                                  )
                                )
                              }
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:expect spids:[1048])
                                  op: Equal
                                  rhs: {(unpacked)}
                                  spids: [1048]
                                )
                              ]
                              spids: [1048]
                            )
                          ]
                          spids: [1003 1004 1052 16777215]
                        )
                        (case_arm
                          pat_list: [{(unpacked)}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:expect spids:[1059])
                                  op: Equal
                                  rhs: {(half-installed)}
                                  spids: [1059]
                                )
                              ]
                              spids: [1059]
                            )
                          ]
                          spids: [1055 1056 1063 16777215]
                        )
                        (case_arm
                          pat_list: [{(half-configured)}]
                          action: [
                            (command.Sentence
                              child: (C {(dp)})
                              terminator: <Op_Semi ';'>
                            )
                            (C {(progress)} {(DQ ($ VSub_DollarName '$now'))} 
                              {(DQ ($ VSub_DollarName '$end'))} {(DQ ($ VSub_DollarName '$name'))} {(DQ ($ VSub_DollarName '$desc'))}
                            )
                            (C {(info)} {(DQ ($ VSub_DollarName '$action'))} {(DQ ('Configuring %s...'))} 
                              {
                                (DQ 
                                  (word_part.BracedVarSub
                                    token: <VSub_Name pkg>
                                    suffix_op: 
                                      (suffix_op.StringUnary
                                        op_id: VOp1_Percent
                                        arg_word: {(':')}
                                      )
                                    spids: [1103 1107]
                                  )
                                )
                              }
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:expect spids:[1111])
                                  op: Equal
                                  rhs: {(installed)}
                                  spids: [1111]
                                )
                              ]
                              spids: [1111]
                            )
                          ]
                          spids: [1066 1067 1115 16777215]
                        )
                        (case_arm
                          pat_list: [{(installed)}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:expect spids:[1122])
                                  op: Equal
                                  rhs: {(half-configured)}
                                  spids: [1122]
                                )
                              ]
                              spids: [1122]
                            )
                          ]
                          spids: [1118 1119 1126 16777215]
                        )
                      ]
                      spids: [996 1000 1129]
                    )
                  ]
                  spids: [942 1132]
                )
            )
            (command.ControlFlow
              token: <ControlFlow_Return return>
              arg_word: {($ VSub_DollarName '$exitcode')}
            )
          ]
          spids: [797]
        )
      spids: [792 796]
    )
    (command.FuncDef
      name: default_mirror
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:DEF_MIRROR spids:[1154])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [1154]
                )
              ]
              spids: [1154]
            )
          ]
          spids: [1151]
        )
      spids: [1146 1150]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:FINDDEBS_NEEDS_INDICES spids:[1162])
          op: Equal
          rhs: {(false)}
          spids: [1162]
        )
      ]
      spids: [1162]
    )
    (command.FuncDef
      name: finddebs_style
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ VSub_Number '$1'))}
              arms: [
                (case_arm pat_list:[{(hardcoded)}] spids:[1182 1183 1186 16777215])
                (case_arm
                  pat_list: [{(from-indices)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:FINDDEBS_NEEDS_INDICES spids:[1193])
                          op: Equal
                          rhs: {(true)}
                          spids: [1193]
                        )
                      ]
                      spids: [1193]
                    )
                  ]
                  spids: [1189 1190 1197 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(error)} {(1)} {(BADFINDDEBS)} {(DQ ('unknown finddebs style'))})]
                  spids: [1200 1201 1215 16777215]
                )
              ]
              spids: [1173 1179 1218]
            )
          ]
          spids: [1170]
        )
      spids: [1165 1169]
    )
    (command.FuncDef
      name: mk_download_dirs
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_DollarName '$DLDEST')} {(Lit_Other '=')} 
                          {(DQ (apt_dest))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(mkdir)} {(-p)} 
                      {
                        (DQ ($ VSub_DollarName '$TARGET') (/) ($ VSub_DollarName '$APTSTATE') 
                          (/lists/partial)
                        )
                      }
                    )
                    (C {(mkdir)} {(-p)} 
                      {(DQ ($ VSub_DollarName '$TARGET') (/var/cache/apt/archives/partial))}
                    )
                  ]
                  spids: [16777215 1246]
                )
              ]
              spids: [16777215 1271]
            )
          ]
          spids: [1228]
        )
      spids: [1223 1227]
    )
    (command.FuncDef
      name: download_style
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{(apt)}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$2'))} {(Lit_Other '=')} 
                                  {(DQ (var-state))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:APTSTATE spids:[1317])
                                  op: Equal
                                  rhs: {(var/state/apt)}
                                  spids: [1317]
                                )
                              ]
                              spids: [1317]
                            )
                          ]
                          spids: [16777215 1314]
                        )
                      ]
                      else_action: [
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:APTSTATE spids:[1324])
                              op: Equal
                              rhs: {(var/lib/apt)}
                              spids: [1324]
                            )
                          ]
                          spids: [1324]
                        )
                      ]
                      spids: [1321 1328]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:DLDEST spids:[1331])
                          op: Equal
                          rhs: {(apt_dest)}
                          spids: [1331]
                        )
                      ]
                      spids: [1331]
                    )
                    (C {(export)} {(APTSTATE)} {(DLDEST)} {(DEBFOR)})
                  ]
                  spids: [1293 1294 1344 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(error)} {(1)} {(BADDLOAD)} {(DQ ('unknown download style'))})]
                  spids: [1347 1348 1362 16777215]
                )
              ]
              spids: [1284 1290 1365]
            )
          ]
          spids: [1281]
        )
      spids: [1276 1280]
    )
    (command.FuncDef
      name: keyring
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_DollarName '$KEYRING'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-e)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:KEYRING spids:[1410])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$1'))}
                                  spids: [1410]
                                )
                              ]
                              spids: [1410]
                            )
                          ]
                          spids: [16777215 1407]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_DollarName '$DISABLE_KEYRING'))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.AndOr
                                          ops: [Op_DAmp Op_DAmp]
                                          children: [
                                            (C {(Lit_Other '[')} {(-n)} 
                                              {(DQ ($ VSub_DollarName '$DEF_HTTPS_MIRROR'))} {(Lit_Other ']')}
                                            )
                                            (C {(Lit_Other '[')} {(-z)} 
                                              {(DQ ($ VSub_DollarName '$USER_MIRROR'))} {(Lit_Other ']')}
                                            )
                                            (C {(Lit_Other '[')} {(-z)} 
                                              {(DQ ($ VSub_DollarName '$FORCE_KEYRING'))} {(Lit_Other ']')}
                                            )
                                          ]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(info)} {(KEYRING)} 
                                      {
                                        (DQ 
                                          (
'Keyring file not available at %s; switching to https mirror %s'
                                          )
                                        )
                                      } {(DQ ($ VSub_Number '$1'))} {(DQ ($ VSub_DollarName '$DEF_HTTPS_MIRROR'))}
                                    )
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:USER_MIRROR spids:[1489])
                                          op: Equal
                                          rhs: {(DQ ($ VSub_DollarName '$DEF_HTTPS_MIRROR'))}
                                          spids: [1489]
                                        )
                                      ]
                                      spids: [1489]
                                    )
                                  ]
                                  spids: [16777215 1469]
                                )
                              ]
                              else_action: [
                                (C {(warning)} {(KEYRING)} 
                                  {
                                    (DQ 
                                      (
'Cannot check Release signature; keyring file not available %s'
                                      )
                                    )
                                  } {(DQ ($ VSub_Number '$1'))}
                                )
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (command.Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {(-n)} 
                                              {(DQ ($ VSub_DollarName '$FORCE_KEYRING'))} {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [
                                        (C {(error)} {(1)} {(KEYRING)} 
                                          {
                                            (DQ 
                                              (
'Keyring-based check was requested; aborting accordingly'
                                              )
                                            )
                                          }
                                        )
                                      ]
                                      spids: [16777215 1524]
                                    )
                                  ]
                                  spids: [16777215 1538]
                                )
                              ]
                              spids: [1495 1541]
                            )
                          ]
                          spids: [1416 1429]
                        )
                      ]
                      spids: [16777215 1544]
                    )
                  ]
                  spids: [16777215 1391]
                )
              ]
              spids: [16777215 1547]
            )
          ]
          spids: [1375]
        )
      spids: [1370 1374]
    )
    (command.FuncDef
      name: doing_variant
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} 
                          {(DQ ($ VSub_DollarName '$VARIANT'))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Sentence
                      child: (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [16777215 1581]
                )
              ]
              spids: [16777215 1588]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (-))} 
                              {(Lit_Other ']')}
                            )
                            (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$VARIANT'))} {(Lit_Other '=')} {(DQ )} 
                              {(Lit_Other ']')}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Sentence
                      child: (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [16777215 1623]
                )
              ]
              spids: [16777215 1630]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [1561]
        )
      spids: [1556 1560]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:SUPPORTED_VARIANTS spids:[1640])
          op: Equal
          rhs: {(DQ (-))}
          spids: [1640]
        )
      ]
      spids: [1640]
    )
    (command.FuncDef
      name: variants
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:SUPPORTED_VARIANTS spids:[1653])
                  op: Equal
                  rhs: {(DQ ($ VSub_Star '$*'))}
                  spids: [1653]
                )
              ]
              spids: [1653]
            )
            (command.ForEach
              iter_name: v
              iter_words: [{($ VSub_Star '$*')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: (C {(doing_variant)} {(DQ ($ VSub_DollarName '$v'))})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Sentence
                              child: 
                                (command.ControlFlow
                                  token: <ControlFlow_Return return>
                                  arg_word: {(0)}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [16777215 1680]
                        )
                      ]
                      spids: [16777215 1687]
                    )
                  ]
                  spids: [1668 1690]
                )
              spids: [1664 1666]
            )
            (C {(error)} {(1)} {(UNSUPPVARIANT)} {(DQ ('unsupported variant'))})
          ]
          spids: [1650]
        )
      spids: [1645 1649]
    )
    (command.FuncDef
      name: mirror_style
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{(release)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:DOWNLOAD_INDICES spids:[1731])
                          op: Equal
                          rhs: {(download_release_indices)}
                          spids: [1731]
                        )
                      ]
                      spids: [1731]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:DOWNLOAD_DEBS spids:[1735])
                          op: Equal
                          rhs: {(download_release)}
                          spids: [1735]
                        )
                      ]
                      spids: [1735]
                    )
                  ]
                  spids: [1727 1728 1739 16777215]
                )
                (case_arm
                  pat_list: [{(main)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:DOWNLOAD_INDICES spids:[1746])
                          op: Equal
                          rhs: {(download_main_indices)}
                          spids: [1746]
                        )
                      ]
                      spids: [1746]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:DOWNLOAD_DEBS spids:[1750])
                          op: Equal
                          rhs: {(download_main)}
                          spids: [1750]
                        )
                      ]
                      spids: [1750]
                    )
                  ]
                  spids: [1742 1743 1754 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(error)} {(1)} {(BADMIRROR)} {(DQ ('unknown mirror style'))})]
                  spids: [1757 1758 1772 16777215]
                )
              ]
              spids: [1718 1724 1775]
            )
            (C {(export)} {(DOWNLOAD_INDICES)})
            (C {(export)} {(DOWNLOAD_DEBS)})
          ]
          spids: [1715]
        )
      spids: [1710 1714]
    )
    (command.FuncDef
      name: force_md5
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:DEBOOTSTRAP_CHECKSUM_FIELD spids:[1798])
                  op: Equal
                  rhs: {(MD5SUM)}
                  spids: [1798]
                )
              ]
              spids: [1798]
            )
            (C {(export)} {(DEBOOTSTRAP_CHECKSUM_FIELD)})
          ]
          spids: [1795]
        )
      spids: [1790 1794]
    )
    (command.FuncDef
      name: verify_checksum
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:expchecksum spids:[1823])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [1823]
                )
              ]
              spids: [1821]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:expsize spids:[1831])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$3'))}
                  spids: [1831]
                )
              ]
              spids: [1829]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$DEBOOTSTRAP_CHECKSUM_FIELD'))} 
                          {(Lit_Other '=')} {(DQ (MD5SUM))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: (C {(in_path)} {(md5sum)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:relchecksum spids:[1867])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.CommandSubPart
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.Pipeline
                                                children: [
                                                  (command.SimpleCommand
                                                    words: [{(md5sum)}]
                                                    redirects: [
                                                      (redir.Redir
                                                        op: <Redir_Less '<'>
                                                        fd: 16777215
                                                        arg_word: {(DQ ($ VSub_Number '$1'))}
                                                      )
                                                    ]
                                                  )
                                                  (C {(sed)} {(SQ <'s/ .*$//'>)})
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                        left_token: <Left_Backtick '`'>
                                        spids: [1868 1884]
                                      )
                                    }
                                  spids: [1867]
                                )
                              ]
                              spids: [1867]
                            )
                          ]
                          spids: [16777215 1864]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: (C {(in_path)} {(md5)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:relchecksum spids:[1897])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.CommandSubPart
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.SimpleCommand
                                                words: [{(md5)}]
                                                redirects: [
                                                  (redir.Redir
                                                    op: <Redir_Less '<'>
                                                    fd: 16777215
                                                    arg_word: {(DQ ($ VSub_Number '$1'))}
                                                  )
                                                ]
                                              )
                                            ]
                                          )
                                        left_token: <Left_Backtick '`'>
                                        spids: [1898 1906]
                                      )
                                    }
                                  spids: [1897]
                                )
                              ]
                              spids: [1897]
                            )
                          ]
                          spids: [1887 1894]
                        )
                      ]
                      else_action: [(C {(error)} {(1)} {(SIGCHECK)} {(DQ ('Cannot check md5sum'))})]
                      spids: [1909 1923]
                    )
                  ]
                  spids: [16777215 1854]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: (C {(in_path)} {(DQ (sha) (${ VSub_Name SHA_SIZE) (sum))})
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:relchecksum spids:[1945])
                              op: Equal
                              rhs: 
                                {
                                  (word_part.CommandSubPart
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (command.Pipeline
                                            children: [
                                              (command.SimpleCommand
                                                words: [{(sha) (${ VSub_Name SHA_SIZE) (sum)}]
                                                redirects: [
                                                  (redir.Redir
                                                    op: <Redir_Less '<'>
                                                    fd: 16777215
                                                    arg_word: {(DQ ($ VSub_Number '$1'))}
                                                  )
                                                ]
                                              )
                                              (C {(sed)} {(SQ <'s/ .*$//'>)})
                                            ]
                                            negated: F
                                          )
                                        ]
                                      )
                                    left_token: <Left_Backtick '`'>
                                    spids: [1946 1966]
                                  )
                                }
                              spids: [1945]
                            )
                          ]
                          spids: [1945]
                        )
                      ]
                      spids: [16777215 1942]
                    )
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: (C {(in_path)} {(DQ (sha) (${ VSub_Name SHA_SIZE))})
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:relchecksum spids:[1984])
                              op: Equal
                              rhs: 
                                {
                                  (word_part.CommandSubPart
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (command.SimpleCommand
                                            words: [{(sha) (${ VSub_Name SHA_SIZE)}]
                                            redirects: [
                                              (redir.Redir
                                                op: <Redir_Less '<'>
                                                fd: 16777215
                                                arg_word: {(DQ ($ VSub_Number '$1'))}
                                              )
                                            ]
                                          )
                                        ]
                                      )
                                    left_token: <Left_Backtick '`'>
                                    spids: [1985 1996]
                                  )
                                }
                              spids: [1984]
                            )
                          ]
                          spids: [1984]
                        )
                      ]
                      spids: [1969 1981]
                    )
                  ]
                  else_action: [
                    (C {(error)} {(1)} {(SIGCHECK)} 
                      {(DQ ('Cannot check sha') (${ VSub_Name SHA_SIZE) (sum))}
                    )
                  ]
                  spids: [1999 2017]
                )
              ]
              spids: [1926 2020]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:relsize spids:[2023])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.SimpleCommand
                                words: [{(wc)} {(-c)}]
                                redirects: [
                                  (redir.Redir
                                    op: <Redir_Less '<'>
                                    fd: 16777215
                                    arg_word: {(DQ ($ VSub_Number '$1'))}
                                  )
                                ]
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [2024 2034]
                      )
                    }
                  spids: [2023]
                )
              ]
              spids: [2023]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DPipe]
                          children: [
                            (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$expsize'))} {(-ne)} 
                              {(DQ ($ VSub_DollarName '$relsize'))} {(Lit_Other ']')}
                            )
                            (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$expchecksum'))} 
                              {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_DollarName '$relchecksum'))} {(Lit_Other ']')}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                  spids: [16777215 2071]
                )
              ]
              spids: [16777215 2079]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [1814]
        )
      spids: [1809 1813]
    )
    (command.FuncDef
      name: get
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:displayname spids:[2107])
                  op: Equal
                  spids: [2107]
                )
              ]
              spids: [2105]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:versionname spids:[2112])
                  op: Equal
                  spids: [2112]
                )
              ]
              spids: [2110]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (DQ 
                              (word_part.BracedVarSub
                                token: <VSub_Number 2>
                                suffix_op: (suffix_op.StringUnary op_id:VOp1_Percent arg_word:{(.deb)})
                                spids: [2120 2124]
                              )
                            )
                          } {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Number '$2'))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:displayname spids:[2140])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (C {(echo)} {(DQ ($ VSub_Number '$2'))})
                                            (C {(sed)} {(SQ <'s,^.*/,,;s,_.*$,,'>)})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [2142 2156]
                                )
                              )
                            }
                          spids: [2140]
                        )
                      ]
                      spids: [2140]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:versionname spids:[2160])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (C {(echo)} {(DQ ($ VSub_Number '$2'))})
                                            (C {(sed)} {(SQ <'s,^.*/,,'>)})
                                            (C {(cut)} {(-d_)} {(-f2)})
                                            (C {(sed)} {(SQ <'s/%3a/:/'>)})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [2162 2192]
                                )
                              )
                            }
                          spids: [2160]
                        )
                      ]
                      spids: [2160]
                    )
                  ]
                  spids: [16777215 2137]
                )
              ]
              else_action: [
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:displayname spids:[2199])
                      op: Equal
                      rhs: 
                        {
                          (DQ 
                            (word_part.CommandSubPart
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {(echo)} {(DQ ($ VSub_Number '$1'))})
                                        (C {(sed)} {(SQ <'s,^.*/,,'>)})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [2201 2215]
                            )
                          )
                        }
                      spids: [2199]
                    )
                  ]
                  spids: [2199]
                )
              ]
              spids: [2196 2219]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(Lit_Other '[')} {(-e)} {(DQ ($ VSub_Number '$2'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Number '$3'))} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(0)}
                            )
                          ]
                          spids: [16777215 2252]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$3'))} {(Lit_Other '=')} 
                                  {(nocache)} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(rm)} {(-f)} {(DQ ($ VSub_Number '$2'))})]
                          spids: [2260 2275]
                        )
                      ]
                      else_action: [
                        (C {(info)} {(VALIDATING)} {(DQ ('Validating %s %s'))} 
                          {(DQ ($ VSub_DollarName '$displayname'))} {(DQ ($ VSub_DollarName '$versionname'))}
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: [
                                (command.Sentence
                                  child: 
                                    (C {(verify_checksum)} {(DQ ($ VSub_Number '$2'))} 
                                      {(DQ ($ VSub_Number '$3'))} {(DQ ($ VSub_Number '$4'))}
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (command.ControlFlow
                                  token: <ControlFlow_Return return>
                                  arg_word: {(0)}
                                )
                              ]
                              spids: [16777215 2324]
                            )
                          ]
                          else_action: [(C {(rm)} {(-f)} {(DQ ($ VSub_Number '$2'))})]
                          spids: [2332 2344]
                        )
                      ]
                      spids: [2287 2347]
                    )
                  ]
                  spids: [16777215 2236]
                )
              ]
              spids: [16777215 2350]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$3'))} {(Lit_Other '=')} {(nocache)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(set)} {(DQ ($ VSub_Number '$1'))} {(DQ ($ VSub_Number '$2'))})]
                  spids: [16777215 2372]
                )
              ]
              spids: [16777215 2386]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Pound '$#'))} {(-gt)} {(5)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:st spids:[2410])
                          op: Equal
                          rhs: {(3)}
                          spids: [2410]
                        )
                      ]
                      spids: [2408]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$5'))} {(Lit_Other '=')} 
                                  {(DQ (-))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Sentence
                              child: 
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:st spids:[2433])
                                      op: Equal
                                      rhs: {(6)}
                                      spids: [2433]
                                    )
                                  ]
                                  spids: [2433]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [16777215 2431]
                        )
                      ]
                      spids: [16777215 2437]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:order spids:[2442])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Sentence
                                          child: 
                                            (command.Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (lhs_expr.LhsName name:a spids:[2445])
                                                  op: Equal
                                                  rhs: {($ VSub_DollarName '$st')}
                                                  spids: [2445]
                                                )
                                              ]
                                              spids: [2445]
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                        (command.Pipeline
                                          children: [
                                            (command.WhileUntil
                                              keyword: <KW_While while>
                                              cond: [
                                                (command.Sentence
                                                  child: 
                                                    (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$a'))} 
                                                      {(-le)} {($ VSub_Pound '$#')} {(Lit_Other ']')}
                                                    )
                                                  terminator: <Op_Semi ';'>
                                                )
                                              ]
                                              body: 
                                                (command.DoGroup
                                                  children: [
                                                    (command.Sentence
                                                      child: 
                                                        (C {(eval)} {(echo)} 
                                                          {
                                                            (word_part.EscapedLiteralPart
                                                              token: <Lit_EscapedChar '\\"'>
                                                            ) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (Lit_LBrace '{') 
                                                            (word_part.ArithSubPart
                                                              anode: 
                                                                (arith_expr.ArithBinary
                                                                  op_id: Arith_Plus
                                                                  left: 
                                                                    (arith_expr.ArithWord
                                                                      w: {($ VSub_DollarName '$a')}
                                                                    )
                                                                  right: 
                                                                    (arith_expr.ArithWord
                                                                      w: {(Lit_Digits 1)}
                                                                    )
                                                                )
                                                              spids: [2473 2478]
                                                            ) (Lit_RBrace '}') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                                                          } {($ VSub_DollarName '$a')}
                                                        )
                                                      terminator: <Op_Semi ';'>
                                                    )
                                                    (command.Sentence
                                                      child: 
                                                        (command.Assignment
                                                          keyword: Assign_None
                                                          pairs: [
                                                            (assign_pair
                                                              lhs: 
                                                                (lhs_expr.LhsName
                                                                  name: a
                                                                  spids: [2486]
                                                                )
                                                              op: Equal
                                                              rhs: 
                                                                {
                                                                  (word_part.ArithSubPart
                                                                    anode: 
                                                                      (arith_expr.ArithBinary
                                                                        op_id: Arith_Plus
                                                                        left: 
                                                                          (arith_expr.ArithWord
                                                                            w: 
                                                                              {
                                                                                ($ VSub_DollarName 
'$a'
                                                                                )
                                                                              }
                                                                          )
                                                                        right: 
                                                                          (arith_expr.ArithWord
                                                                            w: {(Lit_Digits 3)}
                                                                          )
                                                                      )
                                                                    spids: [2487 2494]
                                                                  )
                                                                }
                                                              spids: [2486]
                                                            )
                                                          ]
                                                          spids: [2486]
                                                        )
                                                      terminator: <Op_Semi ';'>
                                                    )
                                                  ]
                                                  spids: [2464 2497]
                                                )
                                            )
                                            (C {(sort)} {(-n)})
                                            (C {(sed)} {(SQ <'s/.* //'>)})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [2444 2512]
                                )
                              )
                            }
                          spids: [2442]
                        )
                      ]
                      spids: [2440]
                    )
                  ]
                  spids: [16777215 2405]
                )
              ]
              else_action: [
                (command.Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:order spids:[2521])
                      op: Equal
                      rhs: {(3)}
                      spids: [2521]
                    )
                  ]
                  spids: [2519]
                )
              ]
              spids: [2516 2525]
            )
            (command.ForEach
              iter_name: a
              iter_words: [{($ VSub_DollarName '$order')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:checksum spids:[2542])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(eval)} {(echo)} 
                                          {
                                            (word_part.EscapedLiteralPart
                                              token: <Lit_EscapedChar '\\$'>
                                            ) (Lit_LBrace '{') ($ VSub_DollarName '$a') (Lit_RBrace '}')
                                          }
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [2544 2553]
                                )
                              )
                            }
                          spids: [2542]
                        )
                      ]
                      spids: [2540]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:siz spids:[2559])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(eval)} {(echo)} 
                                          {
                                            (word_part.EscapedLiteralPart
                                              token: <Lit_EscapedChar '\\$'>
                                            ) (Lit_LBrace '{') 
                                            (word_part.ArithSubPart
                                              anode: 
                                                (arith_expr.ArithBinary
                                                  op_id: Arith_Plus
                                                  left: 
                                                    (arith_expr.ArithWord
                                                      w: {($ VSub_DollarName '$a')}
                                                    )
                                                  right: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                                )
                                              spids: [2568 2575]
                                            ) (Lit_RBrace '}')
                                          }
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [2561 2577]
                                )
                              )
                            }
                          spids: [2559]
                        )
                      ]
                      spids: [2557]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:typ spids:[2583])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(eval)} {(echo)} 
                                          {
                                            (word_part.EscapedLiteralPart
                                              token: <Lit_EscapedChar '\\$'>
                                            ) (Lit_LBrace '{') 
                                            (word_part.ArithSubPart
                                              anode: 
                                                (arith_expr.ArithBinary
                                                  op_id: Arith_Plus
                                                  left: 
                                                    (arith_expr.ArithWord
                                                      w: {($ VSub_DollarName '$a')}
                                                    )
                                                  right: (arith_expr.ArithWord w:{(Lit_Digits 2)})
                                                )
                                              spids: [2592 2599]
                                            ) (Lit_RBrace '}')
                                          }
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [2585 2601]
                                )
                              )
                            }
                          spids: [2583]
                        )
                      ]
                      spids: [2581]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:from spids:[2607])
                          op: Equal
                          spids: [2607]
                        )
                      ]
                      spids: [2605]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:dest spids:[2612])
                          op: Equal
                          spids: [2612]
                        )
                      ]
                      spids: [2610]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:iters spids:[2617])
                          op: Equal
                          rhs: {(0)}
                          spids: [2617]
                        )
                      ]
                      spids: [2615]
                    )
                    (command.Case
                      to_match: {(DQ ($ VSub_DollarName '$typ'))}
                      arms: [
                        (case_arm
                          pat_list: [{(xz)}]
                          action: [
                            (command.Sentence
                              child: 
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:from spids:[2634])
                                      op: Equal
                                      rhs: {(DQ ($ VSub_Number '$1') (.xz))}
                                      spids: [2634]
                                    )
                                  ]
                                  spids: [2634]
                                )
                              terminator: <Op_Semi ';'>
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:dest spids:[2641])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$2') (.xz))}
                                  spids: [2641]
                                )
                              ]
                              spids: [2641]
                            )
                          ]
                          spids: [2631 2632 2647 16777215]
                        )
                        (case_arm
                          pat_list: [{(bz2)}]
                          action: [
                            (command.Sentence
                              child: 
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:from spids:[2653])
                                      op: Equal
                                      rhs: {(DQ ($ VSub_Number '$1') (.bz2))}
                                      spids: [2653]
                                    )
                                  ]
                                  spids: [2653]
                                )
                              terminator: <Op_Semi ';'>
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:dest spids:[2660])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$2') (.bz2))}
                                  spids: [2660]
                                )
                              ]
                              spids: [2660]
                            )
                          ]
                          spids: [2650 2651 2666 16777215]
                        )
                        (case_arm
                          pat_list: [{(gz)}]
                          action: [
                            (command.Sentence
                              child: 
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:from spids:[2672])
                                      op: Equal
                                      rhs: {(DQ ($ VSub_Number '$1') (.gz))}
                                      spids: [2672]
                                    )
                                  ]
                                  spids: [2672]
                                )
                              terminator: <Op_Semi ';'>
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:dest spids:[2679])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$2') (.gz))}
                                  spids: [2679]
                                )
                              ]
                              spids: [2679]
                            )
                          ]
                          spids: [2669 2670 2685 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (command.Sentence
                              child: 
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:from spids:[2691])
                                      op: Equal
                                      rhs: {(DQ ($ VSub_Number '$1'))}
                                      spids: [2691]
                                    )
                                  ]
                                  spids: [2691]
                                )
                              terminator: <Op_Semi ';'>
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:dest spids:[2697])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$2'))}
                                  spids: [2697]
                                )
                              ]
                              spids: [2697]
                            )
                          ]
                          spids: [2688 2689 2702 16777215]
                        )
                      ]
                      spids: [2622 2628 2705]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} 
                                  {
                                    (DQ 
                                      (word_part.BracedVarSub
                                        token: <VSub_Name dest>
                                        suffix_op: 
                                          (suffix_op.StringUnary
                                            op_id: VOp1_Pound
                                            arg_word: {(Lit_Slash /)}
                                          )
                                        spids: [2714 2718]
                                      )
                                    )
                                  } {(Lit_Other '=')} {(DQ ($ VSub_DollarName '$dest'))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:dest spids:[2733])
                                  op: Equal
                                  rhs: {(DQ (./) ($ VSub_DollarName '$dest'))}
                                  spids: [2733]
                                )
                              ]
                              spids: [2733]
                            )
                          ]
                          spids: [16777215 2730]
                        )
                      ]
                      spids: [16777215 2740]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:dest2 spids:[2745])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$dest'))}
                          spids: [2745]
                        )
                      ]
                      spids: [2743]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-d)} 
                                  {
                                    (DQ 
                                      (word_part.BracedVarSub
                                        token: <VSub_Name dest2>
                                        suffix_op: 
                                          (suffix_op.StringUnary
                                            op_id: VOp1_Percent
                                            arg_word: {(Lit_Slash /) ('*')}
                                          )
                                        spids: [2758 2763]
                                      ) (/partial)
                                    )
                                  } {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:dest2 spids:[2773])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (word_part.BracedVarSub
                                          token: <VSub_Name dest2>
                                          suffix_op: 
                                            (suffix_op.StringUnary
                                              op_id: VOp1_Percent
                                              arg_word: {(Lit_Slash /) ('*')}
                                            )
                                          spids: [2775 2780]
                                        ) (/partial/) 
                                        (word_part.BracedVarSub
                                          token: <VSub_Name dest2>
                                          suffix_op: 
                                            (suffix_op.StringUnary
                                              op_id: VOp1_DPound
                                              arg_word: {('*') (Lit_Slash /)}
                                            )
                                          spids: [2782 2787]
                                        )
                                      )
                                    }
                                  spids: [2773]
                                )
                              ]
                              spids: [2773]
                            )
                          ]
                          spids: [16777215 2770]
                        )
                      ]
                      spids: [16777215 2791]
                    )
                    (command.WhileUntil
                      keyword: <KW_While while>
                      cond: [
                        (command.Sentence
                          child: 
                            (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$iters'))} {(-lt)} {(10)} 
                              {(Lit_Other ']')}
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      body: 
                        (command.DoGroup
                          children: [
                            (C {(info)} {(RETRIEVING)} {(DQ ('Retrieving %s %s'))} 
                              {(DQ ($ VSub_DollarName '$displayname'))} {(DQ ($ VSub_DollarName '$versionname'))}
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.Pipeline
                                          children: [
                                            (C {(just_get)} {(DQ ($ VSub_DollarName '$from'))} 
                                              {(DQ ($ VSub_DollarName '$dest2'))}
                                            )
                                          ]
                                          negated: T
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (command.Sentence
                                      child: 
                                        (command.ControlFlow
                                          token: <ControlFlow_Continue continue>
                                          arg_word: {(2)}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  spids: [16777215 2845]
                                )
                              ]
                              spids: [16777215 2852]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$checksum'))} 
                                          {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(info)} {(VALIDATING)} {(DQ ('Validating %s %s'))} 
                                      {(DQ ($ VSub_DollarName '$displayname'))} {(DQ ($ VSub_DollarName '$versionname'))}
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {(verify_checksum)} 
                                                  {(DQ ($ VSub_DollarName '$dest2'))} {(DQ ($ VSub_DollarName '$checksum'))} {(DQ ($ VSub_DollarName '$siz'))}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (command.Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (lhs_expr.LhsName name:checksum spids:[2912])
                                                  op: Equal
                                                  rhs: {(DQ )}
                                                  spids: [2912]
                                                )
                                              ]
                                              spids: [2912]
                                            )
                                          ]
                                          spids: [16777215 2909]
                                        )
                                      ]
                                      spids: [16777215 2917]
                                    )
                                  ]
                                  spids: [16777215 2872]
                                )
                              ]
                              spids: [16777215 2920]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-z)} 
                                          {(DQ ($ VSub_DollarName '$checksum'))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (command.AndOr
                                      ops: [Op_DPipe]
                                      children: [
                                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$dest2'))} 
                                          {(Lit_Other '=')} {(DQ ($ VSub_DollarName '$dest'))} {(Lit_Other ']')}
                                        )
                                        (C {(mv)} {(DQ ($ VSub_DollarName '$dest2'))} 
                                          {(DQ ($ VSub_DollarName '$dest'))}
                                        )
                                      ]
                                    )
                                    (command.Case
                                      to_match: {(DQ ($ VSub_DollarName '$typ'))}
                                      arms: [
                                        (case_arm
                                          pat_list: [{(gz)}]
                                          action: [(C {(gunzip)} {(DQ ($ VSub_DollarName '$dest'))})]
                                          spids: [2975 2976 2984 16777215]
                                        )
                                        (case_arm
                                          pat_list: [{(bz2)}]
                                          action: [(C {(bunzip2)} {(DQ ($ VSub_DollarName '$dest'))})]
                                          spids: [2987 2988 2996 16777215]
                                        )
                                        (case_arm
                                          pat_list: [{(xz)}]
                                          action: [(C {(unxz)} {(DQ ($ VSub_DollarName '$dest'))})]
                                          spids: [2999 3000 3008 16777215]
                                        )
                                      ]
                                      spids: [2966 2972 3011]
                                    )
                                    (command.ControlFlow
                                      token: <ControlFlow_Return return>
                                      arg_word: {(0)}
                                    )
                                  ]
                                  spids: [16777215 2936]
                                )
                              ]
                              else_action: [
                                (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$dest2'))})
                                (C {(warning)} {(RETRYING)} {(DQ ('Retrying failed download of %s'))} 
                                  {(DQ ($ VSub_DollarName '$from'))}
                                )
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:iters spids:[3044])
                                      op: Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (word_part.ArithSubPart
                                              anode: 
                                                (arith_expr.ArithBinary
                                                  op_id: Arith_Plus
                                                  left: 
                                                    (arith_expr.ArithWord
                                                      w: {($ VSub_DollarName '$iters')}
                                                    )
                                                  right: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                                )
                                              spids: [3046 3053]
                                            )
                                          )
                                        }
                                      spids: [3044]
                                    )
                                  ]
                                  spids: [3044]
                                )
                              ]
                              spids: [3019 3057]
                            )
                          ]
                          spids: [2810 3060]
                        )
                    )
                    (C {(warning)} {(CORRUPTFILE)} {(DQ ('%s was corrupt'))} 
                      {(DQ ($ VSub_DollarName '$from'))}
                    )
                  ]
                  spids: [2537 3076]
                )
              spids: [2533 2535]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [2094]
        )
      spids: [2089 2093]
    )
    (command.FuncDef
      name: just_get
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:from spids:[3100])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [3100]
                )
              ]
              spids: [3098]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:dest spids:[3108])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [3108]
                )
              ]
              spids: [3106]
            )
            (C {(mkdir)} {(-p)} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name dest>
                    suffix_op: 
                      (suffix_op.StringUnary
                        op_id: VOp1_Percent
                        arg_word: {(Lit_Slash /) ('*')}
                      )
                    spids: [3119 3124]
                  )
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (DQ 
                              (word_part.BracedVarSub
                                token: <VSub_Name from>
                                suffix_op: 
                                  (suffix_op.StringUnary
                                    op_id: VOp1_Pound
                                    arg_word: {('null:')}
                                  )
                                spids: [3133 3137]
                              )
                            )
                          } {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_DollarName '$from'))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(error)} {(1)} {(NOTPREDL)} {(DQ ('%s was not pre-downloaded'))} 
                      {
                        (DQ 
                          (word_part.BracedVarSub
                            token: <VSub_Name from>
                            suffix_op: (suffix_op.StringUnary op_id:VOp1_Pound arg_word:{('null:')})
                            spids: [3164 3168]
                          )
                        )
                      }
                    )
                  ]
                  spids: [16777215 3150]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DPipe]
                          children: [
                            (C {(Lit_Other '[')} 
                              {
                                (DQ 
                                  (word_part.BracedVarSub
                                    token: <VSub_Name from>
                                    suffix_op: 
                                      (suffix_op.StringUnary
                                        op_id: VOp1_Pound
                                        arg_word: {('http:') (Lit_Slash /) (Lit_Slash /)}
                                      )
                                    spids: [3177 3183]
                                  )
                                )
                              } {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_DollarName '$from'))} {(Lit_Other ']')}
                            )
                            (C {(Lit_Other '[')} 
                              {
                                (DQ 
                                  (word_part.BracedVarSub
                                    token: <VSub_Name from>
                                    suffix_op: 
                                      (suffix_op.StringUnary
                                        op_id: VOp1_Pound
                                        arg_word: {('ftp:') (Lit_Slash /) (Lit_Slash /)}
                                      )
                                    spids: [3200 3206]
                                  )
                                )
                              } {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_DollarName '$from'))} {(Lit_Other ']')}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(wgetprogress)} {(-O)} {(DQ ($ VSub_DollarName '$dest'))} 
                                  {(DQ ($ VSub_DollarName '$from'))}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(0)}
                            )
                          ]
                          spids: [16777215 3241]
                        )
                      ]
                      else_action: [
                        (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$dest'))})
                        (command.ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                      spids: [3249 3266]
                    )
                  ]
                  spids: [3172 3219]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (DQ 
                              (word_part.BracedVarSub
                                token: <VSub_Name from>
                                suffix_op: 
                                  (suffix_op.StringUnary
                                    op_id: VOp1_Pound
                                    arg_word: {('https:') (Lit_Slash /) (Lit_Slash /)}
                                  )
                                spids: [3274 3280]
                              )
                            )
                          } {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_DollarName '$from'))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(wgetprogress)} {($ VSub_DollarName '$CHECKCERTIF')} 
                                  {($ VSub_DollarName '$CERTIFICATE')} {($ VSub_DollarName '$PRIVATEKEY')} {(-O)} {(DQ ($ VSub_DollarName '$dest'))} 
                                  {(DQ ($ VSub_DollarName '$from'))}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(0)}
                            )
                          ]
                          spids: [16777215 3322]
                        )
                      ]
                      else_action: [
                        (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$dest'))})
                        (command.ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                      spids: [3330 3347]
                    )
                  ]
                  spids: [3269 3294]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (DQ 
                              (word_part.BracedVarSub
                                token: <VSub_Name from>
                                suffix_op: 
                                  (suffix_op.StringUnary
                                    op_id: VOp1_Pound
                                    arg_word: {('file:')}
                                  )
                                spids: [3355 3359]
                              )
                            )
                          } {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_DollarName '$from'))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:base spids:[3377])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.BracedVarSub
                                  token: <VSub_Name from>
                                  suffix_op: 
                                    (suffix_op.StringUnary
                                      op_id: VOp1_Pound
                                      arg_word: {('file:')}
                                    )
                                  spids: [3379 3383]
                                )
                              )
                            }
                          spids: [3377]
                        )
                      ]
                      spids: [3375]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} 
                                  {
                                    (DQ 
                                      (word_part.BracedVarSub
                                        token: <VSub_Name base>
                                        suffix_op: 
                                          (suffix_op.StringUnary
                                            op_id: VOp1_Pound
                                            arg_word: {(Lit_Slash /) (Lit_Slash /)}
                                          )
                                        spids: [3392 3397]
                                      )
                                    )
                                  } {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_DollarName '$base'))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:base spids:[3413])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ (/) 
                                        (word_part.BracedVarSub
                                          token: <VSub_Name from>
                                          suffix_op: 
                                            (suffix_op.StringUnary
                                              op_id: VOp1_Pound
                                              arg_word: 
                                                {('file:') (Lit_Slash /) (Lit_Slash /) ('*') 
                                                  (Lit_Slash /)
                                                }
                                            )
                                          spids: [3416 3424]
                                        )
                                      )
                                    }
                                  spids: [3413]
                                )
                              ]
                              spids: [3413]
                            )
                          ]
                          spids: [16777215 3410]
                        )
                      ]
                      spids: [16777215 3428]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-e)} {(DQ ($ VSub_DollarName '$base'))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(cp)} {(DQ ($ VSub_DollarName '$base'))} 
                              {(DQ ($ VSub_DollarName '$dest'))}
                            )
                            (command.ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(0)}
                            )
                          ]
                          spids: [16777215 3444]
                        )
                      ]
                      else_action: [
                        (command.ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                      spids: [3463 3471]
                    )
                  ]
                  spids: [3350 3372]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (DQ 
                              (word_part.BracedVarSub
                                token: <VSub_Name from>
                                suffix_op: (suffix_op.StringUnary op_id:VOp1_Pound arg_word:{('ssh:')})
                                spids: [3479 3483]
                              )
                            )
                          } {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_DollarName '$from'))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:ssh_dest spids:[3501])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (C {(echo)} {($ VSub_DollarName '$from')})
                                            (C {(sed)} {(-e)} {(SQ <'s#ssh://##'>)} {(-e)} 
                                              {(SQ <'s#/#:/#'>)}
                                            )
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [3503 3523]
                                )
                              )
                            }
                          spids: [3501]
                        )
                      ]
                      spids: [3499]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_DollarName '$ssh_dest'))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(scp)} {(DQ ($ VSub_DollarName '$ssh_dest'))} 
                              {(DQ ($ VSub_DollarName '$dest'))}
                            )
                            (command.ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(0)}
                            )
                          ]
                          spids: [16777215 3540]
                        )
                      ]
                      else_action: [
                        (command.ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                      spids: [3559 3567]
                    )
                  ]
                  spids: [3474 3496]
                )
              ]
              else_action: [
                (C {(error)} {(1)} {(UNKNOWNLOC)} {(DQ ('unknown location %s'))} 
                  {(DQ ($ VSub_DollarName '$from'))}
                )
              ]
              spids: [3570 3588]
            )
          ]
          spids: [3091]
        )
      spids: [3086 3090]
    )
    (command.FuncDef
      name: download
      body: 
        (command.BraceGroup
          children: [
            (C {(mk_download_dirs)})
            (C {(DQ ($ VSub_DollarName '$DOWNLOAD_DEBS'))} 
              {
                (word_part.CommandSubPart
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Pipeline
                          children: [
                            (C {(echo)} {(DQ ($ VSub_At '$@'))})
                            (C {(tr)} {(SQ <' '>)} {(SQ <'\\n'>)})
                            (C {(sort)})
                          ]
                          negated: F
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [3608 3630]
                )
              }
            )
          ]
          spids: [3598]
        )
      spids: [3593 3597]
    )
    (command.FuncDef
      name: download_indices
      body: 
        (command.BraceGroup
          children: [
            (C {(mk_download_dirs)})
            (C {(DQ ($ VSub_DollarName '$DOWNLOAD_INDICES'))} 
              {
                (word_part.CommandSubPart
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Pipeline
                          children: [
                            (C {(echo)} {(DQ ($ VSub_At '$@'))})
                            (C {(tr)} {(SQ <' '>)} {(SQ <'\\n'>)})
                            (C {(sort)})
                          ]
                          negated: F
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [3650 3672]
                )
              }
            )
          ]
          spids: [3640]
        )
      spids: [3635 3639]
    )
    (command.FuncDef
      name: debfor
      body: 
        (command.BraceGroup
          children: [
            (command.Subshell
              child: 
                (command.WhileUntil
                  keyword: <KW_While while>
                  cond: [
                    (command.Sentence
                      child: (C {(read)} {(pkg)} {(path)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  body: 
                    (command.DoGroup
                      children: [
                        (command.ForEach
                          iter_name: p
                          iter_words: [{(DQ ($ VSub_At '$@'))}]
                          do_arg_iter: F
                          body: 
                            (command.DoGroup
                              children: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Op_DPipe]
                                      children: [
                                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$p'))} 
                                          {(Lit_Other '=')} {(DQ ($ VSub_DollarName '$pkg'))} {(Lit_Other ']')}
                                        )
                                        (command.ControlFlow
                                          token: <ControlFlow_Continue continue>
                                        )
                                      ]
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                                (C {(echo)} {(DQ ($ VSub_DollarName '$path'))})
                              ]
                              spids: [3709 3739]
                            )
                          spids: [3703 3707]
                        )
                      ]
                      spids: [3695 3742]
                    )
                  redirects: [
                    (redir.Redir
                      op: <Redir_Less '<'>
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_DollarName '$TARGET') (/debootstrap/debpaths))}
                    )
                  ]
                )
              spids: [3685 3751]
            )
          ]
          spids: [3682]
        )
      spids: [3677 3681]
    )
    (command.FuncDef
      name: apt_dest
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{(deb)}]
                  action: [
                    (command.Pipeline
                      children: [
                        (C {(echo)} 
                          {
                            (DQ (/var/cache/apt/archives/) (${ VSub_Number 2) (_) (${ VSub_Number 3) (_) 
                              (${ VSub_Number 4) (.deb)
                            )
                          }
                        )
                        (C {(sed)} {(SQ <'s/:/%3a/'>)})
                      ]
                      negated: F
                    )
                  ]
                  spids: [3789 3790 3820 16777215]
                )
                (case_arm
                  pat_list: [{(pkg)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:m spids:[3829])
                          op: Equal
                          rhs: {(DQ ($ VSub_Number '$5'))}
                          spids: [3829]
                        )
                      ]
                      spids: [3827]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:m spids:[3835])
                          op: Equal
                          rhs: {(DQ (debootstrap.invalid))}
                          spids: [3835]
                        )
                      ]
                      spids: [3835]
                    )
                    (C {(printf)} {(DQ ('%s'))} {(DQ ($ VSub_DollarName '$APTSTATE') (/lists/))})
                    (command.Pipeline
                      children: [
                        (C {(echo)} {(DQ (${ VSub_Name m) (_) ($ VSub_Number '$6'))})
                        (C {(sed)} {(SQ <'s/\\//_/g'>)})
                      ]
                      negated: F
                    )
                  ]
                  spids: [3823 3824 3901 16777215]
                )
                (case_arm
                  pat_list: [{(rel)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:m spids:[3910])
                          op: Equal
                          rhs: {(DQ ($ VSub_Number '$3'))}
                          spids: [3910]
                        )
                      ]
                      spids: [3908]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:m spids:[3916])
                          op: Equal
                          rhs: {(DQ (debootstrap.invalid))}
                          spids: [3916]
                        )
                      ]
                      spids: [3916]
                    )
                    (C {(printf)} {(DQ ('%s'))} {(DQ ($ VSub_DollarName '$APTSTATE') (/lists/))})
                    (command.Pipeline
                      children: [
                        (C {(echo)} {(DQ (${ VSub_Name m) (_) ($ VSub_Number '$4'))})
                        (C {(sed)} {(SQ <'s/\\//_/g'>)})
                      ]
                      negated: F
                    )
                  ]
                  spids: [3904 3905 3981 16777215]
                )
              ]
              spids: [3780 3786 3984]
            )
          ]
          spids: [3761]
        )
      spids: [3756 3760]
    )
    (command.FuncDef
      name: get_release_checksum
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:reldest spids:[4003])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [4003]
                )
              ]
              spids: [4001]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:path spids:[4011])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [4011]
                )
              ]
              spids: [4009]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$DEBOOTSTRAP_CHECKSUM_FIELD'))} 
                          {(Lit_Other '=')} {(MD5SUM)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:match spids:[4037])
                          op: Equal
                          rhs: {(DQ ('^[Mm][Dd]5[Ss][Uu][Mm]'))}
                          spids: [4037]
                        )
                      ]
                      spids: [4035]
                    )
                  ]
                  spids: [16777215 4032]
                )
              ]
              else_action: [
                (command.Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:match spids:[4048])
                      op: Equal
                      rhs: {(DQ ('^[Ss][Hh][Aa]') ($ VSub_DollarName '$SHA_SIZE') (':'))}
                      spids: [4048]
                    )
                  ]
                  spids: [4046]
                )
              ]
              spids: [4043 4056]
            )
            (command.Pipeline
              children: [
                (command.SimpleCommand
                  words: [{(sed)} {(-n)} {(DQ (/) ($ VSub_DollarName '$match') ('/,/^[^ ]/p'))}]
                  redirects: [
                    (redir.Redir
                      op: <Redir_Less '<'>
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_DollarName '$reldest'))}
                    )
                  ]
                )
                (command.WhileUntil
                  keyword: <KW_While while>
                  cond: [
                    (command.Sentence
                      child: (C {(read)} {(a)} {(b)} {(c)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  body: 
                    (command.DoGroup
                      children: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: [
                                (command.Sentence
                                  child: 
                                    (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$c'))} 
                                      {(Lit_Other '=')} {(DQ ($ VSub_DollarName '$path'))} {(Lit_Other ']')}
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (command.Sentence
                                  child: 
                                    (C {(echo)} 
                                      {(DQ ($ VSub_DollarName '$a') (' ') ($ VSub_DollarName '$b'))}
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              spids: [16777215 4110]
                            )
                          ]
                          spids: [16777215 4121]
                        )
                      ]
                      spids: [4090 4124]
                    )
                )
                (C {(head)} {(-n)} {(1)})
              ]
              negated: F
            )
          ]
          spids: [3998]
        )
      spids: [3993 3997]
    )
    (command.FuncDef
      name: extract_release_components
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:reldest spids:[4147])
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [4147]
                    )
                  ]
                  spids: [4145]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:TMPCOMPONENTS spids:[4156])
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (word_part.CommandSubPart
                          command_list: 
                            (command.CommandList
                              children: [
                                (C {(sed)} {(-n)} {(SQ <'s/Components: *//p'>)} 
                                  {(DQ ($ VSub_DollarName '$reldest'))}
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [4158 4170]
                        )
                      )
                    }
                  spids: [4156]
                )
              ]
              spids: [4156]
            )
            (command.ForEach
              iter_name: c
              iter_words: [{($ VSub_DollarName '$TMPCOMPONENTS')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(eval)} 
                      {
                        (DQ ('\n') ('\t\tcase ') 
                          (word_part.EscapedLiteralPart
                            token: <Lit_EscapedChar '\\"'>
                          ) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (c) 
                          (word_part.EscapedLiteralPart
                            token: <Lit_EscapedChar '\\"'>
                          ) (' in\n') ('\t\t    ') ($ VSub_DollarName '$USE_COMPONENTS') (')\n') ('\t\t\tCOMPONENTS=') 
                          (word_part.EscapedLiteralPart
                            token: <Lit_EscapedChar '\\"'>
                          ) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('COMPONENTS ') 
                          (word_part.EscapedLiteralPart
                            token: <Lit_EscapedChar '\\$'>
                          ) (c) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('\n') ('\t\t\t;;\n') ('\t\tesac\n') 
                          ('\t\t')
                        )
                      }
                    )
                  ]
                  spids: [4184 4214]
                )
              spids: [4179 4182]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:COMPONENTS spids:[4217])
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (word_part.CommandSubPart
                          command_list: 
                            (command.CommandList
                              children: [(C {(echo)} {($ VSub_DollarName '$COMPONENTS')})]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [4219 4223]
                        )
                      )
                    }
                  spids: [4217]
                )
              ]
              spids: [4217]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_DollarName '$COMPONENTS'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(mv)} {(DQ ($ VSub_DollarName '$reldest'))} 
                      {(DQ ($ VSub_DollarName '$reldest') (.malformed))}
                    )
                    (C {(error)} {(1)} {(INVALIDREL)} {(DQ ('Invalid Release file, no valid components'))})
                  ]
                  spids: [16777215 4240]
                )
              ]
              spids: [16777215 4266]
            )
          ]
          spids: [4142]
        )
      spids: [4137 4141]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:CODENAME spids:[4271])
          op: Equal
          rhs: {(DQ )}
          spids: [4271]
        )
      ]
      spids: [4271]
    )
    (command.FuncDef
      name: validate_suite
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:reldest spids:[4285])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [4285]
                )
              ]
              spids: [4283]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:CODENAME spids:[4292])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(sed)} {(-n)} {(DQ ('s/^Codename: *//p'))} 
                                {(DQ ($ VSub_DollarName '$reldest'))}
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [4293 4305]
                      )
                    }
                  spids: [4292]
                )
              ]
              spids: [4292]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:suite spids:[4310])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(sed)} {(-n)} {(DQ ('s/^Suite: *//p'))} 
                                {(DQ ($ VSub_DollarName '$reldest'))}
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [4311 4323]
                      )
                    }
                  spids: [4310]
                )
              ]
              spids: [4308]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$SUITE'))} 
                              {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_DollarName '$suite'))} {(Lit_Other ']')}
                            )
                            (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$SUITE'))} 
                              {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_DollarName '$CODENAME'))} {(Lit_Other ']')}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(error)} {(1)} {(WRONGSUITE)} 
                      {(DQ ('Asked to install suite %s, but got %s (codename: %s) from mirror'))} {(DQ ($ VSub_DollarName '$SUITE'))} {(DQ ($ VSub_DollarName '$suite'))} 
                      {(DQ ($ VSub_DollarName '$CODENAME'))}
                    )
                  ]
                  spids: [16777215 4362]
                )
              ]
              spids: [16777215 4388]
            )
          ]
          spids: [4280]
        )
      spids: [4275 4279]
    )
    (command.FuncDef
      name: split_inline_sig
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:inreldest spids:[4403])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [4403]
                )
              ]
              spids: [4401]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:reldest spids:[4411])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [4411]
                )
              ]
              spids: [4409]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:relsigdest spids:[4419])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$3'))}
                  spids: [4419]
                )
              ]
              spids: [4417]
            )
            (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$reldest'))} 
              {(DQ ($ VSub_DollarName '$relsigdest'))}
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:nl spids:[4459])
                  op: Equal
                  rhs: {(DQ )}
                  spids: [4459]
                )
              ]
              spids: [4459]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:state spids:[4464])
                  op: Equal
                  rhs: {(pre-begin)}
                  spids: [4464]
                )
              ]
              spids: [4464]
            )
            (command.WhileUntil
              keyword: <KW_While while>
              cond: [
                (command.Sentence
                  child: 
                    (command.SimpleCommand
                      words: [{(read)} {(-r)} {(line)}]
                      more_env: [(env_pair name:IFS val:(word.EmptyWord) spids:[4470])]
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {(DQ (${ VSub_Name state))}
                      arms: [
                        (case_arm
                          pat_list: [{(pre-begin)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(DQ (x) (${ VSub_Name line))} 
                                          {(Lit_Other '=')} {(DQ ('x-----BEGIN PGP SIGNED MESSAGE-----'))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:state spids:[4520])
                                          op: Equal
                                          rhs: {(begin)}
                                          spids: [4520]
                                        )
                                      ]
                                      spids: [4520]
                                    )
                                  ]
                                  spids: [16777215 4517]
                                )
                              ]
                              spids: [16777215 4524]
                            )
                          ]
                          spids: [4493 4494 4527 16777215]
                        )
                        (case_arm
                          pat_list: [{(begin)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(DQ (x) (${ VSub_Name line))} 
                                          {(Lit_Other '=')} {(DQ (x))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:state spids:[4557])
                                          op: Equal
                                          rhs: {(data)}
                                          spids: [4557]
                                        )
                                      ]
                                      spids: [4557]
                                    )
                                  ]
                                  spids: [16777215 4554]
                                )
                              ]
                              spids: [16777215 4561]
                            )
                          ]
                          spids: [4530 4531 4564 16777215]
                        )
                        (case_arm
                          pat_list: [{(data)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(DQ (x) (${ VSub_Name line))} 
                                          {(Lit_Other '=')} {(DQ ('x-----BEGIN PGP SIGNATURE-----'))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (command.SimpleCommand
                                      words: [
                                        {(printf)}
                                        {(DQ ('%s') (Lit_Other '\\') (n))}
                                        {(DQ (${ VSub_Name line))}
                                      ]
                                      redirects: [
                                        (redir.Redir
                                          op: <Redir_Great '>'>
                                          fd: 16777215
                                          arg_word: {(DQ ($ VSub_DollarName '$relsigdest'))}
                                        )
                                      ]
                                    )
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:state spids:[4615])
                                          op: Equal
                                          rhs: {(signature)}
                                          spids: [4615]
                                        )
                                      ]
                                      spids: [4615]
                                    )
                                  ]
                                  spids: [16777215 4591]
                                )
                              ]
                              else_action: [
                                (command.SimpleCommand
                                  words: [
                                    {(printf)}
                                    {(DQ (${ VSub_Name nl) ('%s'))}
                                    {(DQ (${ VSub_Name line))}
                                  ]
                                  redirects: [
                                    (redir.Redir
                                      op: <Redir_DGreat '>>'>
                                      fd: 16777215
                                      arg_word: {(DQ ($ VSub_DollarName '$reldest'))}
                                    )
                                  ]
                                )
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:nl spids:[4644])
                                      op: Equal
                                      rhs: {(DQ (Lit_Other '\\') (n))}
                                      spids: [4644]
                                    )
                                  ]
                                  spids: [4644]
                                )
                              ]
                              spids: [4619 4651]
                            )
                          ]
                          spids: [4567 4568 4654 16777215]
                        )
                        (case_arm
                          pat_list: [{(signature)}]
                          action: [
                            (command.SimpleCommand
                              words: [
                                {(printf)}
                                {(DQ ('%s') (Lit_Other '\\') (n))}
                                {(DQ (${ VSub_Name line))}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_DGreat '>>'>
                                  fd: 16777215
                                  arg_word: {(DQ ($ VSub_DollarName '$relsigdest'))}
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(DQ (x) (${ VSub_Name line))} 
                                          {(Lit_Other '=')} {(DQ ('x-----END PGP SIGNATURE-----'))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [(command.ControlFlow token:<ControlFlow_Break break>)]
                                  spids: [16777215 4702]
                                )
                              ]
                              spids: [16777215 4708]
                            )
                          ]
                          spids: [4657 4658 16777215 4711]
                        )
                      ]
                      spids: [4482 4490 4711]
                    )
                  ]
                  spids: [4479 4714]
                )
              redirects: [
                (redir.Redir
                  op: <Redir_Less '<'>
                  fd: 16777215
                  arg_word: {(DQ ($ VSub_DollarName '$inreldest'))}
                )
              ]
            )
          ]
          spids: [4398]
        )
      spids: [4393 4397]
    )
    (command.FuncDef
      name: download_release_sig
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:m1 spids:[4735])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [4735]
                )
              ]
              spids: [4733]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:inreldest spids:[4743])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [4743]
                )
              ]
              spids: [4741]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:reldest spids:[4751])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$3'))}
                  spids: [4751]
                )
              ]
              spids: [4749]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:relsigdest spids:[4759])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$4'))}
                  spids: [4759]
                )
              ]
              spids: [4757]
            )
            (C {(progress)} {(0)} {(100)} {(DOWNREL)} {(DQ ('Downloading Release file'))})
            (C {(progress_next)} {(100)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(get)} 
                          {
                            (DQ ($ VSub_DollarName '$m1') (/dists/) ($ VSub_DollarName '$SUITE') 
                              (/InRelease)
                            )
                          } {(DQ ($ VSub_DollarName '$inreldest'))} {(nocache)}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(split_inline_sig)} {(DQ ($ VSub_DollarName '$inreldest'))} 
                      {(DQ ($ VSub_DollarName '$reldest'))} {(DQ ($ VSub_DollarName '$relsigdest'))}
                    )
                    (C {(progress)} {(100)} {(100)} {(DOWNREL)} {(DQ ('Downloading Release file'))})
                  ]
                  spids: [16777215 4802]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(get)} 
                      {
                        (DQ ($ VSub_DollarName '$m1') (/dists/) ($ VSub_DollarName '$SUITE') (/Release))
                      } {(DQ ($ VSub_DollarName '$reldest'))} {(nocache)}
                    )
                    (C {(error)} {(1)} {(NOGETREL)} {(DQ ('Failed getting release file %s'))} 
                      {
                        (DQ ($ VSub_DollarName '$m1') (/dists/) ($ VSub_DollarName '$SUITE') (/Release))
                      }
                    )
                  ]
                )
                (C {(progress)} {(100)} {(100)} {(DOWNREL)} {(DQ ('Downloading Release file'))})
              ]
              spids: [4833 4885]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_DollarName '$KEYRING'))} 
                              {(Lit_Other ']')}
                            )
                            (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_DollarName '$DISABLE_KEYRING'))} 
                              {(Lit_Other ']')}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(progress)} {(0)} {(100)} {(DOWNRELSIG)} 
                      {(DQ ('Downloading Release file signature'))}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.Pipeline
                                  children: [
                                    (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_DollarName '$relsigdest'))} 
                                      {(Lit_Other ']')}
                                    )
                                  ]
                                  negated: T
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(progress_next)} {(50)})
                            (command.AndOr
                              ops: [Op_DPipe]
                              children: [
                                (C {(get)} 
                                  {
                                    (DQ ($ VSub_DollarName '$m1') (/dists/) 
                                      ($ VSub_DollarName '$SUITE') (/Release.gpg)
                                    )
                                  } {(DQ ($ VSub_DollarName '$relsigdest'))} {(nocache)}
                                )
                                (C {(error)} {(1)} {(NOGETRELSIG)} 
                                  {(DQ ('Failed getting release signature file %s'))} {(DQ ($ VSub_DollarName '$m1') (/dists/) ($ VSub_DollarName '$SUITE') (/Release.gpg))}
                                )
                              ]
                            )
                            (C {(progress)} {(50)} {(100)} {(DOWNRELSIG)} 
                              {(DQ ('Downloading Release file signature'))}
                            )
                          ]
                          spids: [16777215 4944]
                        )
                      ]
                      spids: [16777215 5003]
                    )
                    (C {(info)} {(RELEASESIG)} {(DQ ('Checking Release signature'))})
                    (command.Pipeline
                      children: [
                        (command.Subshell
                          child: 
                            (command.AndOr
                              ops: [Op_DPipe]
                              children: [
                                (C {(gpgv)} {(--status-fd)} {(1)} {(--keyring)} 
                                  {(DQ ($ VSub_DollarName '$KEYRING'))} {(--ignore-time-conflict)} {(DQ ($ VSub_DollarName '$relsigdest'))} {(DQ ($ VSub_DollarName '$reldest'))}
                                )
                                (C {(true)})
                              ]
                            )
                          spids: [5024 5052]
                        )
                        (C {(read_gpg_status)})
                      ]
                      negated: F
                    )
                    (C {(progress)} {(100)} {(100)} {(DOWNRELSIG)} 
                      {(DQ ('Downloading Release file signature'))}
                    )
                  ]
                  spids: [16777215 4913]
                )
              ]
              spids: [16777215 5072]
            )
          ]
          spids: [4730]
        )
      spids: [4725 4729]
    )
    (command.FuncDef
      name: download_release_indices
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:m1 spids:[5087])
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (word_part.BracedVarSub
                          token: <VSub_Name MIRRORS>
                          suffix_op: (suffix_op.StringUnary op_id:VOp1_DPercent arg_word:{(' *')})
                          spids: [5089 5093]
                        )
                      )
                    }
                  spids: [5087]
                )
              ]
              spids: [5085]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:inreldest spids:[5099])
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_DollarName '$TARGET') (/) 
                        (word_part.CommandSubPart
                          command_list: 
                            (command.CommandList
                              children: [
                                (C {($ VSub_DollarName '$DLDEST')} {(rel)} 
                                  {(DQ ($ VSub_DollarName '$SUITE'))} {(DQ ($ VSub_DollarName '$m1'))} {(DQ (dists/) ($ VSub_DollarName '$SUITE') (/InRelease))}
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [5103 5121]
                        )
                      )
                    }
                  spids: [5099]
                )
              ]
              spids: [5097]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:reldest spids:[5127])
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_DollarName '$TARGET') (/) 
                        (word_part.CommandSubPart
                          command_list: 
                            (command.CommandList
                              children: [
                                (C {($ VSub_DollarName '$DLDEST')} {(rel)} 
                                  {(DQ ($ VSub_DollarName '$SUITE'))} {(DQ ($ VSub_DollarName '$m1'))} {(DQ (dists/) ($ VSub_DollarName '$SUITE') (/Release))}
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [5131 5149]
                        )
                      )
                    }
                  spids: [5127]
                )
              ]
              spids: [5125]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:relsigdest spids:[5155])
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_DollarName '$TARGET') (/) 
                        (word_part.CommandSubPart
                          command_list: 
                            (command.CommandList
                              children: [
                                (C {($ VSub_DollarName '$DLDEST')} {(rel)} 
                                  {(DQ ($ VSub_DollarName '$SUITE'))} {(DQ ($ VSub_DollarName '$m1'))} {(DQ (dists/) ($ VSub_DollarName '$SUITE') (/Release.gpg))}
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [5159 5177]
                        )
                      )
                    }
                  spids: [5155]
                )
              ]
              spids: [5153]
            )
            (C {(download_release_sig)} {(DQ ($ VSub_DollarName '$m1'))} 
              {(DQ ($ VSub_DollarName '$inreldest'))} {(DQ ($ VSub_DollarName '$reldest'))} {(DQ ($ VSub_DollarName '$relsigdest'))}
            )
            (C {(validate_suite)} {(DQ ($ VSub_DollarName '$reldest'))})
            (C {(extract_release_components)} {($ VSub_DollarName '$reldest')})
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:totalpkgs spids:[5218])
                  op: Equal
                  rhs: {(0)}
                  spids: [5218]
                )
              ]
              spids: [5216]
            )
            (command.ForEach
              iter_name: c
              iter_words: [{($ VSub_DollarName '$COMPONENTS')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:subpath spids:[5236])
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$c') (/binary-) ($ VSub_DollarName '$ARCH') 
                                (/Packages)
                              )
                            }
                          spids: [5236]
                        )
                      ]
                      spids: [5234]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:xzi spids:[5247])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(get_release_checksum)} 
                                          {(DQ ($ VSub_DollarName '$reldest'))} {(DQ ($ VSub_DollarName '$subpath') (.xz))}
                                        )
                                      ]
                                    )
                                  left_token: <Left_Backtick '`'>
                                  spids: [5249 5260]
                                )
                              )
                            }
                          spids: [5247]
                        )
                      ]
                      spids: [5245]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:bz2i spids:[5266])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(get_release_checksum)} 
                                          {(DQ ($ VSub_DollarName '$reldest'))} {(DQ ($ VSub_DollarName '$subpath') (.bz2))}
                                        )
                                      ]
                                    )
                                  left_token: <Left_Backtick '`'>
                                  spids: [5268 5279]
                                )
                              )
                            }
                          spids: [5266]
                        )
                      ]
                      spids: [5264]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:gzi spids:[5285])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(get_release_checksum)} 
                                          {(DQ ($ VSub_DollarName '$reldest'))} {(DQ ($ VSub_DollarName '$subpath') (.gz))}
                                        )
                                      ]
                                    )
                                  left_token: <Left_Backtick '`'>
                                  spids: [5287 5298]
                                )
                              )
                            }
                          spids: [5285]
                        )
                      ]
                      spids: [5283]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:normi spids:[5304])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(get_release_checksum)} 
                                          {(DQ ($ VSub_DollarName '$reldest'))} {(DQ ($ VSub_DollarName '$subpath'))}
                                        )
                                      ]
                                    )
                                  left_token: <Left_Backtick '`'>
                                  spids: [5306 5316]
                                )
                              )
                            }
                          spids: [5304]
                        )
                      ]
                      spids: [5302]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:i spids:[5322])
                          op: Equal
                          rhs: (word.EmptyWord)
                          spids: [5322]
                        )
                      ]
                      spids: [5320]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$normi'))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:i spids:[5345])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_DollarName '$normi'))}
                                  spids: [5345]
                                )
                              ]
                              spids: [5345]
                            )
                          ]
                          spids: [16777215 5342]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Op_DAmp]
                                  children: [
                                    (C {(in_path)} {(bunzip2)})
                                    (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$bz2i'))} 
                                      {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:i spids:[5377])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_DollarName '$bz2i'))}
                                  spids: [5377]
                                )
                              ]
                              spids: [5377]
                            )
                          ]
                          spids: [5351 5374]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Op_DAmp]
                                  children: [
                                    (C {(in_path)} {(unxz)})
                                    (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$xzi'))} 
                                      {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:i spids:[5409])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_DollarName '$xzi'))}
                                  spids: [5409]
                                )
                              ]
                              spids: [5409]
                            )
                          ]
                          spids: [5383 5406]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Op_DAmp]
                                  children: [
                                    (C {(in_path)} {(gunzip)})
                                    (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$gzi'))} 
                                      {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:i spids:[5441])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_DollarName '$gzi'))}
                                  spids: [5441]
                                )
                              ]
                              spids: [5441]
                            )
                          ]
                          spids: [5415 5438]
                        )
                      ]
                      spids: [16777215 5447]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$i'))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:totalpkgs spids:[5470])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (word_part.ArithSubPart
                                          anode: 
                                            (arith_expr.ArithBinary
                                              op_id: Arith_Plus
                                              left: 
                                                (arith_expr.ArithWord
                                                  w: {($ VSub_DollarName '$totalpkgs')}
                                                )
                                              right: 
                                                (arith_expr.ArithWord
                                                  w: 
                                                    {
                                                      (word_part.BracedVarSub
                                                        token: <VSub_Name i>
                                                        suffix_op: 
                                                          (suffix_op.StringUnary
                                                            op_id: VOp1_Pound
                                                            arg_word: {('* ')}
                                                          )
                                                        spids: [5478 5482]
                                                      )
                                                    }
                                                )
                                            )
                                          spids: [5472 5485]
                                        )
                                      )
                                    }
                                  spids: [5470]
                                )
                              ]
                              spids: [5470]
                            )
                          ]
                          spids: [16777215 5467]
                        )
                      ]
                      else_action: [
                        (C {(mv)} {(DQ ($ VSub_DollarName '$reldest'))} 
                          {(DQ ($ VSub_DollarName '$reldest') (.malformed))}
                        )
                        (C {(error)} {(1)} {(MISSINGRELENTRY)} 
                          {(DQ ('Invalid Release file, no entry for %s'))} {(DQ ($ VSub_DollarName '$subpath'))}
                        )
                      ]
                      spids: [5489 5519]
                    )
                  ]
                  spids: [5231 5522]
                )
              spids: [5227 5229]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:donepkgs spids:[5528])
                  op: Equal
                  rhs: {(0)}
                  spids: [5528]
                )
              ]
              spids: [5526]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:pkgdest spids:[5534])
                  op: Equal
                  spids: [5534]
                )
              ]
              spids: [5532]
            )
            (C {(progress)} {(0)} {($ VSub_DollarName '$totalpkgs')} {(DOWNPKGS)} 
              {(DQ ('Downloading Packages files'))}
            )
            (command.ForEach
              iter_name: c
              iter_words: [{($ VSub_DollarName '$COMPONENTS')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:subpath spids:[5564])
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$c') (/binary-) ($ VSub_DollarName '$ARCH') 
                                (/Packages)
                              )
                            }
                          spids: [5564]
                        )
                      ]
                      spids: [5562]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:path spids:[5575])
                          op: Equal
                          rhs: 
                            {
                              (DQ (dists/) ($ VSub_DollarName '$SUITE') (/) 
                                ($ VSub_DollarName '$subpath')
                              )
                            }
                          spids: [5575]
                        )
                      ]
                      spids: [5573]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:xzi spids:[5586])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(get_release_checksum)} 
                                          {(DQ ($ VSub_DollarName '$reldest'))} {(DQ ($ VSub_DollarName '$subpath') (.xz))}
                                        )
                                      ]
                                    )
                                  left_token: <Left_Backtick '`'>
                                  spids: [5588 5599]
                                )
                              )
                            }
                          spids: [5586]
                        )
                      ]
                      spids: [5584]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:bz2i spids:[5605])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(get_release_checksum)} 
                                          {(DQ ($ VSub_DollarName '$reldest'))} {(DQ ($ VSub_DollarName '$subpath') (.bz2))}
                                        )
                                      ]
                                    )
                                  left_token: <Left_Backtick '`'>
                                  spids: [5607 5618]
                                )
                              )
                            }
                          spids: [5605]
                        )
                      ]
                      spids: [5603]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:gzi spids:[5624])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(get_release_checksum)} 
                                          {(DQ ($ VSub_DollarName '$reldest'))} {(DQ ($ VSub_DollarName '$subpath') (.gz))}
                                        )
                                      ]
                                    )
                                  left_token: <Left_Backtick '`'>
                                  spids: [5626 5637]
                                )
                              )
                            }
                          spids: [5624]
                        )
                      ]
                      spids: [5622]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:normi spids:[5643])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(get_release_checksum)} 
                                          {(DQ ($ VSub_DollarName '$reldest'))} {(DQ ($ VSub_DollarName '$subpath'))}
                                        )
                                      ]
                                    )
                                  left_token: <Left_Backtick '`'>
                                  spids: [5645 5655]
                                )
                              )
                            }
                          spids: [5643]
                        )
                      ]
                      spids: [5641]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:ext spids:[5661])
                          op: Equal
                          rhs: (word.EmptyWord)
                          spids: [5661]
                        )
                      ]
                      spids: [5659]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:i spids:[5666])
                          op: Equal
                          rhs: (word.EmptyWord)
                          spids: [5666]
                        )
                      ]
                      spids: [5664]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$normi'))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:ext spids:[5689])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_DollarName '$ext') (' ') ($ VSub_DollarName '$normi') 
                                        (' .')
                                      )
                                    }
                                  spids: [5689]
                                )
                              ]
                              spids: [5689]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:i spids:[5698])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_DollarName '$normi'))}
                                  spids: [5698]
                                )
                              ]
                              spids: [5698]
                            )
                          ]
                          spids: [16777215 5686]
                        )
                      ]
                      spids: [16777215 5704]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Op_DAmp]
                                  children: [
                                    (C {(in_path)} {(unxz)})
                                    (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$xzi'))} 
                                      {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:ext spids:[5733])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_DollarName '$ext') (' ') ($ VSub_DollarName '$xzi') 
                                        (' xz')
                                      )
                                    }
                                  spids: [5733]
                                )
                              ]
                              spids: [5733]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:i spids:[5742])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (word_part.BracedVarSub
                                          token: <VSub_Name i>
                                          suffix_op: 
                                            (suffix_op.StringUnary
                                              op_id: VTest_ColonHyphen
                                              arg_word: {($ VSub_DollarName '$xzi')}
                                            )
                                          spids: [5744 5748]
                                        )
                                      )
                                    }
                                  spids: [5742]
                                )
                              ]
                              spids: [5742]
                            )
                          ]
                          spids: [16777215 5730]
                        )
                      ]
                      spids: [16777215 5752]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Op_DAmp]
                                  children: [
                                    (C {(in_path)} {(bunzip2)})
                                    (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$bz2i'))} 
                                      {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:ext spids:[5781])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_DollarName '$ext') (' ') ($ VSub_DollarName '$bz2i') 
                                        (' bz2')
                                      )
                                    }
                                  spids: [5781]
                                )
                              ]
                              spids: [5781]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:i spids:[5790])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (word_part.BracedVarSub
                                          token: <VSub_Name i>
                                          suffix_op: 
                                            (suffix_op.StringUnary
                                              op_id: VTest_ColonHyphen
                                              arg_word: {($ VSub_DollarName '$bz2i')}
                                            )
                                          spids: [5792 5796]
                                        )
                                      )
                                    }
                                  spids: [5790]
                                )
                              ]
                              spids: [5790]
                            )
                          ]
                          spids: [16777215 5778]
                        )
                      ]
                      spids: [16777215 5800]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Op_DAmp]
                                  children: [
                                    (C {(in_path)} {(gunzip)})
                                    (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$gzi'))} 
                                      {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:ext spids:[5829])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_DollarName '$ext') (' ') ($ VSub_DollarName '$gzi') 
                                        (' gz')
                                      )
                                    }
                                  spids: [5829]
                                )
                              ]
                              spids: [5829]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:i spids:[5838])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (word_part.BracedVarSub
                                          token: <VSub_Name i>
                                          suffix_op: 
                                            (suffix_op.StringUnary
                                              op_id: VTest_ColonHyphen
                                              arg_word: {($ VSub_DollarName '$gzi')}
                                            )
                                          spids: [5840 5844]
                                        )
                                      )
                                    }
                                  spids: [5838]
                                )
                              ]
                              spids: [5838]
                            )
                          ]
                          spids: [16777215 5826]
                        )
                      ]
                      spids: [16777215 5848]
                    )
                    (C {(progress_next)} 
                      {
                        (DQ 
                          (word_part.ArithSubPart
                            anode: 
                              (arith_expr.ArithBinary
                                op_id: Arith_Plus
                                left: (arith_expr.ArithWord w:{($ VSub_DollarName '$donepkgs')})
                                right: 
                                  (arith_expr.ArithWord
                                    w: 
                                      {
                                        (word_part.BracedVarSub
                                          token: <VSub_Name i>
                                          suffix_op: 
                                            (suffix_op.StringUnary
                                              op_id: VOp1_Pound
                                              arg_word: {('* ')}
                                            )
                                          spids: [5859 5863]
                                        )
                                      }
                                  )
                              )
                            spids: [5854 5865]
                          )
                        )
                      }
                    )
                    (command.ForEach
                      iter_name: m
                      iter_words: [{($ VSub_DollarName '$MIRRORS')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:pkgdest spids:[5881])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_DollarName '$TARGET') (/) 
                                        (word_part.CommandSubPart
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {($ VSub_DollarName '$DLDEST')} {(pkg)} 
                                                  {(DQ ($ VSub_DollarName '$SUITE'))} {(DQ ($ VSub_DollarName '$c'))} {(DQ ($ VSub_DollarName '$ARCH'))} {(DQ ($ VSub_DollarName '$m'))} 
                                                  {(DQ ($ VSub_DollarName '$path'))}
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [5885 5909]
                                        )
                                      )
                                    }
                                  spids: [5881]
                                )
                              ]
                              spids: [5881]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(get)} 
                                          {
                                            (DQ ($ VSub_DollarName '$m') (/) 
                                              ($ VSub_DollarName '$path')
                                            )
                                          } {(DQ ($ VSub_DollarName '$pkgdest'))} {($ VSub_DollarName '$ext')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (command.Sentence
                                      child: (command.ControlFlow token:<ControlFlow_Break break>)
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  spids: [16777215 5930]
                                )
                              ]
                              spids: [16777215 5935]
                            )
                          ]
                          spids: [5878 5938]
                        )
                      spids: [5874 5876]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} 
                                  {(DQ ($ VSub_DollarName '$pkgdest'))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(error)} {(1)} {(COULDNTDL)} {(DQ ("Couldn't download %s"))} 
                              {(DQ ($ VSub_DollarName '$path'))}
                            )
                          ]
                          spids: [16777215 5956]
                        )
                      ]
                      spids: [16777215 5974]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:donepkgs spids:[5977])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.ArithSubPart
                                  anode: 
                                    (arith_expr.ArithBinary
                                      op_id: Arith_Plus
                                      left: (arith_expr.ArithWord w:{($ VSub_DollarName '$donepkgs')})
                                      right: 
                                        (arith_expr.ArithWord
                                          w: 
                                            {
                                              (word_part.BracedVarSub
                                                token: <VSub_Name i>
                                                suffix_op: 
                                                  (suffix_op.StringUnary
                                                    op_id: VOp1_Pound
                                                    arg_word: {('* ')}
                                                  )
                                                spids: [5984 5988]
                                              )
                                            }
                                        )
                                    )
                                  spids: [5979 5990]
                                )
                              )
                            }
                          spids: [5977]
                        )
                      ]
                      spids: [5977]
                    )
                    (C {(progress)} {($ VSub_DollarName '$donepkgs')} {($ VSub_DollarName '$totalpkgs')} 
                      {(DOWNPKGS)} {(DQ ('Downloading Packages files'))}
                    )
                  ]
                  spids: [5559 6007]
                )
              spids: [5555 5557]
            )
          ]
          spids: [5082]
        )
      spids: [5077 5081]
    )
    (command.FuncDef
      name: get_package_sizes
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:m spids:[6026])
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [6026]
                    )
                  ]
                  spids: [6024]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (command.Sentence
              child: 
                (command.Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:pkgdest spids:[6037])
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [6037]
                    )
                  ]
                  spids: [6035]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (command.Pipeline
              children: [
                (C {($ VSub_DollarName '$PKGDETAILS')} {(PKGS)} {(DQ ($ VSub_DollarName '$m'))} 
                  {(DQ ($ VSub_DollarName '$pkgdest'))} {(DQ ($ VSub_At '$@'))}
                )
                (command.Subshell
                  child: 
                    (command.CommandList
                      children: [
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:newleft spids:[6067])
                              op: Equal
                              rhs: {(DQ )}
                              spids: [6067]
                            )
                          ]
                          spids: [6067]
                        )
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:totaldebs spids:[6072])
                              op: Equal
                              rhs: {(0)}
                              spids: [6072]
                            )
                          ]
                          spids: [6072]
                        )
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:countdebs spids:[6076])
                              op: Equal
                              rhs: {(0)}
                              spids: [6076]
                            )
                          ]
                          spids: [6076]
                        )
                        (command.WhileUntil
                          keyword: <KW_While while>
                          cond: [
                            (command.Sentence
                              child: (C {(read)} {(p)} {(details)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          body: 
                            (command.DoGroup
                              children: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (command.Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$details'))} 
                                              {(Lit_Other '=')} {(DQ (-))} {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [
                                        (command.Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (lhs_expr.LhsName name:newleft spids:[6112])
                                              op: Equal
                                              rhs: 
                                                {
                                                  (DQ ($ VSub_DollarName '$newleft') (' ') 
                                                    ($ VSub_DollarName '$p')
                                                  )
                                                }
                                              spids: [6112]
                                            )
                                          ]
                                          spids: [6112]
                                        )
                                      ]
                                      spids: [16777215 6109]
                                    )
                                  ]
                                  else_action: [
                                    (command.Sentence
                                      child: 
                                        (command.Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (lhs_expr.LhsName name:size spids:[6123])
                                              op: Equal
                                              rhs: 
                                                {
                                                  (DQ 
                                                    (word_part.BracedVarSub
                                                      token: <VSub_Name details>
                                                      suffix_op: 
                                                        (suffix_op.StringUnary
                                                          op_id: VOp1_DPound
                                                          arg_word: {('* ')}
                                                        )
                                                      spids: [6125 6129]
                                                    )
                                                  )
                                                }
                                              spids: [6123]
                                            )
                                          ]
                                          spids: [6123]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:totaldebs spids:[6134])
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (word_part.ArithSubPart
                                                  anode: 
                                                    (arith_expr.ArithBinary
                                                      op_id: Arith_Plus
                                                      left: 
                                                        (arith_expr.ArithWord
                                                          w: {($ VSub_DollarName '$totaldebs')}
                                                        )
                                                      right: 
                                                        (arith_expr.ArithWord
                                                          w: {($ VSub_DollarName '$size')}
                                                        )
                                                    )
                                                  spids: [6136 6143]
                                                )
                                              )
                                            }
                                          spids: [6134]
                                        )
                                      ]
                                      spids: [6134]
                                    )
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:countdebs spids:[6147])
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (word_part.ArithSubPart
                                                  anode: 
                                                    (arith_expr.ArithBinary
                                                      op_id: Arith_Plus
                                                      left: 
                                                        (arith_expr.ArithWord
                                                          w: {($ VSub_DollarName '$countdebs')}
                                                        )
                                                      right: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                                    )
                                                  spids: [6149 6156]
                                                )
                                              )
                                            }
                                          spids: [6147]
                                        )
                                      ]
                                      spids: [6147]
                                    )
                                  ]
                                  spids: [6120 6160]
                                )
                              ]
                              spids: [6089 6163]
                            )
                        )
                        (C {(echo)} 
                          {
                            (DQ ($ VSub_DollarName '$countdebs') (' ') ($ VSub_DollarName '$totaldebs') 
                              ($ VSub_DollarName '$newleft')
                            )
                          }
                        )
                      ]
                    )
                  spids: [6064 6176]
                )
              ]
              negated: F
            )
          ]
          spids: [6017]
        )
      spids: [6012 6016]
    )
    (command.FuncDef
      name: download_debs
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:m spids:[6194])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [6194]
                )
              ]
              spids: [6192]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:pkgdest spids:[6202])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [6202]
                )
              ]
              spids: [6200]
            )
            (command.Sentence child:(C {(shift)}) terminator:<Op_Semi ';'>)
            (C {(shift)})
            (command.Pipeline
              children: [
                (C {($ VSub_DollarName '$PKGDETAILS')} {(PKGS)} {(DQ ($ VSub_DollarName '$m'))} 
                  {(DQ ($ VSub_DollarName '$pkgdest'))} {(DQ ($ VSub_At '$@'))}
                )
                (command.Subshell
                  child: 
                    (command.CommandList
                      children: [
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:leftover spids:[6236])
                              op: Equal
                              rhs: {(DQ )}
                              spids: [6236]
                            )
                          ]
                          spids: [6236]
                        )
                        (command.WhileUntil
                          keyword: <KW_While while>
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(read)} {(p)} {(ver)} {(arc)} {(mdup)} {(fil)} {(checksum)} {(size)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          body: 
                            (command.DoGroup
                              children: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (command.Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$ver'))} 
                                              {(Lit_Other '=')} {(DQ (-))} {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [
                                        (command.Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (lhs_expr.LhsName name:leftover spids:[6283])
                                              op: Equal
                                              rhs: 
                                                {
                                                  (DQ ($ VSub_DollarName '$leftover') (' ') 
                                                    ($ VSub_DollarName '$p')
                                                  )
                                                }
                                              spids: [6283]
                                            )
                                          ]
                                          spids: [6283]
                                        )
                                      ]
                                      spids: [16777215 6280]
                                    )
                                  ]
                                  else_action: [
                                    (C {(progress_next)} 
                                      {
                                        (DQ 
                                          (word_part.ArithSubPart
                                            anode: 
                                              (arith_expr.ArithBinary
                                                op_id: Arith_Plus
                                                left: 
                                                  (arith_expr.ArithWord
                                                    w: {($ VSub_DollarName '$dloaddebs')}
                                                  )
                                                right: 
                                                  (arith_expr.ArithWord
                                                    w: {($ VSub_DollarName '$size')}
                                                  )
                                              )
                                            spids: [6297 6304]
                                          )
                                        )
                                      }
                                    )
                                    (command.Assignment
                                      keyword: Assign_Local
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:debdest spids:[6310])
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (word_part.CommandSubPart
                                                  command_list: 
                                                    (command.CommandList
                                                      children: [
                                                        (C {($ VSub_DollarName '$DLDEST')} {(deb)} 
                                                          {(DQ ($ VSub_DollarName '$p'))} {(DQ ($ VSub_DollarName '$ver'))} {(DQ ($ VSub_DollarName '$arc'))} {(DQ ($ VSub_DollarName '$m'))} 
                                                          {(DQ ($ VSub_DollarName '$fil'))}
                                                        )
                                                      ]
                                                    )
                                                  left_token: <Left_CommandSub '$('>
                                                  spids: [6312 6336]
                                                )
                                              )
                                            }
                                          spids: [6310]
                                        )
                                      ]
                                      spids: [6308]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {(get)} 
                                                  {
                                                    (DQ ($ VSub_DollarName '$m') (/) 
                                                      ($ VSub_DollarName '$fil')
                                                    )
                                                  } {(DQ ($ VSub_DollarName '$TARGET') (/) ($ VSub_DollarName '$debdest'))} 
                                                  {(DQ ($ VSub_DollarName '$checksum'))} {(DQ ($ VSub_DollarName '$size'))}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (command.Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (lhs_expr.LhsName name:dloaddebs spids:[6368])
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (word_part.ArithSubPart
                                                          anode: 
                                                            (arith_expr.ArithBinary
                                                              op_id: Arith_Plus
                                                              left: 
                                                                (arith_expr.ArithWord
                                                                  w: 
                                                                    {
                                                                      ($ VSub_DollarName '$dloaddebs')
                                                                    }
                                                                )
                                                              right: 
                                                                (arith_expr.ArithWord
                                                                  w: {($ VSub_DollarName '$size')}
                                                                )
                                                            )
                                                          spids: [6370 6377]
                                                        )
                                                      )
                                                    }
                                                  spids: [6368]
                                                )
                                              ]
                                              spids: [6368]
                                            )
                                            (command.SimpleCommand
                                              words: [
                                                {(echo)}
                                                {
                                                  (DQ ($ VSub_DollarName '$p') (' ') 
                                                    ($ VSub_DollarName '$ver') (' ') ($ VSub_DollarName '$m') (/) ($ VSub_DollarName '$fil')
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir.Redir
                                                  op: <Redir_DGreat '>>'>
                                                  fd: 16777215
                                                  arg_word: 
                                                    {($ VSub_DollarName '$TARGET') 
                                                      (/debootstrap/deburis)
                                                    }
                                                )
                                              ]
                                            )
                                            (command.SimpleCommand
                                              words: [
                                                {(echo)}
                                                {
                                                  (DQ ($ VSub_DollarName '$p') (' ') 
                                                    ($ VSub_DollarName '$debdest')
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir.Redir
                                                  op: <Redir_DGreat '>>'>
                                                  fd: 16777215
                                                  arg_word: 
                                                    {($ VSub_DollarName '$TARGET') 
                                                      (/debootstrap/debpaths)
                                                    }
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [16777215 6365]
                                        )
                                      ]
                                      else_action: [
                                        (C {(warning)} {(COULDNTDL)} 
                                          {(DQ ("Couldn't download package %s (ver %s arch %s)"))} {(DQ ($ VSub_DollarName '$p'))} {(DQ ($ VSub_DollarName '$ver'))} {(DQ ($ VSub_DollarName '$arc'))}
                                        )
                                        (command.Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (lhs_expr.LhsName name:leftover spids:[6435])
                                              op: Equal
                                              rhs: 
                                                {
                                                  (DQ ($ VSub_DollarName '$leftover') (' ') 
                                                    ($ VSub_DollarName '$p')
                                                  )
                                                }
                                              spids: [6435]
                                            )
                                          ]
                                          spids: [6435]
                                        )
                                      ]
                                      spids: [6411 6443]
                                    )
                                  ]
                                  spids: [6291 6446]
                                )
                              ]
                              spids: [6260 6449]
                            )
                        )
                        (command.SimpleCommand
                          words: [
                            {(echo)}
                            {
                              (word_part.BracedVarSub
                                token: <VSub_Name leftover>
                                suffix_op: (suffix_op.StringUnary op_id:VOp1_Pound arg_word:{(' ')})
                                spids: [6457 6461]
                              )
                            }
                          ]
                          redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(5)})]
                        )
                      ]
                    )
                  spids: [6233 6464]
                )
              ]
              negated: F
            )
          ]
          spids: [6189]
        )
      spids: [6184 6188]
    )
    (command.FuncDef
      name: download_release
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:m1 spids:[6479])
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (word_part.BracedVarSub
                          token: <VSub_Name MIRRORS>
                          suffix_op: (suffix_op.StringUnary op_id:VOp1_DPercent arg_word:{(' *')})
                          spids: [6481 6485]
                        )
                      )
                    }
                  spids: [6479]
                )
              ]
              spids: [6477]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:numdebs spids:[6492])
                  op: Equal
                  rhs: {(DQ ($ VSub_Pound '$#'))}
                  spids: [6492]
                )
              ]
              spids: [6490]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:countdebs spids:[6501])
                  op: Equal
                  rhs: {(0)}
                  spids: [6501]
                )
              ]
              spids: [6499]
            )
            (C {(progress)} {($ VSub_DollarName '$countdebs')} {($ VSub_DollarName '$numdebs')} 
              {(SIZEDEBS)} {(DQ ('Finding package sizes'))}
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:totaldebs spids:[6521])
                  op: Equal
                  rhs: {(0)}
                  spids: [6521]
                )
              ]
              spids: [6519]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:leftoverdebs spids:[6527])
                  op: Equal
                  rhs: {(DQ ($ VSub_Star '$*'))}
                  spids: [6527]
                )
              ]
              spids: [6525]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:leftoverdebs spids:[6538])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(printf)} {(DQ ($ VSub_DollarName '$leftoverdebs'))})
                                  (C {(tr)} {(SQ <' '>)} {(SQ <'\\n'>)})
                                  (C {(sort)} {(-u)})
                                  (C {(tr)} {(SQ <'\\n'>)} {(SQ <' '>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [6539 6569]
                      )
                    }
                  spids: [6538]
                )
              ]
              spids: [6538]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:numdebs spids:[6572])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(printf)} {(DQ ($ VSub_DollarName '$leftoverdebs'))})
                                  (C {(wc)} {(-w)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [6573 6583]
                      )
                    }
                  spids: [6572]
                )
              ]
              spids: [6572]
            )
            (command.ForEach
              iter_name: c
              iter_words: [{($ VSub_DollarName '$COMPONENTS')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$countdebs'))} {(-ge)} 
                                  {(DQ ($ VSub_DollarName '$numdebs'))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Sentence
                              child: (command.ControlFlow token:<ControlFlow_Break break>)
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [16777215 6616]
                        )
                      ]
                      spids: [16777215 6621]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:path spids:[6627])
                          op: Equal
                          rhs: 
                            {
                              (DQ (dists/) ($ VSub_DollarName '$SUITE') (/) ($ VSub_DollarName '$c') 
                                (/binary-) ($ VSub_DollarName '$ARCH') (/Packages)
                              )
                            }
                          spids: [6627]
                        )
                      ]
                      spids: [6625]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:pkgdest spids:[6641])
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$TARGET') (/) 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {($ VSub_DollarName '$DLDEST')} {(pkg)} 
                                          {(DQ ($ VSub_DollarName '$SUITE'))} {(DQ ($ VSub_DollarName '$c'))} {(DQ ($ VSub_DollarName '$ARCH'))} {(DQ ($ VSub_DollarName '$m1'))} 
                                          {(DQ ($ VSub_DollarName '$path'))}
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [6645 6669]
                                )
                              )
                            }
                          spids: [6641]
                        )
                      ]
                      spids: [6639]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-e)} 
                                  {(DQ ($ VSub_DollarName '$pkgdest'))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Sentence
                              child: (command.ControlFlow token:<ControlFlow_Continue continue>)
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [16777215 6688]
                        )
                      ]
                      spids: [16777215 6693]
                    )
                    (C {(info)} {(CHECKINGSIZES)} {(DQ ('Checking component %s on %s...'))} 
                      {(DQ ($ VSub_DollarName '$c'))} {(DQ ($ VSub_DollarName '$m1'))}
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:leftoverdebs spids:[6715])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(get_package_sizes)} {(DQ ($ VSub_DollarName '$m1'))} 
                                          {(DQ ($ VSub_DollarName '$pkgdest'))} {($ VSub_DollarName '$leftoverdebs')}
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [6717 6729]
                                )
                              )
                            }
                          spids: [6715]
                        )
                      ]
                      spids: [6715]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:countdebs spids:[6734])
                          op: Equal
                          rhs: 
                            {
                              (word_part.ArithSubPart
                                anode: 
                                  (arith_expr.ArithBinary
                                    op_id: Arith_Plus
                                    left: (arith_expr.ArithWord w:{($ VSub_DollarName '$countdebs')})
                                    right: 
                                      (arith_expr.ArithWord
                                        w: 
                                          {
                                            (word_part.BracedVarSub
                                              token: <VSub_Name leftoverdebs>
                                              suffix_op: 
                                                (suffix_op.StringUnary
                                                  op_id: VOp1_DPercent
                                                  arg_word: {(' *')}
                                                )
                                              spids: [6740 6744]
                                            )
                                          }
                                      )
                                  )
                                spids: [6735 6746]
                              )
                            }
                          spids: [6734]
                        )
                      ]
                      spids: [6734]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:leftoverdebs spids:[6749])
                          op: Equal
                          rhs: 
                            {
                              (word_part.BracedVarSub
                                token: <VSub_Name leftoverdebs>
                                suffix_op: (suffix_op.StringUnary op_id:VOp1_Pound arg_word:{('* ')})
                                spids: [6750 6754]
                              )
                            }
                          spids: [6749]
                        )
                      ]
                      spids: [6749]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:totaldebs spids:[6758])
                          op: Equal
                          rhs: 
                            {
                              (word_part.BracedVarSub
                                token: <VSub_Name leftoverdebs>
                                suffix_op: 
                                  (suffix_op.StringUnary
                                    op_id: VOp1_DPercent
                                    arg_word: {(' *')}
                                  )
                                spids: [6759 6763]
                              )
                            }
                          spids: [6758]
                        )
                      ]
                      spids: [6758]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:leftoverdebs spids:[6766])
                          op: Equal
                          rhs: 
                            {
                              (word_part.BracedVarSub
                                token: <VSub_Name leftoverdebs>
                                suffix_op: (suffix_op.StringUnary op_id:VOp1_Pound arg_word:{('* ')})
                                spids: [6767 6771]
                              )
                            }
                          spids: [6766]
                        )
                      ]
                      spids: [6766]
                    )
                    (C {(progress)} {($ VSub_DollarName '$countdebs')} {($ VSub_DollarName '$numdebs')} 
                      {(SIZEDEBS)} {(DQ ('Finding package sizes'))}
                    )
                  ]
                  spids: [6596 6788]
                )
              spids: [6592 6594]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$countdebs'))} {(-ne)} 
                          {(DQ ($ VSub_DollarName '$numdebs'))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(error)} {(1)} {(LEFTOVERDEBS)} {(DQ ("Couldn't find these debs: %s"))} 
                      {(DQ ($ VSub_DollarName '$leftoverdebs'))}
                    )
                  ]
                  spids: [16777215 6809]
                )
              ]
              spids: [16777215 6827]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:dloaddebs spids:[6833])
                  op: Equal
                  rhs: {(0)}
                  spids: [6833]
                )
              ]
              spids: [6831]
            )
            (C {(progress)} {($ VSub_DollarName '$dloaddebs')} {($ VSub_DollarName '$totaldebs')} 
              {(DOWNDEBS)} {(DQ ('Downloading packages'))}
            )
            (command.SimpleCommand
              words: [{(Lit_Other ':')}]
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$TARGET') (/debootstrap/debpaths)}
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:pkgs_to_get spids:[6858])
                  op: Equal
                  rhs: {(DQ ($ VSub_Star '$*'))}
                  spids: [6858]
                )
              ]
              spids: [6858]
            )
            (command.ForEach
              iter_name: c
              iter_words: [{($ VSub_DollarName '$COMPONENTS')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:path spids:[6878])
                          op: Equal
                          rhs: 
                            {
                              (DQ (dists/) ($ VSub_DollarName '$SUITE') (/) ($ VSub_DollarName '$c') 
                                (/binary-) ($ VSub_DollarName '$ARCH') (/Packages)
                              )
                            }
                          spids: [6878]
                        )
                      ]
                      spids: [6876]
                    )
                    (command.ForEach
                      iter_name: m
                      iter_words: [{($ VSub_DollarName '$MIRRORS')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:pkgdest spids:[6904])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_DollarName '$TARGET') (/) 
                                        (word_part.CommandSubPart
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {($ VSub_DollarName '$DLDEST')} {(pkg)} 
                                                  {(DQ ($ VSub_DollarName '$SUITE'))} {(DQ ($ VSub_DollarName '$c'))} {(DQ ($ VSub_DollarName '$ARCH'))} {(DQ ($ VSub_DollarName '$m'))} 
                                                  {(DQ ($ VSub_DollarName '$path'))}
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [6908 6932]
                                        )
                                      )
                                    }
                                  spids: [6904]
                                )
                              ]
                              spids: [6902]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-e)} 
                                          {(DQ ($ VSub_DollarName '$pkgdest'))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (command.Sentence
                                      child: 
                                        (command.ControlFlow
                                          token: <ControlFlow_Continue continue>
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  spids: [16777215 6951]
                                )
                              ]
                              spids: [16777215 6956]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:pkgs_to_get spids:[6959])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (word_part.CommandSubPart
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (command.SimpleCommand
                                                  words: [
                                                    {(download_debs)}
                                                    {(DQ ($ VSub_DollarName '$m'))}
                                                    {(DQ ($ VSub_DollarName '$pkgdest'))}
                                                    {($ VSub_DollarName '$pkgs_to_get')}
                                                  ]
                                                  redirects: [
                                                    (redir.Redir
                                                      op: <Redir_GreatAnd '5>&'>
                                                      fd: 5
                                                      arg_word: {(1)}
                                                    )
                                                    (redir.Redir
                                                      op: <Redir_GreatAnd '1>&'>
                                                      fd: 1
                                                      arg_word: {(6)}
                                                    )
                                                  ]
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [6961 6979]
                                        )
                                      )
                                    }
                                  spids: [6959]
                                )
                              ]
                              spids: [6959]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-z)} 
                                          {(DQ ($ VSub_DollarName '$pkgs_to_get'))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (command.Sentence
                                      child: (command.ControlFlow token:<ControlFlow_Break break>)
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  spids: [16777215 6996]
                                )
                              ]
                              spids: [16777215 7001]
                            )
                          ]
                          spids: [6899 7004]
                        )
                      redirects: [(redir.Redir op:<Redir_GreatAnd '6>&'> fd:6 arg_word:{(1)})]
                      spids: [6895 6897]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_DollarName '$pkgs_to_get'))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Sentence
                              child: (command.ControlFlow token:<ControlFlow_Break break>)
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [16777215 7023]
                        )
                      ]
                      spids: [16777215 7028]
                    )
                  ]
                  spids: [6873 7031]
                )
              spids: [6869 6871]
            )
            (C {(progress)} {($ VSub_DollarName '$dloaddebs')} {($ VSub_DollarName '$totaldebs')} 
              {(DOWNDEBS)} {(DQ ('Downloading packages'))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$pkgs_to_get'))} 
                          {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(error)} {(1)} {(COULDNTDLPKGS)} {(DQ ("Couldn't download packages: %s"))} 
                      {(DQ ($ VSub_DollarName '$pkgs_to_get'))}
                    )
                  ]
                  spids: [16777215 7064]
                )
              ]
              spids: [16777215 7082]
            )
          ]
          spids: [6474]
        )
      spids: [6469 6473]
    )
    (command.FuncDef
      name: download_main_indices
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:m1 spids:[7097])
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (word_part.BracedVarSub
                          token: <VSub_Name MIRRORS>
                          suffix_op: (suffix_op.StringUnary op_id:VOp1_DPercent arg_word:{(' *')})
                          spids: [7099 7103]
                        )
                      )
                    }
                  spids: [7097]
                )
              ]
              spids: [7095]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:comp spids:[7109])
                  op: Equal
                  rhs: {(DQ (${ VSub_Name USE_COMPONENTS))}
                  spids: [7109]
                )
              ]
              spids: [7107]
            )
            (C {(progress)} {(0)} {(100)} {(DOWNMAINPKGS)} {(DQ ('Downloading Packages file'))})
            (C {(progress_next)} {(100)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_DollarName '$comp'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Sentence
                      child: 
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:comp spids:[7151])
                              op: Equal
                              rhs: {(main)}
                              spids: [7151]
                            )
                          ]
                          spids: [7151]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [16777215 7149]
                )
              ]
              spids: [16777215 7155]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:COMPONENTS spids:[7158])
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (word_part.CommandSubPart
                          command_list: 
                            (command.CommandList
                              children: [
                                (command.Pipeline
                                  children: [
                                    (C {(echo)} {($ VSub_DollarName '$comp')})
                                    (C {(tr)} {(SQ <'|'>)} {(SQ <' '>)})
                                  ]
                                  negated: F
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [7160 7176]
                        )
                      )
                    }
                  spids: [7158]
                )
              ]
              spids: [7158]
            )
            (C {(export)} {(COMPONENTS)})
            (command.ForEach
              iter_name: m
              iter_words: [{($ VSub_DollarName '$MIRRORS')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ForEach
                      iter_name: c
                      iter_words: [{($ VSub_DollarName '$COMPONENTS')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:path spids:[7212])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ (dists/) ($ VSub_DollarName '$SUITE') (/) 
                                        ($ VSub_DollarName '$c') (/binary-) ($ VSub_DollarName '$ARCH') (/Packages)
                                      )
                                    }
                                  spids: [7212]
                                )
                              ]
                              spids: [7210]
                            )
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:pkgdest spids:[7226])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_DollarName '$TARGET') (/) 
                                        (word_part.CommandSubPart
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {($ VSub_DollarName '$DLDEST')} {(pkg)} 
                                                  {(DQ ($ VSub_DollarName '$SUITE'))} {(DQ ($ VSub_DollarName '$c'))} {(DQ ($ VSub_DollarName '$ARCH'))} {(DQ ($ VSub_DollarName '$m'))} 
                                                  {(DQ ($ VSub_DollarName '$path'))}
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [7230 7254]
                                        )
                                      )
                                    }
                                  spids: [7226]
                                )
                              ]
                              spids: [7224]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.AndOr
                                          ops: [Op_DAmp]
                                          children: [
                                            (C {(in_path)} {(gunzip)})
                                            (C {(get)} 
                                              {
                                                (DQ ($ VSub_DollarName '$m') (/) (${ VSub_Name path) 
                                                  (.gz)
                                                )
                                              } {(DQ (${ VSub_Name pkgdest) (.gz))}
                                            )
                                          ]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$pkgdest'))})
                                    (C {(gunzip)} {(DQ ($ VSub_DollarName '$pkgdest') (.gz))})
                                  ]
                                  spids: [16777215 7285]
                                )
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(get)} 
                                          {
                                            (DQ ($ VSub_DollarName '$m') (/) 
                                              ($ VSub_DollarName '$path')
                                            )
                                          } {(DQ ($ VSub_DollarName '$pkgdest'))}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [(C {(true)})]
                                  spids: [7305 7320]
                                )
                              ]
                              spids: [16777215 7326]
                            )
                          ]
                          spids: [7207 7329]
                        )
                      spids: [7203 7205]
                    )
                  ]
                  spids: [7195 7332]
                )
              spids: [7191 7193]
            )
            (C {(progress)} {(100)} {(100)} {(DOWNMAINPKGS)} {(DQ ('Downloading Packages file'))})
          ]
          spids: [7092]
        )
      spids: [7087 7091]
    )
    (command.FuncDef
      name: download_main
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:m1 spids:[7360])
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (word_part.BracedVarSub
                          token: <VSub_Name MIRRORS>
                          suffix_op: (suffix_op.StringUnary op_id:VOp1_DPercent arg_word:{(' *')})
                          spids: [7362 7366]
                        )
                      )
                    }
                  spids: [7360]
                )
              ]
              spids: [7358]
            )
            (command.SimpleCommand
              words: [{(Lit_Other ':')}]
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$TARGET') (/debootstrap/debpaths)}
                )
              ]
            )
            (command.ForEach
              iter_name: p
              iter_words: [{(DQ ($ VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ForEach
                      iter_name: c
                      iter_words: [{($ VSub_DollarName '$COMPONENTS')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:details spids:[7405])
                                  op: Equal
                                  rhs: {(DQ )}
                                  spids: [7405]
                                )
                              ]
                              spids: [7403]
                            )
                            (command.ForEach
                              iter_name: m
                              iter_words: [{($ VSub_DollarName '$MIRRORS')}]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Assignment
                                      keyword: Assign_Local
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:path spids:[7424])
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ (dists/) ($ VSub_DollarName '$SUITE') (/) 
                                                ($ VSub_DollarName '$c') (/binary-) ($ VSub_DollarName '$ARCH') (/Packages)
                                              )
                                            }
                                          spids: [7424]
                                        )
                                      ]
                                      spids: [7422]
                                    )
                                    (command.Assignment
                                      keyword: Assign_Local
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:pkgdest spids:[7438])
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ ($ VSub_DollarName '$TARGET') (/) 
                                                (word_part.CommandSubPart
                                                  command_list: 
                                                    (command.CommandList
                                                      children: [
                                                        (C {($ VSub_DollarName '$DLDEST')} {(pkg)} 
                                                          {(DQ ($ VSub_DollarName '$SUITE'))} {(DQ ($ VSub_DollarName '$c'))} {(DQ ($ VSub_DollarName '$ARCH'))} {(DQ ($ VSub_DollarName '$m'))} 
                                                          {(DQ ($ VSub_DollarName '$path'))}
                                                        )
                                                      ]
                                                    )
                                                  left_token: <Left_CommandSub '$('>
                                                  spids: [7442 7466]
                                                )
                                              )
                                            }
                                          spids: [7438]
                                        )
                                      ]
                                      spids: [7436]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-e)} 
                                                  {(DQ ($ VSub_DollarName '$pkgdest'))} {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (command.Sentence
                                              child: 
                                                (command.ControlFlow
                                                  token: <ControlFlow_Continue continue>
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          spids: [16777215 7485]
                                        )
                                      ]
                                      spids: [16777215 7490]
                                    )
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:details spids:[7493])
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (word_part.CommandSubPart
                                                  command_list: 
                                                    (command.CommandList
                                                      children: [
                                                        (C {($ VSub_DollarName '$PKGDETAILS')} {(PKGS)} 
                                                          {(DQ ($ VSub_DollarName '$m'))} {(DQ ($ VSub_DollarName '$pkgdest'))} {(DQ ($ VSub_DollarName '$p'))}
                                                        )
                                                      ]
                                                    )
                                                  left_token: <Left_CommandSub '$('>
                                                  spids: [7495 7511]
                                                )
                                              )
                                            }
                                          spids: [7493]
                                        )
                                      ]
                                      spids: [7493]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {(Lit_Other '[')} 
                                                  {(DQ ($ VSub_DollarName '$details'))} {(Lit_Other '=')} {(DQ ($ VSub_DollarName '$p') (' -'))} {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (command.Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (lhs_expr.LhsName name:details spids:[7536])
                                                  op: Equal
                                                  rhs: {(DQ )}
                                                  spids: [7536]
                                                )
                                              ]
                                              spids: [7536]
                                            )
                                            (command.ControlFlow
                                              token: <ControlFlow_Continue continue>
                                            )
                                          ]
                                          spids: [16777215 7533]
                                        )
                                      ]
                                      spids: [16777215 7544]
                                    )
                                    (command.Sentence
                                      child: 
                                        (command.Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (lhs_expr.LhsName name:size spids:[7547])
                                              op: Equal
                                              rhs: 
                                                {
                                                  (DQ 
                                                    (word_part.BracedVarSub
                                                      token: <VSub_Name details>
                                                      suffix_op: 
                                                        (suffix_op.StringUnary
                                                          op_id: VOp1_DPound
                                                          arg_word: {('* ')}
                                                        )
                                                      spids: [7549 7553]
                                                    )
                                                  )
                                                }
                                              spids: [7547]
                                            )
                                          ]
                                          spids: [7547]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:details spids:[7557])
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (word_part.BracedVarSub
                                                  token: <VSub_Name details>
                                                  suffix_op: 
                                                    (suffix_op.StringUnary
                                                      op_id: VOp1_Percent
                                                      arg_word: {(' *')}
                                                    )
                                                  spids: [7559 7563]
                                                )
                                              )
                                            }
                                          spids: [7557]
                                        )
                                      ]
                                      spids: [7557]
                                    )
                                    (command.Sentence
                                      child: 
                                        (command.Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (lhs_expr.LhsName name:checksum spids:[7567])
                                              op: Equal
                                              rhs: 
                                                {
                                                  (DQ 
                                                    (word_part.BracedVarSub
                                                      token: <VSub_Name details>
                                                      suffix_op: 
                                                        (suffix_op.StringUnary
                                                          op_id: VOp1_DPound
                                                          arg_word: {('* ')}
                                                        )
                                                      spids: [7569 7573]
                                                    )
                                                  )
                                                }
                                              spids: [7567]
                                            )
                                          ]
                                          spids: [7567]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:details spids:[7577])
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (word_part.BracedVarSub
                                                  token: <VSub_Name details>
                                                  suffix_op: 
                                                    (suffix_op.StringUnary
                                                      op_id: VOp1_Percent
                                                      arg_word: {(' *')}
                                                    )
                                                  spids: [7579 7583]
                                                )
                                              )
                                            }
                                          spids: [7577]
                                        )
                                      ]
                                      spids: [7577]
                                    )
                                    (command.Assignment
                                      keyword: Assign_Local
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:debdest spids:[7589])
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (word_part.CommandSubPart
                                                  command_list: 
                                                    (command.CommandList
                                                      children: [
                                                        (C {($ VSub_DollarName '$DLDEST')} {(deb)} 
                                                          {($ VSub_DollarName '$details')}
                                                        )
                                                      ]
                                                    )
                                                  left_token: <Left_CommandSub '$('>
                                                  spids: [7591 7597]
                                                )
                                              )
                                            }
                                          spids: [7589]
                                        )
                                      ]
                                      spids: [7587]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {(get)} 
                                                  {
                                                    (DQ ($ VSub_DollarName '$m') (/) 
                                                      (word_part.BracedVarSub
                                                        token: <VSub_Name details>
                                                        suffix_op: 
                                                          (suffix_op.StringUnary
                                                            op_id: VOp1_DPound
                                                            arg_word: {('* ')}
                                                          )
                                                        spids: [7608 7612]
                                                      )
                                                    )
                                                  } {(DQ ($ VSub_DollarName '$TARGET') (/) ($ VSub_DollarName '$debdest'))} 
                                                  {(DQ ($ VSub_DollarName '$checksum'))} {(DQ ($ VSub_DollarName '$size'))}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (command.SimpleCommand
                                              words: [
                                                {(echo)}
                                                {
                                                  (DQ ($ VSub_DollarName '$p') (' ') 
                                                    ($ VSub_DollarName '$debdest')
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir.Redir
                                                  op: <Redir_DGreat '>>'>
                                                  fd: 16777215
                                                  arg_word: 
                                                    {($ VSub_DollarName '$TARGET') 
                                                      (/debootstrap/debpaths)
                                                    }
                                                )
                                              ]
                                            )
                                            (command.Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (lhs_expr.LhsName name:details spids:[7646])
                                                  op: Equal
                                                  rhs: {(DQ (done))}
                                                  spids: [7646]
                                                )
                                              ]
                                              spids: [7646]
                                            )
                                            (command.ControlFlow
                                              token: <ControlFlow_Break break>
                                            )
                                          ]
                                          spids: [16777215 7630]
                                        )
                                      ]
                                      spids: [16777215 7655]
                                    )
                                  ]
                                  spids: [7419 7658]
                                )
                              spids: [7415 7417]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$details'))} 
                                          {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [(command.ControlFlow token:<ControlFlow_Break break>)]
                                  spids: [16777215 7678]
                                )
                              ]
                              spids: [16777215 7684]
                            )
                          ]
                          spids: [7400 7687]
                        )
                      spids: [7396 7398]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$details'))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ (done))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(error)} {(1)} {(COULDNTDL)} {(DQ ("Couldn't download %s"))} 
                              {(DQ ($ VSub_DollarName '$p'))}
                            )
                          ]
                          spids: [16777215 7708]
                        )
                      ]
                      spids: [16777215 7726]
                    )
                  ]
                  spids: [7388 7729]
                )
              spids: [7382 7386]
            )
          ]
          spids: [7355]
        )
      spids: [7350 7354]
    )
    (command.FuncDef
      name: get_debs
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:field spids:[7748])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [7748]
                )
              ]
              spids: [7746]
            )
            (C {(shift)})
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:m1 spids:[7759])
                  op: Equal
                  spids: [7759]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:c spids:[7761])
                  op: Equal
                  spids: [7761]
                )
              ]
              spids: [7757]
            )
            (command.ForEach
              iter_name: m1
              iter_words: [{($ VSub_DollarName '$MIRRORS')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ForEach
                      iter_name: c
                      iter_words: [{($ VSub_DollarName '$COMPONENTS')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:path spids:[7790])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ (dists/) ($ VSub_DollarName '$SUITE') (/) 
                                        ($ VSub_DollarName '$c') (/binary-) ($ VSub_DollarName '$ARCH') (/Packages)
                                      )
                                    }
                                  spids: [7790]
                                )
                              ]
                              spids: [7788]
                            )
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:pkgdest spids:[7804])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_DollarName '$TARGET') (/) 
                                        (word_part.CommandSubPart
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {($ VSub_DollarName '$DLDEST')} {(pkg)} 
                                                  {(DQ ($ VSub_DollarName '$SUITE'))} {(DQ ($ VSub_DollarName '$c'))} {(DQ ($ VSub_DollarName '$ARCH'))} {(DQ ($ VSub_DollarName '$m1'))} 
                                                  {(DQ ($ VSub_DollarName '$path'))}
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [7808 7832]
                                        )
                                      )
                                    }
                                  spids: [7804]
                                )
                              ]
                              spids: [7802]
                            )
                            (C {(echo)} 
                              {
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (C {(DQ ($ VSub_DollarName '$PKGDETAILS'))} {(FIELD)} 
                                              {(DQ ($ VSub_DollarName '$field'))} {(DQ ($ VSub_DollarName '$m1'))} {(DQ ($ VSub_DollarName '$pkgdest'))} {(DQ ($ VSub_At '$@'))}
                                            )
                                            (C {(sed)} {(SQ <'s/ .*//'>)})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [7838 7868]
                                )
                              }
                            )
                          ]
                          spids: [7785 7871]
                        )
                      spids: [7781 7783]
                    )
                  ]
                  spids: [7773 7874]
                )
              spids: [7769 7771]
            )
          ]
          spids: [7743]
        )
      spids: [7738 7742]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:EXTRACTORS_SUPPORTED spids:[7883])
          op: Equal
          rhs: {(DQ ('dpkg-deb ar'))}
          spids: [7883]
        )
      ]
      spids: [7883]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:EXTRACT_DEB_TAR_OPTIONS spids:[7888])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [7888]
        )
      ]
      spids: [7888]
    )
    (command.FuncDef
      name: extract_dpkg_deb_field
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:pkg spids:[7904])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [7904]
                )
              ]
              spids: [7902]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:field spids:[7912])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [7912]
                )
              ]
              spids: [7910]
            )
            (C {(dpkg-deb)} {(-f)} {(DQ ($ VSub_DollarName '$pkg'))} {(DQ ($ VSub_DollarName '$field'))})
          ]
          spids: [7899]
        )
      spids: [7894 7898]
    )
    (command.FuncDef
      name: extract_dpkg_deb_data
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:pkg spids:[7944])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [7944]
                )
              ]
              spids: [7942]
            )
            (command.Pipeline
              children: [
                (C {(dpkg-deb)} {(--fsys-tarfile)} {(DQ ($ VSub_DollarName '$pkg'))})
                (C {(tar)} {($ VSub_DollarName '$EXTRACT_DEB_TAR_OPTIONS')} {(-xf)} {(-)})
              ]
              negated: F
            )
          ]
          spids: [7939]
        )
      spids: [7934 7938]
    )
    (command.FuncDef
      name: extract_ar_deb_field
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:pkg spids:[7985])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [7985]
                )
              ]
              spids: [7983]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:field spids:[7993])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [7993]
                )
              ]
              spids: [7991]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tarball spids:[8001])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(ar)} {(-t)} {(DQ ($ VSub_DollarName '$pkg'))})
                                  (C {(grep)} {(DQ ('^control') (Lit_Other '\\') (.tar))})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [8002 8020]
                      )
                    }
                  spids: [8001]
                )
              ]
              spids: [7999]
            )
            (command.Case
              to_match: {(DQ ($ VSub_DollarName '$tarball'))}
              arms: [
                (case_arm
                  pat_list: [{(control.tar.gz)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:cat_cmd spids:[8036])
                          op: Equal
                          rhs: {(zcat)}
                          spids: [8036]
                        )
                      ]
                      spids: [8036]
                    )
                  ]
                  spids: [8033 8034 8039 16777215]
                )
                (case_arm
                  pat_list: [{(control.tar.xz)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:cat_cmd spids:[8045])
                          op: Equal
                          rhs: {(xzcat)}
                          spids: [8045]
                        )
                      ]
                      spids: [8045]
                    )
                  ]
                  spids: [8042 8043 8048 16777215]
                )
                (case_arm
                  pat_list: [{(control.tar)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:cat_cmd spids:[8054])
                          op: Equal
                          rhs: {(cat)}
                          spids: [8054]
                        )
                      ]
                      spids: [8054]
                    )
                  ]
                  spids: [8051 8052 8057 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (C {(error)} {(1)} {(UNKNOWNCONTROLCOMP)} 
                      {(DQ ('Unknown compression type for %s in %s'))} {(DQ ($ VSub_DollarName '$tarball'))} {(DQ ($ VSub_DollarName '$pkg'))}
                    )
                  ]
                  spids: [8060 8061 8081 16777215]
                )
              ]
              spids: [8024 8030 8084]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.SimpleCommand
                          words: [{(type)} {($ VSub_DollarName '$cat_cmd')}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(/dev/null)}
                            )
                            (redir.Redir
                              op: <Redir_GreatAnd '2>&'>
                              fd: 2
                              arg_word: {(1)}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Pipeline
                      children: [
                        (C {(ar)} {(-p)} {(DQ ($ VSub_DollarName '$pkg'))} 
                          {(DQ ($ VSub_DollarName '$tarball'))}
                        )
                        (C {($ VSub_DollarName '$cat_cmd')})
                        (command.SimpleCommand
                          words: [{(tar)} {(-O)} {(-xf)} {(-)} {(control)} {(./control)}]
                          redirects: [(redir.Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})]
                        )
                        (C {(grep)} {(-i)} {(DQ ('^') ($ VSub_DollarName '$field') (':'))})
                        (C {(sed)} {(-e)} {(SQ <'s/[^:]*: *//'>)})
                        (C {(head)} {(-n)} {(1)})
                      ]
                      negated: F
                    )
                  ]
                  spids: [16777215 8101]
                )
              ]
              else_action: [
                (C {(error)} {(1)} {(UNPACKCMDUNVL)} 
                  {(DQ ('Extracting %s requires the %s command, which is not available'))} {(DQ ($ VSub_DollarName '$pkg'))} {(DQ ($ VSub_DollarName '$cat_cmd'))}
                )
              ]
              spids: [8170 8192]
            )
          ]
          spids: [7980]
        )
      spids: [7975 7979]
    )
    (command.FuncDef
      name: extract_ar_deb_data
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:pkg spids:[8207])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [8207]
                )
              ]
              spids: [8205]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tarball spids:[8215])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(ar)} {(-t)} {(DQ ($ VSub_DollarName '$pkg'))})
                                  (C {(grep)} {(DQ ('^data.tar'))})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [8216 8232]
                      )
                    }
                  spids: [8215]
                )
              ]
              spids: [8213]
            )
            (command.Case
              to_match: {(DQ ($ VSub_DollarName '$tarball'))}
              arms: [
                (case_arm
                  pat_list: [{(data.tar.gz)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:cat_cmd spids:[8248])
                          op: Equal
                          rhs: {(zcat)}
                          spids: [8248]
                        )
                      ]
                      spids: [8248]
                    )
                  ]
                  spids: [8245 8246 8251 16777215]
                )
                (case_arm
                  pat_list: [{(data.tar.bz2)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:cat_cmd spids:[8257])
                          op: Equal
                          rhs: {(bzcat)}
                          spids: [8257]
                        )
                      ]
                      spids: [8257]
                    )
                  ]
                  spids: [8254 8255 8260 16777215]
                )
                (case_arm
                  pat_list: [{(data.tar.xz)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:cat_cmd spids:[8266])
                          op: Equal
                          rhs: {(xzcat)}
                          spids: [8266]
                        )
                      ]
                      spids: [8266]
                    )
                  ]
                  spids: [8263 8264 8269 16777215]
                )
                (case_arm
                  pat_list: [{(data.tar)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:cat_cmd spids:[8275])
                          op: Equal
                          rhs: {(cat)}
                          spids: [8275]
                        )
                      ]
                      spids: [8275]
                    )
                  ]
                  spids: [8272 8273 8278 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (C {(error)} {(1)} {(UNKNOWNDATACOMP)} 
                      {(DQ ('Unknown compression type for %s in %s'))} {(DQ ($ VSub_DollarName '$tarball'))} {(DQ ($ VSub_DollarName '$pkg'))}
                    )
                  ]
                  spids: [8281 8282 8302 16777215]
                )
              ]
              spids: [8236 8242 8305]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.SimpleCommand
                          words: [{(type)} {($ VSub_DollarName '$cat_cmd')}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(/dev/null)}
                            )
                            (redir.Redir
                              op: <Redir_GreatAnd '2>&'>
                              fd: 2
                              arg_word: {(1)}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Pipeline
                      children: [
                        (C {(ar)} {(-p)} {(DQ ($ VSub_DollarName '$pkg'))} 
                          {(DQ ($ VSub_DollarName '$tarball'))}
                        )
                        (C {($ VSub_DollarName '$cat_cmd')})
                        (C {(tar)} {($ VSub_DollarName '$EXTRACT_DEB_TAR_OPTIONS')} {(-xf)} {(-)})
                      ]
                      negated: F
                    )
                  ]
                  spids: [16777215 8322]
                )
              ]
              else_action: [
                (C {(error)} {(1)} {(UNPACKCMDUNVL)} 
                  {(DQ ('Extracting %s requires the %s command, which is not available'))} {(DQ ($ VSub_DollarName '$pkg'))} {(DQ ($ VSub_DollarName '$cat_cmd'))}
                )
              ]
              spids: [8352 8374]
            )
          ]
          spids: [8202]
        )
      spids: [8197 8201]
    )
    (command.FuncDef
      name: valid_extractor
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:extractor spids:[8389])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [8389]
                )
              ]
              spids: [8387]
            )
            (command.ForEach
              iter_name: E
              iter_words: [{($ VSub_DollarName '$EXTRACTORS_SUPPORTED')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$extractor'))} 
                                  {(Lit_Other '=')} {(DQ ($ VSub_DollarName '$E'))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(0)}
                            )
                          ]
                          spids: [16777215 8425]
                        )
                      ]
                      spids: [16777215 8433]
                    )
                  ]
                  spids: [8405 8436]
                )
              spids: [8401 8403]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [8384]
        )
      spids: [8379 8383]
    )
    (command.FuncDef
      name: choose_extractor
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:extractor spids:[8457])
                  op: Equal
                  spids: [8457]
                )
              ]
              spids: [8455]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_DollarName '$EXTRACTOR_OVERRIDE'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:extractor spids:[8477])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$EXTRACTOR_OVERRIDE'))}
                          spids: [8477]
                        )
                      ]
                      spids: [8477]
                    )
                  ]
                  spids: [16777215 8474]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.SimpleCommand
                          words: [{(type)} {(dpkg-deb)}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(/dev/null)}
                            )
                            (redir.Redir
                              op: <Redir_GreatAnd '2>&'>
                              fd: 2
                              arg_word: {(1)}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:extractor spids:[8499])
                          op: Equal
                          rhs: {(DQ (dpkg-deb))}
                          spids: [8499]
                        )
                      ]
                      spids: [8499]
                    )
                  ]
                  spids: [8483 8496]
                )
              ]
              else_action: [
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:extractor spids:[8508])
                      op: Equal
                      rhs: {(DQ (ar))}
                      spids: [8508]
                    )
                  ]
                  spids: [8508]
                )
              ]
              spids: [8505 8514]
            )
            (C {(info)} {(CHOSENEXTRACTOR)} {(DQ ('Chosen extractor for .deb packages: %s'))} 
              {(DQ ($ VSub_DollarName '$extractor'))}
            )
            (command.Case
              to_match: {(DQ ($ VSub_DollarName '$extractor'))}
              arms: [
                (case_arm
                  pat_list: [{(dpkg-deb)}]
                  action: [
                    (command.FuncDef
                      name: extract_deb_field
                      body: 
                        (command.BraceGroup
                          children: [
                            (command.Sentence
                              child: (C {(extract_dpkg_deb_field)} {(DQ ($ VSub_At '$@'))})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [8549]
                        )
                      spids: [8544 8548]
                    )
                    (command.FuncDef
                      name: extract_deb_data
                      body: 
                        (command.BraceGroup
                          children: [
                            (command.Sentence
                              child: (C {(extract_dpkg_deb_data)} {(DQ ($ VSub_At '$@'))})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [8566]
                        )
                      spids: [8561 8565]
                    )
                  ]
                  spids: [8540 8541 8578 16777215]
                )
                (case_arm
                  pat_list: [{(ar)}]
                  action: [
                    (command.FuncDef
                      name: extract_deb_field
                      body: 
                        (command.BraceGroup
                          children: [
                            (command.Sentence
                              child: (C {(extract_ar_deb_field)} {(DQ ($ VSub_At '$@'))})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [8590]
                        )
                      spids: [8585 8589]
                    )
                    (command.FuncDef
                      name: extract_deb_data
                      body: 
                        (command.BraceGroup
                          children: [
                            (command.Sentence
                              child: (C {(extract_ar_deb_data)} {(DQ ($ VSub_At '$@'))})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [8607]
                        )
                      spids: [8602 8606]
                    )
                  ]
                  spids: [8581 8582 8619 16777215]
                )
              ]
              spids: [8531 8537 8622]
            )
          ]
          spids: [8452]
        )
      spids: [8447 8451]
    )
    (command.FuncDef
      name: extract
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.Subshell
                  child: 
                    (command.CommandList
                      children: [
                        (C {(cd)} {(DQ ($ VSub_DollarName '$TARGET'))})
                        (command.Assignment
                          keyword: Assign_Local
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:p spids:[8646])
                              op: Equal
                              rhs: {(0)}
                              spids: [8646]
                            )
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:cat_cmd spids:[8649])
                              op: Equal
                              spids: [8649]
                            )
                          ]
                          spids: [8644]
                        )
                        (command.ForEach
                          iter_name: pkg
                          iter_words: [
                            {
                              (word_part.CommandSubPart
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(debfor)} {(DQ ($ VSub_At '$@'))})]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [8658 8664]
                              )
                            }
                          ]
                          do_arg_iter: F
                          body: 
                            (command.DoGroup
                              children: [
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:p spids:[8670])
                                      op: Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (word_part.ArithSubPart
                                              anode: 
                                                (arith_expr.ArithBinary
                                                  op_id: Arith_Plus
                                                  left: 
                                                    (arith_expr.ArithWord
                                                      w: {($ VSub_DollarName '$p')}
                                                    )
                                                  right: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                                )
                                              spids: [8672 8679]
                                            )
                                          )
                                        }
                                      spids: [8670]
                                    )
                                  ]
                                  spids: [8670]
                                )
                                (C {(progress)} {(DQ ($ VSub_DollarName '$p'))} 
                                  {(DQ ($ VSub_Pound '$#'))} {(EXTRACTPKGS)} {(DQ ('Extracting packages'))}
                                )
                                (command.Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:packagename spids:[8700])
                                      op: Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (word_part.CommandSubPart
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (command.Pipeline
                                                      children: [
                                                        (C {(echo)} {(DQ ($ VSub_DollarName '$pkg'))})
                                                        (C {(sed)} {(SQ <'s,^.*/,,;s,_.*$,,'>)})
                                                      ]
                                                      negated: F
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [8702 8716]
                                            )
                                          )
                                        }
                                      spids: [8700]
                                    )
                                  ]
                                  spids: [8700]
                                )
                                (C {(info)} {(EXTRACTING)} {(DQ ('Extracting %s...'))} 
                                  {(DQ ($ VSub_DollarName '$packagename'))}
                                )
                                (C {(extract_deb_data)} {(DQ (./) ($ VSub_DollarName '$pkg'))})
                              ]
                              spids: [8667 8741]
                            )
                          spids: [8657 8665]
                        )
                      ]
                    )
                  spids: [8634 8743]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [8632]
        )
      spids: [8627 8631]
    )
    (command.FuncDef
      name: in_target_nofail
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [
                            (command.SimpleCommand
                              words: [{($ VSub_DollarName '$CHROOT_CMD')} {(DQ ($ VSub_At '$@'))}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_Great '2>'>
                                  fd: 2
                                  arg_word: {(/dev/null)}
                                )
                              ]
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(true)})]
                  spids: [16777215 8771]
                )
              ]
              spids: [16777215 8777]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [8754]
        )
      spids: [8749 8753]
    )
    (command.FuncDef
      name: in_target_failmsg
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:code spids:[8797])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [8797]
                )
              ]
              spids: [8795]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:msg spids:[8805])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [8805]
                )
              ]
              spids: [8803]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:arg spids:[8813])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$3'))}
                  spids: [8813]
                )
              ]
              spids: [8811]
            )
            (command.Sentence child:(C {(shift)}) terminator:<Op_Semi ';'>)
            (command.Sentence child:(C {(shift)}) terminator:<Op_Semi ';'>)
            (C {(shift)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [(C {($ VSub_DollarName '$CHROOT_CMD')} {(DQ ($ VSub_At '$@'))})]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(warning)} {(DQ ($ VSub_DollarName '$code'))} {(DQ ($ VSub_DollarName '$msg'))} 
                      {(DQ ($ VSub_DollarName '$arg'))}
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:msg spids:[8861])
                          op: Equal
                          rhs: {(DQ ('See %s for details'))}
                          spids: [8861]
                        )
                      ]
                      spids: [8861]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-e)} 
                                  {(DQ ($ VSub_DollarName '$TARGET') (/debootstrap/debootstrap.log))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:arg spids:[8884])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_DollarName '$TARGET') (/debootstrap/debootstrap.log))
                                    }
                                  spids: [8884]
                                )
                              ]
                              spids: [8884]
                            )
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:pkg spids:[8893])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (word_part.CommandSubPart
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (command.Pipeline
                                                  children: [
                                                    (C {(grep)} {(SQ <'^dpkg: error processing '>)} 
                                                      {
                                                        (DQ ($ 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
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [8895 8936]
                                        )
                                      )
                                    }
                                  spids: [8893]
                                )
                              ]
                              spids: [8891]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_DollarName '$pkg'))} 
                                          {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:msg spids:[8956])
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ ($ VSub_DollarName '$msg') 
                                                (' (possibly the package ') ($ VSub_DollarName '$pkg') (' is at fault)')
                                              )
                                            }
                                          spids: [8956]
                                        )
                                      ]
                                      spids: [8956]
                                    )
                                  ]
                                  spids: [16777215 8953]
                                )
                              ]
                              spids: [16777215 8965]
                            )
                          ]
                          spids: [16777215 8881]
                        )
                      ]
                      else_action: [
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:arg spids:[8971])
                              op: Equal
                              rhs: {(DQ ('the log'))}
                              spids: [8971]
                            )
                          ]
                          spids: [8971]
                        )
                      ]
                      spids: [8968 8977]
                    )
                    (C {(warning)} {(DQ ($ VSub_DollarName '$code'))} {(DQ ($ VSub_DollarName '$msg'))} 
                      {(DQ ($ VSub_DollarName '$arg'))}
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(1)}
                    )
                  ]
                  spids: [16777215 8839]
                )
              ]
              spids: [16777215 9000]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [8792]
        )
      spids: [8787 8791]
    )
    (command.FuncDef
      name: in_target
      body: 
        (command.BraceGroup
          children: [
            (C {(in_target_failmsg)} {(IN_TARGET_FAIL)} {(DQ ('Failure trying to run: %s'))} 
              {(DQ ($ VSub_DollarName '$CHROOT_CMD') (' ') ($ VSub_Star '$*'))} {(DQ ($ VSub_At '$@'))}
            )
          ]
          spids: [9015]
        )
      spids: [9010 9014]
    )
    (command.FuncDef
      name: conditional_cp
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-e)} 
                          {(DQ ($ VSub_Number '$2') (/) ($ VSub_Number '$1'))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Op_DAmp]
                                  children: [
                                    (C {(Lit_Other '[')} {(-L)} {(DQ ($ VSub_Number '$1'))} 
                                      {(Lit_Other ']')}
                                    )
                                    (C {(Lit_Other '[')} {(-e)} {(DQ ($ VSub_Number '$1'))} 
                                      {(Lit_Other ']')}
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.SimpleCommand
                              words: [{(cat)} {(DQ ($ VSub_Number '$1'))}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_Great '>'>
                                  fd: 16777215
                                  arg_word: {(DQ ($ VSub_Number '$2') (/) ($ VSub_Number '$1'))}
                                )
                              ]
                            )
                          ]
                          spids: [16777215 9096]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-e)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(cp)} {(-a)} {(DQ ($ VSub_Number '$1'))} 
                              {(DQ ($ VSub_Number '$2') (/) ($ VSub_Number '$1'))}
                            )
                          ]
                          spids: [9113 9126]
                        )
                      ]
                      spids: [16777215 9144]
                    )
                  ]
                  spids: [16777215 9068]
                )
              ]
              spids: [16777215 9147]
            )
          ]
          spids: [9048]
        )
      spids: [9043 9047]
    )
    (command.FuncDef
      name: mv_invalid_to
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:m spids:[9162])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [9162]
                )
              ]
              spids: [9160]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:m spids:[9168])
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (word_part.CommandSubPart
                          command_list: 
                            (command.CommandList
                              children: [
                                (command.Pipeline
                                  children: [
                                    (C {(echo)} 
                                      {
                                        (DQ 
                                          (word_part.BracedVarSub
                                            token: <VSub_Name m>
                                            suffix_op: 
                                              (suffix_op.StringUnary
                                                op_id: VOp1_Pound
                                                arg_word: {('http:') (Lit_Slash /) (Lit_Slash /)}
                                              )
                                            spids: [9174 9180]
                                          )
                                        )
                                      }
                                    )
                                    (C {(tr)} {(SQ </>)} {(SQ <_>)})
                                    (C {(sed)} {(SQ <'s/_*//'>)})
                                  ]
                                  negated: F
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [9170 9202]
                        )
                      )
                    }
                  spids: [9168]
                )
              ]
              spids: [9168]
            )
            (command.Subshell
              child: 
                (command.CommandList
                  children: [
                    (C {(cd)} 
                      {
                        (DQ ($ VSub_DollarName '$TARGET') (/) ($ VSub_DollarName '$APTSTATE') (/lists))
                      }
                    )
                    (command.ForEach
                      iter_name: a
                      iter_words: [{(debootstrap.invalid_) (Lit_Other '*')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (C {(mv)} {(DQ ($ VSub_DollarName '$a'))} 
                              {
                                (DQ (${ VSub_Name m) (_) 
                                  (word_part.BracedVarSub
                                    token: <VSub_Name a>
                                    suffix_op: 
                                      (suffix_op.StringUnary
                                        op_id: VOp1_Pound
                                        arg_word: {('*_')}
                                      )
                                    spids: [9241 9245]
                                  )
                                )
                              }
                            )
                          ]
                          spids: [9227 9249]
                        )
                      spids: [9222 9225]
                    )
                  ]
                )
              spids: [9206 9252]
            )
          ]
          spids: [9157]
        )
      spids: [9152 9156]
    )
    (command.FuncDef
      name: setup_apt_sources
      body: 
        (command.BraceGroup
          children: [
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_DollarName '$TARGET') (/etc/apt))})
            (command.ForEach
              iter_name: m
              iter_words: [{(DQ ($ VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:cs spids:[9291])
                          op: Equal
                          rhs: {(DQ )}
                          spids: [9291]
                        )
                      ]
                      spids: [9289]
                    )
                    (command.ForEach
                      iter_name: c
                      iter_words: [
                        {
                          (word_part.BracedVarSub
                            token: <VSub_Name COMPONENTS>
                            suffix_op: 
                              (suffix_op.StringUnary
                                op_id: VTest_ColonHyphen
                                arg_word: {($ VSub_DollarName '$USE_COMPONENTS')}
                              )
                            spids: [9302 9306]
                          )
                        }
                      ]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:path spids:[9314])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ (dists/) ($ VSub_DollarName '$SUITE') (/) 
                                        ($ VSub_DollarName '$c') (/binary-) ($ VSub_DollarName '$ARCH') (/Packages)
                                      )
                                    }
                                  spids: [9314]
                                )
                              ]
                              spids: [9312]
                            )
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:pkgdest spids:[9328])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_DollarName '$TARGET') (/) 
                                        (word_part.CommandSubPart
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {($ VSub_DollarName '$DLDEST')} {(pkg)} 
                                                  {(DQ ($ VSub_DollarName '$SUITE'))} {(DQ ($ VSub_DollarName '$c'))} {(DQ ($ VSub_DollarName '$ARCH'))} {(DQ ($ VSub_DollarName '$m'))} 
                                                  {(DQ ($ VSub_DollarName '$path'))}
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [9332 9356]
                                        )
                                      )
                                    }
                                  spids: [9328]
                                )
                              ]
                              spids: [9326]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-e)} {(DQ ($ VSub_DollarName '$pkgdest'))} 
                                          {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (command.Sentence
                                      child: 
                                        (command.Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (lhs_expr.LhsName name:cs spids:[9375])
                                              op: Equal
                                              rhs: 
                                                {
                                                  (DQ ($ VSub_DollarName '$cs') (' ') 
                                                    ($ VSub_DollarName '$c')
                                                  )
                                                }
                                              spids: [9375]
                                            )
                                          ]
                                          spids: [9375]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  spids: [16777215 9373]
                                )
                              ]
                              spids: [16777215 9383]
                            )
                          ]
                          spids: [9309 9386]
                        )
                      spids: [9301 9307]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$cs'))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Sentence
                              child: 
                                (C {(echo)} 
                                  {
                                    (DQ ('deb ') ($ VSub_DollarName '$m') (' ') 
                                      ($ VSub_DollarName '$SUITE') ($ VSub_DollarName '$cs')
                                    )
                                  }
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [16777215 9406]
                        )
                      ]
                      spids: [16777215 9419]
                    )
                  ]
                  spids: [9286 9422]
                )
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {(DQ ($ VSub_DollarName '$TARGET') (/etc/apt/sources.list))}
                )
              ]
              spids: [9280 9284]
            )
          ]
          spids: [9262]
        )
      spids: [9257 9261]
    )
    (command.FuncDef
      name: setup_etc
      body: 
        (command.BraceGroup
          children: [
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_DollarName '$TARGET') (/etc))})
            (C {(conditional_cp)} {(/etc/resolv.conf)} {(DQ ($ VSub_DollarName '$TARGET'))})
            (C {(conditional_cp)} {(/etc/hostname)} {(DQ ($ VSub_DollarName '$TARGET'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$DLDEST'))} {(Lit_Other '=')} 
                              {(apt_dest)} {(Lit_Other ']')}
                            )
                            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-e)} 
                              {(DQ ($ VSub_DollarName '$TARGET') (/etc/apt/sources.list))} {(Lit_Other ']')}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(setup_apt_sources)} {(DQ ('http://debootstrap.invalid/'))})]
                  spids: [16777215 9502]
                )
              ]
              spids: [16777215 9512]
            )
          ]
          spids: [9439]
        )
      spids: [9434 9438]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:UMOUNT_DIRS spids:[9517])
          op: Equal
          rhs: (word.EmptyWord)
          spids: [9517]
        )
      ]
      spids: [9517]
    )
    (command.FuncDef
      name: umount_exit_function
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:realdir spids:[9530])
                  op: Equal
                  spids: [9530]
                )
              ]
              spids: [9528]
            )
            (command.ForEach
              iter_name: dir
              iter_words: [{($ VSub_DollarName '$UMOUNT_DIRS')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:realdir spids:[9545])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(in_target_nofail)} {(readlink)} {(-f)} 
                                          {(DQ ($ VSub_DollarName '$dir'))}
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [9547 9557]
                                )
                              )
                            }
                          spids: [9545]
                        )
                      ]
                      spids: [9545]
                    )
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$realdir'))} {(Lit_Other ']')})
                        (command.ControlFlow
                          token: <ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (command.Subshell
                          child: 
                            (command.CommandList
                              children: [
                                (command.Sentence
                                  child: (C {(cd)} {(/)})
                                  terminator: <Op_Semi ';'>
                                )
                                (C {(umount)} 
                                  {
                                    (DQ ($ VSub_DollarName '$TARGET') (/) 
                                      (word_part.BracedVarSub
                                        token: <VSub_Name realdir>
                                        suffix_op: 
                                          (suffix_op.StringUnary
                                            op_id: VOp1_Pound
                                            arg_word: {(Lit_Slash /)}
                                          )
                                        spids: [9587 9591]
                                      )
                                    )
                                  }
                                )
                              ]
                            )
                          spids: [9574 9594]
                        )
                        (C {(true)})
                      ]
                    )
                  ]
                  spids: [9542 9601]
                )
              spids: [9538 9540]
            )
          ]
          spids: [9525]
        )
      spids: [9520 9524]
    )
    (command.FuncDef
      name: umount_on_exit
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$UMOUNT_DIRS'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:UMOUNT_DIRS spids:[9628])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$UMOUNT_DIRS') (' ') ($ VSub_Number '$1'))}
                          spids: [9628]
                        )
                      ]
                      spids: [9628]
                    )
                  ]
                  spids: [16777215 9625]
                )
              ]
              else_action: [
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:UMOUNT_DIRS spids:[9639])
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [9639]
                    )
                  ]
                  spids: [9639]
                )
                (C {(on_exit)} {(umount_exit_function)})
              ]
              spids: [9636 9650]
            )
          ]
          spids: [9611]
        )
      spids: [9606 9610]
    )
    (command.FuncDef
      name: clear_mtab
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_DollarName '$TARGET') (/etc/mtab))} 
                              {(Lit_Other ']')}
                            )
                            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-h)} 
                              {(DQ ($ VSub_DollarName '$TARGET') (/etc/mtab))} {(Lit_Other ']')}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$TARGET') (/etc/mtab))})]
                  spids: [16777215 9692]
                )
              ]
              spids: [16777215 9705]
            )
          ]
          spids: [9660]
        )
      spids: [9655 9659]
    )
    (command.FuncDef
      name: setup_proc
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ VSub_DollarName '$HOST_OS'))}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other '*') (freebsd) (Lit_Other '*')}]
                  action: [
                    (C {(umount_on_exit)} {(/dev)})
                    (C {(umount_on_exit)} {(/proc)})
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (command.SimpleCommand
                          words: [{(umount)} {(DQ ($ VSub_DollarName '$TARGET') (/proc))}]
                          redirects: [(redir.Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})]
                        )
                        (C {(true)})
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$HOST_OS'))} 
                                  {(Lit_Other '=')} {(kfreebsd)} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(in_target)} {(mount)} {(-t)} {(linprocfs)} {(proc)} {(/proc)})]
                          spids: [16777215 9773]
                        )
                      ]
                      else_action: [
                        (C {(mount)} {(-t)} {(linprocfs)} {(proc)} {($ VSub_DollarName '$TARGET') (/proc)})
                      ]
                      spids: [9789 9804]
                    )
                  ]
                  spids: [9727 9730 9807 16777215]
                )
                (case_arm
                  pat_list: [{(hurd) (Lit_Other '*')}]
                  action: [
                    (C {(settrans)} {(-a)} {(DQ ($ VSub_DollarName '$TARGET') (/dev))} {(/hurd/firmlink)} 
                      {(/dev)}
                    )
                    (C {(settrans)} {(-a)} {(DQ ($ VSub_DollarName '$TARGET') (/servers))} 
                      {(/hurd/firmlink)} {(/servers)}
                    )
                    (C {(settrans)} {(-a)} {(DQ ($ VSub_DollarName '$TARGET') (/proc))} 
                      {(/hurd/firmlink)} {(/proc)}
                    )
                  ]
                  spids: [9810 9812 9861 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  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: [Op_DPipe]
                      children: [
                        (command.SimpleCommand
                          words: [{(umount)} {(DQ ($ VSub_DollarName '$TARGET') (/proc))}]
                          redirects: [(redir.Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})]
                        )
                        (C {(true)})
                      ]
                    )
                    (C {(in_target)} {(mount)} {(-t)} {(proc)} {(proc)} {(/proc)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Op_DAmp]
                                  children: [
                                    (C {(Lit_Other '[')} {(-d)} 
                                      {(DQ ($ VSub_DollarName '$TARGET') (/sys))} {(Lit_Other ']')}
                                    )
                                    (command.SimpleCommand
                                      words: [
                                        {(grep)}
                                        {(-q)}
                                        {(SQ <'[[:space:]]sysfs'>)}
                                        {(/proc/filesystems)}
                                      ]
                                      redirects: [
                                        (redir.Redir
                                          op: <Redir_Great '2>'>
                                          fd: 2
                                          arg_word: {(/dev/null)}
                                        )
                                      ]
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(umount_on_exit)} {(/sys)})
                            (command.AndOr
                              ops: [Op_DPipe]
                              children: [
                                (command.SimpleCommand
                                  words: [{(umount)} {(DQ ($ VSub_DollarName '$TARGET') (/sys))}]
                                  redirects: [
                                    (redir.Redir
                                      op: <Redir_Great '2>'>
                                      fd: 2
                                      arg_word: {(/dev/null)}
                                    )
                                  ]
                                )
                                (C {(true)})
                              ]
                            )
                            (C {(in_target)} {(mount)} {(-t)} {(sysfs)} {(sysfs)} {(/sys)})
                          ]
                          spids: [16777215 9947]
                        )
                      ]
                      spids: [16777215 9983]
                    )
                    (C {(on_exit)} {(clear_mtab)})
                  ]
                  spids: [9864 9865 9991 16777215]
                )
              ]
              spids: [9718 9724 9994]
            )
            (C {(umount_on_exit)} {(/lib/init/rw)})
          ]
          spids: [9715]
        )
      spids: [9710 9714]
    )
    (command.FuncDef
      name: setup_proc_fakechroot
      body: 
        (command.BraceGroup
          children: [
            (C {(rm)} {(-rf)} {(DQ ($ VSub_DollarName '$TARGET') (/proc))})
            (C {(ln)} {(-s)} {(/proc)} {(DQ ($ VSub_DollarName '$TARGET'))})
          ]
          spids: [10009]
        )
      spids: [10004 10008]
    )
    (command.FuncDef
      name: setup_devices
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(doing_variant)} {(fakechroot)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(setup_devices_fakechroot)})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                  spids: [16777215 10053]
                )
              ]
              spids: [16777215 10064]
            )
            (command.Case
              to_match: {(DQ ($ VSub_DollarName '$HOST_OS'))}
              arms: [
                (case_arm
                  pat_list: [{(kfreebsd) (Lit_Other '*')}]
                  spids: [10077 10079 10082 16777215]
                )
                (case_arm pat_list:[{(freebsd)}] spids:[10085 10086 10089 16777215])
                (case_arm
                  pat_list: [{(hurd) (Lit_Other '*')}]
                  spids: [10092 10094 10097 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(setup_devices_simple)})]
                  spids: [10100 10101 10107 16777215]
                )
              ]
              spids: [10068 10074 10110]
            )
          ]
          spids: [10043]
        )
      spids: [10038 10042]
    )
    (command.FuncDef
      name: setup_dynamic_devices
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(doing_variant)} {(fakechroot)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                  spids: [16777215 10133]
                )
              ]
              spids: [16777215 10141]
            )
            (command.Case
              to_match: {(DQ ($ VSub_DollarName '$HOST_OS'))}
              arms: [
                (case_arm
                  pat_list: [{(kfreebsd) (Lit_Other '*')}]
                  action: [(C {(in_target)} {(mount)} {(-t)} {(devfs)} {(devfs)} {(/dev)})]
                  spids: [10154 10156 10171 16777215]
                )
                (case_arm
                  pat_list: [{(freebsd)}]
                  action: [
                    (C {(mount)} {(-t)} {(devfs)} {(devfs)} {($ VSub_DollarName '$TARGET') (/dev)})
                  ]
                  spids: [10174 10175 10189 16777215]
                )
                (case_arm
                  pat_list: [{(hurd) (Lit_Other '*')}]
                  action: [(C {(in_target)} {(/usr/lib/hurd/setup-translators)} {(-k)})]
                  spids: [10192 10194 10207 16777215]
                )
              ]
              spids: [10145 10151 10210]
            )
          ]
          spids: [10123]
        )
      spids: [10118 10122]
    )
    (command.FuncDef
      name: setup_devices_simple
      body: 
        (command.BraceGroup
          children: [
            (C {(mknod)} {(-m)} {(666)} {($ VSub_DollarName '$TARGET') (/dev/null)} {(c)} {(1)} {(3)})
            (C {(mknod)} {(-m)} {(666)} {($ VSub_DollarName '$TARGET') (/dev/zero)} {(c)} {(1)} {(5)})
            (C {(mknod)} {(-m)} {(666)} {($ VSub_DollarName '$TARGET') (/dev/full)} {(c)} {(1)} {(7)})
            (C {(mknod)} {(-m)} {(666)} {($ VSub_DollarName '$TARGET') (/dev/random)} {(c)} {(1)} {(8)})
            (C {(mknod)} {(-m)} {(666)} {($ VSub_DollarName '$TARGET') (/dev/urandom)} {(c)} {(1)} {(9)})
            (C {(mknod)} {(-m)} {(666)} {($ VSub_DollarName '$TARGET') (/dev/tty)} {(c)} {(5)} {(0)})
            (C {(mkdir)} {($ VSub_DollarName '$TARGET') (/dev/pts/)} 
              {($ VSub_DollarName '$TARGET') (/dev/shm/)}
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [
                            (C {(mknod)} {(-m)} {(666)} {($ VSub_DollarName '$TARGET') (/dev/ptmx)} {(c)} 
                              {(5)} {(2)}
                            )
                          ]
                          negated: T
                        )
                      terminator: <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)} {($ VSub_DollarName '$TARGET') (/dev/ptmx)})
                  ]
                  spids: [16777215 10364]
                )
              ]
              spids: [16777215 10386]
            )
            (C {(ln)} {(-s)} {(/proc/self/fd)} {($ VSub_DollarName '$TARGET') (/dev/fd)})
            (C {(ln)} {(-s)} {(/proc/self/fd/0)} {($ VSub_DollarName '$TARGET') (/dev/stdin)})
            (C {(ln)} {(-s)} {(/proc/self/fd/1)} {($ VSub_DollarName '$TARGET') (/dev/stdout)})
            (C {(ln)} {(-s)} {(/proc/self/fd/2)} {($ VSub_DollarName '$TARGET') (/dev/stderr)})
          ]
          spids: [10220]
        )
      spids: [10215 10219]
    )
    (command.FuncDef
      name: setup_devices_fakechroot
      body: 
        (command.BraceGroup
          children: [
            (C {(rm)} {(-rf)} {(DQ ($ VSub_DollarName '$TARGET') (/dev))})
            (C {(ln)} {(-s)} {(/dev)} {(DQ ($ VSub_DollarName '$TARGET'))})
          ]
          spids: [10436]
        )
      spids: [10431 10435]
    )
    (command.FuncDef
      name: setup_dselect_method
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{(apt)}]
                  action: [
                    (C {(mkdir)} {(-p)} {(DQ ($ VSub_DollarName '$TARGET') (/var/lib/dpkg))})
                    (command.SimpleCommand
                      words: [{(echo)} {(DQ ('apt apt'))}]
                      redirects: [
                        (redir.Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {(DQ ($ VSub_DollarName '$TARGET') (/var/lib/dpkg/cmethopt))}
                        )
                      ]
                    )
                    (C {(chmod)} {(644)} {(DQ ($ VSub_DollarName '$TARGET') (/var/lib/dpkg/cmethopt))})
                  ]
                  spids: [10479 10480 10517 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(error)} {(1)} {(UNKNOWNDSELECT)} {(DQ ('unknown dselect method'))})]
                  spids: [10520 10521 10535 16777215]
                )
              ]
              spids: [10470 10476 10538]
            )
          ]
          spids: [10467]
        )
      spids: [10462 10466]
    )
    (command.FuncDef
      name: setup_merged_usr
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$MERGED_USR'))} {(Lit_Other '=')} 
                          {(DQ (no))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Sentence
                      child: (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [16777215 10591]
                )
              ]
              spids: [16777215 10598]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:link_dir spids:[10604])
                  op: Equal
                  spids: [10604]
                )
              ]
              spids: [10602]
            )
            (command.Case
              to_match: {($ VSub_DollarName '$ARCH')}
              arms: [
                (case_arm
                  pat_list: [{(hurd-) (Lit_Other '*')}]
                  action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                  spids: [10614 10616 10622 16777215]
                )
                (case_arm
                  pat_list: [{(amd64)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:link_dir spids:[10628])
                          op: Equal
                          rhs: {(DQ ('lib32 lib64 libx32'))}
                          spids: [10628]
                        )
                      ]
                      spids: [10628]
                    )
                  ]
                  spids: [10625 10626 10633 16777215]
                )
                (case_arm
                  pat_list: [{(i386)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:link_dir spids:[10639])
                          op: Equal
                          rhs: {(DQ ('lib64 libx32'))}
                          spids: [10639]
                        )
                      ]
                      spids: [10639]
                    )
                  ]
                  spids: [10636 10637 10644 16777215]
                )
                (case_arm
                  pat_list: [{(mips)} {(mipsel)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:link_dir spids:[10653])
                          op: Equal
                          rhs: {(DQ ('lib32 lib64'))}
                          spids: [10653]
                        )
                      ]
                      spids: [10653]
                    )
                  ]
                  spids: [10647 10650 10658 16777215]
                )
                (case_arm
                  pat_list: [{(mips64) (Lit_Other '*')} {(mipsn32) (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:link_dir spids:[10669])
                          op: Equal
                          rhs: {(DQ ('lib32 lib64 libo32'))}
                          spids: [10669]
                        )
                      ]
                      spids: [10669]
                    )
                  ]
                  spids: [10661 10666 10674 16777215]
                )
                (case_arm
                  pat_list: [{(powerpc)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:link_dir spids:[10680])
                          op: Equal
                          rhs: {(DQ (lib64))}
                          spids: [10680]
                        )
                      ]
                      spids: [10680]
                    )
                  ]
                  spids: [10677 10678 10685 16777215]
                )
                (case_arm
                  pat_list: [{(ppc64)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:link_dir spids:[10691])
                          op: Equal
                          rhs: {(DQ ('lib32 lib64'))}
                          spids: [10691]
                        )
                      ]
                      spids: [10691]
                    )
                  ]
                  spids: [10688 10689 10696 16777215]
                )
                (case_arm
                  pat_list: [{(ppc64el)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:link_dir spids:[10702])
                          op: Equal
                          rhs: {(DQ (lib64))}
                          spids: [10702]
                        )
                      ]
                      spids: [10702]
                    )
                  ]
                  spids: [10699 10700 10707 16777215]
                )
                (case_arm
                  pat_list: [{(s390x)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:link_dir spids:[10713])
                          op: Equal
                          rhs: {(DQ (lib32))}
                          spids: [10713]
                        )
                      ]
                      spids: [10713]
                    )
                  ]
                  spids: [10710 10711 10718 16777215]
                )
                (case_arm
                  pat_list: [{(sparc)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:link_dir spids:[10724])
                          op: Equal
                          rhs: {(DQ (lib64))}
                          spids: [10724]
                        )
                      ]
                      spids: [10724]
                    )
                  ]
                  spids: [10721 10722 10729 16777215]
                )
                (case_arm
                  pat_list: [{(sparc64)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:link_dir spids:[10735])
                          op: Equal
                          rhs: {(DQ ('lib32 lib64'))}
                          spids: [10735]
                        )
                      ]
                      spids: [10735]
                    )
                  ]
                  spids: [10732 10733 10740 16777215]
                )
                (case_arm
                  pat_list: [{(x32)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:link_dir spids:[10746])
                          op: Equal
                          rhs: {(DQ ('lib32 lib64 libx32'))}
                          spids: [10746]
                        )
                      ]
                      spids: [10746]
                    )
                  ]
                  spids: [10743 10744 10751 16777215]
                )
              ]
              spids: [10607 10611 10754]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:link_dir spids:[10757])
                  op: Equal
                  rhs: {(DQ ('bin sbin lib ') ($ VSub_DollarName '$link_dir'))}
                  spids: [10757]
                )
              ]
              spids: [10757]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:dir spids:[10767])
                  op: Equal
                  spids: [10767]
                )
              ]
              spids: [10765]
            )
            (command.ForEach
              iter_name: dir
              iter_words: [{($ VSub_DollarName '$link_dir')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(ln)} {(-s)} {(usr/) ($ VSub_DollarName '$dir')} 
                      {($ VSub_DollarName '$TARGET') (/) ($ VSub_DollarName '$dir')}
                    )
                    (C {(mkdir)} {(-p)} 
                      {($ VSub_DollarName '$TARGET') (/usr/) ($ VSub_DollarName '$dir')}
                    )
                  ]
                  spids: [10779 10803]
                )
              spids: [10775 10777]
            )
          ]
          spids: [10571]
        )
      spids: [10567 10570]
    )
    (command.If
      arms: [
        (if_arm
          cond: [(command.Sentence child:(C {(in_path)} {(perl)}) terminator:<Op_Semi ';'>)]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:PKGDETAILS spids:[10832])
                  op: Equal
                  rhs: {(pkgdetails_perl)}
                  spids: [10832]
                )
              ]
              spids: [10832]
            )
            (command.FuncDef
              name: pkgdetails_field
              body: 
                (command.BraceGroup
                  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 ($ VSub_At '$@'))}
                    )
                  ]
                  spids: [10842]
                )
              spids: [10837 10841]
            )
            (command.FuncDef
              name: pkgdetails_perl
              body: 
                (command.BraceGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} 
                                  {(DQ ('WGET%'))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Sentence
                              child: (C {(shift)})
                              terminator: <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 ($ VSub_At '$@'))}
                            )
                          ]
                          spids: [16777215 10934]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} 
                                  {(DQ (GETDEPS))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Sentence
                              child: 
                                (command.Assignment
                                  keyword: Assign_Local
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:pkgdest spids:[10992])
                                      op: Equal
                                      rhs: {(DQ ($ VSub_Number '$2'))}
                                      spids: [10992]
                                    )
                                  ]
                                  spids: [10990]
                                )
                              terminator: <Op_Semi ';'>
                            )
                            (command.Sentence
                              child: (C {(shift)})
                              terminator: <Op_Semi ';'>
                            )
                            (C {(shift)})
                            (command.Pipeline
                              children: [
                                (command.SimpleCommand
                                  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 ($ VSub_At '$@'))}
                                  ]
                                  redirects: [
                                    (redir.Redir
                                      op: <Redir_Less '<'>
                                      fd: 16777215
                                      arg_word: {(DQ ($ VSub_DollarName '$pkgdest'))}
                                    )
                                  ]
                                )
                                (C {(sort)})
                                (C {(uniq)})
                              ]
                              negated: F
                            )
                          ]
                          spids: [10970 10987]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} 
                                  {(DQ (PKGS))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:m spids:[11080])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$2'))}
                                  spids: [11080]
                                )
                              ]
                              spids: [11078]
                            )
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:p spids:[11088])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$3'))}
                                  spids: [11088]
                                )
                              ]
                              spids: [11086]
                            )
                            (command.Sentence
                              child: (C {(shift)})
                              terminator: <Op_Semi ';'>
                            )
                            (command.Sentence
                              child: (C {(shift)})
                              terminator: <Op_Semi ';'>
                            )
                            (C {(shift)})
                            (command.SimpleCommand
                              words: [
                                {(pkgdetails_field)}
                                {(1)}
                                {(Package) (Lit_Other ':')}
                                {(DQ ($ VSub_DollarName '$m'))}
                                {(DQ ($ VSub_At '$@'))}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_Less '<'>
                                  fd: 16777215
                                  arg_word: {(DQ ($ VSub_DollarName '$p'))}
                                )
                              ]
                            )
                          ]
                          spids: [11058 11075]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} 
                                  {(DQ (FIELD))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:f spids:[11147])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$2'))}
                                  spids: [11147]
                                )
                              ]
                              spids: [11145]
                            )
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:m spids:[11155])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$3'))}
                                  spids: [11155]
                                )
                              ]
                              spids: [11153]
                            )
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:p spids:[11163])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$4'))}
                                  spids: [11163]
                                )
                              ]
                              spids: [11161]
                            )
                            (command.Sentence
                              child: (C {(shift)})
                              terminator: <Op_Semi ';'>
                            )
                            (command.Sentence
                              child: (C {(shift)})
                              terminator: <Op_Semi ';'>
                            )
                            (command.Sentence
                              child: (C {(shift)})
                              terminator: <Op_Semi ';'>
                            )
                            (C {(shift)})
                            (command.SimpleCommand
                              words: [
                                {(pkgdetails_field)}
                                {(0)}
                                {(DQ ($ VSub_DollarName '$f'))}
                                {(DQ ($ VSub_DollarName '$m'))}
                                {(DQ ($ VSub_At '$@'))}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_Less '<'>
                                  fd: 16777215
                                  arg_word: {(DQ ($ VSub_DollarName '$p'))}
                                )
                              ]
                            )
                          ]
                          spids: [11125 11142]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} 
                                  {(DQ (STANZAS))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Sentence
                              child: 
                                (command.Assignment
                                  keyword: Assign_Local
                                  pairs: [
                                    (assign_pair
                                      lhs: (lhs_expr.LhsName name:pkgdest spids:[11226])
                                      op: Equal
                                      rhs: {(DQ ($ VSub_Number '$2'))}
                                      spids: [11226]
                                    )
                                  ]
                                  spids: [11224]
                                )
                              terminator: <Op_Semi ';'>
                            )
                            (command.Sentence
                              child: (C {(shift)})
                              terminator: <Op_Semi ';'>
                            )
                            (C {(shift)})
                            (command.SimpleCommand
                              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 ($ VSub_At '$@'))}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_Less '<'>
                                  fd: 16777215
                                  arg_word: {(DQ ($ VSub_DollarName '$pkgdest'))}
                                )
                              ]
                            )
                          ]
                          spids: [11204 11221]
                        )
                      ]
                      spids: [16777215 11271]
                    )
                  ]
                  spids: [10914]
                )
              spids: [10909 10913]
            )
          ]
          spids: [16777215 10829]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Lit_Other '[')} {(-e)} {(DQ (/usr/lib/debootstrap/pkgdetails))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:PKGDETAILS spids:[11292])
                  op: Equal
                  rhs: {(DQ (/usr/lib/debootstrap/pkgdetails))}
                  spids: [11292]
                )
              ]
              spids: [11292]
            )
          ]
          spids: [11276 11289]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Lit_Other '[')} {(-e)} {(DQ ($ VSub_DollarName '$DEBOOTSTRAP_DIR') (/pkgdetails))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:PKGDETAILS spids:[11314])
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$DEBOOTSTRAP_DIR') (/pkgdetails))}
                  spids: [11314]
                )
              ]
              spids: [11314]
            )
          ]
          spids: [11297 11311]
        )
      ]
      else_action: [
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:PKGDETAILS spids:[11323])
              op: Equal
              rhs: {(DQ )}
              spids: [11323]
            )
          ]
          spids: [11323]
        )
      ]
      spids: [11320 11327]
    )
    (command.FuncDef
      name: resolve_deps
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:m1 spids:[11344])
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (word_part.BracedVarSub
                          token: <VSub_Name MIRRORS>
                          suffix_op: (suffix_op.StringUnary op_id:VOp1_DPercent arg_word:{(' *')})
                          spids: [11346 11350]
                        )
                      )
                    }
                  spids: [11344]
                )
              ]
              spids: [11342]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:PKGS spids:[11357])
                  op: Equal
                  rhs: {(DQ ($ VSub_Star '$*'))}
                  spids: [11357]
                )
              ]
              spids: [11355]
            )
            (command.Sentence
              child: 
                (command.Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:ALLPKGS spids:[11365])
                      op: Equal
                      rhs: {(DQ ($ VSub_DollarName '$PKGS'))}
                      spids: [11365]
                    )
                  ]
                  spids: [11363]
                )
              terminator: <Op_Semi ';'>
            )
            (command.Sentence
              child: 
                (command.Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:ALLPKGS2 spids:[11374])
                      op: Equal
                      rhs: {(DQ )}
                      spids: [11374]
                    )
                  ]
                  spids: [11372]
                )
              terminator: <Op_Semi ';'>
            )
            (command.WhileUntil
              keyword: <KW_While while>
              cond: [
                (command.Sentence
                  child: 
                    (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$PKGS'))} 
                      {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:NEWPKGS spids:[11402])
                          op: Equal
                          rhs: {(DQ )}
                          spids: [11402]
                        )
                      ]
                      spids: [11400]
                    )
                    (command.ForEach
                      iter_name: c
                      iter_words: [
                        {
                          (word_part.BracedVarSub
                            token: <VSub_Name COMPONENTS>
                            suffix_op: 
                              (suffix_op.StringUnary
                                op_id: VTest_ColonHyphen
                                arg_word: {($ VSub_DollarName '$USE_COMPONENTS')}
                              )
                            spids: [11413 11417]
                          )
                        }
                      ]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:path spids:[11425])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ (dists/) ($ VSub_DollarName '$SUITE') (/) 
                                        ($ VSub_DollarName '$c') (/binary-) ($ VSub_DollarName '$ARCH') (/Packages)
                                      )
                                    }
                                  spids: [11425]
                                )
                              ]
                              spids: [11423]
                            )
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:pkgdest spids:[11439])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_DollarName '$TARGET') (/) 
                                        (word_part.CommandSubPart
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {($ VSub_DollarName '$DLDEST')} {(pkg)} 
                                                  {(DQ ($ VSub_DollarName '$SUITE'))} {(DQ ($ VSub_DollarName '$c'))} {(DQ ($ VSub_DollarName '$ARCH'))} {(DQ ($ VSub_DollarName '$m1'))} 
                                                  {(DQ ($ VSub_DollarName '$path'))}
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [11443 11467]
                                        )
                                      )
                                    }
                                  spids: [11439]
                                )
                              ]
                              spids: [11437]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:NEWPKGS spids:[11471])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_DollarName '$NEWPKGS') (' ') 
                                        (word_part.CommandSubPart
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {(DQ ($ VSub_DollarName '$PKGDETAILS'))} {(GETDEPS)} 
                                                  {(DQ ($ VSub_DollarName '$pkgdest'))} {($ VSub_DollarName '$PKGS')}
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [11475 11487]
                                        )
                                      )
                                    }
                                  spids: [11471]
                                )
                              ]
                              spids: [11471]
                            )
                          ]
                          spids: [11420 11491]
                        )
                      spids: [11412 11418]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:PKGS spids:[11494])
                          op: Equal
                          rhs: 
                            {
                              (word_part.CommandSubPart
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(echo)} 
                                            {
                                              (DQ ($ VSub_DollarName '$PKGS') (' ') 
                                                ($ VSub_DollarName '$NEWPKGS')
                                              )
                                            }
                                          )
                                          (C {(tr)} {(SQ <' '>)} {(SQ <'\\n'>)})
                                          (C {(sort)})
                                          (C {(uniq)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [11495 11523]
                              )
                            }
                          spids: [11494]
                        )
                      ]
                      spids: [11494]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:REALPKGS spids:[11528])
                          op: Equal
                          rhs: {(DQ )}
                          spids: [11528]
                        )
                      ]
                      spids: [11526]
                    )
                    (command.ForEach
                      iter_name: c
                      iter_words: [
                        {
                          (word_part.BracedVarSub
                            token: <VSub_Name COMPONENTS>
                            suffix_op: 
                              (suffix_op.StringUnary
                                op_id: VTest_ColonHyphen
                                arg_word: {($ VSub_DollarName '$USE_COMPONENTS')}
                              )
                            spids: [11539 11543]
                          )
                        }
                      ]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:path spids:[11551])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ (dists/) ($ VSub_DollarName '$SUITE') (/) 
                                        ($ VSub_DollarName '$c') (/binary-) ($ VSub_DollarName '$ARCH') (/Packages)
                                      )
                                    }
                                  spids: [11551]
                                )
                              ]
                              spids: [11549]
                            )
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:pkgdest spids:[11565])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_DollarName '$TARGET') (/) 
                                        (word_part.CommandSubPart
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {($ VSub_DollarName '$DLDEST')} {(pkg)} 
                                                  {(DQ ($ VSub_DollarName '$SUITE'))} {(DQ ($ VSub_DollarName '$c'))} {(DQ ($ VSub_DollarName '$ARCH'))} {(DQ ($ VSub_DollarName '$m1'))} 
                                                  {(DQ ($ VSub_DollarName '$path'))}
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [11569 11593]
                                        )
                                      )
                                    }
                                  spids: [11565]
                                )
                              ]
                              spids: [11563]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:REALPKGS spids:[11597])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_DollarName '$REALPKGS') (' ') 
                                        (word_part.CommandSubPart
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (command.Pipeline
                                                  children: [
                                                    (C {(DQ ($ VSub_DollarName '$PKGDETAILS'))} 
                                                      {(PKGS)} {(REAL)} {(DQ ($ VSub_DollarName '$pkgdest'))} {($ VSub_DollarName '$PKGS')}
                                                    )
                                                    (C {(sed)} {(-n)} {(SQ <'s/ .*REAL.*$//p'>)})
                                                  ]
                                                  negated: F
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [11601 11625]
                                        )
                                      )
                                    }
                                  spids: [11597]
                                )
                              ]
                              spids: [11597]
                            )
                          ]
                          spids: [11546 11629]
                        )
                      spids: [11538 11544]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:PKGS spids:[11632])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$REALPKGS'))}
                          spids: [11632]
                        )
                      ]
                      spids: [11632]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:ALLPKGS2 spids:[11638])
                          op: Equal
                          rhs: 
                            {
                              (word_part.CommandSubPart
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(echo)} 
                                            {
                                              (DQ ($ VSub_DollarName '$PKGS') (' ') 
                                                ($ VSub_DollarName '$ALLPKGS')
                                              )
                                            }
                                          )
                                          (C {(tr)} {(SQ <' '>)} {(SQ <'\\n'>)})
                                          (C {(sort)})
                                          (C {(uniq)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [11639 11667]
                              )
                            }
                          spids: [11638]
                        )
                      ]
                      spids: [11638]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:PKGS spids:[11670])
                          op: Equal
                          rhs: 
                            {
                              (word_part.CommandSubPart
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(without)} {(DQ ($ VSub_DollarName '$ALLPKGS2'))} 
                                        {(DQ ($ VSub_DollarName '$ALLPKGS'))}
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [11671 11681]
                              )
                            }
                          spids: [11670]
                        )
                      ]
                      spids: [11670]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:ALLPKGS spids:[11684])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$ALLPKGS2'))}
                          spids: [11684]
                        )
                      ]
                      spids: [11684]
                    )
                  ]
                  spids: [11397 11690]
                )
            )
            (C {(echo)} {($ VSub_DollarName '$ALLPKGS')})
          ]
          spids: [11339]
        )
      spids: [11334 11338]
    )
    (command.FuncDef
      name: setup_available
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:m1 spids:[11710])
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (word_part.BracedVarSub
                          token: <VSub_Name MIRRORS>
                          suffix_op: (suffix_op.StringUnary op_id:VOp1_DPercent arg_word:{(' *')})
                          spids: [11712 11716]
                        )
                      )
                    }
                  spids: [11710]
                )
              ]
              spids: [11708]
            )
            (command.ForEach
              iter_name: c
              iter_words: [
                {
                  (word_part.BracedVarSub
                    token: <VSub_Name COMPONENTS>
                    suffix_op: 
                      (suffix_op.StringUnary
                        op_id: VTest_ColonHyphen
                        arg_word: {($ VSub_DollarName '$USE_COMPONENTS')}
                      )
                    spids: [11727 11731]
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:path spids:[11739])
                          op: Equal
                          rhs: 
                            {
                              (DQ (dists/) ($ VSub_DollarName '$SUITE') (/) ($ VSub_DollarName '$c') 
                                (/binary-) ($ VSub_DollarName '$ARCH') (/Packages)
                              )
                            }
                          spids: [11739]
                        )
                      ]
                      spids: [11737]
                    )
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:pkgdest spids:[11753])
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$TARGET') (/) 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {($ VSub_DollarName '$DLDEST')} {(pkg)} 
                                          {(DQ ($ VSub_DollarName '$SUITE'))} {(DQ ($ VSub_DollarName '$c'))} {(DQ ($ VSub_DollarName '$ARCH'))} {(DQ ($ VSub_DollarName '$m1'))} 
                                          {(DQ ($ VSub_DollarName '$path'))}
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [11757 11781]
                                )
                              )
                            }
                          spids: [11753]
                        )
                      ]
                      spids: [11751]
                    )
                    (C {(DQ ($ VSub_DollarName '$PKGDETAILS'))} {(STANZAS)} 
                      {(DQ ($ VSub_DollarName '$pkgdest'))} {(DQ ($ VSub_At '$@'))}
                    )
                  ]
                  spids: [11734 11808]
                )
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {(DQ ($ VSub_DollarName '$TARGET') (/var/lib/dpkg/available))}
                )
              ]
              spids: [11726 11732]
            )
            (command.Pipeline
              children: [
                (command.ForEach
                  iter_name: pkg
                  do_arg_iter: T
                  body: 
                    (command.DoGroup
                      children: [(C {(echo)} {(DQ ($ VSub_DollarName '$pkg') (' install'))})]
                      spids: [11823 11834]
                    )
                  spids: [16777215 16777215]
                )
                (C {(in_target)} {(dpkg)} {(--set-selections)})
              ]
              negated: F
            )
          ]
          spids: [11705]
        )
      spids: [11700 11704]
    )
    (command.FuncDef
      name: get_next_predep
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:stanza spids:[11857])
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (word_part.CommandSubPart
                          command_list: 
                            (command.CommandList
                              children: [(C {(in_target_nofail)} {(dpkg)} {(--predep-package)})]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [11859 11865]
                        )
                      )
                    }
                  spids: [11857]
                )
              ]
              spids: [11855]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$stanza'))} {(Lit_Other ']')})
                (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ ($ VSub_DollarName '$stanza'))})
                (C {(grep)} {(SQ <'^Package:'>)})
                (C {(sed)} {(SQ <'s/^Package://; s/^ *//'>)})
              ]
              negated: F
            )
          ]
          spids: [11852]
        )
      spids: [11847 11851]
    )
    (command.FuncDef
      name: check_sane_mount
      body: 
        (command.BraceGroup
          children: [
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_Number '$1'))})
            (command.Case
              to_match: {(DQ ($ VSub_DollarName '$HOST_OS'))}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other '*') (freebsd) (Lit_Other '*')} {(hurd) (Lit_Other '*')}]
                  spids: [11949 11955 11958 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(mknod)} {(DQ ($ VSub_Number '$1') (/test-dev-null))} {(c)} {(1)} {(3)})
                        (command.ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.Pipeline
                                  children: [
                                    (command.SimpleCommand
                                      words: [{(echo)} {(test)}]
                                      redirects: [
                                        (redir.Redir
                                          op: <Redir_Great '>'>
                                          fd: 16777215
                                          arg_word: {(DQ ($ VSub_Number '$1') (/test-dev-null))}
                                        )
                                      ]
                                    )
                                  ]
                                  negated: T
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(rm)} {(-f)} {(DQ ($ VSub_Number '$1') (/test-dev-null))})
                            (command.ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [16777215 12001]
                        )
                      ]
                      spids: [16777215 12019]
                    )
                    (C {(rm)} {(-f)} {(DQ ($ VSub_Number '$1') (/test-dev-null))})
                  ]
                  spids: [11961 11962 12032 16777215]
                )
              ]
              spids: [11940 11946 12035]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:SH spids:[12039])
                  op: Equal
                  rhs: {(/bin/sh)}
                  spids: [12039]
                )
              ]
              spids: [12039]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(Lit_Other '[')} {(-x)} {($ VSub_DollarName '$SH')} {(Lit_Other ']')})
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:SH spids:[12053])
                      op: Equal
                      rhs: 
                        {
                          (word_part.CommandSubPart
                            command_list: (command.CommandList children:[(C {(which)} {(sh)})])
                            left_token: <Left_Backtick '`'>
                            spids: [12054 12058]
                          )
                        }
                      spids: [12053]
                    )
                  ]
                  spids: [12053]
                )
              ]
            )
            (command.SimpleCommand
              words: [{(cat)}]
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {(DQ ($ VSub_Number '$1') (/test-exec))}
                )
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 12079
                  stdin_parts: [('#! ') ($ VSub_DollarName '$SH') ('\n') (':\n')]
                )
              ]
            )
            (C {(chmod)} {(Lit_Other '+') (x)} {(DQ ($ VSub_Number '$1') (/test-exec))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [(C {(DQ ($ VSub_Number '$1') (/test-exec))})]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(rm)} {(-f)} {(DQ ($ VSub_Number '$1') (/test-exec))})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(1)}
                    )
                  ]
                  spids: [16777215 12102]
                )
              ]
              spids: [16777215 12120]
            )
            (C {(rm)} {(-f)} {(DQ ($ VSub_Number '$1') (/test-exec))})
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [11927]
        )
      spids: [11922 11926]
    )
    (command.FuncDef
      name: read_gpg_status
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:badsig spids:[12149])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [12149]
                )
              ]
              spids: [12149]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:unkkey spids:[12152])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [12152]
                )
              ]
              spids: [12152]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:validsig spids:[12155])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [12155]
                )
              ]
              spids: [12155]
            )
            (command.WhileUntil
              keyword: <KW_While while>
              cond: [
                (command.Sentence
                  child: (C {(read)} {(prefix)} {(keyword)} {(keyid)} {(rest)})
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$prefix'))} {(Lit_Other '=')} 
                          {(SQ <'[GNUPG:]'>)} {(Lit_Other ']')}
                        )
                        (command.ControlFlow
                          token: <ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.Case
                      to_match: {($ VSub_DollarName '$keyword')}
                      arms: [
                        (case_arm
                          pat_list: [{(BADSIG)}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:badsig spids:[12203])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_DollarName '$keyid'))}
                                  spids: [12203]
                                )
                              ]
                              spids: [12203]
                            )
                          ]
                          spids: [12200 12201 12208 16777215]
                        )
                        (case_arm
                          pat_list: [{(NO_PUBKEY)}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:unkkey spids:[12214])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_DollarName '$keyid'))}
                                  spids: [12214]
                                )
                              ]
                              spids: [12214]
                            )
                          ]
                          spids: [12211 12212 12219 16777215]
                        )
                        (case_arm
                          pat_list: [{(VALIDSIG)}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:validsig spids:[12225])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_DollarName '$keyid'))}
                                  spids: [12225]
                                )
                              ]
                              spids: [12225]
                            )
                          ]
                          spids: [12222 12223 12230 16777215]
                        )
                      ]
                      spids: [12193 12197 12233]
                    )
                  ]
                  spids: [12171 12236]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$validsig'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(info)} {(VALIDRELSIG)} {(DQ ('Valid Release signature (key id %s)'))} 
                      {(DQ ($ VSub_DollarName '$validsig'))}
                    )
                  ]
                  spids: [16777215 12250]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$badsig'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(error)} {(1)} {(BADRELSIG)} {(DQ ('Invalid Release signature (key id %s)'))} 
                      {(DQ ($ VSub_DollarName '$badsig'))}
                    )
                  ]
                  spids: [12266 12277]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$unkkey'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(error)} {(1)} {(UNKNOWNRELSIG)} 
                      {(DQ ('Release signed by unknown key (key id %s)'))} {(DQ ($ VSub_DollarName '$unkkey'))}
                    )
                  ]
                  spids: [12295 12306]
                )
              ]
              else_action: [
                (C {(error)} {(1)} {(SIGCHECK)} {(DQ ('Error executing gpgv to check Release signature'))})
              ]
              spids: [12324 12338]
            )
          ]
          spids: [12146]
        )
      spids: [12141 12145]
    )
    (command.FuncDef
      name: without
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (command.Subshell
                  child: 
                    (command.CommandList
                      children: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [
                                (C {(echo)} {($ VSub_Number '$1')})
                                (C {(tr)} {(SQ <' '>)} {(SQ <'\\n'>)})
                                (C {(sort)})
                                (C {(uniq)})
                              ]
                              negated: F
                            )
                          terminator: <Op_Semi ';'>
                        )
                        (command.Pipeline
                          children: [
                            (C {(echo)} {($ VSub_Number '$2')} {($ VSub_Number '$2')})
                            (C {(tr)} {(SQ <' '>)} {(SQ <'\\n'>)})
                          ]
                          negated: F
                        )
                      ]
                    )
                  spids: [12355 12399]
                )
                (C {(sort)})
                (C {(uniq)} {(-u)})
                (C {(tr)} {(SQ <'\\n'>)} {(SQ <' '>)})
              ]
              negated: F
            )
            (C {(echo)})
          ]
          spids: [12348]
        )
      spids: [12343 12347]
    )
    (command.FuncDef
      name: repeatn
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:n spids:[12442])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [12442]
                )
              ]
              spids: [12440]
            )
            (C {(shift)})
            (command.WhileUntil
              keyword: <KW_While while>
              cond: [
                (command.Sentence
                  child: 
                    (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$n'))} {(-gt)} {(0)} {(Lit_Other ']')})
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: (C {(DQ ($ VSub_At '$@'))})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(command.ControlFlow token:<ControlFlow_Break break>)]
                          spids: [16777215 12476]
                        )
                      ]
                      else_action: [
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:n spids:[12485])
                              op: Equal
                              rhs: 
                                {
                                  (DQ 
                                    (word_part.ArithSubPart
                                      anode: 
                                        (arith_expr.ArithBinary
                                          op_id: Arith_Minus
                                          left: (arith_expr.ArithWord w:{($ VSub_DollarName '$n')})
                                          right: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                        )
                                      spids: [12487 12496]
                                    )
                                  )
                                }
                              spids: [12485]
                            )
                          ]
                          spids: [12485]
                        )
                        (C {(sleep)} {(1)})
                      ]
                      spids: [12482 12505]
                    )
                  ]
                  spids: [12466 12508]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$n'))} {(-eq)} {(0)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Sentence
                      child: (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [16777215 12526]
                )
              ]
              spids: [16777215 12533]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [12437]
        )
      spids: [12432 12436]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:N_EXIT_THINGS spids:[12543])
          op: Equal
          rhs: {(0)}
          spids: [12543]
        )
      ]
      spids: [12543]
    )
    (command.FuncDef
      name: exit_function
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:n spids:[12556])
                  op: Equal
                  rhs: {(0)}
                  spids: [12556]
                )
              ]
              spids: [12554]
            )
            (command.WhileUntil
              keyword: <KW_While while>
              cond: [
                (command.Sentence
                  child: 
                    (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$n'))} {(-lt)} 
                      {(DQ ($ VSub_DollarName '$N_EXIT_THINGS'))} {(Lit_Other ']')}
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.Subshell
                      child: 
                        (command.AndOr
                          ops: [Op_DPipe]
                          children: [
                            (command.SimpleCommand
                              words: [
                                {(eval)}
                                {
                                  (word_part.CommandSubPart
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(eval)} {(echo)} 
                                            {
                                              (word_part.EscapedLiteralPart
                                                token: <Lit_EscapedChar '\\$'>
                                              ) (Lit_LBrace '{') (EXIT_THING_) ($ VSub_DollarName '$n') (Lit_RBrace '}')
                                            }
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [12583 12593]
                                  )
                                }
                              ]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_Great '2>'>
                                  fd: 2
                                  arg_word: {(/dev/null)}
                                )
                              ]
                            )
                            (C {(true)})
                          ]
                        )
                      spids: [12580 12601]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:n spids:[12604])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.ArithSubPart
                                  anode: 
                                    (arith_expr.ArithBinary
                                      op_id: Arith_Plus
                                      left: (arith_expr.ArithWord w:{($ VSub_DollarName '$n')})
                                      right: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                    )
                                  spids: [12606 12615]
                                )
                              )
                            }
                          spids: [12604]
                        )
                      ]
                      spids: [12604]
                    )
                  ]
                  spids: [12577 12619]
                )
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:N_EXIT_THINGS spids:[12622])
                  op: Equal
                  rhs: {(0)}
                  spids: [12622]
                )
              ]
              spids: [12622]
            )
          ]
          spids: [12551]
        )
      spids: [12546 12550]
    )
    (C {(trap)} {(DQ (exit_function))} {(0)})
    (C {(trap)} {(DQ ('exit 129'))} {(1)})
    (C {(trap)} 
      {
        (DQ ('error 130 INTERRUPTED ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
          ('Interrupt caught ... exiting') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
        )
      } {(2)}
    )
    (C {(trap)} {(DQ ('exit 131'))} {(3)})
    (C {(trap)} {(DQ ('exit 143'))} {(15)})
    (command.FuncDef
      name: on_exit
      body: 
        (command.BraceGroup
          children: [
            (C {(eval)} 
              {
                (word_part.CommandSubPart
                  command_list: 
                    (command.CommandList
                      children: [
                        (C {(echo)} 
                          {(EXIT_THING_) (${ VSub_Name N_EXIT_THINGS) (Lit_Other '=') 
                            (word_part.EscapedLiteralPart
                              token: <Lit_EscapedChar '\\"'>
                            ) ($ VSub_Number '$1') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                          }
                        )
                      ]
                    )
                  left_token: <Left_Backtick '`'>
                  spids: [12682 12693]
                )
              }
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:N_EXIT_THINGS spids:[12696])
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (word_part.ArithSubPart
                          anode: 
                            (arith_expr.ArithBinary
                              op_id: Arith_Plus
                              left: (arith_expr.ArithWord w:{($ VSub_DollarName '$N_EXIT_THINGS')})
                              right: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                            )
                          spids: [12698 12707]
                        )
                      )
                    }
                  spids: [12696]
                )
              ]
              spids: [12696]
            )
          ]
          spids: [12677]
        )
      spids: [12672 12676]
    )
    (command.FuncDef
      name: install_fakechroot_tools
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$VARIANT'))} {(Lit_Other '=')} 
                          {(DQ (fakechroot))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(export)} 
                      {(Lit_VarLike 'PATH=') (/usr/sbin) (Lit_Other ':') (/sbin) (Lit_Other ':') 
                        ($ VSub_DollarName '$PATH')
                      }
                    )
                  ]
                  spids: [16777215 12742]
                )
              ]
              spids: [16777215 12755]
            )
            (C {(mv)} {(DQ ($ VSub_DollarName '$TARGET') (/sbin/ldconfig))} 
              {(DQ ($ VSub_DollarName '$TARGET') (/sbin/ldconfig.REAL))}
            )
            (command.SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ ('#!/bin/sh\n') ('echo\n') ('echo ') 
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('Warning: Fake ldconfig called, doing nothing') 
                    (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                  )
                }
              ]
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {(DQ ($ VSub_DollarName '$TARGET') (/sbin/ldconfig))}
                )
              ]
            )
            (C {(chmod)} {(755)} {(DQ ($ VSub_DollarName '$TARGET') (/sbin/ldconfig))})
            (command.SimpleCommand
              words: [{(echo)} {(DQ ('/sbin/ldconfig\n') ('/sbin/ldconfig.REAL\n') (fakechroot))}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {(DQ ($ VSub_DollarName '$TARGET') (/var/lib/dpkg/diversions))}
                )
              ]
            )
            (C {(mv)} {(DQ ($ VSub_DollarName '$TARGET') (/usr/bin/ldd))} 
              {(DQ ($ VSub_DollarName '$TARGET') (/usr/bin/ldd.REAL))}
            )
            (command.SimpleCommand
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(SQ <END>)}
                  here_end_span_id: 13007
                  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.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {(DQ ($ VSub_DollarName '$TARGET') (/usr/bin/ldd))}
                )
              ]
            )
            (C {(chmod)} {(755)} {(DQ ($ VSub_DollarName '$TARGET') (/usr/bin/ldd))})
            (command.SimpleCommand
              words: [{(echo)} {(DQ ('/usr/bin/ldd\n') ('/usr/bin/ldd.REAL\n') (fakechroot))}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {(DQ ($ VSub_DollarName '$TARGET') (/var/lib/dpkg/diversions))}
                )
              ]
            )
          ]
          spids: [12722]
        )
      spids: [12717 12721]
    )
  ]
)