(BraceGroup
  left: <Id.Lit_LBrace '{'>
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INPUT='> name:INPUT)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [75]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {($ Id.VSub_Number 1)}
                          right: 
                            {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> 
                              <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'>
                            }
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INPUT='> name:INPUT)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [102]
                )
              ]
              redirects: []
            )
          ]
          spids: [79 99]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<.>} {<'/DietPi/dietpi/func/dietpi-globals'>})
    (C {<G_CHECK_ROOT_USER>})
    (C {<G_CHECK_ROOTFS_RW>})
    (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-Letsencrypt>)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DP_LOGFILE='> name:DP_LOGFILE)
          op: assign_op.Equal
          rhs: {(DQ <'/var/log/dietpi-letsencrypt.log'>)}
          spids: [150]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DP_MONTHLY_CRON='> name:DP_MONTHLY_CRON)
          op: assign_op.Equal
          rhs: {(DQ <'/etc/cron.monthly/dietpi-letsencrypt'>)}
          spids: [156]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'DP_LETSENCRYPT_BINARY='>
              name: DP_LETSENCRYPT_BINARY
            )
          op: assign_op.Equal
          rhs: {(DQ <'/usr/bin/certbot'>)}
          spids: [162]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Less
                          left: {($ Id.VSub_DollarName G_DISTRO)}
                          right: {<Id.Lit_Digits 4>}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DP_LETSENCRYPT_BINARY='>
                      name: DP_LETSENCRYPT_BINARY
                    )
                  op: assign_op.Equal
                  rhs: {(DQ <'/etc/certbot_scripts/certbot-auto'>)}
                  spids: [185]
                )
              ]
              redirects: []
            )
          ]
          spids: [168 182]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DP_WEBSERVER_INDEX='> name:DP_WEBSERVER_INDEX)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [194]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'LETSENCRYPT_INSTALLED='>
              name: LETSENCRYPT_INSTALLED
            )
          op: assign_op.Equal
          rhs: {<0>}
          spids: [202]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName DP_LETSENCRYPT_BINARY))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'LETSENCRYPT_INSTALLED='>
                      name: LETSENCRYPT_INSTALLED
                    )
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [222]
                )
              ]
              redirects: []
            )
          ]
          spids: [206 219]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LETSENCRYPT_DOMAIN='> name:LETSENCRYPT_DOMAIN)
          op: assign_op.Equal
          rhs: {(DQ <mydomain.com>)}
          spids: [229]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LETSENCRYPT_EMAIL='> name:LETSENCRYPT_EMAIL)
          op: assign_op.Equal
          rhs: {(DQ <'myemail@email.com'>)}
          spids: [235]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'LETSENCRYPT_REDIRECT='>
              name: LETSENCRYPT_REDIRECT
            )
          op: assign_op.Equal
          rhs: {<0>}
          spids: [241]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'LETSENCRYPT_AUTORENEW='>
              name: LETSENCRYPT_AUTORENEW
            )
          op: assign_op.Equal
          rhs: {<0>}
          spids: [245]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'LETSENCRYPT_KEYSIZE='>
              name: LETSENCRYPT_KEYSIZE
            )
          op: assign_op.Equal
          rhs: {<4096>}
          spids: [249]
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: Run_Lets_Encrypt
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<G_DIETPI-NOTIFY>} {<3>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} 
              {(DQ <'Running cert'>)}
            )
            (C {<local>} {<Id.Lit_VarLike 'run_conditions_met='> <1>})
            (C {<'/DietPi/dietpi/dietpi-services'>} {<start>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (C {<ps>} {<aux>})
                                          (C {<grep>} {<-ci>} {<-m1>} {(SQ <'[a]pache'>)})
                                        ]
                                        negated: F
                                        stderr_indices: []
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'DP_WEBSERVER_INDEX='>
                              name: DP_WEBSERVER_INDEX
                            )
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [326]
                        )
                      ]
                      redirects: []
                    )
                    (C {<G_DIETPI-NOTIFY>} {<0>} {(DQ <'Apache2 webserver detected'>)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_GreatEqual
                                          left: {($ Id.VSub_DollarName G_DISTRO)}
                                          right: {<Id.Lit_Digits 4>}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'DP_LETSENCRYPT_BINARY='>
                                      name: DP_LETSENCRYPT_BINARY
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {(DQ ($ Id.VSub_DollarName DP_LETSENCRYPT_BINARY) <' --apache'>)}
                                  spids: [356]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [339 353]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [296 322]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (C {<ps>} {<aux>})
                                          (C {<grep>} {<-ci>} {<-m1>} {(SQ <'[l]ighttpd'>)})
                                        ]
                                        negated: F
                                        stderr_indices: []
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'DP_WEBSERVER_INDEX='>
                              name: DP_WEBSERVER_INDEX
                            )
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [397]
                        )
                      ]
                      redirects: []
                    )
                    (C {<G_DIETPI-NOTIFY>} {<0>} {(DQ <'Lighttpd webserver detected'>)})
                  ]
                  spids: [367 393]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (C {<ps>} {<aux>})
                                          (C {<grep>} {<-ci>} {<-m1>} {(SQ <'[n]ginx'>)})
                                        ]
                                        negated: F
                                        stderr_indices: []
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'DP_WEBSERVER_INDEX='>
                              name: DP_WEBSERVER_INDEX
                            )
                          op: assign_op.Equal
                          rhs: {<2>}
                          spids: [441]
                        )
                      ]
                      redirects: []
                    )
                    (C {<G_DIETPI-NOTIFY>} {<0>} {(DQ <'Nginx webserver detected'>)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_GreatEqual
                                          left: {($ Id.VSub_DollarName G_DISTRO)}
                                          right: {<Id.Lit_Digits 4>}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'DP_LETSENCRYPT_BINARY='>
                                      name: DP_LETSENCRYPT_BINARY
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName DP_LETSENCRYPT_BINARY) <' --nginx'>)}
                                  spids: [471]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [454 468]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [411 437]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (C {<ps>} {<aux>})
                                          (C {<grep>} {<-ci>} {<-m1>} {(SQ <'[m]inio'>)})
                                        ]
                                        negated: F
                                        stderr_indices: []
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'DP_WEBSERVER_INDEX='>
                              name: DP_WEBSERVER_INDEX
                            )
                          op: assign_op.Equal
                          rhs: {<3>}
                          spids: [512]
                        )
                      ]
                      redirects: []
                    )
                    (C {<G_DIETPI-NOTIFY>} {<0>} {(DQ <'Minio S3 server detected'>)})
                  ]
                  spids: [482 508]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'run_conditions_met='>
                          name: run_conditions_met
                        )
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [530]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Unary
                                  op_id: Id.Arith_Bang
                                  child: {($ Id.VSub_DollarName run_conditions_met)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {<-e>}
                        {(DQ <'Error: No compatible and/or active webserver was found. Aborting.'>)}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName DP_LOGFILE))}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: {($ Id.VSub_DollarName INPUT)}
                                          right: {<Id.Lit_Digits 0>}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<whiptail>} {<--title>} {(DQ <Error>)} {<--msgbox>} 
                              {
                                (DQ 
                                  <
'Error: No compatible and/or active webserver was found. Aborting.'
                                  >
                                )
                              } {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<8>} {<60>}
                            )
                          ]
                          spids: [574 588]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [543 555]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: {($ Id.VSub_DollarName DP_WEBSERVER_INDEX)}
                                      right: {<Id.Lit_Digits 0>}
                                    )
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (C {<local>} 
                          {<Id.Lit_VarLike 'dp_defaultsite='> 
                            (DQ <'/etc/apache2/sites-available/000-default.conf'>)
                          }
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (command.DParen
                                          child: 
                                            (arith_expr.Unary
                                              op_id: Id.Arith_Bang
                                              child: 
                                                {
                                                  (command_sub
                                                    left_token: <Id.Left_DollarParen '$('>
                                                    child: 
                                                      (command.Pipeline
                                                        children: [
                                                          (C {<cat>} 
                                                            {
                                                              (DQ 
                                                                ($ Id.VSub_DollarName dp_defaultsite)
                                                              )
                                                            }
                                                          )
                                                          (C {<grep>} {<-ci>} {<-m1>} {(SQ <ServerName>)})
                                                        ]
                                                        negated: F
                                                        stderr_indices: []
                                                      )
                                                    right: <Id.Eof_RParen _>
                                                  )
                                                }
                                            )
                                          redirects: []
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (C {<sed>} {<-i>} {(DQ <'/ServerAdmin /a ServerName'>)} 
                                  {(DQ ($ Id.VSub_DollarName dp_defaultsite))}
                                )
                                (command.Simple
                                  words: [
                                    {<echo>}
                                    {<-e>}
                                    {
                                      (DQ <'ServerName entry not found in '> 
                                        ($ Id.VSub_DollarName dp_defaultsite) <'. Adding it now.'>
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_DGreat '>>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {(DQ ($ Id.VSub_DollarName DP_LOGFILE))}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                              ]
                              spids: [669 699]
                            )
                          ]
                          else_action: []
                          redirects: []
                        )
                        (C {<sed>} {<-i>} 
                          {
                            (DQ <'/ServerName/c'> <Id.Lit_BadBackslash '\\'> <'        ServerName '> 
                              ($ Id.VSub_DollarName LETSENCRYPT_DOMAIN)
                            )
                          } {(DQ ($ Id.VSub_DollarName dp_defaultsite))}
                        )
                        (C {<systemctl>} {<restart>} {<apache2>})
                        (C {<local>} {<Id.Lit_VarLike 'cli_redirect='> (DQ <--no-redirect>)})
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (command.DParen
                                          child: {($ Id.VSub_DollarName LETSENCRYPT_REDIRECT)}
                                          redirects: []
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'cli_redirect='>
                                          name: cli_redirect
                                        )
                                      op: assign_op.Equal
                                      rhs: {(DQ <--redirect>)}
                                      spids: [798]
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              spids: [784 794]
                            )
                          ]
                          else_action: []
                          redirects: []
                        )
                        (C {($ Id.VSub_DollarName DP_LETSENCRYPT_BINARY)} {<--duplicate>} 
                          {<--agree-tos>} {($ Id.VSub_DollarName cli_redirect)} {<--rsa-key-size>} {($ Id.VSub_DollarName LETSENCRYPT_KEYSIZE)} 
                          {<--email>} {($ Id.VSub_DollarName LETSENCRYPT_EMAIL)} {<-d>} {($ Id.VSub_DollarName LETSENCRYPT_DOMAIN)}
                        )
                      ]
                      spids: [638 652]
                    )
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: {($ Id.VSub_DollarName DP_WEBSERVER_INDEX)}
                                      right: {<Id.Lit_Digits 1>}
                                    )
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (C {<'/DietPi/dietpi/dietpi-services'>} {<stop>})
                        (C {($ Id.VSub_DollarName DP_LETSENCRYPT_BINARY)} {<certonly>} {<--standalone>} 
                          {<--duplicate>} {<--agree-tos>} {($ Id.VSub_DollarName cli_redirect)} {<--rsa-key-size>} 
                          {($ Id.VSub_DollarName LETSENCRYPT_KEYSIZE)} {<--email>} {($ Id.VSub_DollarName LETSENCRYPT_EMAIL)} {<-d>} {($ Id.VSub_DollarName LETSENCRYPT_DOMAIN)}
                        )
                        (C {<cd>} 
                          {<'/etc/letsencrypt/live/'> (DQ ($ Id.VSub_DollarName LETSENCRYPT_DOMAIN))}
                        )
                        (command.Simple
                          words: [{<cat>} {<privkey.pem>} {<cert.pem>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<combined.pem>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (command.Simple
                          words: [{<cat>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_DLess '<<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: 
                                (redir_param.HereDoc
                                  here_begin: {<_EOF_>}
                                  here_end_span_id: 987
                                  stdin_parts: [
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    )
                                    <'SERVER['>
                                    <Id.Right_DoubleQuote '"'>
                                    <socket>
                                    <Id.Right_DoubleQuote '"'>
                                    <'] == '>
                                    <Id.Right_DoubleQuote '"'>
                                    <':443'>
                                    <Id.Right_DoubleQuote '"'>
                                    <' {\n'>
                                    <'\t\tssl.engine = '>
                                    <Id.Right_DoubleQuote '"'>
                                    <enable>
                                    <Id.Right_DoubleQuote '"'>
                                    <'\n'>
                                    <'\t\tssl.pemfile = '>
                                    <Id.Right_DoubleQuote '"'>
                                    <'/etc/letsencrypt/live/'>
                                    ($ Id.VSub_DollarName LETSENCRYPT_DOMAIN)
                                    <'/combined.pem'>
                                    <Id.Right_DoubleQuote '"'>
                                    <'\n'>
                                    <'\t\tssl.ca-file =  '>
                                    <Id.Right_DoubleQuote '"'>
                                    <'/etc/letsencrypt/live/'>
                                    ($ Id.VSub_DollarName LETSENCRYPT_DOMAIN)
                                    <'/fullchain.pem'>
                                    <Id.Right_DoubleQuote '"'>
                                    <'\n'>
                                    <'\t\t#ssl.cipher-list = '>
                                    <Id.Right_DoubleQuote '"'>
                                    <
'ECDHE-RSA-AES256-SHA384:AES256-SHA256:HIGH:!MD5:!aNULL:!EDH:!AESGCM'
                                    >
                                    <Id.Right_DoubleQuote '"'>
                                    <'\n'>
                                    <'\t\tssl.cipher-list = '>
                                    <Id.Right_DoubleQuote '"'>
                                    <
'ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS'
                                    >
                                    <Id.Right_DoubleQuote '"'>
                                    <'\n'>
                                    <'\t\tssl.honor-cipher-order = '>
                                    <Id.Right_DoubleQuote '"'>
                                    <enable>
                                    <Id.Right_DoubleQuote '"'>
                                    <'\n'>
                                    <'\t\tssl.use-sslv2 = '>
                                    <Id.Right_DoubleQuote '"'>
                                    <disable>
                                    <Id.Right_DoubleQuote '"'>
                                    <'\n'>
                                    <'\t\tssl.use-sslv3 = '>
                                    <Id.Right_DoubleQuote '"'>
                                    <disable>
                                    <Id.Right_DoubleQuote '"'>
                                    <'\n'>
                                    <'}\n'>
                                  ]
                                )
                            )
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/etc/lighttpd/conf-enabled/letsencrypt.conf'>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (C {<rm>} {<'/etc/lighttpd/conf-enabled/redirect.conf'>})
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (command.DParen
                                          child: {($ Id.VSub_DollarName LETSENCRYPT_REDIRECT)}
                                          redirects: []
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.Simple
                                  words: [{<cat>}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_DLess '<<'>
                                      loc: (redir_loc.Fd fd:0)
                                      arg: 
                                        (redir_param.HereDoc
                                          here_begin: {<_EOF_>}
                                          here_end_span_id: 1060
                                          stdin_parts: [
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\$'>
                                              ch: '$'
                                            )
                                            <'HTTP['>
                                            <Id.Right_DoubleQuote '"'>
                                            <scheme>
                                            <Id.Right_DoubleQuote '"'>
                                            <'] == '>
                                            <Id.Right_DoubleQuote '"'>
                                            <http>
                                            <Id.Right_DoubleQuote '"'>
                                            <' {\n'>
                                            <
'\t# capture vhost name with regex conditiona -> %0 in redirect pattern\n'
                                            >
                                            <
'\t# must be the most inner block to the redirect rule\n'
                                            >
                                            <'\t'>
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\$'>
                                              ch: '$'
                                            )
                                            <'HTTP['>
                                            <Id.Right_DoubleQuote '"'>
                                            <host>
                                            <Id.Right_DoubleQuote '"'>
                                            <'] =~ '>
                                            <Id.Right_DoubleQuote '"'>
                                            <'.*'>
                                            <Id.Right_DoubleQuote '"'>
                                            <' {\n'>
                                            <'\t\turl.redirect = ('>
                                            <Id.Right_DoubleQuote '"'>
                                            <'.*'>
                                            <Id.Right_DoubleQuote '"'>
                                            <' => '>
                                            <Id.Right_DoubleQuote '"'>
                                            <'https://%0'>
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\$'>
                                              ch: '$'
                                            )
                                            <0>
                                            <Id.Right_DoubleQuote '"'>
                                            <')\n'>
                                            <'\t}\n'>
                                            <'}\n'>
                                          ]
                                        )
                                    )
                                    (redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/etc/lighttpd/conf-enabled/redirect.conf'>}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                              ]
                              spids: [999 1009]
                            )
                          ]
                          else_action: []
                          redirects: []
                        )
                        (C {<'/etc/init.d/lighttpd'>} {<force-reload>})
                      ]
                      spids: [843 857]
                    )
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: {($ Id.VSub_DollarName DP_WEBSERVER_INDEX)}
                                      right: {<Id.Lit_Digits 2>}
                                    )
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (C {<local>} 
                          {<Id.Lit_VarLike 'nginx_defaultsite='> 
                            (DQ <'/etc/nginx/sites-available/default'>)
                          }
                        )
                        (C {<sed>} {<-i>} 
                          {
                            (DQ <'/server_name/c'> <Id.Lit_BadBackslash '\\'> <'        server_name '> 
                              ($ Id.VSub_DollarName LETSENCRYPT_DOMAIN) <';'>
                            )
                          } {(DQ ($ Id.VSub_DollarName nginx_defaultsite))}
                        )
                        (C {<systemctl>} {<restart>} {<nginx>})
                        (C {<local>} {<Id.Lit_VarLike 'cli_redirect='> (DQ <--no-redirect>)})
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (command.DParen
                                          child: {($ Id.VSub_DollarName LETSENCRYPT_REDIRECT)}
                                          redirects: []
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'cli_redirect='>
                                          name: cli_redirect
                                        )
                                      op: assign_op.Equal
                                      rhs: {(DQ <--redirect>)}
                                      spids: [1167]
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              spids: [1153 1163]
                            )
                          ]
                          else_action: []
                          redirects: []
                        )
                        (C {($ Id.VSub_DollarName DP_LETSENCRYPT_BINARY)} {<--duplicate>} 
                          {<--agree-tos>} {($ Id.VSub_DollarName cli_redirect)} {<--rsa-key-size>} {($ Id.VSub_DollarName LETSENCRYPT_KEYSIZE)} 
                          {<--email>} {($ Id.VSub_DollarName LETSENCRYPT_EMAIL)} {<-d>} {($ Id.VSub_DollarName LETSENCRYPT_DOMAIN)}
                        )
                      ]
                      spids: [1083 1097]
                    )
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: {($ Id.VSub_DollarName DP_WEBSERVER_INDEX)}
                                      right: {<Id.Lit_Digits 3>}
                                    )
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (C {<'/DietPi/dietpi/dietpi-services'>} {<stop>})
                        (C {($ Id.VSub_DollarName DP_LETSENCRYPT_BINARY)} {<certonly>} {<--standalone>} 
                          {<--preferred-challenges>} {<tls-sni>} {<--staple-ocsp>} {<--agree-tos>} {($ Id.VSub_DollarName cli_redirect)} {<--rsa-key-size>} 
                          {($ Id.VSub_DollarName LETSENCRYPT_KEYSIZE)} {<--email>} {($ Id.VSub_DollarName LETSENCRYPT_EMAIL)} {<-d>} {($ Id.VSub_DollarName LETSENCRYPT_DOMAIN)}
                        )
                        (C {<cp>} 
                          {<'/etc/letsencrypt/live/'> ($ Id.VSub_DollarName LETSENCRYPT_DOMAIN) 
                            <'/fullchain.pem'>
                          } {<'/home/minio-user/.minio/certs/public.crt'>}
                        )
                        (C {<cp>} 
                          {<'/etc/letsencrypt/live/'> ($ Id.VSub_DollarName LETSENCRYPT_DOMAIN) 
                            <'/privkey.pem'>
                          } {<'/home/minio-user/.minio/certs/private.key'>}
                        )
                        (C {<chown>} {<minio-user> <Id.Lit_Colon ':'> <minio-user>} 
                          {<'/home/minio-user/.minio/certs/public.crt'>}
                        )
                        (C {<chown>} {<minio-user> <Id.Lit_Colon ':'> <minio-user>} 
                          {<'/home/minio-user/.minio/certs/private.key'>}
                        )
                        (command.Simple
                          words: [{<grep>} {<-v>} {(DQ <MINIO_OPTS>)} {<'/etc/default/minio'>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/etc/default/minio.temp1'>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (command.Simple
                          words: [{<grep>} {<-v>} {(DQ <port>)} {<'/etc/default/minio.temp1'>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/etc/default/minio.temp2'>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (C {<rm>} {<'/etc/default/minio.temp1'>})
                        (C {<mv>} {<'/etc/default/minio.temp2'>} {<'/etc/default/minio'>})
                        (command.Simple
                          words: [{<cat>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_DLess '<<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: 
                                (redir_param.HereDoc
                                  here_begin: {<_EOF_>}
                                  here_end_span_id: 1379
                                  stdin_parts: [
                                    <'# Use if you want to run Minio on a custom port.\n'>
                                    <'MINIO_OPTS='>
                                    <Id.Right_DoubleQuote '"'>
                                    <'--address :443'>
                                    <Id.Right_DoubleQuote '"'>
                                    <'\n'>
                                  ]
                                )
                            )
                            (redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/etc/default/minio'>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (C {<setcap>} 
                          {<Id.Lit_VarLike 'CAP_NET_BIND_SERVICE='> <Id.Lit_Other '+'> <eip>} {<'/usr/local/bin/minio'>}
                        )
                        (command.Simple
                          words: [{<cat>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_DLess '<<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: 
                                (redir_param.HereDoc
                                  here_begin: {<_EOF_>}
                                  here_end_span_id: 1427
                                  stdin_parts: [
                                    <
'# Minio only works with copied and owned certs. Upon renewal the new certs needs to be copied and re-owned\n'
                                    >
                                    <'systemctl stop minio.service\n'>
                                    <'\n'>
                                    <'# Copy to correct Location\n'>
                                    <'cp /etc/letsencrypt/live/'>
                                    ($ Id.VSub_DollarName LETSENCRYPT_DOMAIN)
                                    <'/fullchain.pem /home/minio-user/.minio/certs/public.crt\n'>
                                    <'cp /etc/letsencrypt/live/'>
                                    ($ Id.VSub_DollarName LETSENCRYPT_DOMAIN)
                                    <'/privkey.pem /home/minio-user/.minio/certs/private.key\n'>
                                    <'\n'>
                                    <'# Re-Own those certs!\n'>
                                    <
'chown minio-user:minio-user /home/minio-user/.minio/certs/public.crt\n'
                                    >
                                    <
'chown minio-user:minio-user /home/minio-user/.minio/certs/private.key\n'
                                    >
                                    <'\n'>
                                    <'systemctl start minio.service\n'>
                                  ]
                                )
                            )
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/home/minio-user/.minio/dietpi-cert-renewl.sh'>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (C {<chmod>} {<Id.Lit_Other '+'> <x>} 
                          {<'/home/minio-user/.minio/dietpi-cert-renewl.sh'>}
                        )
                      ]
                      spids: [1213 1227]
                    )
                  ]
                  else_action: []
                  redirects: []
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DAmp
                                      left: {($ Id.VSub_DollarName LETSENCRYPT_AUTORENEW)}
                                      right: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_Less
                                          left: {($ Id.VSub_DollarName G_DISTRO)}
                                          right: {<Id.Lit_Digits 4>}
                                        )
                                    )
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [{<cat>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_DLess '<<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: 
                                (redir_param.HereDoc
                                  here_begin: {<_EOF_>}
                                  here_end_span_id: 1538
                                  stdin_parts: [
                                    <'#!/bin/bash\n'>
                                    <'{\n'>
                                    <'\t#////////////////////////////////////\n'>
                                    <'\t# DietPi-LetsEncrypt Autorenew script\n'>
                                    <'\t#\n'>
                                    <'\t#////////////////////////////////////\n'>
                                    <'\t#\n'>
                                    <'\t# Info:\n'>
                                    <'\t# - Location '>
                                    ($ Id.VSub_DollarName DP_MONTHLY_CRON)
                                    <'\n'>
                                    <'\t#\n'>
                                    <'\t#////////////////////////////////////\n'>
                                    <'\n'>
                                    <
'\t#----------------------------------------------------------------\n'
                                    >
                                    <'\t# Main Loop\n'>
                                    <
'\t#----------------------------------------------------------------\n'
                                    >
                                    <'\t/DietPi/dietpi/dietpi-letsencrypt 1 &>> '>
                                    ($ Id.VSub_DollarName DP_LOGFILE)
                                    <'\n'>
                                    <'\n'>
                                    <'\t# Minio specific applications\n'>
                                    <'\tif (( '>
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Pipeline
                                          children: [
                                            (C {<ps>} {<aux>})
                                            (C {<grep>} {<-ci>} {<-m1>} {(SQ <'[m]inio'>)})
                                          ]
                                          negated: F
                                          stderr_indices: []
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                    <' )); then\n'>
                                    <'\t\t/home/minio-user/.minio/dietpi-cert-renewl.sh\n'>
                                    <'\tfi\n'>
                                    <'\n'>
                                    <
'\t#----------------------------------------------------------------\n'
                                    >
                                    <'\texit\n'>
                                    <
'\t#----------------------------------------------------------------\n'
                                    >
                                    <'}\n'>
                                  ]
                                )
                            )
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {(DQ ($ Id.VSub_DollarName DP_MONTHLY_CRON))}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (C {<chmod>} {<Id.Lit_Other '+'> <x>} 
                          {(DQ ($ Id.VSub_DollarName DP_MONTHLY_CRON))}
                        )
                      ]
                      spids: [1455 1473]
                    )
                  ]
                  else_action: []
                  redirects: []
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: {($ Id.VSub_DollarName INPUT)}
                                      right: {<Id.Lit_Digits 0>}
                                    )
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (C {<echo>} {<-e>} {(DQ )})
                        (C {<read>} {<-p>} {(DQ <'Press any key to continue...'>)})
                        (C {<echo>} {<-e>} {(DQ )})
                      ]
                      spids: [1555 1569]
                    )
                  ]
                  else_action: []
                  redirects: []
                )
                (C {<'/DietPi/dietpi/dietpi-services'>} {<restart>})
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DP_SETTINGS='> name:DP_SETTINGS)
          op: assign_op.Equal
          rhs: {(DQ <'/DietPi/dietpi/.dietpi-letsencrypt'>)}
          spids: [1633]
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: Read_Settings_File
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'sed_index='> <1>})
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'LETSENCRYPT_DOMAIN='>
                          name: LETSENCRYPT_DOMAIN
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<sed>} {<-n>} {(DQ ($ Id.VSub_DollarName sed_index)) <p>} 
                                {($ Id.VSub_DollarName DP_SETTINGS)}
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      spids: [1654]
                    )
                  ]
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
            (command.DParen
              child: 
                (arith_expr.UnaryAssign
                  op_id: Id.Node_PostDPlus
                  child: ($ Id.Lit_ArithVarLike sed_index)
                )
              redirects: []
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'LETSENCRYPT_EMAIL='>
                          name: LETSENCRYPT_EMAIL
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<sed>} {<-n>} {(DQ ($ Id.VSub_DollarName sed_index)) <p>} 
                                {($ Id.VSub_DollarName DP_SETTINGS)}
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      spids: [1675]
                    )
                  ]
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
            (command.DParen
              child: 
                (arith_expr.UnaryAssign
                  op_id: Id.Node_PostDPlus
                  child: ($ Id.Lit_ArithVarLike sed_index)
                )
              redirects: []
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'LETSENCRYPT_REDIRECT='>
                          name: LETSENCRYPT_REDIRECT
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<sed>} {<-n>} {(DQ ($ Id.VSub_DollarName sed_index)) <p>} 
                                {($ Id.VSub_DollarName DP_SETTINGS)}
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      spids: [1696]
                    )
                  ]
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
            (command.DParen
              child: 
                (arith_expr.UnaryAssign
                  op_id: Id.Node_PostDPlus
                  child: ($ Id.Lit_ArithVarLike sed_index)
                )
              redirects: []
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'LETSENCRYPT_AUTORENEW='>
                          name: LETSENCRYPT_AUTORENEW
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<sed>} {<-n>} {(DQ ($ Id.VSub_DollarName sed_index)) <p>} 
                                {($ Id.VSub_DollarName DP_SETTINGS)}
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      spids: [1717]
                    )
                  ]
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
            (command.DParen
              child: 
                (arith_expr.UnaryAssign
                  op_id: Id.Node_PostDPlus
                  child: ($ Id.Lit_ArithVarLike sed_index)
                )
              redirects: []
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'LETSENCRYPT_KEYSIZE='>
                          name: LETSENCRYPT_KEYSIZE
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<sed>} {<-n>} {(DQ ($ Id.VSub_DollarName sed_index)) <p>} 
                                {($ Id.VSub_DollarName DP_SETTINGS)}
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      spids: [1738]
                    )
                  ]
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
            (command.DParen
              child: 
                (arith_expr.UnaryAssign
                  op_id: Id.Node_PostDPlus
                  child: ($ Id.Lit_ArithVarLike sed_index)
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: Write_Settings_File
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<_EOF_>}
                      here_end_span_id: 1794
                      stdin_parts: [
                        ($ Id.VSub_DollarName LETSENCRYPT_DOMAIN)
                        <'\n'>
                        ($ Id.VSub_DollarName LETSENCRYPT_EMAIL)
                        <'\n'>
                        ($ Id.VSub_DollarName LETSENCRYPT_REDIRECT)
                        <'\n'>
                        ($ Id.VSub_DollarName LETSENCRYPT_AUTORENEW)
                        <'\n'>
                        ($ Id.VSub_DollarName LETSENCRYPT_KEYSIZE)
                        <'\n'>
                      ]
                    )
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName DP_SETTINGS))}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROGRAM_NAME='> name:PROGRAM_NAME)
          op: assign_op.Equal
          rhs: {(DQ <DietPi-LetsEncrypt>)}
          spids: [1813]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [1820]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name:OPTION)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [1824]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [1828]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'PREVIOUS_MENU_SELECTION='>
              name: PREVIOUS_MENU_SELECTION
            )
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [1832]
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: Menu_Exit
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<whiptail>} {<--title>} {(DQ <'Exit '> ($ Id.VSub_DollarName PROGRAM_NAME) <'?'>)} 
              {<--yesno>} {(DQ <'Exit '> ($ Id.VSub_DollarName PROGRAM_NAME) <'?'>)} {<--backtitle>} 
              {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<9>} {<55>}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                  spids: [1888]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName CHOICE)}
                                  right: {<Id.Lit_Digits 0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'TARGETMENUID='>
                              name: TARGETMENUID
                            )
                          op: assign_op.Equal
                          rhs: {<-1>}
                          spids: [1913]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1892 1906]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID)
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [1924]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: Menu_Main
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'auto_renew_text='> (DQ <'Disabled | Manual renewal every 90 days'>)}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: {($ Id.VSub_DollarName LETSENCRYPT_AUTORENEW)}
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'auto_renew_text='>
                              name: auto_renew_text
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'Enabled | Automatic cron.monthly renewals'>)}
                          spids: [1967]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1954 1964]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'redirect_text='> (DQ <'Disabled | Allows http and https usage'>)}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: {($ Id.VSub_DollarName LETSENCRYPT_REDIRECT)}
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'redirect_text='>
                              name: redirect_text
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'Enabled | Forces http redirects to https'>)}
                          spids: [1998]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1985 1995]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name:OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            words: [
                              {<whiptail>}
                              {<--title>}
                              {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))}
                              {<--menu>}
                              {(DQ <'Please select a option.'>)}
                              {<--cancel-button>}
                              {(DQ <Exit>)}
                              {<--default-item>}
                              {(DQ ($ Id.VSub_DollarName PREVIOUS_MENU_SELECTION))}
                              {<--backtitle>}
                              {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))}
                              {<14>}
                              {<70>}
                              {<6>}
                              {(DQ <Domain>)}
                              {(DQ <': '> ($ Id.VSub_DollarName LETSENCRYPT_DOMAIN))}
                              {(DQ <Email>)}
                              {(DQ <': '> ($ Id.VSub_DollarName LETSENCRYPT_EMAIL))}
                              {(DQ <Redirect>)}
                              {(DQ <': '> ($ Id.VSub_DollarName redirect_text))}
                              {(DQ <'Auto Renew'>)}
                              {(DQ <': '> ($ Id.VSub_DollarName auto_renew_text))}
                              {(DQ <'Key Size'>)}
                              {(DQ <': '> ($ Id.VSub_DollarName LETSENCRYPT_KEYSIZE))}
                              {(DQ <Apply>)}
                              {(DQ <'Runs Lets Encrypt with your chosen options.'>)}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_GreatAnd '3>&'>
                                loc: (redir_loc.Fd fd:3)
                                arg: {<1>}
                              )
                              (redir
                                op: <Id.Redir_GreatAnd '1>&'>
                                loc: (redir_loc.Fd fd:1)
                                arg: {<2>}
                              )
                              (redir
                                op: <Id.Redir_GreatAnd '2>&'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<3>}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [2008]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                  spids: [2125]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName CHOICE)}
                                  right: {<Id.Lit_Digits 0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'PREVIOUS_MENU_SELECTION='>
                              name: PREVIOUS_MENU_SELECTION
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName OPTION)}
                          spids: [2147]
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName OPTION))}
                      arms: [
                        (case_arm
                          pat_list: [{<Domain>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'LETSENCRYPT_DOMAIN='>
                                      name: LETSENCRYPT_DOMAIN
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (C {<Input_Box>} 
                                              {($ Id.VSub_DollarName LETSENCRYPT_DOMAIN)} {<Website-Domain>}
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  spids: [2165]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2161 2162 2177 -1]
                        )
                        (case_arm
                          pat_list: [{<Email>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'LETSENCRYPT_EMAIL='>
                                      name: LETSENCRYPT_EMAIL
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (C {<Input_Box>} {($ Id.VSub_DollarName LETSENCRYPT_EMAIL)} 
                                              {<Email-Address>}
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  spids: [2184]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2180 2181 2196 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'Key Size'>)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DParen
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_DEqual
                                                  left: {($ Id.VSub_DollarName LETSENCRYPT_KEYSIZE)}
                                                  right: {<Id.Lit_Digits 2048>}
                                                )
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'LETSENCRYPT_KEYSIZE='>
                                              name: LETSENCRYPT_KEYSIZE
                                            )
                                          op: assign_op.Equal
                                          rhs: {<4096>}
                                          spids: [2222]
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [2205 2219]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'LETSENCRYPT_KEYSIZE='>
                                          name: LETSENCRYPT_KEYSIZE
                                        )
                                      op: assign_op.Equal
                                      rhs: {<2048>}
                                      spids: [2229]
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2199 2202 2236 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'Auto Renew'>)}]
                          action: [
                            (command.DParen
                              child: 
                                (arith_expr.UnaryAssign
                                  op_id: Id.Node_PostDPlus
                                  child: ($ Id.Lit_ArithVarLike LETSENCRYPT_AUTORENEW)
                                )
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DParen
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Great
                                                  left: {($ Id.VSub_DollarName LETSENCRYPT_AUTORENEW)}
                                                  right: {<Id.Lit_Digits 1>}
                                                )
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'LETSENCRYPT_AUTORENEW='>
                                              name: LETSENCRYPT_AUTORENEW
                                            )
                                          op: assign_op.Equal
                                          rhs: {<0>}
                                          spids: [2269]
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [2252 2266]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                          spids: [2239 2242 2276 -1]
                        )
                        (case_arm
                          pat_list: [{<Redirect>}]
                          action: [
                            (command.DParen
                              child: 
                                (arith_expr.UnaryAssign
                                  op_id: Id.Node_PostDPlus
                                  child: ($ Id.Lit_ArithVarLike LETSENCRYPT_REDIRECT)
                                )
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DParen
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Great
                                                  left: {($ Id.VSub_DollarName LETSENCRYPT_REDIRECT)}
                                                  right: {<Id.Lit_Digits 1>}
                                                )
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'LETSENCRYPT_REDIRECT='>
                                              name: LETSENCRYPT_REDIRECT
                                            )
                                          op: assign_op.Equal
                                          rhs: {<0>}
                                          spids: [2307]
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [2290 2304]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                          spids: [2279 2280 2314 -1]
                        )
                        (case_arm
                          pat_list: [{<Apply>}]
                          action: [
                            (C {<whiptail>} {<--title>} {(DQ <'Run Lets Encrypt?'>)} {<--yesno>} 
                              {
                                (DQ <'LetsEncrypt will now be run. This will:'> 
                                  <Id.Lit_BadBackslash '\\'> <'n- Create your free SSL cert.'> <Id.Lit_BadBackslash '\\'> 
                                  <'n- Automatically apply and enable your SSL cert'> <Id.Lit_BadBackslash '\\'> <'n- NB: This process can take a long time, please be patient.'> 
                                  <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nWould you like to continue?'>
                                )
                              } {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<--yes-button>} {(DQ <Ok>)} {<--no-button>} 
                              {(DQ <Back>)} {<--defaultno>} {<13>} {<65>}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '?')}
                                  spids: [2370]
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DParen
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_DEqual
                                                  left: {($ Id.VSub_DollarName CHOICE)}
                                                  right: {<Id.Lit_Digits 0>}
                                                )
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [(C {<Write_Settings_File>}) (C {<Run_Lets_Encrypt>})]
                                  spids: [2374 2388]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                          spids: [2317 2318 2400 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2129 2143]
                )
              ]
              else_action: [(C {<Menu_Exit>})]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: Input_Box
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<local>} {<Id.Lit_VarLike 'input_value='> ($ Id.VSub_Number 1)})
            (C {<local>} {<Id.Lit_VarLike 'input_desc='> ($ Id.VSub_Number 2)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name:OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            words: [
                              {<whiptail>}
                              {<--inputbox>}
                              {(DQ <'Please enter your '> ($ Id.VSub_DollarName input_desc))}
                              {<9>}
                              {<50>}
                              {(DQ ($ Id.VSub_DollarName input_value))}
                              {<--title>}
                              {(DQ <'Input '> ($ Id.VSub_DollarName input_desc))}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_GreatAnd '3>&'>
                                loc: (redir_loc.Fd fd:3)
                                arg: {<1>}
                              )
                              (redir
                                op: <Id.Redir_GreatAnd '1>&'>
                                loc: (redir_loc.Fd fd:1)
                                arg: {<2>}
                              )
                              (redir
                                op: <Id.Redir_GreatAnd '2>&'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<3>}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [2445]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                  spids: [2482]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName CHOICE)}
                                  right: {<Id.Lit_Digits 0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'input_value='>
                              name: input_value
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName OPTION)}
                          spids: [2503]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-z>} 
                                      {(DQ ($ Id.VSub_DollarName input_value))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'input_value='>
                                      name: input_value
                                    )
                                  op: assign_op.Equal
                                  rhs: {(SQ <NULL>)}
                                  spids: [2527]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2511 2524]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [2486 2500]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName input_value))})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} 
                      {(DQ ($ Id.VSub_DollarName DP_SETTINGS))} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<Write_Settings_File>})]
          spids: [2569 2584]
        )
      ]
      else_action: [(C {<Read_Settings_File>})]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Unary
                          op_id: Id.Arith_Bang
                          child: {($ Id.VSub_DollarName LETSENCRYPT_INSTALLED)}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName INPUT)}
                                  right: {<Id.Lit_Digits 0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<G_DIETPI-NOTIFY>} {<1>} 
                      {
                        (DQ <'Certbot binary not found ( '> 
                          ($ Id.VSub_DollarName DP_LETSENCRYPT_BINARY) <' )'>
                        )
                      }
                    )
                    (C {<G_DIETPI-NOTIFY>} {<2>} 
                      {
                        (DQ 
                          <
'Please install Certbot with DietPi-Software before running this program.'
                          >
                        )
                      }
                    )
                    (C {<read>} {<-p>} {(DQ <'Press any key to continue.....'>)})
                  ]
                  spids: [2632 2646]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<echo>}
                    {<-e>}
                    {
                      (DQ <'Error: Letsencrypt binary not installed ( '> 
                        ($ Id.VSub_DollarName DP_LETSENCRYPT_BINARY) <' ).'>
                      )
                    }
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName DP_LOGFILE))}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
              redirects: []
            )
          ]
          spids: [2612 2624]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName INPUT)}
                          right: {<Id.Lit_Digits 0>}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Great
                              left: {($ Id.VSub_DollarName TARGETMENUID)}
                              right: 
                                (arith_expr.Unary
                                  op_id: Id.Node_UnaryMinus
                                  child: {<Id.Lit_Digits 1>}
                                )
                            )
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (C {<clear>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: {($ Id.VSub_DollarName TARGETMENUID)}
                                          right: {<Id.Lit_Digits 0>}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<Menu_Main>})]
                          spids: [2759 2773]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          spids: [2714 2728]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName INPUT)}
                          right: {<Id.Lit_Digits 1>}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<Run_Lets_Encrypt>})]
          spids: [2797 2811]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
  ]
  redirects: []
  right: <Id.Lit_RBrace '}'>
)