(BraceGroup
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:INPUT) op:Equal rhs:{(0)} spids:[75])]
      spids: [75]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_EqualTilde
                      left: {($ VSub_Number '$1')}
                      right: 
                        {(Lit_Other '^') (-) (Lit_Other '?') (Lit_Other '[') (0-9) (Lit_Other ']') 
                          (Lit_Other '+') (Lit_Other '$')
                        }
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:INPUT)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [102]
                )
              ]
              spids: [102]
            )
          ]
          spids: [16777215 99]
        )
      ]
      spids: [16777215 106]
    )
    (C {(.)} {(/DietPi/dietpi/func/dietpi-globals)})
    (C {(G_CHECK_ROOT_USER)})
    (C {(G_CHECK_ROOTFS_RW)})
    (C {(export)} {(Lit_VarLike 'G_PROGRAM_NAME=') (SQ <DietPi-Letsencrypt>)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DP_LOGFILE)
          op: Equal
          rhs: {(DQ (/var/log/dietpi-letsencrypt.log))}
          spids: [150]
        )
      ]
      spids: [150]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DP_MONTHLY_CRON)
          op: Equal
          rhs: {(DQ (/etc/cron.monthly/dietpi-letsencrypt))}
          spids: [156]
        )
      ]
      spids: [156]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DP_LETSENCRYPT_BINARY)
          op: Equal
          rhs: {(DQ (/usr/bin/certbot))}
          spids: [162]
        )
      ]
      spids: [162]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DParen
                  child: 
                    (ArithBinary
                      op_id: Arith_Less
                      left: (ArithWord w:{($ VSub_Name '$G_DISTRO')})
                      right: (ArithWord w:{(Lit_Digits 4)})
                    )
                  spids: [170 179]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:DP_LETSENCRYPT_BINARY)
                  op: Equal
                  rhs: {(DQ (/etc/certbot_scripts/certbot-auto))}
                  spids: [185]
                )
              ]
              spids: [185]
            )
          ]
          spids: [16777215 182]
        )
      ]
      spids: [16777215 191]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:DP_WEBSERVER_INDEX) op:Equal rhs:{(0)} spids:[194])]
      spids: [194]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:LETSENCRYPT_INSTALLED) op:Equal rhs:{(0)} spids:[202])]
      spids: [202]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_Name '$DP_LETSENCRYPT_BINARY'))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LETSENCRYPT_INSTALLED)
                  op: Equal
                  rhs: {(1)}
                  spids: [222]
                )
              ]
              spids: [222]
            )
          ]
          spids: [16777215 219]
        )
      ]
      spids: [16777215 226]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LETSENCRYPT_DOMAIN)
          op: Equal
          rhs: {(DQ (mydomain.com))}
          spids: [229]
        )
      ]
      spids: [229]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LETSENCRYPT_EMAIL)
          op: Equal
          rhs: {(DQ ('myemail@email.com'))}
          spids: [235]
        )
      ]
      spids: [235]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:LETSENCRYPT_REDIRECT) op:Equal rhs:{(0)} spids:[241])]
      spids: [241]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:LETSENCRYPT_AUTORENEW) op:Equal rhs:{(0)} spids:[245])]
      spids: [245]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:LETSENCRYPT_KEYSIZE) op:Equal rhs:{(4096)} spids:[249])]
      spids: [249]
    )
    (FuncDef
      name: Run_Lets_Encrypt
      body: 
        (BraceGroup
          children: [
            (C {(G_DIETPI-NOTIFY)} {(3)} {(DQ ($ VSub_Name '$PROGRAM_NAME'))} {(DQ ('Running cert'))})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:run_conditions_met)
                  op: Equal
                  rhs: {(1)}
                  spids: [281]
                )
              ]
              spids: [279]
            )
            (C {(/DietPi/dietpi/dietpi-services)} {(start)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithWord
                              w: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(ps)} {(aux)})
                                              (C {(grep)} {(-ci)} {(-m1)} {(SQ <'[a]pache'>)})
                                            ]
                                            negated: F
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [300 316]
                                  )
                                }
                            )
                          spids: [298 319]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:DP_WEBSERVER_INDEX)
                          op: Equal
                          rhs: {(0)}
                          spids: [326]
                        )
                      ]
                      spids: [326]
                    )
                    (C {(G_DIETPI-NOTIFY)} {(0)} {(DQ ('Apache2 webserver detected'))})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DParen
                                  child: 
                                    (ArithBinary
                                      op_id: Arith_GreatEqual
                                      left: (ArithWord w:{($ VSub_Name '$G_DISTRO')})
                                      right: (ArithWord w:{(Lit_Digits 4)})
                                    )
                                  spids: [341 350]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:DP_LETSENCRYPT_BINARY)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Name '$DP_LETSENCRYPT_BINARY') (' --apache'))}
                                  spids: [356]
                                )
                              ]
                              spids: [356]
                            )
                          ]
                          spids: [16777215 353]
                        )
                      ]
                      spids: [16777215 363]
                    )
                  ]
                  spids: [16777215 322]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithWord
                              w: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(ps)} {(aux)})
                                              (C {(grep)} {(-ci)} {(-m1)} {(SQ <'[l]ighttpd'>)})
                                            ]
                                            negated: F
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [371 387]
                                  )
                                }
                            )
                          spids: [369 390]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:DP_WEBSERVER_INDEX)
                          op: Equal
                          rhs: {(1)}
                          spids: [397]
                        )
                      ]
                      spids: [397]
                    )
                    (C {(G_DIETPI-NOTIFY)} {(0)} {(DQ ('Lighttpd webserver detected'))})
                  ]
                  spids: [367 393]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithWord
                              w: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(ps)} {(aux)})
                                              (C {(grep)} {(-ci)} {(-m1)} {(SQ <'[n]ginx'>)})
                                            ]
                                            negated: F
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [415 431]
                                  )
                                }
                            )
                          spids: [413 434]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:DP_WEBSERVER_INDEX)
                          op: Equal
                          rhs: {(2)}
                          spids: [441]
                        )
                      ]
                      spids: [441]
                    )
                    (C {(G_DIETPI-NOTIFY)} {(0)} {(DQ ('Nginx webserver detected'))})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DParen
                                  child: 
                                    (ArithBinary
                                      op_id: Arith_GreatEqual
                                      left: (ArithWord w:{($ VSub_Name '$G_DISTRO')})
                                      right: (ArithWord w:{(Lit_Digits 4)})
                                    )
                                  spids: [456 465]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:DP_LETSENCRYPT_BINARY)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Name '$DP_LETSENCRYPT_BINARY') (' --nginx'))}
                                  spids: [471]
                                )
                              ]
                              spids: [471]
                            )
                          ]
                          spids: [16777215 468]
                        )
                      ]
                      spids: [16777215 478]
                    )
                  ]
                  spids: [411 437]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithWord
                              w: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(ps)} {(aux)})
                                              (C {(grep)} {(-ci)} {(-m1)} {(SQ <'[m]inio'>)})
                                            ]
                                            negated: F
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [486 502]
                                  )
                                }
                            )
                          spids: [484 505]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:DP_WEBSERVER_INDEX)
                          op: Equal
                          rhs: {(3)}
                          spids: [512]
                        )
                      ]
                      spids: [512]
                    )
                    (C {(G_DIETPI-NOTIFY)} {(0)} {(DQ ('Minio S3 server detected'))})
                  ]
                  spids: [482 508]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:run_conditions_met)
                      op: Equal
                      rhs: {(0)}
                      spids: [530]
                    )
                  ]
                  spids: [530]
                )
              ]
              spids: [526 535]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithUnary
                              op_id: Arith_Bang
                              child: (ArithWord w:{($ VSub_Name '$run_conditions_met')})
                            )
                          spids: [545 552]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {(-e)}
                        {(DQ ('Error: No compatible and/or active webserver was found. Aborting.'))}
                      ]
                      redirects: [
                        (Redir
                          op: <Redir_DGreat '>>'>
                          fd: 16777215
                          arg_word: {(DQ ($ VSub_Name '$DP_LOGFILE'))}
                        )
                      ]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DParen
                                  child: 
                                    (ArithBinary
                                      op_id: Arith_DEqual
                                      left: (ArithWord w:{($ VSub_Name '$INPUT')})
                                      right: (ArithWord w:{(Lit_Digits 0)})
                                    )
                                  spids: [576 585]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(whiptail)} {(--title)} {(DQ (Error))} {(--msgbox)} 
                              {
                                (DQ 
                                  (
'Error: No compatible and/or active webserver was found. Aborting.'
                                  )
                                )
                              } {(--backtitle)} {(DQ ($ VSub_Name '$PROGRAM_NAME'))} {(8)} {(60)}
                            )
                          ]
                          spids: [16777215 588]
                        )
                      ]
                      spids: [16777215 618]
                    )
                  ]
                  spids: [16777215 555]
                )
              ]
              else_action: [
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DParen
                              child: 
                                (ArithBinary
                                  op_id: Arith_DEqual
                                  left: (ArithWord w:{($ VSub_Name '$DP_WEBSERVER_INDEX')})
                                  right: (ArithWord w:{(Lit_Digits 0)})
                                )
                              spids: [640 649]
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_Local
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:dp_defaultsite)
                              op: Equal
                              rhs: {(DQ (/etc/apache2/sites-available/000-default.conf))}
                              spids: [658]
                            )
                          ]
                          spids: [656]
                        )
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (DParen
                                      child: 
                                        (ArithUnary
                                          op_id: Arith_Bang
                                          child: 
                                            (ArithWord
                                              w: 
                                                {
                                                  (CommandSubPart
                                                    command_list: 
                                                      (CommandList
                                                        children: [
                                                          (Pipeline
                                                            children: [
                                                              (C {(cat)} 
                                                                {
                                                                  (DQ ($ VSub_Name '$dp_defaultsite'))
                                                                }
                                                              )
                                                              (C {(grep)} {(-ci)} {(-m1)} 
                                                                {(SQ <ServerName>)}
                                                              )
                                                            ]
                                                            negated: F
                                                          )
                                                        ]
                                                      )
                                                    left_token: <Left_CommandSub '$('>
                                                    spids: [675 693]
                                                  )
                                                }
                                            )
                                        )
                                      spids: [671 696]
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (C {(sed)} {(-i)} {(DQ ('/ServerAdmin /a ServerName'))} 
                                  {(DQ ($ VSub_Name '$dp_defaultsite'))}
                                )
                                (SimpleCommand
                                  words: [
                                    {(echo)}
                                    {(-e)}
                                    {
                                      (DQ ('ServerName entry not found in ') 
                                        ($ VSub_Name '$dp_defaultsite') ('. Adding it now.')
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (Redir
                                      op: <Redir_DGreat '>>'>
                                      fd: 16777215
                                      arg_word: {(DQ ($ VSub_Name '$DP_LOGFILE'))}
                                    )
                                  ]
                                )
                              ]
                              spids: [16777215 699]
                            )
                          ]
                          spids: [16777215 739]
                        )
                        (C {(sed)} {(-i)} 
                          {
                            (DQ (/ServerName/c) (Lit_Other '\\') ('        ServerName ') 
                              ($ VSub_Name '$LETSENCRYPT_DOMAIN')
                            )
                          } {(DQ ($ VSub_Name '$dp_defaultsite'))}
                        )
                        (C {(systemctl)} {(restart)} {(apache2)})
                        (Assignment
                          keyword: Assign_Local
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cli_redirect)
                              op: Equal
                              rhs: {(DQ (--no-redirect))}
                              spids: [778]
                            )
                          ]
                          spids: [776]
                        )
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (DParen
                                      child: (ArithWord w:{($ VSub_Name '$LETSENCRYPT_REDIRECT')})
                                      spids: [786 791]
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:cli_redirect)
                                      op: Equal
                                      rhs: {(DQ (--redirect))}
                                      spids: [798]
                                    )
                                  ]
                                  spids: [798]
                                )
                              ]
                              spids: [16777215 794]
                            )
                          ]
                          spids: [16777215 805]
                        )
                        (C {($ VSub_Name '$DP_LETSENCRYPT_BINARY')} {(--duplicate)} {(--agree-tos)} 
                          {($ VSub_Name '$cli_redirect')} {(--rsa-key-size)} {($ VSub_Name '$LETSENCRYPT_KEYSIZE')} {(--email)} 
                          {($ VSub_Name '$LETSENCRYPT_EMAIL')} {(-d)} {($ VSub_Name '$LETSENCRYPT_DOMAIN')}
                        )
                      ]
                      spids: [16777215 652]
                    )
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DParen
                              child: 
                                (ArithBinary
                                  op_id: Arith_DEqual
                                  left: (ArithWord w:{($ VSub_Name '$DP_WEBSERVER_INDEX')})
                                  right: (ArithWord w:{(Lit_Digits 1)})
                                )
                              spids: [845 854]
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (C {(/DietPi/dietpi/dietpi-services)} {(stop)})
                        (C {($ VSub_Name '$DP_LETSENCRYPT_BINARY')} {(certonly)} {(--standalone)} 
                          {(--duplicate)} {(--agree-tos)} {($ VSub_Name '$cli_redirect')} {(--rsa-key-size)} {($ VSub_Name '$LETSENCRYPT_KEYSIZE')} 
                          {(--email)} {($ VSub_Name '$LETSENCRYPT_EMAIL')} {(-d)} {($ VSub_Name '$LETSENCRYPT_DOMAIN')}
                        )
                        (C {(cd)} {(/etc/letsencrypt/live/) (DQ ($ VSub_Name '$LETSENCRYPT_DOMAIN'))})
                        (SimpleCommand
                          words: [{(cat)} {(privkey.pem)} {(cert.pem)}]
                          redirects: [
                            (Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(combined.pem)}
                            )
                          ]
                        )
                        (SimpleCommand
                          words: [{(cat)}]
                          redirects: [
                            (HereDoc
                              op: <Redir_DLess '<<'>
                              fd: 16777215
                              here_begin: {(_EOF_)}
                              here_end_span_id: 987
                              stdin_parts: [
                                (EscapedLiteralPart
                                  token: <Lit_EscapedChar '\\$'>
                                )
                                ('SERVER[')
                                (Right_DoubleQuote '"')
                                (socket)
                                (Right_DoubleQuote '"')
                                ('] == ')
                                (Right_DoubleQuote '"')
                                (':443')
                                (Right_DoubleQuote '"')
                                (' {\n')
                                ('\t\tssl.engine = ')
                                (Right_DoubleQuote '"')
                                (enable)
                                (Right_DoubleQuote '"')
                                ('\n')
                                ('\t\tssl.pemfile = ')
                                (Right_DoubleQuote '"')
                                (/etc/letsencrypt/live/)
                                ($ VSub_Name '$LETSENCRYPT_DOMAIN')
                                (/combined.pem)
                                (Right_DoubleQuote '"')
                                ('\n')
                                ('\t\tssl.ca-file =  ')
                                (Right_DoubleQuote '"')
                                (/etc/letsencrypt/live/)
                                ($ VSub_Name '$LETSENCRYPT_DOMAIN')
                                (/fullchain.pem)
                                (Right_DoubleQuote '"')
                                ('\n')
                                ('\t\t#ssl.cipher-list = ')
                                (Right_DoubleQuote '"')
                                (
'ECDHE-RSA-AES256-SHA384:AES256-SHA256:HIGH:!MD5:!aNULL:!EDH:!AESGCM'
                                )
                                (Right_DoubleQuote '"')
                                ('\n')
                                ('\t\tssl.cipher-list = ')
                                (Right_DoubleQuote '"')
                                (
'ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS'
                                )
                                (Right_DoubleQuote '"')
                                ('\n')
                                ('\t\tssl.honor-cipher-order = ')
                                (Right_DoubleQuote '"')
                                (enable)
                                (Right_DoubleQuote '"')
                                ('\n')
                                ('\t\tssl.use-sslv2 = ')
                                (Right_DoubleQuote '"')
                                (disable)
                                (Right_DoubleQuote '"')
                                ('\n')
                                ('\t\tssl.use-sslv3 = ')
                                (Right_DoubleQuote '"')
                                (disable)
                                (Right_DoubleQuote '"')
                                ('\n')
                                ('}\n')
                              ]
                            )
                            (Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(/etc/lighttpd/conf-enabled/letsencrypt.conf)}
                            )
                          ]
                        )
                        (C {(rm)} {(/etc/lighttpd/conf-enabled/redirect.conf)})
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (DParen
                                      child: (ArithWord w:{($ VSub_Name '$LETSENCRYPT_REDIRECT')})
                                      spids: [1001 1006]
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (SimpleCommand
                                  words: [{(cat)}]
                                  redirects: [
                                    (HereDoc
                                      op: <Redir_DLess '<<'>
                                      fd: 16777215
                                      here_begin: {(_EOF_)}
                                      here_end_span_id: 1060
                                      stdin_parts: [
                                        (EscapedLiteralPart
                                          token: <Lit_EscapedChar '\\$'>
                                        )
                                        ('HTTP[')
                                        (Right_DoubleQuote '"')
                                        (scheme)
                                        (Right_DoubleQuote '"')
                                        ('] == ')
                                        (Right_DoubleQuote '"')
                                        (http)
                                        (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')
                                        (EscapedLiteralPart
                                          token: <Lit_EscapedChar '\\$'>
                                        )
                                        ('HTTP[')
                                        (Right_DoubleQuote '"')
                                        (host)
                                        (Right_DoubleQuote '"')
                                        ('] =~ ')
                                        (Right_DoubleQuote '"')
                                        ('.*')
                                        (Right_DoubleQuote '"')
                                        (' {\n')
                                        ('\t\turl.redirect = (')
                                        (Right_DoubleQuote '"')
                                        ('.*')
                                        (Right_DoubleQuote '"')
                                        (' => ')
                                        (Right_DoubleQuote '"')
                                        ('https://%0')
                                        (EscapedLiteralPart
                                          token: <Lit_EscapedChar '\\$'>
                                        )
                                        (0)
                                        (Right_DoubleQuote '"')
                                        (')\n')
                                        ('\t}\n')
                                        ('}\n')
                                      ]
                                    )
                                    (Redir
                                      op: <Redir_Great '>'>
                                      fd: 16777215
                                      arg_word: {(/etc/lighttpd/conf-enabled/redirect.conf)}
                                    )
                                  ]
                                )
                              ]
                              spids: [16777215 1009]
                            )
                          ]
                          spids: [16777215 1063]
                        )
                        (C {(/etc/init.d/lighttpd)} {(force-reload)})
                      ]
                      spids: [843 857]
                    )
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DParen
                              child: 
                                (ArithBinary
                                  op_id: Arith_DEqual
                                  left: (ArithWord w:{($ VSub_Name '$DP_WEBSERVER_INDEX')})
                                  right: (ArithWord w:{(Lit_Digits 2)})
                                )
                              spids: [1085 1094]
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_Local
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:nginx_defaultsite)
                              op: Equal
                              rhs: {(DQ (/etc/nginx/sites-available/default))}
                              spids: [1103]
                            )
                          ]
                          spids: [1101]
                        )
                        (C {(sed)} {(-i)} 
                          {
                            (DQ (/server_name/c) (Lit_Other '\\') ('        server_name ') 
                              ($ VSub_Name '$LETSENCRYPT_DOMAIN') (';')
                            )
                          } {(DQ ($ VSub_Name '$nginx_defaultsite'))}
                        )
                        (C {(systemctl)} {(restart)} {(nginx)})
                        (Assignment
                          keyword: Assign_Local
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cli_redirect)
                              op: Equal
                              rhs: {(DQ (--no-redirect))}
                              spids: [1146]
                            )
                          ]
                          spids: [1144]
                        )
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (DParen
                                      child: (ArithWord w:{($ VSub_Name '$LETSENCRYPT_REDIRECT')})
                                      spids: [1155 1160]
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:cli_redirect)
                                      op: Equal
                                      rhs: {(DQ (--redirect))}
                                      spids: [1167]
                                    )
                                  ]
                                  spids: [1167]
                                )
                              ]
                              spids: [16777215 1163]
                            )
                          ]
                          spids: [16777215 1174]
                        )
                        (C {($ VSub_Name '$DP_LETSENCRYPT_BINARY')} {(--duplicate)} {(--agree-tos)} 
                          {($ VSub_Name '$cli_redirect')} {(--rsa-key-size)} {($ VSub_Name '$LETSENCRYPT_KEYSIZE')} {(--email)} 
                          {($ VSub_Name '$LETSENCRYPT_EMAIL')} {(-d)} {($ VSub_Name '$LETSENCRYPT_DOMAIN')}
                        )
                      ]
                      spids: [1083 1097]
                    )
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DParen
                              child: 
                                (ArithBinary
                                  op_id: Arith_DEqual
                                  left: (ArithWord w:{($ VSub_Name '$DP_WEBSERVER_INDEX')})
                                  right: (ArithWord w:{(Lit_Digits 3)})
                                )
                              spids: [1215 1224]
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (C {(/DietPi/dietpi/dietpi-services)} {(stop)})
                        (C {($ VSub_Name '$DP_LETSENCRYPT_BINARY')} {(certonly)} {(--standalone)} 
                          {(--preferred-challenges)} {(tls-sni)} {(--staple-ocsp)} {(--agree-tos)} {($ VSub_Name '$cli_redirect')} {(--rsa-key-size)} 
                          {($ VSub_Name '$LETSENCRYPT_KEYSIZE')} {(--email)} {($ VSub_Name '$LETSENCRYPT_EMAIL')} {(-d)} {($ VSub_Name '$LETSENCRYPT_DOMAIN')}
                        )
                        (C {(cp)} 
                          {(/etc/letsencrypt/live/) ($ VSub_Name '$LETSENCRYPT_DOMAIN') 
                            (/fullchain.pem)
                          } {(/home/minio-user/.minio/certs/public.crt)}
                        )
                        (C {(cp)} 
                          {(/etc/letsencrypt/live/) ($ VSub_Name '$LETSENCRYPT_DOMAIN') 
                            (/privkey.pem)
                          } {(/home/minio-user/.minio/certs/private.key)}
                        )
                        (C {(chown)} {(minio-user) (Lit_Other ':') (minio-user)} 
                          {(/home/minio-user/.minio/certs/public.crt)}
                        )
                        (C {(chown)} {(minio-user) (Lit_Other ':') (minio-user)} 
                          {(/home/minio-user/.minio/certs/private.key)}
                        )
                        (SimpleCommand
                          words: [{(grep)} {(-v)} {(DQ (MINIO_OPTS))} {(/etc/default/minio)}]
                          redirects: [
                            (Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(/etc/default/minio.temp1)}
                            )
                          ]
                        )
                        (SimpleCommand
                          words: [{(grep)} {(-v)} {(DQ (port))} {(/etc/default/minio.temp1)}]
                          redirects: [
                            (Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(/etc/default/minio.temp2)}
                            )
                          ]
                        )
                        (C {(rm)} {(/etc/default/minio.temp1)})
                        (C {(mv)} {(/etc/default/minio.temp2)} {(/etc/default/minio)})
                        (SimpleCommand
                          words: [{(cat)}]
                          redirects: [
                            (HereDoc
                              op: <Redir_DLess '<<'>
                              fd: 16777215
                              here_begin: {(_EOF_)}
                              here_end_span_id: 1379
                              stdin_parts: [
                                ('# Use if you want to run Minio on a custom port.\n')
                                ('MINIO_OPTS=')
                                (Right_DoubleQuote '"')
                                ('--address :443')
                                (Right_DoubleQuote '"')
                                ('\n')
                              ]
                            )
                            (Redir
                              op: <Redir_DGreat '>>'>
                              fd: 16777215
                              arg_word: {(/etc/default/minio)}
                            )
                          ]
                        )
                        (C {(setcap)} {(Lit_VarLike 'CAP_NET_BIND_SERVICE=') (Lit_Other '+') (eip)} 
                          {(/usr/local/bin/minio)}
                        )
                        (SimpleCommand
                          words: [{(cat)}]
                          redirects: [
                            (HereDoc
                              op: <Redir_DLess '<<'>
                              fd: 16777215
                              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/')
                                ($ VSub_Name '$LETSENCRYPT_DOMAIN')
                                ('/fullchain.pem /home/minio-user/.minio/certs/public.crt\n')
                                ('cp /etc/letsencrypt/live/')
                                ($ VSub_Name '$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: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(/home/minio-user/.minio/dietpi-cert-renewl.sh)}
                            )
                          ]
                        )
                        (C {(chmod)} {(Lit_Other '+') (x)} 
                          {(/home/minio-user/.minio/dietpi-cert-renewl.sh)}
                        )
                      ]
                      spids: [1213 1227]
                    )
                  ]
                  spids: [16777215 1442]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DParen
                              child: 
                                (ArithBinary
                                  op_id: Arith_DAmp
                                  left: (ArithWord w:{($ VSub_Name '$LETSENCRYPT_AUTORENEW')})
                                  right: 
                                    (ArithBinary
                                      op_id: Arith_Less
                                      left: (ArithWord w:{($ VSub_Name '$G_DISTRO')})
                                      right: (ArithWord w:{(Lit_Digits 4)})
                                    )
                                )
                              spids: [1457 1470]
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (SimpleCommand
                          words: [{(cat)}]
                          redirects: [
                            (HereDoc
                              op: <Redir_DLess '<<'>
                              fd: 16777215
                              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 ')
                                ($ VSub_Name '$DP_MONTHLY_CRON')
                                ('\n')
                                ('\t#\n')
                                ('\t#////////////////////////////////////\n')
                                ('\n')
                                (
'\t#----------------------------------------------------------------\n'
                                )
                                ('\t# Main Loop\n')
                                (
'\t#----------------------------------------------------------------\n'
                                )
                                ('\t/DietPi/dietpi/dietpi-letsencrypt 1 &>> ')
                                ($ VSub_Name '$DP_LOGFILE')
                                ('\n')
                                ('\n')
                                ('\t# Minio specific applications\n')
                                ('\tif (( ')
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [
                                        (Pipeline
                                          children: [
                                            (C {(ps)} {(aux)})
                                            (C {(grep)} {(-ci)} {(-m1)} {(SQ <'[m]inio'>)})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [1512 1528]
                                )
                                (' )); 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: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(DQ ($ VSub_Name '$DP_MONTHLY_CRON'))}
                            )
                          ]
                        )
                        (C {(chmod)} {(Lit_Other '+') (x)} {(DQ ($ VSub_Name '$DP_MONTHLY_CRON'))})
                      ]
                      spids: [16777215 1473]
                    )
                  ]
                  spids: [16777215 1551]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DParen
                              child: 
                                (ArithBinary
                                  op_id: Arith_DEqual
                                  left: (ArithWord w:{($ VSub_Name '$INPUT')})
                                  right: (ArithWord w:{(Lit_Digits 0)})
                                )
                              spids: [1557 1566]
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (C {(echo)} {(-e)} {(DQ )})
                        (C {(read)} {(-p)} {(DQ ('Press any key to continue...'))})
                        (C {(echo)} {(-e)} {(DQ )})
                      ]
                      spids: [16777215 1569]
                    )
                  ]
                  spids: [16777215 1599]
                )
                (C {(/DietPi/dietpi/dietpi-services)} {(restart)})
              ]
              spids: [626 1613]
            )
          ]
          spids: [257]
        )
      spids: [254 257]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DP_SETTINGS)
          op: Equal
          rhs: {(DQ (/DietPi/dietpi/.dietpi-letsencrypt))}
          spids: [1633]
        )
      ]
      spids: [1633]
    )
    (FuncDef
      name: Read_Settings_File
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:sed_index) op:Equal rhs:{(1)} spids:[1649])]
              spids: [1647]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:LETSENCRYPT_DOMAIN)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(sed)} {(-n)} {(DQ ($ VSub_Name '$sed_index')) (p)} 
                                    {($ VSub_Name '$DP_SETTINGS')}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [1655 1666]
                          )
                        }
                      spids: [1654]
                    )
                  ]
                  spids: [1654]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:sed_index))
              spids: [1668 1672]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:LETSENCRYPT_EMAIL)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(sed)} {(-n)} {(DQ ($ VSub_Name '$sed_index')) (p)} 
                                    {($ VSub_Name '$DP_SETTINGS')}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [1676 1687]
                          )
                        }
                      spids: [1675]
                    )
                  ]
                  spids: [1675]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:sed_index))
              spids: [1689 1693]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:LETSENCRYPT_REDIRECT)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(sed)} {(-n)} {(DQ ($ VSub_Name '$sed_index')) (p)} 
                                    {($ VSub_Name '$DP_SETTINGS')}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [1697 1708]
                          )
                        }
                      spids: [1696]
                    )
                  ]
                  spids: [1696]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:sed_index))
              spids: [1710 1714]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:LETSENCRYPT_AUTORENEW)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(sed)} {(-n)} {(DQ ($ VSub_Name '$sed_index')) (p)} 
                                    {($ VSub_Name '$DP_SETTINGS')}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [1718 1729]
                          )
                        }
                      spids: [1717]
                    )
                  ]
                  spids: [1717]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:sed_index))
              spids: [1731 1735]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:LETSENCRYPT_KEYSIZE)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(sed)} {(-n)} {(DQ ($ VSub_Name '$sed_index')) (p)} 
                                    {($ VSub_Name '$DP_SETTINGS')}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [1739 1750]
                          )
                        }
                      spids: [1738]
                    )
                  ]
                  spids: [1738]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:sed_index))
              spids: [1752 1756]
            )
          ]
          spids: [1643]
        )
      spids: [1640 1643]
    )
    (FuncDef
      name: Write_Settings_File
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(_EOF_)}
                  here_end_span_id: 1794
                  stdin_parts: [
                    ($ VSub_Name '$LETSENCRYPT_DOMAIN')
                    ('\n')
                    ($ VSub_Name '$LETSENCRYPT_EMAIL')
                    ('\n')
                    ($ VSub_Name '$LETSENCRYPT_REDIRECT')
                    ('\n')
                    ($ VSub_Name '$LETSENCRYPT_AUTORENEW')
                    ('\n')
                    ($ VSub_Name '$LETSENCRYPT_KEYSIZE')
                    ('\n')
                  ]
                )
                (Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {(DQ ($ VSub_Name '$DP_SETTINGS'))}
                )
              ]
            )
          ]
          spids: [1767]
        )
      spids: [1764 1767]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:PROGRAM_NAME)
          op: Equal
          rhs: {(DQ (DietPi-LetsEncrypt))}
          spids: [1813]
        )
      ]
      spids: [1813]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:CHOICE) op:Equal rhs:{(0)} spids:[1820])]
      spids: [1820]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:OPTION) op:Equal rhs:{(0)} spids:[1824])]
      spids: [1824]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:TARGETMENUID) op:Equal rhs:{(0)} spids:[1828])]
      spids: [1828]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:PREVIOUS_MENU_SELECTION)
          op: Equal
          rhs: {(DQ )}
          spids: [1832]
        )
      ]
      spids: [1832]
    )
    (FuncDef
      name: Menu_Exit
      body: 
        (BraceGroup
          children: [
            (C {(whiptail)} {(--title)} {(DQ ('Exit ') ($ VSub_Name '$PROGRAM_NAME') ('?'))} {(--yesno)} 
              {(DQ ('Exit ') ($ VSub_Name '$PROGRAM_NAME') ('?'))} {(--backtitle)} {(DQ ($ VSub_Name '$PROGRAM_NAME'))} {(--yes-button)} {(DQ (Ok))} {(--no-button)} 
              {(DQ (Back))} {(--defaultno)} {(9)} {(55)}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CHOICE)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [1888]
                )
              ]
              spids: [1888]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_DEqual
                              left: (ArithWord w:{($ VSub_Name '$CHOICE')})
                              right: (ArithWord w:{(Lit_Digits 0)})
                            )
                          spids: [1894 1903]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:TARGETMENUID)
                          op: Equal
                          rhs: {(-1)}
                          spids: [1913]
                        )
                      ]
                      spids: [1913]
                    )
                  ]
                  spids: [16777215 1906]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:TARGETMENUID)
                      op: Equal
                      rhs: {(0)}
                      spids: [1924]
                    )
                  ]
                  spids: [1924]
                )
              ]
              spids: [1917 1928]
            )
          ]
          spids: [1841]
        )
      spids: [1838 1841]
    )
    (FuncDef
      name: Menu_Main
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:auto_renew_text)
                  op: Equal
                  rhs: {(DQ ('Disabled | Manual renewal every 90 days'))}
                  spids: [1948]
                )
              ]
              spids: [1946]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: (ArithWord w:{($ VSub_Name '$LETSENCRYPT_AUTORENEW')})
                          spids: [1956 1961]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:auto_renew_text)
                          op: Equal
                          rhs: {(DQ ('Enabled | Automatic cron.monthly renewals'))}
                          spids: [1967]
                        )
                      ]
                      spids: [1967]
                    )
                  ]
                  spids: [16777215 1964]
                )
              ]
              spids: [16777215 1973]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:redirect_text)
                  op: Equal
                  rhs: {(DQ ('Disabled | Allows http and https usage'))}
                  spids: [1979]
                )
              ]
              spids: [1977]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: (ArithWord w:{($ VSub_Name '$LETSENCRYPT_REDIRECT')})
                          spids: [1987 1992]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:redirect_text)
                          op: Equal
                          rhs: {(DQ ('Enabled | Forces http redirects to https'))}
                          spids: [1998]
                        )
                      ]
                      spids: [1998]
                    )
                  ]
                  spids: [16777215 1995]
                )
              ]
              spids: [16777215 2004]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OPTION)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (SimpleCommand
                                words: [
                                  {(whiptail)}
                                  {(--title)}
                                  {(DQ ($ VSub_Name '$PROGRAM_NAME'))}
                                  {(--menu)}
                                  {(DQ ('Please select a option.'))}
                                  {(--cancel-button)}
                                  {(DQ (Exit))}
                                  {(--default-item)}
                                  {(DQ ($ VSub_Name '$PREVIOUS_MENU_SELECTION'))}
                                  {(--backtitle)}
                                  {(DQ ($ VSub_Name '$PROGRAM_NAME'))}
                                  {(14)}
                                  {(70)}
                                  {(6)}
                                  {(DQ (Domain))}
                                  {(DQ (': ') ($ VSub_Name '$LETSENCRYPT_DOMAIN'))}
                                  {(DQ (Email))}
                                  {(DQ (': ') ($ VSub_Name '$LETSENCRYPT_EMAIL'))}
                                  {(DQ (Redirect))}
                                  {(DQ (': ') ($ VSub_Name '$redirect_text'))}
                                  {(DQ ('Auto Renew'))}
                                  {(DQ (': ') ($ VSub_Name '$auto_renew_text'))}
                                  {(DQ ('Key Size'))}
                                  {(DQ (': ') ($ VSub_Name '$LETSENCRYPT_KEYSIZE'))}
                                  {(DQ (Apply))}
                                  {(DQ ('Runs Lets Encrypt with your chosen options.'))}
                                ]
                                redirects: [
                                  (Redir
                                    op: <Redir_GreatAnd '3>&'>
                                    fd: 3
                                    arg_word: {(1)}
                                  )
                                  (Redir
                                    op: <Redir_GreatAnd '1>&'>
                                    fd: 1
                                    arg_word: {(2)}
                                  )
                                  (Redir
                                    op: <Redir_GreatAnd '2>&'>
                                    fd: 2
                                    arg_word: {(3)}
                                  )
                                ]
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [2009 2121]
                      )
                    }
                  spids: [2008]
                )
              ]
              spids: [2008]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CHOICE)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [2125]
                )
              ]
              spids: [2125]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_DEqual
                              left: (ArithWord w:{($ VSub_Name '$CHOICE')})
                              right: (ArithWord w:{(Lit_Digits 0)})
                            )
                          spids: [2131 2140]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:PREVIOUS_MENU_SELECTION)
                          op: Equal
                          rhs: {($ VSub_Name '$OPTION')}
                          spids: [2147]
                        )
                      ]
                      spids: [2147]
                    )
                    (Case
                      to_match: {(DQ ($ VSub_Name '$OPTION'))}
                      arms: [
                        (case_arm
                          pat_list: [{(Domain)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:LETSENCRYPT_DOMAIN)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (CommandSubPart
                                          command_list: 
                                            (CommandList
                                              children: [
                                                (C {(Input_Box)} {($ VSub_Name '$LETSENCRYPT_DOMAIN')} 
                                                  {(Website-Domain)}
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [2167 2173]
                                        )
                                      )
                                    }
                                  spids: [2165]
                                )
                              ]
                              spids: [2165]
                            )
                          ]
                          spids: [2161 2162 2177 16777215]
                        )
                        (case_arm
                          pat_list: [{(Email)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:LETSENCRYPT_EMAIL)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (CommandSubPart
                                          command_list: 
                                            (CommandList
                                              children: [
                                                (C {(Input_Box)} {($ VSub_Name '$LETSENCRYPT_EMAIL')} 
                                                  {(Email-Address)}
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [2186 2192]
                                        )
                                      )
                                    }
                                  spids: [2184]
                                )
                              ]
                              spids: [2184]
                            )
                          ]
                          spids: [2180 2181 2196 16777215]
                        )
                        (case_arm
                          pat_list: [{(DQ ('Key Size'))}]
                          action: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DParen
                                          child: 
                                            (ArithBinary
                                              op_id: Arith_DEqual
                                              left: 
                                                (ArithWord
                                                  w: {($ VSub_Name '$LETSENCRYPT_KEYSIZE')}
                                                )
                                              right: (ArithWord w:{(Lit_Digits 2048)})
                                            )
                                          spids: [2207 2216]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:LETSENCRYPT_KEYSIZE)
                                          op: Equal
                                          rhs: {(4096)}
                                          spids: [2222]
                                        )
                                      ]
                                      spids: [2222]
                                    )
                                  ]
                                  spids: [16777215 2219]
                                )
                              ]
                              else_action: [
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:LETSENCRYPT_KEYSIZE)
                                      op: Equal
                                      rhs: {(2048)}
                                      spids: [2229]
                                    )
                                  ]
                                  spids: [2229]
                                )
                              ]
                              spids: [2226 2233]
                            )
                          ]
                          spids: [2199 2202 2236 16777215]
                        )
                        (case_arm
                          pat_list: [{(DQ ('Auto Renew'))}]
                          action: [
                            (DParen
                              child: 
                                (UnaryAssign
                                  op_id: Node_PostDPlus
                                  child: (LhsName name:LETSENCRYPT_AUTORENEW)
                                )
                              spids: [2245 2249]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DParen
                                          child: 
                                            (ArithBinary
                                              op_id: Arith_Great
                                              left: 
                                                (ArithWord
                                                  w: {($ VSub_Name '$LETSENCRYPT_AUTORENEW')}
                                                )
                                              right: (ArithWord w:{(Lit_Digits 1)})
                                            )
                                          spids: [2254 2263]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:LETSENCRYPT_AUTORENEW)
                                          op: Equal
                                          rhs: {(0)}
                                          spids: [2269]
                                        )
                                      ]
                                      spids: [2269]
                                    )
                                  ]
                                  spids: [16777215 2266]
                                )
                              ]
                              spids: [16777215 2273]
                            )
                          ]
                          spids: [2239 2242 2276 16777215]
                        )
                        (case_arm
                          pat_list: [{(Redirect)}]
                          action: [
                            (DParen
                              child: 
                                (UnaryAssign
                                  op_id: Node_PostDPlus
                                  child: (LhsName name:LETSENCRYPT_REDIRECT)
                                )
                              spids: [2283 2287]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DParen
                                          child: 
                                            (ArithBinary
                                              op_id: Arith_Great
                                              left: 
                                                (ArithWord
                                                  w: {($ VSub_Name '$LETSENCRYPT_REDIRECT')}
                                                )
                                              right: (ArithWord w:{(Lit_Digits 1)})
                                            )
                                          spids: [2292 2301]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:LETSENCRYPT_REDIRECT)
                                          op: Equal
                                          rhs: {(0)}
                                          spids: [2307]
                                        )
                                      ]
                                      spids: [2307]
                                    )
                                  ]
                                  spids: [16777215 2304]
                                )
                              ]
                              spids: [16777215 2311]
                            )
                          ]
                          spids: [2279 2280 2314 16777215]
                        )
                        (case_arm
                          pat_list: [{(Apply)}]
                          action: [
                            (C {(whiptail)} {(--title)} {(DQ ('Run Lets Encrypt?'))} {(--yesno)} 
                              {
                                (DQ ('LetsEncrypt will now be run. This will:') (Lit_Other '\\') 
                                  ('n- Create your free SSL cert.') (Lit_Other '\\') ('n- Automatically apply and enable your SSL cert') (Lit_Other '\\') 
                                  ('n- NB: This process can take a long time, please be patient.') (Lit_Other '\\') (n) (Lit_Other '\\') ('nWould you like to continue?')
                                )
                              } {(--backtitle)} {(DQ ($ VSub_Name '$PROGRAM_NAME'))} {(--yes-button)} {(DQ (Ok))} {(--no-button)} 
                              {(DQ (Back))} {(--defaultno)} {(13)} {(65)}
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:CHOICE)
                                  op: Equal
                                  rhs: {($ VSub_QMark '$?')}
                                  spids: [2370]
                                )
                              ]
                              spids: [2370]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DParen
                                          child: 
                                            (ArithBinary
                                              op_id: Arith_DEqual
                                              left: (ArithWord w:{($ VSub_Name '$CHOICE')})
                                              right: (ArithWord w:{(Lit_Digits 0)})
                                            )
                                          spids: [2376 2385]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [(C {(Write_Settings_File)}) (C {(Run_Lets_Encrypt)})]
                                  spids: [16777215 2388]
                                )
                              ]
                              spids: [16777215 2397]
                            )
                          ]
                          spids: [2317 2318 2400 16777215]
                        )
                      ]
                      spids: [2152 2158 2403]
                    )
                  ]
                  spids: [16777215 2143]
                )
              ]
              else_action: [(C {(Menu_Exit)})]
              spids: [2407 2417]
            )
          ]
          spids: [1942]
        )
      spids: [1939 1942]
    )
    (FuncDef
      name: Input_Box
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:input_value)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [2434]
                )
              ]
              spids: [2432]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:input_desc)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [2440]
                )
              ]
              spids: [2438]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OPTION)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (SimpleCommand
                                words: [
                                  {(whiptail)}
                                  {(--inputbox)}
                                  {(DQ ('Please enter your ') ($ VSub_Name '$input_desc'))}
                                  {(9)}
                                  {(50)}
                                  {(DQ ($ VSub_Name '$input_value'))}
                                  {(--title)}
                                  {(DQ ('Input ') ($ VSub_Name '$input_desc'))}
                                ]
                                redirects: [
                                  (Redir
                                    op: <Redir_GreatAnd '3>&'>
                                    fd: 3
                                    arg_word: {(1)}
                                  )
                                  (Redir
                                    op: <Redir_GreatAnd '1>&'>
                                    fd: 1
                                    arg_word: {(2)}
                                  )
                                  (Redir
                                    op: <Redir_GreatAnd '2>&'>
                                    fd: 2
                                    arg_word: {(3)}
                                  )
                                ]
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [2446 2479]
                      )
                    }
                  spids: [2445]
                )
              ]
              spids: [2445]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CHOICE)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [2482]
                )
              ]
              spids: [2482]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_DEqual
                              left: (ArithWord w:{($ VSub_Name '$CHOICE')})
                              right: (ArithWord w:{(Lit_Digits 0)})
                            )
                          spids: [2488 2497]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:input_value)
                          op: Equal
                          rhs: {($ VSub_Name '$OPTION')}
                          spids: [2503]
                        )
                      ]
                      spids: [2503]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$input_value'))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:input_value)
                                  op: Equal
                                  rhs: {(SQ <NULL>)}
                                  spids: [2527]
                                )
                              ]
                              spids: [2527]
                            )
                          ]
                          spids: [16777215 2524]
                        )
                      ]
                      spids: [16777215 2533]
                    )
                  ]
                  spids: [16777215 2500]
                )
              ]
              spids: [16777215 2536]
            )
            (C {(echo)} {(-e)} {(DQ ($ VSub_Name '$input_value'))})
          ]
          spids: [2428]
        )
      spids: [2425 2428]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_Name '$DP_SETTINGS'))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(Write_Settings_File)})]
          spids: [16777215 2584]
        )
      ]
      else_action: [(C {(Read_Settings_File)})]
      spids: [2592 2600]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DParen
                  child: 
                    (ArithUnary
                      op_id: Arith_Bang
                      child: (ArithWord w:{($ VSub_Name '$LETSENCRYPT_INSTALLED')})
                    )
                  spids: [2614 2621]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_DEqual
                              left: (ArithWord w:{($ VSub_Name '$INPUT')})
                              right: (ArithWord w:{(Lit_Digits 0)})
                            )
                          spids: [2634 2643]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(G_DIETPI-NOTIFY)} {(1)} 
                      {
                        (DQ ('Certbot binary not found ( ') ($ VSub_Name '$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: [16777215 2646]
                )
              ]
              else_action: [
                (SimpleCommand
                  words: [
                    {(echo)}
                    {(-e)}
                    {
                      (DQ ('Error: Letsencrypt binary not installed ( ') 
                        ($ VSub_Name '$DP_LETSENCRYPT_BINARY') (' ).')
                      )
                    }
                  ]
                  redirects: [
                    (Redir
                      op: <Redir_DGreat '>>'>
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_Name '$DP_LOGFILE'))}
                    )
                  ]
                )
              ]
              spids: [2680 2702]
            )
          ]
          spids: [16777215 2624]
        )
        (if_arm
          cond: [
            (Sentence
              child: 
                (DParen
                  child: 
                    (ArithBinary
                      op_id: Arith_DEqual
                      left: (ArithWord w:{($ VSub_Name '$INPUT')})
                      right: (ArithWord w:{(Lit_Digits 0)})
                    )
                  spids: [2716 2725]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (WhileUntil
              keyword: <KW_While while>
              cond: [
                (Sentence
                  child: 
                    (DParen
                      child: 
                        (ArithBinary
                          op_id: Arith_Great
                          left: (ArithWord w:{($ VSub_Name '$TARGETMENUID')})
                          right: (ArithUnary op_id:Node_UnaryMinus child:(ArithWord w:{(Lit_Digits 1)}))
                        )
                      spids: [2734 2744]
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (C {(clear)})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DParen
                                  child: 
                                    (ArithBinary
                                      op_id: Arith_DEqual
                                      left: (ArithWord w:{($ VSub_Name '$TARGETMENUID')})
                                      right: (ArithWord w:{(Lit_Digits 0)})
                                    )
                                  spids: [2761 2770]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(Menu_Main)})]
                          spids: [16777215 2773]
                        )
                      ]
                      spids: [16777215 2781]
                    )
                  ]
                  spids: [2747 2785]
                )
            )
          ]
          spids: [2714 2728]
        )
        (if_arm
          cond: [
            (Sentence
              child: 
                (DParen
                  child: 
                    (ArithBinary
                      op_id: Arith_DEqual
                      left: (ArithWord w:{($ VSub_Name '$INPUT')})
                      right: (ArithWord w:{(Lit_Digits 1)})
                    )
                  spids: [2799 2808]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(Run_Lets_Encrypt)})]
          spids: [2797 2811]
        )
      ]
      spids: [16777215 2819]
    )
    (ControlFlow token:<ControlFlow_Exit exit>)
  ]
  spids: [3]
)