(CommandList
  children: [
    (FuncDef
      name: usage
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 146
                  stdin_parts: [
                    ('usage: ')
                    (CommandSubPart
                      command_list: (CommandList children:[(C {(basename)} {($ VSub_Number '$0')})])
                      left_token: <Left_Backtick '`'>
                      spids: [108 112]
                    )
                    (' [options] command ... [path]\n')
                    ('\n')
                    ('Options:\n')
                    ('  -b basedir   -- Operate on a system mounted at basedir\n')
                    ('                  (default: /)\n')
                    ('  -d workdir   -- Store working files in workdir\n')
                    ('                  (default: /var/db/freebsd-update/)\n')
                    ('  -f conffile  -- Read configuration options from conffile\n')
                    ('                  (default: /etc/freebsd-update.conf)\n')
                    ('  -F           -- Force a fetch operation to proceed\n')
                    ('  -k KEY       -- Trust an RSA key with SHA256 hash of KEY\n')
                    ('  -r release   -- Target for upgrade (e.g., 11.1-RELEASE)\n')
                    ('  -s server    -- Server from which to fetch updates\n')
                    ('                  (default: update.FreeBSD.org)\n')
                    ('  -t address   -- Mail output of cron command, if any, to address\n')
                    ('                  (default: root)\n')
                    ('  --not-running-from-cron\n')
                    ('               -- Run without a tty, for use by automated tools\n')
                    ('  --currently-running release\n')
                    ('               -- Update as if currently running this release\n')
                    ('Commands:\n')
                    ('  fetch        -- Fetch updates from server\n')
                    ('  cron         -- Sleep rand(3600) seconds, fetch updates, and send an\n')
                    ('                  email if updates were found\n')
                    (
'  upgrade      -- Fetch upgrades to FreeBSD version specified via -r option\n'
                    )
                    ('  install      -- Install downloaded updates or upgrades\n')
                    ('  rollback     -- Uninstall most recently installed updates\n')
                    ('  IDS          -- Compare the system against an index of ')
                    (Right_DoubleQuote '"')
                    ('known good')
                    (Right_DoubleQuote '"')
                    (' files.\n')
                  ]
                )
              ]
            )
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
          ]
          spids: [99]
        )
      spids: [94 98]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CONFIGOPTIONS)
          op: Equal
          rhs: 
            {
              (DQ ('KEYPRINT WORKDIR SERVERNAME MAILTO ALLOWADD ALLOWDELETE\n') 
                ('    KEEPMODIFIEDMETADATA COMPONENTS IGNOREPATHS UPDATEIFUNMODIFIED\n') ('    BASEDIR VERBOSELEVEL TARGETRELEASE STRICTCOMPONENTS MERGECHANGES\n') 
                ('    IDSIGNOREPATHS BACKUPKERNEL BACKUPKERNELDIR BACKUPKERNELSYMBOLFILES')
              )
            }
          spids: [223]
        )
      ]
      spids: [223]
    )
    (FuncDef
      name: nullconfig
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: X
              iter_words: [{(${ VSub_Name CONFIGOPTIONS)}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [(C {(eval)} {(${ VSub_Name X) (Lit_Other '=') (DQ )})]
                  spids: [254 267]
                )
              spids: [248 252]
            )
          ]
          spids: [240]
        )
      spids: [235 239]
    )
    (FuncDef
      name: saveconfig
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: X
              iter_words: [{(${ VSub_Name CONFIGOPTIONS)}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(eval)} 
                      {(${ VSub_Name X) (Lit_VarLike '_saved=') 
                        (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (${ VSub_Name X)
                      }
                    )
                  ]
                  spids: [294 309]
                )
              spids: [288 292]
            )
          ]
          spids: [280]
        )
      spids: [275 279]
    )
    (FuncDef
      name: mergeconfig
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: X
              iter_words: [{(${ VSub_Name CONFIGOPTIONS)}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(eval)} 
                      {(Lit_VarLike '_=') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
                        (${ VSub_Name X) (_saved)
                      }
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [
                                    (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name _))} {(Lit_Other ']')})
                                  ]
                                  negated: T
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(eval)} 
                              {(${ VSub_Name X) (Lit_Other '=') 
                                (EscapedLiteralPart
                                  token: <Lit_EscapedChar '\\$'>
                                ) (${ VSub_Name X) (_saved)
                              }
                            )
                          ]
                          spids: [16777215 366]
                        )
                      ]
                      spids: [16777215 382]
                    )
                  ]
                  spids: [336 385]
                )
              spids: [330 334]
            )
          ]
          spids: [322]
        )
      spids: [317 321]
    )
    (FuncDef
      name: config_KeyPrint
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-z)} {(${ VSub_Name KEYPRINT)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:KEYPRINT)
                          op: Equal
                          rhs: {($ VSub_Number '$1')}
                          spids: [417]
                        )
                      ]
                      spids: [417]
                    )
                  ]
                  spids: [16777215 414]
                )
              ]
              else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
              spids: [421 429]
            )
          ]
          spids: [398]
        )
      spids: [393 397]
    )
    (FuncDef
      name: config_WorkDir
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-z)} {(${ VSub_Name WORKDIR)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:WORKDIR)
                          op: Equal
                          rhs: {($ VSub_Number '$1')}
                          spids: [461]
                        )
                      ]
                      spids: [461]
                    )
                  ]
                  spids: [16777215 458]
                )
              ]
              else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
              spids: [465 473]
            )
          ]
          spids: [442]
        )
      spids: [437 441]
    )
    (FuncDef
      name: config_ServerName
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-z)} {(${ VSub_Name SERVERNAME)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:SERVERNAME)
                          op: Equal
                          rhs: {($ VSub_Number '$1')}
                          spids: [505]
                        )
                      ]
                      spids: [505]
                    )
                  ]
                  spids: [16777215 502]
                )
              ]
              else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
              spids: [509 517]
            )
          ]
          spids: [486]
        )
      spids: [481 485]
    )
    (FuncDef
      name: config_MailTo
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-z)} {(${ VSub_Name MAILTO)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:MAILTO)
                          op: Equal
                          rhs: {($ VSub_Number '$1')}
                          spids: [549]
                        )
                      ]
                      spids: [549]
                    )
                  ]
                  spids: [16777215 546]
                )
              ]
              else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
              spids: [553 561]
            )
          ]
          spids: [530]
        )
      spids: [525 529]
    )
    (FuncDef
      name: config_AllowAdd
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-z)} {(${ VSub_Name ALLOWADD)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Case
                      to_match: {($ VSub_Number '$1')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Lit_Other '[') (Yy) (Lit_Other ']') (Lit_Other '[') (Ee) (Lit_Other ']') 
                              (Lit_Other '[') (Ss) (Lit_Other ']')
                            }
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:ALLOWADD)
                                  op: Equal
                                  rhs: {(yes)}
                                  spids: [615]
                                )
                              ]
                              spids: [615]
                            )
                          ]
                          spids: [603 612 619 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(Lit_Other '[') (Nn) (Lit_Other ']') (Lit_Other '[') (Oo) (Lit_Other ']')}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:ALLOWADD)
                                  op: Equal
                                  rhs: {(no)}
                                  spids: [631]
                                )
                              ]
                              spids: [631]
                            )
                          ]
                          spids: [622 628 635 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                          spids: [638 639 647 16777215]
                        )
                      ]
                      spids: [596 600 650]
                    )
                  ]
                  spids: [16777215 593]
                )
              ]
              else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
              spids: [653 661]
            )
          ]
          spids: [577]
        )
      spids: [572 576]
    )
    (FuncDef
      name: config_AllowDelete
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(${ VSub_Name ALLOWDELETE)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Case
                      to_match: {($ VSub_Number '$1')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Lit_Other '[') (Yy) (Lit_Other ']') (Lit_Other '[') (Ee) (Lit_Other ']') 
                              (Lit_Other '[') (Ss) (Lit_Other ']')
                            }
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:ALLOWDELETE)
                                  op: Equal
                                  rhs: {(yes)}
                                  spids: [712]
                                )
                              ]
                              spids: [712]
                            )
                          ]
                          spids: [700 709 716 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(Lit_Other '[') (Nn) (Lit_Other ']') (Lit_Other '[') (Oo) (Lit_Other ']')}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:ALLOWDELETE)
                                  op: Equal
                                  rhs: {(no)}
                                  spids: [728]
                                )
                              ]
                              spids: [728]
                            )
                          ]
                          spids: [719 725 732 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                          spids: [735 736 744 16777215]
                        )
                      ]
                      spids: [693 697 747]
                    )
                  ]
                  spids: [16777215 690]
                )
              ]
              else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
              spids: [750 758]
            )
          ]
          spids: [674]
        )
      spids: [669 673]
    )
    (FuncDef
      name: config_KeepModifiedMetadata
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(${ VSub_Name KEEPMODIFIEDMETADATA)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Case
                      to_match: {($ VSub_Number '$1')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Lit_Other '[') (Yy) (Lit_Other ']') (Lit_Other '[') (Ee) (Lit_Other ']') 
                              (Lit_Other '[') (Ss) (Lit_Other ']')
                            }
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:KEEPMODIFIEDMETADATA)
                                  op: Equal
                                  rhs: {(yes)}
                                  spids: [815]
                                )
                              ]
                              spids: [815]
                            )
                          ]
                          spids: [803 812 819 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(Lit_Other '[') (Nn) (Lit_Other ']') (Lit_Other '[') (Oo) (Lit_Other ']')}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:KEEPMODIFIEDMETADATA)
                                  op: Equal
                                  rhs: {(no)}
                                  spids: [831]
                                )
                              ]
                              spids: [831]
                            )
                          ]
                          spids: [822 828 835 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                          spids: [838 839 847 16777215]
                        )
                      ]
                      spids: [796 800 850]
                    )
                  ]
                  spids: [16777215 793]
                )
              ]
              else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
              spids: [853 861]
            )
          ]
          spids: [777]
        )
      spids: [772 776]
    )
    (FuncDef
      name: config_Components
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: C
              iter_words: [{($ VSub_At '$@')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$C'))} {(Lit_Other '=')} 
                                  {(DQ (src))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-e)} {(/usr/src/COPYRIGHT)} 
                                          {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:COMPONENTS)
                                          op: Equal
                                          rhs: {(DQ (${ VSub_Name COMPONENTS) (' ') (${ VSub_Name C))}
                                          spids: [923]
                                        )
                                      ]
                                      spids: [923]
                                    )
                                  ]
                                  spids: [16777215 920]
                                )
                              ]
                              else_action: [(C {(echo)} {(DQ ('src component not installed, skipped'))})]
                              spids: [935 945]
                            )
                          ]
                          spids: [16777215 906]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:COMPONENTS)
                              op: Equal
                              rhs: {(DQ (${ VSub_Name COMPONENTS) (' ') (${ VSub_Name C))}
                              spids: [951]
                            )
                          ]
                          spids: [951]
                        )
                      ]
                      spids: [948 963]
                    )
                  ]
                  spids: [886 966]
                )
              spids: [882 884]
            )
          ]
          spids: [874]
        )
      spids: [869 873]
    )
    (FuncDef
      name: config_IgnorePaths
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: C
              iter_words: [{($ VSub_At '$@')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:IGNOREPATHS)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name IGNOREPATHS) (' ') (${ VSub_Name C))}
                          spids: [994]
                        )
                      ]
                      spids: [994]
                    )
                  ]
                  spids: [991 1006]
                )
              spids: [987 989]
            )
          ]
          spids: [979]
        )
      spids: [974 978]
    )
    (FuncDef
      name: config_IDSIgnorePaths
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: C
              iter_words: [{($ VSub_At '$@')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:IDSIGNOREPATHS)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name IDSIGNOREPATHS) (' ') (${ VSub_Name C))}
                          spids: [1034]
                        )
                      ]
                      spids: [1034]
                    )
                  ]
                  spids: [1031 1046]
                )
              spids: [1027 1029]
            )
          ]
          spids: [1019]
        )
      spids: [1014 1018]
    )
    (FuncDef
      name: config_UpdateIfUnmodified
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: C
              iter_words: [{($ VSub_At '$@')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:UPDATEIFUNMODIFIED)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name UPDATEIFUNMODIFIED) (' ') (${ VSub_Name C))}
                          spids: [1077]
                        )
                      ]
                      spids: [1077]
                    )
                  ]
                  spids: [1074 1089]
                )
              spids: [1070 1072]
            )
          ]
          spids: [1062]
        )
      spids: [1057 1061]
    )
    (FuncDef
      name: config_MergeChanges
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: C
              iter_words: [{($ VSub_At '$@')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:MERGECHANGES)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name MERGECHANGES) (' ') (${ VSub_Name C))}
                          spids: [1120]
                        )
                      ]
                      spids: [1120]
                    )
                  ]
                  spids: [1117 1132]
                )
              spids: [1113 1115]
            )
          ]
          spids: [1105]
        )
      spids: [1100 1104]
    )
    (FuncDef
      name: config_BaseDir
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-z)} {(${ VSub_Name BASEDIR)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:BASEDIR)
                          op: Equal
                          rhs: {($ VSub_Number '$1')}
                          spids: [1164]
                        )
                      ]
                      spids: [1164]
                    )
                  ]
                  spids: [16777215 1161]
                )
              ]
              else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
              spids: [1168 1176]
            )
          ]
          spids: [1145]
        )
      spids: [1140 1144]
    )
    (FuncDef
      name: config_StrictComponents
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(${ VSub_Name STRICTCOMPONENTS)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Case
                      to_match: {($ VSub_Number '$1')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Lit_Other '[') (Yy) (Lit_Other ']') (Lit_Other '[') (Ee) (Lit_Other ']') 
                              (Lit_Other '[') (Ss) (Lit_Other ']')
                            }
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:STRICTCOMPONENTS)
                                  op: Equal
                                  rhs: {(yes)}
                                  spids: [1233]
                                )
                              ]
                              spids: [1233]
                            )
                          ]
                          spids: [1221 1230 1237 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(Lit_Other '[') (Nn) (Lit_Other ']') (Lit_Other '[') (Oo) (Lit_Other ']')}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:STRICTCOMPONENTS)
                                  op: Equal
                                  rhs: {(no)}
                                  spids: [1249]
                                )
                              ]
                              spids: [1249]
                            )
                          ]
                          spids: [1240 1246 1253 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                          spids: [1256 1257 1265 16777215]
                        )
                      ]
                      spids: [1214 1218 1268]
                    )
                  ]
                  spids: [16777215 1211]
                )
              ]
              else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
              spids: [1271 1279]
            )
          ]
          spids: [1195]
        )
      spids: [1190 1194]
    )
    (FuncDef
      name: config_TargetRelease
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(${ VSub_Name TARGETRELEASE)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:TARGETRELEASE)
                          op: Equal
                          rhs: {($ VSub_Number '$1')}
                          spids: [1311]
                        )
                      ]
                      spids: [1311]
                    )
                  ]
                  spids: [16777215 1308]
                )
              ]
              else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
              spids: [1315 1323]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(echo)} {(${ VSub_Name TARGETRELEASE)})
                            (C {(grep)} {(-qE)} {(SQ <'^[0-9.]+$'>)})
                          ]
                          negated: F
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:TARGETRELEASE)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name TARGETRELEASE) (-RELEASE))}
                          spids: [1348]
                        )
                      ]
                      spids: [1348]
                    )
                  ]
                  spids: [16777215 1345]
                )
              ]
              spids: [16777215 1357]
            )
          ]
          spids: [1292]
        )
      spids: [1287 1291]
    )
    (FuncDef
      name: config_VerboseLevel
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(${ VSub_Name VERBOSELEVEL)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Case
                      to_match: {($ VSub_Number '$1')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Lit_Other '[') (Dd) (Lit_Other ']') (Lit_Other '[') (Ee) (Lit_Other ']') 
                              (Lit_Other '[') (Bb) (Lit_Other ']') (Lit_Other '[') (Uu) (Lit_Other ']') (Lit_Other '[') (Gg) (Lit_Other ']')
                            }
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:VERBOSELEVEL)
                                  op: Equal
                                  rhs: {(debug)}
                                  spids: [1414]
                                )
                              ]
                              spids: [1414]
                            )
                          ]
                          spids: [1396 1411 1418 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(Lit_Other '[') (Nn) (Lit_Other ']') (Lit_Other '[') (Oo) (Lit_Other ']') 
                              (Lit_Other '[') (Ss) (Lit_Other ']') (Lit_Other '[') (Tt) (Lit_Other ']') (Lit_Other '[') (Aa) (Lit_Other ']') 
                              (Lit_Other '[') (Tt) (Lit_Other ']') (Lit_Other '[') (Ss) (Lit_Other ']')
                            }
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:VERBOSELEVEL)
                                  op: Equal
                                  rhs: {(nostats)}
                                  spids: [1445]
                                )
                              ]
                              spids: [1445]
                            )
                          ]
                          spids: [1421 1442 1449 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(Lit_Other '[') (Ss) (Lit_Other ']') (Lit_Other '[') (Tt) (Lit_Other ']') 
                              (Lit_Other '[') (Aa) (Lit_Other ']') (Lit_Other '[') (Tt) (Lit_Other ']') (Lit_Other '[') (Ss) (Lit_Other ']')
                            }
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:VERBOSELEVEL)
                                  op: Equal
                                  rhs: {(stats)}
                                  spids: [1470]
                                )
                              ]
                              spids: [1470]
                            )
                          ]
                          spids: [1452 1467 1474 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                          spids: [1477 1478 1486 16777215]
                        )
                      ]
                      spids: [1389 1393 1489]
                    )
                  ]
                  spids: [16777215 1386]
                )
              ]
              else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
              spids: [1492 1500]
            )
          ]
          spids: [1370]
        )
      spids: [1365 1369]
    )
    (FuncDef
      name: config_BackupKernel
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(${ VSub_Name BACKUPKERNEL)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Case
                      to_match: {($ VSub_Number '$1')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Lit_Other '[') (Yy) (Lit_Other ']') (Lit_Other '[') (Ee) (Lit_Other ']') 
                              (Lit_Other '[') (Ss) (Lit_Other ']')
                            }
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:BACKUPKERNEL)
                                  op: Equal
                                  rhs: {(yes)}
                                  spids: [1548]
                                )
                              ]
                              spids: [1548]
                            )
                          ]
                          spids: [1536 1545 1552 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(Lit_Other '[') (Nn) (Lit_Other ']') (Lit_Other '[') (Oo) (Lit_Other ']')}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:BACKUPKERNEL)
                                  op: Equal
                                  rhs: {(no)}
                                  spids: [1564]
                                )
                              ]
                              spids: [1564]
                            )
                          ]
                          spids: [1555 1561 1568 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                          spids: [1571 1572 1580 16777215]
                        )
                      ]
                      spids: [1529 1533 1583]
                    )
                  ]
                  spids: [16777215 1526]
                )
              ]
              else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
              spids: [1586 1594]
            )
          ]
          spids: [1510]
        )
      spids: [1505 1509]
    )
    (FuncDef
      name: config_BackupKernelDir
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(${ VSub_Name BACKUPKERNELDIR)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(DQ ('BackupKernelDir set to empty dir'))})
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [16777215 1636]
                        )
                      ]
                      spids: [16777215 1651]
                    )
                    (Case
                      to_match: {($ VSub_Number '$1')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(/)}
                            {(/bin)}
                            {(/boot)}
                            {(/etc)}
                            {(/lib)}
                            {(/libexec)}
                            {(/sbin)}
                            {(/usr)}
                            {(/var)}
                          ]
                          action: [
                            (C {(echo)} 
                              {(DQ ('BackupKernelDir set to invalid path ') ($ VSub_Number '$1'))}
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [1674 1691 1707 16777215]
                        )
                        (case_arm
                          pat_list: [{(/) (Lit_Other '*')}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:BACKUPKERNELDIR)
                                  op: Equal
                                  rhs: {($ VSub_Number '$1')}
                                  spids: [1715]
                                )
                              ]
                              spids: [1715]
                            )
                          ]
                          spids: [1710 1712 1719 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ ('BackupKernelDir (') ($ VSub_Number '$1') 
                                  (') is not an absolute path')
                                )
                              }
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [1722 1723 1740 16777215]
                        )
                      ]
                      spids: [1667 1671 1743]
                    )
                  ]
                  spids: [16777215 1620]
                )
              ]
              else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
              spids: [1746 1754]
            )
          ]
          spids: [1604]
        )
      spids: [1599 1603]
    )
    (FuncDef
      name: config_BackupKernelSymbolFiles
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(${ VSub_Name BACKUPKERNELSYMBOLFILES)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Case
                      to_match: {($ VSub_Number '$1')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Lit_Other '[') (Yy) (Lit_Other ']') (Lit_Other '[') (Ee) (Lit_Other ']') 
                              (Lit_Other '[') (Ss) (Lit_Other ']')
                            }
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:BACKUPKERNELSYMBOLFILES)
                                  op: Equal
                                  rhs: {(yes)}
                                  spids: [1802]
                                )
                              ]
                              spids: [1802]
                            )
                          ]
                          spids: [1790 1799 1806 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(Lit_Other '[') (Nn) (Lit_Other ']') (Lit_Other '[') (Oo) (Lit_Other ']')}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:BACKUPKERNELSYMBOLFILES)
                                  op: Equal
                                  rhs: {(no)}
                                  spids: [1818]
                                )
                              ]
                              spids: [1818]
                            )
                          ]
                          spids: [1809 1815 1822 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                          spids: [1825 1826 1834 16777215]
                        )
                      ]
                      spids: [1783 1787 1837]
                    )
                  ]
                  spids: [16777215 1780]
                )
              ]
              else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
              spids: [1840 1848]
            )
          ]
          spids: [1764]
        )
      spids: [1759 1763]
    )
    (FuncDef
      name: configline
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-eq)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(ControlFlow token:<ControlFlow_Return return>)]
                  spids: [16777215 1877]
                )
              ]
              spids: [16777215 1883]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OPT)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1887]
                )
              ]
              spids: [1887]
            )
            (C {(shift)})
            (C {(config_) (${ VSub_Name OPT)} {($ VSub_At '$@')})
          ]
          spids: [1861]
        )
      spids: [1856 1860]
    )
    (FuncDef
      name: init_params
      body: 
        (BraceGroup
          children: [
            (C {(nullconfig)})
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:CONFFILE) op:Equal rhs:{(DQ )} spids:[1934])]
              spids: [1934]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:COMMANDS) op:Equal rhs:{(DQ )} spids:[1944])]
              spids: [1944]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:FORCEFETCH) op:Equal rhs:{(0)} spids:[1954])]
              spids: [1954]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:NOTTYOK) op:Equal rhs:{(0)} spids:[1963])]
              spids: [1963]
            )
          ]
          spids: [1919]
        )
      spids: [1914 1918]
    )
    (FuncDef
      name: parse_cmdline
      body: 
        (BraceGroup
          children: [
            (WhileUntil
              keyword: <KW_While while>
              cond: [
                (Sentence
                  child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(Lit_Other ']')})
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(DQ ($ VSub_Number '$1'))}
                      arms: [
                        (case_arm
                          pat_list: [{(-f)}]
                          action: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-eq)} {(1)} 
                                          {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [(Sentence child:(C {(usage)}) terminator:<Op_Semi ';'>)]
                                  spids: [16777215 2026]
                                )
                              ]
                              spids: [16777215 2031]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} 
                                          {(DQ (${ VSub_Name CONFFILE))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [(Sentence child:(C {(usage)}) terminator:<Op_Semi ';'>)]
                                  spids: [16777215 2051]
                                )
                              ]
                              spids: [16777215 2056]
                            )
                            (Sentence
                              child: (C {(shift)})
                              terminator: <Op_Semi ';'>
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:CONFFILE)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$1'))}
                                  spids: [2062]
                                )
                              ]
                              spids: [2062]
                            )
                          ]
                          spids: [2009 2010 2068 16777215]
                        )
                        (case_arm
                          pat_list: [{(-F)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:FORCEFETCH)
                                  op: Equal
                                  rhs: {(1)}
                                  spids: [2075]
                                )
                              ]
                              spids: [2075]
                            )
                          ]
                          spids: [2071 2072 2079 16777215]
                        )
                        (case_arm
                          pat_list: [{(--not-running-from-cron)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:NOTTYOK)
                                  op: Equal
                                  rhs: {(1)}
                                  spids: [2086]
                                )
                              ]
                              spids: [2086]
                            )
                          ]
                          spids: [2082 2083 2090 16777215]
                        )
                        (case_arm
                          pat_list: [{(--currently-running)}]
                          action: [
                            (Sentence
                              child: (C {(shift)})
                              terminator: <Op_Semi ';'>
                            )
                            (C {(export)} {(Lit_VarLike 'UNAME_r=') (DQ ($ VSub_Number '$1'))})
                          ]
                          spids: [2093 2094 2108 16777215]
                        )
                        (case_arm
                          pat_list: [{(-b)}]
                          action: [
                            (Sentence
                              child: 
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-eq)} {(1)} 
                                              {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [(Sentence child:(C {(usage)}) terminator:<Op_Semi ';'>)]
                                      spids: [16777215 2133]
                                    )
                                  ]
                                  spids: [16777215 2138]
                                )
                              terminator: <Op_Semi ';'>
                            )
                            (C {(shift)})
                            (AndOr
                              ops: [Op_DPipe]
                              children: [(C {(config_BaseDir)} {($ VSub_Number '$1')}) (C {(usage)})]
                            )
                          ]
                          spids: [2116 2117 2153 16777215]
                        )
                        (case_arm
                          pat_list: [{(-d)}]
                          action: [
                            (Sentence
                              child: 
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-eq)} {(1)} 
                                              {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [(Sentence child:(C {(usage)}) terminator:<Op_Semi ';'>)]
                                      spids: [16777215 2173]
                                    )
                                  ]
                                  spids: [16777215 2178]
                                )
                              terminator: <Op_Semi ';'>
                            )
                            (C {(shift)})
                            (AndOr
                              ops: [Op_DPipe]
                              children: [(C {(config_WorkDir)} {($ VSub_Number '$1')}) (C {(usage)})]
                            )
                          ]
                          spids: [2156 2157 2193 16777215]
                        )
                        (case_arm
                          pat_list: [{(-k)}]
                          action: [
                            (Sentence
                              child: 
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-eq)} {(1)} 
                                              {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [(Sentence child:(C {(usage)}) terminator:<Op_Semi ';'>)]
                                      spids: [16777215 2213]
                                    )
                                  ]
                                  spids: [16777215 2218]
                                )
                              terminator: <Op_Semi ';'>
                            )
                            (C {(shift)})
                            (AndOr
                              ops: [Op_DPipe]
                              children: [(C {(config_KeyPrint)} {($ VSub_Number '$1')}) (C {(usage)})]
                            )
                          ]
                          spids: [2196 2197 2233 16777215]
                        )
                        (case_arm
                          pat_list: [{(-s)}]
                          action: [
                            (Sentence
                              child: 
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-eq)} {(1)} 
                                              {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [(Sentence child:(C {(usage)}) terminator:<Op_Semi ';'>)]
                                      spids: [16777215 2253]
                                    )
                                  ]
                                  spids: [16777215 2258]
                                )
                              terminator: <Op_Semi ';'>
                            )
                            (C {(shift)})
                            (AndOr
                              ops: [Op_DPipe]
                              children: [(C {(config_ServerName)} {($ VSub_Number '$1')}) (C {(usage)})]
                            )
                          ]
                          spids: [2236 2237 2273 16777215]
                        )
                        (case_arm
                          pat_list: [{(-r)}]
                          action: [
                            (Sentence
                              child: 
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-eq)} {(1)} 
                                              {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [(Sentence child:(C {(usage)}) terminator:<Op_Semi ';'>)]
                                      spids: [16777215 2293]
                                    )
                                  ]
                                  spids: [16777215 2298]
                                )
                              terminator: <Op_Semi ';'>
                            )
                            (C {(shift)})
                            (AndOr
                              ops: [Op_DPipe]
                              children: [
                                (C {(config_TargetRelease)} {($ VSub_Number '$1')})
                                (C {(usage)})
                              ]
                            )
                          ]
                          spids: [2276 2277 2313 16777215]
                        )
                        (case_arm
                          pat_list: [{(-t)}]
                          action: [
                            (Sentence
                              child: 
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-eq)} {(1)} 
                                              {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [(Sentence child:(C {(usage)}) terminator:<Op_Semi ';'>)]
                                      spids: [16777215 2333]
                                    )
                                  ]
                                  spids: [16777215 2338]
                                )
                              terminator: <Op_Semi ';'>
                            )
                            (C {(shift)})
                            (AndOr
                              ops: [Op_DPipe]
                              children: [(C {(config_MailTo)} {($ VSub_Number '$1')}) (C {(usage)})]
                            )
                          ]
                          spids: [2316 2317 2353 16777215]
                        )
                        (case_arm
                          pat_list: [{(-v)}]
                          action: [
                            (Sentence
                              child: 
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-eq)} {(1)} 
                                              {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [(Sentence child:(C {(usage)}) terminator:<Op_Semi ';'>)]
                                      spids: [16777215 2373]
                                    )
                                  ]
                                  spids: [16777215 2378]
                                )
                              terminator: <Op_Semi ';'>
                            )
                            (C {(shift)})
                            (AndOr
                              ops: [Op_DPipe]
                              children: [
                                (C {(config_VerboseLevel)} {($ VSub_Number '$1')})
                                (C {(usage)})
                              ]
                            )
                          ]
                          spids: [2356 2357 2393 16777215]
                        )
                        (case_arm
                          pat_list: [{(--debug)}]
                          action: [
                            (AndOr
                              ops: [Op_DPipe]
                              children: [(C {(config_VerboseLevel)} {(debug)}) (C {(usage)})]
                            )
                          ]
                          spids: [2401 2402 2414 16777215]
                        )
                        (case_arm
                          pat_list: [{(--no-stats)}]
                          action: [
                            (AndOr
                              ops: [Op_DPipe]
                              children: [(C {(config_VerboseLevel)} {(nostats)}) (C {(usage)})]
                            )
                          ]
                          spids: [2417 2418 2430 16777215]
                        )
                        (case_arm
                          pat_list: [{(cron)} {(fetch)} {(upgrade)} {(install)} {(rollback)} {(IDS)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:COMMANDS)
                                  op: Equal
                                  rhs: {(DQ (${ VSub_Name COMMANDS) (' ') ($ VSub_Number '$1'))}
                                  spids: [2462]
                                )
                              ]
                              spids: [2462]
                            )
                          ]
                          spids: [2438 2459 2472 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [(C {(usage)})]
                          spids: [2480 2481 2487 16777215]
                        )
                      ]
                      spids: [1996 2002 2490]
                    )
                    (C {(shift)})
                  ]
                  spids: [1993 2496]
                )
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name COMMANDS))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(usage)})]
                  spids: [16777215 2519]
                )
              ]
              spids: [16777215 2525]
            )
          ]
          spids: [1977]
        )
      spids: [1972 1976]
    )
    (FuncDef
      name: parse_conffile
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {(DQ (${ VSub_Name CONFFILE))} 
                              {(Lit_Other ']')}
                            )
                            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-r)} {(DQ (${ VSub_Name CONFFILE))} 
                              {(Lit_Other ']')}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} {(DQ ('File does not exist '))})
                    (C {(echo)} {(-n)} {(DQ ('or is not readable: '))})
                    (C {(echo)} {(${ VSub_Name CONFFILE)})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 2582]
                )
              ]
              spids: [16777215 2615]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name CONFFILE))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CONFFILE)
                          op: Equal
                          rhs: {(DQ (/etc/freebsd-update.conf))}
                          spids: [2649]
                        )
                      ]
                      spids: [2649]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-r)} {(DQ (${ VSub_Name CONFFILE))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Return return>)]
                          spids: [16777215 2672]
                        )
                      ]
                      spids: [16777215 2678]
                    )
                  ]
                  spids: [16777215 2646]
                )
              ]
              spids: [16777215 2681]
            )
            (C {(saveconfig)})
            (C {(nullconfig)})
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:L) op:Equal rhs:{(0)} spids:[2708])]
              spids: [2708]
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [(Sentence child:(C {(read)} {(LINE)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:L)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Plus
                                    left: (ArithWord w:{($ VSub_Name '$L')})
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [2723 2730]
                              )
                            }
                          spids: [2722]
                        )
                      ]
                      spids: [2722]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:LINEX)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(echo)} {(DQ (${ VSub_Name LINE))})
                                          (C {(cut)} {(-f)} {(1)} {(-d)} {(SQ <'#'>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [2734 2756]
                              )
                            }
                          spids: [2733]
                        )
                      ]
                      spids: [2733]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [(C {(configline)} {(${ VSub_Name LINEX)})]
                                  negated: T
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ ('Error processing configuration file, line ') ($ VSub_Name '$L') 
                                  (':')
                                )
                              }
                            )
                            (C {(echo)} {(DQ ('==> ') (${ VSub_Name LINE))})
                            (ControlFlow
                              token: <ControlFlow_Exit exit>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [16777215 2770]
                        )
                      ]
                      spids: [16777215 2797]
                    )
                  ]
                  spids: [2719 2800]
                )
              redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(${ VSub_Name CONFFILE)})]
            )
            (C {(mergeconfig)})
          ]
          spids: [2538]
        )
      spids: [2533 2537]
    )
    (FuncDef
      name: default_params
      body: 
        (BraceGroup
          children: [
            (C {(saveconfig)})
            (C {(nullconfig)})
            (C {(config_WorkDir)} {(/var/db/freebsd-update)})
            (C {(config_MailTo)} {(root)})
            (C {(config_AllowAdd)} {(yes)})
            (C {(config_AllowDelete)} {(yes)})
            (C {(config_KeepModifiedMetadata)} {(yes)})
            (C {(config_BaseDir)} {(/)})
            (C {(config_VerboseLevel)} {(stats)})
            (C {(config_StrictComponents)} {(no)})
            (C {(config_BackupKernel)} {(yes)})
            (C {(config_BackupKernelDir)} {(/boot/kernel.old)})
            (C {(config_BackupKernelSymbolFiles)} {(no)})
            (C {(mergeconfig)})
          ]
          spids: [2831]
        )
      spids: [2826 2830]
    )
    (FuncDef
      name: fetch_setup_verboselevel
      body: 
        (BraceGroup
          children: [
            (Case
              to_match: {(${ VSub_Name VERBOSELEVEL)}
              arms: [
                (case_arm
                  pat_list: [{(debug)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:QUIETREDIR)
                          op: Equal
                          rhs: {(DQ (/dev/stderr))}
                          spids: [2938]
                        )
                      ]
                      spids: [2938]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:QUIETFLAG)
                          op: Equal
                          rhs: {(DQ (' '))}
                          spids: [2944]
                        )
                      ]
                      spids: [2944]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:STATSREDIR)
                          op: Equal
                          rhs: {(DQ (/dev/stderr))}
                          spids: [2950]
                        )
                      ]
                      spids: [2950]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:DDSTATS)
                          op: Equal
                          rhs: {(DQ (..))}
                          spids: [2956]
                        )
                      ]
                      spids: [2956]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:XARGST)
                          op: Equal
                          rhs: {(DQ (-t))}
                          spids: [2962]
                        )
                      ]
                      spids: [2962]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:NDEBUG)
                          op: Equal
                          rhs: {(DQ (' '))}
                          spids: [2968]
                        )
                      ]
                      spids: [2968]
                    )
                  ]
                  spids: [2934 2935 2974 16777215]
                )
                (case_arm
                  pat_list: [{(nostats)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:QUIETREDIR)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [2981]
                        )
                      ]
                      spids: [2981]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:QUIETFLAG)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [2986]
                        )
                      ]
                      spids: [2986]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:STATSREDIR)
                          op: Equal
                          rhs: {(DQ (/dev/null))}
                          spids: [2991]
                        )
                      ]
                      spids: [2991]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:DDSTATS)
                          op: Equal
                          rhs: {(DQ (..))}
                          spids: [2997]
                        )
                      ]
                      spids: [2997]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:XARGST)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [3003]
                        )
                      ]
                      spids: [3003]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:NDEBUG)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [3008]
                        )
                      ]
                      spids: [3008]
                    )
                  ]
                  spids: [2977 2978 3013 16777215]
                )
                (case_arm
                  pat_list: [{(stats)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:QUIETREDIR)
                          op: Equal
                          rhs: {(DQ (/dev/null))}
                          spids: [3020]
                        )
                      ]
                      spids: [3020]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:QUIETFLAG)
                          op: Equal
                          rhs: {(DQ (-q))}
                          spids: [3026]
                        )
                      ]
                      spids: [3026]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:STATSREDIR)
                          op: Equal
                          rhs: {(DQ (/dev/stdout))}
                          spids: [3032]
                        )
                      ]
                      spids: [3032]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:DDSTATS)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [3038]
                        )
                      ]
                      spids: [3038]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:XARGST)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [3043]
                        )
                      ]
                      spids: [3043]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:NDEBUG)
                          op: Equal
                          rhs: {(DQ (-n))}
                          spids: [3048]
                        )
                      ]
                      spids: [3048]
                    )
                  ]
                  spids: [3016 3017 3054 16777215]
                )
              ]
              spids: [2925 2931 3057]
            )
          ]
          spids: [2922]
        )
      spids: [2917 2921]
    )
    (FuncDef
      name: fetchupgrade_check_params
      body: 
        (BraceGroup
          children: [
            (C {(export)} 
              {(Lit_VarLike 'HTTP_USER_AGENT=') 
                (DQ ('freebsd-update (') (${ VSub_Name COMMAND) (', ') 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(uname)} {(-r)})])
                    left_token: <Left_Backtick '`'>
                    spids: [3097 3101]
                  ) (')')
                )
              }
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_SERVERNAME_z)
                  op: Equal
                  rhs: {(DQ ('SERVERNAME must be given via command line or configuration file.'))}
                  spids: [3107]
                )
              ]
              spids: [3107]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_KEYPRINT_z)
                  op: Equal
                  rhs: {(DQ ('Key must be given via -k option or configuration file.'))}
                  spids: [3114]
                )
              ]
              spids: [3114]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_KEYPRINT_bad)
                  op: Equal
                  rhs: {(DQ ('Invalid key fingerprint: '))}
                  spids: [3120]
                )
              ]
              spids: [3120]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_WORKDIR_bad)
                  op: Equal
                  rhs: {(DQ ('Directory does not exist or is not writable: '))}
                  spids: [3126]
                )
              ]
              spids: [3126]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_WORKDIR_bad2)
                  op: Equal
                  rhs: {(DQ ('Directory is not on a persistent filesystem: '))}
                  spids: [3132]
                )
              ]
              spids: [3132]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name SERVERNAME))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [3162 3166]
                          ) (': ')
                        )
                      }
                    )
                    (C {(echo)} {(DQ (${ VSub_Name _SERVERNAME_z))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 3154]
                )
              ]
              spids: [16777215 3185]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name KEYPRINT))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [3211 3215]
                          ) (': ')
                        )
                      }
                    )
                    (C {(echo)} {(DQ (${ VSub_Name _KEYPRINT_z))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 3203]
                )
              ]
              spids: [16777215 3234]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(echo)} {(DQ (${ VSub_Name KEYPRINT))})
                            (C {(grep)} {(-qE)} {(DQ ('^[0-9a-f]{64}') (Lit_Other '$'))})
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [3269 3273]
                          ) (': ')
                        )
                      }
                    )
                    (C {(echo)} {(-n)} {(DQ (${ VSub_Name _KEYPRINT_bad))})
                    (C {(echo)} {(${ VSub_Name KEYPRINT)})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 3261]
                )
              ]
              spids: [16777215 3301]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-d)} {(DQ (${ VSub_Name WORKDIR))} {(-a)} {(-w)} 
                              {(DQ (${ VSub_Name WORKDIR))} {(Lit_Other ']')}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [3339 3343]
                          ) (': ')
                        )
                      }
                    )
                    (C {(echo)} {(-n)} {(DQ (${ VSub_Name _WORKDIR_bad))})
                    (C {(echo)} {(${ VSub_Name WORKDIR)})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 3331]
                )
              ]
              spids: [16777215 3371]
            )
            (Case
              to_match: 
                {
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(df)} {(-T)} {(${ VSub_Name WORKDIR)})])
                    left_token: <Left_Backtick '`'>
                    spids: [3376 3384]
                  )
                }
              arms: [
                (case_arm
                  pat_list: [
                    {(Lit_Other '*') (/dev/md) (Lit_Other '[') (0-9) (Lit_Other ']') (Lit_Other '*')}
                    {(Lit_Other '*') (tmpfs) (Lit_Other '*')}
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [3408 3412]
                          ) (': ')
                        )
                      }
                    )
                    (C {(echo)} {(-n)} {(DQ (${ VSub_Name _WORKDIR_bad2))})
                    (C {(echo)} {(${ VSub_Name WORKDIR)})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [3388 3400 3440 16777215]
                )
              ]
              spids: [3374 3386 3443]
            )
            (C {(chmod)} {(700)} {(${ VSub_Name WORKDIR)})
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(cd)} {(${ VSub_Name WORKDIR)})
                (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RELNUM)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(uname)} {(-r)})
                                  (C {(sed)} {(-E)} {(SQ <'s,-p[0-9]+,,'>)})
                                  (C {(sed)} {(-E)} {(SQ <'s,-SECURITY,-RELEASE,'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [3486 3512]
                      )
                    }
                  spids: [3485]
                )
              ]
              spids: [3485]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ARCH)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(uname)} {(-m)})])
                        left_token: <Left_Backtick '`'>
                        spids: [3516 3520]
                      )
                    }
                  spids: [3515]
                )
              ]
              spids: [3515]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:FETCHDIR)
                  op: Equal
                  rhs: {(${ VSub_Name RELNUM) (/) (${ VSub_Name ARCH)}
                  spids: [3523]
                )
              ]
              spids: [3523]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PATCHDIR)
                  op: Equal
                  rhs: {(${ VSub_Name RELNUM) (/) (${ VSub_Name ARCH) (/bp)}
                  spids: [3533]
                )
              ]
              spids: [3533]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BOOTFILE)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(sysctl)} {(-n)} {(kern.bootfile)})]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [3550 3556]
                      )
                    }
                  spids: [3549]
                )
              ]
              spids: [3549]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KERNELDIR)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name BOOTFILE>
                        suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) (kernel)})
                        spids: [3560 3565]
                      )
                    }
                  spids: [3559]
                )
              ]
              spids: [3559]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-d)} {(${ VSub_Name KERNELDIR)} {(Lit_Other ']')})
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Cannot identify running kernel'))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 3583]
                )
              ]
              spids: [16777215 3598]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KERNCONF)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(uname)} {(-i)})])
                        left_token: <Left_Backtick '`'>
                        spids: [3635 3639]
                      )
                    }
                  spids: [3634]
                )
              ]
              spids: [3634]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name KERNCONF)} {(Lit_Other '=')} 
                          {(DQ (SMP-GENERIC))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:KERNCONF)
                          op: Equal
                          rhs: {(SMP)}
                          spids: [3662]
                        )
                      ]
                      spids: [3662]
                    )
                  ]
                  spids: [16777215 3659]
                )
              ]
              spids: [16777215 3666]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(Lit_Other '[')} {(${ VSub_Name KERNCONF)} {(Lit_Other '=')} 
                              {(DQ (GENERIC))} {(Lit_Other ']')}
                            )
                            (C {(Lit_Other '[')} {(${ VSub_Name ARCH)} {(Lit_Other '=')} {(DQ (amd64))} 
                              {(Lit_Other ']')}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [
                                    (C {(sysctl)} {(kern.version)})
                                    (C {(grep)} {(-qE)} {(SQ <'/SMP$'>)})
                                  ]
                                  negated: F
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:KERNCONF)
                                  op: Equal
                                  rhs: {(SMP)}
                                  spids: [3725]
                                )
                              ]
                              spids: [3725]
                            )
                          ]
                          spids: [16777215 3722]
                        )
                      ]
                      spids: [16777215 3729]
                    )
                  ]
                  spids: [16777215 3702]
                )
              ]
              spids: [16777215 3732]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BSPATCH)
                  op: Equal
                  rhs: {(/usr/bin/bspatch)}
                  spids: [3740]
                )
              ]
              spids: [3740]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SHA256)
                  op: Equal
                  rhs: {(/sbin/sha256)}
                  spids: [3744]
                )
              ]
              spids: [3744]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PHTTPGET)
                  op: Equal
                  rhs: {(/usr/libexec/phttpget)}
                  spids: [3748]
                )
              ]
              spids: [3748]
            )
            (C {(fetch_setup_verboselevel)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BDHASH)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [(C {(echo)} {(${ VSub_Name BASEDIR)}) (C {(sha256)} {(-q)})]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [3766 3778]
                      )
                    }
                  spids: [3765]
                )
              ]
              spids: [3765]
            )
          ]
          spids: [3085]
        )
      spids: [3080 3084]
    )
    (FuncDef
      name: fetch_check_params
      body: 
        (BraceGroup
          children: [
            (C {(fetchupgrade_check_params)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name TARGETRELEASE))} 
                              {(Lit_Other ']')}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [3823 3827]
                          ) (': ')
                        )
                      }
                    )
                    (C {(echo)} {(-n)} {(DQ ("-r option is meaningless with 'fetch' command.  "))})
                    (C {(echo)} {(DQ ("(Did you mean 'upgrade' instead?)"))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 3815]
                )
              ]
              spids: [16777215 3853]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-f)} {(${ VSub_Name BDHASH) (-install/kerneldone)} {(-a)} 
                          {($ VSub_Name '$FORCEFETCH')} {(-eq)} {(0)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('You have a partially completed upgrade pending'))})
                    (C {(echo)} {(DQ ("Run '") ($ VSub_Number '$0') (" install' first."))})
                    (C {(echo)} {(DQ ("Run '") ($ VSub_Number '$0') (" fetch -F' to proceed anyway."))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 3883]
                )
              ]
              spids: [16777215 3916]
            )
          ]
          spids: [3791]
        )
      spids: [3786 3790]
    )
    (FuncDef
      name: upgrade_check_params
      body: 
        (BraceGroup
          children: [
            (C {(fetchupgrade_check_params)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NKERNCONF)
                  op: Equal
                  rhs: {(${ VSub_Name KERNCONF)}
                  spids: [3940]
                )
              ]
              spids: [3940]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_TARGETRELEASE_z)
                  op: Equal
                  rhs: {(DQ ('Release target must be specified via -r option.'))}
                  spids: [3951]
                )
              ]
              spids: [3951]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name TARGETRELEASE))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [3980 3984]
                          ) (': ')
                        )
                      }
                    )
                    (C {(echo)} {(DQ (${ VSub_Name _TARGETRELEASE_z))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 3972]
                )
              ]
              spids: [16777215 4003]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name TARGETRELEASE))} {(Lit_Other '=')} 
                          {(DQ (${ VSub_Name RELNUM))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [4040 4044]
                          ) (': ')
                        )
                      }
                    )
                    (C {(echo)} {(DQ ('Cannot upgrade from ') (${ VSub_Name RELNUM) (' to itself'))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 4032]
                )
              ]
              spids: [16777215 4065]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name ALLOWADD))} {(Lit_Other '=')} {(DQ (no))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [4100 4104]
                          ) (': ')
                        )
                      }
                    )
                    (C {(echo)} {(-n)} 
                      {
                        (DQ ('WARNING: ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                          ('AllowAdd no') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' is a bad idea ')
                        )
                      }
                    )
                    (C {(echo)} {(DQ ('when upgrading between releases.'))})
                    (C {(echo)})
                  ]
                  spids: [16777215 4092]
                )
              ]
              spids: [16777215 4132]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name ALLOWDELETE))} {(Lit_Other '=')} 
                          {(DQ (no))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [4162 4166]
                          ) (': ')
                        )
                      }
                    )
                    (C {(echo)} {(-n)} 
                      {
                        (DQ ('WARNING: ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                          ('AllowDelete no') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' is a bad idea ')
                        )
                      }
                    )
                    (C {(echo)} {(DQ ('when upgrading between releases.'))})
                    (C {(echo)})
                  ]
                  spids: [16777215 4154]
                )
              ]
              spids: [16777215 4194]
            )
            (C {(Lit_Other ':')} 
              {
                (BracedVarSub
                  token: <VSub_Name EDITOR>
                  suffix_op: (StringUnary op_id:VTest_ColonEquals arg_word:{(SQ </usr/bin/vi>)})
                  spids: [4204 4210]
                )
              }
            )
          ]
          spids: [3929]
        )
      spids: [3924 3928]
    )
    (FuncDef
      name: install_check_params
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (CommandSubPart
                              command_list: (CommandList children:[(C {(id)} {(-u)})])
                              left_token: <Left_Backtick '`'>
                              spids: [4237 4241]
                            )
                          } {(KW_Bang '!') (Lit_Other '=')} {(0)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('You must be root to run this.'))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 4251]
                )
              ]
              spids: [16777215 4266]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [(C {(sysctl)} {(-n)} {(kern.securelevel)})]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [4278 4284]
                            )
                          } {(-gt)} {(0)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Updates cannot be installed when the system securelevel'))})
                    (C {(echo)} {(DQ ('is greater than zero.'))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 4293]
                )
              ]
              spids: [16777215 4315]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_WORKDIR_bad)
                  op: Equal
                  rhs: {(DQ ('Directory does not exist or is not writable: '))}
                  spids: [4323]
                )
              ]
              spids: [4323]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-d)} {(DQ (${ VSub_Name WORKDIR))} {(-a)} {(-w)} 
                              {(DQ (${ VSub_Name WORKDIR))} {(Lit_Other ']')}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [4364 4368]
                          ) (': ')
                        )
                      }
                    )
                    (C {(echo)} {(-n)} {(DQ (${ VSub_Name _WORKDIR_bad))})
                    (C {(echo)} {(${ VSub_Name WORKDIR)})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 4356]
                )
              ]
              spids: [16777215 4396]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(cd)} {(${ VSub_Name WORKDIR)})
                (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BDHASH)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [(C {(echo)} {(${ VSub_Name BASEDIR)}) (C {(sha256)} {(-q)})]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [4418 4430]
                      )
                    }
                  spids: [4417]
                )
              ]
              spids: [4417]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-L)} {(${ VSub_Name BDHASH) (-install)} 
                              {(Lit_Other ']')}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('No updates are available to install.'))})
                    (C {(echo)} {(DQ ("Run '") ($ VSub_Number '$0') (" fetch' first."))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 4454]
                )
              ]
              spids: [16777215 4478]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DPipe]
                          children: [
                            (Pipeline
                              children: [
                                (C {(Lit_Other '[')} {(-f)} {(${ VSub_Name BDHASH) (-install/INDEX-OLD)} 
                                  {(Lit_Other ']')}
                                )
                              ]
                              negated: T
                            )
                            (Pipeline
                              children: [
                                (C {(Lit_Other '[')} {(-f)} {(${ VSub_Name BDHASH) (-install/INDEX-NEW)} 
                                  {(Lit_Other ']')}
                                )
                              ]
                              negated: T
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Update manifest is corrupt -- this should never happen.'))})
                    (C {(echo)} {(DQ ("Re-run '") ($ VSub_Number '$0') (" fetch'."))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 4513]
                )
              ]
              spids: [16777215 4537]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BOOTFILE)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(sysctl)} {(-n)} {(kern.bootfile)})]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [4546 4552]
                      )
                    }
                  spids: [4545]
                )
              ]
              spids: [4545]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KERNELDIR)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name BOOTFILE>
                        suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) (kernel)})
                        spids: [4556 4561]
                      )
                    }
                  spids: [4555]
                )
              ]
              spids: [4555]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-d)} {(${ VSub_Name KERNELDIR)} {(Lit_Other ']')})
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Cannot identify running kernel'))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 4579]
                )
              ]
              spids: [16777215 4594]
            )
          ]
          spids: [4226]
        )
      spids: [4221 4225]
    )
    (FuncDef
      name: rollback_check_params
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (CommandSubPart
                              command_list: (CommandList children:[(C {(id)} {(-u)})])
                              left_token: <Left_Backtick '`'>
                              spids: [4621 4625]
                            )
                          } {(KW_Bang '!') (Lit_Other '=')} {(0)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('You must be root to run this.'))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 4635]
                )
              ]
              spids: [16777215 4650]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_WORKDIR_bad)
                  op: Equal
                  rhs: {(DQ ('Directory does not exist or is not writable: '))}
                  spids: [4658]
                )
              ]
              spids: [4658]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-d)} {(DQ (${ VSub_Name WORKDIR))} {(-a)} {(-w)} 
                              {(DQ (${ VSub_Name WORKDIR))} {(Lit_Other ']')}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [4699 4703]
                          ) (': ')
                        )
                      }
                    )
                    (C {(echo)} {(-n)} {(DQ (${ VSub_Name _WORKDIR_bad))})
                    (C {(echo)} {(${ VSub_Name WORKDIR)})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 4691]
                )
              ]
              spids: [16777215 4731]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(cd)} {(${ VSub_Name WORKDIR)})
                (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BDHASH)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [(C {(echo)} {(${ VSub_Name BASEDIR)}) (C {(sha256)} {(-q)})]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [4753 4765]
                      )
                    }
                  spids: [4752]
                )
              ]
              spids: [4752]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-L)} {(${ VSub_Name BDHASH) (-rollback)} 
                              {(Lit_Other ']')}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('No rollback directory found.'))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 4789]
                )
              ]
              spids: [16777215 4804]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DPipe]
                          children: [
                            (Pipeline
                              children: [
                                (C {(Lit_Other '[')} {(-f)} 
                                  {(${ VSub_Name BDHASH) (-rollback/INDEX-OLD)} {(Lit_Other ']')}
                                )
                              ]
                              negated: T
                            )
                            (Pipeline
                              children: [
                                (C {(Lit_Other '[')} {(-f)} 
                                  {(${ VSub_Name BDHASH) (-rollback/INDEX-NEW)} {(Lit_Other ']')}
                                )
                              ]
                              negated: T
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Update manifest is corrupt -- this should never happen.'))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 4839]
                )
              ]
              spids: [16777215 4854]
            )
          ]
          spids: [4610]
        )
      spids: [4605 4609]
    )
    (FuncDef
      name: IDS_check_params
      body: 
        (BraceGroup
          children: [
            (C {(export)} 
              {(Lit_VarLike 'HTTP_USER_AGENT=') 
                (DQ ('freebsd-update (') (${ VSub_Name COMMAND) (', ') 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(uname)} {(-r)})])
                    left_token: <Left_Backtick '`'>
                    spids: [4897 4901]
                  ) (')')
                )
              }
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_SERVERNAME_z)
                  op: Equal
                  rhs: {(DQ ('SERVERNAME must be given via command line or configuration file.'))}
                  spids: [4907]
                )
              ]
              spids: [4907]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_KEYPRINT_z)
                  op: Equal
                  rhs: {(DQ ('Key must be given via -k option or configuration file.'))}
                  spids: [4914]
                )
              ]
              spids: [4914]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_KEYPRINT_bad)
                  op: Equal
                  rhs: {(DQ ('Invalid key fingerprint: '))}
                  spids: [4920]
                )
              ]
              spids: [4920]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_WORKDIR_bad)
                  op: Equal
                  rhs: {(DQ ('Directory does not exist or is not writable: '))}
                  spids: [4926]
                )
              ]
              spids: [4926]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name SERVERNAME))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [4956 4960]
                          ) (': ')
                        )
                      }
                    )
                    (C {(echo)} {(DQ (${ VSub_Name _SERVERNAME_z))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 4948]
                )
              ]
              spids: [16777215 4979]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name KEYPRINT))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [5005 5009]
                          ) (': ')
                        )
                      }
                    )
                    (C {(echo)} {(DQ (${ VSub_Name _KEYPRINT_z))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 4997]
                )
              ]
              spids: [16777215 5028]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(echo)} {(DQ (${ VSub_Name KEYPRINT))})
                            (C {(grep)} {(-qE)} {(DQ ('^[0-9a-f]{64}') (Lit_Other '$'))})
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [5063 5067]
                          ) (': ')
                        )
                      }
                    )
                    (C {(echo)} {(-n)} {(DQ (${ VSub_Name _KEYPRINT_bad))})
                    (C {(echo)} {(${ VSub_Name KEYPRINT)})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 5055]
                )
              ]
              spids: [16777215 5095]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-d)} {(DQ (${ VSub_Name WORKDIR))} {(-a)} {(-w)} 
                              {(DQ (${ VSub_Name WORKDIR))} {(Lit_Other ']')}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [5133 5137]
                          ) (': ')
                        )
                      }
                    )
                    (C {(echo)} {(-n)} {(DQ (${ VSub_Name _WORKDIR_bad))})
                    (C {(echo)} {(${ VSub_Name WORKDIR)})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 5125]
                )
              ]
              spids: [16777215 5165]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(cd)} {(${ VSub_Name WORKDIR)})
                (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RELNUM)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(uname)} {(-r)})
                                  (C {(sed)} {(-E)} {(SQ <'s,-p[0-9]+,,'>)})
                                  (C {(sed)} {(-E)} {(SQ <'s,-SECURITY,-RELEASE,'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [5199 5225]
                      )
                    }
                  spids: [5198]
                )
              ]
              spids: [5198]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ARCH)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(uname)} {(-m)})])
                        left_token: <Left_Backtick '`'>
                        spids: [5229 5233]
                      )
                    }
                  spids: [5228]
                )
              ]
              spids: [5228]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:FETCHDIR)
                  op: Equal
                  rhs: {(${ VSub_Name RELNUM) (/) (${ VSub_Name ARCH)}
                  spids: [5236]
                )
              ]
              spids: [5236]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PATCHDIR)
                  op: Equal
                  rhs: {(${ VSub_Name RELNUM) (/) (${ VSub_Name ARCH) (/bp)}
                  spids: [5246]
                )
              ]
              spids: [5246]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BOOTFILE)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(sysctl)} {(-n)} {(kern.bootfile)})]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [5263 5269]
                      )
                    }
                  spids: [5262]
                )
              ]
              spids: [5262]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KERNELDIR)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name BOOTFILE>
                        suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) (kernel)})
                        spids: [5273 5278]
                      )
                    }
                  spids: [5272]
                )
              ]
              spids: [5272]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-d)} {(${ VSub_Name KERNELDIR)} {(Lit_Other ']')})
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Cannot identify running kernel'))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 5296]
                )
              ]
              spids: [16777215 5311]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KERNCONF)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(uname)} {(-i)})])
                        left_token: <Left_Backtick '`'>
                        spids: [5348 5352]
                      )
                    }
                  spids: [5347]
                )
              ]
              spids: [5347]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name KERNCONF)} {(Lit_Other '=')} 
                          {(DQ (SMP-GENERIC))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:KERNCONF)
                          op: Equal
                          rhs: {(SMP)}
                          spids: [5375]
                        )
                      ]
                      spids: [5375]
                    )
                  ]
                  spids: [16777215 5372]
                )
              ]
              spids: [16777215 5379]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(Lit_Other '[')} {(${ VSub_Name KERNCONF)} {(Lit_Other '=')} 
                              {(DQ (GENERIC))} {(Lit_Other ']')}
                            )
                            (C {(Lit_Other '[')} {(${ VSub_Name ARCH)} {(Lit_Other '=')} {(DQ (amd64))} 
                              {(Lit_Other ']')}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [
                                    (C {(sysctl)} {(kern.version)})
                                    (C {(grep)} {(-qE)} {(SQ <'/SMP$'>)})
                                  ]
                                  negated: F
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:KERNCONF)
                                  op: Equal
                                  rhs: {(SMP)}
                                  spids: [5438]
                                )
                              ]
                              spids: [5438]
                            )
                          ]
                          spids: [16777215 5435]
                        )
                      ]
                      spids: [16777215 5442]
                    )
                  ]
                  spids: [16777215 5415]
                )
              ]
              spids: [16777215 5445]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SHA256)
                  op: Equal
                  rhs: {(/sbin/sha256)}
                  spids: [5453]
                )
              ]
              spids: [5453]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PHTTPGET)
                  op: Equal
                  rhs: {(/usr/libexec/phttpget)}
                  spids: [5457]
                )
              ]
              spids: [5457]
            )
            (C {(fetch_setup_verboselevel)})
          ]
          spids: [4885]
        )
      spids: [4880 4884]
    )
    (FuncDef
      name: fetch_pick_server_init
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(Lit_Other ':')}]
              redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(serverlist_tried)})]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (Pipeline children:[(C {(which)} {(-s)} {(host)})] negated:T)
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(Lit_Other ':')}]
                      redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(serverlist_full)})]
                    )
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 5545]
                )
              ]
              spids: [16777215 5560]
            )
            (C {(echo)} {(-n)} {(DQ ('Looking up ') (${ VSub_Name SERVERNAME) (' mirrors... '))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:MLIST)
                  op: Equal
                  rhs: {(DQ (_http._tcp.) (${ VSub_Name SERVERNAME))}
                  spids: [5587]
                )
              ]
              spids: [5587]
            )
            (Pipeline
              children: [
                (C {(host)} {(-t)} {(srv)} {(DQ (${ VSub_Name MLIST))})
                (C {(sed)} {(-nE)} 
                  {(DQ (s/) (${ VSub_Name MLIST) (' (has SRV record|server selection) //p'))}
                )
                (C {(cut)} {(-f)} {(1) (Lit_Comma ',') (2) (Lit_Comma ',') (4)} {(-d)} {(SQ <' '>)})
                (C {(sed)} {(-e)} {(SQ <'s/\\.$//'>)})
                (SimpleCommand
                  words: [{(sort)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(serverlist_full)})]
                )
              ]
              negated: F
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (SimpleCommand
                                      words: [{(wc)} {(-l)}]
                                      redirects: [
                                        (Redir
                                          op: <Redir_Less '<'>
                                          fd: 16777215
                                          arg_word: {(serverlist_full)}
                                        )
                                      ]
                                    )
                                  ]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [5671 5679]
                            )
                          } {(-eq)} {(0)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('none found.'))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 5688]
                )
              ]
              spids: [16777215 5703]
            )
            (C {(echo)} 
              {
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (SimpleCommand
                          words: [{(wc)} {(-l)}]
                          redirects: [
                            (Redir
                              op: <Redir_Less '<'>
                              fd: 16777215
                              arg_word: {(serverlist_full)}
                            )
                          ]
                        )
                      ]
                    )
                  left_token: <Left_Backtick '`'>
                  spids: [5712 5720]
                )
              } {(DQ ('mirrors found.'))}
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} 
                          {(DQ (${ VSub_Name HTTP_PROXY) (${ VSub_Name http_proxy))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:RANDVALUE)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(sha256)} {(-qs)} 
                                            {
                                              (DQ (${ VSub_Name HTTP_PROXY) (${ VSub_Name http_proxy))
                                            }
                                          )
                                          (C {(tr)} {(-d)} {(SQ <a-f>)})
                                          (C {(cut)} {(-c)} {(1-9)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [5759 5792]
                              )
                            }
                          spids: [5758]
                        )
                      ]
                      spids: [5758]
                    )
                  ]
                  spids: [16777215 5755]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:RANDVALUE)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(jot)} {(-r)} {(1)} {(0)} {(999999999)})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [5799 5809]
                          )
                        }
                      spids: [5798]
                    )
                  ]
                  spids: [5798]
                )
              ]
              spids: [5795 5812]
            )
          ]
          spids: [5517]
        )
      spids: [5512 5516]
    )
    (FuncDef
      name: fetch_pick_server
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (C {(sort)} {(serverlist_tried)})
                (SimpleCommand
                  words: [{(comm)} {(-23)} {(serverlist_full)} {(-)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(serverlist)})]
                )
              ]
              negated: F
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (SimpleCommand
                                      words: [{(wc)} {(-l)}]
                                      redirects: [
                                        (Redir
                                          op: <Redir_Less '<'>
                                          fd: 16777215
                                          arg_word: {(serverlist)}
                                        )
                                      ]
                                    )
                                  ]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [5859 5867]
                            )
                          } {(-eq)} {(0)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('No mirrors remaining, giving up.'))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 5876]
                )
              ]
              spids: [16777215 5891]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SRV_PRIORITY)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(cut)} {(-f)} {(1)} {(-d)} {(SQ <' '>)} {(serverlist)})
                                  (C {(sort)} {(-n)})
                                  (C {(head)} {(-1)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [5899 5925]
                      )
                    }
                  spids: [5898]
                )
              ]
              spids: [5898]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:SRV_WSUM) op:Equal rhs:{(0)} spids:[5932])]
                  spids: [5932]
                )
              terminator: <Op_Semi ';'>
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [(Sentence child:(C {(read)} {(X)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(DQ ($ VSub_Name '$X'))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(${ VSub_Name SRV_PRIORITY) 
                              (EscapedLiteralPart
                                token: <Lit_EscapedChar '\\ '>
                              ) (Lit_Other '*')
                            }
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:SRV_W)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (Pipeline
                                                children: [
                                                  (C {(echo)} {($ VSub_Name '$X')})
                                                  (C {(cut)} {(-f)} {(2)} {(-d)} {(SQ <' '>)})
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                        left_token: <Left_Backtick '`'>
                                        spids: [5965 5983]
                                      )
                                    }
                                  spids: [5964]
                                )
                              ]
                              spids: [5964]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:SRV_WSUM)
                                  op: Equal
                                  rhs: 
                                    {
                                      (ArithSubPart
                                        anode: 
                                          (ArithBinary
                                            op_id: Arith_Plus
                                            left: (ArithWord w:{($ VSub_Name '$SRV_WSUM')})
                                            right: (ArithWord w:{($ VSub_Name '$SRV_W')})
                                          )
                                        spids: [5987 5994]
                                      )
                                    }
                                  spids: [5986]
                                )
                              ]
                              spids: [5986]
                            )
                          ]
                          spids: [5956 5961 5997 16777215]
                        )
                      ]
                      spids: [5947 5953 6000]
                    )
                  ]
                  spids: [5944 6003]
                )
              redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(serverlist)})]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name SRV_WSUM)} {(-eq)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:SRV_WSUM)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(grep)} {(-E)} 
                                            {(DQ ('^') (${ VSub_Name SRV_PRIORITY) (' '))} {(serverlist)}
                                          )
                                          (C {(wc)} {(-l)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [6033 6053]
                              )
                            }
                          spids: [6032]
                        )
                      ]
                      spids: [6032]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:SRV_W_ADD)
                          op: Equal
                          rhs: {(1)}
                          spids: [6056]
                        )
                      ]
                      spids: [6056]
                    )
                  ]
                  spids: [16777215 6029]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:SRV_W_ADD) op:Equal rhs:{(0)} spids:[6063])]
                  spids: [6063]
                )
              ]
              spids: [6060 6067]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SRV_RND)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(expr)} {(${ VSub_Name RANDVALUE)} {(Lit_Other '%')} 
                                {(${ VSub_Name SRV_WSUM)}
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [6075 6087]
                      )
                    }
                  spids: [6074]
                )
              ]
              spids: [6074]
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [(Sentence child:(C {(read)} {(X)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(DQ ($ VSub_Name '$X'))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(${ VSub_Name SRV_PRIORITY) 
                              (EscapedLiteralPart
                                token: <Lit_EscapedChar '\\ '>
                              ) (Lit_Other '*')
                            }
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:SRV_W)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (Pipeline
                                                children: [
                                                  (C {(echo)} {($ VSub_Name '$X')})
                                                  (C {(cut)} {(-f)} {(2)} {(-d)} {(SQ <' '>)})
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                        left_token: <Left_Backtick '`'>
                                        spids: [6128 6146]
                                      )
                                    }
                                  spids: [6127]
                                )
                              ]
                              spids: [6127]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:SRV_W)
                                  op: Equal
                                  rhs: 
                                    {
                                      (ArithSubPart
                                        anode: 
                                          (ArithBinary
                                            op_id: Arith_Plus
                                            left: (ArithWord w:{($ VSub_Name '$SRV_W')})
                                            right: (ArithWord w:{($ VSub_Name '$SRV_W_ADD')})
                                          )
                                        spids: [6150 6157]
                                      )
                                    }
                                  spids: [6149]
                                )
                              ]
                              spids: [6149]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {($ VSub_Name '$SRV_RND')} {(-lt)} 
                                          {($ VSub_Name '$SRV_W')} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:SERVERNAME)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (Pipeline
                                                        children: [
                                                          (C {(echo)} {($ VSub_Name '$X')})
                                                          (C {(cut)} {(-f)} {(3)} {(-d)} {(SQ <' '>)})
                                                        ]
                                                        negated: F
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_Backtick '`'>
                                                spids: [6177 6195]
                                              )
                                            }
                                          spids: [6176]
                                        )
                                      ]
                                      spids: [6176]
                                    )
                                    (SimpleCommand
                                      words: [{(echo)} {(DQ ($ VSub_Name '$X'))}]
                                      redirects: [
                                        (Redir
                                          op: <Redir_DGreat '>>'>
                                          fd: 16777215
                                          arg_word: {(serverlist_tried)}
                                        )
                                      ]
                                    )
                                    (ControlFlow
                                      token: <ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [16777215 6173]
                                )
                              ]
                              else_action: [
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:SRV_RND)
                                      op: Equal
                                      rhs: 
                                        {
                                          (ArithSubPart
                                            anode: 
                                              (ArithBinary
                                                op_id: Arith_Minus
                                                left: (ArithWord w:{($ VSub_Name '$SRV_RND')})
                                                right: (ArithWord w:{($ VSub_Name '$SRV_W')})
                                              )
                                            spids: [6216 6223]
                                          )
                                        }
                                      spids: [6215]
                                    )
                                  ]
                                  spids: [6215]
                                )
                              ]
                              spids: [6212 6226]
                            )
                          ]
                          spids: [6119 6124 6229 16777215]
                        )
                      ]
                      spids: [6110 6116 6232]
                    )
                  ]
                  spids: [6107 6235]
                )
              redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(serverlist)})]
            )
          ]
          spids: [5825]
        )
      spids: [5820 5824]
    )
    (FuncDef
      name: fetch_make_patchlist
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (C {(grep)} {(-vE)} 
                  {
                    (DQ ('^([0-9a-f]{64})') (Lit_Other '\\') ('|') (Lit_Other '\\') (1) (Lit_Other '$'))
                  }
                )
                (C {(tr)} {(SQ <'|'>)} {(SQ <' '>)})
                (WhileUntil
                  keyword: <KW_While while>
                  cond: [(Sentence child:(C {(read)} {(X)} {(Y)}) terminator:<Op_Semi ';'>)]
                  body: 
                    (DoGroup
                      children: [
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (AndOr
                                      ops: [Op_DPipe]
                                      children: [
                                        (C {(Lit_Other '[')} {(-f)} 
                                          {(DQ (files/) (${ VSub_Name Y) (.gz))} {(Lit_Other ']')}
                                        )
                                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} 
                                          {(DQ (files/) (${ VSub_Name X) (.gz))} {(Lit_Other ']')}
                                        )
                                      ]
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                              spids: [16777215 6335]
                            )
                          ]
                          spids: [16777215 6341]
                        )
                        (C {(echo)} {(DQ (${ VSub_Name X) ('|') (${ VSub_Name Y))})
                      ]
                      spids: [6296 6357]
                    )
                )
                (C {(uniq)})
              ]
              negated: F
            )
          ]
          spids: [6255]
        )
      spids: [6250 6254]
    )
    (FuncDef
      name: fetch_progress
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:LNC) op:Equal rhs:{(0)} spids:[6377])]
              spids: [6377]
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [(Sentence child:(C {(read)} {(x)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:LNC)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Plus
                                    left: (ArithWord w:{($ VSub_Name '$LNC')})
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [6392 6399]
                              )
                            }
                          spids: [6391]
                        )
                      ]
                      spids: [6391]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} 
                                  {
                                    (ArithSubPart
                                      anode: 
                                        (ArithBinary
                                          op_id: Arith_Percent
                                          left: (ArithWord w:{($ VSub_Name '$LNC')})
                                          right: (ArithWord w:{(Lit_Digits 10)})
                                        )
                                      spids: [6406 6413]
                                    )
                                  } {(Lit_Other '=')} {(0)} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(echo)} {(-n)} {($ VSub_Name '$LNC')})]
                          spids: [16777215 6422]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} 
                                  {
                                    (ArithSubPart
                                      anode: 
                                        (ArithBinary
                                          op_id: Arith_Percent
                                          left: (ArithWord w:{($ VSub_Name '$LNC')})
                                          right: (ArithWord w:{(Lit_Digits 2)})
                                        )
                                      spids: [6436 6443]
                                    )
                                  } {(Lit_Other '=')} {(0)} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(echo)} {(-n)} {(.)})]
                          spids: [6432 6452]
                        )
                      ]
                      spids: [16777215 6462]
                    )
                  ]
                  spids: [6388 6465]
                )
            )
            (C {(echo)} {(-n)} {(DQ (' '))})
          ]
          spids: [6374]
        )
      spids: [6369 6373]
    )
    (FuncDef
      name: continuep
      body: 
        (BraceGroup
          children: [
            (WhileUntil
              keyword: <KW_While while>
              cond: [
                (Sentence
                  child: (C {(read)} {(-p)} {(DQ ('Does this look reasonable (y/n)? '))} {(CONTINUE)})
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(DQ (${ VSub_Name CONTINUE))}
                      arms: [
                        (case_arm
                          pat_list: [{(y) (Lit_Other '*')}]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                          spids: [6517 6519 6527 16777215]
                        )
                        (case_arm
                          pat_list: [{(n) (Lit_Other '*')}]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                          spids: [6530 6532 6540 16777215]
                        )
                      ]
                      spids: [6506 6514 6543]
                    )
                  ]
                  spids: [6503 6546]
                )
            )
          ]
          spids: [6487]
        )
      spids: [6482 6486]
    )
    (FuncDef
      name: workdir_init
      body: 
        (BraceGroup
          children: [(C {(mkdir)} {(-p)} {(files)}) (C {(touch)} {(tINDEX.present)})]
          spids: [6559]
        )
      spids: [6554 6558]
    )
    (FuncDef
      name: fetch_key
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(Lit_Other '[')} {(-r)} {(pub.ssl)} {(Lit_Other ']')})
                            (C {(Lit_Other '[')} 
                              {
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [(C {(${ VSub_Name SHA256)} {(-q)} {(pub.ssl)})]
                                    )
                                  left_token: <Left_Backtick '`'>
                                  spids: [6607 6615]
                                )
                              } {(Lit_Other '=')} {(${ VSub_Name KEYPRINT)} {(Lit_Other ']')}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                  spids: [16777215 6626]
                )
              ]
              spids: [16777215 6634]
            )
            (C {(echo)} {(-n)} {(DQ ('Fetching public key from ') (${ VSub_Name SERVERNAME) ('... '))})
            (C {(rm)} {(-f)} {(pub.ssl)})
            (AndOr
              ops: [Op_DPipe]
              children: [
                (SimpleCommand
                  words: [
                    {(fetch)}
                    {(${ VSub_Name QUIETFLAG)}
                    {(http) (Lit_Other ':') (//) (${ VSub_Name SERVERNAME) (/) (${ VSub_Name FETCHDIR) 
                      (/pub.ssl)
                    }
                  ]
                  redirects: [(Redir op:<Redir_Great '2>'> fd:2 arg_word:{(${ VSub_Name QUIETREDIR)})]
                )
                (C {(true)})
              ]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [(C {(Lit_Other '[')} {(-r)} {(pub.ssl)} {(Lit_Other ']')})]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ (failed.))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 6701]
                )
              ]
              spids: [16777215 6716]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} 
                              {
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [(C {(${ VSub_Name SHA256)} {(-q)} {(pub.ssl)})]
                                    )
                                  left_token: <Left_Backtick '`'>
                                  spids: [6725 6733]
                                )
                              } {(Lit_Other '=')} {(${ VSub_Name KEYPRINT)} {(Lit_Other ']')}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('key has incorrect hash.'))})
                    (C {(rm)} {(-f)} {(pub.ssl)})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 6744]
                )
              ]
              spids: [16777215 6766]
            )
            (C {(echo)} {(DQ (done.))})
          ]
          spids: [6590]
        )
      spids: [6585 6589]
    )
    (FuncDef
      name: fetch_tag
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(-n)} {(DQ ('Fetching metadata signature '))})
            (C {(echo)} {(${ VSub_Name NDEBUG)} 
              {(DQ ('for ') (${ VSub_Name RELNUM) (' from ') (${ VSub_Name SERVERNAME) ('... '))}
            )
            (C {(rm)} {(-f)} {(latest.ssl)})
            (AndOr
              ops: [Op_DPipe]
              children: [
                (SimpleCommand
                  words: [
                    {(fetch)}
                    {(${ VSub_Name QUIETFLAG)}
                    {(http) (Lit_Other ':') (//) (${ VSub_Name SERVERNAME) (/) (${ VSub_Name FETCHDIR) 
                      (/latest.ssl)
                    }
                  ]
                  redirects: [(Redir op:<Redir_Great '2>'> fd:2 arg_word:{(${ VSub_Name QUIETREDIR)})]
                )
                (C {(true)})
              ]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [(C {(Lit_Other '[')} {(-r)} {(latest.ssl)} {(Lit_Other ']')})]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ (failed.))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 6867]
                )
              ]
              spids: [16777215 6882]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (SimpleCommand
                  words: [{(openssl)} {(rsautl)} {(-pubin)} {(-inkey)} {(pub.ssl)} {(-verify)}]
                  redirects: [
                    (Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(latest.ssl)})
                    (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(tag.new)})
                    (Redir
                      op: <Redir_Great '2>'>
                      fd: 2
                      arg_word: {(${ VSub_Name QUIETREDIR)}
                    )
                  ]
                )
                (C {(true)})
              ]
            )
            (C {(rm)} {(latest.ssl)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DPipe]
                          children: [
                            (Pipeline
                              children: [
                                (C {(Lit_Other '[')} 
                                  {
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (SimpleCommand
                                              words: [{(wc)} {(-l)}]
                                              redirects: [
                                                (Redir
                                                  op: <Redir_Less '<'>
                                                  fd: 16777215
                                                  arg_word: {(tag.new)}
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                      left_token: <Left_Backtick '`'>
                                      spids: [6930 6938]
                                    )
                                  } {(Lit_Other '=')} {(1)} {(Lit_Other ']')}
                                )
                              ]
                              negated: T
                            )
                            (Pipeline
                              children: [
                                (C {(grep)} {(-qE)} 
                                  {
                                    (DQ ('^freebsd-update') (Lit_Other '\\') ('|') (${ VSub_Name ARCH) 
                                      (Lit_Other '\\') ('|') (${ VSub_Name RELNUM) (Lit_Other '\\') ('|[0-9]+') (Lit_Other '\\') ('|[0-9a-f]{64}') 
                                      (Lit_Other '\\') ('|[0-9]{10}')
                                    )
                                  } {(tag.new)}
                                )
                              ]
                              negated: T
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('invalid signature.'))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 6982]
                )
              ]
              spids: [16777215 6997]
            )
            (C {(echo)} {(DQ (done.))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RELPATCHNUM)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (SimpleCommand
                                words: [{(cut)} {(-f)} {(4)} {(-d)} {(SQ <'|'>)}]
                                redirects: [
                                  (Redir
                                    op: <Redir_Less '<'>
                                    fd: 16777215
                                    arg_word: {(tag.new)}
                                  )
                                ]
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [7010 7026]
                      )
                    }
                  spids: [7009]
                )
              ]
              spids: [7009]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TINDEXHASH)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (SimpleCommand
                                words: [{(cut)} {(-f)} {(5)} {(-d)} {(SQ <'|'>)}]
                                redirects: [
                                  (Redir
                                    op: <Redir_Less '<'>
                                    fd: 16777215
                                    arg_word: {(tag.new)}
                                  )
                                ]
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [7030 7046]
                      )
                    }
                  spids: [7029]
                )
              ]
              spids: [7029]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:EOLTIME)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (SimpleCommand
                                words: [{(cut)} {(-f)} {(6)} {(-d)} {(SQ <'|'>)}]
                                redirects: [
                                  (Redir
                                    op: <Redir_Less '<'>
                                    fd: 16777215
                                    arg_word: {(tag.new)}
                                  )
                                ]
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [7050 7066]
                      )
                    }
                  spids: [7049]
                )
              ]
              spids: [7049]
            )
          ]
          spids: [6786]
        )
      spids: [6781 6785]
    )
    (FuncDef
      name: fetch_tagsanity
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RELPX)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [(C {(uname)} {(-r)}) (C {(sed)} {(-E)} {(SQ <'s,.*-,,'>)})]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [7090 7104]
                      )
                    }
                  spids: [7089]
                )
              ]
              spids: [7089]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(echo)} {(${ VSub_Name RELPX)})
                            (C {(grep)} {(-qE)} {(SQ <'^p[0-9]+$'>)})
                          ]
                          negated: F
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:RELPX)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(echo)} {(${ VSub_Name RELPX)})
                                          (C {(cut)} {(-c)} {(2-)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [7130 7144]
                              )
                            }
                          spids: [7129]
                        )
                      ]
                      spids: [7129]
                    )
                  ]
                  spids: [16777215 7126]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:RELPX) op:Equal rhs:{(0)} spids:[7150])]
                  spids: [7150]
                )
              ]
              spids: [7147 7154]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name RELPATCHNUM))} {(-lt)} 
                          {(DQ (${ VSub_Name RELPX))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)})
                    (C {(echo)} {(-n)} 
                      {
                        (DQ ('Files on mirror (') (${ VSub_Name RELNUM) (-p) (${ VSub_Name RELPATCHNUM) 
                          (')')
                        )
                      }
                    )
                    (C {(echo)} {(DQ (' appear older than what'))})
                    (C {(echo)} 
                      {
                        (DQ ('we are currently running (') 
                          (CommandSubPart
                            command_list: (CommandList children:[(C {(uname)} {(-r)})])
                            left_token: <Left_Backtick '`'>
                            spids: [7212 7216]
                          ) (')!')
                        )
                      }
                    )
                    (C {(echo)} {(DQ ('Cowardly refusing to proceed any further.'))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 7178]
                )
              ]
              spids: [16777215 7233]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(Lit_Other '[')} {(-f)} {(tag)} {(Lit_Other ']')})
                            (C {(grep)} {(-qE)} 
                              {
                                (DQ ('^freebsd-update') (Lit_Other '\\') ('|') (${ VSub_Name ARCH) 
                                  (Lit_Other '\\') ('|') (${ VSub_Name RELNUM) (Lit_Other '\\') ('|[0-9]+') (Lit_Other '\\') ('|[0-9a-f]{64}') 
                                  (Lit_Other '\\') ('|[0-9]{10}')
                                )
                              } {(tag)}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:LASTRELPATCHNUM)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (SimpleCommand
                                        words: [{(cut)} {(-f)} {(4)} {(-d)} {(SQ <'|'>)}]
                                        redirects: [
                                          (Redir
                                            op: <Redir_Less '<'>
                                            fd: 16777215
                                            arg_word: {(tag)}
                                          )
                                        ]
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [7297 7313]
                              )
                            }
                          spids: [7296]
                        )
                      ]
                      spids: [7296]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ (${ VSub_Name RELPATCHNUM))} {(-lt)} 
                                  {(DQ (${ VSub_Name LASTRELPATCHNUM))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)})
                            (C {(echo)} {(-n)} 
                              {
                                (DQ ('Files on mirror (') (${ VSub_Name RELNUM) (-p) 
                                  (${ VSub_Name RELPATCHNUM) (')')
                                )
                              }
                            )
                            (C {(echo)} {(DQ (' are older than the'))})
                            (C {(echo)} {(-n)} {(DQ ('most recently seen updates'))})
                            (C {(echo)} 
                              {
                                (DQ (' (') (${ VSub_Name RELNUM) (-p) (${ VSub_Name LASTRELPATCHNUM) 
                                  (').')
                                )
                              }
                            )
                            (C {(echo)} {(DQ ('Cowardly refusing to proceed any further.'))})
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [16777215 7338]
                        )
                      ]
                      spids: [16777215 7404]
                    )
                  ]
                  spids: [16777215 7293]
                )
              ]
              spids: [16777215 7407]
            )
          ]
          spids: [7082]
        )
      spids: [7077 7081]
    )
    (FuncDef
      name: fetch_metadata_index
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(${ VSub_Name NDEBUG)} {(DQ ('Fetching metadata index... '))})
            (C {(rm)} {(-f)} {(${ VSub_Name TINDEXHASH)})
            (C {(fetch)} {(${ VSub_Name QUIETFLAG)} 
              {(http) (Lit_Other ':') (//) (${ VSub_Name SERVERNAME) (/) (${ VSub_Name FETCHDIR) (/t/) 
                (${ VSub_Name TINDEXHASH)
              }
            )
            (SimpleCommand
              redirects: [(Redir op:<Redir_Great '2>'> fd:2 arg_word:{(${ VSub_Name QUIETREDIR)})]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-f)} {(${ VSub_Name TINDEXHASH)} {(Lit_Other ']')})
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ (failed.))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 7486]
                )
              ]
              spids: [16777215 7501]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (C {(${ VSub_Name SHA256)} {(-q)} {(${ VSub_Name TINDEXHASH)})
                                  ]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [7508 7518]
                            )
                          } {(KW_Bang '!') (Lit_Other '=')} {(${ VSub_Name TINDEXHASH)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('update metadata index corrupt.'))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 7530]
                )
              ]
              spids: [16777215 7545]
            )
            (C {(echo)} {(DQ (done.))})
          ]
          spids: [7420]
        )
      spids: [7415 7419]
    )
    (FuncDef
      name: fetch_metadata_bogus
      body: 
        (BraceGroup
          children: [
            (C {(echo)})
            (C {(echo)} 
              {(DQ ('The update metadata') ($ VSub_Number '$1') (' is correctly signed, but'))}
            )
            (C {(echo)} {(DQ ('failed an integrity check.'))})
            (C {(echo)} {(DQ ('Cowardly refusing to proceed any further.'))})
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [7565]
        )
      spids: [7560 7564]
    )
    (FuncDef
      name: fetch_metadata_index_merge
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (ForEach
                  iter_name: METAFILE
                  iter_words: [{($ VSub_At '$@')}]
                  do_arg_iter: F
                  body: 
                    (DoGroup
                      children: [
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (C {(Lit_Other '[')} 
                                      {
                                        (CommandSubPart
                                          command_list: 
                                            (CommandList
                                              children: [
                                                (Pipeline
                                                  children: [
                                                    (C {(grep)} {(-E)} 
                                                      {
                                                        (DQ ('^') (${ VSub_Name METAFILE) 
                                                          (Lit_Other '\\') ('|')
                                                        )
                                                      } {(${ VSub_Name TINDEXHASH)}
                                                    )
                                                    (C {(wc)} {(-l)})
                                                  ]
                                                  negated: F
                                                )
                                              ]
                                            )
                                          left_token: <Left_Backtick '`'>
                                          spids: [7631 7654]
                                        )
                                      } {(-ne)} {(1)} {(Lit_Other ']')}
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (C {(fetch_metadata_bogus)} {(DQ (' index'))})
                                (ControlFlow
                                  token: <ControlFlow_Return return>
                                  arg_word: {(1)}
                                )
                              ]
                              spids: [16777215 7665]
                            )
                          ]
                          spids: [16777215 7680]
                        )
                        (C {(grep)} {(-E)} {(DQ (${ VSub_Name METAFILE) (Lit_Other '\\') ('|'))} 
                          {(${ VSub_Name TINDEXHASH)}
                        )
                      ]
                      spids: [7624 7701]
                    )
                  spids: [7620 7622]
                )
                (SimpleCommand
                  words: [{(sort)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(tINDEX.wanted)})]
                )
              ]
              negated: F
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-f)} {(tINDEX.present)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Pipeline
                      children: [
                        (C {(join)} {(-t)} {(SQ <'|'>)} {(-v)} {(2)} {(tINDEX.wanted)} {(tINDEX.present)})
                        (SimpleCommand
                          words: [{(sort)} {(-m)} {(-)} {(tINDEX.wanted)}]
                          redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(tINDEX.new)})]
                        )
                      ]
                      negated: F
                    )
                    (C {(rm)} {(tINDEX.wanted)})
                  ]
                  spids: [16777215 7725]
                )
              ]
              else_action: [(C {(mv)} {(tINDEX.wanted)} {(tINDEX.new)})]
              spids: [7765 7775]
            )
          ]
          spids: [7612]
        )
      spids: [7607 7611]
    )
    (FuncDef
      name: fetch_metadata_index_sanity
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(grep)} {(-qvE)} {(SQ <'^[0-9A-Z.-]+\\|[0-9a-f]{64}$'>)} {(tINDEX.new)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(fetch_metadata_bogus)} {(DQ (' index'))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 7813]
                )
              ]
              spids: [16777215 7828]
            )
          ]
          spids: [7797]
        )
      spids: [7792 7796]
    )
    (FuncDef
      name: fetch_metadata_sanity
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:P)
                  op: Equal
                  rhs: {(DQ ('[-+./:=,%@_[~[:alnum:]]'))}
                  spids: [7856]
                )
              ]
              spids: [7856]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:M)
                  op: Equal
                  rhs: 
                    {
                      (DQ ('[0-9]+') (Lit_Other '\\') ('|[0-9]+') (Lit_Other '\\') ('|[0-9]+') 
                        (Lit_Other '\\') ('|[0-9]+')
                      )
                    }
                  spids: [7862]
                )
              ]
              spids: [7862]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:H)
                  op: Equal
                  rhs: {(DQ ('[0-9a-f]{64}'))}
                  spids: [7874]
                )
              ]
              spids: [7874]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (SimpleCommand
                              words: [{(gunzip)} {(-c)}]
                              redirects: [
                                (Redir
                                  op: <Redir_Less '<'>
                                  fd: 16777215
                                  arg_word: {(files/) ($ VSub_Number '$1') (.gz)}
                                )
                              ]
                            )
                            (C {(grep)} {(-qvE)} 
                              {
                                (DQ ('^[a-z]+') (Lit_Other '\\') ('|[0-9a-z-]+') (Lit_Other '\\') ('|') 
                                  (${ VSub_Name P) ('+') (Lit_Other '\\') ('|[fdL-]') (Lit_Other '\\') ('|')
                                )
                              }
                            )
                          ]
                          negated: F
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(fetch_metadata_bogus)} {(DQ )})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 7921]
                )
              ]
              spids: [16777215 7935]
            )
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(gunzip)} {(-c)}]
                  redirects: [
                    (Redir
                      op: <Redir_Less '<'>
                      fd: 16777215
                      arg_word: {(files/) ($ VSub_Number '$1') (.gz)}
                    )
                  ]
                )
                (SimpleCommand
                  words: [{(cut)} {(-f)} {(4-)} {(-d)} {(SQ <'|'>)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(sanitycheck.tmp)})]
                )
              ]
              negated: F
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(grep)} {(-E)} {(SQ <'^f'>)} {(sanitycheck.tmp)})
                            (C {(grep)} {(-qvE)} 
                              {
                                (DQ ('^f') (Lit_Other '\\') ('|') (${ VSub_Name M) (Lit_Other '\\') ('|') 
                                  (${ VSub_Name H) (Lit_Other '\\') ('|') (${ VSub_Name P) ('*') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                                )
                              }
                            )
                          ]
                          negated: F
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(fetch_metadata_bogus)} {(DQ )})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 8019]
                )
              ]
              spids: [16777215 8033]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(grep)} {(-E)} {(SQ <'^d'>)} {(sanitycheck.tmp)})
                            (C {(grep)} {(-qvE)} 
                              {
                                (DQ ('^d') (Lit_Other '\\') ('|') (${ VSub_Name M) (Lit_Other '\\') ('|') 
                                  (Lit_Other '\\') ('|') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                                )
                              }
                            )
                          ]
                          negated: F
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(fetch_metadata_bogus)} {(DQ )})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 8075]
                )
              ]
              spids: [16777215 8089]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(grep)} {(-E)} {(SQ <'^L'>)} {(sanitycheck.tmp)})
                            (C {(grep)} {(-qvE)} 
                              {
                                (DQ ('^L') (Lit_Other '\\') ('|') (${ VSub_Name M) (Lit_Other '\\') ('|') 
                                  (${ VSub_Name P) ('*') (Lit_Other '\\') ('|') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                                )
                              }
                            )
                          ]
                          negated: F
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(fetch_metadata_bogus)} {(DQ )})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 8135]
                )
              ]
              spids: [16777215 8149]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(grep)} {(-E)} {(SQ <'^-'>)} {(sanitycheck.tmp)})
                            (C {(grep)} {(-qvE)} 
                              {
                                (DQ ('^-') (Lit_Other '\\') ('|') (Lit_Other '\\') ('|') (Lit_Other '\\') 
                                  ('|') (Lit_Other '\\') ('|') (Lit_Other '\\') ('|') (Lit_Other '\\') ('|')
                                )
                              }
                            )
                          ]
                          negated: F
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(fetch_metadata_bogus)} {(DQ )})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 8193]
                )
              ]
              spids: [16777215 8207]
            )
            (C {(rm)} {(sanitycheck.tmp)})
          ]
          spids: [7841]
        )
      spids: [7836 7840]
    )
    (FuncDef
      name: fetch_metadata
      body: 
        (BraceGroup
          children: [
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_metadata_index)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_metadata_index_merge)} {($ VSub_At '$@')})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_metadata_index_sanity)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (Pipeline
              children: [
                (C {(join)} {(-t)} {(SQ <'|'>)} {(-o)} {(1.2) (Lit_Comma ',') (2.2)} {(tINDEX.present)} 
                  {(tINDEX.new)}
                )
                (SimpleCommand
                  words: [{(fetch_make_patchlist)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(patchlist)})]
                )
              ]
              negated: F
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-s)} {(patchlist)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ ('Fetching ') 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Pipeline
                                    children: [
                                      (SimpleCommand
                                        words: [{(wc)} {(-l)}]
                                        redirects: [
                                          (Redir
                                            op: <Redir_Less '<'>
                                            fd: 16777215
                                            arg_word: {(patchlist)}
                                          )
                                        ]
                                      )
                                      (C {(tr)} {(-d)} {(SQ <' '>)})
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [8323 8341]
                          ) (' ')
                        )
                      }
                    )
                    (C {(echo)} {(${ VSub_Name NDEBUG)} 
                      {(DQ ('metadata patches.') (${ VSub_Name DDSTATS))}
                    )
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [{(tr)} {(SQ <'|'>)} {(SQ <->)}]
                          redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(patchlist)})]
                        )
                        (C {(lam)} {(-s)} {(DQ (${ VSub_Name FETCHDIR) (/tp/))} {(-)} {(-s)} {(DQ (.gz))})
                        (SimpleCommand
                          words: [
                            {(xargs)}
                            {(${ VSub_Name XARGST)}
                            {(${ VSub_Name PHTTPGET)}
                            {(${ VSub_Name SERVERNAME)}
                          ]
                          redirects: [
                            (Redir
                              op: <Redir_Great '2>'>
                              fd: 2
                              arg_word: {(${ VSub_Name STATSREDIR)}
                            )
                          ]
                        )
                        (C {(fetch_progress)})
                      ]
                      negated: F
                    )
                    (C {(echo)} {(DQ (done.))})
                    (C {(echo)} {(-n)} {(DQ ('Applying metadata patches... '))})
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [{(tr)} {(SQ <'|'>)} {(SQ <' '>)}]
                          redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(patchlist)})]
                        )
                        (WhileUntil
                          keyword: <KW_While while>
                          cond: [(Sentence child:(C {(read)} {(X)} {(Y)}) terminator:<Op_Semi ';'>)]
                          body: 
                            (DoGroup
                              children: [
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} 
                                              {(DQ (${ VSub_Name X) (-) (${ VSub_Name Y) (.gz))} {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [
                                        (Sentence
                                          child: (ControlFlow token:<ControlFlow_Continue continue>)
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      spids: [16777215 8497]
                                    )
                                  ]
                                  spids: [16777215 8502]
                                )
                                (SimpleCommand
                                  words: [{(gunzip)} {(-c)}]
                                  redirects: [
                                    (Redir
                                      op: <Redir_Less '<'>
                                      fd: 16777215
                                      arg_word: {(${ VSub_Name X) (-) (${ VSub_Name Y) (.gz)}
                                    )
                                    (Redir
                                      op: <Redir_Great '>'>
                                      fd: 16777215
                                      arg_word: {(diff)}
                                    )
                                  ]
                                )
                                (SimpleCommand
                                  words: [{(gunzip)} {(-c)}]
                                  redirects: [
                                    (Redir
                                      op: <Redir_Less '<'>
                                      fd: 16777215
                                      arg_word: {(files/) (${ VSub_Name X) (.gz)}
                                    )
                                    (Redir
                                      op: <Redir_Great '>'>
                                      fd: 16777215
                                      arg_word: {(diff-OLD)}
                                    )
                                  ]
                                )
                                (Pipeline
                                  children: [
                                    (C {(grep)} {(-E)} {(SQ <'^-'>)} {(diff)})
                                    (C {(cut)} {(-c)} {(2-)})
                                    (WhileUntil
                                      keyword: <KW_While while>
                                      cond: [
                                        (Sentence
                                          child: (C {(read)} {(PREFIX)})
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      body: 
                                        (DoGroup
                                          children: [
                                            (C {(look)} {(DQ (${ VSub_Name PREFIX))} {(diff-OLD)})
                                          ]
                                          spids: [8576 8590]
                                        )
                                    )
                                    (SimpleCommand
                                      words: [{(sort)}]
                                      redirects: [
                                        (Redir
                                          op: <Redir_Great '>'>
                                          fd: 16777215
                                          arg_word: {(diff-rm)}
                                        )
                                      ]
                                    )
                                  ]
                                  negated: F
                                )
                                (Pipeline
                                  children: [
                                    (C {(grep)} {(-E)} {(SQ <'^\\+'>)} {(diff)})
                                    (SimpleCommand
                                      words: [{(cut)} {(-c)} {(2-)}]
                                      redirects: [
                                        (Redir
                                          op: <Redir_Great '>'>
                                          fd: 16777215
                                          arg_word: {(diff-add)}
                                        )
                                      ]
                                    )
                                  ]
                                  negated: F
                                )
                                (Pipeline
                                  children: [
                                    (C {(comm)} {(-23)} {(diff-OLD)} {(diff-rm)})
                                    (SimpleCommand
                                      words: [{(sort)} {(-)} {(diff-add)}]
                                      redirects: [
                                        (Redir
                                          op: <Redir_Great '>'>
                                          fd: 16777215
                                          arg_word: {(diff-NEW)}
                                        )
                                      ]
                                    )
                                  ]
                                  negated: F
                                )
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} 
                                              {
                                                (CommandSubPart
                                                  command_list: 
                                                    (CommandList
                                                      children: [
                                                        (C {(${ VSub_Name SHA256)} {(-q)} {(diff-NEW)})
                                                      ]
                                                    )
                                                  left_token: <Left_Backtick '`'>
                                                  spids: [8658 8666]
                                                )
                                              } {(Lit_Other '=')} {(${ VSub_Name Y)} {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [
                                        (C {(mv)} {(diff-NEW)} {(files/) (${ VSub_Name Y)})
                                        (C {(gzip)} {(-n)} {(files/) (${ VSub_Name Y)})
                                      ]
                                      spids: [16777215 8677]
                                    )
                                  ]
                                  else_action: [(C {(mv)} {(diff-NEW)} {(${ VSub_Name Y) (.bad)})]
                                  spids: [8700 8713]
                                )
                                (C {(rm)} {(-f)} {(${ VSub_Name X) (-) (${ VSub_Name Y) (.gz)} {(diff)})
                                (C {(rm)} {(-f)} {(diff-OLD)} {(diff-NEW)} {(diff-add)} {(diff-rm)})
                              ]
                              spids: [8472 8745]
                            )
                          redirects: [
                            (Redir
                              op: <Redir_Great '2>'>
                              fd: 2
                              arg_word: {(${ VSub_Name QUIETREDIR)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (C {(echo)} {(DQ (done.))})
                  ]
                  spids: [16777215 8310]
                )
              ]
              spids: [16777215 8760]
            )
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(cut)} {(-f)} {(2)} {(-d)} {(SQ <'|'>)}]
                  redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(tINDEX.new)})]
                )
                (WhileUntil
                  keyword: <KW_While while>
                  cond: [(Sentence child:(C {(read)} {(Y)}) terminator:<Op_Semi ';'>)]
                  body: 
                    (DoGroup
                      children: [
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} 
                                      {(DQ (files/) (${ VSub_Name Y) (.gz))} {(Lit_Other ']')}
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (Sentence
                                  child: (C {(echo)} {(${ VSub_Name Y)})
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              spids: [16777215 8816]
                            )
                          ]
                          spids: [16777215 8827]
                        )
                      ]
                      spids: [8794 8830]
                    )
                )
                (SimpleCommand
                  words: [{(sort)} {(-u)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(filelist)})]
                )
              ]
              negated: F
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-s)} {(filelist)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ ('Fetching ') 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Pipeline
                                    children: [
                                      (SimpleCommand
                                        words: [{(wc)} {(-l)}]
                                        redirects: [
                                          (Redir
                                            op: <Redir_Less '<'>
                                            fd: 16777215
                                            arg_word: {(filelist)}
                                          )
                                        ]
                                      )
                                      (C {(tr)} {(-d)} {(SQ <' '>)})
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [8865 8883]
                          ) (' ')
                        )
                      }
                    )
                    (C {(echo)} {(${ VSub_Name NDEBUG)} {(DQ ('metadata files... '))})
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [
                            {(lam)}
                            {(-s)}
                            {(DQ (${ VSub_Name FETCHDIR) (/m/))}
                            {(-)}
                            {(-s)}
                            {(DQ (.gz))}
                          ]
                          redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(filelist)})]
                        )
                        (SimpleCommand
                          words: [
                            {(xargs)}
                            {(${ VSub_Name XARGST)}
                            {(${ VSub_Name PHTTPGET)}
                            {(${ VSub_Name SERVERNAME)}
                          ]
                          redirects: [
                            (Redir
                              op: <Redir_Great '2>'>
                              fd: 2
                              arg_word: {(${ VSub_Name QUIETREDIR)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (WhileUntil
                      keyword: <KW_While while>
                      cond: [(Sentence child:(C {(read)} {(Y)}) terminator:<Op_Semi ';'>)]
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (Pipeline
                                          children: [
                                            (C {(Lit_Other '[')} {(-f)} {(${ VSub_Name Y) (.gz)} 
                                              {(Lit_Other ']')}
                                            )
                                          ]
                                          negated: T
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} {(DQ (failed.))})
                                    (ControlFlow
                                      token: <ControlFlow_Return return>
                                      arg_word: {(1)}
                                    )
                                  ]
                                  spids: [16777215 8974]
                                )
                              ]
                              spids: [16777215 8989]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} 
                                          {
                                            (CommandSubPart
                                              command_list: 
                                                (CommandList
                                                  children: [
                                                    (Pipeline
                                                      children: [
                                                        (SimpleCommand
                                                          words: [{(gunzip)} {(-c)}]
                                                          redirects: [
                                                            (Redir
                                                              op: <Redir_Less '<'>
                                                              fd: 16777215
                                                              arg_word: {(${ VSub_Name Y) (.gz)}
                                                            )
                                                          ]
                                                        )
                                                        (C {(${ VSub_Name SHA256)} {(-q)})
                                                      ]
                                                      negated: F
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_Backtick '`'>
                                              spids: [8996 9016]
                                            )
                                          } {(Lit_Other '=')} {(${ VSub_Name Y)} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(mv)} {(${ VSub_Name Y) (.gz)} {(files/) (${ VSub_Name Y) (.gz)})
                                  ]
                                  spids: [16777215 9027]
                                )
                              ]
                              else_action: [
                                (C {(echo)} {(DQ ('metadata is corrupt.'))})
                                (ControlFlow
                                  token: <ControlFlow_Return return>
                                  arg_word: {(1)}
                                )
                              ]
                              spids: [9044 9059]
                            )
                          ]
                          spids: [8955 9062]
                        )
                      redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(filelist)})]
                    )
                    (C {(echo)} {(DQ (done.))})
                  ]
                  spids: [16777215 8856]
                )
              ]
              spids: [16777215 9076]
            )
            (SimpleCommand
              words: [{(cut)} {(-f)} {(2)} {(-d)} {(SQ <'|'>)} {(tINDEX.new)}]
              redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(filelist)})]
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [(Sentence child:(C {(read)} {(X)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(fetch_metadata_sanity)} {(${ VSub_Name X)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                  ]
                  spids: [9109 9125]
                )
              redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(filelist)})]
            )
            (Pipeline
              children: [
                (C {(cut)} {(-f)} {(2)} {(-d)} {(SQ <'|'>)} {(tINDEX.present)})
                (SimpleCommand
                  words: [{(sort)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(oldfiles)})]
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(cut)} {(-f)} {(2)} {(-d)} {(SQ <'|'>)} {(tINDEX.new)})
                (C {(sort)})
                (C {(comm)} {(-13)} {(-)} {(oldfiles)})
                (C {(lam)} {(-s)} {(DQ (files/))} {(-)} {(-s)} {(DQ (.gz))})
                (C {(xargs)} {(rm)} {(-f)})
              ]
              negated: F
            )
            (C {(rm)} {(patchlist)} {(filelist)} {(oldfiles)})
            (C {(rm)} {(${ VSub_Name TINDEXHASH)})
            (C {(mv)} {(tINDEX.new)} {(tINDEX.present)})
            (C {(mv)} {(tag.new)} {(tag)})
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [8233]
        )
      spids: [8228 8232]
    )
    (FuncDef
      name: fetch_filter_metadata_components
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:METAHASH)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(look)} {(DQ ($ VSub_Number '$1') ('|'))} {(tINDEX.present)})
                                  (C {(cut)} {(-f)} {(2)} {(-d)} {(SQ <'|'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [9276 9299]
                      )
                    }
                  spids: [9275]
                )
              ]
              spids: [9275]
            )
            (SimpleCommand
              words: [{(gunzip)} {(-c)}]
              redirects: [
                (Redir
                  op: <Redir_Less '<'>
                  fd: 16777215
                  arg_word: {(files/) (${ VSub_Name METAHASH) (.gz)}
                )
                (Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_Number '$1') (.all)}
                )
              ]
            )
            (ForEach
              iter_name: C
              iter_words: [{(${ VSub_Name COMPONENTS)}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(look)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Pipeline
                                    children: [
                                      (C {(echo)} {(${ VSub_Name C)})
                                      (C {(tr)} {(SQ </>)} {(SQ <'|'>)})
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [9342 9360]
                          ) ('|')
                        )
                      } {($ VSub_Number '$1') (.all)}
                    )
                  ]
                  spids: [9336 9368]
                )
              redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{($ VSub_Number '$1')})]
              spids: [9330 9334]
            )
            (C {(rm)} {($ VSub_Number '$1') (.all)})
          ]
          spids: [9272]
        )
      spids: [9267 9271]
    )
    (FuncDef
      name: fetch_filter_metadata
      body: 
        (BraceGroup
          children: [
            (C {(fetch_filter_metadata_components)} {($ VSub_Number '$1')})
            (Pipeline
              children: [
                (C {(cut)} {(-f)} {(3-)} {(-d)} {(SQ <'|'>)} {($ VSub_Number '$1')})
                (C {(sed)} {(-e)} {(SQ <'s,/|d|,|d|,'>)})
                (C {(sed)} {(-e)} {(SQ <'s,/|-|,|-|,'>)})
                (SimpleCommand
                  words: [{(sort)} {(-u)}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {($ VSub_Number '$1') (.tmp)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (ForEach
                  iter_name: X
                  iter_words: [{(${ VSub_Name IGNOREPATHS)}]
                  do_arg_iter: F
                  body: 
                    (DoGroup
                      children: [
                        (C {(grep)} {(-E)} {(DQ ('^') (${ VSub_Name X))} {($ VSub_Number '$1') (.tmp)})
                      ]
                      spids: [9499 9517]
                    )
                  spids: [9493 9497]
                )
                (C {(sort)} {(-u)})
                (SimpleCommand
                  words: [{(comm)} {(-13)} {(-)} {($ VSub_Number '$1') (.tmp)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{($ VSub_Number '$1')})]
                )
              ]
              negated: F
            )
            (C {(rm)} {($ VSub_Number '$1') (.tmp)})
          ]
          spids: [9405]
        )
      spids: [9400 9404]
    )
    (FuncDef
      name: fetch_filter_kernel_names
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (C {(grep)} {(Lit_Other '^') (/boot/) ($ VSub_Number '$2')} {($ VSub_Number '$1')})
                (C {(sed)} {(-e)} 
                  {(DQ ('s,/boot/') ($ VSub_Number '$2') (',') (${ VSub_Name KERNELDIR) (',g'))}
                )
                (SimpleCommand
                  words: [{(sort)} {(-)} {($ VSub_Number '$1')}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {($ VSub_Number '$1') (.tmp)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {(mv)} {($ VSub_Number '$1') (.tmp)} {($ VSub_Number '$1')})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-d)} {(/boot/) ($ VSub_Number '$2')} {(Lit_Other ']')})
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(grep)}
                        {(-v)}
                        {(Lit_Other '^') (/boot/) ($ VSub_Number '$2')}
                        {($ VSub_Number '$1')}
                      ]
                      redirects: [
                        (Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {($ VSub_Number '$1') (.tmp)}
                        )
                      ]
                    )
                    (C {(mv)} {($ VSub_Number '$1') (.tmp)} {($ VSub_Number '$1')})
                  ]
                  spids: [16777215 9645]
                )
              ]
              spids: [16777215 9672]
            )
          ]
          spids: [9579]
        )
      spids: [9574 9578]
    )
    (FuncDef
      name: fetch_inspect_system
      body: 
        (BraceGroup
          children: [
            (C {(rm)} {(-f)} {(.err)})
            (C {(echo)} {(-n)} {(DQ ('Inspecting system... '))})
            (Pipeline
              children: [
                (C {(cat)} {($ VSub_Number '$1')} {($ VSub_Number '$3')})
                (C {(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)})
                (SimpleCommand
                  words: [{(sort)} {(-u)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(filelist)})]
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (WhileUntil
                  keyword: <KW_While while>
                  cond: [(Sentence child:(C {(read)} {(F)}) terminator:<Op_Semi ';'>)]
                  body: 
                    (DoGroup
                      children: [
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (Pipeline
                                      children: [
                                        (C {(Lit_Other '[')} {(-e)} 
                                          {(${ VSub_Name BASEDIR) (/) (${ VSub_Name F)} {(Lit_Other ']')}
                                        )
                                      ]
                                      negated: T
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (C {(echo)} {(DQ (${ VSub_Name F) ('|-||||||'))})
                                (ControlFlow
                                  token: <ControlFlow_Continue continue>
                                )
                              ]
                              spids: [16777215 9800]
                            )
                          ]
                          spids: [16777215 9816]
                        )
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (Pipeline
                                      children: [
                                        (C {(Lit_Other '[')} {(-r)} 
                                          {(${ VSub_Name BASEDIR) (/) (${ VSub_Name F)} {(Lit_Other ']')}
                                        )
                                      ]
                                      negated: T
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (SimpleCommand
                                  words: [
                                    {(echo)}
                                    {
                                      (DQ ('Cannot read file: ') (${ VSub_Name BASEDIR) (/) 
                                        (${ VSub_Name F)
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (Redir
                                      op: <Redir_Great '>'>
                                      fd: 16777215
                                      arg_word: {(/dev/stderr)}
                                    )
                                  ]
                                )
                                (C {(touch)} {(.err)})
                                (ControlFlow
                                  token: <ControlFlow_Return return>
                                  arg_word: {(1)}
                                )
                              ]
                              spids: [16777215 9838]
                            )
                          ]
                          spids: [16777215 9870]
                        )
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (C {(Lit_Other '[')} {(-L)} 
                                      {(${ VSub_Name BASEDIR) (/) (${ VSub_Name F)} {(Lit_Other ']')}
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (C {(echo)} {(-n)} {(DQ (${ VSub_Name F) ('|L|'))})
                                (Sentence
                                  child: 
                                    (C {(stat)} {(-n)} {(-f)} {(SQ <'%d-%i|%u|%g|%Mp%Lp|%Of|'>)} 
                                      {(${ VSub_Name BASEDIR) (/) (${ VSub_Name F)}
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                                (Sentence
                                  child: (C {(readlink)} {(${ VSub_Name BASEDIR) (/) (${ VSub_Name F)})
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              spids: [16777215 9895]
                            )
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (C {(Lit_Other '[')} {(-f)} 
                                      {(${ VSub_Name BASEDIR) (/) (${ VSub_Name F)} {(Lit_Other ']')}
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (C {(echo)} {(-n)} {(DQ (${ VSub_Name F) ('|f|'))})
                                (Sentence
                                  child: 
                                    (C {(stat)} {(-n)} {(-f)} {(SQ <'%d-%i|%u|%g|%Mp%Lp|%Of|'>)} 
                                      {(${ VSub_Name BASEDIR) (/) (${ VSub_Name F)}
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                                (Sentence
                                  child: 
                                    (C {(sha256)} {(-q)} {(${ VSub_Name BASEDIR) (/) (${ VSub_Name F)})
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              spids: [9942 9959]
                            )
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (C {(Lit_Other '[')} {(-d)} 
                                      {(${ VSub_Name BASEDIR) (/) (${ VSub_Name F)} {(Lit_Other ']')}
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (C {(echo)} {(-n)} {(DQ (${ VSub_Name F) ('|d|'))})
                                (Sentence
                                  child: 
                                    (C {(stat)} {(-f)} {(SQ <'%d-%i|%u|%g|%Mp%Lp|%Of|'>)} 
                                      {(${ VSub_Name BASEDIR) (/) (${ VSub_Name F)}
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              spids: [10008 10025]
                            )
                          ]
                          else_action: [
                            (SimpleCommand
                              words: [
                                {(echo)}
                                {
                                  (DQ ('Unknown file type: ') (${ VSub_Name BASEDIR) (/) 
                                    (${ VSub_Name F)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Redir_Great '>'>
                                  fd: 16777215
                                  arg_word: {(/dev/stderr)}
                                )
                              ]
                            )
                            (C {(touch)} {(.err)})
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [10058 10090]
                        )
                      ]
                      spids: [9774 10093]
                    )
                  redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(filelist)})]
                )
                (SimpleCommand
                  words: [{(sort)} {(-k)} {(3) (Lit_Comma ',') (3)} {(-t)} {(SQ <'|'>)}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {($ VSub_Number '$2') (.tmp)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {(rm)} {(filelist)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-f)} {(.err)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                  spids: [16777215 10143]
                )
              ]
              spids: [16777215 10151]
            )
            (Pipeline
              children: [
                (C {(cut)} {(-f)} {(1) (Lit_Comma ',') (3)} {(-d)} {(SQ <'|'>)} 
                  {($ VSub_Number '$2') (.tmp)}
                )
                (C {(sort)} {(-k)} {(1) (Lit_Comma ',') (1)} {(-t)} {(SQ <'|'>)})
                (C {(sort)} {(-s)} {(-u)} {(-k)} {(2) (Lit_Comma ',') (2)} {(-t)} {(SQ <'|'>)})
                (C {(join)} {(-1)} {(2)} {(-2)} {(3)} {(-t)} {(SQ <'|'>)} {(-)} {($ VSub_Number '$2') (.tmp)})
                (C {(awk)} {(-F)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\|'>)} {(-v)} 
                  {(Lit_VarLike 'OFS=') (EscapedLiteralPart token:<Lit_EscapedChar '\\|'>)} 
                  {
                    (SQ <'{\n'> <'\t\t    if (($2 == $3) || ($4 == "-"))\n'> 
                      <'\t\t\tprint $3,$4,$5,$6,$7,$8,$9,""\n'> <'\t\t    else\n'> <'\t\t\tprint $3,$4,$5,$6,$7,$8,$9,$2\n'> <'\t\t}'>
                    )
                  }
                )
                (SimpleCommand
                  words: [{(sort)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{($ VSub_Number '$2')})]
                )
              ]
              negated: F
            )
            (C {(rm)} {($ VSub_Number '$2') (.tmp)})
            (C {(echo)} {(DQ (done.))})
          ]
          spids: [9688]
        )
      spids: [9683 9687]
    )
    (FuncDef
      name: fetch_filter_mergechanges
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: F
              iter_words: [{($ VSub_Number '$1')} {($ VSub_Number '$2')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (Pipeline
                      children: [
                        (ForEach
                          iter_name: X
                          iter_words: [{(${ VSub_Name MERGECHANGES)}]
                          do_arg_iter: F
                          body: 
                            (DoGroup
                              children: [
                                (C {(grep)} {(-E)} {(DQ ('^') (${ VSub_Name X))} {(${ VSub_Name F)})
                              ]
                              spids: [10344 10363]
                            )
                          spids: [10338 10342]
                        )
                        (C {(cut)} {(-f)} {(1) (Lit_Comma ',') (2) (Lit_Comma ',') (7)} {(-d)} {(SQ <'|'>)})
                        (SimpleCommand
                          words: [{(sort)}]
                          redirects: [
                            (Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(${ VSub_Name F) (-values)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                  ]
                  spids: [10330 10397]
                )
              spids: [10324 10328]
            )
            (Pipeline
              children: [
                (C {(comm)} {(-13)} {($ VSub_Number '$1') (-values)} {($ VSub_Number '$2') (-values)})
                (C {(fgrep)} {(SQ <'|f|'>)})
                (SimpleCommand
                  words: [{(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {($ VSub_Number '$2') (-paths)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [(Sentence child:(C {(read)} {(X)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (Pipeline
                      children: [
                        (C {(look)} {(DQ (${ VSub_Name X) ('|'))} {($ VSub_Number '$1') (-values)})
                        (C {(head)} {(-1)})
                      ]
                      negated: F
                    )
                  ]
                  spids: [10477 10500]
                )
              redirects: [
                (Redir
                  op: <Redir_Less '<'>
                  fd: 16777215
                  arg_word: {($ VSub_Number '$2') (-paths)}
                )
                (Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_Number '$3')}
                )
              ]
            )
            (C {(rm)} {($ VSub_Number '$1') (-values)} {($ VSub_Number '$2') (-values)} 
              {($ VSub_Number '$2') (-paths)}
            )
          ]
          spids: [10312]
        )
      spids: [10307 10311]
    )
    (FuncDef
      name: fetch_filter_unmodified_notpresent
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (ForEach
                  iter_name: X
                  iter_words: [{(${ VSub_Name UPDATEIFUNMODIFIED)}]
                  do_arg_iter: F
                  body: 
                    (DoGroup
                      children: [
                        (C {(grep)} {(-E)} {(DQ ('^') (${ VSub_Name X))} {($ VSub_Number '$1')})
                        (C {(grep)} {(-E)} {(DQ ('^') (${ VSub_Name X))} {($ VSub_Number '$3')})
                      ]
                      spids: [10585 10616]
                    )
                  spids: [10579 10583]
                )
                (C {(cut)} {(-f)} {(1) (Lit_Comma ',') (2) (Lit_Comma ',') (7)} {(-d)} {(SQ <'|'>)})
                (SimpleCommand
                  words: [{(sort)}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {($ VSub_Number '$1') (-values)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (ForEach
                  iter_name: X
                  iter_words: [{(${ VSub_Name UPDATEIFUNMODIFIED)}]
                  do_arg_iter: F
                  body: 
                    (DoGroup
                      children: [
                        (C {(grep)} {(-E)} {(DQ ('^') (${ VSub_Name X))} {($ VSub_Number '$2')})
                      ]
                      spids: [10664 10681]
                    )
                  spids: [10658 10662]
                )
                (C {(cut)} {(-f)} {(1) (Lit_Comma ',') (2) (Lit_Comma ',') (7)} {(-d)} {(SQ <'|'>)})
                (SimpleCommand
                  words: [{(sort)}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {($ VSub_Number '$2') (-values)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(comm)} {(-13)} {($ VSub_Number '$1') (-values)} {($ VSub_Number '$2') (-values)})
                (SimpleCommand
                  words: [{(sort)} {(-t)} {(SQ <'|'>)} {(-k)} {(1) (Lit_Comma ',') (1)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(mlines.tmp)})]
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)} {($ VSub_Number '$4')})
                (C {(sort)})
                (C {(join)} {(-v)} {(2)} {(-t)} {(SQ <'|'>)} {(-)} {(mlines.tmp)})
                (SimpleCommand
                  words: [{(sort)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(mlines)})]
                )
              ]
              negated: F
            )
            (C {(rm)} {($ VSub_Number '$1') (-values)} {($ VSub_Number '$2') (-values)} {(mlines.tmp)})
            (Pipeline
              children: [
                (C {(comm)} {(-13)} {($ VSub_Number '$1')} {($ VSub_Number '$2')})
                (C {(cut)} {(-f)} {(1) (Lit_Comma ',') (2) (Lit_Comma ',') (7)} {(-d)} {(SQ <'|'>)})
                (SimpleCommand
                  words: [{(fgrep)} {(SQ <'|-|'>)}]
                  redirects: [(Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(mlines)})]
                )
              ]
              negated: F
            )
            (ForEach
              iter_name: X
              iter_words: [{($ VSub_Number '$1')} {($ VSub_Number '$2')} {($ VSub_Number '$3')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (SimpleCommand
                      words: [
                        {(sort)}
                        {(-t)}
                        {(SQ <'|'>)}
                        {(-k)}
                        {(1) (Lit_Comma ',') (1)}
                        {(${ VSub_Name X)}
                      ]
                      redirects: [
                        (Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {(${ VSub_Name X) (.tmp)}
                        )
                      ]
                    )
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [{(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)}]
                          redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(mlines)})]
                        )
                        (C {(sort)})
                        (C {(join)} {(-v)} {(2)} {(-t)} {(SQ <'|'>)} {(-)} {(${ VSub_Name X) (.tmp)})
                        (SimpleCommand
                          words: [{(sort)}]
                          redirects: [
                            (Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(${ VSub_Name X)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (C {(rm)} {(${ VSub_Name X) (.tmp)})
                  ]
                  spids: [10885 10977]
                )
              spids: [10877 10883]
            )
            (Pipeline
              children: [
                (C {(fgrep)} {(-v)} {(SQ <'|-|'>)} {(mlines)})
                (SimpleCommand
                  words: [{(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(modifiedfiles)})]
                )
              ]
              negated: F
            )
            (C {(rm)} {(mlines)})
          ]
          spids: [10551]
        )
      spids: [10546 10550]
    )
    (FuncDef
      name: fetch_filter_allowadd
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(cut)} {(-f)} {(1) (Lit_Comma ',') (2)} {(-d)} {(SQ <'|'>)}]
                  redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{($ VSub_Number '$1')})]
                )
                (C {(fgrep)} {(SQ <'|-'>)})
                (SimpleCommand
                  words: [{(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(filesnotpresent)})]
                )
              ]
              negated: F
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name ALLOWADD)} {(KW_Bang '!') (Lit_Other '=')} 
                          {(DQ (yes))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [{(sort)}]
                          redirects: [
                            (Redir
                              op: <Redir_Less '<'>
                              fd: 16777215
                              arg_word: {($ VSub_Number '$2')}
                            )
                          ]
                        )
                        (C {(join)} {(-v)} {(1)} {(-t)} {(SQ <'|'>)} {(-)} {(filesnotpresent)})
                        (SimpleCommand
                          words: [{(sort)}]
                          redirects: [
                            (Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {($ VSub_Number '$2') (.tmp)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (C {(mv)} {($ VSub_Number '$2') (.tmp)} {($ VSub_Number '$2')})
                  ]
                  spids: [16777215 11105]
                )
              ]
              spids: [16777215 11152]
            )
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(sort)}]
                  redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{($ VSub_Number '$1')})]
                )
                (C {(join)} {(-v)} {(1)} {(-t)} {(SQ <'|'>)} {(-)} {(filesnotpresent)})
                (SimpleCommand
                  words: [{(sort)}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {($ VSub_Number '$1') (.tmp)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {(mv)} {($ VSub_Number '$1') (.tmp)} {($ VSub_Number '$1')})
            (C {(rm)} {(filesnotpresent)})
          ]
          spids: [11036]
        )
      spids: [11031 11035]
    )
    (FuncDef
      name: fetch_filter_allowdelete
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: X
              iter_words: [{($ VSub_Number '$1')} {($ VSub_Number '$2')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [{(cut)} {(-f)} {(1-2)} {(-d)} {(SQ <'|'>)}]
                          redirects: [
                            (Redir
                              op: <Redir_Less '<'>
                              fd: 16777215
                              arg_word: {(${ VSub_Name X)}
                            )
                          ]
                        )
                        (SimpleCommand
                          words: [{(sort)} {(-u)}]
                          redirects: [
                            (Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(${ VSub_Name X) (.nodes)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                  ]
                  spids: [11236 11272]
                )
              spids: [11230 11234]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name ALLOWDELETE)} 
                          {(KW_Bang '!') (Lit_Other '=')} {(DQ (yes))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(comm)}
                        {(-23)}
                        {($ VSub_Number '$1') (.nodes)}
                        {($ VSub_Number '$2') (.nodes)}
                      ]
                      redirects: [
                        (Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {($ VSub_Number '$1') (.badnodes)}
                        )
                      ]
                    )
                  ]
                  spids: [16777215 11298]
                )
              ]
              else_action: [
                (SimpleCommand
                  words: [{(Lit_Other ':')}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {($ VSub_Number '$1') (.badnodes)}
                    )
                  ]
                )
              ]
              spids: [11317 11328]
            )
            (Pipeline
              children: [
                (WhileUntil
                  keyword: <KW_While while>
                  cond: [(Sentence child:(C {(read)} {(X)}) terminator:<Op_Semi ';'>)]
                  body: 
                    (DoGroup
                      children: [(C {(look)} {(DQ (${ VSub_Name X) ('|'))} {($ VSub_Number '$1')})]
                      spids: [11343 11358]
                    )
                  redirects: [
                    (Redir
                      op: <Redir_Less '<'>
                      fd: 16777215
                      arg_word: {($ VSub_Number '$1') (.badnodes)}
                    )
                  ]
                )
                (SimpleCommand
                  words: [{(comm)} {(-13)} {(-)} {($ VSub_Number '$1')}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {($ VSub_Number '$1') (.tmp)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {(mv)} {($ VSub_Number '$1') (.tmp)} {($ VSub_Number '$1')})
            (C {(rm)} {($ VSub_Number '$1') (.badnodes)} {($ VSub_Number '$1') (.nodes)} 
              {($ VSub_Number '$2') (.nodes)}
            )
          ]
          spids: [11218]
        )
      spids: [11213 11217]
    )
    (FuncDef
      name: fetch_filter_modified_metadata
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: X
              iter_words: [{($ VSub_Number '$1')} {($ VSub_Number '$2')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (SimpleCommand
                      words: [{(cut)} {(-f)} {(1-6)} {(-d)} {(SQ <'|'>)}]
                      redirects: [
                        (Redir
                          op: <Redir_Less '<'>
                          fd: 16777215
                          arg_word: {(${ VSub_Name X)}
                        )
                        (Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {(${ VSub_Name X) (.metadata)}
                        )
                      ]
                    )
                  ]
                  spids: [11437 11466]
                )
              spids: [11431 11435]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name KEEPMODIFIEDMETADATA)} {(Lit_Other '=')} 
                          {(DQ (yes))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(comm)}
                        {(-13)}
                        {($ VSub_Number '$1') (.metadata)}
                        {($ VSub_Number '$2') (.metadata)}
                      ]
                      redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(keepmeta)})]
                    )
                  ]
                  spids: [16777215 11491]
                )
              ]
              else_action: [
                (SimpleCommand
                  words: [{(Lit_Other ':')}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(keepmeta)})]
                )
              ]
              spids: [11509 11519]
            )
            (SimpleCommand
              words: [{(Lit_Other ':')}]
              redirects: [
                (Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_Number '$3') (.remove)}
                )
              ]
            )
            (SimpleCommand
              words: [{(Lit_Other ':')}]
              redirects: [
                (Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_Number '$3') (.add)}
                )
              ]
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [(Sentence child:(C {(read)} {(LINE)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:NODE)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(echo)} {(DQ (${ VSub_Name LINE))})
                                          (C {(cut)} {(-f)} {(1-2)} {(-d)} {(SQ <'|'>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [11558 11580]
                              )
                            }
                          spids: [11557]
                        )
                      ]
                      spids: [11557]
                    )
                    (SimpleCommand
                      words: [{(look)} {(DQ (${ VSub_Name NODE) ('|'))} {($ VSub_Number '$3')}]
                      redirects: [
                        (Redir
                          op: <Redir_DGreat '>>'>
                          fd: 16777215
                          arg_word: {($ VSub_Number '$3') (.remove)}
                        )
                      ]
                    )
                    (Pipeline
                      children: [
                        (C {(look)} {(DQ (${ VSub_Name NODE) ('|'))} {($ VSub_Number '$3')})
                        (C {(cut)} {(-f)} {(7-)} {(-d)} {(SQ <'|'>)})
                        (SimpleCommand
                          words: [{(lam)} {(-s)} {(DQ (${ VSub_Name LINE) ('|'))} {(-)}]
                          redirects: [
                            (Redir
                              op: <Redir_DGreat '>>'>
                              fd: 16777215
                              arg_word: {($ VSub_Number '$3') (.add)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                  ]
                  spids: [11554 11648]
                )
              redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(keepmeta)})]
            )
            (Pipeline
              children: [
                (C {(sort)} {($ VSub_Number '$3') (.remove)})
                (C {(comm)} {(-13)} {(-)} {($ VSub_Number '$3')})
                (SimpleCommand
                  words: [{(sort)} {(-u)} {(-)} {($ VSub_Number '$3') (.add)}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {($ VSub_Number '$3') (.tmp)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {(mv)} {($ VSub_Number '$3') (.tmp)} {($ VSub_Number '$3')})
            (C {(rm)} {(keepmeta)} {($ VSub_Number '$1') (.metadata)} {($ VSub_Number '$2') (.metadata)} 
              {($ VSub_Number '$3') (.add)} {($ VSub_Number '$3') (.remove)}
            )
          ]
          spids: [11419]
        )
      spids: [11414 11418]
    )
    (FuncDef
      name: fetch_filter_uptodate
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(comm)} {(-23)} {($ VSub_Number '$1')} {($ VSub_Number '$2')}]
              redirects: [
                (Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_Number '$1') (.tmp)}
                )
              ]
            )
            (SimpleCommand
              words: [{(comm)} {(-13)} {($ VSub_Number '$1')} {($ VSub_Number '$2')}]
              redirects: [
                (Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_Number '$2') (.tmp)}
                )
              ]
            )
            (C {(mv)} {($ VSub_Number '$1') (.tmp)} {($ VSub_Number '$1')})
            (C {(mv)} {($ VSub_Number '$2') (.tmp)} {($ VSub_Number '$2')})
          ]
          spids: [11733]
        )
      spids: [11728 11732]
    )
    (FuncDef
      name: fetch_files_premerge
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-s)} {($ VSub_Number '$1')} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {(DQ ('Fetching files from ') (${ VSub_Name OLDRELNUM) (' for merging... '))}
                    )
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [{(fgrep)} {(SQ <'|f|'>)}]
                          redirects: [
                            (Redir
                              op: <Redir_Less '<'>
                              fd: 16777215
                              arg_word: {($ VSub_Number '$1')}
                            )
                          ]
                        )
                        (C {(cut)} {(-f)} {(3)} {(-d)} {(SQ <'|'>)})
                        (SimpleCommand
                          words: [{(sort)} {(-u)}]
                          redirects: [
                            (Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(files.wanted)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (WhileUntil
                      keyword: <KW_While while>
                      cond: [(Sentence child:(C {(read)} {(Y)}) terminator:<Op_Semi ';'>)]
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} 
                                          {(DQ (files/) (${ VSub_Name Y) (.gz))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Sentence
                                      child: (C {(echo)} {(${ VSub_Name Y)})
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  spids: [16777215 11905]
                                )
                              ]
                              spids: [16777215 11916]
                            )
                          ]
                          spids: [11883 11919]
                        )
                      redirects: [
                        (Redir
                          op: <Redir_Less '<'>
                          fd: 16777215
                          arg_word: {(files.wanted)}
                        )
                        (Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {(filelist)}
                        )
                      ]
                    )
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [
                            {(lam)}
                            {(-s)}
                            {(DQ (${ VSub_Name OLDFETCHDIR) (/f/))}
                            {(-)}
                            {(-s)}
                            {(DQ (.gz))}
                          ]
                          redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(filelist)})]
                        )
                        (SimpleCommand
                          words: [
                            {(xargs)}
                            {(${ VSub_Name XARGST)}
                            {(${ VSub_Name PHTTPGET)}
                            {(${ VSub_Name SERVERNAME)}
                          ]
                          redirects: [
                            (Redir
                              op: <Redir_Great '2>'>
                              fd: 2
                              arg_word: {(${ VSub_Name QUIETREDIR)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (WhileUntil
                      keyword: <KW_While while>
                      cond: [(Sentence child:(C {(read)} {(Y)}) terminator:<Op_Semi ';'>)]
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (Pipeline
                                          children: [
                                            (C {(Lit_Other '[')} {(-f)} {(${ VSub_Name Y) (.gz)} 
                                              {(Lit_Other ']')}
                                            )
                                          ]
                                          negated: T
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} {(DQ (failed.))})
                                    (ControlFlow
                                      token: <ControlFlow_Return return>
                                      arg_word: {(1)}
                                    )
                                  ]
                                  spids: [16777215 12014]
                                )
                              ]
                              spids: [16777215 12029]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} 
                                          {
                                            (CommandSubPart
                                              command_list: 
                                                (CommandList
                                                  children: [
                                                    (Pipeline
                                                      children: [
                                                        (SimpleCommand
                                                          words: [{(gunzip)} {(-c)}]
                                                          redirects: [
                                                            (Redir
                                                              op: <Redir_Less '<'>
                                                              fd: 16777215
                                                              arg_word: {(${ VSub_Name Y) (.gz)}
                                                            )
                                                          ]
                                                        )
                                                        (C {(${ VSub_Name SHA256)} {(-q)})
                                                      ]
                                                      negated: F
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_Backtick '`'>
                                              spids: [12036 12056]
                                            )
                                          } {(Lit_Other '=')} {(${ VSub_Name Y)} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(mv)} {(${ VSub_Name Y) (.gz)} {(files/) (${ VSub_Name Y) (.gz)})
                                  ]
                                  spids: [16777215 12067]
                                )
                              ]
                              else_action: [
                                (C {(echo)} {(DQ (${ VSub_Name Y) (' has incorrect hash.'))})
                                (ControlFlow
                                  token: <ControlFlow_Return return>
                                  arg_word: {(1)}
                                )
                              ]
                              spids: [12084 12102]
                            )
                          ]
                          spids: [11995 12105]
                        )
                      redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(filelist)})]
                    )
                    (C {(echo)} {(DQ (done.))})
                    (C {(rm)} {(filelist)} {(files.wanted)})
                  ]
                  spids: [16777215 11809]
                )
              ]
              spids: [16777215 12131]
            )
          ]
          spids: [11791]
        )
      spids: [11786 11790]
    )
    (FuncDef
      name: fetch_files_prepare
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(-n)} {(DQ ('Preparing to download files... '))})
            (ForEach
              iter_name: X
              iter_words: [{($ VSub_Number '$1')} {($ VSub_Number '$2')} {($ VSub_Number '$3')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [
                            {(cut)}
                            {(-f)}
                            {(1) (Lit_Comma ',') (2) (Lit_Comma ',') (7)}
                            {(-d)}
                            {(SQ <'|'>)}
                          ]
                          redirects: [
                            (Redir
                              op: <Redir_Less '<'>
                              fd: 16777215
                              arg_word: {(${ VSub_Name X)}
                            )
                          ]
                        )
                        (C {(fgrep)} {(SQ <'|f|'>)})
                        (C {(cut)} {(-f)} {(1) (Lit_Comma ',') (3)} {(-d)} {(SQ <'|'>)})
                        (SimpleCommand
                          words: [{(sort)}]
                          redirects: [
                            (Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(${ VSub_Name X) (.hashes)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                  ]
                  spids: [12184 12248]
                )
              spids: [12176 12182]
            )
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(cut)} {(-f)} {(2)} {(-d)} {(SQ <'|'>)}]
                  redirects: [
                    (Redir
                      op: <Redir_Less '<'>
                      fd: 16777215
                      arg_word: {($ VSub_Number '$3') (.hashes)}
                    )
                  ]
                )
                (C {(sort)} {(-u)})
                (WhileUntil
                  keyword: <KW_While while>
                  cond: [(Sentence child:(C {(read)} {(HASH)}) terminator:<Op_Semi ';'>)]
                  body: 
                    (DoGroup
                      children: [
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (Pipeline
                                      children: [
                                        (C {(Lit_Other '[')} {(-f)} {(files/) (${ VSub_Name HASH) (.gz)} 
                                          {(Lit_Other ']')}
                                        )
                                      ]
                                      negated: T
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [(C {(echo)} {(${ VSub_Name HASH)})]
                              spids: [16777215 12310]
                            )
                          ]
                          spids: [16777215 12320]
                        )
                      ]
                      spids: [12290 12323]
                    )
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(files.wanted)})]
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(comm)} {(-12)} {($ VSub_Number '$1') (.hashes)} {($ VSub_Number '$2') (.hashes)})
                (SimpleCommand
                  words: [{(sort)} {(-k)} {(1) (Lit_Comma ',') (1)} {(-t)} {(SQ <'|'>)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(unmodified.files)})]
                )
              ]
              negated: F
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [(Sentence child:(C {(read)} {(LINE)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:F)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(echo)} {(DQ (${ VSub_Name LINE))})
                                          (C {(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [12391 12413]
                              )
                            }
                          spids: [12390]
                        )
                      ]
                      spids: [12390]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:HASH)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(echo)} {(DQ (${ VSub_Name LINE))})
                                          (C {(cut)} {(-f)} {(2)} {(-d)} {(SQ <'|'>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [12417 12439]
                              )
                            }
                          spids: [12416]
                        )
                      ]
                      spids: [12416]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-f)} {(files/) (${ VSub_Name HASH) (.gz)} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                          spids: [16777215 12462]
                        )
                      ]
                      spids: [16777215 12468]
                    )
                    (C {(cp)} {(DQ (${ VSub_Name BASEDIR) (/) (${ VSub_Name F))} {(tmpfile)})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} 
                                  {
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [(C {(sha256)} {(-q)} {(tmpfile)})]
                                        )
                                      left_token: <Left_Backtick '`'>
                                      spids: [12495 12501]
                                    )
                                  } {(KW_Bang '!') (Lit_Other '=')} {(${ VSub_Name HASH)} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)})
                            (C {(echo)} 
                              {(DQ ('File changed while FreeBSD Update running: ') (${ VSub_Name F))}
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [16777215 12513]
                        )
                      ]
                      spids: [16777215 12534]
                    )
                    (SimpleCommand
                      words: [{(gzip)} {(-c)}]
                      redirects: [
                        (Redir
                          op: <Redir_Less '<'>
                          fd: 16777215
                          arg_word: {(tmpfile)}
                        )
                        (Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {(files/) (${ VSub_Name HASH) (.gz)}
                        )
                      ]
                    )
                    (C {(rm)} {(tmpfile)})
                  ]
                  spids: [12387 12564]
                )
              redirects: [
                (Redir
                  op: <Redir_Less '<'>
                  fd: 16777215
                  arg_word: {($ VSub_Number '$2') (.hashes)}
                )
              ]
            )
            (Pipeline
              children: [
                (C {(sort)} {(-k)} {(1) (Lit_Comma ',') (1)} {(-t)} {(SQ <'|'>)} 
                  {($ VSub_Number '$3') (.hashes)}
                )
                (C {(join)} {(-t)} {(SQ <'|'>)} {(-o)} {(2.2) (Lit_Comma ',') (1.2)} {(-)} 
                  {(unmodified.files)}
                )
                (SimpleCommand
                  words: [{(fetch_make_patchlist)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(patchlist)})]
                )
              ]
              negated: F
            )
            (C {(rm)} {(unmodified.files)} {($ VSub_Number '$1') (.hashes)} 
              {($ VSub_Number '$2') (.hashes)} {($ VSub_Number '$3') (.hashes)}
            )
            (C {(rm)} {($ VSub_Number '$1')})
            (C {(echo)} {(DQ (done.))})
          ]
          spids: [12150]
        )
      spids: [12145 12149]
    )
    (FuncDef
      name: fetch_files
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-s)} {(patchlist)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ ('Fetching ') 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Pipeline
                                    children: [
                                      (SimpleCommand
                                        words: [{(wc)} {(-l)}]
                                        redirects: [
                                          (Redir
                                            op: <Redir_Less '<'>
                                            fd: 16777215
                                            arg_word: {(patchlist)}
                                          )
                                        ]
                                      )
                                      (C {(tr)} {(-d)} {(SQ <' '>)})
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [12703 12721]
                          ) (' ')
                        )
                      }
                    )
                    (C {(echo)} {(${ VSub_Name NDEBUG)} {(DQ (patches.) (${ VSub_Name DDSTATS))})
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [{(tr)} {(SQ <'|'>)} {(SQ <->)}]
                          redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(patchlist)})]
                        )
                        (C {(lam)} {(-s)} {(DQ (${ VSub_Name PATCHDIR) (/))} {(-)})
                        (SimpleCommand
                          words: [
                            {(xargs)}
                            {(${ VSub_Name XARGST)}
                            {(${ VSub_Name PHTTPGET)}
                            {(${ VSub_Name SERVERNAME)}
                          ]
                          redirects: [
                            (Redir
                              op: <Redir_Great '2>'>
                              fd: 2
                              arg_word: {(${ VSub_Name STATSREDIR)}
                            )
                          ]
                        )
                        (C {(fetch_progress)})
                      ]
                      negated: F
                    )
                    (C {(echo)} {(DQ (done.))})
                    (C {(echo)} {(-n)} {(DQ ('Applying patches... '))})
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [{(tr)} {(SQ <'|'>)} {(SQ <' '>)}]
                          redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(patchlist)})]
                        )
                        (WhileUntil
                          keyword: <KW_While while>
                          cond: [(Sentence child:(C {(read)} {(X)} {(Y)}) terminator:<Op_Semi ';'>)]
                          body: 
                            (DoGroup
                              children: [
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} 
                                              {(DQ (${ VSub_Name X) (-) (${ VSub_Name Y))} {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [
                                        (Sentence
                                          child: (ControlFlow token:<ControlFlow_Continue continue>)
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      spids: [16777215 12870]
                                    )
                                  ]
                                  spids: [16777215 12875]
                                )
                                (SimpleCommand
                                  words: [{(gunzip)} {(-c)}]
                                  redirects: [
                                    (Redir
                                      op: <Redir_Less '<'>
                                      fd: 16777215
                                      arg_word: {(files/) (${ VSub_Name X) (.gz)}
                                    )
                                    (Redir
                                      op: <Redir_Great '>'>
                                      fd: 16777215
                                      arg_word: {(OLD)}
                                    )
                                  ]
                                )
                                (C {(bspatch)} {(OLD)} {(NEW)} {(${ VSub_Name X) (-) (${ VSub_Name Y)})
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} 
                                              {
                                                (CommandSubPart
                                                  command_list: 
                                                    (CommandList
                                                      children: [
                                                        (C {(${ VSub_Name SHA256)} {(-q)} {(NEW)})
                                                      ]
                                                    )
                                                  left_token: <Left_Backtick '`'>
                                                  spids: [12916 12924]
                                                )
                                              } {(Lit_Other '=')} {(${ VSub_Name Y)} {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [
                                        (C {(mv)} {(NEW)} {(files/) (${ VSub_Name Y)})
                                        (C {(gzip)} {(-n)} {(files/) (${ VSub_Name Y)})
                                      ]
                                      spids: [16777215 12935]
                                    )
                                  ]
                                  spids: [16777215 12958]
                                )
                                (C {(rm)} {(-f)} {(diff)} {(OLD)} {(NEW)} 
                                  {(${ VSub_Name X) (-) (${ VSub_Name Y)}
                                )
                              ]
                              spids: [12846 12980]
                            )
                          redirects: [
                            (Redir
                              op: <Redir_Great '2>'>
                              fd: 2
                              arg_word: {(${ VSub_Name QUIETREDIR)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (C {(echo)} {(DQ (done.))})
                  ]
                  spids: [16777215 12694]
                )
              ]
              spids: [16777215 12995]
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [(Sentence child:(C {(read)} {(Y)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} 
                                  {(DQ (files/) (${ VSub_Name Y) (.gz))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Sentence
                              child: (C {(echo)} {(${ VSub_Name Y)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [16777215 13032]
                        )
                      ]
                      spids: [16777215 13043]
                    )
                  ]
                  spids: [13010 13046]
                )
              redirects: [
                (Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(files.wanted)})
                (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(filelist)})
              ]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-s)} {(filelist)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ ('Fetching ') 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Pipeline
                                    children: [
                                      (SimpleCommand
                                        words: [{(wc)} {(-l)}]
                                        redirects: [
                                          (Redir
                                            op: <Redir_Less '<'>
                                            fd: 16777215
                                            arg_word: {(filelist)}
                                          )
                                        ]
                                      )
                                      (C {(tr)} {(-d)} {(SQ <' '>)})
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [13078 13096]
                          ) (' ')
                        )
                      }
                    )
                    (C {(echo)} {(${ VSub_Name NDEBUG)} {(DQ ('files... '))})
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [
                            {(lam)}
                            {(-s)}
                            {(DQ (${ VSub_Name FETCHDIR) (/f/))}
                            {(-)}
                            {(-s)}
                            {(DQ (.gz))}
                          ]
                          redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(filelist)})]
                        )
                        (SimpleCommand
                          words: [
                            {(xargs)}
                            {(${ VSub_Name XARGST)}
                            {(${ VSub_Name PHTTPGET)}
                            {(${ VSub_Name SERVERNAME)}
                          ]
                          redirects: [
                            (Redir
                              op: <Redir_Great '2>'>
                              fd: 2
                              arg_word: {(${ VSub_Name QUIETREDIR)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (WhileUntil
                      keyword: <KW_While while>
                      cond: [(Sentence child:(C {(read)} {(Y)}) terminator:<Op_Semi ';'>)]
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (Pipeline
                                          children: [
                                            (C {(Lit_Other '[')} {(-f)} {(${ VSub_Name Y) (.gz)} 
                                              {(Lit_Other ']')}
                                            )
                                          ]
                                          negated: T
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} {(DQ (failed.))})
                                    (ControlFlow
                                      token: <ControlFlow_Return return>
                                      arg_word: {(1)}
                                    )
                                  ]
                                  spids: [16777215 13187]
                                )
                              ]
                              spids: [16777215 13202]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} 
                                          {
                                            (CommandSubPart
                                              command_list: 
                                                (CommandList
                                                  children: [
                                                    (Pipeline
                                                      children: [
                                                        (SimpleCommand
                                                          words: [{(gunzip)} {(-c)}]
                                                          redirects: [
                                                            (Redir
                                                              op: <Redir_Less '<'>
                                                              fd: 16777215
                                                              arg_word: {(${ VSub_Name Y) (.gz)}
                                                            )
                                                          ]
                                                        )
                                                        (C {(${ VSub_Name SHA256)} {(-q)})
                                                      ]
                                                      negated: F
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_Backtick '`'>
                                              spids: [13209 13229]
                                            )
                                          } {(Lit_Other '=')} {(${ VSub_Name Y)} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(mv)} {(${ VSub_Name Y) (.gz)} {(files/) (${ VSub_Name Y) (.gz)})
                                  ]
                                  spids: [16777215 13240]
                                )
                              ]
                              else_action: [
                                (C {(echo)} {(DQ (${ VSub_Name Y) (' has incorrect hash.'))})
                                (ControlFlow
                                  token: <ControlFlow_Return return>
                                  arg_word: {(1)}
                                )
                              ]
                              spids: [13257 13275]
                            )
                          ]
                          spids: [13168 13278]
                        )
                      redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(filelist)})]
                    )
                    (C {(echo)} {(DQ (done.))})
                  ]
                  spids: [16777215 13069]
                )
              ]
              spids: [16777215 13292]
            )
            (C {(rm)} {(files.wanted)} {(filelist)} {(patchlist)})
          ]
          spids: [12676]
        )
      spids: [12671 12675]
    )
    (FuncDef
      name: fetch_create_manifest
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-L)} {(DQ (${ VSub_Name BDHASH) (-install))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(rm)} {(-r)} {(${ VSub_Name BDHASH) (-install/)})
                    (C {(rm)} {(${ VSub_Name BDHASH) (-install)})
                  ]
                  spids: [16777215 13345]
                )
              ]
              spids: [16777215 13366]
            )
            (Pipeline
              children: [
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: (C {(Lit_Other '[')} {(-s)} {(modifiedfiles)} {(Lit_Other ']')})
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (C {(echo)})
                        (C {(echo)} {(-n)} {(DQ ('The following files are affected by updates, '))})
                        (C {(echo)} {(DQ ('but no changes have'))})
                        (C {(echo)} {(-n)} {(DQ ('been downloaded because the files have been '))})
                        (C {(echo)} {(DQ ('modified locally:'))})
                        (C {(cat)} {(modifiedfiles)})
                      ]
                      spids: [16777215 13385]
                    )
                  ]
                  spids: [16777215 13428]
                )
                (C {($ VSub_Name '$PAGER')})
              ]
              negated: F
            )
            (C {(rm)} {(modifiedfiles)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (Pipeline
                              children: [
                                (C {(Lit_Other '[')} {(-s)} {(INDEX-PRESENT)} {(Lit_Other ']')})
                              ]
                              negated: T
                            )
                            (Pipeline
                              children: [(C {(Lit_Other '[')} {(-s)} {(INDEX-NEW)} {(Lit_Other ']')})]
                              negated: T
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(rm)} {(INDEX-PRESENT)} {(INDEX-NEW)})
                    (C {(echo)})
                    (C {(echo)} {(-n)} {(DQ ('No updates needed to update system to '))})
                    (C {(echo)} {(DQ (${ VSub_Name RELNUM) (-p) (${ VSub_Name RELPATCHNUM) (.))})
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [16777215 13471]
                )
              ]
              spids: [16777215 13510]
            )
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)}]
                  redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(INDEX-PRESENT)})]
                )
                (SimpleCommand
                  words: [{(sort)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-PRESENT.flist)})]
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)}]
                  redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(INDEX-NEW)})]
                )
                (SimpleCommand
                  words: [{(sort)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-NEW.flist)})]
                )
              ]
              negated: F
            )
            (SimpleCommand
              words: [{(comm)} {(-23)} {(INDEX-PRESENT.flist)} {(INDEX-NEW.flist)}]
              redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(files.removed)})]
            )
            (SimpleCommand
              words: [{(comm)} {(-13)} {(INDEX-PRESENT.flist)} {(INDEX-NEW.flist)}]
              redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(files.added)})]
            )
            (SimpleCommand
              words: [{(comm)} {(-12)} {(INDEX-PRESENT.flist)} {(INDEX-NEW.flist)}]
              redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(files.updated)})]
            )
            (C {(rm)} {(INDEX-PRESENT.flist)} {(INDEX-NEW.flist)})
            (Pipeline
              children: [
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: (C {(Lit_Other '[')} {(-s)} {(files.removed)} {(Lit_Other ']')})
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (C {(echo)})
                        (C {(echo)} {(-n)} {(DQ ('The following files will be removed '))})
                        (C {(echo)} 
                          {
                            (DQ ('as part of updating to ') (${ VSub_Name RELNUM) (-p) 
                              (${ VSub_Name RELPATCHNUM) (':')
                            )
                          }
                        )
                        (C {(cat)} {(files.removed)})
                      ]
                      spids: [16777215 13636]
                    )
                  ]
                  spids: [16777215 13671]
                )
                (C {($ VSub_Name '$PAGER')})
              ]
              negated: F
            )
            (C {(rm)} {(files.removed)})
            (Pipeline
              children: [
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: (C {(Lit_Other '[')} {(-s)} {(files.added)} {(Lit_Other ']')})
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (C {(echo)})
                        (C {(echo)} {(-n)} {(DQ ('The following files will be added '))})
                        (C {(echo)} 
                          {
                            (DQ ('as part of updating to ') (${ VSub_Name RELNUM) (-p) 
                              (${ VSub_Name RELPATCHNUM) (':')
                            )
                          }
                        )
                        (C {(cat)} {(files.added)})
                      ]
                      spids: [16777215 13699]
                    )
                  ]
                  spids: [16777215 13734]
                )
                (C {($ VSub_Name '$PAGER')})
              ]
              negated: F
            )
            (C {(rm)} {(files.added)})
            (Pipeline
              children: [
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: (C {(Lit_Other '[')} {(-s)} {(files.updated)} {(Lit_Other ']')})
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (C {(echo)})
                        (C {(echo)} {(-n)} {(DQ ('The following files will be updated '))})
                        (C {(echo)} 
                          {
                            (DQ ('as part of updating to ') (${ VSub_Name RELNUM) (-p) 
                              (${ VSub_Name RELPATCHNUM) (':')
                            )
                          }
                        )
                        (C {(cat)} {(files.updated)})
                      ]
                      spids: [16777215 13762]
                    )
                  ]
                  spids: [16777215 13798]
                )
                (C {($ VSub_Name '$PAGER')})
              ]
              negated: F
            )
            (C {(rm)} {(files.updated)})
            (AndOr
              ops: [Op_DPipe]
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:MDIR)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(mktemp)} {(-d)} {(install.XXXXXX)})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [13816 13822]
                          )
                        }
                      spids: [13815]
                    )
                  ]
                  spids: [13815]
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (C {(mv)} {(INDEX-PRESENT)} {(${ VSub_Name MDIR) (/INDEX-OLD)})
            (C {(mv)} {(INDEX-NEW)} {(${ VSub_Name MDIR) (/INDEX-NEW)})
            (C {(ln)} {(-s)} {(${ VSub_Name MDIR)} {(${ VSub_Name BDHASH) (-install)})
          ]
          spids: [13322]
        )
      spids: [13317 13321]
    )
    (FuncDef
      name: fetch_warn_eol
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NOWTIME)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(date)} {(DQ ('+%s'))})])
                        left_token: <Left_Backtick '`'>
                        spids: [13893 13899]
                      )
                    }
                  spids: [13892]
                )
              ]
              spids: [13892]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-f)} {(lasteolwarn)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:LASTWARN)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(cat)} {(lasteolwarn)})])
                                left_token: <Left_Backtick '`'>
                                spids: [13922 13926]
                              )
                            }
                          spids: [13921]
                        )
                      ]
                      spids: [13921]
                    )
                  ]
                  spids: [16777215 13918]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:LASTWARN)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(expr)} {(${ VSub_Name NOWTIME)} {(-)} {(63072000)})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [13933 13943]
                          )
                        }
                      spids: [13932]
                    )
                  ]
                  spids: [13932]
                )
              ]
              spids: [13929 13946]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name EOLTIME)} {(-lt)} {(${ VSub_Name NOWTIME)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)})
                    (SimpleCommand
                      words: [{(cat)}]
                      redirects: [
                        (HereDoc
                          op: <Redir_DLessDash '<<-'>
                          fd: 16777215
                          here_begin: {(EOF)}
                          here_end_span_id: 14002
                          stdin_parts: [
                            ('WARNING: ')
                            (CommandSubPart
                              command_list: (CommandList children:[(C {(uname)} {(-sr)})])
                              left_token: <Left_Backtick '`'>
                              spids: [13983 13987]
                            )
                            (' HAS PASSED ITS END-OF-LIFE DATE.\n')
                            ('Any security issues discovered after ')
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [(C {(date)} {(-r)} {(${ VSub_Name EOLTIME)})]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [13990 13998]
                            )
                            ('\n')
                            ('will not have been corrected.\n')
                          ]
                        )
                      ]
                    )
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 13971]
                )
              ]
              spids: [16777215 14009]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SINCEWARN)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(expr)} {(${ VSub_Name NOWTIME)} {(-)} {(${ VSub_Name LASTWARN)})
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [14022 14034]
                      )
                    }
                  spids: [14021]
                )
              ]
              spids: [14021]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TIMELEFT)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(expr)} {(${ VSub_Name EOLTIME)} {(-)} {(${ VSub_Name NOWTIME)})
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [14038 14050]
                      )
                    }
                  spids: [14037]
                )
              ]
              spids: [14037]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name TIMELEFT)} {(-gt)} {(7884000)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                  spids: [16777215 14073]
                )
              ]
              spids: [16777215 14081]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name TIMELEFT)} {(-gt)} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (C {(expr)} {(${ VSub_Name SINCEWARN)} 
                                      {(EscapedLiteralPart token:<Lit_EscapedChar '\\*'>)} {(3)}
                                    )
                                  ]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [14103 14113]
                            )
                          } {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                  spids: [16777215 14118]
                )
              ]
              spids: [16777215 14126]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name TIMELEFT)} {(-lt)} {(604800)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:UNIT)
                          op: Equal
                          rhs: {(DQ (day))}
                          spids: [14152]
                        )
                      ]
                      spids: [14152]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:SIZE)
                          op: Equal
                          rhs: {(86400)}
                          spids: [14158]
                        )
                      ]
                      spids: [14158]
                    )
                  ]
                  spids: [16777215 14149]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name TIMELEFT)} {(-lt)} {(2678400)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:UNIT)
                          op: Equal
                          rhs: {(DQ (week))}
                          spids: [14180]
                        )
                      ]
                      spids: [14180]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:SIZE)
                          op: Equal
                          rhs: {(604800)}
                          spids: [14186]
                        )
                      ]
                      spids: [14186]
                    )
                  ]
                  spids: [14162 14177]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:UNIT)
                      op: Equal
                      rhs: {(DQ (month))}
                      spids: [14193]
                    )
                  ]
                  spids: [14193]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:SIZE)
                      op: Equal
                      rhs: {(2678400)}
                      spids: [14199]
                    )
                  ]
                  spids: [14199]
                )
              ]
              spids: [14190 14203]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NUM)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(expr)} {(${ VSub_Name TIMELEFT)} {(/)} {(${ VSub_Name SIZE)})
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [14212 14224]
                      )
                    }
                  spids: [14211]
                )
              ]
              spids: [14211]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name NUM)} {(KW_Bang '!') (Lit_Other '=')} {(1)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:UNIT)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name UNIT) (s))}
                          spids: [14246]
                        )
                      ]
                      spids: [14246]
                    )
                  ]
                  spids: [16777215 14243]
                )
              ]
              spids: [16777215 14255]
            )
            (C {(echo)})
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op: <Redir_DLessDash '<<-'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 14289
                  stdin_parts: [
                    ('WARNING: ')
                    (CommandSubPart
                      command_list: (CommandList children:[(C {(uname)} {(-sr)})])
                      left_token: <Left_Backtick '`'>
                      spids: [14272 14276]
                    )
                    (' is approaching its End-of-Life date.\n')
                    ('It is strongly recommended that you upgrade to a newer\n')
                    ('release within the next ')
                    (${ VSub_Name NUM)
                    (' ')
                    (${ VSub_Name UNIT)
                    ('.\n')
                  ]
                )
              ]
            )
            (SimpleCommand
              words: [{(echo)} {(${ VSub_Name NOWTIME)}]
              redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(lasteolwarn)})]
            )
          ]
          spids: [13885]
        )
      spids: [13880 13884]
    )
    (FuncDef
      name: fetch_run
      body: 
        (BraceGroup
          children: [
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(workdir_init)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [(C {(fetch_pick_server_init)}) (C {(fetch_pick_server)})]
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [
                (Sentence
                  child: (Pipeline children:[(C {(fetch_key)})] negated:T)
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(fetch_pick_server)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                  ]
                  spids: [14353 14365]
                )
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [
                (Sentence
                  child: (Pipeline children:[(C {(fetch_tag)})] negated:T)
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(fetch_pick_server)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                  ]
                  spids: [14384 14396]
                )
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_tagsanity)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_metadata)} {(INDEX-NEW)} {(INDEX-OLD)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_filter_metadata)} {(INDEX-NEW)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_filter_metadata)} {(INDEX-OLD)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (C {(fetch_filter_kernel_names)} {(INDEX-NEW)} {(${ VSub_Name KERNCONF)})
            (C {(fetch_filter_kernel_names)} {(INDEX-OLD)} {(${ VSub_Name KERNCONF)})
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_inspect_system)} {(INDEX-OLD)} {(INDEX-PRESENT)} {(INDEX-NEW)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (C {(fetch_filter_unmodified_notpresent)} {(INDEX-OLD)} {(INDEX-PRESENT)} {(INDEX-NEW)} 
              {(/dev/null)}
            )
            (C {(fetch_filter_allowadd)} {(INDEX-PRESENT)} {(INDEX-NEW)})
            (C {(fetch_filter_allowdelete)} {(INDEX-PRESENT)} {(INDEX-NEW)})
            (C {(fetch_filter_modified_metadata)} {(INDEX-OLD)} {(INDEX-PRESENT)} {(INDEX-NEW)})
            (C {(fetch_filter_uptodate)} {(INDEX-PRESENT)} {(INDEX-NEW)})
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_files_prepare)} {(INDEX-OLD)} {(INDEX-PRESENT)} {(INDEX-NEW)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_files)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_create_manifest)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_warn_eol)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
          ]
          spids: [14317]
        )
      spids: [14312 14316]
    )
    (FuncDef
      name: upgrade_guess_components
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name STRICTCOMPONENTS))} {(Lit_Other '=')} 
                          {(DQ (no))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(fetch_filter_metadata_components)} {($ VSub_Number '$1')})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                    (C {(echo)} {(-n)} {(DQ ('Inspecting system... '))})
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [{(cut)} {(-f)} {(1-3)} {(-d)} {(SQ <'|'>)}]
                          redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(INDEX-ALL)})]
                        )
                        (C {(tr)} {(SQ <'|'>)} {(SQ <' '>)})
                        (WhileUntil
                          keyword: <KW_While while>
                          cond: [
                            (Sentence
                              child: (C {(read)} {(C)} {(S)} {(F)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          body: 
                            (DoGroup
                              children: [
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {(-e)} 
                                              {(${ VSub_Name BASEDIR) (/) (${ VSub_Name F)} {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [
                                        (C {(echo)} 
                                          {(DQ ('+ ') (${ VSub_Name C) ('|') (${ VSub_Name S))}
                                        )
                                      ]
                                      spids: [16777215 14837]
                                    )
                                  ]
                                  spids: [16777215 14854]
                                )
                                (C {(echo)} {(DQ ('= ') (${ VSub_Name C) ('|') (${ VSub_Name S))})
                              ]
                              spids: [14817 14871]
                            )
                        )
                        (C {(sort)})
                        (C {(uniq)} {(-c)})
                        (SimpleCommand
                          words: [{(sed)} {(-E)} {(SQ <'s,^ +,,'>)}]
                          redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(compfreq)})]
                        )
                      ]
                      negated: F
                    )
                    (Pipeline
                      children: [
                        (C {(grep)} {(SQ <' = '>)} {(compfreq)})
                        (C {(cut)} {(-f)} {(1) (Lit_Comma ',') (3)} {(-d)} {(SQ <' '>)})
                        (SimpleCommand
                          words: [{(sort)} {(-k)} {(2) (Lit_Comma ',') (2)} {(-t)} {(SQ <' '>)}]
                          redirects: [
                            (Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(compfreq.total)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (Pipeline
                      children: [
                        (C {(grep)} {(SQ <' + '>)} {(compfreq)})
                        (C {(cut)} {(-f)} {(1) (Lit_Comma ',') (3)} {(-d)} {(SQ <' '>)})
                        (SimpleCommand
                          words: [{(sort)} {(-k)} {(2) (Lit_Comma ',') (2)} {(-t)} {(SQ <' '>)}]
                          redirects: [
                            (Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(compfreq.present)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (Pipeline
                      children: [
                        (C {(join)} {(-t)} {(SQ <' '>)} {(-1)} {(2)} {(-2)} {(2)} {(compfreq.present)} 
                          {(compfreq.total)}
                        )
                        (WhileUntil
                          keyword: <KW_While while>
                          cond: [
                            (Sentence
                              child: (C {(read)} {(S)} {(P)} {(T)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          body: 
                            (DoGroup
                              children: [
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {(${ VSub_Name P)} {(-gt)} 
                                              {
                                                (CommandSubPart
                                                  command_list: 
                                                    (CommandList
                                                      children: [
                                                        (C {(expr)} {(${ VSub_Name T)} {(/)} {(2)})
                                                      ]
                                                    )
                                                  left_token: <Left_Backtick '`'>
                                                  spids: [15042 15052]
                                                )
                                              } {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [(C {(echo)} {(${ VSub_Name S)})]
                                      spids: [16777215 15057]
                                    )
                                  ]
                                  spids: [16777215 15067]
                                )
                              ]
                              spids: [15029 15070]
                            )
                          redirects: [
                            (Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(comp.present)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (SimpleCommand
                      words: [{(cut)} {(-f)} {(2)} {(-d)} {(SQ <' '>)}]
                      redirects: [
                        (Redir
                          op: <Redir_Less '<'>
                          fd: 16777215
                          arg_word: {(compfreq.total)}
                        )
                        (Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {(comp.total)}
                        )
                      ]
                    )
                    (C {(rm)} {(INDEX-ALL)} {(compfreq)} {(compfreq.total)} {(compfreq.present)})
                    (C {(echo)} {(DQ (done.))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:KCOMP)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(echo)} {(${ VSub_Name KERNCONF)})
                                          (C {(tr)} {(SQ <A-Z>)} {(SQ <a-z>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [15159 15177]
                              )
                            }
                          spids: [15158]
                        )
                      ]
                      spids: [15158]
                    )
                    (SimpleCommand
                      words: [
                        {(grep)}
                        {(-E)}
                        {
                          (DQ ('^kernel') (Lit_Other '\\') ('|') (${ VSub_Name KCOMP) 
                            (EscapedLiteralPart
                              token: <Lit_EscapedChar '\\$'>
                            )
                          )
                        }
                        {(comp.total)}
                      ]
                      redirects: [(Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(comp.present)})]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (AndOr
                                  ops: [Op_DAmp]
                                  children: [
                                    (C {(grep)} {(-qE)} {(DQ ('^kernel') (Lit_Other '\\') ('|'))} 
                                      {(comp.total)}
                                    )
                                    (Pipeline
                                      children: [
                                        (C {(grep)} {(-qE)} 
                                          {
                                            (DQ ('^kernel') (Lit_Other '\\') ('|') (${ VSub_Name KCOMP) 
                                              (EscapedLiteralPart
                                                token: <Lit_EscapedChar '\\$'>
                                              )
                                            )
                                          } {(comp.total)}
                                        )
                                      ]
                                      negated: T
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (SimpleCommand
                              words: [{(cat)}]
                              redirects: [
                                (HereDoc
                                  op: <Redir_DLessDash '<<-'>
                                  fd: 16777215
                                  here_begin: {(EOF)}
                                  here_end_span_id: 15267
                                  stdin_parts: [
                                    ('\n')
                                    ('WARNING: This system is running a ')
                                    (Right_DoubleQuote '"')
                                    (${ VSub_Name KCOMP)
                                    (Right_DoubleQuote '"')
                                    (' kernel, which is not a\n')
                                    ('kernel configuration distributed as part of FreeBSD ')
                                    (${ VSub_Name RELNUM)
                                    ('.\n')
                                    (
'This kernel will not be updated: you MUST update the kernel manually\n'
                                    )
                                    ('before running ')
                                    (Right_DoubleQuote '"')
                                    ($ VSub_Number '$0')
                                    (' install')
                                    (Right_DoubleQuote '"')
                                    ('.\n')
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [16777215 15238]
                        )
                      ]
                      spids: [16777215 15269]
                    )
                    (SimpleCommand
                      words: [{(sort)} {(-u)}]
                      redirects: [
                        (Redir
                          op: <Redir_Less '<'>
                          fd: 16777215
                          arg_word: {(comp.present)}
                        )
                        (Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {(comp.present.tmp)}
                        )
                      ]
                    )
                    (C {(mv)} {(comp.present.tmp)} {(comp.present)})
                    (SimpleCommand
                      words: [{(comm)} {(-13)} {(comp.present)} {(comp.total)}]
                      redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(comp.absent)})]
                    )
                    (C {(echo)})
                    (C {(echo)} {(-n)} {(DQ ('The following components of FreeBSD '))})
                    (C {(echo)} {(DQ ('seem to be installed:'))})
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [{(tr)} {(SQ <'|'>)} {(SQ </>)}]
                          redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(comp.present)})]
                        )
                        (C {(fmt)} {(-72)})
                      ]
                      negated: F
                    )
                    (C {(echo)})
                    (C {(echo)} {(-n)} {(DQ ('The following components of FreeBSD '))})
                    (C {(echo)} {(DQ ('do not seem to be installed:'))})
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [{(tr)} {(SQ <'|'>)} {(SQ </>)}]
                          redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(comp.absent)})]
                        )
                        (C {(fmt)} {(-72)})
                      ]
                      negated: F
                    )
                    (C {(echo)})
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(continuep)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                    (C {(echo)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:COMPONENTS)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [15437]
                        )
                      ]
                      spids: [15437]
                    )
                    (SimpleCommand
                      words: [{(tr)} {(SQ <'|'>)} {(SQ </>)}]
                      redirects: [
                        (Redir
                          op: <Redir_Less '<'>
                          fd: 16777215
                          arg_word: {(comp.present)}
                        )
                        (Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {(comp.present.tmp)}
                        )
                      ]
                    )
                    (WhileUntil
                      keyword: <KW_While while>
                      cond: [(Sentence child:(C {(read)} {(C)}) terminator:<Op_Semi ';'>)]
                      body: 
                        (DoGroup
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:COMPONENTS)
                                  op: Equal
                                  rhs: {(DQ (${ VSub_Name COMPONENTS) (' ') (${ VSub_Name C))}
                                  spids: [15471]
                                )
                              ]
                              spids: [15471]
                            )
                          ]
                          spids: [15468 15483]
                        )
                      redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(comp.present.tmp)})]
                    )
                    (C {(rm)} {(comp.present)} {(comp.present.tmp)} {(comp.absent)} {(comp.total)})
                  ]
                  spids: [16777215 14729]
                )
              ]
              spids: [16777215 15506]
            )
          ]
          spids: [14707]
        )
      spids: [14702 14706]
    )
    (FuncDef
      name: upgrade_guess_new_kernel
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name STRICTCOMPONENTS))} {(Lit_Other '=')} 
                          {(DQ (no))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:METAHASH)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(look)} {(DQ ($ VSub_Number '$1') ('|'))} 
                                            {(tINDEX.present)}
                                          )
                                          (C {(cut)} {(-f)} {(2)} {(-d)} {(SQ <'|'>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [15558 15581]
                              )
                            }
                          spids: [15557]
                        )
                      ]
                      spids: [15557]
                    )
                    (SimpleCommand
                      words: [{(gunzip)} {(-c)}]
                      redirects: [
                        (Redir
                          op: <Redir_Less '<'>
                          fd: 16777215
                          arg_word: {(files/) (${ VSub_Name METAHASH) (.gz)}
                        )
                        (Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {($ VSub_Number '$1') (.all)}
                        )
                      ]
                    )
                    (ForEach
                      iter_name: C
                      iter_words: [{(${ VSub_Name COMPONENTS)}]
                      do_arg_iter: F
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (AndOr
                                          ops: [Op_DAmp]
                                          children: [
                                            (C {(Lit_Other '[')} {(${ VSub_Name C)} {(Lit_Other '=')} 
                                              {(DQ (kernel/) (${ VSub_Name KCOMP))} {(Lit_Other ']')}
                                            )
                                            (Pipeline
                                              children: [
                                                (C {(grep)} {(-qE)} 
                                                  {
                                                    (DQ ('^kernel') (Lit_Other '\\') ('|') 
                                                      (${ VSub_Name KCOMP) (Lit_Other '\\') ('|')
                                                    )
                                                  } {($ VSub_Number '$1') (.all)}
                                                )
                                              ]
                                              negated: T
                                            )
                                          ]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:COMPONENTS)
                                          op: Equal
                                          rhs: {(DQ (${ VSub_Name COMPONENTS) (' kernel/generic'))}
                                          spids: [15671]
                                        )
                                      ]
                                      spids: [15671]
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:NKERNCONF)
                                          op: Equal
                                          rhs: {(DQ (GENERIC))}
                                          spids: [15680]
                                        )
                                      ]
                                      spids: [15680]
                                    )
                                    (SimpleCommand
                                      words: [{(cat)}]
                                      redirects: [
                                        (HereDoc
                                          op: <Redir_DLessDash '<<-'>
                                          fd: 16777215
                                          here_begin: {(EOF)}
                                          here_end_span_id: 15715
                                          stdin_parts: [
                                            ('\n')
                                            ('WARNING: This system is running a ')
                                            (Right_DoubleQuote '"')
                                            (${ VSub_Name KCOMP)
                                            (Right_DoubleQuote '"')
                                            (' kernel, which is not a\n')
                                            (
'kernel configuration distributed as part of FreeBSD '
                                            )
                                            (${ VSub_Name RELNUM)
                                            ('.\n')
                                            ('As part of upgrading to FreeBSD ')
                                            (${ VSub_Name RELNUM)
                                            (', this kernel will be\n')
                                            ('replaced with a ')
                                            (Right_DoubleQuote '"')
                                            (generic)
                                            (Right_DoubleQuote '"')
                                            (' kernel.\n')
                                          ]
                                        )
                                      ]
                                    )
                                    (AndOr
                                      ops: [Op_DPipe]
                                      children: [
                                        (C {(continuep)})
                                        (ControlFlow
                                          token: <ControlFlow_Return return>
                                          arg_word: {(1)}
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [16777215 15668]
                                )
                              ]
                              spids: [16777215 15726]
                            )
                          ]
                          spids: [15622 15729]
                        )
                      spids: [15616 15620]
                    )
                    (C {(rm)} {($ VSub_Number '$1') (.all)})
                  ]
                  spids: [16777215 15550]
                )
              ]
              spids: [16777215 15743]
            )
          ]
          spids: [15528]
        )
      spids: [15523 15527]
    )
    (FuncDef
      name: upgrade_oldall_to_oldnew
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)}]
                  redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{($ VSub_Number '$1')})]
                )
                (SimpleCommand
                  words: [{(sort)} {(-u)}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {($ VSub_Number '$1') (.paths)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)}]
                  redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{($ VSub_Number '$2')})]
                )
                (C {(sort)} {(-u)})
                (C {(comm)} {(-13)} {($ VSub_Number '$1') (.paths)} {(-)})
                (C {(lam)} {(-)} {(-s)} {(DQ ('|-||||||'))})
                (SimpleCommand
                  words: [{(sort)} {(-)} {($ VSub_Number '$1')}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {($ VSub_Number '$1') (.tmp)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {(mv)} {($ VSub_Number '$1') (.tmp)} {($ VSub_Number '$1')})
            (SimpleCommand
              words: [{(comm)} {(-23)} {($ VSub_Number '$1')} {($ VSub_Number '$2')}]
              redirects: [
                (Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_Number '$1') (.tmp)}
                )
              ]
            )
            (C {(mv)} {($ VSub_Number '$1') (.tmp)} {($ VSub_Number '$1')})
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)}]
                  redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{($ VSub_Number '$1')})]
                )
                (SimpleCommand
                  words: [{(sort)} {(-u)}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {($ VSub_Number '$1') (.paths)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(sort)} {(-k)} {(1) (Lit_Comma ',') (1)} {(-t)} {(SQ <'|'>)}]
                  redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{($ VSub_Number '$2')})]
                )
                (C {(join)} {(-t)} {(SQ <'|'>)} {(-)} {($ VSub_Number '$1') (.paths)})
                (SimpleCommand
                  words: [{(sort)}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {($ VSub_Number '$2') (.tmp)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {(rm)} {($ VSub_Number '$1') (.paths)})
            (C {(mv)} {($ VSub_Number '$2') (.tmp)} {($ VSub_Number '$2')})
            (C {(mv)} {($ VSub_Number '$2')} {($ VSub_Number '$3')})
          ]
          spids: [15759]
        )
      spids: [15754 15758]
    )
    (FuncDef
      name: samef
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:X)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (SimpleCommand
                                    words: [
                                      {(sed)}
                                      {(-E)}
                                      {(SQ <'s/\\\\$FreeBSD.*\\\\$/\\$FreeBSD\\$/'>)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op: <Redir_Less '<'>
                                        fd: 16777215
                                        arg_word: {($ VSub_Number '$1')}
                                      )
                                    ]
                                  )
                                  (C {(${ VSub_Name SHA256)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [16027 16045]
                      )
                    }
                  spids: [16026]
                )
              ]
              spids: [16026]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:Y)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (SimpleCommand
                                    words: [
                                      {(sed)}
                                      {(-E)}
                                      {(SQ <'s/\\\\$FreeBSD.*\\\\$/\\$FreeBSD\\$/'>)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op: <Redir_Less '<'>
                                        fd: 16777215
                                        arg_word: {($ VSub_Number '$2')}
                                      )
                                    ]
                                  )
                                  (C {(${ VSub_Name SHA256)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [16049 16067]
                      )
                    }
                  spids: [16048]
                )
              ]
              spids: [16048]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Name '$X')} {(Lit_Other '=')} {($ VSub_Name '$Y')} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [16777215 16084]
                )
              ]
              else_action: [
                (Sentence
                  child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  terminator: <Op_Semi ';'>
                )
              ]
              spids: [16093 16102]
            )
          ]
          spids: [16023]
        )
      spids: [16018 16022]
    )
    (FuncDef
      name: upgrade_merge
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-s)} {($ VSub_Number '$1')} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Pipeline
                      children: [
                        (C {(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)} {($ VSub_Number '$1')})
                        (SimpleCommand
                          words: [{(sort)}]
                          redirects: [
                            (Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {($ VSub_Number '$1') (-paths)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (C {(rm)} {(-rf)} {(merge/)})
                    (WhileUntil
                      keyword: <KW_While while>
                      cond: [(Sentence child:(C {(read)} {(F)}) terminator:<Op_Semi ';'>)]
                      body: 
                        (DoGroup
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:D)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [(C {(dirname)} {(${ VSub_Name F)})]
                                          )
                                        left_token: <Left_Backtick '`'>
                                        spids: [16187 16193]
                                      )
                                    }
                                  spids: [16186]
                                )
                              ]
                              spids: [16186]
                            )
                            (C {(mkdir)} {(-p)} {(merge/old/) (${ VSub_Name D)})
                            (C {(mkdir)} {(-p)} {(merge/) (${ VSub_Name OLDRELNUM) (/) (${ VSub_Name D)})
                            (C {(mkdir)} {(-p)} {(merge/) (${ VSub_Name RELNUM) (/) (${ VSub_Name D)})
                            (C {(mkdir)} {(-p)} {(merge/new/) (${ VSub_Name D)})
                          ]
                          spids: [16183 16244]
                        )
                      redirects: [
                        (Redir
                          op: <Redir_Less '<'>
                          fd: 16777215
                          arg_word: {($ VSub_Number '$1') (-paths)}
                        )
                      ]
                    )
                    (WhileUntil
                      keyword: <KW_While while>
                      cond: [(Sentence child:(C {(read)} {(F)}) terminator:<Op_Semi ';'>)]
                      body: 
                        (DoGroup
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:V)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (Pipeline
                                                children: [
                                                  (C {(look)} {(DQ (${ VSub_Name F) ('|'))} 
                                                    {($ VSub_Number '$2')}
                                                  )
                                                  (C {(cut)} {(-f)} {(7)} {(-d)} {(SQ <'|'>)})
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                        left_token: <Left_Backtick '`'>
                                        spids: [16272 16297]
                                      )
                                    }
                                  spids: [16271]
                                )
                              ]
                              spids: [16271]
                            )
                            (SimpleCommand
                              words: [{(gunzip)}]
                              redirects: [
                                (Redir
                                  op: <Redir_Less '<'>
                                  fd: 16777215
                                  arg_word: {(files/) (${ VSub_Name V) (.gz)}
                                )
                                (Redir
                                  op: <Redir_Great '>'>
                                  fd: 16777215
                                  arg_word: {(merge/old/) (${ VSub_Name F)}
                                )
                              ]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (Pipeline
                                          children: [
                                            (C {(look)} {(DQ (${ VSub_Name F) ('|'))} 
                                              {($ VSub_Number '$1')}
                                            )
                                            (C {(fgrep)} {(-q)} {(DQ ('|f|'))})
                                          ]
                                          negated: F
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:V)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (Pipeline
                                                        children: [
                                                          (C {(look)} {(DQ (${ VSub_Name F) ('|'))} 
                                                            {($ VSub_Number '$1')}
                                                          )
                                                          (C {(cut)} {(-f)} {(3)} {(-d)} {(SQ <'|'>)})
                                                        ]
                                                        negated: F
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_Backtick '`'>
                                                spids: [16351 16376]
                                              )
                                            }
                                          spids: [16350]
                                        )
                                      ]
                                      spids: [16350]
                                    )
                                    (SimpleCommand
                                      words: [{(gunzip)}]
                                      redirects: [
                                        (Redir
                                          op: <Redir_Less '<'>
                                          fd: 16777215
                                          arg_word: {(files/) (${ VSub_Name V) (.gz)}
                                        )
                                        (Redir
                                          op: <Redir_Great '>'>
                                          fd: 16777215
                                          arg_word: 
                                            {(merge/) (${ VSub_Name OLDRELNUM) (/) (${ VSub_Name F)}
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [16777215 16347]
                                )
                              ]
                              spids: [16777215 16403]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (Pipeline
                                          children: [
                                            (C {(look)} {(DQ (${ VSub_Name F) ('|'))} 
                                              {($ VSub_Number '$3')}
                                            )
                                            (C {(cut)} {(-f)} 
                                              {(1) (Lit_Comma ',') (2) (Lit_Comma ',') (7)} {(-d)} {(SQ <'|'>)}
                                            )
                                            (C {(fgrep)} {(-q)} {(DQ ('|f|'))})
                                          ]
                                          negated: F
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:V)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (Pipeline
                                                        children: [
                                                          (C {(look)} {(DQ (${ VSub_Name F) ('|'))} 
                                                            {($ VSub_Number '$3')}
                                                          )
                                                          (C {(cut)} {(-f)} {(7)} {(-d)} {(SQ <'|'>)})
                                                        ]
                                                        negated: F
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_Backtick '`'>
                                                spids: [16458 16483]
                                              )
                                            }
                                          spids: [16457]
                                        )
                                      ]
                                      spids: [16457]
                                    )
                                    (SimpleCommand
                                      words: [{(gunzip)}]
                                      redirects: [
                                        (Redir
                                          op: <Redir_Less '<'>
                                          fd: 16777215
                                          arg_word: {(files/) (${ VSub_Name V) (.gz)}
                                        )
                                        (Redir
                                          op: <Redir_Great '>'>
                                          fd: 16777215
                                          arg_word: 
                                            {(merge/) (${ VSub_Name RELNUM) (/) (${ VSub_Name F)}
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [16777215 16454]
                                )
                              ]
                              spids: [16777215 16510]
                            )
                          ]
                          spids: [16264 16513]
                        )
                      redirects: [
                        (Redir
                          op: <Redir_Less '<'>
                          fd: 16777215
                          arg_word: {($ VSub_Number '$1') (-paths)}
                        )
                      ]
                    )
                    (C {(echo)} {(-n)} {(DQ ('Attempting to automatically merge '))})
                    (C {(echo)} {(-n)} {(DQ ('changes in files...'))})
                    (SimpleCommand
                      words: [{(Lit_Other ':')}]
                      redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(failed.merges)})]
                    )
                    (WhileUntil
                      keyword: <KW_While while>
                      cond: [(Sentence child:(C {(read)} {(F)}) terminator:<Op_Semi ';'>)]
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (Pipeline
                                          children: [
                                            (C {(Lit_Other '[')} {(-f)} 
                                              {(merge/) (${ VSub_Name RELNUM) (/) (${ VSub_Name F)} {(Lit_Other ']')}
                                            )
                                          ]
                                          negated: T
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                                  spids: [16777215 16593]
                                )
                              ]
                              spids: [16777215 16599]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (Pipeline
                                          children: [
                                            (C {(Lit_Other '[')} {(-f)} 
                                              {(merge/) (${ VSub_Name OLDRELNUM) (/) (${ VSub_Name F)} {(Lit_Other ']')}
                                            )
                                          ]
                                          negated: T
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(cp)} {(merge/) (${ VSub_Name RELNUM) (/) (${ VSub_Name F)} 
                                      {(merge/new/) (${ VSub_Name F)}
                                    )
                                    (ControlFlow
                                      token: <ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [16777215 16635]
                                )
                              ]
                              spids: [16777215 16658]
                            )
                            (Case
                              to_match: {(${ VSub_Name F)}
                              arms: [
                                (case_arm
                                  pat_list: [{(/etc/spwd.db)} {(/etc/pwd.db)} {(/etc/login.conf.db)}]
                                  action: [
                                    (C {(cp)} {(merge/old/) (${ VSub_Name F)} 
                                      {(merge/new/) (${ VSub_Name F)}
                                    )
                                  ]
                                  spids: [16675 16684 16708 16777215]
                                )
                                (case_arm
                                  pat_list: [{(Lit_Other '*')}]
                                  action: [
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (Pipeline
                                                  children: [
                                                    (SimpleCommand
                                                      words: [
                                                        {(merge)}
                                                        {(-p)}
                                                        {(-L)}
                                                        {(DQ ('current version'))}
                                                        {(-L)}
                                                        {(DQ (${ VSub_Name OLDRELNUM))}
                                                        {(-L)}
                                                        {(DQ (${ VSub_Name RELNUM))}
                                                        {(merge/old/) (${ VSub_Name F)}
                                                        {(merge/) (${ VSub_Name OLDRELNUM) (/) 
                                                          (${ VSub_Name F)
                                                        }
                                                        {(merge/) (${ VSub_Name RELNUM) (/) 
                                                          (${ VSub_Name F)
                                                        }
                                                      ]
                                                      redirects: [
                                                        (Redir
                                                          op: <Redir_Great '>'>
                                                          fd: 16777215
                                                          arg_word: {(merge/new/) (${ VSub_Name F)}
                                                        )
                                                        (Redir
                                                          op: <Redir_Great '2>'>
                                                          fd: 2
                                                          arg_word: {(/dev/null)}
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                  negated: T
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (SimpleCommand
                                              words: [{(echo)} {(${ VSub_Name F)}]
                                              redirects: [
                                                (Redir
                                                  op: <Redir_DGreat '>>'>
                                                  fd: 16777215
                                                  arg_word: {(failed.merges)}
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [16777215 16789]
                                        )
                                      ]
                                      spids: [16777215 16803]
                                    )
                                  ]
                                  spids: [16711 16712 16806 16777215]
                                )
                              ]
                              spids: [16666 16672 16809]
                            )
                          ]
                          spids: [16558 16812]
                        )
                      redirects: [
                        (Redir
                          op: <Redir_Less '<'>
                          fd: 16777215
                          arg_word: {($ VSub_Number '$1') (-paths)}
                        )
                      ]
                    )
                    (C {(echo)} {(DQ (' done.'))})
                    (WhileUntil
                      keyword: <KW_While while>
                      cond: [(Sentence child:(C {(read)} {(F)}) terminator:<Op_Semi ';'>)]
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(samef)} {(merge/old/) (${ VSub_Name F)} 
                                          {(merge/) (${ VSub_Name OLDRELNUM) (/) (${ VSub_Name F)}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(cp)} {(merge/) (${ VSub_Name RELNUM) (/) (${ VSub_Name F)} 
                                      {(merge/new/) (${ VSub_Name F)}
                                    )
                                    (ControlFlow
                                      token: <ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [16777215 16873]
                                )
                              ]
                              spids: [16777215 16896]
                            )
                            (SimpleCommand
                              words: [{(cat)}]
                              redirects: [
                                (HereDoc
                                  op: <Redir_DLessDash '<<-'>
                                  fd: 16777215
                                  here_begin: {(EOF)}
                                  here_end_span_id: 16918
                                  stdin_parts: [
                                    ('\n')
                                    ('The following file could not be merged automatically: ')
                                    (${ VSub_Name F)
                                    ('\n')
                                    ('Press Enter to edit this file in ')
                                    (${ VSub_Name EDITOR)
                                    (' and resolve the conflicts\n')
                                    ('manually...\n')
                                  ]
                                )
                              ]
                            )
                            (SimpleCommand
                              words: [{(read)} {(dummy)}]
                              redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(/dev/tty)})]
                            )
                            (SimpleCommand
                              words: [
                                {(${ VSub_Name EDITOR)}
                                {
                                  (CommandSubPart
                                    command_list: (CommandList children:[(C {(pwd)})])
                                    left_token: <Left_Backtick '`'>
                                    spids: [16932 16934]
                                  ) (/merge/new/) (${ VSub_Name F)
                                }
                              ]
                              redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(/dev/tty)})]
                            )
                          ]
                          spids: [16839 16945]
                        )
                      redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(failed.merges)})]
                    )
                    (C {(rm)} {(failed.merges)})
                    (WhileUntil
                      keyword: <KW_While while>
                      cond: [(Sentence child:(C {(read)} {(F)}) terminator:<Op_Semi ';'>)]
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (AndOr
                                          ops: [Op_DAmp Op_DAmp]
                                          children: [
                                            (C {(Lit_Other '[')} {(-f)} {(merge/old/) (${ VSub_Name F)} 
                                              {(Lit_Other ']')}
                                            )
                                            (C {(Lit_Other '[')} {(-f)} {(merge/new/) (${ VSub_Name F)} 
                                              {(Lit_Other ']')}
                                            )
                                            (C {(samef)} {(merge/old/) (${ VSub_Name F)} 
                                              {(merge/new/) (${ VSub_Name F)}
                                            )
                                          ]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                                  spids: [16777215 17026]
                                )
                              ]
                              spids: [16777215 17032]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (AndOr
                                          ops: [Op_DAmp Op_DAmp]
                                          children: [
                                            (C {(Lit_Other '[')} {(-f)} {(merge/old/) (${ VSub_Name F)} 
                                              {(Lit_Other ']')}
                                            )
                                            (C {(Lit_Other '[')} {(-f)} 
                                              {(merge/) (${ VSub_Name OLDRELNUM) (/) (${ VSub_Name F)} {(Lit_Other ']')}
                                            )
                                            (C {(samef)} {(merge/old/) (${ VSub_Name F)} 
                                              {(merge/) (${ VSub_Name OLDRELNUM) (/) (${ VSub_Name F)}
                                            )
                                          ]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                                  spids: [16777215 17095]
                                )
                              ]
                              spids: [16777215 17101]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (Pipeline
                                          children: [
                                            (C {(Lit_Other '[')} {(-f)} {(merge/new/) (${ VSub_Name F)} 
                                              {(Lit_Other ']')}
                                            )
                                          ]
                                          negated: T
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (SimpleCommand
                                      words: [{(cat)}]
                                      redirects: [
                                        (HereDoc
                                          op: <Redir_DLessDash '<<-'>
                                          fd: 16777215
                                          here_begin: {(EOF)}
                                          here_end_span_id: 17145
                                          stdin_parts: [
                                            ('\n')
                                            (
'The following file will be removed, as it no longer exists in\n'
                                            )
                                            ('FreeBSD ')
                                            (${ VSub_Name RELNUM)
                                            (': ')
                                            (${ VSub_Name F)
                                            ('\n')
                                          ]
                                        )
                                      ]
                                    )
                                    (AndOr
                                      ops: [Op_DPipe]
                                      children: [
                                        (SimpleCommand
                                          words: [{(continuep)}]
                                          redirects: [
                                            (Redir
                                              op: <Redir_Less '<'>
                                              fd: 16777215
                                              arg_word: {(/dev/tty)}
                                            )
                                          ]
                                        )
                                        (ControlFlow
                                          token: <ControlFlow_Return return>
                                          arg_word: {(1)}
                                        )
                                      ]
                                    )
                                    (ControlFlow
                                      token: <ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [16777215 17125]
                                )
                              ]
                              spids: [16777215 17163]
                            )
                            (SimpleCommand
                              words: [{(cat)}]
                              redirects: [
                                (HereDoc
                                  op: <Redir_DLessDash '<<-'>
                                  fd: 16777215
                                  here_begin: {(EOF)}
                                  here_end_span_id: 17192
                                  stdin_parts: [
                                    ('\n')
                                    ('The following changes, which occurred between FreeBSD ')
                                    (${ VSub_Name OLDRELNUM)
                                    (' and\n')
                                    ('FreeBSD ')
                                    (${ VSub_Name RELNUM)
                                    (' have been merged into ')
                                    (${ VSub_Name F)
                                    (':\n')
                                  ]
                                )
                              ]
                            )
                            (AndOr
                              ops: [Op_DPipe]
                              children: [
                                (C {(diff)} {(-U)} {(5)} {(-L)} {(DQ ('current version'))} {(-L)} 
                                  {(DQ ('new version'))} {(merge/old/) (${ VSub_Name F)} {(merge/new/) (${ VSub_Name F)}
                                )
                                (C {(true)})
                              ]
                            )
                            (AndOr
                              ops: [Op_DPipe]
                              children: [
                                (SimpleCommand
                                  words: [{(continuep)}]
                                  redirects: [
                                    (Redir
                                      op: <Redir_Less '<'>
                                      fd: 16777215
                                      arg_word: {(/dev/tty)}
                                    )
                                  ]
                                )
                                (ControlFlow
                                  token: <ControlFlow_Return return>
                                  arg_word: {(1)}
                                )
                              ]
                            )
                          ]
                          spids: [16973 17242]
                        )
                      redirects: [
                        (Redir
                          op: <Redir_Less '<'>
                          fd: 16777215
                          arg_word: {($ VSub_Number '$1') (-paths)}
                        )
                      ]
                    )
                    (WhileUntil
                      keyword: <KW_While while>
                      cond: [(Sentence child:(C {(read)} {(F)}) terminator:<Op_Semi ';'>)]
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-f)} {(merge/new/) (${ VSub_Name F)} 
                                          {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:V)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (C {(${ VSub_Name SHA256)} {(-q)} 
                                                        {(merge/new/) (${ VSub_Name F)}
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_Backtick '`'>
                                                spids: [17283 17294]
                                              )
                                            }
                                          spids: [17282]
                                        )
                                      ]
                                      spids: [17282]
                                    )
                                    (SimpleCommand
                                      words: [{(gzip)} {(-c)}]
                                      redirects: [
                                        (Redir
                                          op: <Redir_Less '<'>
                                          fd: 16777215
                                          arg_word: {(merge/new/) (${ VSub_Name F)}
                                        )
                                        (Redir
                                          op: <Redir_Great '>'>
                                          fd: 16777215
                                          arg_word: {(files/) (${ VSub_Name V) (.gz)}
                                        )
                                      ]
                                    )
                                    (C {(echo)} {(DQ (${ VSub_Name F) ('|') (${ VSub_Name V))})
                                  ]
                                  spids: [16777215 17279]
                                )
                              ]
                              spids: [16777215 17331]
                            )
                          ]
                          spids: [17262 17334]
                        )
                      redirects: [
                        (Redir
                          op: <Redir_Less '<'>
                          fd: 16777215
                          arg_word: {($ VSub_Number '$1') (-paths)}
                        )
                        (Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {(newhashes)}
                        )
                      ]
                    )
                    (WhileUntil
                      keyword: <KW_While while>
                      cond: [(Sentence child:(C {(read)} {(F)}) terminator:<Op_Semi ';'>)]
                      body: 
                        (DoGroup
                          children: [(C {(look)} {(DQ (${ VSub_Name F) ('|'))} {($ VSub_Number '$3')})]
                          spids: [17362 17377]
                        )
                      redirects: [
                        (Redir
                          op: <Redir_Less '<'>
                          fd: 16777215
                          arg_word: {($ VSub_Number '$1') (-paths)}
                        )
                        (Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {($ VSub_Number '$3') (-oldlines)}
                        )
                      ]
                    )
                    (SimpleCommand
                      words: [
                        {(join)}
                        {(-t)}
                        {(SQ <'|'>)}
                        {(-o)}
                        {(1.1) (Lit_Comma ',') (1.2) (Lit_Comma ',') (1.3) (Lit_Comma ',') (1.4) 
                          (Lit_Comma ',') (1.5) (Lit_Comma ',') (1.6) (Lit_Comma ',') (2.2) (Lit_Comma ',') (1.8)
                        }
                        {($ VSub_Number '$3') (-oldlines)}
                        {(newhashes)}
                      ]
                      redirects: [
                        (Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {($ VSub_Number '$3') (-newlines)}
                        )
                      ]
                    )
                    (Pipeline
                      children: [
                        (C {(sort)} {($ VSub_Number '$3') (-oldlines)})
                        (C {(comm)} {(-13)} {(-)} {($ VSub_Number '$3')})
                        (SimpleCommand
                          words: [{(sort)} {(-)} {($ VSub_Number '$3') (-newlines)}]
                          redirects: [
                            (Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {($ VSub_Number '$3') (.tmp)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (C {(mv)} {($ VSub_Number '$3') (.tmp)} {($ VSub_Number '$3')})
                    (C {(rm)} {($ VSub_Number '$1') (-paths)} {(newhashes)} 
                      {($ VSub_Number '$3') (-oldlines)} {($ VSub_Number '$3') (-newlines)}
                    )
                    (C {(rm)} {(-rf)} {(merge/)})
                  ]
                  spids: [16777215 16136]
                )
              ]
              spids: [16777215 17505]
            )
            (C {(rm)} {($ VSub_Number '$1')})
          ]
          spids: [16118]
        )
      spids: [16113 16117]
    )
    (FuncDef
      name: upgrade_run
      body: 
        (BraceGroup
          children: [
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(workdir_init)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [(C {(fetch_pick_server_init)}) (C {(fetch_pick_server)})]
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [
                (Sentence
                  child: (Pipeline children:[(C {(fetch_key)})] negated:T)
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(fetch_pick_server)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                  ]
                  spids: [17564 17576]
                )
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [
                (Sentence
                  child: (Pipeline children:[(C {(fetch_tag)})] negated:T)
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(fetch_pick_server)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                  ]
                  spids: [17596 17608]
                )
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_tagsanity)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_metadata)} {(INDEX-OLD)} {(INDEX-ALL)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(upgrade_guess_components)} {(INDEX-ALL)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_filter_metadata)} {(INDEX-OLD)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_filter_metadata)} {(INDEX-ALL)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (SimpleCommand
              words: [{(sort)} {(INDEX-OLD)} {(INDEX-ALL)}]
              redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-OLD.tmp)})]
            )
            (C {(mv)} {(INDEX-OLD.tmp)} {(INDEX-OLD)})
            (C {(rm)} {(INDEX-ALL)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OLDRELNUM)
                  op: Equal
                  rhs: {(${ VSub_Name RELNUM)}
                  spids: [17722]
                )
              ]
              spids: [17722]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RELNUM)
                  op: Equal
                  rhs: {(${ VSub_Name TARGETRELEASE)}
                  spids: [17728]
                )
              ]
              spids: [17728]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OLDFETCHDIR)
                  op: Equal
                  rhs: {(${ VSub_Name FETCHDIR)}
                  spids: [17734]
                )
              ]
              spids: [17734]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:FETCHDIR)
                  op: Equal
                  rhs: {(${ VSub_Name RELNUM) (/) (${ VSub_Name ARCH)}
                  spids: [17740]
                )
              ]
              spids: [17740]
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [
                (Sentence
                  child: (Pipeline children:[(C {(fetch_tag)})] negated:T)
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(fetch_pick_server)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                  ]
                  spids: [17766 17778]
                )
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_metadata)} {(INDEX-ALL)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(upgrade_guess_new_kernel)} {(INDEX-ALL)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_filter_metadata)} {(INDEX-ALL)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (C {(upgrade_oldall_to_oldnew)} {(INDEX-OLD)} {(INDEX-ALL)} {(INDEX-NEW)})
            (C {(fetch_filter_kernel_names)} {(INDEX-NEW)} {(${ VSub_Name NKERNCONF)})
            (C {(fetch_filter_kernel_names)} {(INDEX-OLD)} {(${ VSub_Name KERNCONF)})
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_inspect_system)} {(INDEX-OLD)} {(INDEX-PRESENT)} {(INDEX-NEW)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (C {(fetch_filter_mergechanges)} {(INDEX-OLD)} {(INDEX-PRESENT)} {(tomerge-old)})
            (C {(fetch_filter_unmodified_notpresent)} {(INDEX-OLD)} {(INDEX-PRESENT)} {(INDEX-NEW)} 
              {(tomerge-old)}
            )
            (C {(fetch_filter_allowadd)} {(INDEX-PRESENT)} {(INDEX-NEW)})
            (C {(fetch_filter_allowdelete)} {(INDEX-PRESENT)} {(INDEX-NEW)})
            (C {(fetch_filter_modified_metadata)} {(INDEX-OLD)} {(INDEX-PRESENT)} {(INDEX-NEW)})
            (C {(fetch_filter_uptodate)} {(INDEX-PRESENT)} {(INDEX-NEW)})
            (C {(fetch_files_premerge)} {(tomerge-old)})
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_files_prepare)} {(INDEX-OLD)} {(INDEX-PRESENT)} {(INDEX-NEW)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PATCHDIR)
                  op: Equal
                  rhs: {(to-) (${ VSub_Name RELNUM) (/) (${ VSub_Name ARCH) (/bp)}
                  spids: [18083]
                )
              ]
              spids: [18083]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_files)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(upgrade_merge)} {(tomerge-old)} {(INDEX-PRESENT)} {(INDEX-NEW)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_create_manifest)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (C {(touch)} {(${ VSub_Name BDHASH) (-install/kernelfirst)})
            (C {(echo)} 
              {
                (DQ ('To install the downloaded upgrades, run ') 
                  (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ($ VSub_Number '$0') (' install') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (.)
                )
              }
            )
          ]
          spids: [17528]
        )
      spids: [17523 17527]
    )
    (FuncDef
      name: install_verify
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (C {(cat)} {($ VSub_At '$@')})
                (C {(cut)} {(-f)} {(2) (Lit_Comma ',') (7)} {(-d)} {(SQ <'|'>)})
                (C {(grep)} {(-E)} {(SQ <'^f'>)})
                (C {(cut)} {(-f)} {(2)} {(-d)} {(SQ <'|'>)})
                (SimpleCommand
                  words: [{(sort)} {(-u)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(filelist)})]
                )
              ]
              negated: F
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [(Sentence child:(C {(read)} {(HASH)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [
                                    (C {(Lit_Other '[')} {(-f)} {(files/) (${ VSub_Name HASH) (.gz)} 
                                      {(Lit_Other ']')}
                                    )
                                  ]
                                  negated: T
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(-n)} {(DQ ('Update files missing -- '))})
                            (C {(echo)} {(DQ ('this should never happen.'))})
                            (C {(echo)} {(DQ ("Re-run '") ($ VSub_Number '$0') (" fetch'."))})
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [16777215 18291]
                        )
                      ]
                      spids: [16777215 18324]
                    )
                  ]
                  spids: [18271 18327]
                )
              redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(filelist)})]
            )
            (C {(rm)} {(filelist)})
          ]
          spids: [18193]
        )
      spids: [18188 18192]
    )
    (FuncDef
      name: install_unschg
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (C {(cat)} {($ VSub_At '$@')})
                (SimpleCommand
                  words: [{(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(filelist)})]
                )
              ]
              negated: F
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (Pipeline
                  children: [
                    (WhileUntil
                      keyword: <KW_While while>
                      cond: [(Sentence child:(C {(read)} {(F)}) terminator:<Op_Semi ';'>)]
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (Pipeline
                                          children: [
                                            (C {(Lit_Other '[')} {(-e)} 
                                              {(${ VSub_Name BASEDIR) (/) (${ VSub_Name F)} {(Lit_Other ']')}
                                            )
                                          ]
                                          negated: T
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                                  spids: [16777215 18419]
                                )
                              ]
                              else_action: [(C {(echo)} {(${ VSub_Name BASEDIR) (/) (${ VSub_Name F)})]
                              spids: [18425 18439]
                            )
                          ]
                          spids: [18397 18442]
                        )
                      redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(filelist)})]
                    )
                    (C {(xargs)} {(chflags)} {(noschg)})
                  ]
                  negated: F
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (C {(rm)} {(filelist)})
          ]
          spids: [18354]
        )
      spids: [18349 18353]
    )
    (FuncDef
      name: backup_kernel_finddir
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:CNT) op:Equal rhs:{(0)} spids:[18486])]
              spids: [18486]
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [(Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-e)} 
                                  {($ VSub_Name '$BASEDIR') (/) ($ VSub_Name '$BACKUPKERNELDIR')} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                          spids: [16777215 18522]
                        )
                      ]
                      spids: [16777215 18530]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-d)} 
                                  {($ VSub_Name '$BASEDIR') (/) ($ VSub_Name '$BACKUPKERNELDIR')} {(-a)} {(-e)} {($ VSub_Name '$BASEDIR') (/) ($ VSub_Name '$BACKUPKERNELDIR') (/.freebsd-update)} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                          spids: [16777215 18566]
                        )
                      ]
                      spids: [16777215 18574]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CNT)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Plus
                                    left: (ArithVarRef name:CNT)
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [18587 18594]
                              )
                            }
                          spids: [18586]
                        )
                      ]
                      spids: [18586]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {($ VSub_Name '$CNT')} {(-gt)} {(9)} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ ('Could not find valid backup dir (') ($ VSub_Name '$BASEDIR') (/) 
                                  ($ VSub_Name '$BACKUPKERNELDIR') (')')
                                )
                              }
                            )
                            (ControlFlow
                              token: <ControlFlow_Exit exit>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [16777215 18610]
                        )
                      ]
                      spids: [16777215 18629]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:BACKUPKERNELDIR)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [
                                        (Pipeline
                                          children: [
                                            (C {(echo)} {($ VSub_Name '$BACKUPKERNELDIR')})
                                            (C {(sed)} {(-Ee)} {(SQ <'s/[0-9]\\$//'>)})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                  left_token: <Left_Backtick '`'>
                                  spids: [18634 18648]
                                )
                              )
                            }
                          spids: [18632]
                        )
                      ]
                      spids: [18632]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:BACKUPKERNELDIR)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name BACKUPKERNELDIR) (${ VSub_Name CNT))}
                          spids: [18652]
                        )
                      ]
                      spids: [18652]
                    )
                  ]
                  spids: [18496 18663]
                )
            )
          ]
          spids: [18483]
        )
      spids: [18478 18482]
    )
    (FuncDef
      name: backup_kernel
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Name '$BACKUPKERNEL')} 
                          {(KW_Bang '!') (Lit_Other '=')} {(yes)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                  spids: [16777215 18715]
                )
              ]
              spids: [16777215 18723]
            )
            (C {(backup_kernel_finddir)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-d)} 
                          {($ VSub_Name '$BASEDIR') (/) ($ VSub_Name '$BACKUPKERNELDIR')} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(rm)} {(-fr)} {($ VSub_Name '$BASEDIR') (/) ($ VSub_Name '$BACKUPKERNELDIR')})
                  ]
                  spids: [16777215 18760]
                )
              ]
              spids: [16777215 18772]
            )
            (C {(mkdir)} {(-p)} {($ VSub_Name '$BASEDIR') (/) ($ VSub_Name '$BACKUPKERNELDIR')})
            (Pipeline
              children: [
                (C {(mtree)} {(-cdn)} {(-p)} {(DQ (${ VSub_Name BASEDIR) (/) (${ VSub_Name KERNELDIR))})
                (SimpleCommand
                  words: [
                    {(mtree)}
                    {(-Ue)}
                    {(-p)}
                    {(DQ (${ VSub_Name BASEDIR) (/) (${ VSub_Name BACKUPKERNELDIR))}
                  ]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})]
                )
              ]
              negated: F
            )
            (C {(touch)} 
              {($ VSub_Name '$BASEDIR') (/) ($ VSub_Name '$BACKUPKERNELDIR') (/.freebsd-update)}
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Could not create kernel backup directory'))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 18856]
                )
              ]
              spids: [16777215 18871]
            )
            (C {(set)} {(-f)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Name '$BACKUPKERNELSYMBOLFILES')} 
                          {(Lit_Other '=')} {(yes)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:FINDFILTER)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [18909]
                        )
                      ]
                      spids: [18909]
                    )
                  ]
                  spids: [16777215 18906]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:FINDFILTER)
                      op: Equal
                      rhs: {(DQ ('-a ! -name *.debug -a ! -name *.symbols'))}
                      spids: [18917]
                    )
                  ]
                  spids: [18917]
                )
              ]
              spids: [18914 18923]
            )
            (Subshell
              child: 
                (AndOr
                  ops: [Op_DAmp]
                  children: [
                    (C {(cd)} {(${ VSub_Name BASEDIR) (/) (${ VSub_Name KERNELDIR)})
                    (C {(find)} {(.)} {(-type)} {(f)} {($ VSub_Name '$FINDFILTER')} {(-exec)} {(cp)} {(-pl)} 
                      {(SQ <'{}'>)} {(${ VSub_Name BASEDIR) (/) (${ VSub_Name BACKUPKERNELDIR) (/) (SQ <'{}'>)} 
                      {(EscapedLiteralPart token:<Lit_EscapedChar '\\;'>)}
                    )
                  ]
                )
              spids: [18931 18979]
            )
            (C {(set)} {(Lit_Other '+') (f)})
          ]
          spids: [18694]
        )
      spids: [18689 18693]
    )
    (FuncDef
      name: install_from_index
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (C {(sort)} {(-k)} {(1) (Lit_Comma ',') (1)} {(-t)} {(SQ <'|'>)} {($ VSub_Number '$1')})
                (C {(tr)} {(SQ <'|'>)} {(SQ <' '>)})
                (WhileUntil
                  keyword: <KW_While while>
                  cond: [
                    (Sentence
                      child: 
                        (C {(read)} {(FPATH)} {(TYPE)} {(OWNER)} {(GROUP)} {(PERM)} {(FLAGS)} {(HASH)} 
                          {(LINK)}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  body: 
                    (DoGroup
                      children: [
                        (Case
                          to_match: {(${ VSub_Name TYPE)}
                          arms: [
                            (case_arm
                              pat_list: [{(d)}]
                              action: [
                                (C {(install)} {(-d)} {(-o)} {(${ VSub_Name OWNER)} {(-g)} 
                                  {(${ VSub_Name GROUP)} {(-m)} {(${ VSub_Name PERM)} {(${ VSub_Name BASEDIR) (/) (${ VSub_Name FPATH)}
                                )
                              ]
                              spids: [19079 19080 19120 16777215]
                            )
                            (case_arm
                              pat_list: [{(f)}]
                              action: [
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name LINK))} 
                                              {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [
                                        (SimpleCommand
                                          words: [{(gunzip)}]
                                          redirects: [
                                            (Redir
                                              op: <Redir_Less '<'>
                                              fd: 16777215
                                              arg_word: {(files/) (${ VSub_Name HASH) (.gz)}
                                            )
                                            (Redir
                                              op: <Redir_Great '>'>
                                              fd: 16777215
                                              arg_word: {(${ VSub_Name HASH)}
                                            )
                                          ]
                                        )
                                        (C {(install)} {(-S)} {(-o)} {(${ VSub_Name OWNER)} {(-g)} 
                                          {(${ VSub_Name GROUP)} {(-m)} {(${ VSub_Name PERM)} {(${ VSub_Name HASH)} {(${ VSub_Name BASEDIR) (/) (${ VSub_Name FPATH)}
                                        )
                                        (C {(rm)} {(${ VSub_Name HASH)})
                                      ]
                                      spids: [16777215 19142]
                                    )
                                  ]
                                  else_action: [
                                    (C {(ln)} {(-f)} {(${ VSub_Name BASEDIR) (/) (${ VSub_Name LINK)} 
                                      {(${ VSub_Name BASEDIR) (/) (${ VSub_Name FPATH)}
                                    )
                                  ]
                                  spids: [19210 19238]
                                )
                              ]
                              spids: [19123 19124 19241 16777215]
                            )
                            (case_arm
                              pat_list: [{(L)}]
                              action: [
                                (C {(ln)} {(-sfh)} {(${ VSub_Name HASH)} 
                                  {(${ VSub_Name BASEDIR) (/) (${ VSub_Name FPATH)}
                                )
                              ]
                              spids: [19244 19245 19269 16777215]
                            )
                          ]
                          spids: [19070 19076 19272]
                        )
                      ]
                      spids: [19067 19275]
                    )
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(tr)} {(SQ <'|'>)} {(SQ <' '>)}]
                  redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{($ VSub_Number '$1')})]
                )
                (WhileUntil
                  keyword: <KW_While while>
                  cond: [
                    (Sentence
                      child: 
                        (C {(read)} {(FPATH)} {(TYPE)} {(OWNER)} {(GROUP)} {(PERM)} {(FLAGS)} {(HASH)} 
                          {(LINK)}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  body: 
                    (DoGroup
                      children: [
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (AndOr
                                      ops: [Op_DAmp]
                                      children: [
                                        (C {(Lit_Other '[')} {(${ VSub_Name TYPE)} {(Lit_Other '=')} 
                                          {(DQ (f))} {(Lit_Other ']')}
                                        )
                                        (Pipeline
                                          children: [
                                            (C {(Lit_Other '[')} {(${ VSub_Name FLAGS)} 
                                              {(Lit_Other '=')} {(DQ (0))} {(Lit_Other ']')}
                                            )
                                          ]
                                          negated: T
                                        )
                                      ]
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (C {(chflags)} {(${ VSub_Name FLAGS)} 
                                  {(${ VSub_Name BASEDIR) (/) (${ VSub_Name FPATH)}
                                )
                              ]
                              spids: [16777215 19360]
                            )
                          ]
                          spids: [16777215 19378]
                        )
                      ]
                      spids: [19321 19381]
                    )
                )
              ]
              negated: F
            )
          ]
          spids: [19003]
        )
      spids: [18998 19002]
    )
    (FuncDef
      name: install_delete
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)}]
                  redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{($ VSub_Number '$2')})]
                )
                (SimpleCommand
                  words: [{(sort)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(newfiles)})]
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(sort)} {(-k)} {(1) (Lit_Comma ',') (1)} {(-t)} {(SQ <'|'>)} {($ VSub_Number '$1')})
                (C {(join)} {(-t)} {(SQ <'|'>)} {(-v)} {(1)} {(-)} {(newfiles)})
                (C {(sort)} {(-r)} {(-k)} {(1) (Lit_Comma ',') (1)} {(-t)} {(SQ <'|'>)})
                (C {(cut)} {(-f)} {(1) (Lit_Comma ',') (2)} {(-d)} {(SQ <'|'>)})
                (SimpleCommand
                  words: [{(tr)} {(SQ <'|'>)} {(SQ <' '>)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(killfiles)})]
                )
              ]
              negated: F
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [(Sentence child:(C {(read)} {(FPATH)} {(TYPE)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(${ VSub_Name TYPE)}
                      arms: [
                        (case_arm
                          pat_list: [{(d)}]
                          action: [(C {(rmdir)} {(${ VSub_Name BASEDIR) (/) (${ VSub_Name FPATH)})]
                          spids: [19547 19548 19562 16777215]
                        )
                        (case_arm
                          pat_list: [{(f)}]
                          action: [(C {(rm)} {(${ VSub_Name BASEDIR) (/) (${ VSub_Name FPATH)})]
                          spids: [19565 19566 19580 16777215]
                        )
                        (case_arm
                          pat_list: [{(L)}]
                          action: [(C {(rm)} {(${ VSub_Name BASEDIR) (/) (${ VSub_Name FPATH)})]
                          spids: [19583 19584 19598 16777215]
                        )
                      ]
                      spids: [19538 19544 19601]
                    )
                  ]
                  spids: [19535 19604]
                )
              redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(killfiles)})]
            )
            (C {(rm)} {(newfiles)} {(killfiles)})
          ]
          spids: [19394]
        )
      spids: [19389 19393]
    )
    (FuncDef
      name: install_files
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-f)} {($ VSub_Number '$1') (/kerneldone)} 
                              {(Lit_Other ']')}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(grep)} {(-E)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-OLD)}]
                      redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-OLD)})]
                    )
                    (SimpleCommand
                      words: [{(grep)} {(-E)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-NEW)}]
                      redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-NEW)})]
                    )
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(backup_kernel)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(install_from_index)} {(INDEX-NEW)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(install_delete)} {(INDEX-OLD)} {(INDEX-NEW)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-s)} {(INDEX-OLD)} {(-o)} {(-s)} {(INDEX-NEW)} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (SimpleCommand
                              words: [{(kldxref)} {(-R)} {(${ VSub_Name BASEDIR) (/boot/)}]
                              redirects: [(Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})]
                            )
                          ]
                          spids: [16777215 19759]
                        )
                      ]
                      spids: [16777215 19775]
                    )
                    (C {(touch)} {($ VSub_Number '$1') (/kerneldone)})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (AndOr
                                  ops: [Op_DAmp]
                                  children: [
                                    (C {(Lit_Other '[')} {(-f)} {($ VSub_Number '$1') (/kernelfirst)} 
                                      {(Lit_Other ']')}
                                    )
                                    (C {(Lit_Other '[')} {(-s)} {(INDEX-OLD)} {(-o)} {(-s)} {(INDEX-NEW)} 
                                      {(Lit_Other ']')}
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (SimpleCommand
                              words: [{(cat)}]
                              redirects: [
                                (HereDoc
                                  op: <Redir_DLessDash '<<-'>
                                  fd: 16777215
                                  here_begin: {(EOF)}
                                  here_end_span_id: 19839
                                  stdin_parts: [
                                    ('\n')
                                    (
'Kernel updates have been installed.  Please reboot and run\n'
                                    )
                                    (Right_DoubleQuote '"')
                                    ($ VSub_Number '$0')
                                    (' install')
                                    (Right_DoubleQuote '"')
                                    (' again to finish installing updates.\n')
                                  ]
                                )
                              ]
                            )
                            (ControlFlow
                              token: <ControlFlow_Exit exit>
                              arg_word: {(0)}
                            )
                          ]
                          spids: [16777215 19823]
                        )
                      ]
                      spids: [16777215 19846]
                    )
                  ]
                  spids: [16777215 19654]
                )
              ]
              spids: [16777215 19849]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-f)} {($ VSub_Number '$1') (/worlddone)} 
                              {(Lit_Other ']')}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Pipeline
                      children: [
                        (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-NEW)})
                        (SimpleCommand
                          words: [{(grep)} {(-E)} {(SQ <'^[^|]+\\|d\\|'>)}]
                          redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-NEW)})]
                        )
                      ]
                      negated: F
                    )
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(install_from_index)} {(INDEX-NEW)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                    (Pipeline
                      children: [
                        (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-NEW)})
                        (C {(grep)} {(-vE)} {(SQ <'^[^|]+\\|d\\|'>)})
                        (SimpleCommand
                          words: [{(grep)} {(-E)} {(SQ <'^/libexec/ld-elf[^|]*\\.so\\.[0-9]+\\|'>)}]
                          redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-NEW)})]
                        )
                      ]
                      negated: F
                    )
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(install_from_index)} {(INDEX-NEW)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                    (Pipeline
                      children: [
                        (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-NEW)})
                        (C {(grep)} {(-vE)} {(SQ <'^[^|]+\\|d\\|'>)})
                        (C {(grep)} {(-vE)} {(SQ <'^/libexec/ld-elf[^|]*\\.so\\.[0-9]+\\|'>)})
                        (SimpleCommand
                          words: [{(grep)} {(-E)} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}]
                          redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-NEW)})]
                        )
                      ]
                      negated: F
                    )
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(install_from_index)} {(INDEX-NEW)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                    (Pipeline
                      children: [
                        (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-OLD)})
                        (C {(grep)} {(-vE)} {(SQ <'^[^|]+\\|d\\|'>)})
                        (C {(grep)} {(-vE)} {(SQ <'^/libexec/ld-elf[^|]*\\.so\\.[0-9]+\\|'>)})
                        (SimpleCommand
                          words: [{(grep)} {(-vE)} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}]
                          redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-OLD)})]
                        )
                      ]
                      negated: F
                    )
                    (Pipeline
                      children: [
                        (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-NEW)})
                        (C {(grep)} {(-vE)} {(SQ <'^[^|]+\\|d\\|'>)})
                        (C {(grep)} {(-vE)} {(SQ <'^/libexec/ld-elf[^|]*\\.so\\.[0-9]+\\|'>)})
                        (SimpleCommand
                          words: [{(grep)} {(-vE)} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}]
                          redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-NEW)})]
                        )
                      ]
                      negated: F
                    )
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(install_from_index)} {(INDEX-NEW)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(install_delete)} {(INDEX-OLD)} {(INDEX-NEW)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (AndOr
                                  ops: [Op_DPipe]
                                  children: [
                                    (C {(Lit_Other '[')} {(${ VSub_Name BASEDIR) (/etc/master.passwd)} 
                                      {(-nt)} {(${ VSub_Name BASEDIR) (/etc/spwd.db)} {(Lit_Other ']')}
                                    )
                                    (C {(Lit_Other '[')} {(${ VSub_Name BASEDIR) (/etc/master.passwd)} 
                                      {(-nt)} {(${ VSub_Name BASEDIR) (/etc/pwd.db)} {(Lit_Other ']')}
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(pwd_mkdb)} {(-d)} {(${ VSub_Name BASEDIR) (/etc)} 
                              {(${ VSub_Name BASEDIR) (/etc/master.passwd)}
                            )
                          ]
                          spids: [16777215 20205]
                        )
                      ]
                      spids: [16777215 20223]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(${ VSub_Name BASEDIR) (/etc/login.conf)} {(-nt)} 
                                  {(${ VSub_Name BASEDIR) (/etc/login.conf.db)} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(cap_mkdb)} {(${ VSub_Name BASEDIR) (/etc/login.conf)})]
                          spids: [16777215 20250]
                        )
                      ]
                      spids: [16777215 20261]
                    )
                    (C {(touch)} {($ VSub_Number '$1') (/worlddone)})
                    (Pipeline
                      children: [
                        (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-NEW)})
                        (C {(grep)} {(-E)} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)})
                        (C {(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)})
                        (SimpleCommand
                          words: [{(sort)}]
                          redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(newfiles)})]
                        )
                      ]
                      negated: F
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [
                                    (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} 
                                      {($ VSub_Number '$1') (/INDEX-OLD)}
                                    )
                                    (C {(grep)} {(-E)} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)})
                                    (C {(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)})
                                    (C {(sort)})
                                    (C {(join)} {(-v)} {(1)} {(-)} {(newfiles)})
                                    (C {(grep)} {(-q)} {(.)})
                                  ]
                                  negated: F
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (SimpleCommand
                              words: [{(cat)}]
                              redirects: [
                                (HereDoc
                                  op: <Redir_DLessDash '<<-'>
                                  fd: 16777215
                                  here_begin: {(EOF)}
                                  here_end_span_id: 20417
                                  stdin_parts: [
                                    ('\n')
                                    (
'Completing this upgrade requires removing old shared object files.\n'
                                    )
                                    (
'Please rebuild all installed 3rd party software (e.g., programs\n'
                                    )
                                    ('installed from the ports tree) and then run ')
                                    (Right_DoubleQuote '"')
                                    ($ VSub_Number '$0')
                                    (' install')
                                    (Right_DoubleQuote '"')
                                    ('\n')
                                    ('again to finish installing updates.\n')
                                  ]
                                )
                              ]
                            )
                            (C {(rm)} {(newfiles)})
                            (ControlFlow
                              token: <ControlFlow_Exit exit>
                              arg_word: {(0)}
                            )
                          ]
                          spids: [16777215 20398]
                        )
                      ]
                      spids: [16777215 20429]
                    )
                    (C {(rm)} {(newfiles)})
                  ]
                  spids: [16777215 19871]
                )
              ]
              spids: [16777215 20437]
            )
            (Pipeline
              children: [
                (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-NEW)})
                (C {(grep)} {(-vE)} {(SQ <'^[^|]+\\|d\\|'>)})
                (SimpleCommand
                  words: [{(grep)} {(-E)} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-NEW)})]
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-OLD)})
                (C {(grep)} {(-vE)} {(SQ <'^[^|]+\\|d\\|'>)})
                (SimpleCommand
                  words: [{(grep)} {(-E)} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-OLD)})]
                )
              ]
              negated: F
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(install_delete)} {(INDEX-OLD)} {(INDEX-NEW)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (Pipeline
              children: [
                (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-NEW)})
                (SimpleCommand
                  words: [{(grep)} {(-E)} {(SQ <'^[^|]+\\|d\\|'>)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-NEW)})]
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-OLD)})
                (SimpleCommand
                  words: [{(grep)} {(-E)} {(SQ <'^[^|]+\\|d\\|'>)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-OLD)})]
                )
              ]
              negated: F
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(install_delete)} {(INDEX-OLD)} {(INDEX-NEW)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (C {(rm)} {(INDEX-OLD)} {(INDEX-NEW)})
          ]
          spids: [19633]
        )
      spids: [19628 19632]
    )
    (FuncDef
      name: install_setup_rollback
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-f)} {(${ VSub_Name BDHASH) (-install/kernelfirst)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(rm)} {(${ VSub_Name BDHASH) (-install/kernelfirst)})
                    (C {(rm)} {(${ VSub_Name BDHASH) (-install/kerneldone)})
                  ]
                  spids: [16777215 20657]
                )
              ]
              spids: [16777215 20676]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-f)} {(${ VSub_Name BDHASH) (-install/worlddone)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(rm)} {(${ VSub_Name BDHASH) (-install/worlddone)})]
                  spids: [16777215 20693]
                )
              ]
              spids: [16777215 20704]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-L)} {(${ VSub_Name BDHASH) (-rollback)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(mv)} {(${ VSub_Name BDHASH) (-rollback)} 
                      {(${ VSub_Name BDHASH) (-install/rollback)}
                    )
                  ]
                  spids: [16777215 20722]
                )
              ]
              spids: [16777215 20738]
            )
            (C {(mv)} {(${ VSub_Name BDHASH) (-install)} {(${ VSub_Name BDHASH) (-rollback)})
          ]
          spids: [20628]
        )
      spids: [20623 20627]
    )
    (FuncDef
      name: install_run
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(-n)} {(DQ ('Installing updates...'))})
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(install_verify)} {(${ VSub_Name BDHASH) (-install/INDEX-OLD)} 
                  {(${ VSub_Name BDHASH) (-install/INDEX-NEW)}
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(install_unschg)} {(${ VSub_Name BDHASH) (-install/INDEX-OLD)} 
                  {(${ VSub_Name BDHASH) (-install/INDEX-NEW)}
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(install_files)} {(${ VSub_Name BDHASH) (-install)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (C {(install_setup_rollback)})
            (C {(echo)} {(DQ (' done.'))})
          ]
          spids: [20765]
        )
      spids: [20760 20764]
    )
    (FuncDef
      name: rollback_setup_rollback
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-L)} {(${ VSub_Name BDHASH) (-rollback/rollback)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(mv)} {(${ VSub_Name BDHASH) (-rollback/rollback)} {(rollback-tmp)})
                    (C {(rm)} {(-r)} {(${ VSub_Name BDHASH) (-rollback/)})
                    (C {(rm)} {(${ VSub_Name BDHASH) (-rollback)})
                    (C {(mv)} {(rollback-tmp)} {(${ VSub_Name BDHASH) (-rollback)})
                  ]
                  spids: [16777215 20891]
                )
              ]
              else_action: [
                (C {(rm)} {(-r)} {(${ VSub_Name BDHASH) (-rollback/)})
                (C {(rm)} {(${ VSub_Name BDHASH) (-rollback)})
              ]
              spids: [20932 20953]
            )
          ]
          spids: [20874]
        )
      spids: [20869 20873]
    )
    (FuncDef
      name: rollback_files
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-NEW)})
                (C {(grep)} {(-E)} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)})
                (C {(cut)} {(-f)} {(1)} {(-d)} {(SQ <'|'>)})
                (SimpleCommand
                  words: [{(sort)}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(INDEX-NEW.libs.flist)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-OLD)})
                (C {(grep)} {(-E)} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)})
                (C {(sort)} {(-k)} {(1) (Lit_Comma ',') (1)} {(-t)} {(SQ <'|'>)} {(-)})
                (SimpleCommand
                  words: [{(join)} {(-t)} {(SQ <'|'>)} {(-v)} {(1)} {(-)} {(INDEX-NEW.libs.flist)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-OLD)})]
                )
              ]
              negated: F
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(install_from_index)} {(INDEX-OLD)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (Pipeline
              children: [
                (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-OLD)})
                (SimpleCommand
                  words: [{(grep)} {(-vE)} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-OLD)})]
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-NEW)})
                (SimpleCommand
                  words: [{(grep)} {(-vE)} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-NEW)})]
                )
              ]
              negated: F
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(install_from_index)} {(INDEX-OLD)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(install_delete)} {(INDEX-NEW)} {(INDEX-OLD)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (Pipeline
              children: [
                (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-OLD)})
                (C {(grep)} {(-E)} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)})
                (C {(sort)} {(-k)} {(1) (Lit_Comma ',') (1)} {(-t)} {(SQ <'|'>)} {(-)})
                (SimpleCommand
                  words: [{(join)} {(-t)} {(SQ <'|'>)} {(-)} {(INDEX-NEW.libs.flist)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-OLD)})]
                )
              ]
              negated: F
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(install_from_index)} {(INDEX-OLD)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (Pipeline
              children: [
                (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-OLD)})
                (SimpleCommand
                  words: [{(grep)} {(-E)} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-OLD)})]
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(grep)} {(-vE)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-NEW)})
                (SimpleCommand
                  words: [{(grep)} {(-E)} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-NEW)})]
                )
              ]
              negated: F
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(install_delete)} {(INDEX-NEW)} {(INDEX-OLD)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (SimpleCommand
              words: [{(grep)} {(-E)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-OLD)}]
              redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-OLD)})]
            )
            (SimpleCommand
              words: [{(grep)} {(-E)} {(SQ <'^/boot/'>)} {($ VSub_Number '$1') (/INDEX-NEW)}]
              redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-NEW)})]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(install_from_index)} {(INDEX-OLD)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(install_delete)} {(INDEX-NEW)} {(INDEX-OLD)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-s)} {(INDEX-OLD)} {(-o)} {(-s)} {(INDEX-NEW)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(kldxref)} {(-R)} {(/boot/)}]
                      redirects: [(Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})]
                    )
                  ]
                  spids: [16777215 21410]
                )
              ]
              spids: [16777215 21423]
            )
            (C {(rm)} {(INDEX-OLD)} {(INDEX-NEW)} {(INDEX-NEW.libs.flist)})
          ]
          spids: [20966]
        )
      spids: [20961 20965]
    )
    (FuncDef
      name: rollback_run
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(-n)} {(DQ ('Uninstalling updates...'))})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-L)} {(${ VSub_Name BDHASH) (-install)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(rm)} {(-r)} {(${ VSub_Name BDHASH) (-install/)})
                    (C {(rm)} {(${ VSub_Name BDHASH) (-install)})
                  ]
                  spids: [16777215 21485]
                )
              ]
              spids: [16777215 21506]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(install_verify)} {(${ VSub_Name BDHASH) (-rollback/INDEX-NEW)} 
                  {(${ VSub_Name BDHASH) (-rollback/INDEX-OLD)}
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(install_unschg)} {(${ VSub_Name BDHASH) (-rollback/INDEX-NEW)} 
                  {(${ VSub_Name BDHASH) (-rollback/INDEX-OLD)}
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(rollback_files)} {(${ VSub_Name BDHASH) (-rollback)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (C {(rollback_setup_rollback)})
            (C {(echo)} {(DQ (' done.'))})
          ]
          spids: [21450]
        )
      spids: [21445 21449]
    )
    (FuncDef
      name: IDS_compare
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [
                {(cut)}
                {(-f)}
                {(1-5) (Lit_Comma ',') (7-8)}
                {(-d)}
                {(SQ <'|'>)}
                {($ VSub_Number '$1')}
              ]
              redirects: [
                (Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_Number '$1') (.noflags)}
                )
              ]
            )
            (SimpleCommand
              words: [
                {(sort)}
                {(-k)}
                {(1) (Lit_Comma ',') (1)}
                {(-t)}
                {(SQ <'|'>)}
                {($ VSub_Number '$1') (.noflags)}
              ]
              redirects: [
                (Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_Number '$1') (.sorted)}
                )
              ]
            )
            (Pipeline
              children: [
                (C {(cut)} {(-f)} {(1-5) (Lit_Comma ',') (7-8)} {(-d)} {(SQ <'|'>)} {($ VSub_Number '$2')})
                (C {(comm)} {(-13)} {($ VSub_Number '$1') (.noflags)} {(-)})
                (C {(fgrep)} {(-v)} {(SQ <'|-|||||'>)})
                (C {(sort)} {(-k)} {(1) (Lit_Comma ',') (1)} {(-t)} {(SQ <'|'>)})
                (SimpleCommand
                  words: [{(join)} {(-t)} {(SQ <'|'>)} {($ VSub_Number '$1') (.sorted)} {(-)}]
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-NOTMATCHING)})]
                )
              ]
              negated: F
            )
            (Pipeline
              children: [
                (ForEach
                  iter_name: X
                  iter_words: [{(${ VSub_Name IDSIGNOREPATHS)}]
                  do_arg_iter: F
                  body: 
                    (DoGroup
                      children: [
                        (C {(grep)} {(-E)} {(DQ ('^') (${ VSub_Name X))} {(INDEX-NOTMATCHING)})
                      ]
                      spids: [21771 21788]
                    )
                  spids: [21765 21769]
                )
                (C {(sort)} {(-u)})
                (SimpleCommand
                  words: [{(comm)} {(-13)} {(-)} {(INDEX-NOTMATCHING)}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(INDEX-NOTMATCHING.tmp)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {(mv)} {(INDEX-NOTMATCHING.tmp)} {(INDEX-NOTMATCHING)})
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:IFS) op:Equal rhs:{(SQ <'|'>)} spids:[21827])]
              spids: [21825]
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [
                (Sentence
                  child: 
                    (C {(read)} {(FPATH)} {(TYPE)} {(OWNER)} {(GROUP)} {(PERM)} {(HASH)} {(LINK)} {(P_TYPE)} 
                      {(P_OWNER)} {(P_GROUP)} {(P_PERM)} {(P_HASH)} {(P_LINK)}
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [
                                    (C {(Lit_Other '[')} {(DQ (${ VSub_Name TYPE))} {(Lit_Other '=')} 
                                      {(DQ (${ VSub_Name P_TYPE))} {(Lit_Other ']')}
                                    )
                                  ]
                                  negated: T
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(-n)} {(DQ (${ VSub_Name FPATH) (' is a '))})
                            (Case
                              to_match: {(DQ (${ VSub_Name P_TYPE))}
                              arms: [
                                (case_arm
                                  pat_list: [{(f)}]
                                  action: [(C {(echo)} {(-n)} {(DQ ('regular file, '))})]
                                  spids: [21920 21921 21932 16777215]
                                )
                                (case_arm
                                  pat_list: [{(d)}]
                                  action: [(C {(echo)} {(-n)} {(DQ ('directory, '))})]
                                  spids: [21935 21936 21947 16777215]
                                )
                                (case_arm
                                  pat_list: [{(L)}]
                                  action: [(C {(echo)} {(-n)} {(DQ ('symlink, '))})]
                                  spids: [21950 21951 21962 16777215]
                                )
                              ]
                              spids: [21909 21917 21965]
                            )
                            (C {(echo)} {(-n)} {(DQ ('but should be a '))})
                            (Case
                              to_match: {(DQ (${ VSub_Name TYPE))}
                              arms: [
                                (case_arm
                                  pat_list: [{(f)}]
                                  action: [(C {(echo)} {(-n)} {(DQ ('regular file.'))})]
                                  spids: [21988 21989 22000 16777215]
                                )
                                (case_arm
                                  pat_list: [{(d)}]
                                  action: [(C {(echo)} {(-n)} {(DQ (directory.))})]
                                  spids: [22003 22004 22015 16777215]
                                )
                                (case_arm
                                  pat_list: [{(L)}]
                                  action: [(C {(echo)} {(-n)} {(DQ (symlink.))})]
                                  spids: [22018 22019 22030 16777215]
                                )
                              ]
                              spids: [21977 21985 22033]
                            )
                            (C {(echo)})
                            (ControlFlow
                              token: <ControlFlow_Continue continue>
                            )
                          ]
                          spids: [16777215 21894]
                        )
                      ]
                      spids: [16777215 22051]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [
                                    (C {(Lit_Other '[')} {(DQ (${ VSub_Name OWNER))} {(Lit_Other '=')} 
                                      {(DQ (${ VSub_Name P_OWNER))} {(Lit_Other ']')}
                                    )
                                  ]
                                  negated: T
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(-n)} 
                              {
                                (DQ (${ VSub_Name FPATH) (' is owned by user id ') 
                                  (${ VSub_Name P_OWNER) (', ')
                                )
                              }
                            )
                            (C {(echo)} 
                              {(DQ ('but should be owned by user id ') (${ VSub_Name OWNER) (.))}
                            )
                          ]
                          spids: [16777215 22082]
                        )
                      ]
                      spids: [16777215 22112]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [
                                    (C {(Lit_Other '[')} {(DQ (${ VSub_Name GROUP))} {(Lit_Other '=')} 
                                      {(DQ (${ VSub_Name P_GROUP))} {(Lit_Other ']')}
                                    )
                                  ]
                                  negated: T
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(-n)} 
                              {
                                (DQ (${ VSub_Name FPATH) (' is owned by group id ') 
                                  (${ VSub_Name P_GROUP) (', ')
                                )
                              }
                            )
                            (C {(echo)} 
                              {(DQ ('but should be owned by group id ') (${ VSub_Name GROUP) (.))}
                            )
                          ]
                          spids: [16777215 22143]
                        )
                      ]
                      spids: [16777215 22173]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (AndOr
                                  ops: [Op_DAmp]
                                  children: [
                                    (Pipeline
                                      children: [
                                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name PERM))} 
                                          {(Lit_Other '=')} {(DQ (${ VSub_Name P_PERM))} {(Lit_Other ']')}
                                        )
                                      ]
                                      negated: T
                                    )
                                    (Pipeline
                                      children: [
                                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name TYPE))} 
                                          {(Lit_Other '=')} {(DQ (L))} {(Lit_Other ']')}
                                        )
                                      ]
                                      negated: T
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(-n)} 
                              {
                                (DQ (${ VSub_Name FPATH) (' has ') (${ VSub_Name P_PERM) 
                                  (' permissions, ')
                                )
                              }
                            )
                            (C {(echo)} 
                              {(DQ ('but should have ') (${ VSub_Name PERM) (' permissions.'))}
                            )
                          ]
                          spids: [16777215 22237]
                        )
                      ]
                      spids: [16777215 22267]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [
                                    (C {(Lit_Other '[')} {(DQ (${ VSub_Name HASH))} {(Lit_Other '=')} 
                                      {(DQ (${ VSub_Name P_HASH))} {(Lit_Other ']')}
                                    )
                                  ]
                                  negated: T
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name TYPE))} 
                                          {(Lit_Other '=')} {(DQ (L))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} {(-n)} 
                                      {
                                        (DQ (${ VSub_Name FPATH) (' is a symlink to ') 
                                          (${ VSub_Name P_HASH) (', ')
                                        )
                                      }
                                    )
                                    (C {(echo)} 
                                      {(DQ ('but should be a symlink to ') (${ VSub_Name HASH) (.))}
                                    )
                                  ]
                                  spids: [16777215 22320]
                                )
                              ]
                              spids: [16777215 22350]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name TYPE))} 
                                          {(Lit_Other '=')} {(DQ (f))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} {(-n)} 
                                      {
                                        (DQ (${ VSub_Name FPATH) (' has SHA256 hash ') 
                                          (${ VSub_Name P_HASH) (', ')
                                        )
                                      }
                                    )
                                    (C {(echo)} 
                                      {(DQ ('but should have SHA256 hash ') (${ VSub_Name HASH) (.))}
                                    )
                                  ]
                                  spids: [16777215 22372]
                                )
                              ]
                              spids: [16777215 22402]
                            )
                          ]
                          spids: [16777215 22298]
                        )
                      ]
                      spids: [16777215 22405]
                    )
                  ]
                  spids: [21864 22421]
                )
              redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(INDEX-NOTMATCHING)})]
            )
            (C {(rm)} {($ VSub_Number '$1')} {($ VSub_Number '$1') (.noflags)} 
              {($ VSub_Number '$1') (.sorted)} {($ VSub_Number '$2')} {(INDEX-NOTMATCHING)}
            )
          ]
          spids: [21614]
        )
      spids: [21609 21613]
    )
    (FuncDef
      name: IDS_run
      body: 
        (BraceGroup
          children: [
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(workdir_init)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [(C {(fetch_pick_server_init)}) (C {(fetch_pick_server)})]
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [
                (Sentence
                  child: (Pipeline children:[(C {(fetch_key)})] negated:T)
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(fetch_pick_server)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                  ]
                  spids: [22494 22506]
                )
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [
                (Sentence
                  child: (Pipeline children:[(C {(fetch_tag)})] negated:T)
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(fetch_pick_server)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                  ]
                  spids: [22526 22538]
                )
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_tagsanity)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_metadata)} {(INDEX-OLD)} {(INDEX-ALL)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_filter_metadata)} {(INDEX-OLD)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_filter_metadata)} {(INDEX-ALL)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (SimpleCommand
              words: [{(sort)} {(INDEX-OLD)} {(INDEX-ALL)}]
              redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(INDEX-ALL.tmp)})]
            )
            (C {(mv)} {(INDEX-ALL.tmp)} {(INDEX-ALL)})
            (C {(rm)} {(INDEX-OLD)})
            (C {(fetch_filter_kernel_names)} {(INDEX-ALL)} {(${ VSub_Name KERNCONF)})
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(fetch_inspect_system)} {(INDEX-ALL)} {(INDEX-PRESENT)} {(/dev/null)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (C {(IDS_compare)} {(INDEX-ALL)} {(INDEX-PRESENT)})
          ]
          spids: [22458]
        )
      spids: [22453 22457]
    )
    (FuncDef
      name: get_params
      body: 
        (BraceGroup
          children: [
            (C {(init_params)})
            (C {(parse_cmdline)} {($ VSub_At '$@')})
            (C {(parse_conffile)})
            (C {(default_params)})
          ]
          spids: [22694]
        )
      spids: [22689 22693]
    )
    (FuncDef
      name: cmd_fetch
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-t)} {(0)} {(-a)} {($ VSub_Name '$NOTTYOK')} 
                          {(-eq)} {(0)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [22756 22760]
                          ) (' fetch should not ')
                        )
                      }
                    )
                    (C {(echo)} {(DQ ('be run non-interactively.'))})
                    (C {(echo)} 
                      {
                        (DQ ('Run ') 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(basename)} {($ VSub_Number '$0')})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [22776 22780]
                          ) (' cron instead.')
                        )
                      }
                    )
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 22748]
                )
              ]
              spids: [16777215 22790]
            )
            (C {(fetch_check_params)})
            (AndOr
              ops: [Op_DPipe]
              children: [(C {(fetch_run)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})]
            )
          ]
          spids: [22724]
        )
      spids: [22719 22723]
    )
    (FuncDef
      name: cmd_cron
      body: 
        (BraceGroup
          children: [
            (C {(fetch_check_params)})
            (C {(sleep)} 
              {
                (CommandSubPart
                  command_list: (CommandList children:[(C {(jot)} {(-r)} {(1)} {(0)} {(3600)})])
                  left_token: <Left_Backtick '`'>
                  spids: [22832 22842]
                )
              }
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:TMPFILE)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(mktemp)} {(/tmp/freebsd-update.XXXXXX)})]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [22847 22851]
                          )
                        }
                      spids: [22846]
                    )
                  ]
                  spids: [22846]
                )
                (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              ]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DPipe Op_DPipe]
                          children: [
                            (Pipeline
                              children: [
                                (SimpleCommand
                                  words: [{(fetch_run)}]
                                  redirects: [
                                    (Redir
                                      op: <Redir_DGreat '>>'>
                                      fd: 16777215
                                      arg_word: {(${ VSub_Name TMPFILE)}
                                    )
                                  ]
                                )
                              ]
                              negated: T
                            )
                            (Pipeline
                              children: [
                                (C {(grep)} {(-q)} {(DQ ('No updates needed'))} {(${ VSub_Name TMPFILE)})
                              ]
                              negated: T
                            )
                            (C {(Lit_Other '[')} {(${ VSub_Name VERBOSELEVEL)} {(Lit_Other '=')} 
                              {(DQ (debug))} {(Lit_Other ']')}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(mail)}
                        {(-s)}
                        {
                          (DQ 
                            (CommandSubPart
                              command_list: (CommandList children:[(C {(hostname)})])
                              left_token: <Left_Backtick '`'>
                              spids: [22915 22917]
                            ) (' security updates')
                          )
                        }
                        {(${ VSub_Name MAILTO)}
                      ]
                      redirects: [
                        (Redir
                          op: <Redir_Less '<'>
                          fd: 16777215
                          arg_word: {(${ VSub_Name TMPFILE)}
                        )
                      ]
                    )
                  ]
                  spids: [16777215 22907]
                )
              ]
              spids: [16777215 22932]
            )
            (C {(rm)} {(${ VSub_Name TMPFILE)})
          ]
          spids: [22824]
        )
      spids: [22819 22823]
    )
    (FuncDef
      name: cmd_upgrade
      body: 
        (BraceGroup
          children: [
            (C {(upgrade_check_params)})
            (AndOr
              ops: [Op_DPipe]
              children: [(C {(upgrade_run)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})]
            )
          ]
          spids: [22953]
        )
      spids: [22948 22952]
    )
    (FuncDef
      name: cmd_install
      body: 
        (BraceGroup
          children: [
            (C {(install_check_params)})
            (AndOr
              ops: [Op_DPipe]
              children: [(C {(install_run)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})]
            )
          ]
          spids: [22978]
        )
      spids: [22973 22977]
    )
    (FuncDef
      name: cmd_rollback
      body: 
        (BraceGroup
          children: [
            (C {(rollback_check_params)})
            (AndOr
              ops: [Op_DPipe]
              children: [(C {(rollback_run)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})]
            )
          ]
          spids: [23003]
        )
      spids: [22998 23002]
    )
    (FuncDef
      name: cmd_IDS
      body: 
        (BraceGroup
          children: [
            (C {(IDS_check_params)})
            (AndOr
              ops: [Op_DPipe]
              children: [(C {(IDS_run)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})]
            )
          ]
          spids: [23028]
        )
      spids: [23023 23027]
    )
    (C {(export)} 
      {(Lit_VarLike 'PATH=') (/sbin) (Lit_Other ':') (/bin) (Lit_Other ':') (/usr/sbin) (Lit_Other ':') 
        (/usr/bin) (Lit_Other ':') (${ VSub_Name PATH)
      }
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$PAGER'))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PAGER)
                  op: Equal
                  rhs: {(/usr/bin/more)}
                  spids: [23087]
                )
              ]
              spids: [23087]
            )
          ]
          spids: [16777215 23084]
        )
      ]
      spids: [16777215 23090]
    )
    (C {(export)} {(Lit_VarLike 'LC_ALL=') (C)})
    (C {(get_params)} {($ VSub_At '$@')})
    (ForEach
      iter_name: COMMAND
      iter_words: [{(${ VSub_Name COMMANDS)}]
      do_arg_iter: F
      body: (DoGroup children:[(C {(cmd_) (${ VSub_Name COMMAND)})] spids:[23117 23125])
      spids: [23111 23115]
    )
  ]
)