(CommandList
  children: [
    (C {(set)} {(-ex)})
    (FuncDef
      name: cleanup
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ (${ VSub_Name POSTCLEANUP))}
                              right: {(true)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (LogicalOr
                                      left: 
                                        (BoolBinary
                                          op_id: BoolBinary_GlobDEqual
                                          left: {(DQ (${ VSub_Name CI))}
                                          right: {(true)}
                                        )
                                      right: 
                                        (BoolBinary
                                          op_id: BoolBinary_GlobDEqual
                                          left: {(DQ (${ VSub_Name FORCE))}
                                          right: {(true)}
                                        )
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (ForEach
                              iter_name: mp
                              iter_words: [
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(mount)})
                                              (C {(grep)} {(rkt)})
                                              (C {(awk)} {(SQ <'{print $3}'>)})
                                              (C {(tac)})
                                            ]
                                            negated: False
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [80 100]
                                  )
                                }
                              ]
                              do_arg_iter: False
                              body: 
                                (DoGroup
                                  children: [(C {(sudo)} {(umount)} {(DQ (${ VSub_Name mp))})]
                                  spids: [103 117]
                                )
                              spids: [79 101]
                            )
                            (ForEach
                              iter_name: link
                              iter_words: [
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(ip)} {(link)})
                                              (C {(grep)} {(rkt)})
                                              (C {(cut)} {(-d) (SQ <':'>)} {(-f2)})
                                              (C {(cut)} {(-d) (SQ <'@'>)} {(-f1)})
                                            ]
                                            negated: False
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [127 159]
                                  )
                                }
                              ]
                              do_arg_iter: False
                              body: 
                                (DoGroup
                                  children: [
                                    (C {(sudo)} {(ip)} {(link)} {(del)} {(DQ (${ VSub_Name link))})
                                  ]
                                  spids: [162 180]
                                )
                              spids: [126 160]
                            )
                            (C {(sudo)} {(rm)} {(-rf)} {(/var/lib/cni/networks/) (Lit_Other '*')})
                          ]
                          spids: [-1 71]
                        )
                      ]
                      spids: [-1 193]
                    )
                    (C {(sudo)} {(rm)} {(-rf)} {(DQ (${ VSub_Name BUILD_DIR))})
                  ]
                  spids: [-1 39]
                )
              ]
              spids: [-1 209]
            )
          ]
          spids: [19]
        )
      spids: [15 18]
    )
    (FuncDef
      name: ciSkip
      body: 
        (BraceGroup
          children: [
            (C {(cat)} {(last-commit)})
            (C {(echo)})
            (C {(echo)} {(DQ ('Build skipped as requested in the last commit.'))})
            (C {(exit)} {(0)})
          ]
          spids: [221]
        )
      spids: [217 220]
    )
    (FuncDef
      name: getBranchingPoint
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (C {(diff)} {(--old-line-format) (Lit_Other '=') (SQ )} 
                  {(--new-line-format) (Lit_Other '=') (SQ )} 
                  {
                    (CommandSubPart
                      command_list: 
                        (CommandList
                          children: [
                            (C {(git)} {(rev-list)} {(--first-parent)} 
                              {
                                (DQ 
                                  (BracedVarSub
                                    token: <VSub_Number 1>
                                    suffix_op: 
                                      (StringUnary
                                        op_id: VTest_ColonHyphen
                                        arg_word: {($ VSub_Number '$1')}
                                      )
                                    spids: [284 288]
                                  )
                                )
                              }
                            )
                          ]
                        )
                      left_token: <Left_ProcSubIn '<('>
                      spids: [276 290]
                    )
                  } 
                  {
                    (CommandSubPart
                      command_list: 
                        (CommandList
                          children: [
                            (C {(git)} {(rev-list)} {(--first-parent)} 
                              {
                                (DQ 
                                  (BracedVarSub
                                    token: <VSub_Number 2>
                                    suffix_op: 
                                      (StringUnary
                                        op_id: VTest_ColonHyphen
                                        arg_word: {($ VSub_Number '$2')}
                                      )
                                    spids: [302 306]
                                  )
                                )
                              }
                            )
                          ]
                        )
                      left_token: <Left_ProcSubIn '<('>
                      spids: [294 308]
                    )
                  }
                )
                (C {(head)} {(-1)})
              ]
              negated: False
            )
          ]
          spids: [259]
        )
      spids: [255 258]
    )
    (FuncDef
      name: semaphoreCIConfiguration
      body: 
        (BraceGroup
          children: [
            (AndOr children:[(C {(git)} {(fetch)})(C {(true)})] op_id:Op_DPipe)
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BRANCHING_POINT)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(getBranchingPoint)} {(HEAD)} {(origin/master)})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [351 357]
                      )
                    }
                  spids: [350]
                )
              ]
              spids: [350]
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:SRC_CHANGES)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Pipeline
                                    children: [
                                      (C {(git)} {(diff-tree)} {(--no-commit-id)} {(--name-only)} {(-r)} 
                                        {(HEAD..) (${ VSub_Name BRANCHING_POINT)}
                                      )
                                      (C {(grep)} {(-cEv)} {(${ VSub_Name DOC_CHANGE_PATTERN)})
                                    ]
                                    negated: False
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [361 386]
                          )
                        }
                      spids: [360]
                    )
                  ]
                  spids: [360]
                )
                (C {(true)})
              ]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:DOC_CHANGES)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Pipeline
                                    children: [
                                      (C {(git)} {(diff-tree)} {(--no-commit-id)} {(--name-only)} {(-r)} 
                                        {(HEAD..) (${ VSub_Name BRANCHING_POINT)}
                                      )
                                      (C {(grep)} {(-cE)} {(${ VSub_Name DOC_CHANGE_PATTERN)})
                                    ]
                                    negated: False
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [394 419]
                          )
                        }
                      spids: [393]
                    )
                  ]
                  spids: [393]
                )
                (C {(true)})
              ]
              op_id: Op_DPipe
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-f)} {(/opt/change-go-version.sh)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(.)} {(/opt/change-go-version.sh)})
                    (C {(change-go-version)} {(1.7)})
                    (C {(export)} {(Lit_VarLike 'CC=') (gcc-5)})
                  ]
                  spids: [-1 442]
                )
              ]
              spids: [-1 467]
            )
          ]
          spids: [326]
        )
      spids: [322 325]
    )
    (FuncDef
      name: checkFlavorValue
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:FLAVORS)
                  op: Equal
                  rhs: {(DQ ('coreos host kvm none src fly'))}
                  spids: [479]
                )
              ]
              spids: [479]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name RKT_STAGE1_USR_FROM))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(set)} {(-)}) (C {(echo)} {(DQ ('Flavor is not set'))}) (C {(exit)} {(1)})]
                  spids: [-1 500]
                )
              ]
              spids: [-1 520]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_EqualTilde
                                  left: {(DQ (${ VSub_Name FLAVORS))}
                                  right: {(DQ (${ VSub_Name RKT_STAGE1_USR_FROM))}
                                )
                            )
                          ]
                          negated: True
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(set)} {(-)})
                    (C {(echo)} {(DQ ('Unknown flavor: ') (${ VSub_Name RKT_STAGE1_USR_FROM))})
                    (C {(echo)} {(DQ ('Available flavors: ') (${ VSub_Name FLAVORS))})
                    (C {(exit)} {(1)})
                  ]
                  spids: [-1 546]
                )
              ]
              spids: [-1 579]
            )
          ]
          spids: [476]
        )
      spids: [472 475]
    )
    (FuncDef
      name: parseParameters
      body: 
        (BraceGroup
          children: [
            (While
              cond: [
                (Sentence
                  child: (C {(getopts)} {(DQ ('f:s:r:cxujdv'))} {(option)})
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(${ VSub_Name option)}
                      arms: [
                        (case_arm
                          pat_list: [{(f)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:RKT_STAGE1_USR_FROM)
                                  op: Equal
                                  rhs: {(DQ (${ VSub_Name OPTARG))}
                                  spids: [621]
                                )
                              ]
                              spids: [621]
                            )
                          ]
                          spids: [617 618 629 -1]
                        )
                        (case_arm
                          pat_list: [{(s)}]
                          action: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DBracket
                                          expr: 
                                            (BoolBinary
                                              op_id: BoolBinary_GlobDEqual
                                              left: {($ VSub_Name '$RKT_STAGE1_USR_FROM')}
                                              right: {(DQ (src))}
                                            )
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:RKT_STAGE1_SYSTEMD_VER)
                                          op: Equal
                                          rhs: {(DQ (${ VSub_Name OPTARG))}
                                          spids: [654]
                                        )
                                      ]
                                      spids: [654]
                                    )
                                  ]
                                  spids: [-1 651]
                                )
                              ]
                              else_action: [
                                (C {(echo)} 
                                  {
                                    (DQ ('Only ') (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) 
                                      (src) (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) (' flavor requires systemd version')
                                    )
                                  }
                                )
                              ]
                              spids: [662 676]
                            )
                          ]
                          spids: [632 633 679 -1]
                        )
                        (case_arm
                          pat_list: [{(r)}]
                          action: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DBracket
                                          expr: 
                                            (BoolBinary
                                              op_id: BoolBinary_GlobDEqual
                                              left: {($ VSub_Name '$RKT_STAGE1_USR_FROM')}
                                              right: {(DQ (src))}
                                            )
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:RKT_STAGE1_SYSTEMD_REV)
                                          op: Equal
                                          rhs: {(DQ (${ VSub_Name OPTARG))}
                                          spids: [704]
                                        )
                                      ]
                                      spids: [704]
                                    )
                                  ]
                                  spids: [-1 701]
                                )
                              ]
                              else_action: [
                                (C {(echo)} 
                                  {
                                    (DQ ('Only ') (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) 
                                      (src) (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) (' flavor requires systemd revision')
                                    )
                                  }
                                )
                              ]
                              spids: [712 726]
                            )
                          ]
                          spids: [682 683 729 -1]
                        )
                        (case_arm
                          pat_list: [{(x)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:FORCE)
                                  op: Equal
                                  rhs: {(true)}
                                  spids: [736]
                                )
                              ]
                              spids: [736]
                            )
                          ]
                          spids: [732 733 740 -1]
                        )
                        (case_arm
                          pat_list: [{(u)}]
                          action: [(C {(set)} {(-)}) (C {(usage)}) (C {(exit)} {(0)})]
                          spids: [743 744 760 -1]
                        )
                        (case_arm
                          pat_list: [{(c)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:PRECLEANUP)
                                  op: Equal
                                  rhs: {(true)}
                                  spids: [767]
                                )
                              ]
                              spids: [767]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:POSTCLEANUP)
                                  op: Equal
                                  rhs: {(true)}
                                  spids: [771]
                                )
                              ]
                              spids: [771]
                            )
                          ]
                          spids: [763 764 775 -1]
                        )
                        (case_arm
                          pat_list: [{(j)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:JUSTBUILD)
                                  op: Equal
                                  rhs: {(true)}
                                  spids: [782]
                                )
                              ]
                              spids: [782]
                            )
                          ]
                          spids: [778 779 786 -1]
                        )
                        (case_arm
                          pat_list: [{(d)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:DIRTYBUILD)
                                  op: Equal
                                  rhs: {(true)}
                                  spids: [793]
                                )
                              ]
                              spids: [793]
                            )
                          ]
                          spids: [789 790 797 -1]
                        )
                        (case_arm
                          pat_list: [{(v)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:VERBOSITY)
                                  op: Equal
                                  rhs: {(DQ ('V=3'))}
                                  spids: [804]
                                )
                              ]
                              spids: [804]
                            )
                          ]
                          spids: [800 801 810 -1]
                        )
                        (case_arm
                          pat_list: [{(EscapedLiteralPart token:<Lit_EscapedChar '\\?'>)}]
                          action: [
                            (C {(set)} {(-)})
                            (C {(echo)} {(DQ ('Invalid parameter -') (${ VSub_Name OPTARG))})
                            (C {(usage)})
                            (C {(exit)} {(1)})
                          ]
                          spids: [813 814 840 -1]
                        )
                      ]
                      spids: [608 614 843]
                    )
                  ]
                  spids: [605 846]
                )
            )
            (C {(checkFlavorValue)})
          ]
          spids: [591]
        )
      spids: [587 590]
    )
    (FuncDef
      name: configure
      body: 
        (BraceGroup
          children: [
            (Case
              to_match: {(DQ (${ VSub_Name RKT_STAGE1_USR_FROM))}
              arms: [
                (case_arm
                  pat_list: [{(coreos)} {(kvm)} {(fly)}]
                  action: [
                    (C {(./configure)} 
                      {(--with-stage1-flavors) (Lit_Other '=') (DQ (${ VSub_Name RKT_STAGE1_USR_FROM))} {(--with-stage1-default-flavor) (Lit_Other '=') (DQ (${ VSub_Name RKT_STAGE1_USR_FROM))} 
                      {(--enable-functional-tests)} {(--enable-tpm) (Lit_Other '=') (auto)} {(--enable-insecure-go)}
                    )
                  ]
                  spids: [875 880 916 -1]
                )
                (case_arm
                  pat_list: [{(host)}]
                  action: [
                    (C {(./configure)} {(--with-stage1-flavors) (Lit_Other '=') (host)} 
                      {(--with-default-stage1-flavor) (Lit_Other '=') (host)} {(--enable-functional-tests) (Lit_Other '=') (auto)} {(--enable-tpm) (Lit_Other '=') (auto)} 
                      {(--enable-insecure-go)}
                    )
                  ]
                  spids: [919 920 950 -1]
                )
                (case_arm
                  pat_list: [{(src)}]
                  action: [
                    (C {(./configure)} 
                      {(--with-stage1-flavors) (Lit_Other '=') (DQ (${ VSub_Name RKT_STAGE1_USR_FROM))} {(--with-stage1-default-flavor) (Lit_Other '=') (DQ (${ VSub_Name RKT_STAGE1_USR_FROM))} 
                      {(--with-stage1-systemd-version) (Lit_Other '=') 
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name RKT_STAGE1_SYSTEMD_VER>
                            suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(v999)})
                            spids: [982 986]
                          )
                        )
                      } 
                      {(--with-stage1-systemd-revision) (Lit_Other '=') 
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name RKT_STAGE1_SYSTEMD_REV>
                            suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(master)})
                            spids: [994 998]
                          )
                        )
                      } {(--enable-functional-tests)} {(--enable-tpm) (Lit_Other '=') (auto)} {(--enable-insecure-go)}
                    )
                  ]
                  spids: [953 954 1014 -1]
                )
                (case_arm
                  pat_list: [{(none)}]
                  action: [
                    (C {(./configure)} 
                      {(--with-stage1-default-name) (Lit_Other '=') 
                        (DQ (example.com/some-stage1-for-rkt))
                      } {(--with-stage1-default-version) (Lit_Other '=') (DQ (0.0.1))} {(--enable-tpm) (Lit_Other '=') (auto)} 
                      {(--enable-insecure-go)}
                    )
                  ]
                  spids: [1017 1018 1054 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (C {(echo)} {(DQ ('Unknown flavor: ') (${ VSub_Name RKT_STAGE1_USR_FROM))})
                    (C {(exit)} {(1)})
                  ]
                  spids: [1057 1058 1076 -1]
                )
              ]
              spids: [864 872 1079]
            )
          ]
          spids: [861]
        )
      spids: [857 860]
    )
    (FuncDef
      name: build
      body: 
        (BraceGroup
          children: [
            (C {(./autogen.sh)})
            (C {(configure)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CORES)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(grep)} {(-c)} {(Lit_Other '^') (processor)} {(/proc/cpuinfo)})
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [1103 1112]
                      )
                    }
                  spids: [1102]
                )
              ]
              spids: [1102]
            )
            (C {(echo)} {(DQ ('Running make with ') (${ VSub_Name CORES) (' threads'))})
            (C {(make)} {(DQ (-j) (${ VSub_Name CORES))} {(${ VSub_Name VERBOSITY)})
            (C {(make)} {(manpages)} {(bash-completion)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name PRECLEANUP)}
                              right: {(true)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(rm)} {(-rf)} 
                      {
                        (DQ (${ VSub_Name BUILD_DIR) (/tmp/usr_from_) 
                          (${ VSub_Name RKT_STAGE1_USR_FROM)
                        )
                      }
                    )
                  ]
                  spids: [-1 1163]
                )
              ]
              spids: [-1 1181]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobNEqual
                              left: {(${ VSub_Name JUSTBUILD)}
                              right: {(true)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(make)} {(${ VSub_Name VERBOSITY)} {(check)})
                    (C {(make)} {(DQ (-j) (${ VSub_Name CORES))} {(clean)})
                  ]
                  spids: [-1 1199]
                )
              ]
              spids: [-1 1223]
            )
          ]
          spids: [1091]
        )
      spids: [1087 1090]
    )
    (FuncDef
      name: buildFolder
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ (${ VSub_Name RKT_STAGE1_USR_FROM))}
                              right: {(DQ (src))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:POSTFIX)
                          op: Equal
                          rhs: {(DQ (-) (${ VSub_Name RKT_STAGE1_SYSTEMD_VER))}
                          spids: [1260]
                        )
                      ]
                      spids: [1260]
                    )
                  ]
                  spids: [-1 1257]
                )
              ]
              spids: [-1 1269]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BUILD_DIR)
                  op: Equal
                  rhs: {(DQ (build-rkt-) (${ VSub_Name RKT_STAGE1_USR_FROM) (${ VSub_Name POSTFIX))}
                  spids: [1272]
                )
              ]
              spids: [1272]
            )
          ]
          spids: [1235]
        )
      spids: [1231 1234]
    )
    (FuncDef
      name: detectChanges
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:HEAD)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(git)} {(rev-parse)} {(HEAD)})])
                        left_token: <Left_Backtick '`'>
                        spids: [1300 1306]
                      )
                    }
                  spids: [1299]
                )
              ]
              spids: [1299]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:MASTER)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(git)} {(rev-parse)} {(origin/master)})]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [1310 1316]
                      )
                    }
                  spids: [1309]
                )
              ]
              spids: [1309]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name HEAD)}
                              right: {(${ VSub_Name MASTER)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:SRC_CHANGES)
                          op: Equal
                          rhs: {(1)}
                          spids: [1339]
                        )
                      ]
                      spids: [1339]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:DOC_CHANGES)
                          op: Equal
                          rhs: {(1)}
                          spids: [1343]
                        )
                      ]
                      spids: [1343]
                    )
                  ]
                  spids: [-1 1336]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (LogicalAnd
                              left: 
                                (BoolBinary
                                  op_id: BoolBinary_eq
                                  left: {(${ VSub_Name SRC_CHANGES)}
                                  right: {(0)}
                                )
                              right: 
                                (BoolBinary
                                  op_id: BoolBinary_eq
                                  left: {(${ VSub_Name DOC_CHANGES)}
                                  right: {(0)}
                                )
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('No changes detected and HEAD is not origin/master'))})
                    (C {(exit)} {(0)})
                  ]
                  spids: [1347 1372]
                )
              ]
              spids: [-1 1387]
            )
          ]
          spids: [1296]
        )
      spids: [1292 1295]
    )
    (FuncDef
      name: copyCode
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobNEqual
                              left: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(whereis)} {(-b)} {(rsync)})
                                              (C {(awk)} {(SQ <'{print $2}'>)})
                                            ]
                                            negated: False
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [1406 1420]
                                  )
                                }
                              right: {(DQ )}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(rsync)} {(-aq)} {(../)} {(${ VSub_Name BUILD_DIR)} 
                      {(--exclude) (Lit_Other '=') (DQ ('.git*'))} {(--exclude) (Lit_Other '=') (builds)} {(--exclude-from) (Lit_Other '=') (../.gitignore)}
                    )
                  ]
                  spids: [-1 1430]
                )
              ]
              else_action: [
                (C {(echo)} 
                  {
                    (DQ ('Cannot find ') 
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(rsync)})])
                        left_token: <Left_Backtick '`'>
                        spids: [1465 1467]
                      ) (', which is required by this shell script')
                    )
                  }
                )
                (C {(exit)} {(1)})
              ]
              spids: [1458 1477]
            )
          ]
          spids: [1399]
        )
      spids: [1395 1398]
    )
    (FuncDef
      name: setCodeInBuildEnv
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name DIRTYBUILD)}
                              right: {(SQ )}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(detectChanges)})]
                  spids: [-1 1508]
                )
              ]
              spids: [-1 1514]
            )
            (C {(copyCode)})
            (C {(pushd)} {(DQ (${ VSub_Name BUILD_DIR))})
          ]
          spids: [1489]
        )
      spids: [1485 1488]
    )
    (FuncDef
      name: usage
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ('build-and-run-tests.sh usage:'))})
            (C {(echo)} {(-e)} {(DQ (-c) (EscapedLiteralPart token:<Lit_EscapedChar '\\t'>) (Cleanup))})
            (C {(echo)} {(-e)} 
              {
                (DQ (-d) (EscapedLiteralPart token:<Lit_EscapedChar '\\t'>) 
                  ('Use unsaved changes for build')
                )
              }
            )
            (C {(echo)} {(-e)} 
              {(DQ (-f) (EscapedLiteralPart token:<Lit_EscapedChar '\\t'>) ('Select flavor'))}
            )
            (C {(echo)} {(-e)} 
              {
                (DQ (-j) (EscapedLiteralPart token:<Lit_EscapedChar '\\t'>) 
                  ("Don't run tests after build")
                )
              }
            )
            (C {(echo)} {(-e)} 
              {(DQ (-s) (EscapedLiteralPart token:<Lit_EscapedChar '\\t'>) ('Systemd version'))}
            )
            (C {(echo)} {(-e)} 
              {(DQ (-r) (EscapedLiteralPart token:<Lit_EscapedChar '\\t'>) ('Systemd revision'))}
            )
            (C {(echo)} {(-e)} 
              {(DQ (-u) (EscapedLiteralPart token:<Lit_EscapedChar '\\t'>) ('Show this message'))}
            )
            (C {(echo)} {(-e)} 
              {
                (DQ (-v) (EscapedLiteralPart token:<Lit_EscapedChar '\\t'>) 
                  ('Run make with verbose flag')
                )
              }
            )
            (C {(echo)} {(-e)} 
              {
                (DQ (-x) (EscapedLiteralPart token:<Lit_EscapedChar '\\t'>) 
                  ("Use with '-c' to force cleanup on non-CI systems")
                )
              }
            )
          ]
          spids: [1538]
        )
      spids: [1534 1537]
    )
    (FuncDef
      name: prepareBuildEnv
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-e)} {(DQ (builds/) (${ VSub_Name BUILD_DIR))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(sudo)} {(rm)} {(-rf)} {(DQ (builds/) (${ VSub_Name BUILD_DIR))})]
                  spids: [-1 1679]
                )
              ]
              spids: [-1 1696]
            )
            (C {(mkdir)} {(-p)} {(builds)})
          ]
          spids: [1656]
        )
      spids: [1652 1655]
    )
    (FuncDef
      name: docsScan
      body: (BraceGroup children:[(C {(Lit_Other ':')})] spids:[1715])
      spids: [1711 1714]
    )
    (FuncDef
      name: main
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [(Sentence child:(C {(test)} {(-e)} {(ci-skip)}) terminator:<Op_Semi ';'>)]
                  action: [(C {(ciSkip)})]
                  spids: [-1 1764]
                )
              ]
              spids: [-1 1770]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:SRC_CHANGES) op:Equal rhs:{(1)} spids:[1774])]
              spids: [1774]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:DOC_CHANGES) op:Equal rhs:{(1)} spids:[1781])]
              spids: [1781]
            )
            (C {(parseParameters)} {(DQ (${ VSub_At '@'))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:DOC_CHANGE_PATTERN)
                  op: Equal
                  rhs: 
                    {
                      (DQ ('            -e ^Documentation/ ') ('            -e ^dist/ ') 
                        ('            -e ^logos/ ') ('            -e ^(MAINTAINERS|LICENSE|DCO)') (Lit_Other '$') (' ') ('            -e ') 
                        (EscapedLiteralPart token:<Lit_EscapedChar '\\.'>) (md) (Lit_Other '$') ('            -e ') (EscapedLiteralPart token:<Lit_EscapedChar '\\.'>) 
                        ('(jpeg|jpg|png|svg)') (Lit_Other '$') ('    ')
                      )
                    }
                  spids: [1799]
                )
              ]
              spids: [1799]
            )
            (C {(buildFolder)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name SEMAPHORE>
                                suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                                spids: [1840 1843]
                              )
                            )
                          } {(Lit_Other '=') (Lit_Other '=')} {(true)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(semaphoreCIConfiguration)})]
                  spids: [-1 1855]
                )
              ]
              spids: [-1 1861]
            )
            (C {(prepareBuildEnv)})
            (C {(cd)} {(builds)})
            (C {(setCodeInBuildEnv)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name SRC_CHANGES)} {(-gt)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(build)})]
                  spids: [-1 1892]
                )
              ]
              spids: [-1 1898]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name DOC_CHANGES)} {(-gt)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(docsScan)})]
                  spids: [-1 1916]
                )
              ]
              spids: [-1 1922]
            )
            (C {(cleanup)})
          ]
          spids: [1747]
        )
      spids: [1743 1746]
    )
    (C {(main)} {(DQ (${ VSub_At '@'))})
  ]
)