(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgname)
          op: assign_op.Equal
          rhs: {<seafile>}
          spids: [6]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgver)
          op: assign_op.Equal
          rhs: {<4.2.6>}
          spids: [9]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgrel)
          op: assign_op.Equal
          rhs: {<3>}
          spids: [12]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgdesc)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                <
'Cloud storage system with advanced support for file syncing, privacy protection and teamwork'
                >
              )
            }
          spids: [15]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:url)
          op: assign_op.Equal
          rhs: {(DQ <'https://github.com/haiwen/seafile/'>)}
          spids: [20]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:arch)
          op: assign_op.Equal
          rhs: {(DQ <all>)}
          spids: [25]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:license)
          op: assign_op.Equal
          rhs: {(DQ <GPL3>)}
          spids: [30]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:makedepends)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'autoconf automake bash ccnet-dev curl-dev fuse-dev glib-dev\n'> 
                <'\tintltool jansson-dev libarchive-dev libevent-dev libevhtp-dev\n'> <'\tlibsearpc-dev libtool libzdb-dev openssl-dev sqlite-dev util-linux-dev\n'> 
                <'\tvala bsd-compat-headers libevhtp-dev'>
              )
            }
          spids: [35]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:depends)
          op: assign_op.Equal
          rhs: {(DQ <'bash '> (${ Id.VSub_Name pkgname) <-common>)}
          spids: [43]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgusers)
          op: assign_op.Equal
          rhs: {(DQ <seafile>)}
          spids: [52]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkggroups)
          op: assign_op.Equal
          rhs: {(DQ <seafile>)}
          spids: [57]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:source)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName '$pkgname') <-> ($ Id.VSub_DollarName '$pkgver') 
                <'.tar.gz::https://github.com/haiwen/seafile/archive/v'> (${ Id.VSub_Name pkgver) <'.tar.gz\n'> 
                <
'       seafile-controller.patch seafile-scripts.patch seafile.initd seafile.confd'
                >
              )
            }
          spids: [62]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:subpackages)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName '$pkgname') <'-dev '> ($ Id.VSub_DollarName '$pkgname') 
                <'-doc py-'> ($ Id.VSub_DollarName '$pkgname') <':py '> ($ Id.VSub_DollarName '$pkgname') <'-server\n'> <'\t'> 
                ($ Id.VSub_DollarName '$pkgname') <-common>
              )
            }
          spids: [75]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:install)
          op: assign_op.Equal
          rhs: {(DQ <'seafile-server.pre-install seafile-server.post-install'>)}
          spids: [90]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_builddir)
          op: assign_op.Equal
          rhs: 
            {
              (DQ (${ Id.VSub_Name srcdir) <'/'> (${ Id.VSub_Name pkgname) <-> (${ Id.VSub_Name pkgver))
            }
          spids: [96]
        )
      ]
    )
    (command.ShFunction
      name: prepare
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<pf>})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<cd>} {(DQ (${ Id.VSub_Name _builddir))})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.ForEach
              iter_name: pf
              iter_words: [{($ Id.VSub_DollarName '$source')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$pf')}
                      arms: [
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'> <.patch>}]
                          action: [
                            (command.Sentence
                              child: (C {<msg>} {($ Id.VSub_DollarName '$pf')})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<patch>} {<-p1>} {<-i>} 
                                  {(DQ ($ Id.VSub_DollarName '$srcdir')) <'/'> (${ Id.VSub_Name pf)}
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Return return>
                                  arg_word: {<1>}
                                )
                              ]
                            )
                          ]
                          spids: [158 160 186 -1]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: build
      body: 
        (BraceGroup
          children: [
            (C {<cd>} {(DQ (${ Id.VSub_Name _builddir))})
            (C {<'./autogen.sh'>})
            (C {<'./configure'>} {<--prefix> <Id.Lit_Equals '='> <'/usr'>} 
              {<--sysconfdir> <Id.Lit_Equals '='> <'/etc'>} {<--mandir> <Id.Lit_Equals '='> <'/usr/share/man'>} 
              {<--infodir> <Id.Lit_Equals '='> <'/usr/share/info'>} {<--enable-server>} {<--enable-python>} {<--enable-fuse>} {<--enable-client>} {<--enable-console>}
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<make>} 
                  {<Id.Lit_VarLike 'CFLAGS='> 
                    (DQ ($ Id.VSub_DollarName '$CFLAGS') <' '> 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<pkgconf>} {<--cflags>} {<evhtp>})
                      )
                    )
                  }
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: package
      body: 
        (BraceGroup
          children: [
            (C {<cd>} {(DQ (${ Id.VSub_Name _builddir))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<make>} {<Id.Lit_VarLike 'DESTDIR='> (DQ (${ Id.VSub_Name pkgdir))} {<install>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<rm>} {(DQ (${ Id.VSub_Name pkgdir)) <'/usr/lib/libseafile.la'>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: py
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:arch)
                  op: assign_op.Equal
                  rhs: {(DQ <noarch>)}
                  spids: [346]
                )
              ]
            )
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$_builddir'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pkgdesc)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$pkgname') <' python bindings'>)}
                  spids: [359]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<install>} {<-d>} {(DQ ($ Id.VSub_DollarName '$subpkgdir')) <'/usr/lib'>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<mv>} {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/usr/lib/python'> <Id.Lit_Star '*'>} 
                  {(DQ ($ Id.VSub_DollarName '$subpkgdir')) <'/usr/lib/'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: common
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<mkdir>} {<-p>} {(DQ (${ Id.VSub_Name subpkgdir)) <'/usr/bin'>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<mkdir>} {<-p>} {(DQ (${ Id.VSub_Name subpkgdir)) <'/usr/lib'>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (C {<mv>} {(DQ (${ Id.VSub_Name pkgdir)) <'/usr/bin/seafile'>} 
              {(DQ (${ Id.VSub_Name subpkgdir)) <'/usr/bin'>}
            )
            (C {<mv>} {(DQ (${ Id.VSub_Name pkgdir)) <'/usr/lib/libseafile.so.0'> <Id.Lit_Star '*'>} 
              {(DQ (${ Id.VSub_Name subpkgdir)) <'/usr/lib'>}
            )
          ]
        )
    )
    (command.ShFunction
      name: server
      body: 
        (BraceGroup
          children: [
            (C {<mkdir>} {<-p>} {(DQ (${ Id.VSub_Name subpkgdir)) <'/usr/bin'>})
            (command.ForEach
              iter_name: b
              iter_words: [{(DQ (${ Id.VSub_Name pkgdir)) <'/usr/bin/'> <Id.Lit_Star '*'>}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp Id.Op_DAmp]
                                      children: [
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobNEqual
                                              left: {(DQ ($ Id.VSub_DollarName '$b'))}
                                              right: 
                                                {(DQ (${ Id.VSub_Name pkgdir) <'/usr/bin/seaf-cli'>)}
                                            )
                                        )
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobNEqual
                                              left: {(DQ ($ Id.VSub_DollarName '$b'))}
                                              right: 
                                                {
                                                  (DQ (${ Id.VSub_Name pkgdir) 
                                                    <'/usr/bin/seaf-daemon'>
                                                  )
                                                }
                                            )
                                        )
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobNEqual
                                              left: {(DQ ($ Id.VSub_DollarName '$b'))}
                                              right: 
                                                {(DQ (${ Id.VSub_Name pkgdir) <'/usr/bin/seafile'>)}
                                            )
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<mv>} {(DQ ($ Id.VSub_DollarName '$b'))} 
                                  {(DQ (${ Id.VSub_Name subpkgdir) <'/usr/bin'>)}
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Return return>
                                  arg_word: {<1>}
                                )
                              ]
                            )
                          ]
                          spids: [521 583]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<mkdir>} {<-m>} {<755>} {<-p>} 
                  {(DQ (${ Id.VSub_Name subpkgdir)) <'/usr/share/seafile'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<cp>} {<-ar>} {(DQ (${ Id.VSub_Name _builddir)) <'/scripts'>} 
                  {(DQ (${ Id.VSub_Name subpkgdir)) <'/usr/share/seafile'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<install>} {<-D>} {<-m0644>} {(DQ (${ Id.VSub_Name srcdir)) <'/seafile.confd'>} 
                  {(DQ (${ Id.VSub_Name subpkgdir)) <'/etc/conf.d/seafile'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<install>} {<-D>} {<-m0755>} {(DQ (${ Id.VSub_Name srcdir)) <'/seafile.initd'>} 
                  {(DQ (${ Id.VSub_Name subpkgdir)) <'/etc/init.d/seafile'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SEAFILE_HOME)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name subpkgdir)) <'/var/lib/seafile'>}
                  spids: [722]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SEAFILE_DEFAULT)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$SEAFILE_HOME') <'/default'>}
                  spids: [731]
                )
              ]
            )
            (command.Simple
              words: [{<mkdir>} {<-m>} {<755>} {<-p>} {($ Id.VSub_DollarName '$SEAFILE_DEFAULT')}]
              redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
              do_fork: T
            )
            (C {<chown>} {<seafile> <Id.Lit_Colon ':'> <seafile>} 
              {($ Id.VSub_DollarName '$SEAFILE_DEFAULT')}
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:md5sums)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'d05600bf1187e0354ee8e85f3074a786  seafile-4.2.6.tar.gz\n'> 
                <'3f2b5457441871a4922d873e2b386711  seafile-controller.patch\n'> <'5d5217a4616ba9d57b56f0b61797b419  seafile-scripts.patch\n'> 
                <'d2319373c376bff87a3005057d887193  seafile.initd\n'> <'cc33cc3ef3b04415a7b1d160e6b64e2b  seafile.confd'>
              )
            }
          spids: [761]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sha256sums)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                <
'a4a51dbdd5b2c49a8b1cb16ffacea92a0f52b5a0050c0de20057893f183d9e40  seafile-4.2.6.tar.gz\n'
                > <'03fa3d43bcaed4bf720e7cbec5ea0fe9e1d8d90987bc8b69a045dafe10e1c27a  seafile-controller.patch\n'> 
                <
'42fc1ed64c0a3cac0c5f74f2c269d96eba80e8b7a9dbff6332726342b576edf6  seafile-scripts.patch\n'
                > <'aaf173e5df205fc4b152f6d75c5b3b7ec738bb1acbbe413ea6fce268b1d830c1  seafile.initd\n'> 
                <'a78183173ce054a245878d309dda9bff7981193d2b0594d299030e403e857952  seafile.confd'>
              )
            }
          spids: [770]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sha512sums)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                <
'83d55c0cd6ac6fdca5b6dde50c0d3f402894621271bf9b2c5e24106672ac091c23c7ba8e124d88f5142d2eed4373f078f45793699402bf7732804762f1928cfa  seafile-4.2.6.tar.gz\n'
                > 
                <
'6b70df847d2d3f1fbd856f220dd5686d04c1ee4810c60d3bb28c80e85f508d3b448a0e6cfb9a83a43876285968ec917867838ef31c00cfb431a8e1e953241246  seafile-controller.patch\n'
                > 
                <
'9af26dbbc62c2e135d1ecb29243de658524d3cdbcfdfbaafcb30e137d0230792a7466b7b01a449a113ddf87f89acdceaf8c06192dd2ee28b3bbd18e9973a7b0d  seafile-scripts.patch\n'
                > 
                <
'66b84519ab66e7435da13a2ed1869bac3ead1f7b46ed4b0a5ecda6dfcea056c5e0af8abcf1eba00fc2e68b8df7e07e3951968c385850f01ecf46f08dfdbe7083  seafile.initd\n'
                > 
                <
'051ccc065a3b7abc7c802e00e364da1c3f689e133c4ba37385dbff97cfe8ad4b490cf53778344d129213fb0238258690a47f5e737387bce1368db59d22ee8504  seafile.confd'
                >
              )
            }
          spids: [779]
        )
      ]
    )
  ]
)