HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //home/ubuntu/neovim/build/src/nvim/auto/viml/parser/expressions.c.i
# 1 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
# 50 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
# 1 "/usr/include/assert.h" 1 3 4
# 35 "/usr/include/assert.h" 3 4
# 1 "/usr/include/features.h" 1 3 4
# 461 "/usr/include/features.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 1 3 4
# 452 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 453 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/long-double.h" 1 3 4
# 454 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 2 3 4
# 462 "/usr/include/features.h" 2 3 4
# 485 "/usr/include/features.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 1 3 4




# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 6 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 2 3 4


# 1 "/usr/include/aarch64-linux-gnu/gnu/stubs-lp64.h" 1 3 4
# 9 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 2 3 4
# 486 "/usr/include/features.h" 2 3 4
# 36 "/usr/include/assert.h" 2 3 4
# 66 "/usr/include/assert.h" 3 4




# 69 "/usr/include/assert.h" 3 4
extern void __assert_fail (const char *__assertion, const char *__file,
      unsigned int __line, const char *__function)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));


extern void __assert_perror_fail (int __errnum, const char *__file,
      unsigned int __line, const char *__function)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));




extern void __assert (const char *__assertion, const char *__file, int __line)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));



# 51 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 2
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stdbool.h" 1 3 4
# 52 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 2
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 143 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 3 4
typedef long int ptrdiff_t;
# 209 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 3 4
typedef long unsigned int size_t;
# 321 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 3 4
typedef unsigned int wchar_t;
# 415 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 3 4
typedef struct {
  long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
  long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))));
# 426 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 3 4
} max_align_t;
# 53 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 2
# 1 "/usr/include/stdio.h" 1 3 4
# 27 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4
# 28 "/usr/include/stdio.h" 2 3 4





# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 34 "/usr/include/stdio.h" 2 3 4


# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stdarg.h" 1 3 4
# 40 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 37 "/usr/include/stdio.h" 2 3 4

# 1 "/usr/include/aarch64-linux-gnu/bits/types.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/types.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/timesize.h" 1 3 4
# 19 "/usr/include/aarch64-linux-gnu/bits/timesize.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 20 "/usr/include/aarch64-linux-gnu/bits/timesize.h" 2 3 4
# 29 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4


typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;


typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;

typedef signed long int __int64_t;
typedef unsigned long int __uint64_t;






typedef __int8_t __int_least8_t;
typedef __uint8_t __uint_least8_t;
typedef __int16_t __int_least16_t;
typedef __uint16_t __uint_least16_t;
typedef __int32_t __int_least32_t;
typedef __uint32_t __uint_least32_t;
typedef __int64_t __int_least64_t;
typedef __uint64_t __uint_least64_t;



typedef long int __quad_t;
typedef unsigned long int __u_quad_t;







typedef long int __intmax_t;
typedef unsigned long int __uintmax_t;
# 141 "/usr/include/aarch64-linux-gnu/bits/types.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/typesizes.h" 1 3 4
# 142 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/time64.h" 1 3 4
# 143 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4


typedef unsigned long int __dev_t;
typedef unsigned int __uid_t;
typedef unsigned int __gid_t;
typedef unsigned long int __ino_t;
typedef unsigned long int __ino64_t;
typedef unsigned int __mode_t;
typedef unsigned int __nlink_t;
typedef long int __off_t;
typedef long int __off64_t;
typedef int __pid_t;
typedef struct { int __val[2]; } __fsid_t;
typedef long int __clock_t;
typedef unsigned long int __rlim_t;
typedef unsigned long int __rlim64_t;
typedef unsigned int __id_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;

typedef int __daddr_t;
typedef int __key_t;


typedef int __clockid_t;


typedef void * __timer_t;


typedef int __blksize_t;




typedef long int __blkcnt_t;
typedef long int __blkcnt64_t;


typedef unsigned long int __fsblkcnt_t;
typedef unsigned long int __fsblkcnt64_t;


typedef unsigned long int __fsfilcnt_t;
typedef unsigned long int __fsfilcnt64_t;


typedef long int __fsword_t;

typedef long int __ssize_t;


typedef long int __syscall_slong_t;

typedef unsigned long int __syscall_ulong_t;



typedef __off64_t __loff_t;
typedef char *__caddr_t;


typedef long int __intptr_t;


typedef unsigned int __socklen_t;




typedef int __sig_atomic_t;
# 39 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/__fpos_t.h" 1 3 4




# 1 "/usr/include/aarch64-linux-gnu/bits/types/__mbstate_t.h" 1 3 4
# 13 "/usr/include/aarch64-linux-gnu/bits/types/__mbstate_t.h" 3 4
typedef struct
{
  int __count;
  union
  {
    unsigned int __wch;
    char __wchb[4];
  } __value;
} __mbstate_t;
# 6 "/usr/include/aarch64-linux-gnu/bits/types/__fpos_t.h" 2 3 4




typedef struct _G_fpos_t
{
  __off_t __pos;
  __mbstate_t __state;
} __fpos_t;
# 40 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/__fpos64_t.h" 1 3 4
# 10 "/usr/include/aarch64-linux-gnu/bits/types/__fpos64_t.h" 3 4
typedef struct _G_fpos64_t
{
  __off64_t __pos;
  __mbstate_t __state;
} __fpos64_t;
# 41 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/__FILE.h" 1 3 4



struct _IO_FILE;
typedef struct _IO_FILE __FILE;
# 42 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/FILE.h" 1 3 4



struct _IO_FILE;


typedef struct _IO_FILE FILE;
# 43 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_FILE.h" 1 3 4
# 35 "/usr/include/aarch64-linux-gnu/bits/types/struct_FILE.h" 3 4
struct _IO_FILE;
struct _IO_marker;
struct _IO_codecvt;
struct _IO_wide_data;




typedef void _IO_lock_t;





struct _IO_FILE
{
  int _flags;


  char *_IO_read_ptr;
  char *_IO_read_end;
  char *_IO_read_base;
  char *_IO_write_base;
  char *_IO_write_ptr;
  char *_IO_write_end;
  char *_IO_buf_base;
  char *_IO_buf_end;


  char *_IO_save_base;
  char *_IO_backup_base;
  char *_IO_save_end;

  struct _IO_marker *_markers;

  struct _IO_FILE *_chain;

  int _fileno;
  int _flags2;
  __off_t _old_offset;


  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];

  _IO_lock_t *_lock;







  __off64_t _offset;

  struct _IO_codecvt *_codecvt;
  struct _IO_wide_data *_wide_data;
  struct _IO_FILE *_freeres_list;
  void *_freeres_buf;
  size_t __pad5;
  int _mode;

  char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
};
# 44 "/usr/include/stdio.h" 2 3 4


# 1 "/usr/include/aarch64-linux-gnu/bits/types/cookie_io_functions_t.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/types/cookie_io_functions_t.h" 3 4
typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf,
                                          size_t __nbytes);







typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf,
                                           size_t __nbytes);







typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w);


typedef int cookie_close_function_t (void *__cookie);






typedef struct _IO_cookie_io_functions_t
{
  cookie_read_function_t *read;
  cookie_write_function_t *write;
  cookie_seek_function_t *seek;
  cookie_close_function_t *close;
} cookie_io_functions_t;
# 47 "/usr/include/stdio.h" 2 3 4





typedef __gnuc_va_list va_list;
# 63 "/usr/include/stdio.h" 3 4
typedef __off_t off_t;






typedef __off64_t off64_t;






typedef __ssize_t ssize_t;






typedef __fpos_t fpos_t;




typedef __fpos64_t fpos64_t;
# 133 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/stdio_lim.h" 1 3 4
# 134 "/usr/include/stdio.h" 2 3 4



extern FILE *stdin;
extern FILE *stdout;
extern FILE *stderr;






extern int remove (const char *__filename) __attribute__ ((__nothrow__ , __leaf__));

extern int rename (const char *__old, const char *__new) __attribute__ ((__nothrow__ , __leaf__));



extern int renameat (int __oldfd, const char *__old, int __newfd,
       const char *__new) __attribute__ ((__nothrow__ , __leaf__));
# 164 "/usr/include/stdio.h" 3 4
extern int renameat2 (int __oldfd, const char *__old, int __newfd,
        const char *__new, unsigned int __flags) __attribute__ ((__nothrow__ , __leaf__));







extern FILE *tmpfile (void) ;
# 183 "/usr/include/stdio.h" 3 4
extern FILE *tmpfile64 (void) ;



extern char *tmpnam (char *__s) __attribute__ ((__nothrow__ , __leaf__)) ;




extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__ , __leaf__)) ;
# 204 "/usr/include/stdio.h" 3 4
extern char *tempnam (const char *__dir, const char *__pfx)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) ;







extern int fclose (FILE *__stream);




extern int fflush (FILE *__stream);
# 227 "/usr/include/stdio.h" 3 4
extern int fflush_unlocked (FILE *__stream);
# 237 "/usr/include/stdio.h" 3 4
extern int fcloseall (void);
# 246 "/usr/include/stdio.h" 3 4
extern FILE *fopen (const char *__restrict __filename,
      const char *__restrict __modes) ;




extern FILE *freopen (const char *__restrict __filename,
        const char *__restrict __modes,
        FILE *__restrict __stream) ;
# 270 "/usr/include/stdio.h" 3 4
extern FILE *fopen64 (const char *__restrict __filename,
        const char *__restrict __modes) ;
extern FILE *freopen64 (const char *__restrict __filename,
   const char *__restrict __modes,
   FILE *__restrict __stream) ;




extern FILE *fdopen (int __fd, const char *__modes) __attribute__ ((__nothrow__ , __leaf__)) ;





extern FILE *fopencookie (void *__restrict __magic_cookie,
     const char *__restrict __modes,
     cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__ , __leaf__)) ;




extern FILE *fmemopen (void *__s, size_t __len, const char *__modes)
  __attribute__ ((__nothrow__ , __leaf__)) ;




extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__ , __leaf__)) ;





extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));



extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
      int __modes, size_t __n) __attribute__ ((__nothrow__ , __leaf__));




extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
         size_t __size) __attribute__ ((__nothrow__ , __leaf__));


extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));







extern int fprintf (FILE *__restrict __stream,
      const char *__restrict __format, ...);




extern int printf (const char *__restrict __format, ...);

extern int sprintf (char *__restrict __s,
      const char *__restrict __format, ...) __attribute__ ((__nothrow__));





extern int vfprintf (FILE *__restrict __s, const char *__restrict __format,
       __gnuc_va_list __arg);




extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg);

extern int vsprintf (char *__restrict __s, const char *__restrict __format,
       __gnuc_va_list __arg) __attribute__ ((__nothrow__));



extern int snprintf (char *__restrict __s, size_t __maxlen,
       const char *__restrict __format, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));

extern int vsnprintf (char *__restrict __s, size_t __maxlen,
        const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));





extern int vasprintf (char **__restrict __ptr, const char *__restrict __f,
        __gnuc_va_list __arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) ;
extern int __asprintf (char **__restrict __ptr,
         const char *__restrict __fmt, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
extern int asprintf (char **__restrict __ptr,
       const char *__restrict __fmt, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;




extern int vdprintf (int __fd, const char *__restrict __fmt,
       __gnuc_va_list __arg)
     __attribute__ ((__format__ (__printf__, 2, 0)));
extern int dprintf (int __fd, const char *__restrict __fmt, ...)
     __attribute__ ((__format__ (__printf__, 2, 3)));







extern int fscanf (FILE *__restrict __stream,
     const char *__restrict __format, ...) ;




extern int scanf (const char *__restrict __format, ...) ;

extern int sscanf (const char *__restrict __s,
     const char *__restrict __format, ...) __attribute__ ((__nothrow__ , __leaf__));






extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf")

                               ;
extern int scanf (const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf")
                              ;
extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) __asm__ ("" "__isoc99_sscanf") __attribute__ ((__nothrow__ , __leaf__))

                      ;
# 432 "/usr/include/stdio.h" 3 4
extern int vfscanf (FILE *__restrict __s, const char *__restrict __format,
      __gnuc_va_list __arg)
     __attribute__ ((__format__ (__scanf__, 2, 0))) ;





extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__format__ (__scanf__, 1, 0))) ;


extern int vsscanf (const char *__restrict __s,
      const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__scanf__, 2, 0)));




extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf")



     __attribute__ ((__format__ (__scanf__, 2, 0))) ;
extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf")

     __attribute__ ((__format__ (__scanf__, 1, 0))) ;
extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vsscanf") __attribute__ ((__nothrow__ , __leaf__))



     __attribute__ ((__format__ (__scanf__, 2, 0)));
# 485 "/usr/include/stdio.h" 3 4
extern int fgetc (FILE *__stream);
extern int getc (FILE *__stream);





extern int getchar (void);






extern int getc_unlocked (FILE *__stream);
extern int getchar_unlocked (void);
# 510 "/usr/include/stdio.h" 3 4
extern int fgetc_unlocked (FILE *__stream);
# 521 "/usr/include/stdio.h" 3 4
extern int fputc (int __c, FILE *__stream);
extern int putc (int __c, FILE *__stream);





extern int putchar (int __c);
# 537 "/usr/include/stdio.h" 3 4
extern int fputc_unlocked (int __c, FILE *__stream);







extern int putc_unlocked (int __c, FILE *__stream);
extern int putchar_unlocked (int __c);






extern int getw (FILE *__stream);


extern int putw (int __w, FILE *__stream);







extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
     ;
# 587 "/usr/include/stdio.h" 3 4
extern char *fgets_unlocked (char *__restrict __s, int __n,
        FILE *__restrict __stream) ;
# 603 "/usr/include/stdio.h" 3 4
extern __ssize_t __getdelim (char **__restrict __lineptr,
                             size_t *__restrict __n, int __delimiter,
                             FILE *__restrict __stream) ;
extern __ssize_t getdelim (char **__restrict __lineptr,
                           size_t *__restrict __n, int __delimiter,
                           FILE *__restrict __stream) ;







extern __ssize_t getline (char **__restrict __lineptr,
                          size_t *__restrict __n,
                          FILE *__restrict __stream) ;







extern int fputs (const char *__restrict __s, FILE *__restrict __stream);





extern int puts (const char *__s);






extern int ungetc (int __c, FILE *__stream);






extern size_t fread (void *__restrict __ptr, size_t __size,
       size_t __n, FILE *__restrict __stream) ;




extern size_t fwrite (const void *__restrict __ptr, size_t __size,
        size_t __n, FILE *__restrict __s);
# 662 "/usr/include/stdio.h" 3 4
extern int fputs_unlocked (const char *__restrict __s,
      FILE *__restrict __stream);
# 673 "/usr/include/stdio.h" 3 4
extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
         size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size,
          size_t __n, FILE *__restrict __stream);







extern int fseek (FILE *__stream, long int __off, int __whence);




extern long int ftell (FILE *__stream) ;




extern void rewind (FILE *__stream);
# 707 "/usr/include/stdio.h" 3 4
extern int fseeko (FILE *__stream, __off_t __off, int __whence);




extern __off_t ftello (FILE *__stream) ;
# 731 "/usr/include/stdio.h" 3 4
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);




extern int fsetpos (FILE *__stream, const fpos_t *__pos);
# 750 "/usr/include/stdio.h" 3 4
extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
extern __off64_t ftello64 (FILE *__stream) ;
extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos);



extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));

extern int feof (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;

extern int ferror (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;



extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;







extern void perror (const char *__s);





# 1 "/usr/include/aarch64-linux-gnu/bits/sys_errlist.h" 1 3 4
# 26 "/usr/include/aarch64-linux-gnu/bits/sys_errlist.h" 3 4
extern int sys_nerr;
extern const char *const sys_errlist[];


extern int _sys_nerr;
extern const char *const _sys_errlist[];
# 782 "/usr/include/stdio.h" 2 3 4




extern int fileno (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;




extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
# 800 "/usr/include/stdio.h" 3 4
extern FILE *popen (const char *__command, const char *__modes) ;





extern int pclose (FILE *__stream);





extern char *ctermid (char *__s) __attribute__ ((__nothrow__ , __leaf__));





extern char *cuserid (char *__s);




struct obstack;


extern int obstack_printf (struct obstack *__restrict __obstack,
      const char *__restrict __format, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3)));
extern int obstack_vprintf (struct obstack *__restrict __obstack,
       const char *__restrict __format,
       __gnuc_va_list __args)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0)));







extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));



extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;


extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
# 858 "/usr/include/stdio.h" 3 4
extern int __uflow (FILE *);
extern int __overflow (FILE *, int);
# 873 "/usr/include/stdio.h" 3 4

# 54 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 2
# 1 "/usr/include/stdlib.h" 1 3 4
# 25 "/usr/include/stdlib.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4
# 26 "/usr/include/stdlib.h" 2 3 4





# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 32 "/usr/include/stdlib.h" 2 3 4







# 1 "/usr/include/aarch64-linux-gnu/bits/waitflags.h" 1 3 4
# 52 "/usr/include/aarch64-linux-gnu/bits/waitflags.h" 3 4
typedef enum
{
  P_ALL,
  P_PID,
  P_PGID
} idtype_t;
# 40 "/usr/include/stdlib.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/waitstatus.h" 1 3 4
# 41 "/usr/include/stdlib.h" 2 3 4
# 55 "/usr/include/stdlib.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/long-double.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 2 3 4
# 95 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/long-double.h" 1 3 4
# 25 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 2 3 4
# 96 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 2 3 4
# 56 "/usr/include/stdlib.h" 2 3 4


typedef struct
  {
    int quot;
    int rem;
  } div_t;



typedef struct
  {
    long int quot;
    long int rem;
  } ldiv_t;





__extension__ typedef struct
  {
    long long int quot;
    long long int rem;
  } lldiv_t;
# 97 "/usr/include/stdlib.h" 3 4
extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__ , __leaf__)) ;



extern double atof (const char *__nptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;

extern int atoi (const char *__nptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;

extern long int atol (const char *__nptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;



__extension__ extern long long int atoll (const char *__nptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;



extern double strtod (const char *__restrict __nptr,
        char **__restrict __endptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern float strtof (const char *__restrict __nptr,
       char **__restrict __endptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));

extern long double strtold (const char *__restrict __nptr,
       char **__restrict __endptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 140 "/usr/include/stdlib.h" 3 4
extern _Float32 strtof32 (const char *__restrict __nptr,
     char **__restrict __endptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern _Float64 strtof64 (const char *__restrict __nptr,
     char **__restrict __endptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern _Float128 strtof128 (const char *__restrict __nptr,
       char **__restrict __endptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern _Float32x strtof32x (const char *__restrict __nptr,
       char **__restrict __endptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern _Float64x strtof64x (const char *__restrict __nptr,
       char **__restrict __endptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 176 "/usr/include/stdlib.h" 3 4
extern long int strtol (const char *__restrict __nptr,
   char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));

extern unsigned long int strtoul (const char *__restrict __nptr,
      char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



__extension__
extern long long int strtoq (const char *__restrict __nptr,
        char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));

__extension__
extern unsigned long long int strtouq (const char *__restrict __nptr,
           char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));




__extension__
extern long long int strtoll (const char *__restrict __nptr,
         char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));

__extension__
extern unsigned long long int strtoull (const char *__restrict __nptr,
     char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));




extern int strfromd (char *__dest, size_t __size, const char *__format,
       double __f)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));

extern int strfromf (char *__dest, size_t __size, const char *__format,
       float __f)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));

extern int strfroml (char *__dest, size_t __size, const char *__format,
       long double __f)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
# 232 "/usr/include/stdlib.h" 3 4
extern int strfromf32 (char *__dest, size_t __size, const char * __format,
         _Float32 __f)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));



extern int strfromf64 (char *__dest, size_t __size, const char * __format,
         _Float64 __f)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));



extern int strfromf128 (char *__dest, size_t __size, const char * __format,
   _Float128 __f)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));



extern int strfromf32x (char *__dest, size_t __size, const char * __format,
   _Float32x __f)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));



extern int strfromf64x (char *__dest, size_t __size, const char * __format,
   _Float64x __f)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
# 272 "/usr/include/stdlib.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/locale_t.h" 1 3 4
# 22 "/usr/include/aarch64-linux-gnu/bits/types/locale_t.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/__locale_t.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/bits/types/__locale_t.h" 3 4
struct __locale_struct
{

  struct __locale_data *__locales[13];


  const unsigned short int *__ctype_b;
  const int *__ctype_tolower;
  const int *__ctype_toupper;


  const char *__names[13];
};

typedef struct __locale_struct *__locale_t;
# 23 "/usr/include/aarch64-linux-gnu/bits/types/locale_t.h" 2 3 4

typedef __locale_t locale_t;
# 273 "/usr/include/stdlib.h" 2 3 4

extern long int strtol_l (const char *__restrict __nptr,
     char **__restrict __endptr, int __base,
     locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4)));

extern unsigned long int strtoul_l (const char *__restrict __nptr,
        char **__restrict __endptr,
        int __base, locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4)));

__extension__
extern long long int strtoll_l (const char *__restrict __nptr,
    char **__restrict __endptr, int __base,
    locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4)));

__extension__
extern unsigned long long int strtoull_l (const char *__restrict __nptr,
       char **__restrict __endptr,
       int __base, locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4)));

extern double strtod_l (const char *__restrict __nptr,
   char **__restrict __endptr, locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));

extern float strtof_l (const char *__restrict __nptr,
         char **__restrict __endptr, locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));

extern long double strtold_l (const char *__restrict __nptr,
         char **__restrict __endptr,
         locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
# 316 "/usr/include/stdlib.h" 3 4
extern _Float32 strtof32_l (const char *__restrict __nptr,
       char **__restrict __endptr,
       locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));



extern _Float64 strtof64_l (const char *__restrict __nptr,
       char **__restrict __endptr,
       locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));



extern _Float128 strtof128_l (const char *__restrict __nptr,
         char **__restrict __endptr,
         locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));



extern _Float32x strtof32x_l (const char *__restrict __nptr,
         char **__restrict __endptr,
         locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));



extern _Float64x strtof64x_l (const char *__restrict __nptr,
         char **__restrict __endptr,
         locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
# 385 "/usr/include/stdlib.h" 3 4
extern char *l64a (long int __n) __attribute__ ((__nothrow__ , __leaf__)) ;


extern long int a64l (const char *__s)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;




# 1 "/usr/include/aarch64-linux-gnu/sys/types.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4






typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;


typedef __loff_t loff_t;




typedef __ino_t ino_t;






typedef __ino64_t ino64_t;




typedef __dev_t dev_t;




typedef __gid_t gid_t;




typedef __mode_t mode_t;




typedef __nlink_t nlink_t;




typedef __uid_t uid_t;
# 97 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4
typedef __pid_t pid_t;





typedef __id_t id_t;
# 114 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4
typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;





typedef __key_t key_t;




# 1 "/usr/include/aarch64-linux-gnu/bits/types/clock_t.h" 1 3 4






typedef __clock_t clock_t;
# 127 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4

# 1 "/usr/include/aarch64-linux-gnu/bits/types/clockid_t.h" 1 3 4






typedef __clockid_t clockid_t;
# 129 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/time_t.h" 1 3 4






typedef __time_t time_t;
# 130 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/timer_t.h" 1 3 4






typedef __timer_t timer_t;
# 131 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4



typedef __useconds_t useconds_t;



typedef __suseconds_t suseconds_t;





# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 145 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4



typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;




# 1 "/usr/include/aarch64-linux-gnu/bits/stdint-intn.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/stdint-intn.h" 3 4
typedef __int8_t int8_t;
typedef __int16_t int16_t;
typedef __int32_t int32_t;
typedef __int64_t int64_t;
# 156 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4


typedef __uint8_t u_int8_t;
typedef __uint16_t u_int16_t;
typedef __uint32_t u_int32_t;
typedef __uint64_t u_int64_t;


typedef int register_t __attribute__ ((__mode__ (__word__)));
# 176 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4
# 1 "/usr/include/endian.h" 1 3 4
# 24 "/usr/include/endian.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/endian.h" 1 3 4
# 35 "/usr/include/aarch64-linux-gnu/bits/endian.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/endianness.h" 1 3 4
# 36 "/usr/include/aarch64-linux-gnu/bits/endian.h" 2 3 4
# 25 "/usr/include/endian.h" 2 3 4
# 35 "/usr/include/endian.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 1 3 4
# 33 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 3 4
static __inline __uint16_t
__bswap_16 (__uint16_t __bsx)
{

  return __builtin_bswap16 (__bsx);



}






static __inline __uint32_t
__bswap_32 (__uint32_t __bsx)
{

  return __builtin_bswap32 (__bsx);



}
# 69 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 3 4
__extension__ static __inline __uint64_t
__bswap_64 (__uint64_t __bsx)
{

  return __builtin_bswap64 (__bsx);



}
# 36 "/usr/include/endian.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/uintn-identity.h" 1 3 4
# 32 "/usr/include/aarch64-linux-gnu/bits/uintn-identity.h" 3 4
static __inline __uint16_t
__uint16_identity (__uint16_t __x)
{
  return __x;
}

static __inline __uint32_t
__uint32_identity (__uint32_t __x)
{
  return __x;
}

static __inline __uint64_t
__uint64_identity (__uint64_t __x)
{
  return __x;
}
# 37 "/usr/include/endian.h" 2 3 4
# 177 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4


# 1 "/usr/include/aarch64-linux-gnu/sys/select.h" 1 3 4
# 30 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/select.h" 1 3 4
# 31 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4


# 1 "/usr/include/aarch64-linux-gnu/bits/types/sigset_t.h" 1 3 4



# 1 "/usr/include/aarch64-linux-gnu/bits/types/__sigset_t.h" 1 3 4




typedef struct
{
  unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
} __sigset_t;
# 5 "/usr/include/aarch64-linux-gnu/bits/types/sigset_t.h" 2 3 4


typedef __sigset_t sigset_t;
# 34 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4



# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_timeval.h" 1 3 4







struct timeval
{
  __time_t tv_sec;
  __suseconds_t tv_usec;
};
# 38 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4

# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_timespec.h" 1 3 4
# 10 "/usr/include/aarch64-linux-gnu/bits/types/struct_timespec.h" 3 4
struct timespec
{
  __time_t tv_sec;



  __syscall_slong_t tv_nsec;
# 26 "/usr/include/aarch64-linux-gnu/bits/types/struct_timespec.h" 3 4
};
# 40 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4
# 49 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4
typedef long int __fd_mask;
# 59 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4
typedef struct
  {



    __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))];





  } fd_set;






typedef __fd_mask fd_mask;
# 91 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4

# 101 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4
extern int select (int __nfds, fd_set *__restrict __readfds,
     fd_set *__restrict __writefds,
     fd_set *__restrict __exceptfds,
     struct timeval *__restrict __timeout);
# 113 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4
extern int pselect (int __nfds, fd_set *__restrict __readfds,
      fd_set *__restrict __writefds,
      fd_set *__restrict __exceptfds,
      const struct timespec *__restrict __timeout,
      const __sigset_t *__restrict __sigmask);
# 126 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4

# 180 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4





typedef __blksize_t blksize_t;






typedef __blkcnt_t blkcnt_t;



typedef __fsblkcnt_t fsblkcnt_t;



typedef __fsfilcnt_t fsfilcnt_t;
# 219 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4
typedef __blkcnt64_t blkcnt64_t;
typedef __fsblkcnt64_t fsblkcnt64_t;
typedef __fsfilcnt64_t fsfilcnt64_t;





# 1 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 1 3 4
# 44 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes-arch.h" 1 3 4
# 45 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 2 3 4




typedef struct __pthread_internal_list
{
  struct __pthread_internal_list *__prev;
  struct __pthread_internal_list *__next;
} __pthread_list_t;

typedef struct __pthread_internal_slist
{
  struct __pthread_internal_slist *__next;
} __pthread_slist_t;
# 74 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/struct_mutex.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/struct_mutex.h" 3 4
struct __pthread_mutex_s
{
  int __lock ;
  unsigned int __count;
  int __owner;

  unsigned int __nusers;
# 58 "/usr/include/aarch64-linux-gnu/bits/struct_mutex.h" 3 4
  int __kind;




  int __spins;
  __pthread_list_t __list;
# 74 "/usr/include/aarch64-linux-gnu/bits/struct_mutex.h" 3 4
};
# 75 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 2 3 4
# 87 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/struct_rwlock.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/struct_rwlock.h" 3 4
struct __pthread_rwlock_arch_t
{
  unsigned int __readers;
  unsigned int __writers;
  unsigned int __wrphase_futex;
  unsigned int __writers_futex;
  unsigned int __pad3;
  unsigned int __pad4;
  int __cur_writer;
  int __shared;
  unsigned long int __pad1;
  unsigned long int __pad2;
  unsigned int __flags;
};
# 88 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 2 3 4




struct __pthread_cond_s
{
  __extension__ union
  {
    __extension__ unsigned long long int __wseq;
    struct
    {
      unsigned int __low;
      unsigned int __high;
    } __wseq32;
  };
  __extension__ union
  {
    __extension__ unsigned long long int __g1_start;
    struct
    {
      unsigned int __low;
      unsigned int __high;
    } __g1_start32;
  };
  unsigned int __g_refs[2] ;
  unsigned int __g_size[2];
  unsigned int __g1_orig_size;
  unsigned int __wrefs;
  unsigned int __g_signals[2];
};
# 24 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h" 2 3 4



typedef unsigned long int pthread_t;




typedef union
{
  char __size[8];
  int __align;
} pthread_mutexattr_t;




typedef union
{
  char __size[8];
  int __align;
} pthread_condattr_t;



typedef unsigned int pthread_key_t;



typedef int pthread_once_t;


union pthread_attr_t
{
  char __size[64];
  long int __align;
};

typedef union pthread_attr_t pthread_attr_t;




typedef union
{
  struct __pthread_mutex_s __data;
  char __size[48];
  long int __align;
} pthread_mutex_t;


typedef union
{
  struct __pthread_cond_s __data;
  char __size[48];
  __extension__ long long int __align;
} pthread_cond_t;





typedef union
{
  struct __pthread_rwlock_arch_t __data;
  char __size[56];
  long int __align;
} pthread_rwlock_t;

typedef union
{
  char __size[8];
  long int __align;
} pthread_rwlockattr_t;





typedef volatile int pthread_spinlock_t;




typedef union
{
  char __size[32];
  long int __align;
} pthread_barrier_t;

typedef union
{
  char __size[8];
  int __align;
} pthread_barrierattr_t;
# 228 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4



# 395 "/usr/include/stdlib.h" 2 3 4






extern long int random (void) __attribute__ ((__nothrow__ , __leaf__));


extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__ , __leaf__));





extern char *initstate (unsigned int __seed, char *__statebuf,
   size_t __statelen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));



extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));







struct random_data
  {
    int32_t *fptr;
    int32_t *rptr;
    int32_t *state;
    int rand_type;
    int rand_deg;
    int rand_sep;
    int32_t *end_ptr;
  };

extern int random_r (struct random_data *__restrict __buf,
       int32_t *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));

extern int srandom_r (unsigned int __seed, struct random_data *__buf)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));

extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
   size_t __statelen,
   struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4)));

extern int setstate_r (char *__restrict __statebuf,
         struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));





extern int rand (void) __attribute__ ((__nothrow__ , __leaf__));

extern void srand (unsigned int __seed) __attribute__ ((__nothrow__ , __leaf__));



extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__ , __leaf__));







extern double drand48 (void) __attribute__ ((__nothrow__ , __leaf__));
extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern long int lrand48 (void) __attribute__ ((__nothrow__ , __leaf__));
extern long int nrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern long int mrand48 (void) __attribute__ ((__nothrow__ , __leaf__));
extern long int jrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern void srand48 (long int __seedval) __attribute__ ((__nothrow__ , __leaf__));
extern unsigned short int *seed48 (unsigned short int __seed16v[3])
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





struct drand48_data
  {
    unsigned short int __x[3];
    unsigned short int __old_x[3];
    unsigned short int __c;
    unsigned short int __init;
    __extension__ unsigned long long int __a;

  };


extern int drand48_r (struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int erand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int lrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int nrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int mrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int jrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));

extern int seed48_r (unsigned short int __seed16v[3],
       struct drand48_data *__buffer) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));

extern int lcong48_r (unsigned short int __param[7],
        struct drand48_data *__buffer)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));




extern void *malloc (size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__))
     __attribute__ ((__alloc_size__ (1))) ;

extern void *calloc (size_t __nmemb, size_t __size)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) ;






extern void *realloc (void *__ptr, size_t __size)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2)));







extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__))
     __attribute__ ((__alloc_size__ (2, 3)));



extern void free (void *__ptr) __attribute__ ((__nothrow__ , __leaf__));


# 1 "/usr/include/alloca.h" 1 3 4
# 24 "/usr/include/alloca.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 25 "/usr/include/alloca.h" 2 3 4







extern void *alloca (size_t __size) __attribute__ ((__nothrow__ , __leaf__));






# 569 "/usr/include/stdlib.h" 2 3 4





extern void *valloc (size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__))
     __attribute__ ((__alloc_size__ (1))) ;




extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;




extern void *aligned_alloc (size_t __alignment, size_t __size)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (2))) ;



extern void abort (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));



extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));







extern int at_quick_exit (void (*__func) (void)) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));






extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern void exit (int __status) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));





extern void quick_exit (int __status) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));





extern void _Exit (int __status) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));




extern char *getenv (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;




extern char *secure_getenv (const char *__name)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;






extern int putenv (char *__string) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern int setenv (const char *__name, const char *__value, int __replace)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));


extern int unsetenv (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));






extern int clearenv (void) __attribute__ ((__nothrow__ , __leaf__));
# 675 "/usr/include/stdlib.h" 3 4
extern char *mktemp (char *__template) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 688 "/usr/include/stdlib.h" 3 4
extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
# 698 "/usr/include/stdlib.h" 3 4
extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
# 710 "/usr/include/stdlib.h" 3 4
extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) ;
# 720 "/usr/include/stdlib.h" 3 4
extern int mkstemps64 (char *__template, int __suffixlen)
     __attribute__ ((__nonnull__ (1))) ;
# 731 "/usr/include/stdlib.h" 3 4
extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
# 742 "/usr/include/stdlib.h" 3 4
extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ;
# 752 "/usr/include/stdlib.h" 3 4
extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ;
# 762 "/usr/include/stdlib.h" 3 4
extern int mkostemps (char *__template, int __suffixlen, int __flags)
     __attribute__ ((__nonnull__ (1))) ;
# 774 "/usr/include/stdlib.h" 3 4
extern int mkostemps64 (char *__template, int __suffixlen, int __flags)
     __attribute__ ((__nonnull__ (1))) ;
# 784 "/usr/include/stdlib.h" 3 4
extern int system (const char *__command) ;





extern char *canonicalize_file_name (const char *__name)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
# 800 "/usr/include/stdlib.h" 3 4
extern char *realpath (const char *__restrict __name,
         char *__restrict __resolved) __attribute__ ((__nothrow__ , __leaf__)) ;






typedef int (*__compar_fn_t) (const void *, const void *);


typedef __compar_fn_t comparison_fn_t;



typedef int (*__compar_d_fn_t) (const void *, const void *, void *);




extern void *bsearch (const void *__key, const void *__base,
        size_t __nmemb, size_t __size, __compar_fn_t __compar)
     __attribute__ ((__nonnull__ (1, 2, 5))) ;







extern void qsort (void *__base, size_t __nmemb, size_t __size,
     __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));

extern void qsort_r (void *__base, size_t __nmemb, size_t __size,
       __compar_d_fn_t __compar, void *__arg)
  __attribute__ ((__nonnull__ (1, 4)));




extern int abs (int __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;
extern long int labs (long int __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;


__extension__ extern long long int llabs (long long int __x)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;






extern div_t div (int __numer, int __denom)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;
extern ldiv_t ldiv (long int __numer, long int __denom)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;


__extension__ extern lldiv_t lldiv (long long int __numer,
        long long int __denom)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;
# 872 "/usr/include/stdlib.h" 3 4
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) ;




extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) ;




extern char *gcvt (double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))) ;




extern char *qecvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qfcvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qgcvt (long double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))) ;




extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5)));

extern int qecvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int qfcvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5)));





extern int mblen (const char *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__));


extern int mbtowc (wchar_t *__restrict __pwc,
     const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__ , __leaf__));


extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__ , __leaf__));



extern size_t mbstowcs (wchar_t *__restrict __pwcs,
   const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__ , __leaf__));

extern size_t wcstombs (char *__restrict __s,
   const wchar_t *__restrict __pwcs, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__));







extern int rpmatch (const char *__response) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
# 957 "/usr/include/stdlib.h" 3 4
extern int getsubopt (char **__restrict __optionp,
        char *const *__restrict __tokens,
        char **__restrict __valuep)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3))) ;







extern int posix_openpt (int __oflag) ;







extern int grantpt (int __fd) __attribute__ ((__nothrow__ , __leaf__));



extern int unlockpt (int __fd) __attribute__ ((__nothrow__ , __leaf__));




extern char *ptsname (int __fd) __attribute__ ((__nothrow__ , __leaf__)) ;






extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));


extern int getpt (void);






extern int getloadavg (double __loadavg[], int __nelem)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 1013 "/usr/include/stdlib.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/stdlib-float.h" 1 3 4
# 1014 "/usr/include/stdlib.h" 2 3 4
# 1023 "/usr/include/stdlib.h" 3 4

# 55 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 2
# 1 "/usr/include/string.h" 1 3 4
# 26 "/usr/include/string.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4
# 27 "/usr/include/string.h" 2 3 4






# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 34 "/usr/include/string.h" 2 3 4
# 43 "/usr/include/string.h" 3 4
extern void *memcpy (void *__restrict __dest, const void *__restrict __src,
       size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern void *memmove (void *__dest, const void *__src, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));





extern void *memccpy (void *__restrict __dest, const void *__restrict __src,
        int __c, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));




extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int memcmp (const void *__s1, const void *__s2, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 91 "/usr/include/string.h" 3 4
extern void *memchr (const void *__s, int __c, size_t __n)
      __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 104 "/usr/include/string.h" 3 4
extern void *rawmemchr (const void *__s, int __c)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 115 "/usr/include/string.h" 3 4
extern void *memrchr (const void *__s, int __c, size_t __n)
      __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));





extern char *strcpy (char *__restrict __dest, const char *__restrict __src)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));

extern char *strncpy (char *__restrict __dest,
        const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern char *strcat (char *__restrict __dest, const char *__restrict __src)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));

extern char *strncat (char *__restrict __dest, const char *__restrict __src,
        size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strcmp (const char *__s1, const char *__s2)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));

extern int strncmp (const char *__s1, const char *__s2, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strcoll (const char *__s1, const char *__s2)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));

extern size_t strxfrm (char *__restrict __dest,
         const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));






extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));


extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n,
    locale_t __l) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4)));





extern char *strdup (const char *__s)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));






extern char *strndup (const char *__string, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
# 226 "/usr/include/string.h" 3 4
extern char *strchr (const char *__s, int __c)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 253 "/usr/include/string.h" 3 4
extern char *strrchr (const char *__s, int __c)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 266 "/usr/include/string.h" 3 4
extern char *strchrnul (const char *__s, int __c)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));





extern size_t strcspn (const char *__s, const char *__reject)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern size_t strspn (const char *__s, const char *__accept)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 303 "/usr/include/string.h" 3 4
extern char *strpbrk (const char *__s, const char *__accept)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 330 "/usr/include/string.h" 3 4
extern char *strstr (const char *__haystack, const char *__needle)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));




extern char *strtok (char *__restrict __s, const char *__restrict __delim)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));



extern char *__strtok_r (char *__restrict __s,
    const char *__restrict __delim,
    char **__restrict __save_ptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));

extern char *strtok_r (char *__restrict __s, const char *__restrict __delim,
         char **__restrict __save_ptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
# 360 "/usr/include/string.h" 3 4
extern char *strcasestr (const char *__haystack, const char *__needle)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));







extern void *memmem (const void *__haystack, size_t __haystacklen,
       const void *__needle, size_t __needlelen)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));



extern void *__mempcpy (void *__restrict __dest,
   const void *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *mempcpy (void *__restrict __dest,
        const void *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));




extern size_t strlen (const char *__s)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));




extern size_t strnlen (const char *__string, size_t __maxlen)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));




extern char *strerror (int __errnum) __attribute__ ((__nothrow__ , __leaf__));
# 421 "/usr/include/string.h" 3 4
extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) ;





extern char *strerror_l (int __errnum, locale_t __l) __attribute__ ((__nothrow__ , __leaf__));



# 1 "/usr/include/strings.h" 1 3 4
# 23 "/usr/include/strings.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 24 "/usr/include/strings.h" 2 3 4










extern int bcmp (const void *__s1, const void *__s2, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern void bcopy (const void *__src, void *__dest, size_t __n)
  __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 68 "/usr/include/strings.h" 3 4
extern char *index (const char *__s, int __c)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 96 "/usr/include/strings.h" 3 4
extern char *rindex (const char *__s, int __c)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));






extern int ffs (int __i) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));





extern int ffsl (long int __l) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
__extension__ extern int ffsll (long long int __ll)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));



extern int strcasecmp (const char *__s1, const char *__s2)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strncasecmp (const char *__s1, const char *__s2, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));






extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));



extern int strncasecmp_l (const char *__s1, const char *__s2,
     size_t __n, locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));



# 433 "/usr/include/string.h" 2 3 4



extern void explicit_bzero (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern char *strsep (char **__restrict __stringp,
       const char *__restrict __delim)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));




extern char *strsignal (int __sig) __attribute__ ((__nothrow__ , __leaf__));


extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *stpcpy (char *__restrict __dest, const char *__restrict __src)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));



extern char *__stpncpy (char *__restrict __dest,
   const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *stpncpy (char *__restrict __dest,
        const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));




extern int strverscmp (const char *__s1, const char *__s2)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern char *strfry (char *__string) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 487 "/usr/include/string.h" 3 4
extern char *basename (const char *__filename) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 499 "/usr/include/string.h" 3 4

# 56 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 2

# 1 "/home/ubuntu/neovim/src/klib/kvec.h" 1
# 43 "/home/ubuntu/neovim/src/klib/kvec.h"
# 1 "/home/ubuntu/neovim/src/nvim/memory.h" 1
       


# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stdint.h" 1 3 4
# 9 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stdint.h" 3 4
# 1 "/usr/include/stdint.h" 1 3 4
# 26 "/usr/include/stdint.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4
# 27 "/usr/include/stdint.h" 2 3 4

# 1 "/usr/include/aarch64-linux-gnu/bits/wchar.h" 1 3 4
# 29 "/usr/include/stdint.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 30 "/usr/include/stdint.h" 2 3 4







# 1 "/usr/include/aarch64-linux-gnu/bits/stdint-uintn.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/stdint-uintn.h" 3 4
typedef __uint8_t uint8_t;
typedef __uint16_t uint16_t;
typedef __uint32_t uint32_t;
typedef __uint64_t uint64_t;
# 38 "/usr/include/stdint.h" 2 3 4





typedef __int_least8_t int_least8_t;
typedef __int_least16_t int_least16_t;
typedef __int_least32_t int_least32_t;
typedef __int_least64_t int_least64_t;


typedef __uint_least8_t uint_least8_t;
typedef __uint_least16_t uint_least16_t;
typedef __uint_least32_t uint_least32_t;
typedef __uint_least64_t uint_least64_t;





typedef signed char int_fast8_t;

typedef long int int_fast16_t;
typedef long int int_fast32_t;
typedef long int int_fast64_t;
# 71 "/usr/include/stdint.h" 3 4
typedef unsigned char uint_fast8_t;

typedef unsigned long int uint_fast16_t;
typedef unsigned long int uint_fast32_t;
typedef unsigned long int uint_fast64_t;
# 87 "/usr/include/stdint.h" 3 4
typedef long int intptr_t;


typedef unsigned long int uintptr_t;
# 101 "/usr/include/stdint.h" 3 4
typedef __intmax_t intmax_t;
typedef __uintmax_t uintmax_t;
# 10 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stdint.h" 2 3 4
# 5 "/home/ubuntu/neovim/src/nvim/memory.h" 2
# 1 "/usr/include/time.h" 1 3 4
# 29 "/usr/include/time.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 30 "/usr/include/time.h" 2 3 4



# 1 "/usr/include/aarch64-linux-gnu/bits/time.h" 1 3 4
# 73 "/usr/include/aarch64-linux-gnu/bits/time.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/timex.h" 1 3 4
# 26 "/usr/include/aarch64-linux-gnu/bits/timex.h" 3 4
struct timex
{
  unsigned int modes;
  __syscall_slong_t offset;
  __syscall_slong_t freq;
  __syscall_slong_t maxerror;
  __syscall_slong_t esterror;
  int status;
  __syscall_slong_t constant;
  __syscall_slong_t precision;
  __syscall_slong_t tolerance;
  struct timeval time;
  __syscall_slong_t tick;
  __syscall_slong_t ppsfreq;
  __syscall_slong_t jitter;
  int shift;
  __syscall_slong_t stabil;
  __syscall_slong_t jitcnt;
  __syscall_slong_t calcnt;
  __syscall_slong_t errcnt;
  __syscall_slong_t stbcnt;

  int tai;


  int :32; int :32; int :32; int :32;
  int :32; int :32; int :32; int :32;
  int :32; int :32; int :32;
};
# 74 "/usr/include/aarch64-linux-gnu/bits/time.h" 2 3 4




extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __attribute__ ((__nothrow__ , __leaf__));


# 34 "/usr/include/time.h" 2 3 4





# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_tm.h" 1 3 4






struct tm
{
  int tm_sec;
  int tm_min;
  int tm_hour;
  int tm_mday;
  int tm_mon;
  int tm_year;
  int tm_wday;
  int tm_yday;
  int tm_isdst;


  long int tm_gmtoff;
  const char *tm_zone;




};
# 40 "/usr/include/time.h" 2 3 4
# 48 "/usr/include/time.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_itimerspec.h" 1 3 4







struct itimerspec
  {
    struct timespec it_interval;
    struct timespec it_value;
  };
# 49 "/usr/include/time.h" 2 3 4
struct sigevent;
# 68 "/usr/include/time.h" 3 4




extern clock_t clock (void) __attribute__ ((__nothrow__ , __leaf__));


extern time_t time (time_t *__timer) __attribute__ ((__nothrow__ , __leaf__));


extern double difftime (time_t __time1, time_t __time0)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));


extern time_t mktime (struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__));





extern size_t strftime (char *__restrict __s, size_t __maxsize,
   const char *__restrict __format,
   const struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__));




extern char *strptime (const char *__restrict __s,
         const char *__restrict __fmt, struct tm *__tp)
     __attribute__ ((__nothrow__ , __leaf__));






extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
     const char *__restrict __format,
     const struct tm *__restrict __tp,
     locale_t __loc) __attribute__ ((__nothrow__ , __leaf__));



extern char *strptime_l (const char *__restrict __s,
    const char *__restrict __fmt, struct tm *__tp,
    locale_t __loc) __attribute__ ((__nothrow__ , __leaf__));





extern struct tm *gmtime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__));



extern struct tm *localtime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__));




extern struct tm *gmtime_r (const time_t *__restrict __timer,
       struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__));



extern struct tm *localtime_r (const time_t *__restrict __timer,
          struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__));




extern char *asctime (const struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__));


extern char *ctime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__));






extern char *asctime_r (const struct tm *__restrict __tp,
   char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));


extern char *ctime_r (const time_t *__restrict __timer,
        char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));




extern char *__tzname[2];
extern int __daylight;
extern long int __timezone;




extern char *tzname[2];



extern void tzset (void) __attribute__ ((__nothrow__ , __leaf__));



extern int daylight;
extern long int timezone;
# 190 "/usr/include/time.h" 3 4
extern time_t timegm (struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__));


extern time_t timelocal (struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__));


extern int dysize (int __year) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
# 205 "/usr/include/time.h" 3 4
extern int nanosleep (const struct timespec *__requested_time,
        struct timespec *__remaining);



extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __attribute__ ((__nothrow__ , __leaf__));


extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __attribute__ ((__nothrow__ , __leaf__));


extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
     __attribute__ ((__nothrow__ , __leaf__));






extern int clock_nanosleep (clockid_t __clock_id, int __flags,
       const struct timespec *__req,
       struct timespec *__rem);


extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __attribute__ ((__nothrow__ , __leaf__));




extern int timer_create (clockid_t __clock_id,
    struct sigevent *__restrict __evp,
    timer_t *__restrict __timerid) __attribute__ ((__nothrow__ , __leaf__));


extern int timer_delete (timer_t __timerid) __attribute__ ((__nothrow__ , __leaf__));


extern int timer_settime (timer_t __timerid, int __flags,
     const struct itimerspec *__restrict __value,
     struct itimerspec *__restrict __ovalue) __attribute__ ((__nothrow__ , __leaf__));


extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
     __attribute__ ((__nothrow__ , __leaf__));


extern int timer_getoverrun (timer_t __timerid) __attribute__ ((__nothrow__ , __leaf__));





extern int timespec_get (struct timespec *__ts, int __base)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 274 "/usr/include/time.h" 3 4
extern int getdate_err;
# 283 "/usr/include/time.h" 3 4
extern struct tm *getdate (const char *__string);
# 297 "/usr/include/time.h" 3 4
extern int getdate_r (const char *__restrict __string,
        struct tm *__restrict __resbufp);



# 6 "/home/ubuntu/neovim/src/nvim/memory.h" 2

# 1 "/home/ubuntu/neovim/build/cmake.config/auto/config.h" 1
       
# 8 "/home/ubuntu/neovim/src/nvim/memory.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/macros_defs.h" 1
       
# 9 "/home/ubuntu/neovim/src/nvim/memory.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/memory_defs.h" 1
       

# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/memory_defs.h" 2


# 5 "/home/ubuntu/neovim/src/nvim/memory_defs.h"
typedef struct consumed_blk {
  struct consumed_blk *prev;
} *ArenaMem;

typedef struct {
  char *cur_blk;
  size_t pos, size;
} Arena;
# 10 "/home/ubuntu/neovim/src/nvim/memory.h" 2


typedef void *(*MemMalloc)(size_t);


typedef void (*MemFree)(void *);


typedef void *(*MemCalloc)(size_t, size_t);


typedef void *(*MemRealloc)(void *, size_t);
# 42 "/home/ubuntu/neovim/src/nvim/memory.h"
extern size_t arena_alloc_count ;
# 44 "/home/ubuntu/neovim/src/klib/kvec.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/os/os_defs.h" 1
       

# 1 "/usr/include/ctype.h" 1 3 4
# 28 "/usr/include/ctype.h" 3 4

# 46 "/usr/include/ctype.h" 3 4

# 46 "/usr/include/ctype.h" 3 4
enum
{
  _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
  _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
  _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
  _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
  _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
  _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
  _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
  _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
  _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
  _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
  _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
  _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
};
# 79 "/usr/include/ctype.h" 3 4
extern const unsigned short int **__ctype_b_loc (void)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern const __int32_t **__ctype_tolower_loc (void)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern const __int32_t **__ctype_toupper_loc (void)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
# 108 "/usr/include/ctype.h" 3 4
extern int isalnum (int) __attribute__ ((__nothrow__ , __leaf__));
extern int isalpha (int) __attribute__ ((__nothrow__ , __leaf__));
extern int iscntrl (int) __attribute__ ((__nothrow__ , __leaf__));
extern int isdigit (int) __attribute__ ((__nothrow__ , __leaf__));
extern int islower (int) __attribute__ ((__nothrow__ , __leaf__));
extern int isgraph (int) __attribute__ ((__nothrow__ , __leaf__));
extern int isprint (int) __attribute__ ((__nothrow__ , __leaf__));
extern int ispunct (int) __attribute__ ((__nothrow__ , __leaf__));
extern int isspace (int) __attribute__ ((__nothrow__ , __leaf__));
extern int isupper (int) __attribute__ ((__nothrow__ , __leaf__));
extern int isxdigit (int) __attribute__ ((__nothrow__ , __leaf__));



extern int tolower (int __c) __attribute__ ((__nothrow__ , __leaf__));


extern int toupper (int __c) __attribute__ ((__nothrow__ , __leaf__));




extern int isblank (int) __attribute__ ((__nothrow__ , __leaf__));




extern int isctype (int __c, int __mask) __attribute__ ((__nothrow__ , __leaf__));






extern int isascii (int __c) __attribute__ ((__nothrow__ , __leaf__));



extern int toascii (int __c) __attribute__ ((__nothrow__ , __leaf__));



extern int _toupper (int) __attribute__ ((__nothrow__ , __leaf__));
extern int _tolower (int) __attribute__ ((__nothrow__ , __leaf__));
# 251 "/usr/include/ctype.h" 3 4
extern int isalnum_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int isalpha_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int iscntrl_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int isdigit_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int islower_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int isgraph_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int isprint_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int ispunct_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int isspace_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int isupper_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int isxdigit_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));

extern int isblank_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));



extern int __tolower_l (int __c, locale_t __l) __attribute__ ((__nothrow__ , __leaf__));
extern int tolower_l (int __c, locale_t __l) __attribute__ ((__nothrow__ , __leaf__));


extern int __toupper_l (int __c, locale_t __l) __attribute__ ((__nothrow__ , __leaf__));
extern int toupper_l (int __c, locale_t __l) __attribute__ ((__nothrow__ , __leaf__));
# 327 "/usr/include/ctype.h" 3 4

# 4 "/home/ubuntu/neovim/src/nvim/os/os_defs.h" 2


# 1 "/usr/include/aarch64-linux-gnu/sys/stat.h" 1 3 4
# 99 "/usr/include/aarch64-linux-gnu/sys/stat.h" 3 4


# 1 "/usr/include/aarch64-linux-gnu/bits/stat.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/stat.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/bits/stat.h" 2 3 4
# 58 "/usr/include/aarch64-linux-gnu/bits/stat.h" 3 4
struct stat
  {
    __dev_t st_dev;
    __ino_t st_ino;
    __mode_t st_mode;
    __nlink_t st_nlink;
    __uid_t st_uid;
    __gid_t st_gid;
    __dev_t st_rdev;
    __dev_t __pad1;
    __off_t st_size;
    __blksize_t st_blksize;
    int __pad2;
    __blkcnt_t st_blocks;







    struct timespec st_atim;
    struct timespec st_mtim;
    struct timespec st_ctim;
# 93 "/usr/include/aarch64-linux-gnu/bits/stat.h" 3 4
    int __glibc_reserved[2];
  };




struct stat64
  {
    __dev_t st_dev;
    __ino64_t st_ino;
    __mode_t st_mode;
    __nlink_t st_nlink;
    __uid_t st_uid;
    __gid_t st_gid;
    __dev_t st_rdev;
    __dev_t __pad1;
    __off64_t st_size;
    __blksize_t st_blksize;
    int __pad2;
    __blkcnt64_t st_blocks;







    struct timespec st_atim;
    struct timespec st_mtim;
    struct timespec st_ctim;
# 131 "/usr/include/aarch64-linux-gnu/bits/stat.h" 3 4
    int __glibc_reserved[2];
  };
# 102 "/usr/include/aarch64-linux-gnu/sys/stat.h" 2 3 4
# 205 "/usr/include/aarch64-linux-gnu/sys/stat.h" 3 4
extern int stat (const char *__restrict __file,
   struct stat *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));



extern int fstat (int __fd, struct stat *__buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
# 224 "/usr/include/aarch64-linux-gnu/sys/stat.h" 3 4
extern int stat64 (const char *__restrict __file,
     struct stat64 *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int fstat64 (int __fd, struct stat64 *__buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));







extern int fstatat (int __fd, const char *__restrict __file,
      struct stat *__restrict __buf, int __flag)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
# 249 "/usr/include/aarch64-linux-gnu/sys/stat.h" 3 4
extern int fstatat64 (int __fd, const char *__restrict __file,
        struct stat64 *__restrict __buf, int __flag)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));







extern int lstat (const char *__restrict __file,
    struct stat *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
# 272 "/usr/include/aarch64-linux-gnu/sys/stat.h" 3 4
extern int lstat64 (const char *__restrict __file,
      struct stat64 *__restrict __buf)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));





extern int chmod (const char *__file, __mode_t __mode)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern int lchmod (const char *__file, __mode_t __mode)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));




extern int fchmod (int __fd, __mode_t __mode) __attribute__ ((__nothrow__ , __leaf__));





extern int fchmodat (int __fd, const char *__file, __mode_t __mode,
       int __flag)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) ;






extern __mode_t umask (__mode_t __mask) __attribute__ ((__nothrow__ , __leaf__));




extern __mode_t getumask (void) __attribute__ ((__nothrow__ , __leaf__));



extern int mkdir (const char *__path, __mode_t __mode)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern int mkdirat (int __fd, const char *__path, __mode_t __mode)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));






extern int mknod (const char *__path, __mode_t __mode, __dev_t __dev)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern int mknodat (int __fd, const char *__path, __mode_t __mode,
      __dev_t __dev) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));





extern int mkfifo (const char *__path, __mode_t __mode)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));





extern int utimensat (int __fd, const char *__path,
        const struct timespec __times[2],
        int __flags)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));




extern int futimens (int __fd, const struct timespec __times[2]) __attribute__ ((__nothrow__ , __leaf__));
# 395 "/usr/include/aarch64-linux-gnu/sys/stat.h" 3 4
extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
extern int __xstat (int __ver, const char *__filename,
      struct stat *__stat_buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
extern int __lxstat (int __ver, const char *__filename,
       struct stat *__stat_buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
extern int __fxstatat (int __ver, int __fildes, const char *__filename,
         struct stat *__stat_buf, int __flag)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4)));
# 428 "/usr/include/aarch64-linux-gnu/sys/stat.h" 3 4
extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
extern int __xstat64 (int __ver, const char *__filename,
        struct stat64 *__stat_buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
extern int __lxstat64 (int __ver, const char *__filename,
         struct stat64 *__stat_buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
extern int __fxstatat64 (int __ver, int __fildes, const char *__filename,
    struct stat64 *__stat_buf, int __flag)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4)));

extern int __xmknod (int __ver, const char *__path, __mode_t __mode,
       __dev_t *__dev) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4)));

extern int __xmknodat (int __ver, int __fd, const char *__path,
         __mode_t __mode, __dev_t *__dev)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 5)));


# 1 "/usr/include/aarch64-linux-gnu/bits/statx.h" 1 3 4
# 31 "/usr/include/aarch64-linux-gnu/bits/statx.h" 3 4
# 1 "/usr/include/linux/stat.h" 1 3 4




# 1 "/usr/include/linux/types.h" 1 3 4




# 1 "/usr/include/aarch64-linux-gnu/asm/types.h" 1 3 4
# 1 "/usr/include/asm-generic/types.h" 1 3 4






# 1 "/usr/include/asm-generic/int-ll64.h" 1 3 4
# 12 "/usr/include/asm-generic/int-ll64.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/bitsperlong.h" 1 3 4
# 22 "/usr/include/aarch64-linux-gnu/asm/bitsperlong.h" 3 4
# 1 "/usr/include/asm-generic/bitsperlong.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/asm/bitsperlong.h" 2 3 4
# 13 "/usr/include/asm-generic/int-ll64.h" 2 3 4







typedef __signed__ char __s8;
typedef unsigned char __u8;

typedef __signed__ short __s16;
typedef unsigned short __u16;

typedef __signed__ int __s32;
typedef unsigned int __u32;


__extension__ typedef __signed__ long long __s64;
__extension__ typedef unsigned long long __u64;
# 8 "/usr/include/asm-generic/types.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/types.h" 2 3 4
# 6 "/usr/include/linux/types.h" 2 3 4



# 1 "/usr/include/linux/posix_types.h" 1 3 4




# 1 "/usr/include/linux/stddef.h" 1 3 4
# 6 "/usr/include/linux/posix_types.h" 2 3 4
# 25 "/usr/include/linux/posix_types.h" 3 4
typedef struct {
 unsigned long fds_bits[1024 / (8 * sizeof(long))];
} __kernel_fd_set;


typedef void (*__kernel_sighandler_t)(int);


typedef int __kernel_key_t;
typedef int __kernel_mqd_t;

# 1 "/usr/include/aarch64-linux-gnu/asm/posix_types.h" 1 3 4




typedef unsigned short __kernel_old_uid_t;
typedef unsigned short __kernel_old_gid_t;


# 1 "/usr/include/asm-generic/posix_types.h" 1 3 4
# 15 "/usr/include/asm-generic/posix_types.h" 3 4
typedef long __kernel_long_t;
typedef unsigned long __kernel_ulong_t;



typedef __kernel_ulong_t __kernel_ino_t;



typedef unsigned int __kernel_mode_t;



typedef int __kernel_pid_t;



typedef int __kernel_ipc_pid_t;



typedef unsigned int __kernel_uid_t;
typedef unsigned int __kernel_gid_t;



typedef __kernel_long_t __kernel_suseconds_t;



typedef int __kernel_daddr_t;



typedef unsigned int __kernel_uid32_t;
typedef unsigned int __kernel_gid32_t;
# 59 "/usr/include/asm-generic/posix_types.h" 3 4
typedef unsigned int __kernel_old_dev_t;
# 72 "/usr/include/asm-generic/posix_types.h" 3 4
typedef __kernel_ulong_t __kernel_size_t;
typedef __kernel_long_t __kernel_ssize_t;
typedef __kernel_long_t __kernel_ptrdiff_t;




typedef struct {
 int val[2];
} __kernel_fsid_t;





typedef __kernel_long_t __kernel_off_t;
typedef long long __kernel_loff_t;
typedef __kernel_long_t __kernel_time_t;
typedef long long __kernel_time64_t;
typedef __kernel_long_t __kernel_clock_t;
typedef int __kernel_timer_t;
typedef int __kernel_clockid_t;
typedef char * __kernel_caddr_t;
typedef unsigned short __kernel_uid16_t;
typedef unsigned short __kernel_gid16_t;
# 10 "/usr/include/aarch64-linux-gnu/asm/posix_types.h" 2 3 4
# 37 "/usr/include/linux/posix_types.h" 2 3 4
# 10 "/usr/include/linux/types.h" 2 3 4
# 24 "/usr/include/linux/types.h" 3 4
typedef __u16 __le16;
typedef __u16 __be16;
typedef __u32 __le32;
typedef __u32 __be32;
typedef __u64 __le64;
typedef __u64 __be64;

typedef __u16 __sum16;
typedef __u32 __wsum;
# 47 "/usr/include/linux/types.h" 3 4
typedef unsigned __poll_t;
# 6 "/usr/include/linux/stat.h" 2 3 4
# 56 "/usr/include/linux/stat.h" 3 4
struct statx_timestamp {
 __s64 tv_sec;
 __u32 tv_nsec;
 __s32 __reserved;
};
# 99 "/usr/include/linux/stat.h" 3 4
struct statx {

 __u32 stx_mask;
 __u32 stx_blksize;
 __u64 stx_attributes;

 __u32 stx_nlink;
 __u32 stx_uid;
 __u32 stx_gid;
 __u16 stx_mode;
 __u16 __spare0[1];

 __u64 stx_ino;
 __u64 stx_size;
 __u64 stx_blocks;
 __u64 stx_attributes_mask;

 struct statx_timestamp stx_atime;
 struct statx_timestamp stx_btime;
 struct statx_timestamp stx_ctime;
 struct statx_timestamp stx_mtime;

 __u32 stx_rdev_major;
 __u32 stx_rdev_minor;
 __u32 stx_dev_major;
 __u32 stx_dev_minor;

 __u64 __spare2[14];

};
# 32 "/usr/include/aarch64-linux-gnu/bits/statx.h" 2 3 4







# 1 "/usr/include/aarch64-linux-gnu/bits/statx-generic.h" 1 3 4
# 25 "/usr/include/aarch64-linux-gnu/bits/statx-generic.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_statx_timestamp.h" 1 3 4
# 26 "/usr/include/aarch64-linux-gnu/bits/statx-generic.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_statx.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/statx-generic.h" 2 3 4
# 53 "/usr/include/aarch64-linux-gnu/bits/statx-generic.h" 3 4



int statx (int __dirfd, const char *__restrict __path, int __flags,
           unsigned int __mask, struct statx *__restrict __buf)
  __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 5)));


# 39 "/usr/include/aarch64-linux-gnu/bits/statx.h" 2 3 4
# 447 "/usr/include/aarch64-linux-gnu/sys/stat.h" 2 3 4
# 534 "/usr/include/aarch64-linux-gnu/sys/stat.h" 3 4

# 7 "/home/ubuntu/neovim/src/nvim/os/os_defs.h" 2
# 20 "/home/ubuntu/neovim/src/nvim/os/os_defs.h"
# 1 "/home/ubuntu/neovim/src/nvim/os/unix_defs.h" 1
       



# 1 "/usr/include/arpa/inet.h" 1 3 4
# 22 "/usr/include/arpa/inet.h" 3 4
# 1 "/usr/include/netinet/in.h" 1 3 4
# 23 "/usr/include/netinet/in.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/sys/socket.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/sys/socket.h" 3 4


# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_iovec.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/types/struct_iovec.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/types/struct_iovec.h" 2 3 4


struct iovec
  {
    void *iov_base;
    size_t iov_len;
  };
# 27 "/usr/include/aarch64-linux-gnu/sys/socket.h" 2 3 4

# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 29 "/usr/include/aarch64-linux-gnu/sys/socket.h" 2 3 4




# 1 "/usr/include/aarch64-linux-gnu/bits/socket.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/socket.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/bits/socket.h" 2 3 4





typedef __socklen_t socklen_t;




# 1 "/usr/include/aarch64-linux-gnu/bits/socket_type.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/socket_type.h" 3 4
enum __socket_type
{
  SOCK_STREAM = 1,


  SOCK_DGRAM = 2,


  SOCK_RAW = 3,

  SOCK_RDM = 4,

  SOCK_SEQPACKET = 5,


  SOCK_DCCP = 6,

  SOCK_PACKET = 10,







  SOCK_CLOEXEC = 02000000,


  SOCK_NONBLOCK = 00004000


};
# 39 "/usr/include/aarch64-linux-gnu/bits/socket.h" 2 3 4
# 175 "/usr/include/aarch64-linux-gnu/bits/socket.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/sockaddr.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/bits/sockaddr.h" 3 4
typedef unsigned short int sa_family_t;
# 176 "/usr/include/aarch64-linux-gnu/bits/socket.h" 2 3 4


struct sockaddr
  {
    sa_family_t sa_family;
    char sa_data[14];
  };
# 191 "/usr/include/aarch64-linux-gnu/bits/socket.h" 3 4
struct sockaddr_storage
  {
    sa_family_t ss_family;
    char __ss_padding[(128 - (sizeof (unsigned short int)) - sizeof (unsigned long int))];
    unsigned long int __ss_align;
  };



enum
  {
    MSG_OOB = 0x01,

    MSG_PEEK = 0x02,

    MSG_DONTROUTE = 0x04,



    MSG_TRYHARD = MSG_DONTROUTE,


    MSG_CTRUNC = 0x08,

    MSG_PROXY = 0x10,

    MSG_TRUNC = 0x20,

    MSG_DONTWAIT = 0x40,

    MSG_EOR = 0x80,

    MSG_WAITALL = 0x100,

    MSG_FIN = 0x200,

    MSG_SYN = 0x400,

    MSG_CONFIRM = 0x800,

    MSG_RST = 0x1000,

    MSG_ERRQUEUE = 0x2000,

    MSG_NOSIGNAL = 0x4000,

    MSG_MORE = 0x8000,

    MSG_WAITFORONE = 0x10000,

    MSG_BATCH = 0x40000,

    MSG_ZEROCOPY = 0x4000000,

    MSG_FASTOPEN = 0x20000000,


    MSG_CMSG_CLOEXEC = 0x40000000



  };




struct msghdr
  {
    void *msg_name;
    socklen_t msg_namelen;

    struct iovec *msg_iov;
    size_t msg_iovlen;

    void *msg_control;
    size_t msg_controllen;




    int msg_flags;
  };


struct cmsghdr
  {
    size_t cmsg_len;




    int cmsg_level;
    int cmsg_type;

    __extension__ unsigned char __cmsg_data [];

  };
# 305 "/usr/include/aarch64-linux-gnu/bits/socket.h" 3 4
extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
          struct cmsghdr *__cmsg) __attribute__ ((__nothrow__ , __leaf__));
# 332 "/usr/include/aarch64-linux-gnu/bits/socket.h" 3 4
enum
  {
    SCM_RIGHTS = 0x01


    , SCM_CREDENTIALS = 0x02


  };



struct ucred
{
  pid_t pid;
  uid_t uid;
  gid_t gid;
};




# 1 "/usr/include/aarch64-linux-gnu/asm/socket.h" 1 3 4
# 1 "/usr/include/asm-generic/socket.h" 1 3 4





# 1 "/usr/include/aarch64-linux-gnu/asm/sockios.h" 1 3 4
# 1 "/usr/include/asm-generic/sockios.h" 1 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/sockios.h" 2 3 4
# 7 "/usr/include/asm-generic/socket.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/socket.h" 2 3 4
# 355 "/usr/include/aarch64-linux-gnu/bits/socket.h" 2 3 4






struct linger
  {
    int l_onoff;
    int l_linger;
  };
# 34 "/usr/include/aarch64-linux-gnu/sys/socket.h" 2 3 4


# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_osockaddr.h" 1 3 4





struct osockaddr
{
  unsigned short int sa_family;
  unsigned char sa_data[14];
};
# 37 "/usr/include/aarch64-linux-gnu/sys/socket.h" 2 3 4




enum
{
  SHUT_RD = 0,

  SHUT_WR,

  SHUT_RDWR

};
# 79 "/usr/include/aarch64-linux-gnu/sys/socket.h" 3 4
typedef union { struct sockaddr *__restrict __sockaddr__; struct sockaddr_at *__restrict __sockaddr_at__; struct sockaddr_ax25 *__restrict __sockaddr_ax25__; struct sockaddr_dl *__restrict __sockaddr_dl__; struct sockaddr_eon *__restrict __sockaddr_eon__; struct sockaddr_in *__restrict __sockaddr_in__; struct sockaddr_in6 *__restrict __sockaddr_in6__; struct sockaddr_inarp *__restrict __sockaddr_inarp__; struct sockaddr_ipx *__restrict __sockaddr_ipx__; struct sockaddr_iso *__restrict __sockaddr_iso__; struct sockaddr_ns *__restrict __sockaddr_ns__; struct sockaddr_un *__restrict __sockaddr_un__; struct sockaddr_x25 *__restrict __sockaddr_x25__;
       } __SOCKADDR_ARG __attribute__ ((__transparent_union__));


typedef union { const struct sockaddr *__restrict __sockaddr__; const struct sockaddr_at *__restrict __sockaddr_at__; const struct sockaddr_ax25 *__restrict __sockaddr_ax25__; const struct sockaddr_dl *__restrict __sockaddr_dl__; const struct sockaddr_eon *__restrict __sockaddr_eon__; const struct sockaddr_in *__restrict __sockaddr_in__; const struct sockaddr_in6 *__restrict __sockaddr_in6__; const struct sockaddr_inarp *__restrict __sockaddr_inarp__; const struct sockaddr_ipx *__restrict __sockaddr_ipx__; const struct sockaddr_iso *__restrict __sockaddr_iso__; const struct sockaddr_ns *__restrict __sockaddr_ns__; const struct sockaddr_un *__restrict __sockaddr_un__; const struct sockaddr_x25 *__restrict __sockaddr_x25__;
       } __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__));





struct mmsghdr
  {
    struct msghdr msg_hdr;
    unsigned int msg_len;

  };






extern int socket (int __domain, int __type, int __protocol) __attribute__ ((__nothrow__ , __leaf__));





extern int socketpair (int __domain, int __type, int __protocol,
         int __fds[2]) __attribute__ ((__nothrow__ , __leaf__));


extern int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
     __attribute__ ((__nothrow__ , __leaf__));


extern int getsockname (int __fd, __SOCKADDR_ARG __addr,
   socklen_t *__restrict __len) __attribute__ ((__nothrow__ , __leaf__));
# 126 "/usr/include/aarch64-linux-gnu/sys/socket.h" 3 4
extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);



extern int getpeername (int __fd, __SOCKADDR_ARG __addr,
   socklen_t *__restrict __len) __attribute__ ((__nothrow__ , __leaf__));






extern ssize_t send (int __fd, const void *__buf, size_t __n, int __flags);






extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags);






extern ssize_t sendto (int __fd, const void *__buf, size_t __n,
         int __flags, __CONST_SOCKADDR_ARG __addr,
         socklen_t __addr_len);
# 163 "/usr/include/aarch64-linux-gnu/sys/socket.h" 3 4
extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n,
    int __flags, __SOCKADDR_ARG __addr,
    socklen_t *__restrict __addr_len);







extern ssize_t sendmsg (int __fd, const struct msghdr *__message,
   int __flags);







extern int sendmmsg (int __fd, struct mmsghdr *__vmessages,
       unsigned int __vlen, int __flags);







extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);







extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
       unsigned int __vlen, int __flags,
       struct timespec *__tmo);






extern int getsockopt (int __fd, int __level, int __optname,
         void *__restrict __optval,
         socklen_t *__restrict __optlen) __attribute__ ((__nothrow__ , __leaf__));




extern int setsockopt (int __fd, int __level, int __optname,
         const void *__optval, socklen_t __optlen) __attribute__ ((__nothrow__ , __leaf__));





extern int listen (int __fd, int __n) __attribute__ ((__nothrow__ , __leaf__));
# 232 "/usr/include/aarch64-linux-gnu/sys/socket.h" 3 4
extern int accept (int __fd, __SOCKADDR_ARG __addr,
     socklen_t *__restrict __addr_len);






extern int accept4 (int __fd, __SOCKADDR_ARG __addr,
      socklen_t *__restrict __addr_len, int __flags);
# 250 "/usr/include/aarch64-linux-gnu/sys/socket.h" 3 4
extern int shutdown (int __fd, int __how) __attribute__ ((__nothrow__ , __leaf__));




extern int sockatmark (int __fd) __attribute__ ((__nothrow__ , __leaf__));







extern int isfdtype (int __fd, int __fdtype) __attribute__ ((__nothrow__ , __leaf__));
# 272 "/usr/include/aarch64-linux-gnu/sys/socket.h" 3 4

# 24 "/usr/include/netinet/in.h" 2 3 4






typedef uint32_t in_addr_t;
struct in_addr
  {
    in_addr_t s_addr;
  };


# 1 "/usr/include/aarch64-linux-gnu/bits/in.h" 1 3 4
# 142 "/usr/include/aarch64-linux-gnu/bits/in.h" 3 4
struct ip_opts
  {
    struct in_addr ip_dst;
    char ip_opts[40];
  };


struct ip_mreqn
  {
    struct in_addr imr_multiaddr;
    struct in_addr imr_address;
    int imr_ifindex;
  };


struct in_pktinfo
  {
    int ipi_ifindex;
    struct in_addr ipi_spec_dst;
    struct in_addr ipi_addr;
  };
# 38 "/usr/include/netinet/in.h" 2 3 4


enum
  {
    IPPROTO_IP = 0,

    IPPROTO_ICMP = 1,

    IPPROTO_IGMP = 2,

    IPPROTO_IPIP = 4,

    IPPROTO_TCP = 6,

    IPPROTO_EGP = 8,

    IPPROTO_PUP = 12,

    IPPROTO_UDP = 17,

    IPPROTO_IDP = 22,

    IPPROTO_TP = 29,

    IPPROTO_DCCP = 33,

    IPPROTO_IPV6 = 41,

    IPPROTO_RSVP = 46,

    IPPROTO_GRE = 47,

    IPPROTO_ESP = 50,

    IPPROTO_AH = 51,

    IPPROTO_MTP = 92,

    IPPROTO_BEETPH = 94,

    IPPROTO_ENCAP = 98,

    IPPROTO_PIM = 103,

    IPPROTO_COMP = 108,

    IPPROTO_SCTP = 132,

    IPPROTO_UDPLITE = 136,

    IPPROTO_MPLS = 137,

    IPPROTO_RAW = 255,

    IPPROTO_MAX
  };





enum
  {
    IPPROTO_HOPOPTS = 0,

    IPPROTO_ROUTING = 43,

    IPPROTO_FRAGMENT = 44,

    IPPROTO_ICMPV6 = 58,

    IPPROTO_NONE = 59,

    IPPROTO_DSTOPTS = 60,

    IPPROTO_MH = 135

  };



typedef uint16_t in_port_t;


enum
  {
    IPPORT_ECHO = 7,
    IPPORT_DISCARD = 9,
    IPPORT_SYSTAT = 11,
    IPPORT_DAYTIME = 13,
    IPPORT_NETSTAT = 15,
    IPPORT_FTP = 21,
    IPPORT_TELNET = 23,
    IPPORT_SMTP = 25,
    IPPORT_TIMESERVER = 37,
    IPPORT_NAMESERVER = 42,
    IPPORT_WHOIS = 43,
    IPPORT_MTP = 57,

    IPPORT_TFTP = 69,
    IPPORT_RJE = 77,
    IPPORT_FINGER = 79,
    IPPORT_TTYLINK = 87,
    IPPORT_SUPDUP = 95,


    IPPORT_EXECSERVER = 512,
    IPPORT_LOGINSERVER = 513,
    IPPORT_CMDSERVER = 514,
    IPPORT_EFSSERVER = 520,


    IPPORT_BIFFUDP = 512,
    IPPORT_WHOSERVER = 513,
    IPPORT_ROUTESERVER = 520,


    IPPORT_RESERVED = 1024,


    IPPORT_USERRESERVED = 5000
  };
# 212 "/usr/include/netinet/in.h" 3 4
struct in6_addr
  {
    union
      {
 uint8_t __u6_addr8[16];
 uint16_t __u6_addr16[8];
 uint32_t __u6_addr32[4];
      } __in6_u;





  };


extern const struct in6_addr in6addr_any;
extern const struct in6_addr in6addr_loopback;
# 238 "/usr/include/netinet/in.h" 3 4
struct sockaddr_in
  {
    sa_family_t sin_family;
    in_port_t sin_port;
    struct in_addr sin_addr;


    unsigned char sin_zero[sizeof (struct sockaddr)
      - (sizeof (unsigned short int))
      - sizeof (in_port_t)
      - sizeof (struct in_addr)];
  };



struct sockaddr_in6
  {
    sa_family_t sin6_family;
    in_port_t sin6_port;
    uint32_t sin6_flowinfo;
    struct in6_addr sin6_addr;
    uint32_t sin6_scope_id;
  };




struct ip_mreq
  {

    struct in_addr imr_multiaddr;


    struct in_addr imr_interface;
  };

struct ip_mreq_source
  {

    struct in_addr imr_multiaddr;


    struct in_addr imr_interface;


    struct in_addr imr_sourceaddr;
  };




struct ipv6_mreq
  {

    struct in6_addr ipv6mr_multiaddr;


    unsigned int ipv6mr_interface;
  };




struct group_req
  {

    uint32_t gr_interface;


    struct sockaddr_storage gr_group;
  };

struct group_source_req
  {

    uint32_t gsr_interface;


    struct sockaddr_storage gsr_group;


    struct sockaddr_storage gsr_source;
  };



struct ip_msfilter
  {

    struct in_addr imsf_multiaddr;


    struct in_addr imsf_interface;


    uint32_t imsf_fmode;


    uint32_t imsf_numsrc;

    struct in_addr imsf_slist[1];
  };





struct group_filter
  {

    uint32_t gf_interface;


    struct sockaddr_storage gf_group;


    uint32_t gf_fmode;


    uint32_t gf_numsrc;

    struct sockaddr_storage gf_slist[1];
};
# 375 "/usr/include/netinet/in.h" 3 4
extern uint32_t ntohl (uint32_t __netlong) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern uint16_t ntohs (uint16_t __netshort)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern uint32_t htonl (uint32_t __hostlong)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern uint16_t htons (uint16_t __hostshort)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));




# 1 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 1 3 4
# 387 "/usr/include/netinet/in.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/uintn-identity.h" 1 3 4
# 388 "/usr/include/netinet/in.h" 2 3 4
# 503 "/usr/include/netinet/in.h" 3 4
extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) __attribute__ ((__nothrow__ , __leaf__));


extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in)
     __attribute__ ((__nothrow__ , __leaf__));
# 533 "/usr/include/netinet/in.h" 3 4
struct cmsghdr;



struct in6_pktinfo
  {
    struct in6_addr ipi6_addr;
    unsigned int ipi6_ifindex;
  };


struct ip6_mtuinfo
  {
    struct sockaddr_in6 ip6m_addr;
    uint32_t ip6m_mtu;
  };



extern int inet6_option_space (int __nbytes)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
extern int inet6_option_init (void *__bp, struct cmsghdr **__cmsgp,
         int __type) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
extern int inet6_option_append (struct cmsghdr *__cmsg,
    const uint8_t *__typep, int __multx,
    int __plusy) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
extern uint8_t *inet6_option_alloc (struct cmsghdr *__cmsg, int __datalen,
        int __multx, int __plusy)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
extern int inet6_option_next (const struct cmsghdr *__cmsg,
         uint8_t **__tptrp)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
extern int inet6_option_find (const struct cmsghdr *__cmsg,
         uint8_t **__tptrp, int __type)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));



extern int inet6_opt_init (void *__extbuf, socklen_t __extlen) __attribute__ ((__nothrow__ , __leaf__));
extern int inet6_opt_append (void *__extbuf, socklen_t __extlen, int __offset,
        uint8_t __type, socklen_t __len, uint8_t __align,
        void **__databufp) __attribute__ ((__nothrow__ , __leaf__));
extern int inet6_opt_finish (void *__extbuf, socklen_t __extlen, int __offset)
     __attribute__ ((__nothrow__ , __leaf__));
extern int inet6_opt_set_val (void *__databuf, int __offset, void *__val,
         socklen_t __vallen) __attribute__ ((__nothrow__ , __leaf__));
extern int inet6_opt_next (void *__extbuf, socklen_t __extlen, int __offset,
      uint8_t *__typep, socklen_t *__lenp,
      void **__databufp) __attribute__ ((__nothrow__ , __leaf__));
extern int inet6_opt_find (void *__extbuf, socklen_t __extlen, int __offset,
      uint8_t __type, socklen_t *__lenp,
      void **__databufp) __attribute__ ((__nothrow__ , __leaf__));
extern int inet6_opt_get_val (void *__databuf, int __offset, void *__val,
         socklen_t __vallen) __attribute__ ((__nothrow__ , __leaf__));



extern socklen_t inet6_rth_space (int __type, int __segments) __attribute__ ((__nothrow__ , __leaf__));
extern void *inet6_rth_init (void *__bp, socklen_t __bp_len, int __type,
        int __segments) __attribute__ ((__nothrow__ , __leaf__));
extern int inet6_rth_add (void *__bp, const struct in6_addr *__addr) __attribute__ ((__nothrow__ , __leaf__));
extern int inet6_rth_reverse (const void *__in, void *__out) __attribute__ ((__nothrow__ , __leaf__));
extern int inet6_rth_segments (const void *__bp) __attribute__ ((__nothrow__ , __leaf__));
extern struct in6_addr *inet6_rth_getaddr (const void *__bp, int __index)
     __attribute__ ((__nothrow__ , __leaf__));





extern int getipv4sourcefilter (int __s, struct in_addr __interface_addr,
    struct in_addr __group, uint32_t *__fmode,
    uint32_t *__numsrc, struct in_addr *__slist)
     __attribute__ ((__nothrow__ , __leaf__));


extern int setipv4sourcefilter (int __s, struct in_addr __interface_addr,
    struct in_addr __group, uint32_t __fmode,
    uint32_t __numsrc,
    const struct in_addr *__slist)
     __attribute__ ((__nothrow__ , __leaf__));



extern int getsourcefilter (int __s, uint32_t __interface_addr,
       const struct sockaddr *__group,
       socklen_t __grouplen, uint32_t *__fmode,
       uint32_t *__numsrc,
       struct sockaddr_storage *__slist) __attribute__ ((__nothrow__ , __leaf__));


extern int setsourcefilter (int __s, uint32_t __interface_addr,
       const struct sockaddr *__group,
       socklen_t __grouplen, uint32_t __fmode,
       uint32_t __numsrc,
       const struct sockaddr_storage *__slist) __attribute__ ((__nothrow__ , __leaf__));



# 23 "/usr/include/arpa/inet.h" 2 3 4











extern in_addr_t inet_addr (const char *__cp) __attribute__ ((__nothrow__ , __leaf__));


extern in_addr_t inet_lnaof (struct in_addr __in) __attribute__ ((__nothrow__ , __leaf__));



extern struct in_addr inet_makeaddr (in_addr_t __net, in_addr_t __host)
     __attribute__ ((__nothrow__ , __leaf__));


extern in_addr_t inet_netof (struct in_addr __in) __attribute__ ((__nothrow__ , __leaf__));



extern in_addr_t inet_network (const char *__cp) __attribute__ ((__nothrow__ , __leaf__));



extern char *inet_ntoa (struct in_addr __in) __attribute__ ((__nothrow__ , __leaf__));




extern int inet_pton (int __af, const char *__restrict __cp,
        void *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));




extern const char *inet_ntop (int __af, const void *__restrict __cp,
         char *__restrict __buf, socklen_t __len)
     __attribute__ ((__nothrow__ , __leaf__));






extern int inet_aton (const char *__cp, struct in_addr *__inp) __attribute__ ((__nothrow__ , __leaf__));



extern char *inet_neta (in_addr_t __net, char *__buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__));




extern char *inet_net_ntop (int __af, const void *__cp, int __bits,
       char *__buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__));




extern int inet_net_pton (int __af, const char *__cp,
     void *__buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__));




extern unsigned int inet_nsap_addr (const char *__cp,
        unsigned char *__buf, int __len) __attribute__ ((__nothrow__ , __leaf__));



extern char *inet_nsap_ntoa (int __len, const unsigned char *__cp,
        char *__buf) __attribute__ ((__nothrow__ , __leaf__));



# 6 "/home/ubuntu/neovim/src/nvim/os/unix_defs.h" 2
# 1 "/usr/include/netdb.h" 1 3 4
# 32 "/usr/include/netdb.h" 3 4
# 1 "/usr/include/rpc/netdb.h" 1 3 4
# 42 "/usr/include/rpc/netdb.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 43 "/usr/include/rpc/netdb.h" 2 3 4



struct rpcent
{
  char *r_name;
  char **r_aliases;
  int r_number;
};

extern void setrpcent (int __stayopen) __attribute__ ((__nothrow__ , __leaf__));
extern void endrpcent (void) __attribute__ ((__nothrow__ , __leaf__));
extern struct rpcent *getrpcbyname (const char *__name) __attribute__ ((__nothrow__ , __leaf__));
extern struct rpcent *getrpcbynumber (int __number) __attribute__ ((__nothrow__ , __leaf__));
extern struct rpcent *getrpcent (void) __attribute__ ((__nothrow__ , __leaf__));


extern int getrpcbyname_r (const char *__name, struct rpcent *__result_buf,
      char *__buffer, size_t __buflen,
      struct rpcent **__result) __attribute__ ((__nothrow__ , __leaf__));

extern int getrpcbynumber_r (int __number, struct rpcent *__result_buf,
        char *__buffer, size_t __buflen,
        struct rpcent **__result) __attribute__ ((__nothrow__ , __leaf__));

extern int getrpcent_r (struct rpcent *__result_buf, char *__buffer,
   size_t __buflen, struct rpcent **__result) __attribute__ ((__nothrow__ , __leaf__));



# 33 "/usr/include/netdb.h" 2 3 4



# 1 "/usr/include/aarch64-linux-gnu/bits/types/sigevent_t.h" 1 3 4



# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 5 "/usr/include/aarch64-linux-gnu/bits/types/sigevent_t.h" 2 3 4

# 1 "/usr/include/aarch64-linux-gnu/bits/types/__sigval_t.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/types/__sigval_t.h" 3 4
union sigval
{
  int sival_int;
  void *sival_ptr;
};

typedef union sigval __sigval_t;
# 7 "/usr/include/aarch64-linux-gnu/bits/types/sigevent_t.h" 2 3 4
# 22 "/usr/include/aarch64-linux-gnu/bits/types/sigevent_t.h" 3 4
typedef struct sigevent
  {
    __sigval_t sigev_value;
    int sigev_signo;
    int sigev_notify;

    union
      {
 int _pad[((64 / sizeof (int)) - 4)];



 __pid_t _tid;

 struct
   {
     void (*_function) (__sigval_t);
     pthread_attr_t *_attribute;
   } _sigev_thread;
      } _sigev_un;
  } sigevent_t;
# 37 "/usr/include/netdb.h" 2 3 4



# 1 "/usr/include/aarch64-linux-gnu/bits/netdb.h" 1 3 4
# 26 "/usr/include/aarch64-linux-gnu/bits/netdb.h" 3 4
struct netent
{
  char *n_name;
  char **n_aliases;
  int n_addrtype;
  uint32_t n_net;
};
# 41 "/usr/include/netdb.h" 2 3 4
# 51 "/usr/include/netdb.h" 3 4








extern int *__h_errno_location (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
# 90 "/usr/include/netdb.h" 3 4
extern void herror (const char *__str) __attribute__ ((__nothrow__ , __leaf__));


extern const char *hstrerror (int __err_num) __attribute__ ((__nothrow__ , __leaf__));




struct hostent
{
  char *h_name;
  char **h_aliases;
  int h_addrtype;
  int h_length;
  char **h_addr_list;



};






extern void sethostent (int __stay_open);





extern void endhostent (void);






extern struct hostent *gethostent (void);






extern struct hostent *gethostbyaddr (const void *__addr, __socklen_t __len,
          int __type);





extern struct hostent *gethostbyname (const char *__name);
# 153 "/usr/include/netdb.h" 3 4
extern struct hostent *gethostbyname2 (const char *__name, int __af);
# 165 "/usr/include/netdb.h" 3 4
extern int gethostent_r (struct hostent *__restrict __result_buf,
    char *__restrict __buf, size_t __buflen,
    struct hostent **__restrict __result,
    int *__restrict __h_errnop);

extern int gethostbyaddr_r (const void *__restrict __addr, __socklen_t __len,
       int __type,
       struct hostent *__restrict __result_buf,
       char *__restrict __buf, size_t __buflen,
       struct hostent **__restrict __result,
       int *__restrict __h_errnop);

extern int gethostbyname_r (const char *__restrict __name,
       struct hostent *__restrict __result_buf,
       char *__restrict __buf, size_t __buflen,
       struct hostent **__restrict __result,
       int *__restrict __h_errnop);

extern int gethostbyname2_r (const char *__restrict __name, int __af,
        struct hostent *__restrict __result_buf,
        char *__restrict __buf, size_t __buflen,
        struct hostent **__restrict __result,
        int *__restrict __h_errnop);
# 196 "/usr/include/netdb.h" 3 4
extern void setnetent (int __stay_open);





extern void endnetent (void);






extern struct netent *getnetent (void);






extern struct netent *getnetbyaddr (uint32_t __net, int __type);





extern struct netent *getnetbyname (const char *__name);
# 235 "/usr/include/netdb.h" 3 4
extern int getnetent_r (struct netent *__restrict __result_buf,
   char *__restrict __buf, size_t __buflen,
   struct netent **__restrict __result,
   int *__restrict __h_errnop);

extern int getnetbyaddr_r (uint32_t __net, int __type,
      struct netent *__restrict __result_buf,
      char *__restrict __buf, size_t __buflen,
      struct netent **__restrict __result,
      int *__restrict __h_errnop);

extern int getnetbyname_r (const char *__restrict __name,
      struct netent *__restrict __result_buf,
      char *__restrict __buf, size_t __buflen,
      struct netent **__restrict __result,
      int *__restrict __h_errnop);




struct servent
{
  char *s_name;
  char **s_aliases;
  int s_port;
  char *s_proto;
};






extern void setservent (int __stay_open);





extern void endservent (void);






extern struct servent *getservent (void);






extern struct servent *getservbyname (const char *__name, const char *__proto);






extern struct servent *getservbyport (int __port, const char *__proto);
# 306 "/usr/include/netdb.h" 3 4
extern int getservent_r (struct servent *__restrict __result_buf,
    char *__restrict __buf, size_t __buflen,
    struct servent **__restrict __result);

extern int getservbyname_r (const char *__restrict __name,
       const char *__restrict __proto,
       struct servent *__restrict __result_buf,
       char *__restrict __buf, size_t __buflen,
       struct servent **__restrict __result);

extern int getservbyport_r (int __port, const char *__restrict __proto,
       struct servent *__restrict __result_buf,
       char *__restrict __buf, size_t __buflen,
       struct servent **__restrict __result);




struct protoent
{
  char *p_name;
  char **p_aliases;
  int p_proto;
};






extern void setprotoent (int __stay_open);





extern void endprotoent (void);






extern struct protoent *getprotoent (void);





extern struct protoent *getprotobyname (const char *__name);





extern struct protoent *getprotobynumber (int __proto);
# 372 "/usr/include/netdb.h" 3 4
extern int getprotoent_r (struct protoent *__restrict __result_buf,
     char *__restrict __buf, size_t __buflen,
     struct protoent **__restrict __result);

extern int getprotobyname_r (const char *__restrict __name,
        struct protoent *__restrict __result_buf,
        char *__restrict __buf, size_t __buflen,
        struct protoent **__restrict __result);

extern int getprotobynumber_r (int __proto,
          struct protoent *__restrict __result_buf,
          char *__restrict __buf, size_t __buflen,
          struct protoent **__restrict __result);
# 393 "/usr/include/netdb.h" 3 4
extern int setnetgrent (const char *__netgroup);







extern void endnetgrent (void);
# 410 "/usr/include/netdb.h" 3 4
extern int getnetgrent (char **__restrict __hostp,
   char **__restrict __userp,
   char **__restrict __domainp);
# 421 "/usr/include/netdb.h" 3 4
extern int innetgr (const char *__netgroup, const char *__host,
      const char *__user, const char *__domain);







extern int getnetgrent_r (char **__restrict __hostp,
     char **__restrict __userp,
     char **__restrict __domainp,
     char *__restrict __buffer, size_t __buflen);
# 449 "/usr/include/netdb.h" 3 4
extern int rcmd (char **__restrict __ahost, unsigned short int __rport,
   const char *__restrict __locuser,
   const char *__restrict __remuser,
   const char *__restrict __cmd, int *__restrict __fd2p);
# 461 "/usr/include/netdb.h" 3 4
extern int rcmd_af (char **__restrict __ahost, unsigned short int __rport,
      const char *__restrict __locuser,
      const char *__restrict __remuser,
      const char *__restrict __cmd, int *__restrict __fd2p,
      sa_family_t __af);
# 477 "/usr/include/netdb.h" 3 4
extern int rexec (char **__restrict __ahost, int __rport,
    const char *__restrict __name,
    const char *__restrict __pass,
    const char *__restrict __cmd, int *__restrict __fd2p);
# 489 "/usr/include/netdb.h" 3 4
extern int rexec_af (char **__restrict __ahost, int __rport,
       const char *__restrict __name,
       const char *__restrict __pass,
       const char *__restrict __cmd, int *__restrict __fd2p,
       sa_family_t __af);
# 503 "/usr/include/netdb.h" 3 4
extern int ruserok (const char *__rhost, int __suser,
      const char *__remuser, const char *__locuser);
# 513 "/usr/include/netdb.h" 3 4
extern int ruserok_af (const char *__rhost, int __suser,
         const char *__remuser, const char *__locuser,
         sa_family_t __af);
# 526 "/usr/include/netdb.h" 3 4
extern int iruserok (uint32_t __raddr, int __suser,
       const char *__remuser, const char *__locuser);
# 537 "/usr/include/netdb.h" 3 4
extern int iruserok_af (const void *__raddr, int __suser,
   const char *__remuser, const char *__locuser,
   sa_family_t __af);
# 549 "/usr/include/netdb.h" 3 4
extern int rresvport (int *__alport);
# 558 "/usr/include/netdb.h" 3 4
extern int rresvport_af (int *__alport, sa_family_t __af);






struct addrinfo
{
  int ai_flags;
  int ai_family;
  int ai_socktype;
  int ai_protocol;
  socklen_t ai_addrlen;
  struct sockaddr *ai_addr;
  char *ai_canonname;
  struct addrinfo *ai_next;
};



struct gaicb
{
  const char *ar_name;
  const char *ar_service;
  const struct addrinfo *ar_request;
  struct addrinfo *ar_result;

  int __return;
  int __glibc_reserved[5];
};
# 660 "/usr/include/netdb.h" 3 4
extern int getaddrinfo (const char *__restrict __name,
   const char *__restrict __service,
   const struct addrinfo *__restrict __req,
   struct addrinfo **__restrict __pai);


extern void freeaddrinfo (struct addrinfo *__ai) __attribute__ ((__nothrow__ , __leaf__));


extern const char *gai_strerror (int __ecode) __attribute__ ((__nothrow__ , __leaf__));





extern int getnameinfo (const struct sockaddr *__restrict __sa,
   socklen_t __salen, char *__restrict __host,
   socklen_t __hostlen, char *__restrict __serv,
   socklen_t __servlen, int __flags);
# 690 "/usr/include/netdb.h" 3 4
extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict],
     int __ent, struct sigevent *__restrict __sig);
# 701 "/usr/include/netdb.h" 3 4
extern int gai_suspend (const struct gaicb *const __list[], int __ent,
   const struct timespec *__timeout);


extern int gai_error (struct gaicb *__req) __attribute__ ((__nothrow__ , __leaf__));


extern int gai_cancel (struct gaicb *__gaicbp) __attribute__ ((__nothrow__ , __leaf__));



# 7 "/home/ubuntu/neovim/src/nvim/os/unix_defs.h" 2

# 1 "/usr/include/pthread.h" 1 3 4
# 22 "/usr/include/pthread.h" 3 4
# 1 "/usr/include/sched.h" 1 3 4
# 29 "/usr/include/sched.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 30 "/usr/include/sched.h" 2 3 4
# 43 "/usr/include/sched.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/sched.h" 1 3 4
# 76 "/usr/include/aarch64-linux-gnu/bits/sched.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_sched_param.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/types/struct_sched_param.h" 3 4
struct sched_param
{
  int sched_priority;
};
# 77 "/usr/include/aarch64-linux-gnu/bits/sched.h" 2 3 4





extern int clone (int (*__fn) (void *__arg), void *__child_stack,
    int __flags, void *__arg, ...) __attribute__ ((__nothrow__ , __leaf__));


extern int unshare (int __flags) __attribute__ ((__nothrow__ , __leaf__));


extern int sched_getcpu (void) __attribute__ ((__nothrow__ , __leaf__));


extern int getcpu (unsigned int *, unsigned int *) __attribute__ ((__nothrow__ , __leaf__));


extern int setns (int __fd, int __nstype) __attribute__ ((__nothrow__ , __leaf__));



# 44 "/usr/include/sched.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/cpu-set.h" 1 3 4
# 32 "/usr/include/aarch64-linux-gnu/bits/cpu-set.h" 3 4
typedef unsigned long int __cpu_mask;






typedef struct
{
  __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))];
} cpu_set_t;
# 115 "/usr/include/aarch64-linux-gnu/bits/cpu-set.h" 3 4


extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp)
     __attribute__ ((__nothrow__ , __leaf__));
extern cpu_set_t *__sched_cpualloc (size_t __count) __attribute__ ((__nothrow__ , __leaf__)) ;
extern void __sched_cpufree (cpu_set_t *__set) __attribute__ ((__nothrow__ , __leaf__));


# 45 "/usr/include/sched.h" 2 3 4









extern int sched_setparam (__pid_t __pid, const struct sched_param *__param)
     __attribute__ ((__nothrow__ , __leaf__));


extern int sched_getparam (__pid_t __pid, struct sched_param *__param) __attribute__ ((__nothrow__ , __leaf__));


extern int sched_setscheduler (__pid_t __pid, int __policy,
          const struct sched_param *__param) __attribute__ ((__nothrow__ , __leaf__));


extern int sched_getscheduler (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__));


extern int sched_yield (void) __attribute__ ((__nothrow__ , __leaf__));


extern int sched_get_priority_max (int __algorithm) __attribute__ ((__nothrow__ , __leaf__));


extern int sched_get_priority_min (int __algorithm) __attribute__ ((__nothrow__ , __leaf__));


extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __attribute__ ((__nothrow__ , __leaf__));
# 121 "/usr/include/sched.h" 3 4
extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,
         const cpu_set_t *__cpuset) __attribute__ ((__nothrow__ , __leaf__));


extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize,
         cpu_set_t *__cpuset) __attribute__ ((__nothrow__ , __leaf__));



# 23 "/usr/include/pthread.h" 2 3 4




# 1 "/usr/include/aarch64-linux-gnu/bits/setjmp.h" 1 3 4
# 30 "/usr/include/aarch64-linux-gnu/bits/setjmp.h" 3 4
__extension__ typedef unsigned long long __jmp_buf [22];
# 28 "/usr/include/pthread.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 29 "/usr/include/pthread.h" 2 3 4




enum
{
  PTHREAD_CREATE_JOINABLE,

  PTHREAD_CREATE_DETACHED

};



enum
{
  PTHREAD_MUTEX_TIMED_NP,
  PTHREAD_MUTEX_RECURSIVE_NP,
  PTHREAD_MUTEX_ERRORCHECK_NP,
  PTHREAD_MUTEX_ADAPTIVE_NP

  ,
  PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP,
  PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
  PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
  PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL



  , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP

};




enum
{
  PTHREAD_MUTEX_STALLED,
  PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED,
  PTHREAD_MUTEX_ROBUST,
  PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST
};





enum
{
  PTHREAD_PRIO_NONE,
  PTHREAD_PRIO_INHERIT,
  PTHREAD_PRIO_PROTECT
};
# 100 "/usr/include/pthread.h" 3 4
enum
{
  PTHREAD_RWLOCK_PREFER_READER_NP,
  PTHREAD_RWLOCK_PREFER_WRITER_NP,
  PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,
  PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP
};
# 120 "/usr/include/pthread.h" 3 4
enum
{
  PTHREAD_INHERIT_SCHED,

  PTHREAD_EXPLICIT_SCHED

};



enum
{
  PTHREAD_SCOPE_SYSTEM,

  PTHREAD_SCOPE_PROCESS

};



enum
{
  PTHREAD_PROCESS_PRIVATE,

  PTHREAD_PROCESS_SHARED

};
# 155 "/usr/include/pthread.h" 3 4
struct _pthread_cleanup_buffer
{
  void (*__routine) (void *);
  void *__arg;
  int __canceltype;
  struct _pthread_cleanup_buffer *__prev;
};


enum
{
  PTHREAD_CANCEL_ENABLE,

  PTHREAD_CANCEL_DISABLE

};
enum
{
  PTHREAD_CANCEL_DEFERRED,

  PTHREAD_CANCEL_ASYNCHRONOUS

};
# 193 "/usr/include/pthread.h" 3 4





extern int pthread_create (pthread_t *__restrict __newthread,
      const pthread_attr_t *__restrict __attr,
      void *(*__start_routine) (void *),
      void *__restrict __arg) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));





extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__));







extern int pthread_join (pthread_t __th, void **__thread_return);




extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __attribute__ ((__nothrow__ , __leaf__));







extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
     const struct timespec *__abstime);
# 238 "/usr/include/pthread.h" 3 4
extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return,
                                 clockid_t __clockid,
     const struct timespec *__abstime);






extern int pthread_detach (pthread_t __th) __attribute__ ((__nothrow__ , __leaf__));



extern pthread_t pthread_self (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));


extern int pthread_equal (pthread_t __thread1, pthread_t __thread2)
  __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));







extern int pthread_attr_init (pthread_attr_t *__attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_attr_destroy (pthread_attr_t *__attr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr,
     int *__detachstate)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_attr_setdetachstate (pthread_attr_t *__attr,
     int __detachstate)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_attr_getguardsize (const pthread_attr_t *__attr,
          size_t *__guardsize)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_attr_setguardsize (pthread_attr_t *__attr,
          size_t __guardsize)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr,
           struct sched_param *__restrict __param)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
           const struct sched_param *__restrict
           __param) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict
     __attr, int *__restrict __policy)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict
      __attr, int *__restrict __inherit)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_attr_setinheritsched (pthread_attr_t *__attr,
      int __inherit)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr,
      int *__restrict __scope)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict
          __attr, void **__restrict __stackaddr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__));





extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,
          void *__stackaddr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__));


extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict
          __attr, size_t *__restrict __stacksize)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));




extern int pthread_attr_setstacksize (pthread_attr_t *__attr,
          size_t __stacksize)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr,
      void **__restrict __stackaddr,
      size_t *__restrict __stacksize)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3)));




extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
      size_t __stacksize) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
     size_t __cpusetsize,
     const cpu_set_t *__cpuset)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));



extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr,
     size_t __cpusetsize,
     cpu_set_t *__cpuset)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));


extern int pthread_getattr_default_np (pthread_attr_t *__attr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_setattr_default_np (const pthread_attr_t *__attr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));




extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));







extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
      const struct sched_param *__param)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));


extern int pthread_getschedparam (pthread_t __target_thread,
      int *__restrict __policy,
      struct sched_param *__restrict __param)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));


extern int pthread_setschedprio (pthread_t __target_thread, int __prio)
     __attribute__ ((__nothrow__ , __leaf__));




extern int pthread_getname_np (pthread_t __target_thread, char *__buf,
          size_t __buflen)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));


extern int pthread_setname_np (pthread_t __target_thread, const char *__name)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));





extern int pthread_getconcurrency (void) __attribute__ ((__nothrow__ , __leaf__));


extern int pthread_setconcurrency (int __level) __attribute__ ((__nothrow__ , __leaf__));







extern int pthread_yield (void) __attribute__ ((__nothrow__ , __leaf__));




extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize,
       const cpu_set_t *__cpuset)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));


extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize,
       cpu_set_t *__cpuset)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
# 470 "/usr/include/pthread.h" 3 4
extern int pthread_once (pthread_once_t *__once_control,
    void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2)));
# 482 "/usr/include/pthread.h" 3 4
extern int pthread_setcancelstate (int __state, int *__oldstate);



extern int pthread_setcanceltype (int __type, int *__oldtype);


extern int pthread_cancel (pthread_t __th);




extern void pthread_testcancel (void);




typedef struct
{
  struct
  {
    __jmp_buf __cancel_jmp_buf;
    int __mask_was_saved;
  } __cancel_jmp_buf[1];
  void *__pad[4];
} __pthread_unwind_buf_t __attribute__ ((__aligned__));
# 516 "/usr/include/pthread.h" 3 4
struct __pthread_cleanup_frame
{
  void (*__cancel_routine) (void *);
  void *__cancel_arg;
  int __do_it;
  int __cancel_type;
};
# 656 "/usr/include/pthread.h" 3 4
extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf)
     ;
# 668 "/usr/include/pthread.h" 3 4
extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf)
  ;
# 691 "/usr/include/pthread.h" 3 4
extern void __pthread_register_cancel_defer (__pthread_unwind_buf_t *__buf)
     ;
# 704 "/usr/include/pthread.h" 3 4
extern void __pthread_unregister_cancel_restore (__pthread_unwind_buf_t *__buf)
  ;



extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf)
     __attribute__ ((__noreturn__))

     __attribute__ ((__weak__))

     ;



struct __jmp_buf_tag;
extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) __attribute__ ((__nothrow__));





extern int pthread_mutex_init (pthread_mutex_t *__mutex,
          const pthread_mutexattr_t *__mutexattr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_mutex_destroy (pthread_mutex_t *__mutex)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_mutex_trylock (pthread_mutex_t *__mutex)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
        const struct timespec *__restrict
        __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));



extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
        clockid_t __clockid,
        const struct timespec *__restrict
        __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));



extern int pthread_mutex_unlock (pthread_mutex_t *__mutex)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_mutex_getprioceiling (const pthread_mutex_t *
      __restrict __mutex,
      int *__restrict __prioceiling)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));



extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex,
      int __prioceiling,
      int *__restrict __old_ceiling)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));




extern int pthread_mutex_consistent (pthread_mutex_t *__mutex)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));

extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 789 "/usr/include/pthread.h" 3 4
extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t *
      __restrict __attr,
      int *__restrict __pshared)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr,
      int __pshared)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict
          __attr, int *__restrict __kind)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));




extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t *
       __restrict __attr,
       int *__restrict __protocol)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));



extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr,
       int __protocol)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t *
          __restrict __attr,
          int *__restrict __prioceiling)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr,
          int __prioceiling)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr,
     int *__robustness)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));

extern int pthread_mutexattr_getrobust_np (const pthread_mutexattr_t *__attr,
        int *__robustness)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));



extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr,
     int __robustness)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));

extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr,
        int __robustness)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 871 "/usr/include/pthread.h" 3 4
extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
    const pthread_rwlockattr_t *__restrict
    __attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
  __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
           const struct timespec *__restrict
           __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));



extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
           clockid_t __clockid,
           const struct timespec *__restrict
           __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));



extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
           const struct timespec *__restrict
           __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));



extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
           clockid_t __clockid,
           const struct timespec *__restrict
           __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));



extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));





extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t *
       __restrict __attr,
       int *__restrict __pshared)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr,
       int __pshared)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t *
       __restrict __attr,
       int *__restrict __pref)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr,
       int __pref) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));







extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
         const pthread_condattr_t *__restrict __cond_attr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_cond_destroy (pthread_cond_t *__cond)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_cond_signal (pthread_cond_t *__cond)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_cond_broadcast (pthread_cond_t *__cond)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));






extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
         pthread_mutex_t *__restrict __mutex)
     __attribute__ ((__nonnull__ (1, 2)));
# 997 "/usr/include/pthread.h" 3 4
extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
       pthread_mutex_t *__restrict __mutex,
       const struct timespec *__restrict __abstime)
     __attribute__ ((__nonnull__ (1, 2, 3)));
# 1010 "/usr/include/pthread.h" 3 4
extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
       pthread_mutex_t *__restrict __mutex,
       __clockid_t __clock_id,
       const struct timespec *__restrict __abstime)
     __attribute__ ((__nonnull__ (1, 2, 4)));





extern int pthread_condattr_init (pthread_condattr_t *__attr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_condattr_destroy (pthread_condattr_t *__attr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_condattr_getpshared (const pthread_condattr_t *
     __restrict __attr,
     int *__restrict __pshared)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_condattr_setpshared (pthread_condattr_t *__attr,
     int __pshared) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_condattr_getclock (const pthread_condattr_t *
          __restrict __attr,
          __clockid_t *__restrict __clock_id)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_condattr_setclock (pthread_condattr_t *__attr,
          __clockid_t __clock_id)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 1056 "/usr/include/pthread.h" 3 4
extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_spin_destroy (pthread_spinlock_t *__lock)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_spin_lock (pthread_spinlock_t *__lock)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_spin_trylock (pthread_spinlock_t *__lock)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_spin_unlock (pthread_spinlock_t *__lock)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));






extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
     const pthread_barrierattr_t *__restrict
     __attr, unsigned int __count)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_barrier_destroy (pthread_barrier_t *__barrier)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_barrier_wait (pthread_barrier_t *__barrier)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t *
        __restrict __attr,
        int *__restrict __pshared)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr,
        int __pshared)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 1123 "/usr/include/pthread.h" 3 4
extern int pthread_key_create (pthread_key_t *__key,
          void (*__destr_function) (void *))
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_key_delete (pthread_key_t __key) __attribute__ ((__nothrow__ , __leaf__));


extern void *pthread_getspecific (pthread_key_t __key) __attribute__ ((__nothrow__ , __leaf__));


extern int pthread_setspecific (pthread_key_t __key,
    const void *__pointer) __attribute__ ((__nothrow__ , __leaf__)) ;




extern int pthread_getcpuclockid (pthread_t __thread_id,
      __clockid_t *__clock_id)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
# 1157 "/usr/include/pthread.h" 3 4
extern int pthread_atfork (void (*__prepare) (void),
      void (*__parent) (void),
      void (*__child) (void)) __attribute__ ((__nothrow__ , __leaf__));
# 1171 "/usr/include/pthread.h" 3 4

# 9 "/home/ubuntu/neovim/src/nvim/os/unix_defs.h" 2
# 1 "/usr/include/aarch64-linux-gnu/sys/param.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/sys/param.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/sys/param.h" 2 3 4


# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/limits.h" 1 3 4
# 34 "/usr/lib/gcc/aarch64-linux-gnu/9/include/limits.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/syslimits.h" 1 3 4






# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/limits.h" 1 3 4
# 194 "/usr/lib/gcc/aarch64-linux-gnu/9/include/limits.h" 3 4
# 1 "/usr/include/limits.h" 1 3 4
# 26 "/usr/include/limits.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4
# 27 "/usr/include/limits.h" 2 3 4
# 183 "/usr/include/limits.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/posix1_lim.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/posix1_lim.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/bits/posix1_lim.h" 2 3 4
# 161 "/usr/include/aarch64-linux-gnu/bits/posix1_lim.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/local_lim.h" 1 3 4
# 39 "/usr/include/aarch64-linux-gnu/bits/local_lim.h" 3 4
# 1 "/usr/include/linux/limits.h" 1 3 4
# 40 "/usr/include/aarch64-linux-gnu/bits/local_lim.h" 2 3 4
# 162 "/usr/include/aarch64-linux-gnu/bits/posix1_lim.h" 2 3 4
# 184 "/usr/include/limits.h" 2 3 4



# 1 "/usr/include/aarch64-linux-gnu/bits/posix2_lim.h" 1 3 4
# 188 "/usr/include/limits.h" 2 3 4



# 1 "/usr/include/aarch64-linux-gnu/bits/xopen_lim.h" 1 3 4
# 64 "/usr/include/aarch64-linux-gnu/bits/xopen_lim.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/uio_lim.h" 1 3 4
# 65 "/usr/include/aarch64-linux-gnu/bits/xopen_lim.h" 2 3 4
# 192 "/usr/include/limits.h" 2 3 4
# 195 "/usr/lib/gcc/aarch64-linux-gnu/9/include/limits.h" 2 3 4
# 8 "/usr/lib/gcc/aarch64-linux-gnu/9/include/syslimits.h" 2 3 4
# 35 "/usr/lib/gcc/aarch64-linux-gnu/9/include/limits.h" 2 3 4
# 27 "/usr/include/aarch64-linux-gnu/sys/param.h" 2 3 4

# 1 "/usr/include/signal.h" 1 3 4
# 27 "/usr/include/signal.h" 3 4



# 1 "/usr/include/aarch64-linux-gnu/bits/signum.h" 1 3 4
# 26 "/usr/include/aarch64-linux-gnu/bits/signum.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/signum-generic.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/signum.h" 2 3 4
# 31 "/usr/include/signal.h" 2 3 4

# 1 "/usr/include/aarch64-linux-gnu/bits/types/sig_atomic_t.h" 1 3 4







typedef __sig_atomic_t sig_atomic_t;
# 33 "/usr/include/signal.h" 2 3 4
# 57 "/usr/include/signal.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/siginfo_t.h" 1 3 4



# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 5 "/usr/include/aarch64-linux-gnu/bits/types/siginfo_t.h" 2 3 4
# 16 "/usr/include/aarch64-linux-gnu/bits/types/siginfo_t.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/siginfo-arch.h" 1 3 4
# 17 "/usr/include/aarch64-linux-gnu/bits/types/siginfo_t.h" 2 3 4
# 36 "/usr/include/aarch64-linux-gnu/bits/types/siginfo_t.h" 3 4
typedef struct
  {
    int si_signo;

    int si_errno;

    int si_code;





    int __pad0;


    union
      {
 int _pad[((128 / sizeof (int)) - 4)];


 struct
   {
     __pid_t si_pid;
     __uid_t si_uid;
   } _kill;


 struct
   {
     int si_tid;
     int si_overrun;
     __sigval_t si_sigval;
   } _timer;


 struct
   {
     __pid_t si_pid;
     __uid_t si_uid;
     __sigval_t si_sigval;
   } _rt;


 struct
   {
     __pid_t si_pid;
     __uid_t si_uid;
     int si_status;
     __clock_t si_utime;
     __clock_t si_stime;
   } _sigchld;


 struct
   {
     void *si_addr;
    
     short int si_addr_lsb;
     union
       {

  struct
    {
      void *_lower;
      void *_upper;
    } _addr_bnd;

  __uint32_t _pkey;
       } _bounds;
   } _sigfault;


 struct
   {
     long int si_band;
     int si_fd;
   } _sigpoll;



 struct
   {
     void *_call_addr;
     int _syscall;
     unsigned int _arch;
   } _sigsys;

      } _sifields;
  } siginfo_t ;
# 58 "/usr/include/signal.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/siginfo-consts.h" 1 3 4
# 35 "/usr/include/aarch64-linux-gnu/bits/siginfo-consts.h" 3 4
enum
{
  SI_ASYNCNL = -60,
  SI_DETHREAD = -7,

  SI_TKILL,
  SI_SIGIO,

  SI_ASYNCIO,
  SI_MESGQ,
  SI_TIMER,





  SI_QUEUE,
  SI_USER,
  SI_KERNEL = 0x80
# 66 "/usr/include/aarch64-linux-gnu/bits/siginfo-consts.h" 3 4
};




enum
{
  ILL_ILLOPC = 1,

  ILL_ILLOPN,

  ILL_ILLADR,

  ILL_ILLTRP,

  ILL_PRVOPC,

  ILL_PRVREG,

  ILL_COPROC,

  ILL_BADSTK,

  ILL_BADIADDR

};


enum
{
  FPE_INTDIV = 1,

  FPE_INTOVF,

  FPE_FLTDIV,

  FPE_FLTOVF,

  FPE_FLTUND,

  FPE_FLTRES,

  FPE_FLTINV,

  FPE_FLTSUB,

  FPE_FLTUNK = 14,

  FPE_CONDTRAP

};


enum
{
  SEGV_MAPERR = 1,

  SEGV_ACCERR,

  SEGV_BNDERR,

  SEGV_PKUERR,

  SEGV_ACCADI,

  SEGV_ADIDERR,

  SEGV_ADIPERR

};


enum
{
  BUS_ADRALN = 1,

  BUS_ADRERR,

  BUS_OBJERR,

  BUS_MCEERR_AR,

  BUS_MCEERR_AO

};




enum
{
  TRAP_BRKPT = 1,

  TRAP_TRACE,

  TRAP_BRANCH,

  TRAP_HWBKPT,

  TRAP_UNK

};




enum
{
  CLD_EXITED = 1,

  CLD_KILLED,

  CLD_DUMPED,

  CLD_TRAPPED,

  CLD_STOPPED,

  CLD_CONTINUED

};


enum
{
  POLL_IN = 1,

  POLL_OUT,

  POLL_MSG,

  POLL_ERR,

  POLL_PRI,

  POLL_HUP

};





# 1 "/usr/include/aarch64-linux-gnu/bits/siginfo-consts-arch.h" 1 3 4
# 210 "/usr/include/aarch64-linux-gnu/bits/siginfo-consts.h" 2 3 4
# 59 "/usr/include/signal.h" 2 3 4



# 1 "/usr/include/aarch64-linux-gnu/bits/types/sigval_t.h" 1 3 4
# 16 "/usr/include/aarch64-linux-gnu/bits/types/sigval_t.h" 3 4
typedef __sigval_t sigval_t;
# 63 "/usr/include/signal.h" 2 3 4




# 1 "/usr/include/aarch64-linux-gnu/bits/sigevent-consts.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/sigevent-consts.h" 3 4
enum
{
  SIGEV_SIGNAL = 0,

  SIGEV_NONE,

  SIGEV_THREAD,


  SIGEV_THREAD_ID = 4


};
# 68 "/usr/include/signal.h" 2 3 4




typedef void (*__sighandler_t) (int);




extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
     __attribute__ ((__nothrow__ , __leaf__));

extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler)
     __attribute__ ((__nothrow__ , __leaf__));






extern __sighandler_t signal (int __sig, __sighandler_t __handler)
     __attribute__ ((__nothrow__ , __leaf__));
# 112 "/usr/include/signal.h" 3 4
extern int kill (__pid_t __pid, int __sig) __attribute__ ((__nothrow__ , __leaf__));






extern int killpg (__pid_t __pgrp, int __sig) __attribute__ ((__nothrow__ , __leaf__));



extern int raise (int __sig) __attribute__ ((__nothrow__ , __leaf__));



extern __sighandler_t ssignal (int __sig, __sighandler_t __handler)
     __attribute__ ((__nothrow__ , __leaf__));
extern int gsignal (int __sig) __attribute__ ((__nothrow__ , __leaf__));




extern void psignal (int __sig, const char *__s);


extern void psiginfo (const siginfo_t *__pinfo, const char *__s);
# 151 "/usr/include/signal.h" 3 4
extern int sigpause (int __sig) __asm__ ("__xpg_sigpause");
# 170 "/usr/include/signal.h" 3 4
extern int sigblock (int __mask) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));


extern int sigsetmask (int __mask) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));


extern int siggetmask (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
# 185 "/usr/include/signal.h" 3 4
typedef __sighandler_t sighandler_t;




typedef __sighandler_t sig_t;





extern int sigemptyset (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int sigfillset (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int sigaddset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int sigdelset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int sigismember (const sigset_t *__set, int __signo)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern int sigisemptyset (const sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int sigandset (sigset_t *__set, const sigset_t *__left,
        const sigset_t *__right) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3)));


extern int sigorset (sigset_t *__set, const sigset_t *__left,
       const sigset_t *__right) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3)));




# 1 "/usr/include/aarch64-linux-gnu/bits/sigaction.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/sigaction.h" 3 4
struct sigaction
  {


    union
      {

 __sighandler_t sa_handler;

 void (*sa_sigaction) (int, siginfo_t *, void *);
      }
    __sigaction_handler;







    __sigset_t sa_mask;


    int sa_flags;


    void (*sa_restorer) (void);
  };
# 227 "/usr/include/signal.h" 2 3 4


extern int sigprocmask (int __how, const sigset_t *__restrict __set,
   sigset_t *__restrict __oset) __attribute__ ((__nothrow__ , __leaf__));






extern int sigsuspend (const sigset_t *__set) __attribute__ ((__nonnull__ (1)));


extern int sigaction (int __sig, const struct sigaction *__restrict __act,
        struct sigaction *__restrict __oact) __attribute__ ((__nothrow__ , __leaf__));


extern int sigpending (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));







extern int sigwait (const sigset_t *__restrict __set, int *__restrict __sig)
     __attribute__ ((__nonnull__ (1, 2)));







extern int sigwaitinfo (const sigset_t *__restrict __set,
   siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1)));






extern int sigtimedwait (const sigset_t *__restrict __set,
    siginfo_t *__restrict __info,
    const struct timespec *__restrict __timeout)
     __attribute__ ((__nonnull__ (1)));



extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val)
     __attribute__ ((__nothrow__ , __leaf__));
# 286 "/usr/include/signal.h" 3 4
extern const char *const _sys_siglist[(64 + 1)];
extern const char *const sys_siglist[(64 + 1)];



# 1 "/usr/include/aarch64-linux-gnu/bits/sigcontext.h" 1 3 4
# 30 "/usr/include/aarch64-linux-gnu/bits/sigcontext.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/sigcontext.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/asm/sigcontext.h" 3 4
struct sigcontext {
 __u64 fault_address;

 __u64 regs[31];
 __u64 sp;
 __u64 pc;
 __u64 pstate;

 __u8 __reserved[4096] __attribute__((__aligned__(16)));
};
# 66 "/usr/include/aarch64-linux-gnu/asm/sigcontext.h" 3 4
struct _aarch64_ctx {
 __u32 magic;
 __u32 size;
};



struct fpsimd_context {
 struct _aarch64_ctx head;
 __u32 fpsr;
 __u32 fpcr;
 __uint128_t vregs[32];
};
# 92 "/usr/include/aarch64-linux-gnu/asm/sigcontext.h" 3 4
struct esr_context {
 struct _aarch64_ctx head;
 __u64 esr;
};
# 125 "/usr/include/aarch64-linux-gnu/asm/sigcontext.h" 3 4
struct extra_context {
 struct _aarch64_ctx head;
 __u64 datap;
 __u32 size;
 __u32 __reserved[3];
};



struct sve_context {
 struct _aarch64_ctx head;
 __u16 vl;
 __u16 __reserved[3];
};



# 1 "/usr/include/aarch64-linux-gnu/asm/sve_context.h" 1 3 4
# 143 "/usr/include/aarch64-linux-gnu/asm/sigcontext.h" 2 3 4
# 31 "/usr/include/aarch64-linux-gnu/bits/sigcontext.h" 2 3 4



# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 35 "/usr/include/aarch64-linux-gnu/bits/sigcontext.h" 2 3 4
# 292 "/usr/include/signal.h" 2 3 4


extern int sigreturn (struct sigcontext *__scp) __attribute__ ((__nothrow__ , __leaf__));






# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 302 "/usr/include/signal.h" 2 3 4

# 1 "/usr/include/aarch64-linux-gnu/bits/types/stack_t.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/types/stack_t.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/types/stack_t.h" 2 3 4


typedef struct
  {
    void *ss_sp;
    int ss_flags;
    size_t ss_size;
  } stack_t;
# 304 "/usr/include/signal.h" 2 3 4


# 1 "/usr/include/aarch64-linux-gnu/sys/ucontext.h" 1 3 4
# 36 "/usr/include/aarch64-linux-gnu/sys/ucontext.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 1 3 4
# 33 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/sys/time.h" 1 3 4
# 34 "/usr/include/aarch64-linux-gnu/sys/time.h" 3 4

# 52 "/usr/include/aarch64-linux-gnu/sys/time.h" 3 4
struct timezone
  {
    int tz_minuteswest;
    int tz_dsttime;
  };
# 66 "/usr/include/aarch64-linux-gnu/sys/time.h" 3 4
extern int gettimeofday (struct timeval *__restrict __tv,
    void *__restrict __tz) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));







extern int settimeofday (const struct timeval *__tv,
    const struct timezone *__tz)
     __attribute__ ((__nothrow__ , __leaf__));





extern int adjtime (const struct timeval *__delta,
      struct timeval *__olddelta) __attribute__ ((__nothrow__ , __leaf__));




enum __itimer_which
  {

    ITIMER_REAL = 0,


    ITIMER_VIRTUAL = 1,



    ITIMER_PROF = 2

  };



struct itimerval
  {

    struct timeval it_interval;

    struct timeval it_value;
  };




typedef enum __itimer_which __itimer_which_t;






extern int getitimer (__itimer_which_t __which,
        struct itimerval *__value) __attribute__ ((__nothrow__ , __leaf__));




extern int setitimer (__itimer_which_t __which,
        const struct itimerval *__restrict __new,
        struct itimerval *__restrict __old) __attribute__ ((__nothrow__ , __leaf__));




extern int utimes (const char *__file, const struct timeval __tvp[2])
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern int lutimes (const char *__file, const struct timeval __tvp[2])
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int futimes (int __fd, const struct timeval __tvp[2]) __attribute__ ((__nothrow__ , __leaf__));






extern int futimesat (int __fd, const char *__file,
        const struct timeval __tvp[2]) __attribute__ ((__nothrow__ , __leaf__));
# 187 "/usr/include/aarch64-linux-gnu/sys/time.h" 3 4

# 34 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 2 3 4

# 1 "/usr/include/aarch64-linux-gnu/sys/user.h" 1 3 4
# 22 "/usr/include/aarch64-linux-gnu/sys/user.h" 3 4
struct user_regs_struct
{
  unsigned long long regs[31];
  unsigned long long sp;
  unsigned long long pc;
  unsigned long long pstate;
};

struct user_fpsimd_struct
{
  __uint128_t vregs[32];
  unsigned int fpsr;
  unsigned int fpcr;
};
# 36 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 2 3 4




# 1 "/usr/include/aarch64-linux-gnu/bits/procfs.h" 1 3 4
# 25 "/usr/include/aarch64-linux-gnu/bits/procfs.h" 3 4
typedef __uint64_t elf_greg_t;






typedef elf_greg_t elf_gregset_t[(sizeof (struct user_regs_struct) / sizeof (elf_greg_t))];


typedef struct user_fpsimd_struct elf_fpregset_t;
# 41 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 2 3 4



# 1 "/usr/include/aarch64-linux-gnu/bits/procfs-id.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/procfs-id.h" 3 4
typedef unsigned int __pr_uid_t;
typedef unsigned int __pr_gid_t;
# 45 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 2 3 4




struct elf_siginfo
  {
    int si_signo;
    int si_code;
    int si_errno;
  };
# 63 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 3 4
struct elf_prstatus
  {
    struct elf_siginfo pr_info;
    short int pr_cursig;
    unsigned long int pr_sigpend;
    unsigned long int pr_sighold;
    __pid_t pr_pid;
    __pid_t pr_ppid;
    __pid_t pr_pgrp;
    __pid_t pr_sid;
    struct timeval pr_utime;
    struct timeval pr_stime;
    struct timeval pr_cutime;
    struct timeval pr_cstime;
    elf_gregset_t pr_reg;
    int pr_fpvalid;
  };




struct elf_prpsinfo
  {
    char pr_state;
    char pr_sname;
    char pr_zomb;
    char pr_nice;
    unsigned long int pr_flag;
    __pr_uid_t pr_uid;
    __pr_gid_t pr_gid;
    int pr_pid, pr_ppid, pr_pgrp, pr_sid;

    char pr_fname[16];
    char pr_psargs[(80)];
  };






typedef void *psaddr_t;

# 1 "/usr/include/aarch64-linux-gnu/bits/procfs-prregset.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/procfs-prregset.h" 3 4
typedef elf_gregset_t __prgregset_t;
typedef elf_fpregset_t __prfpregset_t;
# 107 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 2 3 4


typedef __prgregset_t prgregset_t;
typedef __prfpregset_t prfpregset_t;



typedef __pid_t lwpid_t;


typedef struct elf_prstatus prstatus_t;
typedef struct elf_prpsinfo prpsinfo_t;





# 1 "/usr/include/aarch64-linux-gnu/bits/procfs-extra.h" 1 3 4
# 125 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 2 3 4
# 37 "/usr/include/aarch64-linux-gnu/sys/ucontext.h" 2 3 4


typedef elf_greg_t greg_t;


typedef elf_gregset_t gregset_t;


typedef elf_fpregset_t fpregset_t;






typedef struct
  {
    unsigned long long int fault_address;
    unsigned long long int regs[31];
    unsigned long long int sp;
    unsigned long long int pc;
    unsigned long long int pstate;




    unsigned char __reserved[4096] __attribute__ ((__aligned__ (16)));
  } mcontext_t;


typedef struct ucontext_t
  {
    unsigned long uc_flags;
    struct ucontext_t *uc_link;
    stack_t uc_stack;
    sigset_t uc_sigmask;
    mcontext_t uc_mcontext;
  } ucontext_t;
# 307 "/usr/include/signal.h" 2 3 4







extern int siginterrupt (int __sig, int __interrupt) __attribute__ ((__nothrow__ , __leaf__));

# 1 "/usr/include/aarch64-linux-gnu/bits/sigstack.h" 1 3 4
# 317 "/usr/include/signal.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/ss_flags.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/ss_flags.h" 3 4
enum
{
  SS_ONSTACK = 1,

  SS_DISABLE

};
# 318 "/usr/include/signal.h" 2 3 4



extern int sigaltstack (const stack_t *__restrict __ss,
   stack_t *__restrict __oss) __attribute__ ((__nothrow__ , __leaf__));




# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_sigstack.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/types/struct_sigstack.h" 3 4
struct sigstack
  {
    void *ss_sp;
    int ss_onstack;
  };
# 328 "/usr/include/signal.h" 2 3 4







extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));






extern int sighold (int __sig) __attribute__ ((__nothrow__ , __leaf__));


extern int sigrelse (int __sig) __attribute__ ((__nothrow__ , __leaf__));


extern int sigignore (int __sig) __attribute__ ((__nothrow__ , __leaf__));


extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __attribute__ ((__nothrow__ , __leaf__));






# 1 "/usr/include/aarch64-linux-gnu/bits/sigthread.h" 1 3 4
# 31 "/usr/include/aarch64-linux-gnu/bits/sigthread.h" 3 4
extern int pthread_sigmask (int __how,
       const __sigset_t *__restrict __newmask,
       __sigset_t *__restrict __oldmask)__attribute__ ((__nothrow__ , __leaf__));


extern int pthread_kill (pthread_t __threadid, int __signo) __attribute__ ((__nothrow__ , __leaf__));



extern int pthread_sigqueue (pthread_t __threadid, int __signo,
        const union sigval __value) __attribute__ ((__nothrow__ , __leaf__));
# 360 "/usr/include/signal.h" 2 3 4






extern int __libc_current_sigrtmin (void) __attribute__ ((__nothrow__ , __leaf__));

extern int __libc_current_sigrtmax (void) __attribute__ ((__nothrow__ , __leaf__));





# 1 "/usr/include/aarch64-linux-gnu/bits/signal_ext.h" 1 3 4
# 29 "/usr/include/aarch64-linux-gnu/bits/signal_ext.h" 3 4
extern int tgkill (__pid_t __tgid, __pid_t __tid, int __signal);
# 375 "/usr/include/signal.h" 2 3 4


# 29 "/usr/include/aarch64-linux-gnu/sys/param.h" 2 3 4


# 1 "/usr/include/aarch64-linux-gnu/bits/param.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/bits/param.h" 3 4
# 1 "/usr/include/linux/param.h" 1 3 4




# 1 "/usr/include/aarch64-linux-gnu/asm/param.h" 1 3 4
# 22 "/usr/include/aarch64-linux-gnu/asm/param.h" 3 4
# 1 "/usr/include/asm-generic/param.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/asm/param.h" 2 3 4
# 6 "/usr/include/linux/param.h" 2 3 4
# 29 "/usr/include/aarch64-linux-gnu/bits/param.h" 2 3 4
# 32 "/usr/include/aarch64-linux-gnu/sys/param.h" 2 3 4
# 10 "/home/ubuntu/neovim/src/nvim/os/unix_defs.h" 2

# 1 "/usr/include/unistd.h" 1 3 4
# 27 "/usr/include/unistd.h" 3 4

# 202 "/usr/include/unistd.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/posix_opt.h" 1 3 4
# 203 "/usr/include/unistd.h" 2 3 4



# 1 "/usr/include/aarch64-linux-gnu/bits/environments.h" 1 3 4
# 22 "/usr/include/aarch64-linux-gnu/bits/environments.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/environments.h" 2 3 4
# 207 "/usr/include/unistd.h" 2 3 4
# 226 "/usr/include/unistd.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 227 "/usr/include/unistd.h" 2 3 4
# 287 "/usr/include/unistd.h" 3 4
extern int access (const char *__name, int __type) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));




extern int euidaccess (const char *__name, int __type)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int eaccess (const char *__name, int __type)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));






extern int faccessat (int __fd, const char *__file, int __type, int __flag)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) ;
# 334 "/usr/include/unistd.h" 3 4
extern __off_t lseek (int __fd, __off_t __offset, int __whence) __attribute__ ((__nothrow__ , __leaf__));
# 345 "/usr/include/unistd.h" 3 4
extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
     __attribute__ ((__nothrow__ , __leaf__));






extern int close (int __fd);






extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ;





extern ssize_t write (int __fd, const void *__buf, size_t __n) ;
# 376 "/usr/include/unistd.h" 3 4
extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
        __off_t __offset) ;






extern ssize_t pwrite (int __fd, const void *__buf, size_t __n,
         __off_t __offset) ;
# 404 "/usr/include/unistd.h" 3 4
extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
   __off64_t __offset) ;


extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n,
    __off64_t __offset) ;







extern int pipe (int __pipedes[2]) __attribute__ ((__nothrow__ , __leaf__)) ;




extern int pipe2 (int __pipedes[2], int __flags) __attribute__ ((__nothrow__ , __leaf__)) ;
# 432 "/usr/include/unistd.h" 3 4
extern unsigned int alarm (unsigned int __seconds) __attribute__ ((__nothrow__ , __leaf__));
# 444 "/usr/include/unistd.h" 3 4
extern unsigned int sleep (unsigned int __seconds);







extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
     __attribute__ ((__nothrow__ , __leaf__));






extern int usleep (__useconds_t __useconds);
# 469 "/usr/include/unistd.h" 3 4
extern int pause (void);



extern int chown (const char *__file, __uid_t __owner, __gid_t __group)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;



extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__ , __leaf__)) ;




extern int lchown (const char *__file, __uid_t __owner, __gid_t __group)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;






extern int fchownat (int __fd, const char *__file, __uid_t __owner,
       __gid_t __group, int __flag)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) ;



extern int chdir (const char *__path) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;



extern int fchdir (int __fd) __attribute__ ((__nothrow__ , __leaf__)) ;
# 511 "/usr/include/unistd.h" 3 4
extern char *getcwd (char *__buf, size_t __size) __attribute__ ((__nothrow__ , __leaf__)) ;





extern char *get_current_dir_name (void) __attribute__ ((__nothrow__ , __leaf__));







extern char *getwd (char *__buf)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) ;




extern int dup (int __fd) __attribute__ ((__nothrow__ , __leaf__)) ;


extern int dup2 (int __fd, int __fd2) __attribute__ ((__nothrow__ , __leaf__));




extern int dup3 (int __fd, int __fd2, int __flags) __attribute__ ((__nothrow__ , __leaf__));



extern char **__environ;

extern char **environ;





extern int execve (const char *__path, char *const __argv[],
     char *const __envp[]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));




extern int fexecve (int __fd, char *const __argv[], char *const __envp[])
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));




extern int execv (const char *__path, char *const __argv[])
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));



extern int execle (const char *__path, const char *__arg, ...)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));



extern int execl (const char *__path, const char *__arg, ...)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));



extern int execvp (const char *__file, char *const __argv[])
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));




extern int execlp (const char *__file, const char *__arg, ...)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));




extern int execvpe (const char *__file, char *const __argv[],
      char *const __envp[])
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));





extern int nice (int __inc) __attribute__ ((__nothrow__ , __leaf__)) ;




extern void _exit (int __status) __attribute__ ((__noreturn__));





# 1 "/usr/include/aarch64-linux-gnu/bits/confname.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/confname.h" 3 4
enum
  {
    _PC_LINK_MAX,

    _PC_MAX_CANON,

    _PC_MAX_INPUT,

    _PC_NAME_MAX,

    _PC_PATH_MAX,

    _PC_PIPE_BUF,

    _PC_CHOWN_RESTRICTED,

    _PC_NO_TRUNC,

    _PC_VDISABLE,

    _PC_SYNC_IO,

    _PC_ASYNC_IO,

    _PC_PRIO_IO,

    _PC_SOCK_MAXBUF,

    _PC_FILESIZEBITS,

    _PC_REC_INCR_XFER_SIZE,

    _PC_REC_MAX_XFER_SIZE,

    _PC_REC_MIN_XFER_SIZE,

    _PC_REC_XFER_ALIGN,

    _PC_ALLOC_SIZE_MIN,

    _PC_SYMLINK_MAX,

    _PC_2_SYMLINKS

  };


enum
  {
    _SC_ARG_MAX,

    _SC_CHILD_MAX,

    _SC_CLK_TCK,

    _SC_NGROUPS_MAX,

    _SC_OPEN_MAX,

    _SC_STREAM_MAX,

    _SC_TZNAME_MAX,

    _SC_JOB_CONTROL,

    _SC_SAVED_IDS,

    _SC_REALTIME_SIGNALS,

    _SC_PRIORITY_SCHEDULING,

    _SC_TIMERS,

    _SC_ASYNCHRONOUS_IO,

    _SC_PRIORITIZED_IO,

    _SC_SYNCHRONIZED_IO,

    _SC_FSYNC,

    _SC_MAPPED_FILES,

    _SC_MEMLOCK,

    _SC_MEMLOCK_RANGE,

    _SC_MEMORY_PROTECTION,

    _SC_MESSAGE_PASSING,

    _SC_SEMAPHORES,

    _SC_SHARED_MEMORY_OBJECTS,

    _SC_AIO_LISTIO_MAX,

    _SC_AIO_MAX,

    _SC_AIO_PRIO_DELTA_MAX,

    _SC_DELAYTIMER_MAX,

    _SC_MQ_OPEN_MAX,

    _SC_MQ_PRIO_MAX,

    _SC_VERSION,

    _SC_PAGESIZE,


    _SC_RTSIG_MAX,

    _SC_SEM_NSEMS_MAX,

    _SC_SEM_VALUE_MAX,

    _SC_SIGQUEUE_MAX,

    _SC_TIMER_MAX,




    _SC_BC_BASE_MAX,

    _SC_BC_DIM_MAX,

    _SC_BC_SCALE_MAX,

    _SC_BC_STRING_MAX,

    _SC_COLL_WEIGHTS_MAX,

    _SC_EQUIV_CLASS_MAX,

    _SC_EXPR_NEST_MAX,

    _SC_LINE_MAX,

    _SC_RE_DUP_MAX,

    _SC_CHARCLASS_NAME_MAX,


    _SC_2_VERSION,

    _SC_2_C_BIND,

    _SC_2_C_DEV,

    _SC_2_FORT_DEV,

    _SC_2_FORT_RUN,

    _SC_2_SW_DEV,

    _SC_2_LOCALEDEF,


    _SC_PII,

    _SC_PII_XTI,

    _SC_PII_SOCKET,

    _SC_PII_INTERNET,

    _SC_PII_OSI,

    _SC_POLL,

    _SC_SELECT,

    _SC_UIO_MAXIOV,

    _SC_IOV_MAX = _SC_UIO_MAXIOV,

    _SC_PII_INTERNET_STREAM,

    _SC_PII_INTERNET_DGRAM,

    _SC_PII_OSI_COTS,

    _SC_PII_OSI_CLTS,

    _SC_PII_OSI_M,

    _SC_T_IOV_MAX,



    _SC_THREADS,

    _SC_THREAD_SAFE_FUNCTIONS,

    _SC_GETGR_R_SIZE_MAX,

    _SC_GETPW_R_SIZE_MAX,

    _SC_LOGIN_NAME_MAX,

    _SC_TTY_NAME_MAX,

    _SC_THREAD_DESTRUCTOR_ITERATIONS,

    _SC_THREAD_KEYS_MAX,

    _SC_THREAD_STACK_MIN,

    _SC_THREAD_THREADS_MAX,

    _SC_THREAD_ATTR_STACKADDR,

    _SC_THREAD_ATTR_STACKSIZE,

    _SC_THREAD_PRIORITY_SCHEDULING,

    _SC_THREAD_PRIO_INHERIT,

    _SC_THREAD_PRIO_PROTECT,

    _SC_THREAD_PROCESS_SHARED,


    _SC_NPROCESSORS_CONF,

    _SC_NPROCESSORS_ONLN,

    _SC_PHYS_PAGES,

    _SC_AVPHYS_PAGES,

    _SC_ATEXIT_MAX,

    _SC_PASS_MAX,


    _SC_XOPEN_VERSION,

    _SC_XOPEN_XCU_VERSION,

    _SC_XOPEN_UNIX,

    _SC_XOPEN_CRYPT,

    _SC_XOPEN_ENH_I18N,

    _SC_XOPEN_SHM,


    _SC_2_CHAR_TERM,

    _SC_2_C_VERSION,

    _SC_2_UPE,


    _SC_XOPEN_XPG2,

    _SC_XOPEN_XPG3,

    _SC_XOPEN_XPG4,


    _SC_CHAR_BIT,

    _SC_CHAR_MAX,

    _SC_CHAR_MIN,

    _SC_INT_MAX,

    _SC_INT_MIN,

    _SC_LONG_BIT,

    _SC_WORD_BIT,

    _SC_MB_LEN_MAX,

    _SC_NZERO,

    _SC_SSIZE_MAX,

    _SC_SCHAR_MAX,

    _SC_SCHAR_MIN,

    _SC_SHRT_MAX,

    _SC_SHRT_MIN,

    _SC_UCHAR_MAX,

    _SC_UINT_MAX,

    _SC_ULONG_MAX,

    _SC_USHRT_MAX,


    _SC_NL_ARGMAX,

    _SC_NL_LANGMAX,

    _SC_NL_MSGMAX,

    _SC_NL_NMAX,

    _SC_NL_SETMAX,

    _SC_NL_TEXTMAX,


    _SC_XBS5_ILP32_OFF32,

    _SC_XBS5_ILP32_OFFBIG,

    _SC_XBS5_LP64_OFF64,

    _SC_XBS5_LPBIG_OFFBIG,


    _SC_XOPEN_LEGACY,

    _SC_XOPEN_REALTIME,

    _SC_XOPEN_REALTIME_THREADS,


    _SC_ADVISORY_INFO,

    _SC_BARRIERS,

    _SC_BASE,

    _SC_C_LANG_SUPPORT,

    _SC_C_LANG_SUPPORT_R,

    _SC_CLOCK_SELECTION,

    _SC_CPUTIME,

    _SC_THREAD_CPUTIME,

    _SC_DEVICE_IO,

    _SC_DEVICE_SPECIFIC,

    _SC_DEVICE_SPECIFIC_R,

    _SC_FD_MGMT,

    _SC_FIFO,

    _SC_PIPE,

    _SC_FILE_ATTRIBUTES,

    _SC_FILE_LOCKING,

    _SC_FILE_SYSTEM,

    _SC_MONOTONIC_CLOCK,

    _SC_MULTI_PROCESS,

    _SC_SINGLE_PROCESS,

    _SC_NETWORKING,

    _SC_READER_WRITER_LOCKS,

    _SC_SPIN_LOCKS,

    _SC_REGEXP,

    _SC_REGEX_VERSION,

    _SC_SHELL,

    _SC_SIGNALS,

    _SC_SPAWN,

    _SC_SPORADIC_SERVER,

    _SC_THREAD_SPORADIC_SERVER,

    _SC_SYSTEM_DATABASE,

    _SC_SYSTEM_DATABASE_R,

    _SC_TIMEOUTS,

    _SC_TYPED_MEMORY_OBJECTS,

    _SC_USER_GROUPS,

    _SC_USER_GROUPS_R,

    _SC_2_PBS,

    _SC_2_PBS_ACCOUNTING,

    _SC_2_PBS_LOCATE,

    _SC_2_PBS_MESSAGE,

    _SC_2_PBS_TRACK,

    _SC_SYMLOOP_MAX,

    _SC_STREAMS,

    _SC_2_PBS_CHECKPOINT,


    _SC_V6_ILP32_OFF32,

    _SC_V6_ILP32_OFFBIG,

    _SC_V6_LP64_OFF64,

    _SC_V6_LPBIG_OFFBIG,


    _SC_HOST_NAME_MAX,

    _SC_TRACE,

    _SC_TRACE_EVENT_FILTER,

    _SC_TRACE_INHERIT,

    _SC_TRACE_LOG,


    _SC_LEVEL1_ICACHE_SIZE,

    _SC_LEVEL1_ICACHE_ASSOC,

    _SC_LEVEL1_ICACHE_LINESIZE,

    _SC_LEVEL1_DCACHE_SIZE,

    _SC_LEVEL1_DCACHE_ASSOC,

    _SC_LEVEL1_DCACHE_LINESIZE,

    _SC_LEVEL2_CACHE_SIZE,

    _SC_LEVEL2_CACHE_ASSOC,

    _SC_LEVEL2_CACHE_LINESIZE,

    _SC_LEVEL3_CACHE_SIZE,

    _SC_LEVEL3_CACHE_ASSOC,

    _SC_LEVEL3_CACHE_LINESIZE,

    _SC_LEVEL4_CACHE_SIZE,

    _SC_LEVEL4_CACHE_ASSOC,

    _SC_LEVEL4_CACHE_LINESIZE,



    _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,

    _SC_RAW_SOCKETS,


    _SC_V7_ILP32_OFF32,

    _SC_V7_ILP32_OFFBIG,

    _SC_V7_LP64_OFF64,

    _SC_V7_LPBIG_OFFBIG,


    _SC_SS_REPL_MAX,


    _SC_TRACE_EVENT_NAME_MAX,

    _SC_TRACE_NAME_MAX,

    _SC_TRACE_SYS_MAX,

    _SC_TRACE_USER_EVENT_MAX,


    _SC_XOPEN_STREAMS,


    _SC_THREAD_ROBUST_PRIO_INHERIT,

    _SC_THREAD_ROBUST_PRIO_PROTECT

  };


enum
  {
    _CS_PATH,


    _CS_V6_WIDTH_RESTRICTED_ENVS,



    _CS_GNU_LIBC_VERSION,

    _CS_GNU_LIBPTHREAD_VERSION,


    _CS_V5_WIDTH_RESTRICTED_ENVS,



    _CS_V7_WIDTH_RESTRICTED_ENVS,



    _CS_LFS_CFLAGS = 1000,

    _CS_LFS_LDFLAGS,

    _CS_LFS_LIBS,

    _CS_LFS_LINTFLAGS,

    _CS_LFS64_CFLAGS,

    _CS_LFS64_LDFLAGS,

    _CS_LFS64_LIBS,

    _CS_LFS64_LINTFLAGS,


    _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,

    _CS_XBS5_ILP32_OFF32_LDFLAGS,

    _CS_XBS5_ILP32_OFF32_LIBS,

    _CS_XBS5_ILP32_OFF32_LINTFLAGS,

    _CS_XBS5_ILP32_OFFBIG_CFLAGS,

    _CS_XBS5_ILP32_OFFBIG_LDFLAGS,

    _CS_XBS5_ILP32_OFFBIG_LIBS,

    _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,

    _CS_XBS5_LP64_OFF64_CFLAGS,

    _CS_XBS5_LP64_OFF64_LDFLAGS,

    _CS_XBS5_LP64_OFF64_LIBS,

    _CS_XBS5_LP64_OFF64_LINTFLAGS,

    _CS_XBS5_LPBIG_OFFBIG_CFLAGS,

    _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,

    _CS_XBS5_LPBIG_OFFBIG_LIBS,

    _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,


    _CS_POSIX_V6_ILP32_OFF32_CFLAGS,

    _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,

    _CS_POSIX_V6_ILP32_OFF32_LIBS,

    _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,

    _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,

    _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,

    _CS_POSIX_V6_ILP32_OFFBIG_LIBS,

    _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,

    _CS_POSIX_V6_LP64_OFF64_CFLAGS,

    _CS_POSIX_V6_LP64_OFF64_LDFLAGS,

    _CS_POSIX_V6_LP64_OFF64_LIBS,

    _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,

    _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,

    _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,

    _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,

    _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS,


    _CS_POSIX_V7_ILP32_OFF32_CFLAGS,

    _CS_POSIX_V7_ILP32_OFF32_LDFLAGS,

    _CS_POSIX_V7_ILP32_OFF32_LIBS,

    _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS,

    _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS,

    _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS,

    _CS_POSIX_V7_ILP32_OFFBIG_LIBS,

    _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS,

    _CS_POSIX_V7_LP64_OFF64_CFLAGS,

    _CS_POSIX_V7_LP64_OFF64_LDFLAGS,

    _CS_POSIX_V7_LP64_OFF64_LIBS,

    _CS_POSIX_V7_LP64_OFF64_LINTFLAGS,

    _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS,

    _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS,

    _CS_POSIX_V7_LPBIG_OFFBIG_LIBS,

    _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS,


    _CS_V6_ENV,

    _CS_V7_ENV

  };
# 610 "/usr/include/unistd.h" 2 3 4


extern long int pathconf (const char *__path, int __name)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern long int fpathconf (int __fd, int __name) __attribute__ ((__nothrow__ , __leaf__));


extern long int sysconf (int __name) __attribute__ ((__nothrow__ , __leaf__));



extern size_t confstr (int __name, char *__buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__));




extern __pid_t getpid (void) __attribute__ ((__nothrow__ , __leaf__));


extern __pid_t getppid (void) __attribute__ ((__nothrow__ , __leaf__));


extern __pid_t getpgrp (void) __attribute__ ((__nothrow__ , __leaf__));


extern __pid_t __getpgid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__));

extern __pid_t getpgid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__));






extern int setpgid (__pid_t __pid, __pid_t __pgid) __attribute__ ((__nothrow__ , __leaf__));
# 660 "/usr/include/unistd.h" 3 4
extern int setpgrp (void) __attribute__ ((__nothrow__ , __leaf__));






extern __pid_t setsid (void) __attribute__ ((__nothrow__ , __leaf__));



extern __pid_t getsid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__));



extern __uid_t getuid (void) __attribute__ ((__nothrow__ , __leaf__));


extern __uid_t geteuid (void) __attribute__ ((__nothrow__ , __leaf__));


extern __gid_t getgid (void) __attribute__ ((__nothrow__ , __leaf__));


extern __gid_t getegid (void) __attribute__ ((__nothrow__ , __leaf__));




extern int getgroups (int __size, __gid_t __list[]) __attribute__ ((__nothrow__ , __leaf__)) ;



extern int group_member (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__));






extern int setuid (__uid_t __uid) __attribute__ ((__nothrow__ , __leaf__)) ;




extern int setreuid (__uid_t __ruid, __uid_t __euid) __attribute__ ((__nothrow__ , __leaf__)) ;




extern int seteuid (__uid_t __uid) __attribute__ ((__nothrow__ , __leaf__)) ;






extern int setgid (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__)) ;




extern int setregid (__gid_t __rgid, __gid_t __egid) __attribute__ ((__nothrow__ , __leaf__)) ;




extern int setegid (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__)) ;





extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid)
     __attribute__ ((__nothrow__ , __leaf__));



extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
     __attribute__ ((__nothrow__ , __leaf__));



extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
     __attribute__ ((__nothrow__ , __leaf__)) ;



extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
     __attribute__ ((__nothrow__ , __leaf__)) ;






extern __pid_t fork (void) __attribute__ ((__nothrow__));







extern __pid_t vfork (void) __attribute__ ((__nothrow__ , __leaf__));





extern char *ttyname (int __fd) __attribute__ ((__nothrow__ , __leaf__));



extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) ;



extern int isatty (int __fd) __attribute__ ((__nothrow__ , __leaf__));




extern int ttyslot (void) __attribute__ ((__nothrow__ , __leaf__));




extern int link (const char *__from, const char *__to)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) ;




extern int linkat (int __fromfd, const char *__from, int __tofd,
     const char *__to, int __flags)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4))) ;




extern int symlink (const char *__from, const char *__to)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) ;




extern ssize_t readlink (const char *__restrict __path,
    char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) ;




extern int symlinkat (const char *__from, int __tofd,
        const char *__to) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))) ;


extern ssize_t readlinkat (int __fd, const char *__restrict __path,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))) ;



extern int unlink (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern int unlinkat (int __fd, const char *__name, int __flag)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));



extern int rmdir (const char *__path) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern __pid_t tcgetpgrp (int __fd) __attribute__ ((__nothrow__ , __leaf__));


extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __attribute__ ((__nothrow__ , __leaf__));






extern char *getlogin (void);







extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1)));




extern int setlogin (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));







# 1 "/usr/include/aarch64-linux-gnu/bits/getopt_posix.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/getopt_posix.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/getopt_core.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/bits/getopt_core.h" 3 4








extern char *optarg;
# 50 "/usr/include/aarch64-linux-gnu/bits/getopt_core.h" 3 4
extern int optind;




extern int opterr;



extern int optopt;
# 91 "/usr/include/aarch64-linux-gnu/bits/getopt_core.h" 3 4
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
       __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));


# 28 "/usr/include/aarch64-linux-gnu/bits/getopt_posix.h" 2 3 4


# 49 "/usr/include/aarch64-linux-gnu/bits/getopt_posix.h" 3 4

# 870 "/usr/include/unistd.h" 2 3 4







extern int gethostname (char *__name, size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));






extern int sethostname (const char *__name, size_t __len)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;



extern int sethostid (long int __id) __attribute__ ((__nothrow__ , __leaf__)) ;





extern int getdomainname (char *__name, size_t __len)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
extern int setdomainname (const char *__name, size_t __len)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;





extern int vhangup (void) __attribute__ ((__nothrow__ , __leaf__));


extern int revoke (const char *__file) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;







extern int profil (unsigned short int *__sample_buffer, size_t __size,
     size_t __offset, unsigned int __scale)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern int acct (const char *__name) __attribute__ ((__nothrow__ , __leaf__));



extern char *getusershell (void) __attribute__ ((__nothrow__ , __leaf__));
extern void endusershell (void) __attribute__ ((__nothrow__ , __leaf__));
extern void setusershell (void) __attribute__ ((__nothrow__ , __leaf__));





extern int daemon (int __nochdir, int __noclose) __attribute__ ((__nothrow__ , __leaf__)) ;






extern int chroot (const char *__path) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;



extern char *getpass (const char *__prompt) __attribute__ ((__nonnull__ (1)));







extern int fsync (int __fd);





extern int syncfs (int __fd) __attribute__ ((__nothrow__ , __leaf__));






extern long int gethostid (void);


extern void sync (void) __attribute__ ((__nothrow__ , __leaf__));





extern int getpagesize (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));




extern int getdtablesize (void) __attribute__ ((__nothrow__ , __leaf__));
# 991 "/usr/include/unistd.h" 3 4
extern int truncate (const char *__file, __off_t __length)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
# 1003 "/usr/include/unistd.h" 3 4
extern int truncate64 (const char *__file, __off64_t __length)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
# 1014 "/usr/include/unistd.h" 3 4
extern int ftruncate (int __fd, __off_t __length) __attribute__ ((__nothrow__ , __leaf__)) ;
# 1024 "/usr/include/unistd.h" 3 4
extern int ftruncate64 (int __fd, __off64_t __length) __attribute__ ((__nothrow__ , __leaf__)) ;
# 1035 "/usr/include/unistd.h" 3 4
extern int brk (void *__addr) __attribute__ ((__nothrow__ , __leaf__)) ;





extern void *sbrk (intptr_t __delta) __attribute__ ((__nothrow__ , __leaf__));
# 1056 "/usr/include/unistd.h" 3 4
extern long int syscall (long int __sysno, ...) __attribute__ ((__nothrow__ , __leaf__));
# 1079 "/usr/include/unistd.h" 3 4
extern int lockf (int __fd, int __cmd, __off_t __len) ;
# 1089 "/usr/include/unistd.h" 3 4
extern int lockf64 (int __fd, int __cmd, __off64_t __len) ;
# 1107 "/usr/include/unistd.h" 3 4
ssize_t copy_file_range (int __infd, __off64_t *__pinoff,
    int __outfd, __off64_t *__poutoff,
    size_t __length, unsigned int __flags);





extern int fdatasync (int __fildes);
# 1124 "/usr/include/unistd.h" 3 4
extern char *crypt (const char *__key, const char *__salt)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));







extern void swab (const void *__restrict __from, void *__restrict __to,
    ssize_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
# 1161 "/usr/include/unistd.h" 3 4
int getentropy (void *__buffer, size_t __length) ;
# 1170 "/usr/include/unistd.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/unistd_ext.h" 1 3 4
# 34 "/usr/include/aarch64-linux-gnu/bits/unistd_ext.h" 3 4
extern __pid_t gettid (void) __attribute__ ((__nothrow__ , __leaf__));
# 1171 "/usr/include/unistd.h" 2 3 4


# 12 "/home/ubuntu/neovim/src/nvim/os/unix_defs.h" 2

# 1 "/usr/include/termios.h" 1 3 4
# 35 "/usr/include/termios.h" 3 4




# 1 "/usr/include/aarch64-linux-gnu/bits/termios.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/termios.h" 3 4
typedef unsigned char cc_t;
typedef unsigned int speed_t;
typedef unsigned int tcflag_t;

# 1 "/usr/include/aarch64-linux-gnu/bits/termios-struct.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/termios-struct.h" 3 4
struct termios
  {
    tcflag_t c_iflag;
    tcflag_t c_oflag;
    tcflag_t c_cflag;
    tcflag_t c_lflag;
    cc_t c_line;
    cc_t c_cc[32];
    speed_t c_ispeed;
    speed_t c_ospeed;


  };
# 28 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/termios-c_cc.h" 1 3 4
# 29 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/termios-c_iflag.h" 1 3 4
# 30 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/termios-c_oflag.h" 1 3 4
# 31 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4
# 53 "/usr/include/aarch64-linux-gnu/bits/termios.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/termios-baud.h" 1 3 4
# 54 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4

# 1 "/usr/include/aarch64-linux-gnu/bits/termios-c_cflag.h" 1 3 4
# 56 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/termios-c_lflag.h" 1 3 4
# 57 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4
# 74 "/usr/include/aarch64-linux-gnu/bits/termios.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/termios-tcflow.h" 1 3 4
# 75 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4

# 1 "/usr/include/aarch64-linux-gnu/bits/termios-misc.h" 1 3 4
# 76 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4
# 40 "/usr/include/termios.h" 2 3 4
# 48 "/usr/include/termios.h" 3 4
extern speed_t cfgetospeed (const struct termios *__termios_p) __attribute__ ((__nothrow__ , __leaf__));


extern speed_t cfgetispeed (const struct termios *__termios_p) __attribute__ ((__nothrow__ , __leaf__));


extern int cfsetospeed (struct termios *__termios_p, speed_t __speed) __attribute__ ((__nothrow__ , __leaf__));


extern int cfsetispeed (struct termios *__termios_p, speed_t __speed) __attribute__ ((__nothrow__ , __leaf__));



extern int cfsetspeed (struct termios *__termios_p, speed_t __speed) __attribute__ ((__nothrow__ , __leaf__));




extern int tcgetattr (int __fd, struct termios *__termios_p) __attribute__ ((__nothrow__ , __leaf__));



extern int tcsetattr (int __fd, int __optional_actions,
        const struct termios *__termios_p) __attribute__ ((__nothrow__ , __leaf__));




extern void cfmakeraw (struct termios *__termios_p) __attribute__ ((__nothrow__ , __leaf__));



extern int tcsendbreak (int __fd, int __duration) __attribute__ ((__nothrow__ , __leaf__));





extern int tcdrain (int __fd);



extern int tcflush (int __fd, int __queue_selector) __attribute__ ((__nothrow__ , __leaf__));



extern int tcflow (int __fd, int __action) __attribute__ ((__nothrow__ , __leaf__));




extern __pid_t tcgetsid (int __fd) __attribute__ ((__nothrow__ , __leaf__));




# 1 "/usr/include/aarch64-linux-gnu/sys/ttydefaults.h" 1 3 4
# 105 "/usr/include/termios.h" 2 3 4



# 14 "/home/ubuntu/neovim/src/nvim/os/unix_defs.h" 2
# 21 "/home/ubuntu/neovim/src/nvim/os/os_defs.h" 2
# 133 "/home/ubuntu/neovim/src/nvim/os/os_defs.h"

# 133 "/home/ubuntu/neovim/src/nvim/os/os_defs.h"
typedef off_t off_T;
# 45 "/home/ubuntu/neovim/src/klib/kvec.h" 2
# 170 "/home/ubuntu/neovim/src/klib/kvec.h"
static inline void *_memcpy_free(void *restrict dest, void *restrict src, size_t size)
  REAL_FATTR_NONNULL_ALL REAL_FATTR_NONNULL_RET REAL_FATTR_ALWAYS_INLINE;


static inline void *_memcpy_free(void *const restrict dest, void *const restrict src,
                                 const size_t size)
{
  memcpy(dest, src, size);
  do { void **ptr_ = (void **)&(src); xfree(*ptr_); *ptr_ = 
# 178 "/home/ubuntu/neovim/src/klib/kvec.h" 3 4
 ((void *)0)
# 178 "/home/ubuntu/neovim/src/klib/kvec.h"
 ; (void)(*ptr_); } while (0);
  return dest;
}
# 58 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 1
       
# 91 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
static inline 
# 91 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 3 4
             _Bool 
# 91 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
                  ascii_iswhite(int c)
  FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
  return c == ' ' || c == '\t';
}




static inline 
# 100 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 3 4
             _Bool 
# 100 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
                  ascii_iswhite_or_nul(int c)
  FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
  return ascii_iswhite(c) || c == '\000';
}
# 115 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
static inline 
# 115 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 3 4
             _Bool 
# 115 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
                  ascii_isdigit(int c)
  FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
  return c >= '0' && c <= '9';
}




static inline 
# 124 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 3 4
             _Bool 
# 124 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
                  ascii_isxdigit(int c)
  FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
  return (c >= '0' && c <= '9')
         || (c >= 'a' && c <= 'f')
         || (c >= 'A' && c <= 'F');
}




static inline 
# 135 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 3 4
             _Bool 
# 135 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
                  ascii_isident(int c)
  FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
  return ((((unsigned)(c) >= 'A' && (unsigned)(c) <= 'Z') || ((unsigned)(c) >= 'a' && (unsigned)(c) <= 'z')) || ascii_isdigit(c)) || c == '_';
}




static inline 
# 144 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 3 4
             _Bool 
# 144 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
                  ascii_isbdigit(int c)
  FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
  return (c == '0' || c == '1');
}




static inline 
# 153 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 3 4
             _Bool 
# 153 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
                  ascii_isodigit(int c)
  FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
  return (c >= '0' && c <= '7');
}





static inline 
# 163 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 3 4
             _Bool 
# 163 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
                  ascii_isspace(int c)
  FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
  return (c >= 9 && c <= 13) || c == ' ';
}
# 59 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/assert_defs.h" 1
       


# 1 "/home/ubuntu/neovim/src/nvim/log.h" 1
       
# 21 "/home/ubuntu/neovim/src/nvim/log.h"
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/asan_interface.h" 1 3 4
# 15 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/asan_interface.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/common_interface_defs.h" 1 3 4
# 14 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/common_interface_defs.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 15 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/common_interface_defs.h" 2 3 4
# 26 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/common_interface_defs.h" 3 4
  
# 26 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/common_interface_defs.h" 3 4
 typedef struct {

    int coverage_sandboxed;



    intptr_t coverage_fd;




    unsigned int coverage_max_block_size;
  } __sanitizer_sandbox_arguments;


  void __sanitizer_set_report_path(const char *path);


  void __sanitizer_set_report_fd(void *fd);




  void __sanitizer_sandbox_on_notify(__sanitizer_sandbox_arguments *args);




  void __sanitizer_report_error_summary(const char *error_summary);




  uint16_t __sanitizer_unaligned_load16(const void *p);
  uint32_t __sanitizer_unaligned_load32(const void *p);
  uint64_t __sanitizer_unaligned_load64(const void *p);
  void __sanitizer_unaligned_store16(void *p, uint16_t x);
  void __sanitizer_unaligned_store32(void *p, uint32_t x);
  void __sanitizer_unaligned_store64(void *p, uint64_t x);




  int __sanitizer_acquire_crash_state();
# 101 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/common_interface_defs.h" 3 4
  void __sanitizer_annotate_contiguous_container(const void *beg,
                                                 const void *end,
                                                 const void *old_mid,
                                                 const void *new_mid);






  int __sanitizer_verify_contiguous_container(const void *beg, const void *mid,
                                              const void *end);




  const void *__sanitizer_contiguous_container_find_bad_address(
      const void *beg, const void *mid, const void *end);


  void __sanitizer_print_stack_trace(void);
# 133 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/common_interface_defs.h" 3 4
  void __sanitizer_symbolize_pc(void *pc, const char *fmt, char *out_buf,
                                size_t out_buf_size);

  void __sanitizer_symbolize_global(void *data_ptr, const char *fmt,
                                    char *out_buf, size_t out_buf_size);



  void __sanitizer_set_death_callback(void (*callback)(void));







  void __sanitizer_weak_hook_memcmp(void *called_pc, const void *s1,
                                    const void *s2, size_t n, int result);
  void __sanitizer_weak_hook_strncmp(void *called_pc, const char *s1,
                                    const char *s2, size_t n, int result);
  void __sanitizer_weak_hook_strncasecmp(void *called_pc, const char *s1,
                                         const char *s2, size_t n, int result);
  void __sanitizer_weak_hook_strcmp(void *called_pc, const char *s1,
                                    const char *s2, int result);
  void __sanitizer_weak_hook_strcasecmp(void *called_pc, const char *s1,
                                        const char *s2, int result);
  void __sanitizer_weak_hook_strstr(void *called_pc, const char *s1,
                                    const char *s2, char *result);
  void __sanitizer_weak_hook_strcasestr(void *called_pc, const char *s1,
                                        const char *s2, char *result);
  void __sanitizer_weak_hook_memmem(void *called_pc,
                                    const void *s1, size_t len1,
                                    const void *s2, size_t len2, void *result);






  void __sanitizer_print_memory_profile(size_t top_percent,
                                        size_t max_number_of_contexts);
# 191 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/common_interface_defs.h" 3 4
  void __sanitizer_start_switch_fiber(void **fake_stack_save,
                                      const void *bottom, size_t size);
  void __sanitizer_finish_switch_fiber(void *fake_stack_save,
                                       const void **bottom_old,
                                       size_t *size_old);



  int __sanitizer_get_module_and_offset_for_pc(void *pc, char *module_path,
                                               size_t module_path_len,
                                               void **pc_offset);
# 16 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/asan_interface.h" 2 3 4
# 28 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/asan_interface.h" 3 4
  void __asan_poison_memory_region(void const volatile *addr, size_t size);







  void __asan_unpoison_memory_region(void const volatile *addr, size_t size);
# 54 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/asan_interface.h" 3 4
  int __asan_address_is_poisoned(void const volatile *addr);



  void *__asan_region_is_poisoned(void *beg, size_t size);


  void __asan_describe_address(void *addr);



  int __asan_report_present(void);





  void *__asan_get_report_pc(void);
  void *__asan_get_report_bp(void);
  void *__asan_get_report_sp(void);
  void *__asan_get_report_address(void);
  int __asan_get_report_access_type(void);
  size_t __asan_get_report_access_size(void);
  const char *__asan_get_report_description(void);
# 86 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/asan_interface.h" 3 4
  const char *__asan_locate_address(void *addr, char *name, size_t name_size,
                                    void **region_address, size_t *region_size);




  size_t __asan_get_alloc_stack(void *addr, void **trace, size_t size,
                                int *thread_id);




  size_t __asan_get_free_stack(void *addr, void **trace, size_t size,
                               int *thread_id);



  void __asan_get_shadow_mapping(size_t *shadow_scale, size_t *shadow_offset);




  void __asan_report_error(void *pc, void *bp, void *sp,
                           void *addr, int is_write, size_t access_size);


  void __asan_set_death_callback(void (*callback)(void));

  void __asan_set_error_report_callback(void (*callback)(const char*));




  void __asan_on_error(void);


  void __asan_print_accumulated_stats(void);



  const char* __asan_default_options(void);






  void *__asan_get_current_fake_stack(void);
# 142 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/asan_interface.h" 3 4
  void *__asan_addr_is_in_fake_stack(void *fake_stack, void *addr, void **beg,
                                     void **end);



  void __asan_handle_no_return(void);
# 22 "/home/ubuntu/neovim/src/nvim/log.h" 2
# 5 "/home/ubuntu/neovim/src/nvim/assert_defs.h" 2
# 60 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/charset.h" 1
       




# 1 "/home/ubuntu/neovim/src/nvim/option_vars.h" 1
       



# 1 "/home/ubuntu/neovim/src/nvim/sign_defs.h" 1
       

# 1 "/home/ubuntu/neovim/src/nvim/decoration_defs.h" 1
       




# 1 "/home/ubuntu/neovim/src/nvim/api/private/defs.h" 1
       






# 1 "/home/ubuntu/neovim/src/nvim/types_defs.h" 1
       





# 6 "/home/ubuntu/neovim/src/nvim/types_defs.h"
typedef void *vim_acl_T;



typedef uint32_t schar_T;
typedef int32_t sattr_T;

typedef int32_t sscratch_T;


typedef int handle_T;




typedef int LuaRef;


typedef double float_T;

typedef struct MsgpackRpcRequestHandler MsgpackRpcRequestHandler;

typedef union {
  float_T (*float_func)(float_T);
  const MsgpackRpcRequestHandler *api_handler;
  void *null;
} EvalFuncData;

typedef handle_T NS;

typedef uint64_t proftime_T;

typedef enum {
  kNone = -1,
  kFalse = 0,
  kTrue = 1,
} TriState;






typedef int64_t OptInt;

enum { SIGN_WIDTH = 2, };

typedef struct file_buffer buf_T;
typedef struct loop Loop;
typedef struct regprog regprog_T;
typedef struct syn_state synstate_T;
typedef struct terminal Terminal;
typedef struct window_S win_T;

typedef struct {
  uint32_t nitems;
  uint32_t nbytes;
  char data[];
} AdditionalData;
# 9 "/home/ubuntu/neovim/src/nvim/api/private/defs.h" 2
# 28 "/home/ubuntu/neovim/src/nvim/api/private/defs.h"
typedef enum {
  kErrorTypeNone = -1,
  kErrorTypeException,
  kErrorTypeValidation,
} ErrorType;

typedef enum {
  kMessageTypeUnknown = -1,

  kMessageTypeRequest = 0,
  kMessageTypeResponse = 1,
  kMessageTypeNotification = 2,
  kMessageTypeRedrawEvent = 3,
} MessageType;
# 57 "/home/ubuntu/neovim/src/nvim/api/private/defs.h"
static inline 
# 57 "/home/ubuntu/neovim/src/nvim/api/private/defs.h" 3 4
             _Bool 
# 57 "/home/ubuntu/neovim/src/nvim/api/private/defs.h"
                  is_internal_call(const uint64_t channel_id)
  FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_CONST
{
  return !!(channel_id & (((uint64_t)1) << (sizeof(uint64_t) * 8 - 1)));
}

typedef struct {
  ErrorType type;
  char *msg;
} Error;

typedef 
# 68 "/home/ubuntu/neovim/src/nvim/api/private/defs.h" 3 4
       _Bool 
# 68 "/home/ubuntu/neovim/src/nvim/api/private/defs.h"
            Boolean;
typedef int64_t Integer;
typedef double Float;







typedef struct {
  char *data;
  size_t size;
} String;

typedef handle_T Buffer;
typedef handle_T Window;
typedef handle_T Tabpage;

typedef struct object Object;
typedef struct { size_t size; size_t capacity; Object *items; } Array;

typedef struct key_value_pair KeyValuePair;
typedef struct { size_t size; size_t capacity; KeyValuePair *items; } Dictionary;

typedef struct { size_t size; size_t capacity; String *items; } StringArray;

typedef enum {
  kObjectTypeNil = 0,
  kObjectTypeBoolean,
  kObjectTypeInteger,
  kObjectTypeFloat,
  kObjectTypeString,
  kObjectTypeArray,
  kObjectTypeDictionary,
  kObjectTypeLuaRef,

  kObjectTypeBuffer,
  kObjectTypeWindow,
  kObjectTypeTabpage,
} ObjectType;

typedef enum {
  kUnpackTypeStringArray = -1,
} UnpackType;
# 122 "/home/ubuntu/neovim/src/nvim/api/private/defs.h"
struct object {
  ObjectType type;
  union {
    Boolean boolean;
    Integer integer;
    Float floating;
    String string;
    Array array;
    Dictionary dictionary;
    LuaRef luaref;
  } data;
};

struct key_value_pair {
  String key;
  Object value;
};

typedef uint64_t OptionalKeys;
typedef Integer HLGroupID;


typedef struct {
  OptionalKeys is_set_;
} OptKeySet;

typedef struct {
  char *str;
  size_t ptr_off;
  int type;
  int opt_index;
  
# 153 "/home/ubuntu/neovim/src/nvim/api/private/defs.h" 3 4
 _Bool 
# 153 "/home/ubuntu/neovim/src/nvim/api/private/defs.h"
      is_hlgroup;
} KeySetLink;

typedef KeySetLink *(*FieldHashfn)(const char *str, size_t len);
# 7 "/home/ubuntu/neovim/src/nvim/decoration_defs.h" 2




typedef struct {
  char *text;
  int hl_id;
} VirtTextChunk;

typedef struct { size_t size; size_t capacity; VirtTextChunk *items; } VirtText;



typedef enum {
  kVPosEndOfLine,
  kVPosOverlay,
  kVPosWinCol,
  kVPosRightAlign,
  kVPosInline,
} VirtTextPos;

typedef struct { size_t size; size_t capacity; struct virt_line { VirtText line; 
# 28 "/home/ubuntu/neovim/src/nvim/decoration_defs.h" 3 4
       _Bool 
# 28 "/home/ubuntu/neovim/src/nvim/decoration_defs.h"
       left_col; } *items; } VirtLines;

typedef uint16_t DecorPriority;



typedef enum {
  kHlModeUnknown,
  kHlModeReplace,
  kHlModeCombine,
  kHlModeBlend,
} HlMode;

enum {
  kSHIsSign = 1,
  kSHHlEol = 2,
  kSHUIWatched = 4,
  kSHUIWatchedOverlay = 8,
  kSHSpellOn = 16,
  kSHSpellOff = 32,
  kSHConceal = 64,
};

typedef struct {
  uint16_t flags;
  DecorPriority priority;
  int hl_id;
  schar_T conceal_char;
} DecorHighlightInline;



typedef struct {
  uint16_t flags;
  DecorPriority priority;
  int hl_id;
  schar_T text[SIGN_WIDTH];


  char *sign_name;
  int sign_add_id;
  int number_hl_id;
  int line_hl_id;
  int cursorline_hl_id;
  uint32_t next;
  const char *url;
} DecorSignHighlight;




enum {
  kVTIsLines = 1,
  kVTHide = 2,
  kVTLinesAbove = 4,
  kVTRepeatLinebreak = 8,
};

typedef struct DecorVirtText DecorVirtText;
struct DecorVirtText {
  uint8_t flags;
  uint8_t hl_mode;
  DecorPriority priority;
  int width;
  int col;
  VirtTextPos pos;

  union {
    VirtText virt_text;
    VirtLines virt_lines;
  } data;
  DecorVirtText *next;
};





typedef struct {
  uint32_t sh_idx;
  DecorVirtText *vt;
} DecorExt;


typedef union {
  DecorHighlightInline hl;
  DecorExt ext;
} DecorInlineData;





typedef struct {
  
# 122 "/home/ubuntu/neovim/src/nvim/decoration_defs.h" 3 4
 _Bool 
# 122 "/home/ubuntu/neovim/src/nvim/decoration_defs.h"
      ext;
  DecorInlineData data;
} DecorInline;




typedef struct {
  NS ns_id;

  enum {
    kDecorProviderActive = 1,
    kDecorProviderWinDisabled = 2,
    kDecorProviderRedrawDisabled = 3,
    kDecorProviderDisabled = 4,
  } state;

  LuaRef redraw_start;
  LuaRef redraw_buf;
  LuaRef redraw_win;
  LuaRef redraw_line;
  LuaRef redraw_end;
  LuaRef hl_def;
  LuaRef spell_nav;
  int hl_valid;
  
# 147 "/home/ubuntu/neovim/src/nvim/decoration_defs.h" 3 4
 _Bool 
# 147 "/home/ubuntu/neovim/src/nvim/decoration_defs.h"
      hl_cached;

  uint8_t error_count;
} DecorProvider;
# 4 "/home/ubuntu/neovim/src/nvim/sign_defs.h" 2



typedef struct {
  schar_T text[SIGN_WIDTH];
  int hl_id;
} SignTextAttrs;


typedef struct {
  char *sn_name;
  char *sn_icon;
  schar_T sn_text[SIGN_WIDTH];
  int sn_line_hl;
  int sn_text_hl;
  int sn_cul_hl;
  int sn_num_hl;
  int sn_priority;
} sign_T;

typedef struct {
  DecorSignHighlight *sh;
  uint32_t id;
} SignItem;

enum { SIGN_SHOW_MAX = 9, };
enum { SIGN_DEF_PRIO = 10, };
# 6 "/home/ubuntu/neovim/src/nvim/option_vars.h" 2
# 207 "/home/ubuntu/neovim/src/nvim/option_vars.h"
enum {
  SHM_RO = 'r',
  SHM_MOD = 'm',
  SHM_LINES = 'l',
  SHM_WRI = 'w',
  SHM_ABBREVIATIONS = 'a',
  SHM_WRITE = 'W',
  SHM_TRUNC = 't',
  SHM_TRUNCALL = 'T',
  SHM_OVER = 'o',
  SHM_OVERALL = 'O',
  SHM_SEARCH = 's',
  SHM_ATTENTION = 'A',
  SHM_INTRO = 'I',
  SHM_COMPLETIONMENU = 'c',
  SHM_COMPLETIONSCAN = 'C',
  SHM_RECORDING = 'q',
  SHM_FILEINFO = 'F',
  SHM_SEARCHCOUNT = 'S',
};
# 272 "/home/ubuntu/neovim/src/nvim/option_vars.h"
enum {
  STL_FILEPATH = 'f',
  STL_FULLPATH = 'F',
  STL_FILENAME = 't',
  STL_COLUMN = 'c',
  STL_VIRTCOL = 'v',
  STL_VIRTCOL_ALT = 'V',
  STL_LINE = 'l',
  STL_NUMLINES = 'L',
  STL_BUFNO = 'n',
  STL_KEYMAP = 'k',
  STL_OFFSET = 'o',
  STL_OFFSET_X = 'O',
  STL_BYTEVAL = 'b',
  STL_BYTEVAL_X = 'B',
  STL_ROFLAG = 'r',
  STL_ROFLAG_ALT = 'R',
  STL_HELPFLAG = 'h',
  STL_HELPFLAG_ALT = 'H',
  STL_FILETYPE = 'y',
  STL_FILETYPE_ALT = 'Y',
  STL_PREVIEWFLAG = 'w',
  STL_PREVIEWFLAG_ALT = 'W',
  STL_MODIFIED = 'm',
  STL_MODIFIED_ALT = 'M',
  STL_QUICKFIX = 'q',
  STL_PERCENTAGE = 'p',
  STL_ALTPERCENT = 'P',
  STL_ARGLISTSTAT = 'a',
  STL_PAGENUM = 'N',
  STL_SHOWCMD = 'S',
  STL_FOLDCOL = 'C',
  STL_SIGNCOL = 's',
  STL_VIM_EXPR = '{',
  STL_SEPARATE = '=',
  STL_TRUNCMARK = '<',
  STL_USER_HL = '*',
  STL_HIGHLIGHT = '#',
  STL_TABPAGENR = 'T',
  STL_TABCLOSENR = 'X',
  STL_CLICK_FUNC = '@',
};
# 353 "/home/ubuntu/neovim/src/nvim/option_vars.h"
extern char *p_ambw;
extern int p_acd;
extern int p_ai;
extern int p_bin;
extern int p_bomb;
extern int p_bl;
extern int p_cin;
extern OptInt p_channel;
extern char *p_cink;
extern char *p_cinsd;
extern char *p_cinw;
extern char *p_cfu;
extern char *p_ofu;
extern char *p_tsrfu;
extern int p_ci;
extern int p_ar;
extern int p_aw;
extern int p_awa;
extern char *p_bs;
extern char *p_bg;
extern int p_bk;
extern char *p_bkc;
extern unsigned bkc_flags;





extern char *p_bdir;
extern char *p_bex;
extern char *p_bo;
extern char breakat_flags[256];
extern unsigned bo_flags;
# 408 "/home/ubuntu/neovim/src/nvim/option_vars.h"
extern char *p_bsk;
extern char *p_breakat;
extern char *p_bh;
extern char *p_bt;
extern char *p_cmp;
extern unsigned cmp_flags;


extern char *p_enc;
extern int p_deco;
extern char *p_ccv;
extern char *p_cino;
extern char *p_cedit;
extern char *p_cb;
extern unsigned cb_flags;



extern OptInt p_cwh;
extern OptInt p_ch;
extern char *p_cms;
extern char *p_cpt;
extern OptInt p_columns;
extern int p_confirm;
extern char *p_cot;
extern unsigned cot_flags;
# 449 "/home/ubuntu/neovim/src/nvim/option_vars.h"
extern OptInt p_pb;
extern OptInt p_ph;
extern OptInt p_pw;
extern char *p_com;
extern char *p_cpo;
extern char *p_debug;
extern char *p_def;
extern char *p_inc;
extern char *p_dip;
extern char *p_dex;
extern char *p_dict;
extern int p_dg;
extern char *p_dir;
extern char *p_dy;
extern unsigned dy_flags;





extern char *p_ead;
extern int p_emoji;
extern int p_ea;
extern char *p_ep;
extern int p_eb;
extern char *p_ef;
extern char *p_efm;
extern char *p_gefm;
extern char *p_gp;
extern int p_eof;
extern int p_eol;
extern char *p_ei;
extern int p_et;
extern int p_exrc;
extern char *p_fenc;
extern char *p_fencs;
extern char *p_ff;
extern char *p_ffs;
extern int p_fic;
extern char *p_ft;
extern char *p_fcs;
extern int p_fixeol;
extern char *p_fcl;
extern OptInt p_fdls;
extern char *p_fdo;
extern unsigned fdo_flags;
# 506 "/home/ubuntu/neovim/src/nvim/option_vars.h"
extern char *p_fex;
extern char *p_flp;
extern char *p_fo;
extern char *p_fp;
extern int p_fs;
extern int p_gd;
extern char *p_guicursor;
extern char *p_guifont;
extern char *p_guifontwide;
extern char *p_hf;
extern OptInt p_hh;
extern char *p_hlg;
extern int p_hid;
extern char *p_hl;
extern int p_hls;
extern OptInt p_hi;
extern int p_arshape;
extern int p_icon;
extern char *p_iconstring;
extern int p_ic;
extern OptInt p_iminsert;
extern OptInt p_imsearch;
extern int p_inf;
extern char *p_inex;
extern int p_is;
extern char *p_inde;
extern char *p_indk;
extern char *p_icm;
extern char *p_isf;
extern char *p_isi;
extern char *p_isk;
extern char *p_isp;
extern int p_js;
extern char *p_jop;
extern unsigned jop_flags;



extern char *p_keymap;
extern char *p_kp;
extern char *p_km;
extern char *p_langmap;
extern int p_lnr;
extern int p_lrm;
extern char *p_lm;
extern OptInt p_lines;
extern OptInt p_linespace;
extern int p_lisp;
extern char *p_lop;
extern char *p_lispwords;
extern OptInt p_ls;
extern OptInt p_stal;
extern char *p_lcs;

extern int p_lz;
extern int p_lpl;
extern int p_magic;
extern char *p_menc;
extern char *p_mef;
extern char *p_mp;
extern char *p_mps;
extern OptInt p_mat;
extern OptInt p_mfd;
extern OptInt p_mmd;
extern OptInt p_mmp;
extern OptInt p_mis;
extern char *p_msm;
extern int p_ml;
extern int p_mle;
extern OptInt p_mls;
extern int p_ma;
extern int p_mod;
extern char *p_mouse;
extern char *p_mousem;
extern int p_mousemev;
extern int p_mousef;
extern int p_mh;
extern char *p_mousescroll;
extern OptInt p_mousescroll_vert ;
extern OptInt p_mousescroll_hor ;
extern OptInt p_mouset;
extern int p_more;
extern char *p_nf;
extern char *p_opfunc;
extern char *p_para;
extern int p_paste;
extern char *p_pex;
extern char *p_pm;
extern char *p_path;
extern char *p_cdpath;
extern int p_pi;
extern OptInt p_pyx;
extern char *p_qe;
extern int p_ro;
extern char *p_rdb;
extern unsigned rdb_flags;
# 610 "/home/ubuntu/neovim/src/nvim/option_vars.h"
extern OptInt p_rdt;
extern OptInt p_re;
extern OptInt p_report;
extern OptInt p_pvh;
extern int p_ari;
extern int p_ri;
extern int p_ru;
extern char *p_ruf;
extern char *p_pp;
extern char *p_qftf;
extern char *p_rtp;
extern OptInt p_scbk;
extern OptInt p_sj;
extern OptInt p_so;
extern char *p_sbo;
extern char *p_sections;
extern int p_secure;
extern char *p_sel;
extern char *p_slm;
extern char *p_ssop;
extern unsigned ssop_flags;
# 651 "/home/ubuntu/neovim/src/nvim/option_vars.h"
extern char *p_sh;
extern char *p_shcf;
extern char *p_sp;
extern char *p_shq;
extern char *p_sxq;
extern char *p_sxe;
extern char *p_srr;
extern int p_stmp;



extern char *p_stl;
extern char *p_wbr;
extern int p_sr;
extern OptInt p_sw;
extern char *p_shm;
extern char *p_sbr;
extern int p_sc;
extern char *p_sloc;
extern int p_sft;
extern int p_sm;
extern int p_smd;
extern OptInt p_ss;
extern OptInt p_siso;
extern int p_scs;
extern int p_si;
extern int p_sta;
extern OptInt p_sts;
extern int p_sb;
extern char *p_sua;
extern int p_swf;
extern OptInt p_smc;
extern OptInt p_tpm;
extern char *p_tal;
extern char *p_tpf;
extern unsigned tpf_flags;







extern char *p_tfu;
extern char *p_spc;
extern char *p_spf;
extern char *p_spl;
extern char *p_spo;
extern unsigned spo_flags;
extern char *p_sps;
extern int p_spr;
extern int p_sol;
extern char *p_su;
extern char *p_swb;
extern unsigned swb_flags;







extern char *p_spk;
extern char *p_syn;
extern char *p_tcl;
extern unsigned tcl_flags;


extern OptInt p_ts;
extern int p_tbs;
extern char *p_tc;
extern unsigned tc_flags;





extern OptInt p_tl;
extern int p_tr;
extern char *p_tags;
extern int p_tgst;
extern int p_tbidi;
extern OptInt p_tw;
extern int p_to;
extern int p_timeout;
extern OptInt p_tm;
extern int p_title;
extern OptInt p_titlelen;
extern char *p_titleold;
extern char *p_titlestring;
extern char *p_tsr;
extern int p_tgc;
extern int p_ttimeout;
extern OptInt p_ttm;
extern char *p_udir;
extern int p_udf;
extern OptInt p_ul;
extern OptInt p_ur;
extern OptInt p_uc;
extern OptInt p_ut;
extern char *p_shada;
extern char *p_shadafile;
extern int p_termsync;
extern char *p_vsts;
extern char *p_vts;
extern char *p_vdir;
extern char *p_vop;
extern unsigned vop_flags;
extern int p_vb;
extern char *p_ve;
extern unsigned ve_flags;






extern OptInt p_verbose;



extern char *p_vfile;

extern int p_warn;
extern char *p_wop;
extern unsigned wop_flags;



extern OptInt p_window;
extern char *p_wak;
extern char *p_wig;
extern char *p_ww;
extern OptInt p_wc;
extern OptInt p_wcm;
extern int p_wic;
extern char *p_wim;
extern int p_wmnu;
extern OptInt p_wh;
extern OptInt p_wmh;
extern OptInt p_wmw;
extern OptInt p_wiw;
extern OptInt p_wm;
extern int p_ws;
extern int p_write;
extern int p_wa;
extern int p_wb;
extern OptInt p_wd;
extern int p_cdh;
# 7 "/home/ubuntu/neovim/src/nvim/charset.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/strings.h" 1
       

# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stdarg.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/strings.h" 2





# 1 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 1
       

# 1 "/usr/include/inttypes.h" 1 3 4
# 34 "/usr/include/inttypes.h" 3 4

# 34 "/usr/include/inttypes.h" 3 4
typedef unsigned int __gwchar_t;
# 266 "/usr/include/inttypes.h" 3 4





typedef struct
  {
    long int quot;
    long int rem;
  } imaxdiv_t;
# 290 "/usr/include/inttypes.h" 3 4
extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));


extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom)
      __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));


extern intmax_t strtoimax (const char *__restrict __nptr,
      char **__restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__));


extern uintmax_t strtoumax (const char *__restrict __nptr,
       char ** __restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__));


extern intmax_t wcstoimax (const __gwchar_t *__restrict __nptr,
      __gwchar_t **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ , __leaf__));


extern uintmax_t wcstoumax (const __gwchar_t *__restrict __nptr,
       __gwchar_t ** __restrict __endptr, int __base)
     __attribute__ ((__nothrow__ , __leaf__));
# 432 "/usr/include/inttypes.h" 3 4

# 4 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 2
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/limits.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 2


# 1 "/home/ubuntu/neovim/src/nvim/garray_defs.h" 1
       

# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/garray_defs.h" 2





# 8 "/home/ubuntu/neovim/src/nvim/garray_defs.h"
typedef struct {
  int ga_len;
  int ga_maxlen;
  int ga_itemsize;
  int ga_growsize;
  void *ga_data;
} garray_T;
# 8 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/hashtab_defs.h" 1
       

# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/hashtab_defs.h" 2


typedef size_t hash_T;
# 24 "/home/ubuntu/neovim/src/nvim/hashtab_defs.h"
typedef struct {

  hash_T hi_hash;







  char *hi_key;
} hashitem_T;

enum {




  HT_INIT_SIZE = 16,
};







typedef struct {
  hash_T ht_mask;

  size_t ht_used;
  size_t ht_filled;
  int ht_changed;
  int ht_locked;
  hashitem_T *ht_array;

  hashitem_T ht_smallarray[HT_INIT_SIZE];
} hashtab_T;
# 9 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/lib/queue_defs.h" 1
# 20 "/home/ubuntu/neovim/src/nvim/lib/queue_defs.h"
       

# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 23 "/home/ubuntu/neovim/src/nvim/lib/queue_defs.h" 2

typedef struct queue {
  struct queue *next;
  struct queue *prev;
} QUEUE;
# 49 "/home/ubuntu/neovim/src/nvim/lib/queue_defs.h"
static inline int QUEUE_EMPTY(const QUEUE *const q)
  FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
{
  return q == q->next;
}



static inline void QUEUE_INIT(QUEUE *const q)
  FUNC_ATTR_ALWAYS_INLINE
{
  q->next = q;
  q->prev = q;
}

static inline void QUEUE_ADD(QUEUE *const h, QUEUE *const n)
  FUNC_ATTR_ALWAYS_INLINE
{
  h->prev->next = n->next;
  n->next->prev = h->prev;
  h->prev = n->prev;
  h->prev->next = h;
}

static inline void QUEUE_INSERT_HEAD(QUEUE *const h, QUEUE *const q)
  FUNC_ATTR_ALWAYS_INLINE
{
  q->next = h->next;
  q->prev = h;
  q->next->prev = q;
  h->next = q;
}

static inline void QUEUE_INSERT_TAIL(QUEUE *const h, QUEUE *const q)
  FUNC_ATTR_ALWAYS_INLINE
{
  q->next = h;
  q->prev = h->prev;
  q->prev->next = q;
  h->prev = q;
}

static inline void QUEUE_REMOVE(QUEUE *const q)
  FUNC_ATTR_ALWAYS_INLINE
{
  q->prev->next = q->next;
  q->next->prev = q->prev;
}
# 10 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/pos_defs.h" 1
       




typedef int32_t linenr_T;




typedef int colnr_T;



enum { MAXLNUM = 0x7fffffff, };



enum { MAXCOL = 0x7fffffff, };

enum { MINLNUM = 1, };

enum { MINCOL = 1, };


typedef struct {
  linenr_T lnum;
  colnr_T col;
  colnr_T coladd;
} pos_T;


typedef struct {
  linenr_T lnum;
  colnr_T col;
} lpos_T;
# 11 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 2



typedef int64_t varnumber_T;
typedef uint64_t uvarnumber_T;

enum {

  DO_NOT_FREE_CNT = (0x7fffffff / 2),
};


enum ListLenSpecials {




  kListLenUnknown = -1,





  kListLenShouldKnow = -2,



  kListLenMayKnow = -3,
};
# 51 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h"
typedef struct listvar_S list_T;
typedef struct dictvar_S dict_T;
typedef struct partial_S partial_T;
typedef struct blobvar_S blob_T;

typedef struct ufunc ufunc_T;

typedef enum {
  kCallbackNone = 0,
  kCallbackFuncref,
  kCallbackPartial,
  kCallbackLua,
} CallbackType;

typedef struct {
  union {
    char *funcref;
    partial_T *partial;
    LuaRef luaref;
  } data;
  CallbackType type;
} Callback;





typedef struct {
  Callback callback;
  char *key_pattern;
  size_t key_pattern_len;
  QUEUE node;
  
# 83 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 3 4
 _Bool 
# 83 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h"
      busy;
  
# 84 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 3 4
 _Bool 
# 84 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h"
      needs_free;
} DictWatcher;


typedef enum {
  kBoolVarFalse,
  kBoolVarTrue,
} BoolVarValue;


typedef enum {
  kSpecialVarNull,
} SpecialVarValue;


typedef enum {
  VAR_UNLOCKED = 0,
  VAR_LOCKED = 1,
  VAR_FIXED = 2,
} VarLockStatus;


typedef enum {
  VAR_UNKNOWN = 0,
  VAR_NUMBER,
  VAR_STRING,
  VAR_FUNC,
  VAR_LIST,
  VAR_DICT,
  VAR_FLOAT,
  VAR_BOOL,
  VAR_SPECIAL,
  VAR_PARTIAL,
  VAR_BLOB,
} VarType;


enum {
  VAR_TYPE_NUMBER = 0,
  VAR_TYPE_STRING = 1,
  VAR_TYPE_FUNC = 2,
  VAR_TYPE_LIST = 3,
  VAR_TYPE_DICT = 4,
  VAR_TYPE_FLOAT = 5,
  VAR_TYPE_BOOL = 6,
  VAR_TYPE_SPECIAL = 7,
  VAR_TYPE_BLOB = 10,
};


typedef struct {
  VarType v_type;
  VarLockStatus v_lock;
  union typval_vval_union {
    varnumber_T v_number;
    BoolVarValue v_bool;
    SpecialVarValue v_special;
    float_T v_float;
    char *v_string;
    list_T *v_list;
    dict_T *v_dict;
    partial_T *v_partial;
    blob_T *v_blob;
  } vval;
} typval_T;
# 157 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h"
typedef enum {
  VAR_NO_SCOPE = 0,
  VAR_SCOPE = 1,
  VAR_DEF_SCOPE = 2,

} ScopeType;


typedef struct listitem_S listitem_T;

struct listitem_S {
  listitem_T *li_next;
  listitem_T *li_prev;
  typval_T li_tv;
};


typedef struct listwatch_S listwatch_T;

struct listwatch_S {
  listitem_T *lw_item;
  listwatch_T *lw_next;
};



struct listvar_S {
  listitem_T *lv_first;
  listitem_T *lv_last;
  listwatch_T *lv_watch;
  listitem_T *lv_idx_item;
  list_T *lv_copylist;
  list_T *lv_used_next;
  list_T *lv_used_prev;
  int lv_refcount;
  int lv_len;
  int lv_idx;
  int lv_copyID;
  VarLockStatus lv_lock;

  LuaRef lua_table_ref;
};


typedef struct {
  list_T sl_list;
  listitem_T sl_items[10];
} staticList10_T;
# 233 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h"
typedef struct { typval_T di_tv; uint8_t di_flags; char di_key[1]; } ScopeDictDictItem;






typedef struct { typval_T di_tv; uint8_t di_flags; char di_key[]; } dictitem_T;


typedef enum {
  DI_FLAGS_RO = 1,
  DI_FLAGS_RO_SBX = 2,
  DI_FLAGS_FIX = 4,
  DI_FLAGS_LOCK = 8,
  DI_FLAGS_ALLOC = 16,
} DictItemFlags;


struct dictvar_S {
  VarLockStatus dv_lock;
  ScopeType dv_scope;

  int dv_refcount;
  int dv_copyID;
  hashtab_T dv_hashtab;
  dict_T *dv_copydict;
  dict_T *dv_used_next;
  dict_T *dv_used_prev;
  QUEUE watchers;

  LuaRef lua_table_ref;
};


struct blobvar_S {
  garray_T bv_ga;
  int bv_refcount;
  VarLockStatus bv_lock;
};


typedef int scid_T;
# 285 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h"
typedef struct {
  scid_T sc_sid;
  int sc_seq;
  linenr_T sc_lnum;
} sctx_T;


typedef struct {
  sctx_T script_ctx;
  uint64_t channel_id;
} LastSet;

enum { MAX_FUNC_ARGS = 20, };
enum { VAR_SHORT_LEN = 20, };
enum { FIXVAR_CNT = 12, };


typedef struct funccall_S funccall_T;

struct funccall_S {
  ufunc_T *fc_func;
  int fc_linenr;
  int fc_returned;
  struct { typval_T di_tv; uint8_t di_flags; char di_key[VAR_SHORT_LEN + 1]; } fc_fixvar[FIXVAR_CNT];
  dict_T fc_l_vars;
  ScopeDictDictItem fc_l_vars_var;
  dict_T fc_l_avars;
  ScopeDictDictItem fc_l_avars_var;
  list_T fc_l_varlist;
  listitem_T fc_l_listitems[MAX_FUNC_ARGS];
  typval_T *fc_rettv;
  linenr_T fc_breakpoint;
  int fc_dbg_tick;
  int fc_level;
  garray_T fc_defer;
  proftime_T fc_prof_child;
  funccall_T *fc_caller;

  int fc_refcount;
  int fc_copyID;
  garray_T fc_ufuncs;
};


struct ufunc {
  int uf_varargs;
  int uf_flags;
  int uf_calls;
  
# 333 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 3 4
 _Bool 
# 333 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h"
      uf_cleared;
  garray_T uf_args;
  garray_T uf_def_args;
  garray_T uf_lines;
  int uf_profiling;
  int uf_prof_initialized;
  LuaRef uf_luaref;

  int uf_tm_count;
  proftime_T uf_tm_total;
  proftime_T uf_tm_self;
  proftime_T uf_tm_children;

  int *uf_tml_count;
  proftime_T *uf_tml_total;
  proftime_T *uf_tml_self;
  proftime_T uf_tml_start;
  proftime_T uf_tml_children;
  proftime_T uf_tml_wait;
  int uf_tml_idx;
  int uf_tml_execed;
  sctx_T uf_script_ctx;

  int uf_refcount;
  funccall_T *uf_scoped;
  char *uf_name_exp;

  char uf_name[];


};

struct partial_S {
  int pt_refcount;
  int pt_copyID;
  char *pt_name;
  ufunc_T *pt_func;
  
# 370 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 3 4
 _Bool 
# 370 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h"
      pt_auto;

  int pt_argc;
  typval_T *pt_argv;
  dict_T *pt_dict;
};


typedef struct ht_stack_S {
  hashtab_T *ht;
  struct ht_stack_S *prev;
} ht_stack_T;


typedef struct list_stack_S {
  list_T *list;
  struct list_stack_S *prev;
} list_stack_T;
# 10 "/home/ubuntu/neovim/src/nvim/strings.h" 2



typedef struct { size_t size; size_t capacity; char *items; } StringBuilder;





typedef struct {
  int key;
  char *value;
  size_t length;
} keyvalue_T;
# 41 "/home/ubuntu/neovim/src/nvim/strings.h"
static inline char *strappend(char *const dst, const char *const src)
  FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_NONNULL_ALL
    FUNC_ATTR_NONNULL_RET FUNC_ATTR_WARN_UNUSED_RESULT
{
  const size_t src_len = strlen(src);
  return (char *)memmove(dst, src, src_len) + src_len;
}
# 8 "/home/ubuntu/neovim/src/nvim/charset.h" 2


typedef enum {
  STR2NR_DEC = 0,
  STR2NR_BIN = (1 << 0),
  STR2NR_OCT = (1 << 1),
  STR2NR_HEX = (1 << 2),
  STR2NR_OOCT = (1 << 3),







  STR2NR_FORCE = (1 << 7),

  STR2NR_ALL = STR2NR_BIN | STR2NR_OCT | STR2NR_HEX | STR2NR_OOCT,

  STR2NR_NO_OCT = STR2NR_BIN | STR2NR_HEX | STR2NR_OOCT,
  STR2NR_QUOTE = (1 << 4),
} ChStr2NrFlags;
# 38 "/home/ubuntu/neovim/src/nvim/charset.h"
static inline 
# 38 "/home/ubuntu/neovim/src/nvim/charset.h" 3 4
             _Bool 
# 38 "/home/ubuntu/neovim/src/nvim/charset.h"
                  vim_isbreak(int c)
  FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
  return breakat_flags[(uint8_t)c];
}
# 61 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/eval.h" 1
       


# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/eval.h" 2


# 1 "/home/ubuntu/neovim/src/nvim/channel_defs.h" 1
       




# 1 "/home/ubuntu/neovim/src/nvim/event/defs.h" 1
       

# 1 "/usr/include/assert.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/event/defs.h" 2


# 1 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 1
# 56 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
# 1 "/home/ubuntu/neovim/.deps/usr/include/uv/errno.h" 1
# 25 "/home/ubuntu/neovim/.deps/usr/include/uv/errno.h"
# 1 "/usr/include/errno.h" 1 3 4
# 28 "/usr/include/errno.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/errno.h" 1 3 4
# 26 "/usr/include/aarch64-linux-gnu/bits/errno.h" 3 4
# 1 "/usr/include/linux/errno.h" 1 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/errno.h" 1 3 4
# 1 "/usr/include/asm-generic/errno.h" 1 3 4




# 1 "/usr/include/asm-generic/errno-base.h" 1 3 4
# 6 "/usr/include/asm-generic/errno.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/errno.h" 2 3 4
# 1 "/usr/include/linux/errno.h" 2 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/errno.h" 2 3 4
# 29 "/usr/include/errno.h" 2 3 4









# 37 "/usr/include/errno.h" 3 4
extern int *__errno_location (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));







extern char *program_invocation_name;
extern char *program_invocation_short_name;

# 1 "/usr/include/aarch64-linux-gnu/bits/types/error_t.h" 1 3 4
# 22 "/usr/include/aarch64-linux-gnu/bits/types/error_t.h" 3 4
typedef int error_t;
# 49 "/usr/include/errno.h" 2 3 4




# 26 "/home/ubuntu/neovim/.deps/usr/include/uv/errno.h" 2
# 57 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 2
# 1 "/home/ubuntu/neovim/.deps/usr/include/uv/version.h" 1
# 58 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 2
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 59 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 2





# 63 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
struct uv__queue {
  struct uv__queue* next;
  struct uv__queue* prev;
};




# 1 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 1
# 27 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h"
# 1 "/usr/include/fcntl.h" 1 3 4
# 28 "/usr/include/fcntl.h" 3 4







# 1 "/usr/include/aarch64-linux-gnu/bits/fcntl.h" 1 3 4
# 40 "/usr/include/aarch64-linux-gnu/bits/fcntl.h" 3 4

# 40 "/usr/include/aarch64-linux-gnu/bits/fcntl.h" 3 4
struct flock
  {
    short int l_type;
    short int l_whence;
    __off_t l_start;
    __off_t l_len;
    __pid_t l_pid;
  };


struct flock64
  {
    short int l_type;
    short int l_whence;
    __off64_t l_start;
    __off64_t l_len;
    __pid_t l_pid;
  };



# 1 "/usr/include/aarch64-linux-gnu/bits/fcntl-linux.h" 1 3 4
# 265 "/usr/include/aarch64-linux-gnu/bits/fcntl-linux.h" 3 4
enum __pid_type
  {
    F_OWNER_TID = 0,
    F_OWNER_PID,
    F_OWNER_PGRP,
    F_OWNER_GID = F_OWNER_PGRP
  };


struct f_owner_ex
  {
    enum __pid_type type;
    __pid_t pid;
  };
# 353 "/usr/include/aarch64-linux-gnu/bits/fcntl-linux.h" 3 4
# 1 "/usr/include/linux/falloc.h" 1 3 4
# 354 "/usr/include/aarch64-linux-gnu/bits/fcntl-linux.h" 2 3 4



struct file_handle
{
  unsigned int handle_bytes;
  int handle_type;

  unsigned char f_handle[0];
};
# 392 "/usr/include/aarch64-linux-gnu/bits/fcntl-linux.h" 3 4





extern __ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
    __attribute__ ((__nothrow__ , __leaf__));






extern int sync_file_range (int __fd, __off64_t __offset, __off64_t __count,
       unsigned int __flags);






extern __ssize_t vmsplice (int __fdout, const struct iovec *__iov,
      size_t __count, unsigned int __flags);





extern __ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
    __off64_t *__offout, size_t __len,
    unsigned int __flags);





extern __ssize_t tee (int __fdin, int __fdout, size_t __len,
        unsigned int __flags);






extern int fallocate (int __fd, int __mode, __off_t __offset, __off_t __len);
# 447 "/usr/include/aarch64-linux-gnu/bits/fcntl-linux.h" 3 4
extern int fallocate64 (int __fd, int __mode, __off64_t __offset,
   __off64_t __len);




extern int name_to_handle_at (int __dfd, const char *__name,
         struct file_handle *__handle, int *__mnt_id,
         int __flags) __attribute__ ((__nothrow__ , __leaf__));





extern int open_by_handle_at (int __mountdirfd, struct file_handle *__handle,
         int __flags);




# 61 "/usr/include/aarch64-linux-gnu/bits/fcntl.h" 2 3 4
# 36 "/usr/include/fcntl.h" 2 3 4
# 78 "/usr/include/fcntl.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/stat.h" 1 3 4
# 79 "/usr/include/fcntl.h" 2 3 4
# 148 "/usr/include/fcntl.h" 3 4
extern int fcntl (int __fd, int __cmd, ...);
# 157 "/usr/include/fcntl.h" 3 4
extern int fcntl64 (int __fd, int __cmd, ...);
# 168 "/usr/include/fcntl.h" 3 4
extern int open (const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1)));
# 178 "/usr/include/fcntl.h" 3 4
extern int open64 (const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1)));
# 192 "/usr/include/fcntl.h" 3 4
extern int openat (int __fd, const char *__file, int __oflag, ...)
     __attribute__ ((__nonnull__ (2)));
# 203 "/usr/include/fcntl.h" 3 4
extern int openat64 (int __fd, const char *__file, int __oflag, ...)
     __attribute__ ((__nonnull__ (2)));
# 214 "/usr/include/fcntl.h" 3 4
extern int creat (const char *__file, mode_t __mode) __attribute__ ((__nonnull__ (1)));
# 224 "/usr/include/fcntl.h" 3 4
extern int creat64 (const char *__file, mode_t __mode) __attribute__ ((__nonnull__ (1)));
# 260 "/usr/include/fcntl.h" 3 4
extern int posix_fadvise (int __fd, off_t __offset, off_t __len,
     int __advise) __attribute__ ((__nothrow__ , __leaf__));
# 272 "/usr/include/fcntl.h" 3 4
extern int posix_fadvise64 (int __fd, off64_t __offset, off64_t __len,
       int __advise) __attribute__ ((__nothrow__ , __leaf__));
# 282 "/usr/include/fcntl.h" 3 4
extern int posix_fallocate (int __fd, off_t __offset, off_t __len);
# 293 "/usr/include/fcntl.h" 3 4
extern int posix_fallocate64 (int __fd, off64_t __offset, off64_t __len);
# 304 "/usr/include/fcntl.h" 3 4

# 28 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2
# 1 "/usr/include/dirent.h" 1 3 4
# 27 "/usr/include/dirent.h" 3 4

# 61 "/usr/include/dirent.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/dirent.h" 1 3 4
# 22 "/usr/include/aarch64-linux-gnu/bits/dirent.h" 3 4
struct dirent
  {

    __ino_t d_ino;
    __off_t d_off;




    unsigned short int d_reclen;
    unsigned char d_type;
    char d_name[256];
  };


struct dirent64
  {
    __ino64_t d_ino;
    __off64_t d_off;
    unsigned short int d_reclen;
    unsigned char d_type;
    char d_name[256];
  };
# 62 "/usr/include/dirent.h" 2 3 4
# 97 "/usr/include/dirent.h" 3 4
enum
  {
    DT_UNKNOWN = 0,

    DT_FIFO = 1,

    DT_CHR = 2,

    DT_DIR = 4,

    DT_BLK = 6,

    DT_REG = 8,

    DT_LNK = 10,

    DT_SOCK = 12,

    DT_WHT = 14

  };
# 127 "/usr/include/dirent.h" 3 4
typedef struct __dirstream DIR;






extern DIR *opendir (const char *__name) __attribute__ ((__nonnull__ (1)));






extern DIR *fdopendir (int __fd);







extern int closedir (DIR *__dirp) __attribute__ ((__nonnull__ (1)));
# 162 "/usr/include/dirent.h" 3 4
extern struct dirent *readdir (DIR *__dirp) __attribute__ ((__nonnull__ (1)));
# 173 "/usr/include/dirent.h" 3 4
extern struct dirent64 *readdir64 (DIR *__dirp) __attribute__ ((__nonnull__ (1)));
# 183 "/usr/include/dirent.h" 3 4
extern int readdir_r (DIR *__restrict __dirp,
        struct dirent *__restrict __entry,
        struct dirent **__restrict __result)
     __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__deprecated__));
# 201 "/usr/include/dirent.h" 3 4
extern int readdir64_r (DIR *__restrict __dirp,
   struct dirent64 *__restrict __entry,
   struct dirent64 **__restrict __result)
  __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__deprecated__));




extern void rewinddir (DIR *__dirp) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern void seekdir (DIR *__dirp, long int __pos) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern long int telldir (DIR *__dirp) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern int dirfd (DIR *__dirp) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 245 "/usr/include/dirent.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 246 "/usr/include/dirent.h" 2 3 4
# 255 "/usr/include/dirent.h" 3 4
extern int scandir (const char *__restrict __dir,
      struct dirent ***__restrict __namelist,
      int (*__selector) (const struct dirent *),
      int (*__cmp) (const struct dirent **,
      const struct dirent **))
     __attribute__ ((__nonnull__ (1, 2)));
# 278 "/usr/include/dirent.h" 3 4
extern int scandir64 (const char *__restrict __dir,
        struct dirent64 ***__restrict __namelist,
        int (*__selector) (const struct dirent64 *),
        int (*__cmp) (const struct dirent64 **,
        const struct dirent64 **))
     __attribute__ ((__nonnull__ (1, 2)));
# 293 "/usr/include/dirent.h" 3 4
extern int scandirat (int __dfd, const char *__restrict __dir,
        struct dirent ***__restrict __namelist,
        int (*__selector) (const struct dirent *),
        int (*__cmp) (const struct dirent **,
        const struct dirent **))
     __attribute__ ((__nonnull__ (2, 3)));
# 315 "/usr/include/dirent.h" 3 4
extern int scandirat64 (int __dfd, const char *__restrict __dir,
   struct dirent64 ***__restrict __namelist,
   int (*__selector) (const struct dirent64 *),
   int (*__cmp) (const struct dirent64 **,
          const struct dirent64 **))
     __attribute__ ((__nonnull__ (2, 3)));




extern int alphasort (const struct dirent **__e1,
        const struct dirent **__e2)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 340 "/usr/include/dirent.h" 3 4
extern int alphasort64 (const struct dirent64 **__e1,
   const struct dirent64 **__e2)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 353 "/usr/include/dirent.h" 3 4
extern __ssize_t getdirentries (int __fd, char *__restrict __buf,
    size_t __nbytes,
    __off_t *__restrict __basep)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4)));
# 370 "/usr/include/dirent.h" 3 4
extern __ssize_t getdirentries64 (int __fd, char *__restrict __buf,
      size_t __nbytes,
      __off64_t *__restrict __basep)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4)));






extern int versionsort (const struct dirent **__e1,
   const struct dirent **__e2)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 396 "/usr/include/dirent.h" 3 4
extern int versionsort64 (const struct dirent64 **__e1,
     const struct dirent64 **__e2)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));





# 1 "/usr/include/aarch64-linux-gnu/bits/dirent_ext.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/dirent_ext.h" 3 4






extern __ssize_t getdents64 (int __fd, void *__buffer, size_t __length)
  __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));



# 405 "/usr/include/dirent.h" 2 3 4
# 29 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2



# 1 "/usr/include/netinet/tcp.h" 1 3 4
# 93 "/usr/include/netinet/tcp.h" 3 4
typedef uint32_t tcp_seq;




struct tcphdr
  {
    __extension__ union
    {
      struct
      {
 uint16_t th_sport;
 uint16_t th_dport;
 tcp_seq th_seq;
 tcp_seq th_ack;

 uint8_t th_x2:4;
 uint8_t th_off:4;





 uint8_t th_flags;






 uint16_t th_win;
 uint16_t th_sum;
 uint16_t th_urp;
      };
      struct
      {
 uint16_t source;
 uint16_t dest;
 uint32_t seq;
 uint32_t ack_seq;

 uint16_t res1:4;
 uint16_t doff:4;
 uint16_t fin:1;
 uint16_t syn:1;
 uint16_t rst:1;
 uint16_t psh:1;
 uint16_t ack:1;
 uint16_t urg:1;
 uint16_t res2:2;
# 156 "/usr/include/netinet/tcp.h" 3 4
 uint16_t window;
 uint16_t check;
 uint16_t urg_ptr;
      };
    };
};

enum
{
  TCP_ESTABLISHED = 1,
  TCP_SYN_SENT,
  TCP_SYN_RECV,
  TCP_FIN_WAIT1,
  TCP_FIN_WAIT2,
  TCP_TIME_WAIT,
  TCP_CLOSE,
  TCP_CLOSE_WAIT,
  TCP_LAST_ACK,
  TCP_LISTEN,
  TCP_CLOSING
};
# 217 "/usr/include/netinet/tcp.h" 3 4
enum tcp_ca_state
{
  TCP_CA_Open = 0,
  TCP_CA_Disorder = 1,
  TCP_CA_CWR = 2,
  TCP_CA_Recovery = 3,
  TCP_CA_Loss = 4
};

struct tcp_info
{
  uint8_t tcpi_state;
  uint8_t tcpi_ca_state;
  uint8_t tcpi_retransmits;
  uint8_t tcpi_probes;
  uint8_t tcpi_backoff;
  uint8_t tcpi_options;
  uint8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;

  uint32_t tcpi_rto;
  uint32_t tcpi_ato;
  uint32_t tcpi_snd_mss;
  uint32_t tcpi_rcv_mss;

  uint32_t tcpi_unacked;
  uint32_t tcpi_sacked;
  uint32_t tcpi_lost;
  uint32_t tcpi_retrans;
  uint32_t tcpi_fackets;


  uint32_t tcpi_last_data_sent;
  uint32_t tcpi_last_ack_sent;
  uint32_t tcpi_last_data_recv;
  uint32_t tcpi_last_ack_recv;


  uint32_t tcpi_pmtu;
  uint32_t tcpi_rcv_ssthresh;
  uint32_t tcpi_rtt;
  uint32_t tcpi_rttvar;
  uint32_t tcpi_snd_ssthresh;
  uint32_t tcpi_snd_cwnd;
  uint32_t tcpi_advmss;
  uint32_t tcpi_reordering;

  uint32_t tcpi_rcv_rtt;
  uint32_t tcpi_rcv_space;

  uint32_t tcpi_total_retrans;
};
# 276 "/usr/include/netinet/tcp.h" 3 4
struct tcp_md5sig
{
  struct sockaddr_storage tcpm_addr;
  uint8_t tcpm_flags;
  uint8_t tcpm_prefixlen;
  uint16_t tcpm_keylen;
  uint32_t __tcpm_pad;
  uint8_t tcpm_key[80];
};


struct tcp_repair_opt
{
  uint32_t opt_code;
  uint32_t opt_val;
};


enum
{
  TCP_NO_QUEUE,
  TCP_RECV_QUEUE,
  TCP_SEND_QUEUE,
  TCP_QUEUES_NR,
};
# 319 "/usr/include/netinet/tcp.h" 3 4
struct tcp_cookie_transactions
{
  uint16_t tcpct_flags;
  uint8_t __tcpct_pad1;
  uint8_t tcpct_cookie_desired;
  uint16_t tcpct_s_data_desired;
  uint16_t tcpct_used;
  uint8_t tcpct_value[536U];
};


struct tcp_repair_window
{
  uint32_t snd_wl1;
  uint32_t snd_wnd;
  uint32_t max_window;
  uint32_t rcv_wnd;
  uint32_t rcv_wup;
};


struct tcp_zerocopy_receive
{
  uint64_t address;
  uint32_t length;
  uint32_t recv_skip_hint;
};
# 33 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2




# 1 "/usr/include/pwd.h" 1 3 4
# 27 "/usr/include/pwd.h" 3 4





# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 33 "/usr/include/pwd.h" 2 3 4
# 49 "/usr/include/pwd.h" 3 4
struct passwd
{
  char *pw_name;
  char *pw_passwd;

  __uid_t pw_uid;
  __gid_t pw_gid;
  char *pw_gecos;
  char *pw_dir;
  char *pw_shell;
};
# 72 "/usr/include/pwd.h" 3 4
extern void setpwent (void);





extern void endpwent (void);





extern struct passwd *getpwent (void);
# 94 "/usr/include/pwd.h" 3 4
extern struct passwd *fgetpwent (FILE *__stream) __attribute__ ((__nonnull__ (1)));







extern int putpwent (const struct passwd *__restrict __p,
       FILE *__restrict __f);






extern struct passwd *getpwuid (__uid_t __uid);





extern struct passwd *getpwnam (const char *__name) __attribute__ ((__nonnull__ (1)));
# 139 "/usr/include/pwd.h" 3 4
extern int getpwent_r (struct passwd *__restrict __resultbuf,
         char *__restrict __buffer, size_t __buflen,
         struct passwd **__restrict __result)
         __attribute__ ((__nonnull__ (1, 2, 4)));


extern int getpwuid_r (__uid_t __uid,
         struct passwd *__restrict __resultbuf,
         char *__restrict __buffer, size_t __buflen,
         struct passwd **__restrict __result)
         __attribute__ ((__nonnull__ (2, 3, 5)));

extern int getpwnam_r (const char *__restrict __name,
         struct passwd *__restrict __resultbuf,
         char *__restrict __buffer, size_t __buflen,
         struct passwd **__restrict __result)
         __attribute__ ((__nonnull__ (1, 2, 3, 5)));
# 166 "/usr/include/pwd.h" 3 4
extern int fgetpwent_r (FILE *__restrict __stream,
   struct passwd *__restrict __resultbuf,
   char *__restrict __buffer, size_t __buflen,
   struct passwd **__restrict __result)
   __attribute__ ((__nonnull__ (1, 2, 3, 5)));
# 184 "/usr/include/pwd.h" 3 4
extern int getpw (__uid_t __uid, char *__buffer);



# 38 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2


# 1 "/usr/include/semaphore.h" 1 3 4
# 28 "/usr/include/semaphore.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/semaphore.h" 1 3 4
# 35 "/usr/include/aarch64-linux-gnu/bits/semaphore.h" 3 4
typedef union
{
  char __size[32];
  long long int __align;
} sem_t;
# 29 "/usr/include/semaphore.h" 2 3 4






extern int sem_init (sem_t *__sem, int __pshared, unsigned int __value)
  __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int sem_destroy (sem_t *__sem) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern sem_t *sem_open (const char *__name, int __oflag, ...)
  __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int sem_close (sem_t *__sem) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int sem_unlink (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern int sem_wait (sem_t *__sem) __attribute__ ((__nonnull__ (1)));






extern int sem_timedwait (sem_t *__restrict __sem,
     const struct timespec *__restrict __abstime)
  __attribute__ ((__nonnull__ (1, 2)));



extern int sem_clockwait (sem_t *__restrict __sem,
     clockid_t clock,
     const struct timespec *__restrict __abstime)
  __attribute__ ((__nonnull__ (1, 3)));



extern int sem_trywait (sem_t *__sem) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int sem_post (sem_t *__sem) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int sem_getvalue (sem_t *__restrict __sem, int *__restrict __sval)
  __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));



# 41 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2





# 1 "/home/ubuntu/neovim/.deps/usr/include/uv/threadpool.h" 1
# 30 "/home/ubuntu/neovim/.deps/usr/include/uv/threadpool.h"

# 30 "/home/ubuntu/neovim/.deps/usr/include/uv/threadpool.h"
struct uv__work {
  void (*work)(struct uv__work *w);
  void (*done)(struct uv__work *w, int status);
  struct uv_loop_s* loop;
  struct uv__queue wq;
};
# 47 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2


# 1 "/home/ubuntu/neovim/.deps/usr/include/uv/linux.h" 1
# 50 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2
# 85 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h"
struct uv__io_s;
struct uv_loop_s;

typedef void (*uv__io_cb)(struct uv_loop_s* loop,
                          struct uv__io_s* w,
                          unsigned int events);
typedef struct uv__io_s uv__io_t;

struct uv__io_s {
  uv__io_cb cb;
  struct uv__queue pending_queue;
  struct uv__queue watcher_queue;
  unsigned int pevents;
  unsigned int events;
  int fd;
 
};
# 120 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h"
typedef struct uv_buf_t {
  char* base;
  size_t len;
} uv_buf_t;

typedef int uv_file;
typedef int uv_os_sock_t;
typedef int uv_os_fd_t;
typedef pid_t uv_pid_t;



typedef pthread_once_t uv_once_t;
typedef pthread_t uv_thread_t;
typedef pthread_mutex_t uv_mutex_t;
typedef pthread_rwlock_t uv_rwlock_t;
typedef sem_t uv_sem_t;
typedef pthread_cond_t uv_cond_t;
typedef pthread_key_t uv_key_t;
# 161 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h"
typedef pthread_barrier_t uv_barrier_t;



typedef gid_t uv_gid_t;
typedef uid_t uv_uid_t;

typedef struct dirent uv__dirent_t;
# 215 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h"
typedef struct {
  void* handle;
  char* errmsg;
} uv_lib_t;
# 72 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 2
# 191 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
typedef enum {

  UV_E2BIG = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 7
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EACCES = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 13
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EADDRINUSE = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 98
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EADDRNOTAVAIL = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 99
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EAFNOSUPPORT = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 97
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EAGAIN = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 11
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EAI_ADDRFAMILY = (-3000), UV_EAI_AGAIN = (-3001), UV_EAI_BADFLAGS = (-3002), UV_EAI_BADHINTS = (-3013), UV_EAI_CANCELED = (-3003), UV_EAI_FAIL = (-3004), UV_EAI_FAMILY = (-3005), UV_EAI_MEMORY = (-3006), UV_EAI_NODATA = (-3007), UV_EAI_NONAME = (-3008), UV_EAI_OVERFLOW = (-3009), UV_EAI_PROTOCOL = (-3014), UV_EAI_SERVICE = (-3010), UV_EAI_SOCKTYPE = (-3011), UV_EALREADY = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 114
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EBADF = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 9
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EBUSY = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 16
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ECANCELED = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 125
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ECHARSET = (-4080), UV_ECONNABORTED = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 103
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ECONNREFUSED = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 111
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ECONNRESET = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 104
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EDESTADDRREQ = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 89
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EEXIST = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 17
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EFAULT = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 14
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EFBIG = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 27
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EHOSTUNREACH = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 113
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EINTR = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 4
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EINVAL = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 22
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EIO = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 5
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EISCONN = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 106
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EISDIR = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 21
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ELOOP = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 40
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EMFILE = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 24
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EMSGSIZE = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 90
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENAMETOOLONG = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 36
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENETDOWN = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 100
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENETUNREACH = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 101
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENFILE = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 23
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENOBUFS = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 105
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENODEV = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 19
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENOENT = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 2
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENOMEM = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 12
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENONET = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 64
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENOPROTOOPT = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 92
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENOSPC = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 28
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENOSYS = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 38
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENOTCONN = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 107
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENOTDIR = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 20
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENOTEMPTY = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 39
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENOTSOCK = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 88
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENOTSUP = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 95
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EOVERFLOW = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 75
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EPERM = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 1
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EPIPE = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 32
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EPROTO = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 71
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EPROTONOSUPPORT = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 93
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EPROTOTYPE = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 91
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ERANGE = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 34
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EROFS = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 30
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ESHUTDOWN = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 108
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ESPIPE = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 29
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ESRCH = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 3
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ETIMEDOUT = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 110
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ETXTBSY = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 26
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EXDEV = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 18
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_UNKNOWN = (-4094), UV_EOF = (-4095), UV_ENXIO = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 6
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EMLINK = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 31
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EHOSTDOWN = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 112
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EREMOTEIO = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 121
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENOTTY = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 25
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EFTYPE = (-4028), UV_EILSEQ = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 84
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ESOCKTNOSUPPORT = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 94
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_ENODATA = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 61
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )), UV_EUNATCH = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 49
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 )),

  UV_ERRNO_MAX = (-4095) - 1
} uv_errno_t;

typedef enum {
  UV_UNKNOWN_HANDLE = 0,

  UV_ASYNC, UV_CHECK, UV_FS_EVENT, UV_FS_POLL, UV_HANDLE, UV_IDLE, UV_NAMED_PIPE, UV_POLL, UV_PREPARE, UV_PROCESS, UV_STREAM, UV_TCP, UV_TIMER, UV_TTY, UV_UDP, UV_SIGNAL,

  UV_FILE,
  UV_HANDLE_TYPE_MAX
} uv_handle_type;

typedef enum {
  UV_UNKNOWN_REQ = 0,

  UV_REQ, UV_CONNECT, UV_WRITE, UV_SHUTDOWN, UV_UDP_SEND, UV_FS, UV_WORK, UV_GETADDRINFO, UV_GETNAMEINFO, UV_RANDOM,

 
  UV_REQ_TYPE_MAX
} uv_req_type;



typedef struct uv_loop_s uv_loop_t;
typedef struct uv_handle_s uv_handle_t;
typedef struct uv_dir_s uv_dir_t;
typedef struct uv_stream_s uv_stream_t;
typedef struct uv_tcp_s uv_tcp_t;
typedef struct uv_udp_s uv_udp_t;
typedef struct uv_pipe_s uv_pipe_t;
typedef struct uv_tty_s uv_tty_t;
typedef struct uv_poll_s uv_poll_t;
typedef struct uv_timer_s uv_timer_t;
typedef struct uv_prepare_s uv_prepare_t;
typedef struct uv_check_s uv_check_t;
typedef struct uv_idle_s uv_idle_t;
typedef struct uv_async_s uv_async_t;
typedef struct uv_process_s uv_process_t;
typedef struct uv_fs_event_s uv_fs_event_t;
typedef struct uv_fs_poll_s uv_fs_poll_t;
typedef struct uv_signal_s uv_signal_t;


typedef struct uv_req_s uv_req_t;
typedef struct uv_getaddrinfo_s uv_getaddrinfo_t;
typedef struct uv_getnameinfo_s uv_getnameinfo_t;
typedef struct uv_shutdown_s uv_shutdown_t;
typedef struct uv_write_s uv_write_t;
typedef struct uv_connect_s uv_connect_t;
typedef struct uv_udp_send_s uv_udp_send_t;
typedef struct uv_fs_s uv_fs_t;
typedef struct uv_work_s uv_work_t;
typedef struct uv_random_s uv_random_t;


typedef struct uv_env_item_s uv_env_item_t;
typedef struct uv_cpu_info_s uv_cpu_info_t;
typedef struct uv_interface_address_s uv_interface_address_t;
typedef struct uv_dirent_s uv_dirent_t;
typedef struct uv_passwd_s uv_passwd_t;
typedef struct uv_group_s uv_group_t;
typedef struct uv_utsname_s uv_utsname_t;
typedef struct uv_statfs_s uv_statfs_t;

typedef struct uv_metrics_s uv_metrics_t;

typedef enum {
  UV_LOOP_BLOCK_SIGNAL = 0,
  UV_METRICS_IDLE_TIME
} uv_loop_option;

typedef enum {
  UV_RUN_DEFAULT = 0,
  UV_RUN_ONCE,
  UV_RUN_NOWAIT
} uv_run_mode;


__attribute__((visibility("default"))) unsigned int uv_version(void);
__attribute__((visibility("default"))) const char* uv_version_string(void);

typedef void* (*uv_malloc_func)(size_t size);
typedef void* (*uv_realloc_func)(void* ptr, size_t size);
typedef void* (*uv_calloc_func)(size_t count, size_t size);
typedef void (*uv_free_func)(void* ptr);

__attribute__((visibility("default"))) void uv_library_shutdown(void);

__attribute__((visibility("default"))) int uv_replace_allocator(uv_malloc_func malloc_func,
                                   uv_realloc_func realloc_func,
                                   uv_calloc_func calloc_func,
                                   uv_free_func free_func);

__attribute__((visibility("default"))) uv_loop_t* uv_default_loop(void);
__attribute__((visibility("default"))) int uv_loop_init(uv_loop_t* loop);
__attribute__((visibility("default"))) int uv_loop_close(uv_loop_t* loop);





__attribute__((visibility("default"))) uv_loop_t* uv_loop_new(void);





__attribute__((visibility("default"))) void uv_loop_delete(uv_loop_t*);
__attribute__((visibility("default"))) size_t uv_loop_size(void);
__attribute__((visibility("default"))) int uv_loop_alive(const uv_loop_t* loop);
__attribute__((visibility("default"))) int uv_loop_configure(uv_loop_t* loop, uv_loop_option option, ...);
__attribute__((visibility("default"))) int uv_loop_fork(uv_loop_t* loop);

__attribute__((visibility("default"))) int uv_run(uv_loop_t*, uv_run_mode mode);
__attribute__((visibility("default"))) void uv_stop(uv_loop_t*);

__attribute__((visibility("default"))) void uv_ref(uv_handle_t*);
__attribute__((visibility("default"))) void uv_unref(uv_handle_t*);
__attribute__((visibility("default"))) int uv_has_ref(const uv_handle_t*);

__attribute__((visibility("default"))) void uv_update_time(uv_loop_t*);
__attribute__((visibility("default"))) uint64_t uv_now(const uv_loop_t*);

__attribute__((visibility("default"))) int uv_backend_fd(const uv_loop_t*);
__attribute__((visibility("default"))) int uv_backend_timeout(const uv_loop_t*);

typedef void (*uv_alloc_cb)(uv_handle_t* handle,
                            size_t suggested_size,
                            uv_buf_t* buf);
typedef void (*uv_read_cb)(uv_stream_t* stream,
                           ssize_t nread,
                           const uv_buf_t* buf);
typedef void (*uv_write_cb)(uv_write_t* req, int status);
typedef void (*uv_connect_cb)(uv_connect_t* req, int status);
typedef void (*uv_shutdown_cb)(uv_shutdown_t* req, int status);
typedef void (*uv_connection_cb)(uv_stream_t* server, int status);
typedef void (*uv_close_cb)(uv_handle_t* handle);
typedef void (*uv_poll_cb)(uv_poll_t* handle, int status, int events);
typedef void (*uv_timer_cb)(uv_timer_t* handle);
typedef void (*uv_async_cb)(uv_async_t* handle);
typedef void (*uv_prepare_cb)(uv_prepare_t* handle);
typedef void (*uv_check_cb)(uv_check_t* handle);
typedef void (*uv_idle_cb)(uv_idle_t* handle);
typedef void (*uv_exit_cb)(uv_process_t*, int64_t exit_status, int term_signal);
typedef void (*uv_walk_cb)(uv_handle_t* handle, void* arg);
typedef void (*uv_fs_cb)(uv_fs_t* req);
typedef void (*uv_work_cb)(uv_work_t* req);
typedef void (*uv_after_work_cb)(uv_work_t* req, int status);
typedef void (*uv_getaddrinfo_cb)(uv_getaddrinfo_t* req,
                                  int status,
                                  struct addrinfo* res);
typedef void (*uv_getnameinfo_cb)(uv_getnameinfo_t* req,
                                  int status,
                                  const char* hostname,
                                  const char* service);
typedef void (*uv_random_cb)(uv_random_t* req,
                             int status,
                             void* buf,
                             size_t buflen);

typedef enum {
  UV_CLOCK_MONOTONIC,
  UV_CLOCK_REALTIME
} uv_clock_id;


typedef struct {
  long tv_sec;
  long tv_nsec;
} uv_timespec_t;

typedef struct {
  int64_t tv_sec;
  int32_t tv_nsec;
} uv_timespec64_t;


typedef struct {
  long tv_sec;
  long tv_usec;
} uv_timeval_t;

typedef struct {
  int64_t tv_sec;
  int32_t tv_usec;
} uv_timeval64_t;

typedef struct {
  uint64_t st_dev;
  uint64_t st_mode;
  uint64_t st_nlink;
  uint64_t st_uid;
  uint64_t st_gid;
  uint64_t st_rdev;
  uint64_t st_ino;
  uint64_t st_size;
  uint64_t st_blksize;
  uint64_t st_blocks;
  uint64_t st_flags;
  uint64_t st_gen;
  uv_timespec_t st_atim;
  uv_timespec_t st_mtim;
  uv_timespec_t st_ctim;
  uv_timespec_t st_birthtim;
} uv_stat_t;


typedef void (*uv_fs_event_cb)(uv_fs_event_t* handle,
                               const char* filename,
                               int events,
                               int status);

typedef void (*uv_fs_poll_cb)(uv_fs_poll_t* handle,
                              int status,
                              const uv_stat_t* prev,
                              const uv_stat_t* curr);

typedef void (*uv_signal_cb)(uv_signal_t* handle, int signum);


typedef enum {
  UV_LEAVE_GROUP = 0,
  UV_JOIN_GROUP
} uv_membership;


__attribute__((visibility("default"))) int uv_translate_sys_error(int sys_errno);

__attribute__((visibility("default"))) const char* uv_strerror(int err);
__attribute__((visibility("default"))) char* uv_strerror_r(int err, char* buf, size_t buflen);

__attribute__((visibility("default"))) const char* uv_err_name(int err);
__attribute__((visibility("default"))) char* uv_err_name_r(int err, char* buf, size_t buflen);
# 440 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
struct uv_req_s {
  void* data; uv_req_type type; void* reserved[6];
};






__attribute__((visibility("default"))) int uv_shutdown(uv_shutdown_t* req,
                          uv_stream_t* handle,
                          uv_shutdown_cb cb);

struct uv_shutdown_s {
  void* data; uv_req_type type; void* reserved[6];
  uv_stream_t* handle;
  uv_shutdown_cb cb;
 
};
# 477 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
struct uv_handle_s {
  void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
};

__attribute__((visibility("default"))) size_t uv_handle_size(uv_handle_type type);
__attribute__((visibility("default"))) uv_handle_type uv_handle_get_type(const uv_handle_t* handle);
__attribute__((visibility("default"))) const char* uv_handle_type_name(uv_handle_type type);
__attribute__((visibility("default"))) void* uv_handle_get_data(const uv_handle_t* handle);
__attribute__((visibility("default"))) uv_loop_t* uv_handle_get_loop(const uv_handle_t* handle);
__attribute__((visibility("default"))) void uv_handle_set_data(uv_handle_t* handle, void* data);

__attribute__((visibility("default"))) size_t uv_req_size(uv_req_type type);
__attribute__((visibility("default"))) void* uv_req_get_data(const uv_req_t* req);
__attribute__((visibility("default"))) void uv_req_set_data(uv_req_t* req, void* data);
__attribute__((visibility("default"))) uv_req_type uv_req_get_type(const uv_req_t* req);
__attribute__((visibility("default"))) const char* uv_req_type_name(uv_req_type type);

__attribute__((visibility("default"))) int uv_is_active(const uv_handle_t* handle);

__attribute__((visibility("default"))) void uv_walk(uv_loop_t* loop, uv_walk_cb walk_cb, void* arg);


__attribute__((visibility("default"))) void uv_print_all_handles(uv_loop_t* loop, FILE* stream);
__attribute__((visibility("default"))) void uv_print_active_handles(uv_loop_t* loop, FILE* stream);

__attribute__((visibility("default"))) void uv_close(uv_handle_t* handle, uv_close_cb close_cb);

__attribute__((visibility("default"))) int uv_send_buffer_size(uv_handle_t* handle, int* value);
__attribute__((visibility("default"))) int uv_recv_buffer_size(uv_handle_t* handle, int* value);

__attribute__((visibility("default"))) int uv_fileno(const uv_handle_t* handle, uv_os_fd_t* fd);

__attribute__((visibility("default"))) uv_buf_t uv_buf_init(char* base, unsigned int len);

__attribute__((visibility("default"))) int uv_pipe(uv_file fds[2], int read_flags, int write_flags);
__attribute__((visibility("default"))) int uv_socketpair(int type,
                            int protocol,
                            uv_os_sock_t socket_vector[2],
                            int flags0,
                            int flags1);
# 533 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
struct uv_stream_s {
  void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
  size_t write_queue_size; uv_alloc_cb alloc_cb; uv_read_cb read_cb; uv_connect_t *connect_req; uv_shutdown_t *shutdown_req; uv__io_t io_watcher; struct uv__queue write_queue; struct uv__queue write_completed_queue; uv_connection_cb connection_cb; int delayed_error; int accepted_fd; void* queued_fds;
};

__attribute__((visibility("default"))) size_t uv_stream_get_write_queue_size(const uv_stream_t* stream);

__attribute__((visibility("default"))) int uv_listen(uv_stream_t* stream, int backlog, uv_connection_cb cb);
__attribute__((visibility("default"))) int uv_accept(uv_stream_t* server, uv_stream_t* client);

__attribute__((visibility("default"))) int uv_read_start(uv_stream_t*,
                            uv_alloc_cb alloc_cb,
                            uv_read_cb read_cb);
__attribute__((visibility("default"))) int uv_read_stop(uv_stream_t*);

__attribute__((visibility("default"))) int uv_write(uv_write_t* req,
                       uv_stream_t* handle,
                       const uv_buf_t bufs[],
                       unsigned int nbufs,
                       uv_write_cb cb);
__attribute__((visibility("default"))) int uv_write2(uv_write_t* req,
                        uv_stream_t* handle,
                        const uv_buf_t bufs[],
                        unsigned int nbufs,
                        uv_stream_t* send_handle,
                        uv_write_cb cb);
__attribute__((visibility("default"))) int uv_try_write(uv_stream_t* handle,
                           const uv_buf_t bufs[],
                           unsigned int nbufs);
__attribute__((visibility("default"))) int uv_try_write2(uv_stream_t* handle,
                            const uv_buf_t bufs[],
                            unsigned int nbufs,
                            uv_stream_t* send_handle);


struct uv_write_s {
  void* data; uv_req_type type; void* reserved[6];
  uv_write_cb cb;
  uv_stream_t* send_handle;
  uv_stream_t* handle;
  struct uv__queue queue; unsigned int write_index; uv_buf_t* bufs; unsigned int nbufs; int error; uv_buf_t bufsml[4];
};


__attribute__((visibility("default"))) int uv_is_readable(const uv_stream_t* handle);
__attribute__((visibility("default"))) int uv_is_writable(const uv_stream_t* handle);

__attribute__((visibility("default"))) int uv_stream_set_blocking(uv_stream_t* handle, int blocking);

__attribute__((visibility("default"))) int uv_is_closing(const uv_handle_t* handle);







struct uv_tcp_s {
  void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
  size_t write_queue_size; uv_alloc_cb alloc_cb; uv_read_cb read_cb; uv_connect_t *connect_req; uv_shutdown_t *shutdown_req; uv__io_t io_watcher; struct uv__queue write_queue; struct uv__queue write_completed_queue; uv_connection_cb connection_cb; int delayed_error; int accepted_fd; void* queued_fds;
 
};

__attribute__((visibility("default"))) int uv_tcp_init(uv_loop_t*, uv_tcp_t* handle);
__attribute__((visibility("default"))) int uv_tcp_init_ex(uv_loop_t*, uv_tcp_t* handle, unsigned int flags);
__attribute__((visibility("default"))) int uv_tcp_open(uv_tcp_t* handle, uv_os_sock_t sock);
__attribute__((visibility("default"))) int uv_tcp_nodelay(uv_tcp_t* handle, int enable);
__attribute__((visibility("default"))) int uv_tcp_keepalive(uv_tcp_t* handle,
                               int enable,
                               unsigned int delay);
__attribute__((visibility("default"))) int uv_tcp_simultaneous_accepts(uv_tcp_t* handle, int enable);

enum uv_tcp_flags {

  UV_TCP_IPV6ONLY = 1
};

__attribute__((visibility("default"))) int uv_tcp_bind(uv_tcp_t* handle,
                          const struct sockaddr* addr,
                          unsigned int flags);
__attribute__((visibility("default"))) int uv_tcp_getsockname(const uv_tcp_t* handle,
                                 struct sockaddr* name,
                                 int* namelen);
__attribute__((visibility("default"))) int uv_tcp_getpeername(const uv_tcp_t* handle,
                                 struct sockaddr* name,
                                 int* namelen);
__attribute__((visibility("default"))) int uv_tcp_close_reset(uv_tcp_t* handle, uv_close_cb close_cb);
__attribute__((visibility("default"))) int uv_tcp_connect(uv_connect_t* req,
                             uv_tcp_t* handle,
                             const struct sockaddr* addr,
                             uv_connect_cb cb);


struct uv_connect_s {
  void* data; uv_req_type type; void* reserved[6];
  uv_connect_cb cb;
  uv_stream_t* handle;
  struct uv__queue queue;
};






enum uv_udp_flags {

  UV_UDP_IPV6ONLY = 1,




  UV_UDP_PARTIAL = 2,
# 654 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
  UV_UDP_REUSEADDR = 4,




  UV_UDP_MMSG_CHUNK = 8,





  UV_UDP_MMSG_FREE = 16,







  UV_UDP_LINUX_RECVERR = 32,



  UV_UDP_RECVMMSG = 256
};

typedef void (*uv_udp_send_cb)(uv_udp_send_t* req, int status);
typedef void (*uv_udp_recv_cb)(uv_udp_t* handle,
                               ssize_t nread,
                               const uv_buf_t* buf,
                               const struct sockaddr* addr,
                               unsigned flags);


struct uv_udp_s {
  void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;





  size_t send_queue_size;



  size_t send_queue_count;
  uv_alloc_cb alloc_cb; uv_udp_recv_cb recv_cb; uv__io_t io_watcher; struct uv__queue write_queue; struct uv__queue write_completed_queue;
};


struct uv_udp_send_s {
  void* data; uv_req_type type; void* reserved[6];
  uv_udp_t* handle;
  uv_udp_send_cb cb;
  struct uv__queue queue; struct sockaddr_storage addr; unsigned int nbufs; uv_buf_t* bufs; ssize_t status; uv_udp_send_cb send_cb; uv_buf_t bufsml[4];
};

__attribute__((visibility("default"))) int uv_udp_init(uv_loop_t*, uv_udp_t* handle);
__attribute__((visibility("default"))) int uv_udp_init_ex(uv_loop_t*, uv_udp_t* handle, unsigned int flags);
__attribute__((visibility("default"))) int uv_udp_open(uv_udp_t* handle, uv_os_sock_t sock);
__attribute__((visibility("default"))) int uv_udp_bind(uv_udp_t* handle,
                          const struct sockaddr* addr,
                          unsigned int flags);
__attribute__((visibility("default"))) int uv_udp_connect(uv_udp_t* handle, const struct sockaddr* addr);

__attribute__((visibility("default"))) int uv_udp_getpeername(const uv_udp_t* handle,
                                 struct sockaddr* name,
                                 int* namelen);
__attribute__((visibility("default"))) int uv_udp_getsockname(const uv_udp_t* handle,
                                 struct sockaddr* name,
                                 int* namelen);
__attribute__((visibility("default"))) int uv_udp_set_membership(uv_udp_t* handle,
                                    const char* multicast_addr,
                                    const char* interface_addr,
                                    uv_membership membership);
__attribute__((visibility("default"))) int uv_udp_set_source_membership(uv_udp_t* handle,
                                           const char* multicast_addr,
                                           const char* interface_addr,
                                           const char* source_addr,
                                           uv_membership membership);
__attribute__((visibility("default"))) int uv_udp_set_multicast_loop(uv_udp_t* handle, int on);
__attribute__((visibility("default"))) int uv_udp_set_multicast_ttl(uv_udp_t* handle, int ttl);
__attribute__((visibility("default"))) int uv_udp_set_multicast_interface(uv_udp_t* handle,
                                             const char* interface_addr);
__attribute__((visibility("default"))) int uv_udp_set_broadcast(uv_udp_t* handle, int on);
__attribute__((visibility("default"))) int uv_udp_set_ttl(uv_udp_t* handle, int ttl);
__attribute__((visibility("default"))) int uv_udp_send(uv_udp_send_t* req,
                          uv_udp_t* handle,
                          const uv_buf_t bufs[],
                          unsigned int nbufs,
                          const struct sockaddr* addr,
                          uv_udp_send_cb send_cb);
__attribute__((visibility("default"))) int uv_udp_try_send(uv_udp_t* handle,
                              const uv_buf_t bufs[],
                              unsigned int nbufs,
                              const struct sockaddr* addr);
__attribute__((visibility("default"))) int uv_udp_recv_start(uv_udp_t* handle,
                                uv_alloc_cb alloc_cb,
                                uv_udp_recv_cb recv_cb);
__attribute__((visibility("default"))) int uv_udp_using_recvmmsg(const uv_udp_t* handle);
__attribute__((visibility("default"))) int uv_udp_recv_stop(uv_udp_t* handle);
__attribute__((visibility("default"))) size_t uv_udp_get_send_queue_size(const uv_udp_t* handle);
__attribute__((visibility("default"))) size_t uv_udp_get_send_queue_count(const uv_udp_t* handle);







struct uv_tty_s {
  void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
  size_t write_queue_size; uv_alloc_cb alloc_cb; uv_read_cb read_cb; uv_connect_t *connect_req; uv_shutdown_t *shutdown_req; uv__io_t io_watcher; struct uv__queue write_queue; struct uv__queue write_completed_queue; uv_connection_cb connection_cb; int delayed_error; int accepted_fd; void* queued_fds;
  struct termios orig_termios; int mode;
};

typedef enum {

  UV_TTY_MODE_NORMAL,

  UV_TTY_MODE_RAW,

  UV_TTY_MODE_IO
} uv_tty_mode_t;

typedef enum {




  UV_TTY_SUPPORTED,



  UV_TTY_UNSUPPORTED
} uv_tty_vtermstate_t;


__attribute__((visibility("default"))) int uv_tty_init(uv_loop_t*, uv_tty_t*, uv_file fd, int readable);
__attribute__((visibility("default"))) int uv_tty_set_mode(uv_tty_t*, uv_tty_mode_t mode);
__attribute__((visibility("default"))) int uv_tty_reset_mode(void);
__attribute__((visibility("default"))) int uv_tty_get_winsize(uv_tty_t*, int* width, int* height);
__attribute__((visibility("default"))) void uv_tty_set_vterm_state(uv_tty_vtermstate_t state);
__attribute__((visibility("default"))) int uv_tty_get_vterm_state(uv_tty_vtermstate_t* state);
# 809 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
__attribute__((visibility("default"))) uv_handle_type uv_guess_handle(uv_file file);

enum {
  UV_PIPE_NO_TRUNCATE = 1u << 0
};







struct uv_pipe_s {
  void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
  size_t write_queue_size; uv_alloc_cb alloc_cb; uv_read_cb read_cb; uv_connect_t *connect_req; uv_shutdown_t *shutdown_req; uv__io_t io_watcher; struct uv__queue write_queue; struct uv__queue write_completed_queue; uv_connection_cb connection_cb; int delayed_error; int accepted_fd; void* queued_fds;
  int ipc;
  const char* pipe_fname;
};

__attribute__((visibility("default"))) int uv_pipe_init(uv_loop_t*, uv_pipe_t* handle, int ipc);
__attribute__((visibility("default"))) int uv_pipe_open(uv_pipe_t*, uv_file file);
__attribute__((visibility("default"))) int uv_pipe_bind(uv_pipe_t* handle, const char* name);
__attribute__((visibility("default"))) int uv_pipe_bind2(uv_pipe_t* handle,
                            const char* name,
                            size_t namelen,
                            unsigned int flags);
__attribute__((visibility("default"))) void uv_pipe_connect(uv_connect_t* req,
                               uv_pipe_t* handle,
                               const char* name,
                               uv_connect_cb cb);
__attribute__((visibility("default"))) int uv_pipe_connect2(uv_connect_t* req,
                               uv_pipe_t* handle,
                               const char* name,
                               size_t namelen,
                               unsigned int flags,
                               uv_connect_cb cb);
__attribute__((visibility("default"))) int uv_pipe_getsockname(const uv_pipe_t* handle,
                                  char* buffer,
                                  size_t* size);
__attribute__((visibility("default"))) int uv_pipe_getpeername(const uv_pipe_t* handle,
                                  char* buffer,
                                  size_t* size);
__attribute__((visibility("default"))) void uv_pipe_pending_instances(uv_pipe_t* handle, int count);
__attribute__((visibility("default"))) int uv_pipe_pending_count(uv_pipe_t* handle);
__attribute__((visibility("default"))) uv_handle_type uv_pipe_pending_type(uv_pipe_t* handle);
__attribute__((visibility("default"))) int uv_pipe_chmod(uv_pipe_t* handle, int flags);


struct uv_poll_s {
  void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
  uv_poll_cb poll_cb;
  uv__io_t io_watcher;
};

enum uv_poll_event {
  UV_READABLE = 1,
  UV_WRITABLE = 2,
  UV_DISCONNECT = 4,
  UV_PRIORITIZED = 8
};

__attribute__((visibility("default"))) int uv_poll_init(uv_loop_t* loop, uv_poll_t* handle, int fd);
__attribute__((visibility("default"))) int uv_poll_init_socket(uv_loop_t* loop,
                                  uv_poll_t* handle,
                                  uv_os_sock_t socket);
__attribute__((visibility("default"))) int uv_poll_start(uv_poll_t* handle, int events, uv_poll_cb cb);
__attribute__((visibility("default"))) int uv_poll_stop(uv_poll_t* handle);


struct uv_prepare_s {
  void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
  uv_prepare_cb prepare_cb; struct uv__queue queue;
};

__attribute__((visibility("default"))) int uv_prepare_init(uv_loop_t*, uv_prepare_t* prepare);
__attribute__((visibility("default"))) int uv_prepare_start(uv_prepare_t* prepare, uv_prepare_cb cb);
__attribute__((visibility("default"))) int uv_prepare_stop(uv_prepare_t* prepare);


struct uv_check_s {
  void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
  uv_check_cb check_cb; struct uv__queue queue;
};

__attribute__((visibility("default"))) int uv_check_init(uv_loop_t*, uv_check_t* check);
__attribute__((visibility("default"))) int uv_check_start(uv_check_t* check, uv_check_cb cb);
__attribute__((visibility("default"))) int uv_check_stop(uv_check_t* check);


struct uv_idle_s {
  void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
  uv_idle_cb idle_cb; struct uv__queue queue;
};

__attribute__((visibility("default"))) int uv_idle_init(uv_loop_t*, uv_idle_t* idle);
__attribute__((visibility("default"))) int uv_idle_start(uv_idle_t* idle, uv_idle_cb cb);
__attribute__((visibility("default"))) int uv_idle_stop(uv_idle_t* idle);


struct uv_async_s {
  void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
  uv_async_cb async_cb; struct uv__queue queue; int pending;
};

__attribute__((visibility("default"))) int uv_async_init(uv_loop_t*,
                            uv_async_t* async,
                            uv_async_cb async_cb);
__attribute__((visibility("default"))) int uv_async_send(uv_async_t* async);







struct uv_timer_s {
  void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
  uv_timer_cb timer_cb; union { void* heap[3]; struct uv__queue queue; } node; uint64_t timeout; uint64_t repeat; uint64_t start_id;
};

__attribute__((visibility("default"))) int uv_timer_init(uv_loop_t*, uv_timer_t* handle);
__attribute__((visibility("default"))) int uv_timer_start(uv_timer_t* handle,
                             uv_timer_cb cb,
                             uint64_t timeout,
                             uint64_t repeat);
__attribute__((visibility("default"))) int uv_timer_stop(uv_timer_t* handle);
__attribute__((visibility("default"))) int uv_timer_again(uv_timer_t* handle);
__attribute__((visibility("default"))) void uv_timer_set_repeat(uv_timer_t* handle, uint64_t repeat);
__attribute__((visibility("default"))) uint64_t uv_timer_get_repeat(const uv_timer_t* handle);
__attribute__((visibility("default"))) uint64_t uv_timer_get_due_in(const uv_timer_t* handle);







struct uv_getaddrinfo_s {
  void* data; uv_req_type type; void* reserved[6];

  uv_loop_t* loop;

  struct uv__work work_req; uv_getaddrinfo_cb cb; struct addrinfo* hints; char* hostname; char* service; struct addrinfo* addrinfo; int retcode;
};


__attribute__((visibility("default"))) int uv_getaddrinfo(uv_loop_t* loop,
                             uv_getaddrinfo_t* req,
                             uv_getaddrinfo_cb getaddrinfo_cb,
                             const char* node,
                             const char* service,
                             const struct addrinfo* hints);
__attribute__((visibility("default"))) void uv_freeaddrinfo(struct addrinfo* ai);







struct uv_getnameinfo_s {
  void* data; uv_req_type type; void* reserved[6];

  uv_loop_t* loop;

  struct uv__work work_req; uv_getnameinfo_cb getnameinfo_cb; struct sockaddr_storage storage; int flags; char host[
# 974 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 1025
# 974 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 ]; char service[
# 974 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
 32
# 974 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
 ]; int retcode;
};

__attribute__((visibility("default"))) int uv_getnameinfo(uv_loop_t* loop,
                             uv_getnameinfo_t* req,
                             uv_getnameinfo_cb getnameinfo_cb,
                             const struct sockaddr* addr,
                             int flags);



typedef enum {
  UV_IGNORE = 0x00,
  UV_CREATE_PIPE = 0x01,
  UV_INHERIT_FD = 0x02,
  UV_INHERIT_STREAM = 0x04,






  UV_READABLE_PIPE = 0x10,
  UV_WRITABLE_PIPE = 0x20,







  UV_NONBLOCK_PIPE = 0x40,
  UV_OVERLAPPED_PIPE = 0x40
} uv_stdio_flags;

typedef struct uv_stdio_container_s {
  uv_stdio_flags flags;

  union {
    uv_stream_t* stream;
    int fd;
  } data;
} uv_stdio_container_t;

typedef struct uv_process_options_s {
  uv_exit_cb exit_cb;
  const char* file;






  char** args;




  char** env;




  const char* cwd;




  unsigned int flags;
# 1052 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
  int stdio_count;
  uv_stdio_container_t* stdio;





  uv_uid_t uid;
  uv_gid_t gid;
} uv_process_options_t;




enum uv_process_flags {





  UV_PROCESS_SETUID = (1 << 0),





  UV_PROCESS_SETGID = (1 << 1),





  UV_PROCESS_WINDOWS_VERBATIM_ARGUMENTS = (1 << 2),







  UV_PROCESS_DETACHED = (1 << 3),




  UV_PROCESS_WINDOWS_HIDE = (1 << 4),





  UV_PROCESS_WINDOWS_HIDE_CONSOLE = (1 << 5),





  UV_PROCESS_WINDOWS_HIDE_GUI = (1 << 6),






  UV_PROCESS_WINDOWS_FILE_PATH_EXACT_NAME = (1 << 7)
};




struct uv_process_s {
  void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
  uv_exit_cb exit_cb;
  int pid;
  struct uv__queue queue; int status;
};

__attribute__((visibility("default"))) int uv_spawn(uv_loop_t* loop,
                       uv_process_t* handle,
                       const uv_process_options_t* options);
__attribute__((visibility("default"))) int uv_process_kill(uv_process_t*, int signum);
__attribute__((visibility("default"))) int uv_kill(int pid, int signum);
__attribute__((visibility("default"))) uv_pid_t uv_process_get_pid(const uv_process_t*);





struct uv_work_s {
  void* data; uv_req_type type; void* reserved[6];
  uv_loop_t* loop;
  uv_work_cb work_cb;
  uv_after_work_cb after_work_cb;
  struct uv__work work_req;
};

__attribute__((visibility("default"))) int uv_queue_work(uv_loop_t* loop,
                            uv_work_t* req,
                            uv_work_cb work_cb,
                            uv_after_work_cb after_work_cb);

__attribute__((visibility("default"))) int uv_cancel(uv_req_t* req);


struct uv_cpu_times_s {
  uint64_t user;
  uint64_t nice;
  uint64_t sys;
  uint64_t idle;
  uint64_t irq;
};

struct uv_cpu_info_s {
  char* model;
  int speed;
  struct uv_cpu_times_s cpu_times;
};

struct uv_interface_address_s {
  char* name;
  char phys_addr[6];
  int is_internal;
  union {
    struct sockaddr_in address4;
    struct sockaddr_in6 address6;
  } address;
  union {
    struct sockaddr_in netmask4;
    struct sockaddr_in6 netmask6;
  } netmask;
};

struct uv_passwd_s {
  char* username;
  unsigned long uid;
  unsigned long gid;
  char* shell;
  char* homedir;
};

struct uv_group_s {
  char* groupname;
  unsigned long gid;
  char** members;
};

struct uv_utsname_s {
  char sysname[256];
  char release[256];
  char version[256];
  char machine[256];



};

struct uv_statfs_s {
  uint64_t f_type;
  uint64_t f_bsize;
  uint64_t f_blocks;
  uint64_t f_bfree;
  uint64_t f_bavail;
  uint64_t f_files;
  uint64_t f_ffree;
  uint64_t f_spare[4];
};

typedef enum {
  UV_DIRENT_UNKNOWN,
  UV_DIRENT_FILE,
  UV_DIRENT_DIR,
  UV_DIRENT_LINK,
  UV_DIRENT_FIFO,
  UV_DIRENT_SOCKET,
  UV_DIRENT_CHAR,
  UV_DIRENT_BLOCK
} uv_dirent_type_t;

struct uv_dirent_s {
  const char* name;
  uv_dirent_type_t type;
};

__attribute__((visibility("default"))) char** uv_setup_args(int argc, char** argv);
__attribute__((visibility("default"))) int uv_get_process_title(char* buffer, size_t size);
__attribute__((visibility("default"))) int uv_set_process_title(const char* title);
__attribute__((visibility("default"))) int uv_resident_set_memory(size_t* rss);
__attribute__((visibility("default"))) int uv_uptime(double* uptime);
__attribute__((visibility("default"))) uv_os_fd_t uv_get_osfhandle(int fd);
__attribute__((visibility("default"))) int uv_open_osfhandle(uv_os_fd_t os_fd);

typedef struct {
   uv_timeval_t ru_utime;
   uv_timeval_t ru_stime;
   uint64_t ru_maxrss;
   uint64_t ru_ixrss;
   uint64_t ru_idrss;
   uint64_t ru_isrss;
   uint64_t ru_minflt;
   uint64_t ru_majflt;
   uint64_t ru_nswap;
   uint64_t ru_inblock;
   uint64_t ru_oublock;
   uint64_t ru_msgsnd;
   uint64_t ru_msgrcv;
   uint64_t ru_nsignals;
   uint64_t ru_nvcsw;
   uint64_t ru_nivcsw;
} uv_rusage_t;

__attribute__((visibility("default"))) int uv_getrusage(uv_rusage_t* rusage);

__attribute__((visibility("default"))) int uv_os_homedir(char* buffer, size_t* size);
__attribute__((visibility("default"))) int uv_os_tmpdir(char* buffer, size_t* size);
__attribute__((visibility("default"))) int uv_os_get_passwd(uv_passwd_t* pwd);
__attribute__((visibility("default"))) void uv_os_free_passwd(uv_passwd_t* pwd);
__attribute__((visibility("default"))) int uv_os_get_passwd2(uv_passwd_t* pwd, uv_uid_t uid);
__attribute__((visibility("default"))) int uv_os_get_group(uv_group_t* grp, uv_uid_t gid);
__attribute__((visibility("default"))) void uv_os_free_group(uv_group_t* grp);
__attribute__((visibility("default"))) uv_pid_t uv_os_getpid(void);
__attribute__((visibility("default"))) uv_pid_t uv_os_getppid(void);
# 1291 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
__attribute__((visibility("default"))) int uv_os_getpriority(uv_pid_t pid, int* priority);
__attribute__((visibility("default"))) int uv_os_setpriority(uv_pid_t pid, int priority);

enum {
  UV_THREAD_PRIORITY_HIGHEST = 2,
  UV_THREAD_PRIORITY_ABOVE_NORMAL = 1,
  UV_THREAD_PRIORITY_NORMAL = 0,
  UV_THREAD_PRIORITY_BELOW_NORMAL = -1,
  UV_THREAD_PRIORITY_LOWEST = -2,
};

__attribute__((visibility("default"))) int uv_thread_getpriority(uv_thread_t tid, int* priority);
__attribute__((visibility("default"))) int uv_thread_setpriority(uv_thread_t tid, int priority);

__attribute__((visibility("default"))) unsigned int uv_available_parallelism(void);
__attribute__((visibility("default"))) int uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count);
__attribute__((visibility("default"))) void uv_free_cpu_info(uv_cpu_info_t* cpu_infos, int count);
__attribute__((visibility("default"))) int uv_cpumask_size(void);

__attribute__((visibility("default"))) int uv_interface_addresses(uv_interface_address_t** addresses,
                                     int* count);
__attribute__((visibility("default"))) void uv_free_interface_addresses(uv_interface_address_t* addresses,
                                           int count);

struct uv_env_item_s {
  char* name;
  char* value;
};

__attribute__((visibility("default"))) int uv_os_environ(uv_env_item_t** envitems, int* count);
__attribute__((visibility("default"))) void uv_os_free_environ(uv_env_item_t* envitems, int count);
__attribute__((visibility("default"))) int uv_os_getenv(const char* name, char* buffer, size_t* size);
__attribute__((visibility("default"))) int uv_os_setenv(const char* name, const char* value);
__attribute__((visibility("default"))) int uv_os_unsetenv(const char* name);
# 1337 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
__attribute__((visibility("default"))) int uv_os_gethostname(char* buffer, size_t* size);

__attribute__((visibility("default"))) int uv_os_uname(uv_utsname_t* buffer);

struct uv_metrics_s {
  uint64_t loop_count;
  uint64_t events;
  uint64_t events_waiting;

  uint64_t* reserved[13];
};

__attribute__((visibility("default"))) int uv_metrics_info(uv_loop_t* loop, uv_metrics_t* metrics);
__attribute__((visibility("default"))) uint64_t uv_metrics_idle_time(uv_loop_t* loop);

typedef enum {
  UV_FS_UNKNOWN = -1,
  UV_FS_CUSTOM,
  UV_FS_OPEN,
  UV_FS_CLOSE,
  UV_FS_READ,
  UV_FS_WRITE,
  UV_FS_SENDFILE,
  UV_FS_STAT,
  UV_FS_LSTAT,
  UV_FS_FSTAT,
  UV_FS_FTRUNCATE,
  UV_FS_UTIME,
  UV_FS_FUTIME,
  UV_FS_ACCESS,
  UV_FS_CHMOD,
  UV_FS_FCHMOD,
  UV_FS_FSYNC,
  UV_FS_FDATASYNC,
  UV_FS_UNLINK,
  UV_FS_RMDIR,
  UV_FS_MKDIR,
  UV_FS_MKDTEMP,
  UV_FS_RENAME,
  UV_FS_SCANDIR,
  UV_FS_LINK,
  UV_FS_SYMLINK,
  UV_FS_READLINK,
  UV_FS_CHOWN,
  UV_FS_FCHOWN,
  UV_FS_REALPATH,
  UV_FS_COPYFILE,
  UV_FS_LCHOWN,
  UV_FS_OPENDIR,
  UV_FS_READDIR,
  UV_FS_CLOSEDIR,
  UV_FS_STATFS,
  UV_FS_MKSTEMP,
  UV_FS_LUTIME
} uv_fs_type;

struct uv_dir_s {
  uv_dirent_t* dirents;
  size_t nentries;
  void* reserved[4];
  DIR* dir;
};


struct uv_fs_s {
  void* data; uv_req_type type; void* reserved[6];
  uv_fs_type fs_type;
  uv_loop_t* loop;
  uv_fs_cb cb;
  ssize_t result;
  void* ptr;
  const char* path;
  uv_stat_t statbuf;
  const char *new_path; uv_file file; int flags; mode_t mode; unsigned int nbufs; uv_buf_t* bufs; off_t off; uv_uid_t uid; uv_gid_t gid; double atime; double mtime; struct uv__work work_req; uv_buf_t bufsml[4];
};

__attribute__((visibility("default"))) uv_fs_type uv_fs_get_type(const uv_fs_t*);
__attribute__((visibility("default"))) ssize_t uv_fs_get_result(const uv_fs_t*);
__attribute__((visibility("default"))) int uv_fs_get_system_error(const uv_fs_t*);
__attribute__((visibility("default"))) void* uv_fs_get_ptr(const uv_fs_t*);
__attribute__((visibility("default"))) const char* uv_fs_get_path(const uv_fs_t*);
__attribute__((visibility("default"))) uv_stat_t* uv_fs_get_statbuf(uv_fs_t*);

__attribute__((visibility("default"))) void uv_fs_req_cleanup(uv_fs_t* req);
__attribute__((visibility("default"))) int uv_fs_close(uv_loop_t* loop,
                          uv_fs_t* req,
                          uv_file file,
                          uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_open(uv_loop_t* loop,
                         uv_fs_t* req,
                         const char* path,
                         int flags,
                         int mode,
                         uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_read(uv_loop_t* loop,
                         uv_fs_t* req,
                         uv_file file,
                         const uv_buf_t bufs[],
                         unsigned int nbufs,
                         int64_t offset,
                         uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_unlink(uv_loop_t* loop,
                           uv_fs_t* req,
                           const char* path,
                           uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_write(uv_loop_t* loop,
                          uv_fs_t* req,
                          uv_file file,
                          const uv_buf_t bufs[],
                          unsigned int nbufs,
                          int64_t offset,
                          uv_fs_cb cb);
# 1467 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
__attribute__((visibility("default"))) int uv_fs_copyfile(uv_loop_t* loop,
                             uv_fs_t* req,
                             const char* path,
                             const char* new_path,
                             int flags,
                             uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_mkdir(uv_loop_t* loop,
                          uv_fs_t* req,
                          const char* path,
                          int mode,
                          uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_mkdtemp(uv_loop_t* loop,
                            uv_fs_t* req,
                            const char* tpl,
                            uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_mkstemp(uv_loop_t* loop,
                            uv_fs_t* req,
                            const char* tpl,
                            uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_rmdir(uv_loop_t* loop,
                          uv_fs_t* req,
                          const char* path,
                          uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_scandir(uv_loop_t* loop,
                            uv_fs_t* req,
                            const char* path,
                            int flags,
                            uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_scandir_next(uv_fs_t* req,
                                 uv_dirent_t* ent);
__attribute__((visibility("default"))) int uv_fs_opendir(uv_loop_t* loop,
                            uv_fs_t* req,
                            const char* path,
                            uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_readdir(uv_loop_t* loop,
                            uv_fs_t* req,
                            uv_dir_t* dir,
                            uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_closedir(uv_loop_t* loop,
                             uv_fs_t* req,
                             uv_dir_t* dir,
                             uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_stat(uv_loop_t* loop,
                         uv_fs_t* req,
                         const char* path,
                         uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_fstat(uv_loop_t* loop,
                          uv_fs_t* req,
                          uv_file file,
                          uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_rename(uv_loop_t* loop,
                           uv_fs_t* req,
                           const char* path,
                           const char* new_path,
                           uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_fsync(uv_loop_t* loop,
                          uv_fs_t* req,
                          uv_file file,
                          uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_fdatasync(uv_loop_t* loop,
                              uv_fs_t* req,
                              uv_file file,
                              uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_ftruncate(uv_loop_t* loop,
                              uv_fs_t* req,
                              uv_file file,
                              int64_t offset,
                              uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_sendfile(uv_loop_t* loop,
                             uv_fs_t* req,
                             uv_file out_fd,
                             uv_file in_fd,
                             int64_t in_offset,
                             size_t length,
                             uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_access(uv_loop_t* loop,
                           uv_fs_t* req,
                           const char* path,
                           int mode,
                           uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_chmod(uv_loop_t* loop,
                          uv_fs_t* req,
                          const char* path,
                          int mode,
                          uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_utime(uv_loop_t* loop,
                          uv_fs_t* req,
                          const char* path,
                          double atime,
                          double mtime,
                          uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_futime(uv_loop_t* loop,
                           uv_fs_t* req,
                           uv_file file,
                           double atime,
                           double mtime,
                           uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_lutime(uv_loop_t* loop,
                           uv_fs_t* req,
                           const char* path,
                           double atime,
                           double mtime,
                           uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_lstat(uv_loop_t* loop,
                          uv_fs_t* req,
                          const char* path,
                          uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_link(uv_loop_t* loop,
                         uv_fs_t* req,
                         const char* path,
                         const char* new_path,
                         uv_fs_cb cb);
# 1592 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
__attribute__((visibility("default"))) int uv_fs_symlink(uv_loop_t* loop,
                            uv_fs_t* req,
                            const char* path,
                            const char* new_path,
                            int flags,
                            uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_readlink(uv_loop_t* loop,
                             uv_fs_t* req,
                             const char* path,
                             uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_realpath(uv_loop_t* loop,
                             uv_fs_t* req,
                             const char* path,
                             uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_fchmod(uv_loop_t* loop,
                           uv_fs_t* req,
                           uv_file file,
                           int mode,
                           uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_chown(uv_loop_t* loop,
                          uv_fs_t* req,
                          const char* path,
                          uv_uid_t uid,
                          uv_gid_t gid,
                          uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_fchown(uv_loop_t* loop,
                           uv_fs_t* req,
                           uv_file file,
                           uv_uid_t uid,
                           uv_gid_t gid,
                           uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_lchown(uv_loop_t* loop,
                           uv_fs_t* req,
                           const char* path,
                           uv_uid_t uid,
                           uv_gid_t gid,
                           uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_statfs(uv_loop_t* loop,
                           uv_fs_t* req,
                           const char* path,
                           uv_fs_cb cb);


enum uv_fs_event {
  UV_RENAME = 1,
  UV_CHANGE = 2
};


struct uv_fs_event_s {
  void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;

  char* path;
  uv_fs_event_cb cb; struct uv__queue watchers; int wd;
};





struct uv_fs_poll_s {
  void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;

  void* poll_ctx;
};

__attribute__((visibility("default"))) int uv_fs_poll_init(uv_loop_t* loop, uv_fs_poll_t* handle);
__attribute__((visibility("default"))) int uv_fs_poll_start(uv_fs_poll_t* handle,
                               uv_fs_poll_cb poll_cb,
                               const char* path,
                               unsigned int interval);
__attribute__((visibility("default"))) int uv_fs_poll_stop(uv_fs_poll_t* handle);
__attribute__((visibility("default"))) int uv_fs_poll_getpath(uv_fs_poll_t* handle,
                                 char* buffer,
                                 size_t* size);


struct uv_signal_s {
  void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
  uv_signal_cb signal_cb;
  int signum;
  struct { struct uv_signal_s* rbe_left; struct uv_signal_s* rbe_right; struct uv_signal_s* rbe_parent; int rbe_color; } tree_entry; unsigned int caught_signals; unsigned int dispatched_signals;
};

__attribute__((visibility("default"))) int uv_signal_init(uv_loop_t* loop, uv_signal_t* handle);
__attribute__((visibility("default"))) int uv_signal_start(uv_signal_t* handle,
                              uv_signal_cb signal_cb,
                              int signum);
__attribute__((visibility("default"))) int uv_signal_start_oneshot(uv_signal_t* handle,
                                      uv_signal_cb signal_cb,
                                      int signum);
__attribute__((visibility("default"))) int uv_signal_stop(uv_signal_t* handle);

__attribute__((visibility("default"))) void uv_loadavg(double avg[3]);





enum uv_fs_event_flags {







  UV_FS_EVENT_WATCH_ENTRY = 1,
# 1708 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
  UV_FS_EVENT_STAT = 2,






  UV_FS_EVENT_RECURSIVE = 4
};


__attribute__((visibility("default"))) int uv_fs_event_init(uv_loop_t* loop, uv_fs_event_t* handle);
__attribute__((visibility("default"))) int uv_fs_event_start(uv_fs_event_t* handle,
                                uv_fs_event_cb cb,
                                const char* path,
                                unsigned int flags);
__attribute__((visibility("default"))) int uv_fs_event_stop(uv_fs_event_t* handle);
__attribute__((visibility("default"))) int uv_fs_event_getpath(uv_fs_event_t* handle,
                                  char* buffer,
                                  size_t* size);

__attribute__((visibility("default"))) int uv_ip4_addr(const char* ip, int port, struct sockaddr_in* addr);
__attribute__((visibility("default"))) int uv_ip6_addr(const char* ip, int port, struct sockaddr_in6* addr);

__attribute__((visibility("default"))) int uv_ip4_name(const struct sockaddr_in* src, char* dst, size_t size);
__attribute__((visibility("default"))) int uv_ip6_name(const struct sockaddr_in6* src, char* dst, size_t size);
__attribute__((visibility("default"))) int uv_ip_name(const struct sockaddr* src, char* dst, size_t size);

__attribute__((visibility("default"))) int uv_inet_ntop(int af, const void* src, char* dst, size_t size);
__attribute__((visibility("default"))) int uv_inet_pton(int af, const char* src, void* dst);


struct uv_random_s {
  void* data; uv_req_type type; void* reserved[6];

  uv_loop_t* loop;

  int status;
  void* buf;
  size_t buflen;
  uv_random_cb cb;
  struct uv__work work_req;
};

__attribute__((visibility("default"))) int uv_random(uv_loop_t* loop,
                        uv_random_t* req,
                        void *buf,
                        size_t buflen,
                        unsigned flags,
                        uv_random_cb cb);
# 1767 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
__attribute__((visibility("default"))) int uv_if_indextoname(unsigned int ifindex,
                                char* buffer,
                                size_t* size);
__attribute__((visibility("default"))) int uv_if_indextoiid(unsigned int ifindex,
                               char* buffer,
                               size_t* size);

__attribute__((visibility("default"))) int uv_exepath(char* buffer, size_t* size);

__attribute__((visibility("default"))) int uv_cwd(char* buffer, size_t* size);

__attribute__((visibility("default"))) int uv_chdir(const char* dir);

__attribute__((visibility("default"))) uint64_t uv_get_free_memory(void);
__attribute__((visibility("default"))) uint64_t uv_get_total_memory(void);
__attribute__((visibility("default"))) uint64_t uv_get_constrained_memory(void);
__attribute__((visibility("default"))) uint64_t uv_get_available_memory(void);

__attribute__((visibility("default"))) int uv_clock_gettime(uv_clock_id clock_id, uv_timespec64_t* ts);
__attribute__((visibility("default"))) uint64_t uv_hrtime(void);
__attribute__((visibility("default"))) void uv_sleep(unsigned int msec);

__attribute__((visibility("default"))) void uv_disable_stdio_inheritance(void);

__attribute__((visibility("default"))) int uv_dlopen(const char* filename, uv_lib_t* lib);
__attribute__((visibility("default"))) void uv_dlclose(uv_lib_t* lib);
__attribute__((visibility("default"))) int uv_dlsym(uv_lib_t* lib, const char* name, void** ptr);
__attribute__((visibility("default"))) const char* uv_dlerror(const uv_lib_t* lib);

__attribute__((visibility("default"))) int uv_mutex_init(uv_mutex_t* handle);
__attribute__((visibility("default"))) int uv_mutex_init_recursive(uv_mutex_t* handle);
__attribute__((visibility("default"))) void uv_mutex_destroy(uv_mutex_t* handle);
__attribute__((visibility("default"))) void uv_mutex_lock(uv_mutex_t* handle);
__attribute__((visibility("default"))) int uv_mutex_trylock(uv_mutex_t* handle);
__attribute__((visibility("default"))) void uv_mutex_unlock(uv_mutex_t* handle);

__attribute__((visibility("default"))) int uv_rwlock_init(uv_rwlock_t* rwlock);
__attribute__((visibility("default"))) void uv_rwlock_destroy(uv_rwlock_t* rwlock);
__attribute__((visibility("default"))) void uv_rwlock_rdlock(uv_rwlock_t* rwlock);
__attribute__((visibility("default"))) int uv_rwlock_tryrdlock(uv_rwlock_t* rwlock);
__attribute__((visibility("default"))) void uv_rwlock_rdunlock(uv_rwlock_t* rwlock);
__attribute__((visibility("default"))) void uv_rwlock_wrlock(uv_rwlock_t* rwlock);
__attribute__((visibility("default"))) int uv_rwlock_trywrlock(uv_rwlock_t* rwlock);
__attribute__((visibility("default"))) void uv_rwlock_wrunlock(uv_rwlock_t* rwlock);

__attribute__((visibility("default"))) int uv_sem_init(uv_sem_t* sem, unsigned int value);
__attribute__((visibility("default"))) void uv_sem_destroy(uv_sem_t* sem);
__attribute__((visibility("default"))) void uv_sem_post(uv_sem_t* sem);
__attribute__((visibility("default"))) void uv_sem_wait(uv_sem_t* sem);
__attribute__((visibility("default"))) int uv_sem_trywait(uv_sem_t* sem);

__attribute__((visibility("default"))) int uv_cond_init(uv_cond_t* cond);
__attribute__((visibility("default"))) void uv_cond_destroy(uv_cond_t* cond);
__attribute__((visibility("default"))) void uv_cond_signal(uv_cond_t* cond);
__attribute__((visibility("default"))) void uv_cond_broadcast(uv_cond_t* cond);

__attribute__((visibility("default"))) int uv_barrier_init(uv_barrier_t* barrier, unsigned int count);
__attribute__((visibility("default"))) void uv_barrier_destroy(uv_barrier_t* barrier);
__attribute__((visibility("default"))) int uv_barrier_wait(uv_barrier_t* barrier);

__attribute__((visibility("default"))) void uv_cond_wait(uv_cond_t* cond, uv_mutex_t* mutex);
__attribute__((visibility("default"))) int uv_cond_timedwait(uv_cond_t* cond,
                                uv_mutex_t* mutex,
                                uint64_t timeout);

__attribute__((visibility("default"))) void uv_once(uv_once_t* guard, void (*callback)(void));

__attribute__((visibility("default"))) int uv_key_create(uv_key_t* key);
__attribute__((visibility("default"))) void uv_key_delete(uv_key_t* key);
__attribute__((visibility("default"))) void* uv_key_get(uv_key_t* key);
__attribute__((visibility("default"))) void uv_key_set(uv_key_t* key, void* value);

__attribute__((visibility("default"))) int uv_gettimeofday(uv_timeval64_t* tv);

typedef void (*uv_thread_cb)(void* arg);

__attribute__((visibility("default"))) int uv_thread_create(uv_thread_t* tid, uv_thread_cb entry, void* arg);

typedef enum {
  UV_THREAD_NO_FLAGS = 0x00,
  UV_THREAD_HAS_STACK_SIZE = 0x01
} uv_thread_create_flags;

struct uv_thread_options_s {
  unsigned int flags;
  size_t stack_size;

};

typedef struct uv_thread_options_s uv_thread_options_t;

__attribute__((visibility("default"))) int uv_thread_create_ex(uv_thread_t* tid,
                                  const uv_thread_options_t* params,
                                  uv_thread_cb entry,
                                  void* arg);
__attribute__((visibility("default"))) int uv_thread_setaffinity(uv_thread_t* tid,
                                    char* cpumask,
                                    char* oldmask,
                                    size_t mask_size);
__attribute__((visibility("default"))) int uv_thread_getaffinity(uv_thread_t* tid,
                                    char* cpumask,
                                    size_t mask_size);
__attribute__((visibility("default"))) int uv_thread_getcpu(void);
__attribute__((visibility("default"))) uv_thread_t uv_thread_self(void);
__attribute__((visibility("default"))) int uv_thread_join(uv_thread_t *tid);
__attribute__((visibility("default"))) int uv_thread_equal(const uv_thread_t* t1, const uv_thread_t* t2);



union uv_any_handle {
  uv_async_t async; uv_check_t check; uv_fs_event_t fs_event; uv_fs_poll_t fs_poll; uv_handle_t handle; uv_idle_t idle; uv_pipe_t pipe; uv_poll_t poll; uv_prepare_t prepare; uv_process_t process; uv_stream_t stream; uv_tcp_t tcp; uv_timer_t timer; uv_tty_t tty; uv_udp_t udp; uv_signal_t signal;
};

union uv_any_req {
  uv_req_t req; uv_connect_t connect; uv_write_t write; uv_shutdown_t shutdown; uv_udp_send_t udp_send; uv_fs_t fs; uv_work_t work; uv_getaddrinfo_t getaddrinfo; uv_getnameinfo_t getnameinfo; uv_random_t random;
};



struct uv_loop_s {

  void* data;

  unsigned int active_handles;
  struct uv__queue handle_queue;
  union {
    void* unused;
    unsigned int count;
  } active_reqs;

  void* internal_fields;

  unsigned int stop_flag;
  unsigned long flags; int backend_fd; struct uv__queue pending_queue; struct uv__queue watcher_queue; uv__io_t** watchers; unsigned int nwatchers; unsigned int nfds; struct uv__queue wq; uv_mutex_t wq_mutex; uv_async_t wq_async; uv_rwlock_t cloexec_lock; uv_handle_t* closing_handles; struct uv__queue process_handles; struct uv__queue prepare_handles; struct uv__queue check_handles; struct uv__queue idle_handles; struct uv__queue async_handles; void (*async_unused)(void); uv__io_t async_io_watcher; int async_wfd; struct { void* min; unsigned int nelts; } timer_heap; uint64_t timer_counter; uint64_t time; int signal_pipefd[2]; uv__io_t signal_io_watcher; uv_signal_t child_watcher; int emfile_fd; uv__io_t inotify_read_watcher; void* inotify_watchers; int inotify_fd;
};

__attribute__((visibility("default"))) void* uv_loop_get_data(const uv_loop_t*);
__attribute__((visibility("default"))) void uv_loop_set_data(uv_loop_t*, void* data);


size_t uv_utf16_length_as_wtf8(const uint16_t* utf16,
                               ssize_t utf16_len);
int uv_utf16_to_wtf8(const uint16_t* utf16,
                     ssize_t utf16_len,
                     char** wtf8_ptr,
                     size_t* wtf8_len_ptr);
ssize_t uv_wtf8_length_as_utf16(const char* wtf8);
void uv_wtf8_to_utf16(const char* wtf8,
                      uint16_t* utf16,
                      size_t utf16_len);
# 7 "/home/ubuntu/neovim/src/nvim/event/defs.h" 2




enum { EVENT_HANDLER_MAX_ARGC = 10, };

typedef void (*argv_callback)(void **argv);
typedef struct {
  argv_callback handler;
  void *argv[EVENT_HANDLER_MAX_ARGC];
} Event;



typedef struct multiqueue MultiQueue;
typedef void (*PutCallback)(MultiQueue *multiq, void *data);

typedef struct signal_watcher SignalWatcher;
typedef void (*signal_cb)(SignalWatcher *watcher, int signum, void *data);
typedef void (*signal_close_cb)(SignalWatcher *watcher, void *data);

struct signal_watcher {
  uv_signal_t uv;
  void *data;
  signal_cb cb;
  signal_close_cb close_cb;
  MultiQueue *events;
};

typedef struct time_watcher TimeWatcher;
typedef void (*time_cb)(TimeWatcher *watcher, void *data);

struct time_watcher {
  uv_timer_t uv;
  void *data;
  time_cb cb, close_cb;
  MultiQueue *events;
  
# 44 "/home/ubuntu/neovim/src/nvim/event/defs.h" 3 4
 _Bool 
# 44 "/home/ubuntu/neovim/src/nvim/event/defs.h"
      blockable;
};

typedef struct wbuffer WBuffer;
typedef void (*wbuffer_data_finalizer)(void *data);

struct wbuffer {
  size_t size, refcount;
  char *data;
  wbuffer_data_finalizer cb;
};

typedef struct stream Stream;
typedef struct rstream RStream;
# 66 "/home/ubuntu/neovim/src/nvim/event/defs.h"
typedef size_t (*stream_read_cb)(RStream *stream, const char *read_data, size_t count, void *data,
                                 
# 67 "/home/ubuntu/neovim/src/nvim/event/defs.h" 3 4
                                _Bool 
# 67 "/home/ubuntu/neovim/src/nvim/event/defs.h"
                                     eof);







typedef void (*stream_write_cb)(Stream *stream, void *data, int status);

typedef void (*stream_close_cb)(Stream *stream, void *data);

struct stream {
  
# 80 "/home/ubuntu/neovim/src/nvim/event/defs.h" 3 4
 _Bool 
# 80 "/home/ubuntu/neovim/src/nvim/event/defs.h"
      closed;
  union {
    uv_pipe_t pipe;
    uv_tcp_t tcp;
    uv_idle_t idle;



  } uv;
  uv_stream_t *uvstream;
  uv_file fd;
  void *cb_data;
  stream_close_cb close_cb, internal_close_cb;
  void *close_cb_data, *internal_data;
  size_t pending_reqs;
  MultiQueue *events;


  stream_write_cb write_cb;
  size_t curmem;
  size_t maxmem;
};

struct rstream {
  Stream s;
  
# 105 "/home/ubuntu/neovim/src/nvim/event/defs.h" 3 4
 _Bool 
# 105 "/home/ubuntu/neovim/src/nvim/event/defs.h"
      did_eof;
  
# 106 "/home/ubuntu/neovim/src/nvim/event/defs.h" 3 4
 _Bool 
# 106 "/home/ubuntu/neovim/src/nvim/event/defs.h"
      want_read;
  
# 107 "/home/ubuntu/neovim/src/nvim/event/defs.h" 3 4
 _Bool 
# 107 "/home/ubuntu/neovim/src/nvim/event/defs.h"
      pending_read;
  
# 108 "/home/ubuntu/neovim/src/nvim/event/defs.h" 3 4
 _Bool 
# 108 "/home/ubuntu/neovim/src/nvim/event/defs.h"
      paused_full;
  char *buffer;
  char *read_pos;
  char *write_pos;
  uv_buf_t uvbuf;
  stream_read_cb read_cb;
  size_t num_bytes;
  int64_t fpos;
};



typedef struct socket_watcher SocketWatcher;
typedef void (*socket_cb)(SocketWatcher *watcher, int result, void *data);
typedef void (*socket_close_cb)(SocketWatcher *watcher, void *data);

struct socket_watcher {

  char addr[256];

  union {
    struct {
      uv_tcp_t handle;
      struct addrinfo *addrinfo;
    } tcp;
    struct {
      uv_pipe_t handle;
    } pipe;
  } uv;
  uv_stream_t *stream;
  void *data;
  socket_cb cb;
  socket_close_cb close_cb;
  MultiQueue *events;
};

typedef enum {
  kProcessTypeUv,
  kProcessTypePty,
} ProcessType;

typedef struct process Process;
typedef void (*process_exit_cb)(Process *proc, int status, void *data);
typedef void (*internal_process_cb)(Process *proc);

struct process {
  ProcessType type;
  Loop *loop;
  void *data;
  int pid, status, refcount;
  uint8_t exit_signal;
  uint64_t stopped_time;
  const char *cwd;
  char **argv;
  const char *exepath;
  dict_T *env;
  Stream in;
  RStream out, err;

  process_exit_cb cb;
  internal_process_cb internal_exit_cb, internal_close_cb;
  
# 169 "/home/ubuntu/neovim/src/nvim/event/defs.h" 3 4
 _Bool 
# 169 "/home/ubuntu/neovim/src/nvim/event/defs.h"
      closed, detach, overlapped, fwd_err;
  MultiQueue *events;
};
# 7 "/home/ubuntu/neovim/src/nvim/channel_defs.h" 2




typedef enum {
  kChannelStreamProc,
  kChannelStreamSocket,
  kChannelStreamStdio,
  kChannelStreamStderr,
  kChannelStreamInternal,
} ChannelStreamType;

typedef enum {
  kChannelPartStdin,
  kChannelPartStdout,
  kChannelPartStderr,
  kChannelPartRpc,
  kChannelPartAll,
} ChannelPart;

typedef enum {
  kChannelStdinPipe,
  kChannelStdinNull,
} ChannelStdinMode;

typedef struct {
  RStream in;
  Stream out;
} StdioPair;

typedef struct {
  
# 38 "/home/ubuntu/neovim/src/nvim/channel_defs.h" 3 4
 _Bool 
# 38 "/home/ubuntu/neovim/src/nvim/channel_defs.h"
      closed;
} StderrState;

typedef struct {
  LuaRef cb;
  
# 43 "/home/ubuntu/neovim/src/nvim/channel_defs.h" 3 4
 _Bool 
# 43 "/home/ubuntu/neovim/src/nvim/channel_defs.h"
      closed;
} InternalState;

typedef struct {
  Callback cb;
  dict_T *self;
  garray_T buffer;
  
# 50 "/home/ubuntu/neovim/src/nvim/channel_defs.h" 3 4
 _Bool 
# 50 "/home/ubuntu/neovim/src/nvim/channel_defs.h"
      eof;
  
# 51 "/home/ubuntu/neovim/src/nvim/channel_defs.h" 3 4
 _Bool 
# 51 "/home/ubuntu/neovim/src/nvim/channel_defs.h"
      buffered;
  
# 52 "/home/ubuntu/neovim/src/nvim/channel_defs.h" 3 4
 _Bool 
# 52 "/home/ubuntu/neovim/src/nvim/channel_defs.h"
      fwd_err;
  const char *type;
} CallbackReader;
# 8 "/home/ubuntu/neovim/src/nvim/eval.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/cmdexpand_defs.h" 1
       


# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/cmdexpand_defs.h" 2



typedef enum {
  XP_PREFIX_NONE,
  XP_PREFIX_NO,
  XP_PREFIX_INV,
} xp_prefix_T;

enum { EXPAND_BUF_LEN = 256, };


typedef struct {
  char *xp_pattern;

  int xp_context;
  size_t xp_pattern_len;
  xp_prefix_T xp_prefix;
  char *xp_arg;
  LuaRef xp_luaref;
  sctx_T xp_script_ctx;
  int xp_backslash;

  
# 28 "/home/ubuntu/neovim/src/nvim/cmdexpand_defs.h" 3 4
 _Bool 
# 28 "/home/ubuntu/neovim/src/nvim/cmdexpand_defs.h"
      xp_shell;


  int xp_numfiles;
  int xp_col;
  int xp_selected;
  char *xp_orig;
  char **xp_files;
  char *xp_line;
  char xp_buf[EXPAND_BUF_LEN];
} expand_T;


enum {
  XP_BS_NONE = 0,
  XP_BS_ONE = 0x1,
  XP_BS_THREE = 0x2,
  XP_BS_COMMA = 0x4,
};


enum {
  EXPAND_UNSUCCESSFUL = -2,
  EXPAND_OK = -1,
  EXPAND_NOTHING = 0,
  EXPAND_COMMANDS,
  EXPAND_FILES,
  EXPAND_DIRECTORIES,
  EXPAND_SETTINGS,
  EXPAND_BOOL_SETTINGS,
  EXPAND_TAGS,
  EXPAND_OLD_SETTING,
  EXPAND_HELP,
  EXPAND_BUFFERS,
  EXPAND_EVENTS,
  EXPAND_MENUS,
  EXPAND_SYNTAX,
  EXPAND_HIGHLIGHT,
  EXPAND_AUGROUP,
  EXPAND_USER_VARS,
  EXPAND_MAPPINGS,
  EXPAND_TAGS_LISTFILES,
  EXPAND_FUNCTIONS,
  EXPAND_USER_FUNC,
  EXPAND_EXPRESSION,
  EXPAND_MENUNAMES,
  EXPAND_USER_COMMANDS,
  EXPAND_USER_CMD_FLAGS,
  EXPAND_USER_NARGS,
  EXPAND_USER_COMPLETE,
  EXPAND_ENV_VARS,
  EXPAND_LANGUAGE,
  EXPAND_COLORS,
  EXPAND_COMPILER,
  EXPAND_USER_DEFINED,
  EXPAND_USER_LIST,
  EXPAND_USER_LUA,
  EXPAND_SHELLCMD,
  EXPAND_SIGN,
  EXPAND_PROFILE,
  EXPAND_FILETYPE,
  EXPAND_FILES_IN_PATH,
  EXPAND_OWNSYNTAX,
  EXPAND_LOCALES,
  EXPAND_HISTORY,
  EXPAND_USER,
  EXPAND_SYNTIME,
  EXPAND_USER_ADDR_TYPE,
  EXPAND_PACKADD,
  EXPAND_MESSAGES,
  EXPAND_MAPCLEAR,
  EXPAND_ARGLIST,
  EXPAND_DIFF_BUFFERS,
  EXPAND_BREAKPOINT,
  EXPAND_SCRIPTNAMES,
  EXPAND_RUNTIME,
  EXPAND_STRING_SETTING,
  EXPAND_SETTING_SUBTRACT,
  EXPAND_ARGOPT,
  EXPAND_KEYMAP,
  EXPAND_DIRS_IN_CDPATH,
  EXPAND_CHECKHEALTH,
  EXPAND_LUA,
};


typedef char *(*CompleteListItemGetter)(expand_T *, int);
# 9 "/home/ubuntu/neovim/src/nvim/eval.h" 2

# 1 "/home/ubuntu/neovim/src/nvim/eval_defs.h" 1
       

# 1 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h" 1
       





# 1 "/home/ubuntu/neovim/src/nvim/ex_eval_defs.h" 1
       
# 10 "/home/ubuntu/neovim/src/nvim/ex_eval_defs.h"
typedef struct eslist_elem eslist_T;
struct eslist_elem {
  int saved_emsg_silent;
  eslist_T *next;
};

enum {


  CSTACK_LEN = 50,
};

typedef struct {
  int cs_flags[CSTACK_LEN];
  char cs_pending[CSTACK_LEN];
  union {
    void *csp_rv[CSTACK_LEN];
    void *csp_ex[CSTACK_LEN];
  } cs_pend;
  void *cs_forinfo[CSTACK_LEN];
  int cs_line[CSTACK_LEN];
  int cs_idx;
  int cs_looplevel;
  int cs_trylevel;
  eslist_T *cs_emsg_silent_list;
  int cs_lflags;
} cstack_T;





enum {
  CSF_TRUE = 0x0001,
  CSF_ACTIVE = 0x0002,
  CSF_ELSE = 0x0004,
  CSF_WHILE = 0x0008,
  CSF_FOR = 0x0010,

  CSF_TRY = 0x0100,
  CSF_FINALLY = 0x0200,
  CSF_THROWN = 0x0800,
  CSF_CAUGHT = 0x1000,
  CSF_FINISHED = 0x2000,
  CSF_SILENT = 0x4000,
};





enum {
  CSTP_NONE = 0,
  CSTP_ERROR = 1,
  CSTP_INTERRUPT = 2,
  CSTP_THROW = 4,
  CSTP_BREAK = 8,
  CSTP_CONTINUE = 16,
  CSTP_RETURN = 24,
  CSTP_FINISH = 32,
};


enum {
  CSL_HAD_LOOP = 1,
  CSL_HAD_ENDLOOP = 2,
  CSL_HAD_CONT = 4,
  CSL_HAD_FINA = 8,
};





typedef struct msglist msglist_T;
struct msglist {
  msglist_T *next;
  char *msg;
  char *throw_msg;
  char *sfile;
  linenr_T slnum;
  
# 91 "/home/ubuntu/neovim/src/nvim/ex_eval_defs.h" 3 4
 _Bool 
# 91 "/home/ubuntu/neovim/src/nvim/ex_eval_defs.h"
      multiline;
};


typedef enum {
  ET_USER,
  ET_ERROR,
  ET_INTERRUPT,
} except_type_T;



typedef struct vim_exception except_T;
struct vim_exception {
  except_type_T type;
  char *value;
  msglist_T *messages;
  char *throw_name;
  linenr_T throw_lnum;
  except_T *caught;
};




typedef struct cleanup_stuff cleanup_T;
struct cleanup_stuff {
  int pending;
  except_T *exception;
};



typedef struct exception_state_S exception_state_T;
struct exception_state_S {
  except_T *estate_current_exception;
  
# 127 "/home/ubuntu/neovim/src/nvim/ex_eval_defs.h" 3 4
 _Bool 
# 127 "/home/ubuntu/neovim/src/nvim/ex_eval_defs.h"
      estate_did_throw;
  
# 128 "/home/ubuntu/neovim/src/nvim/ex_eval_defs.h" 3 4
 _Bool 
# 128 "/home/ubuntu/neovim/src/nvim/ex_eval_defs.h"
      estate_need_rethrow;
  int estate_trylevel;
  int estate_did_emsg;
};
# 8 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/os/time_defs.h" 1
       


typedef uint64_t Timestamp;
# 9 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/regexp_defs.h" 1
# 10 "/home/ubuntu/neovim/src/nvim/regexp_defs.h"
       







enum {




  NSUBEXP = 10,
};

typedef struct regengine regengine_T;







typedef struct {
  regprog_T *regprog;
  lpos_T startpos[NSUBEXP];
  lpos_T endpos[NSUBEXP];

  colnr_T rmm_matchcol;
  int rmm_ic;
  colnr_T rmm_maxcol;
} regmmatch_T;


typedef enum {
  OPTION_MAGIC_NOT_SET,
  OPTION_MAGIC_ON,
  OPTION_MAGIC_OFF,
} optmagic_T;





typedef enum {
  MAGIC_NONE = 1,
  MAGIC_OFF = 2,
  MAGIC_ON = 3,
  MAGIC_ALL = 4,
} magic_T;




typedef struct {
  regprog_T *regprog;
  char *startp[NSUBEXP];
  char *endp[NSUBEXP];

  colnr_T rm_matchcol;
  
# 71 "/home/ubuntu/neovim/src/nvim/regexp_defs.h" 3 4
 _Bool 
# 71 "/home/ubuntu/neovim/src/nvim/regexp_defs.h"
      rm_ic;
} regmatch_T;




typedef struct {
  int16_t refcnt;
  uint8_t *matches[NSUBEXP];
} reg_extmatch_T;


enum {
  REGSUB_COPY = 1,
  REGSUB_MAGIC = 2,
  REGSUB_BACKSLASH = 4,
};
# 10 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h" 2
# 72 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h"
typedef enum {
  ADDR_LINES,
  ADDR_WINDOWS,
  ADDR_ARGUMENTS,
  ADDR_LOADED_BUFFERS,
  ADDR_BUFFERS,
  ADDR_TABS,
  ADDR_TABS_RELATIVE,
  ADDR_QUICKFIX_VALID,
  ADDR_QUICKFIX,
  ADDR_UNSIGNED,
  ADDR_OTHER,
  ADDR_NONE,
} cmd_addr_T;

typedef struct exarg exarg_T;






typedef void (*ex_func_T)(exarg_T *eap);
typedef int (*ex_preview_func_T)(exarg_T *eap, int cmdpreview_ns, handle_T cmdpreview_bufnr);
# 109 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h"
typedef enum {
  CALLABLE_NONE,
  CALLABLE_EX,
  CALLABLE_CB,
} AucmdExecutableType;

typedef struct aucmd_executable_t AucmdExecutable;
struct aucmd_executable_t {
  AucmdExecutableType type;
  union {
    char *cmd;
    Callback cb;
  } callable;
};



typedef char *(*LineGetter)(int, void *, int, 
# 126 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h" 3 4
                                             _Bool
# 126 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h"
                                                 );


typedef struct {
  char *cmd_name;
  ex_func_T cmd_func;
  ex_preview_func_T cmd_preview_func;
  uint32_t cmd_argt;
  cmd_addr_T cmd_addr_type;
} CommandDefinition;


struct exarg {
  char *arg;
  char **args;
  size_t *arglens;
  size_t argc;
  char *nextcmd;
  char *cmd;
  char **cmdlinep;
  char *cmdline_tofree;
  cmdidx_T cmdidx;
  uint32_t argt;
  int skip;
  int forceit;
  int addr_count;
  linenr_T line1;
  linenr_T line2;
  cmd_addr_T addr_type;
  int flags;
  char *do_ecmd_cmd;
  linenr_T do_ecmd_lnum;
  int append;
  int usefilter;
  int amount;
  int regname;
  int force_bin;
  int read_edit;
  int mkdir_p;
  int force_ff;
  int force_enc;
  int bad_char;
  int useridx;
  char *errmsg;
  LineGetter ea_getline;
  void *cookie;
  cstack_T *cstack;
};
# 183 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h"
enum {
  CMOD_SANDBOX = 0x0001,
  CMOD_SILENT = 0x0002,
  CMOD_ERRSILENT = 0x0004,
  CMOD_UNSILENT = 0x0008,
  CMOD_NOAUTOCMD = 0x0010,
  CMOD_HIDE = 0x0020,
  CMOD_BROWSE = 0x0040,
  CMOD_CONFIRM = 0x0080,
  CMOD_KEEPALT = 0x0100,
  CMOD_KEEPMARKS = 0x0200,
  CMOD_KEEPJUMPS = 0x0400,
  CMOD_LOCKMARKS = 0x0800,
  CMOD_KEEPPATTERNS = 0x1000,
  CMOD_NOSWAPFILE = 0x2000,
};




typedef struct {
  int cmod_flags;

  int cmod_split;
  int cmod_tab;
  char *cmod_filter_pat;
  regmatch_T cmod_filter_regmatch;
  
# 210 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h" 3 4
 _Bool 
# 210 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h"
      cmod_filter_force;

  int cmod_verbose;


  char *cmod_save_ei;
  int cmod_did_sandbox;
  OptInt cmod_verbose_save;
  int cmod_save_msg_silent;
  int cmod_save_msg_scroll;
  int cmod_did_esilent;
} cmdmod_T;


typedef struct {
  cmdmod_T cmdmod;
  struct {
    
# 227 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h" 3 4
   _Bool 
# 227 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h"
        file;
    
# 228 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h" 3 4
   _Bool 
# 228 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h"
        bar;
  } magic;
} CmdParseInfo;


typedef struct {
  char *sub;
  Timestamp timestamp;
  AdditionalData *additional_data;
} SubReplacementString;
# 4 "/home/ubuntu/neovim/src/nvim/eval_defs.h" 2


typedef enum {
  kMPNil,
  kMPBoolean,
  kMPInteger,
  kMPFloat,
  kMPString,
  kMPArray,
  kMPMap,
  kMPExt,
} MessagePackType;




typedef struct {
  int eval_flags;


  LineGetter eval_getline;
  void *eval_cookie;


  char *eval_tofree;
} evalarg_T;
# 11 "/home/ubuntu/neovim/src/nvim/eval.h" 2


# 1 "/home/ubuntu/neovim/src/nvim/grid_defs.h" 1
       


# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/grid_defs.h" 2
# 14 "/home/ubuntu/neovim/src/nvim/grid_defs.h"
enum {
  kZIndexDefaultGrid = 0,
  kZIndexFloatDefault = 50,
  kZIndexPopupMenu = 100,
  kZIndexMessages = 200,
  kZIndexCmdlinePopupMenu = 250,
};
# 48 "/home/ubuntu/neovim/src/nvim/grid_defs.h"
typedef struct ScreenGrid ScreenGrid;
struct ScreenGrid {
  handle_T handle;

  schar_T *chars;
  sattr_T *attrs;
  colnr_T *vcols;
  size_t *line_offset;



  int *dirty_col;


  int rows;
  int cols;


  
# 66 "/home/ubuntu/neovim/src/nvim/grid_defs.h" 3 4
 _Bool 
# 66 "/home/ubuntu/neovim/src/nvim/grid_defs.h"
      valid;



  
# 70 "/home/ubuntu/neovim/src/nvim/grid_defs.h" 3 4
 _Bool 
# 70 "/home/ubuntu/neovim/src/nvim/grid_defs.h"
      throttled;





  int row_offset;
  int col_offset;
  ScreenGrid *target;


  
# 81 "/home/ubuntu/neovim/src/nvim/grid_defs.h" 3 4
 _Bool 
# 81 "/home/ubuntu/neovim/src/nvim/grid_defs.h"
      blending;


  
# 84 "/home/ubuntu/neovim/src/nvim/grid_defs.h" 3 4
 _Bool 
# 84 "/home/ubuntu/neovim/src/nvim/grid_defs.h"
      focusable;


  int zindex;





  int comp_row;
  int comp_col;




  int comp_width;
  int comp_height;



  size_t comp_index;



  
# 108 "/home/ubuntu/neovim/src/nvim/grid_defs.h" 3 4
 _Bool 
# 108 "/home/ubuntu/neovim/src/nvim/grid_defs.h"
      comp_disabled;
};





typedef struct {
  int args[3];
  int icell;
  int ncells;
  int coloff;
  int cur_attr;
  int clear_width;
  
# 122 "/home/ubuntu/neovim/src/nvim/grid_defs.h" 3 4
 _Bool 
# 122 "/home/ubuntu/neovim/src/nvim/grid_defs.h"
      wrap;
} GridLineEvent;
# 14 "/home/ubuntu/neovim/src/nvim/eval.h" 2


# 1 "/home/ubuntu/neovim/src/nvim/mbyte_defs.h" 1
       




# 1 "/home/ubuntu/neovim/src/nvim/iconv_defs.h" 1
       


# 1 "/usr/include/iconv.h" 1 3 4
# 23 "/usr/include/iconv.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 24 "/usr/include/iconv.h" 2 3 4






# 29 "/usr/include/iconv.h" 3 4
typedef void *iconv_t;







extern iconv_t iconv_open (const char *__tocode, const char *__fromcode);




extern size_t iconv (iconv_t __cd, char **__restrict __inbuf,
       size_t *__restrict __inbytesleft,
       char **__restrict __outbuf,
       size_t *__restrict __outbytesleft);





extern int iconv_close (iconv_t __cd);


# 5 "/home/ubuntu/neovim/src/nvim/iconv_defs.h" 2
# 7 "/home/ubuntu/neovim/src/nvim/mbyte_defs.h" 2


# 8 "/home/ubuntu/neovim/src/nvim/mbyte_defs.h"
enum {



  MB_MAXBYTES = 21,

  MB_MAXCHAR = 6,
};


enum {
  ENC_8BIT = 0x01,
  ENC_DBCS = 0x02,
  ENC_UNICODE = 0x04,

  ENC_ENDIAN_B = 0x10,
  ENC_ENDIAN_L = 0x20,

  ENC_2BYTE = 0x40,
  ENC_4BYTE = 0x80,
  ENC_2WORD = 0x100,

  ENC_LATIN1 = 0x200,
  ENC_LATIN9 = 0x400,
  ENC_MACROMAN = 0x800,
};


typedef enum {
  CONV_NONE = 0,
  CONV_TO_UTF8 = 1,
  CONV_9_TO_UTF8 = 2,
  CONV_TO_LATIN1 = 3,
  CONV_TO_LATIN9 = 4,
  CONV_ICONV = 5,
} ConvFlags;
# 52 "/home/ubuntu/neovim/src/nvim/mbyte_defs.h"
typedef struct {
  int vc_type;
  int vc_factor;
  iconv_t vc_fd;
  
# 56 "/home/ubuntu/neovim/src/nvim/mbyte_defs.h" 3 4
 _Bool 
# 56 "/home/ubuntu/neovim/src/nvim/mbyte_defs.h"
      vc_fail;

} vimconv_T;

typedef struct {
  int32_t value;
  int len;
} CharInfo;

typedef struct {
  char *ptr;
  CharInfo chr;
} StrCharInfo;

typedef struct {
  int8_t begin_off;
  int8_t end_off;
} CharBoundsOff;
# 17 "/home/ubuntu/neovim/src/nvim/eval.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/msgpack_rpc/channel_defs.h" 1
       




# 1 "/home/ubuntu/neovim/src/nvim/api/private/dispatch.h" 1
       
# 10 "/home/ubuntu/neovim/src/nvim/api/private/dispatch.h"
typedef Object (*ApiDispatchWrapper)(uint64_t channel_id, Array args, Arena *arena, Error *error);



struct MsgpackRpcRequestHandler {
  const char *name;
  ApiDispatchWrapper fn;
  
# 17 "/home/ubuntu/neovim/src/nvim/api/private/dispatch.h" 3 4
 _Bool 
# 17 "/home/ubuntu/neovim/src/nvim/api/private/dispatch.h"
      fast;



  
# 21 "/home/ubuntu/neovim/src/nvim/api/private/dispatch.h" 3 4
 _Bool 
# 21 "/home/ubuntu/neovim/src/nvim/api/private/dispatch.h"
      ret_alloc;

};

extern const MsgpackRpcRequestHandler method_handlers[];
# 7 "/home/ubuntu/neovim/src/nvim/msgpack_rpc/channel_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/map_defs.h" 1
       







# 1 "/home/ubuntu/neovim/src/nvim/highlight_defs.h" 1
       






typedef int32_t RgbValue;




typedef enum {
  HL_INVERSE = 0x01,
  HL_BOLD = 0x02,
  HL_ITALIC = 0x04,

  HL_UNDERLINE_MASK = 0x38,
  HL_UNDERLINE = 0x08,
  HL_UNDERCURL = 0x10,
  HL_UNDERDOUBLE = 0x18,
  HL_UNDERDOTTED = 0x20,
  HL_UNDERDASHED = 0x28,

  HL_STANDOUT = 0x0040,
  HL_STRIKETHROUGH = 0x0080,
  HL_ALTFONT = 0x0100,

  HL_NOCOMBINE = 0x0400,
  HL_BG_INDEXED = 0x0800,
  HL_FG_INDEXED = 0x1000,
  HL_DEFAULT = 0x2000,
  HL_GLOBAL = 0x4000,
} HlAttrFlags;



typedef struct {
  int16_t rgb_ae_attr, cterm_ae_attr;
  RgbValue rgb_fg_color, rgb_bg_color, rgb_sp_color;
  int16_t cterm_fg_color, cterm_bg_color;
  int32_t hl_blend;
  int32_t url;
} HlAttrs;
# 60 "/home/ubuntu/neovim/src/nvim/highlight_defs.h"
typedef enum {
  HLF_8 = 0,

  HLF_EOB,
  HLF_TERM,
  HLF_TERMNC,
  HLF_AT,
  HLF_D,
  HLF_E,
  HLF_I,
  HLF_L,
  HLF_LC,
  HLF_M,
  HLF_CM,
  HLF_N,
  HLF_LNA,
  HLF_LNB,
  HLF_CLN,
  HLF_CLS,
  HLF_CLF,
  HLF_R,
  HLF_S,
  HLF_SNC,
  HLF_C,
  HLF_VSP,
  HLF_T,
  HLF_V,
  HLF_VNC,
  HLF_W,
  HLF_WM,
  HLF_FL,
  HLF_FC,
  HLF_ADD,
  HLF_CHD,
  HLF_DED,
  HLF_TXD,
  HLF_SC,
  HLF_CONCEAL,
  HLF_SPB,
  HLF_SPC,
  HLF_SPR,
  HLF_SPL,
  HLF_PNI,
  HLF_PSI,
  HLF_PMNI,
  HLF_PMSI,
  HLF_PNK,
  HLF_PSK,
  HLF_PNX,
  HLF_PSX,
  HLF_PSB,
  HLF_PST,
  HLF_TP,
  HLF_TPS,
  HLF_TPF,
  HLF_CUC,
  HLF_CUL,
  HLF_MC,
  HLF_QFL,
  HLF_0,
  HLF_INACTIVE,
  HLF_MSGSEP,
  HLF_NFLOAT,
  HLF_MSG,
  HLF_BORDER,
  HLF_WBR,
  HLF_WBRNC,
  HLF_CU,
  HLF_BTITLE,
  HLF_BFOOTER,
  HLF_TS,
  HLF_TSNC,
  HLF_COUNT,
} hlf_T;

typedef enum {
  kHlUnknown,
  kHlUI,
  kHlSyntax,
  kHlTerminal,
  kHlCombine,
  kHlBlend,
  kHlBlendThrough,
  kHlInvalid,
} HlKind;

typedef struct {
  HlAttrs attr;
  HlKind kind;
  int id1;
  int id2;
  int winid;
} HlEntry;

typedef struct {
  int ns_id;
  int syn_id;
} ColorKey;


typedef struct {
  int attr_id;
  int link_id;
  int version;
  
# 164 "/home/ubuntu/neovim/src/nvim/highlight_defs.h" 3 4
 _Bool 
# 164 "/home/ubuntu/neovim/src/nvim/highlight_defs.h"
      is_default;
  
# 165 "/home/ubuntu/neovim/src/nvim/highlight_defs.h" 3 4
 _Bool 
# 165 "/home/ubuntu/neovim/src/nvim/highlight_defs.h"
      link_global;
} ColorItem;



enum { HLATTRS_DICT_SIZE = 16, };
# 10 "/home/ubuntu/neovim/src/nvim/map_defs.h" 2







typedef const char *cstr_t;
typedef void *ptr_t;



static inline uint32_t hash_String(String s)
{
  uint32_t h = 0;
  for (size_t i = 0; i < s.size; i++) {
    h = (h << 5) - h + (uint8_t)s.data[i];
  }
  return h;
}

static inline 
# 31 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
             _Bool 
# 31 "/home/ubuntu/neovim/src/nvim/map_defs.h"
                  equal_String(String a, String b)
{
  if (a.size != b.size) {
    return 
# 34 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
          0
# 34 "/home/ubuntu/neovim/src/nvim/map_defs.h"
               ;
  }

  return (a.size == 0) || (memcmp(a.data, b.data, a.size) == 0);
}





static const int value_init_int = 0;
static const ptr_t value_init_ptr_t = 
# 45 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
                                     ((void *)0)
# 45 "/home/ubuntu/neovim/src/nvim/map_defs.h"
                                         ;
static const ssize_t value_init_ssize_t = -1;
static const uint32_t value_init_uint32_t = 0;
static const uint64_t value_init_uint64_t = 0;
static const int64_t value_init_int64_t = 0;
static const String value_init_String = { .data = 
# 50 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
                                       ((void *)0)
# 50 "/home/ubuntu/neovim/src/nvim/map_defs.h"
                                       , .size = 0 };
static const ColorItem value_init_ColorItem = { .attr_id = -1, .link_id = -1, .version = -1, .is_default = 
# 51 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
                                             0
# 51 "/home/ubuntu/neovim/src/nvim/map_defs.h"
                                             , .link_global = 
# 51 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
                                             0 
# 51 "/home/ubuntu/neovim/src/nvim/map_defs.h"
                                             };



typedef struct {
  uint32_t n_buckets;
  uint32_t size;
  uint32_t n_occupied;
  uint32_t upper_bound;
  uint32_t n_keys;
  uint32_t keys_capacity;
  uint32_t *hash;
} MapHash;
# 75 "/home/ubuntu/neovim/src/nvim/map_defs.h"
typedef enum {
  kMHExisting = 0,
  kMHNewKeyDidFit,
  kMHNewKeyRealloc,
} MHPutStatus;

void mh_clear(MapHash *h);
void mh_realloc(MapHash *h, uint32_t n_min_buckets);
# 144 "/home/ubuntu/neovim/src/nvim/map_defs.h"
typedef struct { MapHash h; char *keys; } Set_glyph; uint32_t mh_find_bucket_glyph(Set_glyph *set, String key, 
# 144 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 144 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_glyph(Set_glyph *set, String key); void mh_rehash_glyph(Set_glyph *set); uint32_t mh_put_glyph(Set_glyph *set, String key, MHPutStatus *new);
typedef struct { MapHash h; int *keys; } Set_int; uint32_t mh_find_bucket_int(Set_int *set, int key, 
# 145 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 145 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_int(Set_int *set, int key); void mh_rehash_int(Set_int *set); uint32_t mh_put_int(Set_int *set, int key, MHPutStatus *new); uint32_t mh_delete_int(Set_int *set, int *key); static inline 
# 145 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 145 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_int(Set_int *set, int key, int **key_alloc) { MHPutStatus status; uint32_t k = mh_put_int(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline int set_del_int(Set_int *set, int key) { mh_delete_int(set, &key); return key; } static inline 
# 145 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 145 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_int(Set_int *set, int key) { return mh_get_int(set, key) != 
# 145 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 145 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }
typedef struct { MapHash h; cstr_t *keys; } Set_cstr_t; uint32_t mh_find_bucket_cstr_t(Set_cstr_t *set, cstr_t key, 
# 146 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 146 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_cstr_t(Set_cstr_t *set, cstr_t key); void mh_rehash_cstr_t(Set_cstr_t *set); uint32_t mh_put_cstr_t(Set_cstr_t *set, cstr_t key, MHPutStatus *new); uint32_t mh_delete_cstr_t(Set_cstr_t *set, cstr_t *key); static inline 
# 146 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 146 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_cstr_t(Set_cstr_t *set, cstr_t key, cstr_t **key_alloc) { MHPutStatus status; uint32_t k = mh_put_cstr_t(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline cstr_t set_del_cstr_t(Set_cstr_t *set, cstr_t key) { mh_delete_cstr_t(set, &key); return key; } static inline 
# 146 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 146 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_cstr_t(Set_cstr_t *set, cstr_t key) { return mh_get_cstr_t(set, key) != 
# 146 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 146 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }
typedef struct { MapHash h; ptr_t *keys; } Set_ptr_t; uint32_t mh_find_bucket_ptr_t(Set_ptr_t *set, ptr_t key, 
# 147 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 147 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_ptr_t(Set_ptr_t *set, ptr_t key); void mh_rehash_ptr_t(Set_ptr_t *set); uint32_t mh_put_ptr_t(Set_ptr_t *set, ptr_t key, MHPutStatus *new); uint32_t mh_delete_ptr_t(Set_ptr_t *set, ptr_t *key); static inline 
# 147 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 147 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_ptr_t(Set_ptr_t *set, ptr_t key, ptr_t **key_alloc) { MHPutStatus status; uint32_t k = mh_put_ptr_t(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline ptr_t set_del_ptr_t(Set_ptr_t *set, ptr_t key) { mh_delete_ptr_t(set, &key); return key; } static inline 
# 147 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 147 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_ptr_t(Set_ptr_t *set, ptr_t key) { return mh_get_ptr_t(set, key) != 
# 147 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 147 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }
typedef struct { MapHash h; uint64_t *keys; } Set_uint64_t; uint32_t mh_find_bucket_uint64_t(Set_uint64_t *set, uint64_t key, 
# 148 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 148 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_uint64_t(Set_uint64_t *set, uint64_t key); void mh_rehash_uint64_t(Set_uint64_t *set); uint32_t mh_put_uint64_t(Set_uint64_t *set, uint64_t key, MHPutStatus *new); uint32_t mh_delete_uint64_t(Set_uint64_t *set, uint64_t *key); static inline 
# 148 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 148 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_uint64_t(Set_uint64_t *set, uint64_t key, uint64_t **key_alloc) { MHPutStatus status; uint32_t k = mh_put_uint64_t(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline uint64_t set_del_uint64_t(Set_uint64_t *set, uint64_t key) { mh_delete_uint64_t(set, &key); return key; } static inline 
# 148 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 148 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_uint64_t(Set_uint64_t *set, uint64_t key) { return mh_get_uint64_t(set, key) != 
# 148 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 148 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }
typedef struct { MapHash h; int64_t *keys; } Set_int64_t; uint32_t mh_find_bucket_int64_t(Set_int64_t *set, int64_t key, 
# 149 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 149 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_int64_t(Set_int64_t *set, int64_t key); void mh_rehash_int64_t(Set_int64_t *set); uint32_t mh_put_int64_t(Set_int64_t *set, int64_t key, MHPutStatus *new); uint32_t mh_delete_int64_t(Set_int64_t *set, int64_t *key); static inline 
# 149 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 149 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_int64_t(Set_int64_t *set, int64_t key, int64_t **key_alloc) { MHPutStatus status; uint32_t k = mh_put_int64_t(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline int64_t set_del_int64_t(Set_int64_t *set, int64_t key) { mh_delete_int64_t(set, &key); return key; } static inline 
# 149 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 149 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_int64_t(Set_int64_t *set, int64_t key) { return mh_get_int64_t(set, key) != 
# 149 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 149 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }
typedef struct { MapHash h; uint32_t *keys; } Set_uint32_t; uint32_t mh_find_bucket_uint32_t(Set_uint32_t *set, uint32_t key, 
# 150 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 150 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_uint32_t(Set_uint32_t *set, uint32_t key); void mh_rehash_uint32_t(Set_uint32_t *set); uint32_t mh_put_uint32_t(Set_uint32_t *set, uint32_t key, MHPutStatus *new); uint32_t mh_delete_uint32_t(Set_uint32_t *set, uint32_t *key); static inline 
# 150 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 150 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_uint32_t(Set_uint32_t *set, uint32_t key, uint32_t **key_alloc) { MHPutStatus status; uint32_t k = mh_put_uint32_t(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline uint32_t set_del_uint32_t(Set_uint32_t *set, uint32_t key) { mh_delete_uint32_t(set, &key); return key; } static inline 
# 150 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 150 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_uint32_t(Set_uint32_t *set, uint32_t key) { return mh_get_uint32_t(set, key) != 
# 150 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 150 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }
typedef struct { MapHash h; String *keys; } Set_String; uint32_t mh_find_bucket_String(Set_String *set, String key, 
# 151 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 151 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_String(Set_String *set, String key); void mh_rehash_String(Set_String *set); uint32_t mh_put_String(Set_String *set, String key, MHPutStatus *new); uint32_t mh_delete_String(Set_String *set, String *key); static inline 
# 151 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 151 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_String(Set_String *set, String key, String **key_alloc) { MHPutStatus status; uint32_t k = mh_put_String(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline String set_del_String(Set_String *set, String key) { mh_delete_String(set, &key); return key; } static inline 
# 151 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 151 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_String(Set_String *set, String key) { return mh_get_String(set, key) != 
# 151 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 151 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }
typedef struct { MapHash h; HlEntry *keys; } Set_HlEntry; uint32_t mh_find_bucket_HlEntry(Set_HlEntry *set, HlEntry key, 
# 152 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 152 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_HlEntry(Set_HlEntry *set, HlEntry key); void mh_rehash_HlEntry(Set_HlEntry *set); uint32_t mh_put_HlEntry(Set_HlEntry *set, HlEntry key, MHPutStatus *new); uint32_t mh_delete_HlEntry(Set_HlEntry *set, HlEntry *key); static inline 
# 152 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 152 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_HlEntry(Set_HlEntry *set, HlEntry key, HlEntry **key_alloc) { MHPutStatus status; uint32_t k = mh_put_HlEntry(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline HlEntry set_del_HlEntry(Set_HlEntry *set, HlEntry key) { mh_delete_HlEntry(set, &key); return key; } static inline 
# 152 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 152 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_HlEntry(Set_HlEntry *set, HlEntry key) { return mh_get_HlEntry(set, key) != 
# 152 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 152 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }
typedef struct { MapHash h; ColorKey *keys; } Set_ColorKey; uint32_t mh_find_bucket_ColorKey(Set_ColorKey *set, ColorKey key, 
# 153 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 153 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_ColorKey(Set_ColorKey *set, ColorKey key); void mh_rehash_ColorKey(Set_ColorKey *set); uint32_t mh_put_ColorKey(Set_ColorKey *set, ColorKey key, MHPutStatus *new); uint32_t mh_delete_ColorKey(Set_ColorKey *set, ColorKey *key); static inline 
# 153 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 153 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_ColorKey(Set_ColorKey *set, ColorKey key, ColorKey **key_alloc) { MHPutStatus status; uint32_t k = mh_put_ColorKey(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline ColorKey set_del_ColorKey(Set_ColorKey *set, ColorKey key) { mh_delete_ColorKey(set, &key); return key; } static inline 
# 153 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 153 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_ColorKey(Set_ColorKey *set, ColorKey key) { return mh_get_ColorKey(set, key) != 
# 153 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 153 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }

typedef struct { Set_int set; int *values; } Map_intint; static inline int map_get_intint(Map_intint *map, int key) { uint32_t k = mh_get_int(&map->set, key); return k == 
# 155 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U) 
# 155 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_int : map->values[k]; } int *map_ref_intint(Map_intint *map, int key, int **key_alloc); int *map_put_ref_intint(Map_intint *map, int key, int **key_alloc, 
# 155 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 155 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_intint(Map_intint *map, int key, int value) { int *val = map_put_ref_intint(map, key, 
# 155 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 155 "/home/ubuntu/neovim/src/nvim/map_defs.h"
, 
# 155 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 155 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } int map_del_intint(Map_intint *map, int key, int *key_alloc);
typedef struct { Set_int set; ptr_t *values; } Map_intptr_t; static inline ptr_t map_get_intptr_t(Map_intptr_t *map, int key) { uint32_t k = mh_get_int(&map->set, key); return k == 
# 156 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U) 
# 156 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_ptr_t : map->values[k]; } ptr_t *map_ref_intptr_t(Map_intptr_t *map, int key, int **key_alloc); ptr_t *map_put_ref_intptr_t(Map_intptr_t *map, int key, int **key_alloc, 
# 156 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 156 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_intptr_t(Map_intptr_t *map, int key, ptr_t value) { ptr_t *val = map_put_ref_intptr_t(map, key, 
# 156 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 156 "/home/ubuntu/neovim/src/nvim/map_defs.h"
, 
# 156 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 156 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } ptr_t map_del_intptr_t(Map_intptr_t *map, int key, int *key_alloc);
typedef struct { Set_cstr_t set; ptr_t *values; } Map_cstr_tptr_t; static inline ptr_t map_get_cstr_tptr_t(Map_cstr_tptr_t *map, cstr_t key) { uint32_t k = mh_get_cstr_t(&map->set, key); return k == 
# 157 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U) 
# 157 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_ptr_t : map->values[k]; } ptr_t *map_ref_cstr_tptr_t(Map_cstr_tptr_t *map, cstr_t key, cstr_t **key_alloc); ptr_t *map_put_ref_cstr_tptr_t(Map_cstr_tptr_t *map, cstr_t key, cstr_t **key_alloc, 
# 157 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 157 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_cstr_tptr_t(Map_cstr_tptr_t *map, cstr_t key, ptr_t value) { ptr_t *val = map_put_ref_cstr_tptr_t(map, key, 
# 157 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 157 "/home/ubuntu/neovim/src/nvim/map_defs.h"
, 
# 157 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 157 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } ptr_t map_del_cstr_tptr_t(Map_cstr_tptr_t *map, cstr_t key, cstr_t *key_alloc);
typedef struct { Set_cstr_t set; int *values; } Map_cstr_tint; static inline int map_get_cstr_tint(Map_cstr_tint *map, cstr_t key) { uint32_t k = mh_get_cstr_t(&map->set, key); return k == 
# 158 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U) 
# 158 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_int : map->values[k]; } int *map_ref_cstr_tint(Map_cstr_tint *map, cstr_t key, cstr_t **key_alloc); int *map_put_ref_cstr_tint(Map_cstr_tint *map, cstr_t key, cstr_t **key_alloc, 
# 158 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 158 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_cstr_tint(Map_cstr_tint *map, cstr_t key, int value) { int *val = map_put_ref_cstr_tint(map, key, 
# 158 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 158 "/home/ubuntu/neovim/src/nvim/map_defs.h"
, 
# 158 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 158 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } int map_del_cstr_tint(Map_cstr_tint *map, cstr_t key, cstr_t *key_alloc);
typedef struct { Set_ptr_t set; ptr_t *values; } Map_ptr_tptr_t; static inline ptr_t map_get_ptr_tptr_t(Map_ptr_tptr_t *map, ptr_t key) { uint32_t k = mh_get_ptr_t(&map->set, key); return k == 
# 159 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U) 
# 159 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_ptr_t : map->values[k]; } ptr_t *map_ref_ptr_tptr_t(Map_ptr_tptr_t *map, ptr_t key, ptr_t **key_alloc); ptr_t *map_put_ref_ptr_tptr_t(Map_ptr_tptr_t *map, ptr_t key, ptr_t **key_alloc, 
# 159 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 159 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_ptr_tptr_t(Map_ptr_tptr_t *map, ptr_t key, ptr_t value) { ptr_t *val = map_put_ref_ptr_tptr_t(map, key, 
# 159 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 159 "/home/ubuntu/neovim/src/nvim/map_defs.h"
, 
# 159 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 159 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } ptr_t map_del_ptr_tptr_t(Map_ptr_tptr_t *map, ptr_t key, ptr_t *key_alloc);
typedef struct { Set_uint32_t set; ptr_t *values; } Map_uint32_tptr_t; static inline ptr_t map_get_uint32_tptr_t(Map_uint32_tptr_t *map, uint32_t key) { uint32_t k = mh_get_uint32_t(&map->set, key); return k == 
# 160 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U) 
# 160 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_ptr_t : map->values[k]; } ptr_t *map_ref_uint32_tptr_t(Map_uint32_tptr_t *map, uint32_t key, uint32_t **key_alloc); ptr_t *map_put_ref_uint32_tptr_t(Map_uint32_tptr_t *map, uint32_t key, uint32_t **key_alloc, 
# 160 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 160 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_uint32_tptr_t(Map_uint32_tptr_t *map, uint32_t key, ptr_t value) { ptr_t *val = map_put_ref_uint32_tptr_t(map, key, 
# 160 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 160 "/home/ubuntu/neovim/src/nvim/map_defs.h"
, 
# 160 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 160 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } ptr_t map_del_uint32_tptr_t(Map_uint32_tptr_t *map, uint32_t key, uint32_t *key_alloc);
typedef struct { Set_uint64_t set; ptr_t *values; } Map_uint64_tptr_t; static inline ptr_t map_get_uint64_tptr_t(Map_uint64_tptr_t *map, uint64_t key) { uint32_t k = mh_get_uint64_t(&map->set, key); return k == 
# 161 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U) 
# 161 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_ptr_t : map->values[k]; } ptr_t *map_ref_uint64_tptr_t(Map_uint64_tptr_t *map, uint64_t key, uint64_t **key_alloc); ptr_t *map_put_ref_uint64_tptr_t(Map_uint64_tptr_t *map, uint64_t key, uint64_t **key_alloc, 
# 161 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 161 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_uint64_tptr_t(Map_uint64_tptr_t *map, uint64_t key, ptr_t value) { ptr_t *val = map_put_ref_uint64_tptr_t(map, key, 
# 161 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 161 "/home/ubuntu/neovim/src/nvim/map_defs.h"
, 
# 161 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 161 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } ptr_t map_del_uint64_tptr_t(Map_uint64_tptr_t *map, uint64_t key, uint64_t *key_alloc);
typedef struct { Set_uint64_t set; ssize_t *values; } Map_uint64_tssize_t; static inline ssize_t map_get_uint64_tssize_t(Map_uint64_tssize_t *map, uint64_t key) { uint32_t k = mh_get_uint64_t(&map->set, key); return k == 
# 162 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U) 
# 162 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_ssize_t : map->values[k]; } ssize_t *map_ref_uint64_tssize_t(Map_uint64_tssize_t *map, uint64_t key, uint64_t **key_alloc); ssize_t *map_put_ref_uint64_tssize_t(Map_uint64_tssize_t *map, uint64_t key, uint64_t **key_alloc, 
# 162 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 162 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_uint64_tssize_t(Map_uint64_tssize_t *map, uint64_t key, ssize_t value) { ssize_t *val = map_put_ref_uint64_tssize_t(map, key, 
# 162 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 162 "/home/ubuntu/neovim/src/nvim/map_defs.h"
, 
# 162 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 162 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } ssize_t map_del_uint64_tssize_t(Map_uint64_tssize_t *map, uint64_t key, uint64_t *key_alloc);
typedef struct { Set_uint64_t set; uint64_t *values; } Map_uint64_tuint64_t; static inline uint64_t map_get_uint64_tuint64_t(Map_uint64_tuint64_t *map, uint64_t key) { uint32_t k = mh_get_uint64_t(&map->set, key); return k == 
# 163 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U) 
# 163 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_uint64_t : map->values[k]; } uint64_t *map_ref_uint64_tuint64_t(Map_uint64_tuint64_t *map, uint64_t key, uint64_t **key_alloc); uint64_t *map_put_ref_uint64_tuint64_t(Map_uint64_tuint64_t *map, uint64_t key, uint64_t **key_alloc, 
# 163 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 163 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_uint64_tuint64_t(Map_uint64_tuint64_t *map, uint64_t key, uint64_t value) { uint64_t *val = map_put_ref_uint64_tuint64_t(map, key, 
# 163 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 163 "/home/ubuntu/neovim/src/nvim/map_defs.h"
, 
# 163 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 163 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } uint64_t map_del_uint64_tuint64_t(Map_uint64_tuint64_t *map, uint64_t key, uint64_t *key_alloc);
typedef struct { Set_int64_t set; int64_t *values; } Map_int64_tint64_t; static inline int64_t map_get_int64_tint64_t(Map_int64_tint64_t *map, int64_t key) { uint32_t k = mh_get_int64_t(&map->set, key); return k == 
# 164 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U) 
# 164 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_int64_t : map->values[k]; } int64_t *map_ref_int64_tint64_t(Map_int64_tint64_t *map, int64_t key, int64_t **key_alloc); int64_t *map_put_ref_int64_tint64_t(Map_int64_tint64_t *map, int64_t key, int64_t **key_alloc, 
# 164 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 164 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_int64_tint64_t(Map_int64_tint64_t *map, int64_t key, int64_t value) { int64_t *val = map_put_ref_int64_tint64_t(map, key, 
# 164 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 164 "/home/ubuntu/neovim/src/nvim/map_defs.h"
, 
# 164 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 164 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } int64_t map_del_int64_tint64_t(Map_int64_tint64_t *map, int64_t key, int64_t *key_alloc);
typedef struct { Set_int64_t set; ptr_t *values; } Map_int64_tptr_t; static inline ptr_t map_get_int64_tptr_t(Map_int64_tptr_t *map, int64_t key) { uint32_t k = mh_get_int64_t(&map->set, key); return k == 
# 165 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U) 
# 165 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_ptr_t : map->values[k]; } ptr_t *map_ref_int64_tptr_t(Map_int64_tptr_t *map, int64_t key, int64_t **key_alloc); ptr_t *map_put_ref_int64_tptr_t(Map_int64_tptr_t *map, int64_t key, int64_t **key_alloc, 
# 165 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 165 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_int64_tptr_t(Map_int64_tptr_t *map, int64_t key, ptr_t value) { ptr_t *val = map_put_ref_int64_tptr_t(map, key, 
# 165 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 165 "/home/ubuntu/neovim/src/nvim/map_defs.h"
, 
# 165 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 165 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } ptr_t map_del_int64_tptr_t(Map_int64_tptr_t *map, int64_t key, int64_t *key_alloc);
typedef struct { Set_uint32_t set; uint32_t *values; } Map_uint32_tuint32_t; static inline uint32_t map_get_uint32_tuint32_t(Map_uint32_tuint32_t *map, uint32_t key) { uint32_t k = mh_get_uint32_t(&map->set, key); return k == 
# 166 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U) 
# 166 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_uint32_t : map->values[k]; } uint32_t *map_ref_uint32_tuint32_t(Map_uint32_tuint32_t *map, uint32_t key, uint32_t **key_alloc); uint32_t *map_put_ref_uint32_tuint32_t(Map_uint32_tuint32_t *map, uint32_t key, uint32_t **key_alloc, 
# 166 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 166 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_uint32_tuint32_t(Map_uint32_tuint32_t *map, uint32_t key, uint32_t value) { uint32_t *val = map_put_ref_uint32_tuint32_t(map, key, 
# 166 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 166 "/home/ubuntu/neovim/src/nvim/map_defs.h"
, 
# 166 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 166 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } uint32_t map_del_uint32_tuint32_t(Map_uint32_tuint32_t *map, uint32_t key, uint32_t *key_alloc);
typedef struct { Set_String set; int *values; } Map_Stringint; static inline int map_get_Stringint(Map_Stringint *map, String key) { uint32_t k = mh_get_String(&map->set, key); return k == 
# 167 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U) 
# 167 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_int : map->values[k]; } int *map_ref_Stringint(Map_Stringint *map, String key, String **key_alloc); int *map_put_ref_Stringint(Map_Stringint *map, String key, String **key_alloc, 
# 167 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 167 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_Stringint(Map_Stringint *map, String key, int value) { int *val = map_put_ref_Stringint(map, key, 
# 167 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 167 "/home/ubuntu/neovim/src/nvim/map_defs.h"
, 
# 167 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 167 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } int map_del_Stringint(Map_Stringint *map, String key, String *key_alloc);
typedef struct { Set_int set; String *values; } Map_intString; static inline String map_get_intString(Map_intString *map, int key) { uint32_t k = mh_get_int(&map->set, key); return k == 
# 168 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U) 
# 168 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_String : map->values[k]; } String *map_ref_intString(Map_intString *map, int key, int **key_alloc); String *map_put_ref_intString(Map_intString *map, int key, int **key_alloc, 
# 168 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 168 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_intString(Map_intString *map, int key, String value) { String *val = map_put_ref_intString(map, key, 
# 168 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 168 "/home/ubuntu/neovim/src/nvim/map_defs.h"
, 
# 168 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 168 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } String map_del_intString(Map_intString *map, int key, int *key_alloc);
typedef struct { Set_ColorKey set; ColorItem *values; } Map_ColorKeyColorItem; static inline ColorItem map_get_ColorKeyColorItem(Map_ColorKeyColorItem *map, ColorKey key) { uint32_t k = mh_get_ColorKey(&map->set, key); return k == 
# 169 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U) 
# 169 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_ColorItem : map->values[k]; } ColorItem *map_ref_ColorKeyColorItem(Map_ColorKeyColorItem *map, ColorKey key, ColorKey **key_alloc); ColorItem *map_put_ref_ColorKeyColorItem(Map_ColorKeyColorItem *map, ColorKey key, ColorKey **key_alloc, 
# 169 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool 
# 169 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_ColorKeyColorItem(Map_ColorKeyColorItem *map, ColorKey key, ColorItem value) { ColorItem *val = map_put_ref_ColorKeyColorItem(map, key, 
# 169 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 169 "/home/ubuntu/neovim/src/nvim/map_defs.h"
, 
# 169 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 169 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } ColorItem map_del_ColorKeyColorItem(Map_ColorKeyColorItem *map, ColorKey key, ColorKey *key_alloc);
# 236 "/home/ubuntu/neovim/src/nvim/map_defs.h"
void pmap_del2(Map_cstr_tptr_t *map, const char *key);
# 8 "/home/ubuntu/neovim/src/nvim/msgpack_rpc/channel_defs.h" 2

typedef struct Channel Channel;
typedef struct Unpacker Unpacker;

typedef enum {
  kClientTypeUnknown = -1,
  kClientTypeRemote = 0,
  kClientTypeMsgpackRpc = 5,
  kClientTypeUi = 1,
  kClientTypeEmbedder = 2,
  kClientTypeHost = 3,
  kClientTypePlugin = 4,
} ClientType;

typedef struct {
  uint32_t request_id;
  
# 24 "/home/ubuntu/neovim/src/nvim/msgpack_rpc/channel_defs.h" 3 4
 _Bool 
# 24 "/home/ubuntu/neovim/src/nvim/msgpack_rpc/channel_defs.h"
      returned, errored;
  Object result;
  ArenaMem result_mem;
} ChannelCallFrame;

typedef struct {
  MessageType type;
  Channel *channel;
  MsgpackRpcRequestHandler handler;
  Array args;
  uint32_t request_id;
  Arena used_mem;
} RequestEvent;

typedef struct {
  
# 39 "/home/ubuntu/neovim/src/nvim/msgpack_rpc/channel_defs.h" 3 4
 _Bool 
# 39 "/home/ubuntu/neovim/src/nvim/msgpack_rpc/channel_defs.h"
      closed;
  Unpacker *unpacker;
  uint32_t next_request_id;
  struct { size_t size; size_t capacity; ChannelCallFrame * *items; } call_stack;
  Dictionary info;
  ClientType client_type;
} RpcState;
# 18 "/home/ubuntu/neovim/src/nvim/eval.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/option_defs.h" 1
       


# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/option_defs.h" 2
# 17 "/home/ubuntu/neovim/src/nvim/option_defs.h"
typedef enum {
  kOptValTypeNil = -1,
  kOptValTypeBoolean,
  kOptValTypeNumber,
  kOptValTypeString,
} OptValType;




typedef uint32_t OptTypeFlags;

typedef union {

  TriState boolean;
  OptInt number;
  String string;
} OptValData;


typedef struct {
  OptValType type;
  OptValData data;
} OptVal;


typedef enum {
  OP_NONE = 0,
  OP_ADDING,
  OP_PREPENDING,
  OP_REMOVING,
} set_op_T;



typedef struct {


  void *os_varp;
  OptIndex os_idx;
  int os_flags;



  OptValData os_oldval;

  OptValData os_newval;



  
# 67 "/home/ubuntu/neovim/src/nvim/option_defs.h" 3 4
 _Bool 
# 67 "/home/ubuntu/neovim/src/nvim/option_defs.h"
      os_value_checked;

  
# 69 "/home/ubuntu/neovim/src/nvim/option_defs.h" 3 4
 _Bool 
# 69 "/home/ubuntu/neovim/src/nvim/option_defs.h"
      os_value_changed;




  
# 74 "/home/ubuntu/neovim/src/nvim/option_defs.h" 3 4
 _Bool 
# 74 "/home/ubuntu/neovim/src/nvim/option_defs.h"
      os_restore_chartab;




  char *os_errbuf;

  size_t os_errbuflen;

  void *os_win;
  void *os_buf;
} optset_T;






typedef const char *(*opt_did_set_cb_T)(optset_T *args);



typedef struct {

  char *oe_varp;

  char *oe_opt_value;


  
# 103 "/home/ubuntu/neovim/src/nvim/option_defs.h" 3 4
 _Bool 
# 103 "/home/ubuntu/neovim/src/nvim/option_defs.h"
      oe_append;

  
# 105 "/home/ubuntu/neovim/src/nvim/option_defs.h" 3 4
 _Bool 
# 105 "/home/ubuntu/neovim/src/nvim/option_defs.h"
      oe_include_orig_val;


  regmatch_T *oe_regmatch;

  expand_T *oe_xp;




  char *oe_set_arg;
} optexpand_T;
# 128 "/home/ubuntu/neovim/src/nvim/option_defs.h"
typedef int (*opt_expand_cb_T)(optexpand_T *args, int *numMatches, char ***matches);


typedef enum {
  kOptReqGlobal = 0,
  kOptReqWin = 1,
  kOptReqBuf = 2,
} OptReqScope;
# 19 "/home/ubuntu/neovim/src/nvim/eval.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h" 1
       





typedef struct {
  int fd;
  char *buffer;
  char *read_pos;
  char *write_pos;
  
# 12 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h" 3 4
 _Bool 
# 12 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h"
      wr;
  
# 13 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h" 3 4
 _Bool 
# 13 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h"
      eof;
  
# 14 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h" 3 4
 _Bool 
# 14 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h"
      non_blocking;
  uint64_t bytes_read;
} FileDescriptor;
# 28 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h"
static inline 
# 28 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h" 3 4
             _Bool 
# 28 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h"
                  file_eof(const FileDescriptor *const fp)
  FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL
{
  return fp->eof && fp->read_pos == fp->write_pos;
}






static inline int file_fd(const FileDescriptor *const fp)
  FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL
{
  return fp->fd;
}
# 20 "/home/ubuntu/neovim/src/nvim/eval.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/os/stdpaths_defs.h" 1
       


typedef enum {
  kXDGNone = -1,
  kXDGConfigHome,
  kXDGDataHome,
  kXDGCacheHome,
  kXDGStateHome,
  kXDGRuntimeDir,
  kXDGConfigDirs,
  kXDGDataDirs,
} XDGVarType;
# 21 "/home/ubuntu/neovim/src/nvim/eval.h" 2

# 1 "/home/ubuntu/neovim/src/nvim/vim_defs.h" 1
       







enum {

  NUMBUFLEN = 65,
};




typedef enum {
  kDirectionNotSet = 0,
  FORWARD = 1,
  BACKWARD = -1,
  FORWARD_FILE = 3,
  BACKWARD_FILE = -3,
} Direction;



typedef enum {
  kUnknown,
  kWorking,
  kBroken,
} WorkingStatus;







typedef enum {
  kCdScopeInvalid = -1,
  kCdScopeWindow,
  kCdScopeTabpage,
  kCdScopeGlobal,
} CdScope;





typedef enum {
  kCdCauseOther = -1,
  kCdCauseManual,
  kCdCauseWindow,
  kCdCauseAuto,
} CdCause;
# 23 "/home/ubuntu/neovim/src/nvim/eval.h" 2
# 52 "/home/ubuntu/neovim/src/nvim/eval.h"
typedef struct {
  const char *ll_name;
  size_t ll_name_len;
  char *ll_exp_name;
  typval_T *ll_tv;

  listitem_T *ll_li;
  list_T *ll_list;
  
# 60 "/home/ubuntu/neovim/src/nvim/eval.h" 3 4
 _Bool 
# 60 "/home/ubuntu/neovim/src/nvim/eval.h"
      ll_range;
  
# 61 "/home/ubuntu/neovim/src/nvim/eval.h" 3 4
 _Bool 
# 61 "/home/ubuntu/neovim/src/nvim/eval.h"
      ll_empty2;
  int ll_n1;
  int ll_n2;
  dict_T *ll_dict;
  dictitem_T *ll_di;
  char *ll_newkey;
  blob_T *ll_blob;
} lval_T;


typedef enum {
  VAR_FLAVOUR_DEFAULT = 1,
  VAR_FLAVOUR_SESSION = 2,
  VAR_FLAVOUR_SHADA = 4,
} var_flavour_T;


typedef enum {
  VV_COUNT,
  VV_COUNT1,
  VV_PREVCOUNT,
  VV_ERRMSG,
  VV_WARNINGMSG,
  VV_STATUSMSG,
  VV_SHELL_ERROR,
  VV_THIS_SESSION,
  VV_VERSION,
  VV_LNUM,
  VV_TERMREQUEST,
  VV_TERMRESPONSE,
  VV_FNAME,
  VV_LANG,
  VV_LC_TIME,
  VV_CTYPE,
  VV_CC_FROM,
  VV_CC_TO,
  VV_FNAME_IN,
  VV_FNAME_OUT,
  VV_FNAME_NEW,
  VV_FNAME_DIFF,
  VV_CMDARG,
  VV_FOLDSTART,
  VV_FOLDEND,
  VV_FOLDDASHES,
  VV_FOLDLEVEL,
  VV_PROGNAME,
  VV_SEND_SERVER,
  VV_DYING,
  VV_EXCEPTION,
  VV_THROWPOINT,
  VV_REG,
  VV_CMDBANG,
  VV_INSERTMODE,
  VV_VAL,
  VV_KEY,
  VV_PROFILING,
  VV_FCS_REASON,
  VV_FCS_CHOICE,
  VV_BEVAL_BUFNR,
  VV_BEVAL_WINNR,
  VV_BEVAL_WINID,
  VV_BEVAL_LNUM,
  VV_BEVAL_COL,
  VV_BEVAL_TEXT,
  VV_SCROLLSTART,
  VV_SWAPNAME,
  VV_SWAPCHOICE,
  VV_SWAPCOMMAND,
  VV_CHAR,
  VV_MOUSE_WIN,
  VV_MOUSE_WINID,
  VV_MOUSE_LNUM,
  VV_MOUSE_COL,
  VV_OP,
  VV_SEARCHFORWARD,
  VV_HLSEARCH,
  VV_OLDFILES,
  VV_WINDOWID,
  VV_PROGPATH,
  VV_COMPLETED_ITEM,
  VV_OPTION_NEW,
  VV_OPTION_OLD,
  VV_OPTION_OLDLOCAL,
  VV_OPTION_OLDGLOBAL,
  VV_OPTION_COMMAND,
  VV_OPTION_TYPE,
  VV_ERRORS,
  VV_FALSE,
  VV_TRUE,
  VV_NULL,
  VV_NUMBERMAX,
  VV_NUMBERMIN,
  VV_NUMBERSIZE,
  VV_VIM_DID_ENTER,
  VV_TESTING,
  VV_TYPE_NUMBER,
  VV_TYPE_STRING,
  VV_TYPE_FUNC,
  VV_TYPE_LIST,
  VV_TYPE_DICT,
  VV_TYPE_FLOAT,
  VV_TYPE_BOOL,
  VV_TYPE_BLOB,
  VV_EVENT,
  VV_ECHOSPACE,
  VV_ARGV,
  VV_COLLATE,
  VV_EXITING,
  VV_MAXCOL,

  VV_STDERR,
  VV_MSGPACK_TYPES,
  VV__NULL_STRING,
  VV__NULL_LIST,
  VV__NULL_DICT,
  VV__NULL_BLOB,
  VV_LUA,
  VV_RELNUM,
  VV_VIRTNUM,
} VimVarIndex;


extern const list_T *eval_msgpack_type_lists[(kMPExt + 1)];


typedef struct {
  
# 187 "/home/ubuntu/neovim/src/nvim/eval.h" 3 4
 _Bool 
# 187 "/home/ubuntu/neovim/src/nvim/eval.h"
      sve_did_save;
  hashtab_T sve_hashtab;
} save_v_event_T;


typedef enum {
  TFN_INT = 1,
  TFN_QUIET = 2,
  TFN_NO_AUTOLOAD = 4,
  TFN_NO_DEREF = 8,
  TFN_READ_ONLY = 16,
} TransFunctionNameFlags;


typedef enum {
  GLV_QUIET = TFN_QUIET,
  GLV_NO_AUTOLOAD = TFN_NO_AUTOLOAD,
  GLV_READ_ONLY = TFN_READ_ONLY,

} GetLvalFlags;






typedef struct {
  TimeWatcher tw;
  int timer_id;
  int repeat_count;
  int refcount;
  int emsg_count;
  int64_t timeout;
  
# 220 "/home/ubuntu/neovim/src/nvim/eval.h" 3 4
 _Bool 
# 220 "/home/ubuntu/neovim/src/nvim/eval.h"
      stopped;
  
# 221 "/home/ubuntu/neovim/src/nvim/eval.h" 3 4
 _Bool 
# 221 "/home/ubuntu/neovim/src/nvim/eval.h"
      paused;
  Callback callback;
} timer_T;


typedef enum {
  EXPR_UNKNOWN = 0,
  EXPR_EQUAL,
  EXPR_NEQUAL,
  EXPR_GREATER,
  EXPR_GEQUAL,
  EXPR_SMALLER,
  EXPR_SEQUAL,
  EXPR_MATCH,
  EXPR_NOMATCH,
  EXPR_IS,
  EXPR_ISNOT,
} exprtype_T;


extern 
# 241 "/home/ubuntu/neovim/src/nvim/eval.h" 3 4
      _Bool 
# 241 "/home/ubuntu/neovim/src/nvim/eval.h"
           *eval_lavars_used;





enum {
  EVAL_EVALUATE = 1,
};


extern evalarg_T EVALARG_EVALUATE ;
# 62 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/gettext_defs.h" 1
       


# 1 "/usr/include/libintl.h" 1 3 4
# 34 "/usr/include/libintl.h" 3 4






# 39 "/usr/include/libintl.h" 3 4
extern char *gettext (const char *__msgid)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format_arg__ (1)));



extern char *dgettext (const char *__domainname, const char *__msgid)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format_arg__ (2)));
extern char *__dgettext (const char *__domainname, const char *__msgid)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format_arg__ (2)));



extern char *dcgettext (const char *__domainname,
   const char *__msgid, int __category)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format_arg__ (2)));
extern char *__dcgettext (const char *__domainname,
     const char *__msgid, int __category)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format_arg__ (2)));




extern char *ngettext (const char *__msgid1, const char *__msgid2,
         unsigned long int __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format_arg__ (1))) __attribute__ ((__format_arg__ (2)));



extern char *dngettext (const char *__domainname, const char *__msgid1,
   const char *__msgid2, unsigned long int __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3)));



extern char *dcngettext (const char *__domainname, const char *__msgid1,
    const char *__msgid2, unsigned long int __n,
    int __category)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3)));





extern char *textdomain (const char *__domainname) __attribute__ ((__nothrow__ , __leaf__));



extern char *bindtextdomain (const char *__domainname,
        const char *__dirname) __attribute__ ((__nothrow__ , __leaf__));



extern char *bind_textdomain_codeset (const char *__domainname,
          const char *__codeset) __attribute__ ((__nothrow__ , __leaf__));
# 121 "/usr/include/libintl.h" 3 4

# 5 "/home/ubuntu/neovim/src/nvim/gettext_defs.h" 2
# 63 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/keycodes.h" 1
       
# 97 "/home/ubuntu/neovim/src/nvim/keycodes.h"

# 97 "/home/ubuntu/neovim/src/nvim/keycodes.h"
enum key_extra {
  KE_S_UP = 4,
  KE_S_DOWN = 5,


  KE_S_F1 = 6,
  KE_S_F2 = 7,
  KE_S_F3 = 8,
  KE_S_F4 = 9,
  KE_S_F5 = 10,
  KE_S_F6 = 11,
  KE_S_F7 = 12,
  KE_S_F8 = 13,
  KE_S_F9 = 14,
  KE_S_F10 = 15,

  KE_S_F11 = 16,
  KE_S_F12 = 17,
  KE_S_F13 = 18,
  KE_S_F14 = 19,
  KE_S_F15 = 20,
  KE_S_F16 = 21,
  KE_S_F17 = 22,
  KE_S_F18 = 23,
  KE_S_F19 = 24,
  KE_S_F20 = 25,

  KE_S_F21 = 26,
  KE_S_F22 = 27,
  KE_S_F23 = 28,
  KE_S_F24 = 29,
  KE_S_F25 = 30,
  KE_S_F26 = 31,
  KE_S_F27 = 32,
  KE_S_F28 = 33,
  KE_S_F29 = 34,
  KE_S_F30 = 35,

  KE_S_F31 = 36,
  KE_S_F32 = 37,
  KE_S_F33 = 38,
  KE_S_F34 = 39,
  KE_S_F35 = 40,
  KE_S_F36 = 41,
  KE_S_F37 = 42,

  KE_MOUSE = 43,



  KE_LEFTMOUSE = 44,
  KE_LEFTDRAG = 45,
  KE_LEFTRELEASE = 46,
  KE_MIDDLEMOUSE = 47,
  KE_MIDDLEDRAG = 48,
  KE_MIDDLERELEASE = 49,
  KE_RIGHTMOUSE = 50,
  KE_RIGHTDRAG = 51,
  KE_RIGHTRELEASE = 52,

  KE_IGNORE = 53,

  KE_TAB = 54,
  KE_S_TAB_OLD = 55,


  KE_XF1 = 57,
  KE_XF2 = 58,
  KE_XF3 = 59,
  KE_XF4 = 60,
  KE_XEND = 61,
  KE_ZEND = 62,
  KE_XHOME = 63,
  KE_ZHOME = 64,
  KE_XUP = 65,
  KE_XDOWN = 66,
  KE_XLEFT = 67,
  KE_XRIGHT = 68,

  KE_LEFTMOUSE_NM = 69,
  KE_LEFTRELEASE_NM = 70,

  KE_S_XF1 = 71,
  KE_S_XF2 = 72,
  KE_S_XF3 = 73,
  KE_S_XF4 = 74,




  KE_MOUSEDOWN = 75,
  KE_MOUSEUP = 76,
  KE_MOUSELEFT = 77,
  KE_MOUSERIGHT = 78,

  KE_KINS = 79,
  KE_KDEL = 80,


  KE_SNR = 82,
  KE_PLUG = 83,
  KE_CMDWIN = 84,

  KE_C_LEFT = 85,
  KE_C_RIGHT = 86,
  KE_C_HOME = 87,
  KE_C_END = 88,

  KE_X1MOUSE = 89,
  KE_X1DRAG = 90,
  KE_X1RELEASE = 91,
  KE_X2MOUSE = 92,
  KE_X2DRAG = 93,
  KE_X2RELEASE = 94,

  KE_DROP = 95,

  KE_NOP = 97,


  KE_MOUSEMOVE = 100,

  KE_EVENT = 102,
  KE_LUA = 103,
  KE_COMMAND = 104,
};
# 476 "/home/ubuntu/neovim/src/nvim/keycodes.h"
enum {
  REPTERM_FROM_PART = 1,
  REPTERM_DO_LT = 2,
  REPTERM_NO_SPECIAL = 4,
  REPTERM_NO_SIMPLIFY = 8,
};


enum {
  FSK_KEYCODE = 0x01,
  FSK_KEEP_X_KEY = 0x02,
  FSK_IN_STRING = 0x04,
  FSK_SIMPLIFY = 0x08,
};
# 64 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 2

# 1 "/home/ubuntu/neovim/src/nvim/mbyte.h" 1
       
# 19 "/home/ubuntu/neovim/src/nvim/mbyte.h"
enum {
  kInvalidByteCells = 4,
};
# 30 "/home/ubuntu/neovim/src/nvim/mbyte.h"
extern const uint8_t utf8len_tab_zero[256];

extern const uint8_t utf8len_tab[256];
# 57 "/home/ubuntu/neovim/src/nvim/mbyte.h"
static inline 
# 57 "/home/ubuntu/neovim/src/nvim/mbyte.h" 3 4
             _Bool 
# 57 "/home/ubuntu/neovim/src/nvim/mbyte.h"
                  utf_is_trail_byte(uint8_t const byte)
  FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{

  return (uint8_t)(byte & 0xC0U) == 0x80U;
}
# 71 "/home/ubuntu/neovim/src/nvim/mbyte.h"
static inline CharInfo utf_ptr2CharInfo(char const *const p_in)
  FUNC_ATTR_NONNULL_ALL FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_ALWAYS_INLINE
{
  uint8_t const *const p = (uint8_t const *)p_in;
  uint8_t const first = *p;
  if (first < 0x80) {
    return (CharInfo){ .value = first, .len = 1 };
  } else {
    int len = utf8len_tab[first];
    int32_t const code_point = utf_ptr2CharInfo_impl(p, (uintptr_t)len);
    if (code_point < 0) {
      len = 1;
    }
    return (CharInfo){ .value = code_point, .len = len };
  }
}





static inline StrCharInfo utfc_next(StrCharInfo cur)
  FUNC_ATTR_NONNULL_ALL FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_PURE
{
  int32_t prev_code = cur.chr.value;
  uint8_t *next = (uint8_t *)(cur.ptr + cur.chr.len);

  while (
# 98 "/home/ubuntu/neovim/src/nvim/mbyte.h" 3 4
        1
# 98 "/home/ubuntu/neovim/src/nvim/mbyte.h"
            ) {
    if (__builtin_expect((*next < 0x80U), (
# 99 "/home/ubuntu/neovim/src/nvim/mbyte.h" 3 4
       1
# 99 "/home/ubuntu/neovim/src/nvim/mbyte.h"
       ))) {
      return (StrCharInfo){
        .ptr = (char *)next,
        .chr = (CharInfo){ .value = *next, .len = 1 },
      };
    }
    uint8_t const next_len = utf8len_tab[*next];
    int32_t const next_code = utf_ptr2CharInfo_impl(next, (uintptr_t)next_len);
    if (!utf_char_composinglike(prev_code, next_code)) {
      return (StrCharInfo){
        .ptr = (char *)next,
        .chr = (CharInfo){ .value = next_code, .len = (next_code < 0 ? 1 : next_len) },
      };
    }

    prev_code = next_code;
    next += next_len;
  }
}

static inline StrCharInfo utf_ptr2StrCharInfo(char *ptr)
  FUNC_ATTR_NONNULL_ALL FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_PURE
{
  return (StrCharInfo){ .ptr = ptr, .chr = utf_ptr2CharInfo(ptr) };
}
# 66 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 2


# 1 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h" 1
       


# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h" 2




# 1 "/home/ubuntu/neovim/src/nvim/viml/parser/parser_defs.h" 1
       

# 1 "/usr/include/assert.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/viml/parser/parser_defs.h" 2

# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 6 "/home/ubuntu/neovim/src/nvim/viml/parser/parser_defs.h" 2





typedef struct {
  const char *data;
  size_t size;
  
# 14 "/home/ubuntu/neovim/src/nvim/viml/parser/parser_defs.h" 3 4
 _Bool 
# 14 "/home/ubuntu/neovim/src/nvim/viml/parser/parser_defs.h"
      allocated;
} ParserLine;




typedef void (*ParserLineGetter)(void *cookie, ParserLine *ret_pline);


typedef struct {
  size_t line;
  size_t col;
} ParserPosition;


typedef struct {
  enum {
    kPTopStateParsingCommand = 0,
    kPTopStateParsingExpression,
  } type;
  union {
    struct {
      enum {
        kExprUnknown = 0,
      } type;
    } expr;
  } data;
} ParserStateItem;


typedef struct {

  ParserLineGetter get_line;

  void *cookie;

  struct { size_t size; size_t capacity; ParserLine *items; ParserLine init_array[4]; } lines;

  vimconv_T conv;
} ParserInputReader;




typedef struct {
  ParserPosition start;
  size_t end_col;
  const char *group;
} ParserHighlightChunk;


typedef struct { size_t size; size_t capacity; ParserHighlightChunk *items; ParserHighlightChunk init_array[16]; } ParserHighlight;


typedef struct {

  ParserInputReader reader;

  ParserPosition pos;

  struct { size_t size; size_t capacity; ParserStateItem *items; ParserStateItem init_array[16]; } stack;

  ParserHighlight *colors;

  
# 78 "/home/ubuntu/neovim/src/nvim/viml/parser/parser_defs.h" 3 4
 _Bool 
# 78 "/home/ubuntu/neovim/src/nvim/viml/parser/parser_defs.h"
      can_continuate;
} ParserState;
# 10 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h" 2





typedef enum {
  kCCStrategyUseOption = 0,
  kCCStrategyMatchCase = '#',
  kCCStrategyIgnoreCase = '?',
} ExprCaseCompareStrategy;


typedef enum {
  kExprLexInvalid = 0,
  kExprLexMissing,
  kExprLexSpacing,
  kExprLexEOC,

  kExprLexQuestion,
  kExprLexColon,
  kExprLexOr,
  kExprLexAnd,
  kExprLexComparison,
  kExprLexPlus,
  kExprLexMinus,
  kExprLexDot,
  kExprLexMultiplication,

  kExprLexNot,

  kExprLexNumber,
  kExprLexSingleQuotedString,
  kExprLexDoubleQuotedString,
  kExprLexOption,
  kExprLexRegister,
  kExprLexEnv,
  kExprLexPlainIdentifier,

  kExprLexBracket,
  kExprLexFigureBrace,
  kExprLexParenthesis,
  kExprLexComma,
  kExprLexArrow,
  kExprLexAssignment,


} LexExprTokenType;

typedef enum {
  kExprCmpEqual,
  kExprCmpMatches,
  kExprCmpGreater,
  kExprCmpGreaterOrEqual,
  kExprCmpIdentical,
} ExprComparisonType;


typedef enum {
  kExprOptScopeUnspecified = 0,
  kExprOptScopeGlobal = 'g',
  kExprOptScopeLocal = 'l',
} ExprOptScope;


typedef enum {
  kExprAsgnPlain = 0,
  kExprAsgnAdd,
  kExprAsgnSubtract,
  kExprAsgnConcat,
} ExprAssignmentType;





typedef enum {
  kExprVarScopeMissing = 0,
  kExprVarScopeScript = 's',
  kExprVarScopeGlobal = 'g',
  kExprVarScopeVim = 'v',
  kExprVarScopeBuffer = 'b',
  kExprVarScopeWindow = 'w',
  kExprVarScopeTabpage = 't',
  kExprVarScopeLocal = 'l',
  kExprVarScopeArguments = 'a',
} ExprVarScope;
# 105 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h"
typedef struct {
  ParserPosition start;
  size_t len;
  LexExprTokenType type;
  union {
    struct {
      ExprComparisonType type;
      ExprCaseCompareStrategy ccs;
      
# 113 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h" 3 4
     _Bool 
# 113 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h"
          inv;
    } cmp;

    struct {
      enum {
        kExprLexMulMul,
        kExprLexMulDiv,
        kExprLexMulMod,
      } type;
    } mul;

    struct {
      
# 125 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h" 3 4
     _Bool 
# 125 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h"
          closing;
    } brc;

    struct {
      int name;
    } reg;

    struct {
      
# 133 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h" 3 4
     _Bool 
# 133 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h"
          closed;
    } str;

    struct {
      const char *name;
      size_t len;
      ExprOptScope scope;
    } opt;

    struct {
      ExprVarScope scope;
      
# 144 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h" 3 4
     _Bool 
# 144 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h"
          autoload;
    } var;

    struct {
      LexExprTokenType type;
      const char *msg;
    } err;

    struct {
      union {
        float_T floating;
        uvarnumber_T integer;
      } val;
      uint8_t base;
      
# 158 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h" 3 4
     _Bool 
# 158 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h"
          is_float;
    } num;

    struct {
      ExprAssignmentType type;
    } ass;
  } data;
} LexExprToken;

typedef enum {

  kELFlagPeek = (1 << 0),

  kELFlagForbidScope = (1 << 1),




  kELFlagAllowFloat = (1 << 2),



  kELFlagIsNotCmp = (1 << 3),





  kELFlagForbidEOC = (1 << 4),


} LexExprFlags;


typedef enum {
  kExprNodeMissing = 0,
  kExprNodeOpMissing,
  kExprNodeTernary,
  kExprNodeTernaryValue,
  kExprNodeRegister,
  kExprNodeSubscript,
  kExprNodeListLiteral,
  kExprNodeUnaryPlus,
  kExprNodeBinaryPlus,
  kExprNodeNested,
  kExprNodeCall,




  kExprNodePlainIdentifier,

  kExprNodePlainKey,

  kExprNodeComplexIdentifier,




  kExprNodeUnknownFigure,
  kExprNodeLambda,
  kExprNodeDictLiteral,
  kExprNodeCurlyBracesIdentifier,
  kExprNodeComma,
  kExprNodeColon,
  kExprNodeArrow,
  kExprNodeComparison,



  kExprNodeConcat,






  kExprNodeConcatOrSubscript,
  kExprNodeInteger,
  kExprNodeFloat,
  kExprNodeSingleQuotedString,
  kExprNodeDoubleQuotedString,
  kExprNodeOr,
  kExprNodeAnd,
  kExprNodeUnaryMinus,
  kExprNodeBinaryMinus,
  kExprNodeNot,
  kExprNodeMultiplication,
  kExprNodeDivision,
  kExprNodeMod,
  kExprNodeOption,
  kExprNodeEnvironment,
  kExprNodeAssignment,



} ExprASTNodeType;

typedef struct expr_ast_node ExprASTNode;


struct expr_ast_node {
  ExprASTNodeType type;

  ExprASTNode *children;



  ExprASTNode *next;
  ParserPosition start;
  size_t len;
  union {
    struct {
      int name;
    } reg;
    struct {

      struct {

        
# 277 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h" 3 4
       _Bool 
# 277 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h"
            allow_dict;

        
# 279 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h" 3 4
       _Bool 
# 279 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h"
            allow_lambda;

        
# 281 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h" 3 4
       _Bool 
# 281 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h"
            allow_ident;
      } type_guesses;

      size_t opening_hl_idx;
    } fig;
    struct {
      ExprVarScope scope;



      const char *ident;
      size_t ident_len;
    } var;
    struct {
      
# 295 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h" 3 4
     _Bool 
# 295 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h"
          got_colon;
    } ter;
    struct {
      ExprComparisonType type;
      ExprCaseCompareStrategy ccs;
      
# 300 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h" 3 4
     _Bool 
# 300 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.h"
          inv;
    } cmp;
    struct {
      uvarnumber_T value;
    } num;
    struct {
      float_T value;
    } flt;
    struct {
      char *value;
      size_t size;
    } str;

    struct {
      const char *ident;
      size_t ident_len;
      ExprOptScope scope;
    } opt;
    struct {
      const char *ident;
      size_t ident_len;
    } env;
    struct {
      ExprAssignmentType type;
    } ass;
  } data;
};

enum ExprParserFlags {



  kExprFlagsMulti = (1 << 0),




  kExprFlagsDisallowEOC = (1 << 1),




  kExprFlagsParseLet = (1 << 2),




};


typedef struct {

  const char *msg;

  const char *arg;

  int arg_len;
} ExprASTError;


typedef struct {



  ExprASTError err;

  ExprASTNode *root;
} ExprAST;


extern const uint8_t node_maxchildren[];


extern const char *const east_node_type_tab[];


extern const char *const eltkn_cmp_type_tab[];


extern const char *const ccs_tab[];


extern const char *const expr_asgn_type_tab[];
# 69 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h" 1
       

# 1 "/usr/include/assert.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h" 2

# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 6 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h" 2
# 23 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h"
static inline void viml_parser_init(ParserState *const ret_pstate, const ParserLineGetter get_line,
                                    void *const cookie, ParserHighlight *const colors)
  FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_NONNULL_ARG(1, 2)
{
  *ret_pstate = (ParserState) {
    .reader = {
      .get_line = get_line,
      .cookie = cookie,
      .conv = { .vc_type = CONV_NONE, .vc_factor = 1, .vc_fail = 
# 31 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h" 3 4
             0
# 31 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h"
             , },
    },
    .pos = { 0, 0 },
    .colors = colors,
    .can_continuate = 
# 35 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h" 3 4
                     0
# 35 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h"
                          ,
  };
  ((ret_pstate->reader.lines).capacity = ((sizeof((ret_pstate->reader.lines).init_array)/sizeof(((ret_pstate->reader.lines).init_array)[0])) / ((size_t)(!(sizeof((ret_pstate->reader.lines).init_array) % sizeof(((ret_pstate->reader.lines).init_array)[0]))))), (ret_pstate->reader.lines).size = 0, (ret_pstate->reader.lines).items = (ret_pstate->reader.lines).init_array);
  ((ret_pstate->stack).capacity = ((sizeof((ret_pstate->stack).init_array)/sizeof(((ret_pstate->stack).init_array)[0])) / ((size_t)(!(sizeof((ret_pstate->stack).init_array) % sizeof(((ret_pstate->stack).init_array)[0]))))), (ret_pstate->stack).size = 0, (ret_pstate->stack).items = (ret_pstate->stack).init_array);
}







static inline void viml_parser_advance(ParserState *const pstate, const size_t len)
  FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_NONNULL_ALL
{
  
# 50 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h" 3 4
 ((void) sizeof ((
# 50 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h"
 pstate->pos.line == ((pstate->reader.lines).size) - 1
# 50 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h" 3 4
 ) ? 1 : 0), __extension__ ({ if (
# 50 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h"
 pstate->pos.line == ((pstate->reader.lines).size) - 1
# 50 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h" 3 4
 ) ; else __assert_fail (
# 50 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h"
 "pstate->pos.line == kv_size(pstate->reader.lines) - 1"
# 50 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h" 3 4
 , "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h", 50, __extension__ __PRETTY_FUNCTION__); }))
# 50 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h"
                                                              ;
  const ParserLine pline = ((pstate->reader.lines).items[(((pstate->reader.lines).size) - (0) - 1)]);
  if (pstate->pos.col + len >= pline.size) {
    pstate->pos.line++;
    pstate->pos.col = 0;
  } else {
    pstate->pos.col += len;
  }
}







static inline void viml_parser_highlight(ParserState *const pstate, const ParserPosition start,
                                         const size_t len, const char *const group)
  FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_NONNULL_ALL
{
  if (pstate->colors == 
# 70 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h" 3 4
                       ((void *)0) 
# 70 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h"
                            || len == 0) {
    return;
  }
  
# 73 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h" 3 4
 ((void) sizeof ((
# 73 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h"
 ((*pstate->colors).size) == 0 || ((*pstate->colors).items[(((*pstate->colors).size) - (0) - 1)]).start.line < start.line || ((*pstate->colors).items[(((*pstate->colors).size) - (0) - 1)]).end_col <= start.col
# 73 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h" 3 4
 ) ? 1 : 0), __extension__ ({ if (
# 73 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h"
 ((*pstate->colors).size) == 0 || ((*pstate->colors).items[(((*pstate->colors).size) - (0) - 1)]).start.line < start.line || ((*pstate->colors).items[(((*pstate->colors).size) - (0) - 1)]).end_col <= start.col
# 73 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h" 3 4
 ) ; else __assert_fail (
# 73 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h"
 "kv_size(*pstate->colors) == 0 || kv_Z(*pstate->colors, 0).start.line < start.line || kv_Z(*pstate->colors, 0).end_col <= start.col"
# 73 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h" 3 4
 , "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h", 73, __extension__ __PRETTY_FUNCTION__); }))

                                                          
# 75 "/home/ubuntu/neovim/src/nvim/viml/parser/parser.h"
                                                         ;
  (*((((*pstate->colors).size == (*pstate->colors).capacity) ? (((*pstate->colors).capacity = (((*pstate->colors).capacity << 1) > ((sizeof((*pstate->colors).init_array)/sizeof(((*pstate->colors).init_array)[0])) / ((size_t)(!(sizeof((*pstate->colors).init_array) % sizeof(((*pstate->colors).init_array)[0]))))) ? ((*pstate->colors).capacity << 1) : ((sizeof((*pstate->colors).init_array)/sizeof(((*pstate->colors).init_array)[0])) / ((size_t)(!(sizeof((*pstate->colors).init_array) % sizeof(((*pstate->colors).init_array)[0])))))), (*pstate->colors).items = ((*pstate->colors).capacity == ((sizeof((*pstate->colors).init_array)/sizeof(((*pstate->colors).init_array)[0])) / ((size_t)(!(sizeof((*pstate->colors).init_array) % sizeof(((*pstate->colors).init_array)[0]))))) ? ((*pstate->colors).items == (*pstate->colors).init_array ? (*pstate->colors).items : _memcpy_free((*pstate->colors).init_array, (*pstate->colors).items, (*pstate->colors).size * sizeof((*pstate->colors).items[0]))) : ((*pstate->colors).items == (*pstate->colors).init_array ? memcpy(xmalloc((*pstate->colors).capacity * sizeof((*pstate->colors).items[0])), (*pstate->colors).items, (*pstate->colors).size * sizeof((*pstate->colors).items[0])) : xrealloc((*pstate->colors).items, (*pstate->colors).capacity * sizeof((*pstate->colors).items[0]))))), 0) : 0), ((*pstate->colors).items + ((*pstate->colors).size++))) = (((ParserHighlightChunk) { .start = start, .end_col = start.col + len, .group = group, })))



     ;
}
# 70 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 2

typedef struct { size_t size; size_t capacity; ExprASTNode ** *items; ExprASTNode ** init_array[16]; } ExprASTStack;


typedef enum {



  kENodeOperator,




  kENodeValue,
} ExprASTWantedNode;


typedef enum {

  kEPTExpr = 0,




  kEPTLambdaArguments,

  kEPTAssignment,

  kEPTSingleAssignment,
} ExprASTParseType;

typedef struct { size_t size; size_t capacity; ExprASTParseType *items; ExprASTParseType init_array[4]; } ExprASTParseTypeStack;


typedef enum {
  kEOpLvlInvalid = 0,
  kEOpLvlComplexIdentifier,
  kEOpLvlParens,
  kEOpLvlAssignment,
  kEOpLvlArrow,
  kEOpLvlComma,
  kEOpLvlColon,
  kEOpLvlTernaryValue,
  kEOpLvlTernary,
  kEOpLvlOr,
  kEOpLvlAnd,
  kEOpLvlComparison,
  kEOpLvlAddition,
  kEOpLvlMultiplication,
  kEOpLvlUnary,
  kEOpLvlSubscript,
  kEOpLvlValue,
} ExprOpLvl;


typedef enum {
  kEOpAssNo= 'n',
  kEOpAssLeft = 'l',
  kEOpAssRight = 'r',
} ExprOpAssociativity;
# 145 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
static inline float_T scale_number(const float_T num, const uint8_t base,
                                   const uvarnumber_T exponent, const 
# 146 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                                     _Bool 
# 146 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                                          exponent_negative)
  FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_CONST
{
  if (num == 0 || exponent == 0) {
    return num;
  }
  
# 152 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 ((void) sizeof ((
# 152 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
 base
# 152 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 ) ? 1 : 0), __extension__ ({ if (
# 152 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
 base
# 152 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 ) ; else __assert_fail (
# 152 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
 "base"
# 152 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 152, __extension__ __PRETTY_FUNCTION__); }))
# 152 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
             ;
  uvarnumber_T exp = exponent;
  float_T p_base = (float_T)base;
  float_T ret = num;
  while (exp) {
    if (exp & 1) {
      if (exponent_negative) {
        ret /= p_base;
      } else {
        ret *= p_base;
      }
    }
    exp >>= 1;
    p_base *= p_base;
  }
  return ret;
}







LexExprToken viml_pexpr_next_token(ParserState *const pstate, const int flags)
  FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL
{
  LexExprToken ret = {
    .type = kExprLexInvalid,
    .start = pstate->pos,
  };
  ParserLine pline;
  if (!viml_parser_get_remaining_line(pstate, &pline)) {
    ret.type = kExprLexEOC;
    return ret;
  }
  if (pline.size <= 0) {
    ret.len = 0;
    ret.type = kExprLexEOC;
    goto viml_pexpr_next_token_adv_return;
  }
  ret.len = 1;
  const uint8_t schar = (uint8_t)pline.data[0];
# 206 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
  switch (schar) {
# 215 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
  case '(': case ')': { ret.type = kExprLexParenthesis; ret.data.brc.closing = (schar == ')'); break; }
  case '[': case ']': { ret.type = kExprLexBracket; ret.data.brc.closing = (schar == ']'); break; }
  case '{': case '}': { ret.type = kExprLexFigureBrace; ret.data.brc.closing = (schar == '}'); break; }
# 226 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
  case '?': { ret.type = kExprLexQuestion; break; }
  case ':': { ret.type = kExprLexColon; break; }
  case ',': { ret.type = kExprLexComma; break; }
# 238 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
  case '*': { ret.type = kExprLexMultiplication; ret.data.mul.type = kExprLexMulMul; break; }
  case '/': { ret.type = kExprLexMultiplication; ret.data.mul.type = kExprLexMulDiv; break; }
  case '%': { ret.type = kExprLexMultiplication; ret.data.mul.type = kExprLexMulMod; break; }
# 253 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
  case ' ':
  case '\011':
    do { ret.type = kExprLexSpacing; for (; (ret.len < pline.size && ascii_iswhite(pline.data[ret.len])) ; ret.len++) { } } while (0);
    break;


  case 1:
  case 2:
  case 3:
  case 4:
  case 5:
  case 6:
  case 7:
  case 8:

  case 11:
  case 12:
  case 13:
  case 14:
  case 15:
  case 16:
  case 17:
  case 18:
  case 19:
  case 20:
  case 21:
  case 22:
  case 23:
  case 24:
  case 25:
  case 26:

    do { ret.type = kExprLexInvalid; for (; (ret.len < pline.size && (pline.data[ret.len] < ' ')) ; ret.len++) { } } while (0);
    ret.data.err.type = kExprLexSpacing;
    ret.data.err.msg =
      gettext("E15: Invalid control character present in input: %.*s");
    break;



  case '0':
  case '1':
  case '2':
  case '3':
  case '4':
  case '5':
  case '6':
  case '7':
  case '8':
  case '9': {
    ret.data.num.is_float = 
# 303 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                           0
# 303 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                ;
    ret.data.num.base = 10;
    size_t frac_start = 0;
    size_t exp_start = 0;
    size_t frac_end = 0;
    
# 308 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   _Bool 
# 308 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
        exp_negative = 
# 308 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                       0
# 308 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                            ;
    do { ret.type = kExprLexNumber; for (; (ret.len < pline.size && ascii_isdigit(pline.data[ret.len])) ; ret.len++) { } } while (0);
    if (flags & kELFlagAllowFloat) {
      const LexExprToken non_float_ret = ret;
      if (pline.size > ret.len + 1
          && pline.data[ret.len] == '.'
          && ascii_isdigit(pline.data[ret.len + 1])) {
        ret.len++;
        frac_start = ret.len;
        frac_end = ret.len;
        ret.data.num.is_float = 
# 318 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                               1
# 318 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                   ;
        for (; ret.len < pline.size && ascii_isdigit(pline.data[ret.len])
             ; ret.len++) {



          if (pline.data[ret.len] != '0') {
            frac_end = ret.len + 1;
          }
        }
        if (pline.size > ret.len + 1
            && (pline.data[ret.len] == 'e'
                || pline.data[ret.len] == 'E')
            && ((pline.size > ret.len + 2
                 && (pline.data[ret.len + 1] == '+'
                     || pline.data[ret.len + 1] == '-')
                 && ascii_isdigit(pline.data[ret.len + 2]))
                || ascii_isdigit(pline.data[ret.len + 1]))) {
          ret.len++;
          if (pline.data[ret.len] == '+'
              || (exp_negative = (pline.data[ret.len] == '-'))) {
            ret.len++;
          }
          exp_start = ret.len;
          do { ret.type = kExprLexNumber; for (; (ret.len < pline.size && ascii_isdigit(pline.data[ret.len])) ; ret.len++) { } } while (0);
        }
      }
      if (pline.size > ret.len
          && (pline.data[ret.len] == '.'
              || (((unsigned)(pline.data[ret.len]) >= 'A' && (unsigned)(pline.data[ret.len]) <= 'Z') || ((unsigned)(pline.data[ret.len]) >= 'a' && (unsigned)(pline.data[ret.len]) <= 'z')))) {
        ret = non_float_ret;
      }
    }

    if (ret.data.num.is_float) {
# 364 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
      float_T significand_part = 0;
      uvarnumber_T exp_part = 0;
      const size_t frac_size = frac_end - frac_start;
      for (size_t i = 0; i < frac_end; i++) {
        if (i == frac_start - 1) {
          continue;
        }
        significand_part = significand_part * 10 + (pline.data[i] - '0');
      }
      if (exp_start) {
        vim_str2nr(pline.data + exp_start, 
# 374 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                          ((void *)0)
# 374 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                              , 
# 374 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                ((void *)0)
# 374 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                    , 0, 
# 374 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                         ((void *)0)
# 374 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                             , &exp_part,
                   (int)(ret.len - exp_start), 
# 375 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                              0
# 375 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                   , 
# 375 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                     ((void *)0)
# 375 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                         );
      }
      if (exp_negative) {
        exp_part += frac_size;
      } else {
        if (exp_part < frac_size) {
          exp_negative = 
# 381 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                        1
# 381 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                            ;
          exp_part = frac_size - exp_part;
        } else {
          exp_part -= frac_size;
        }
      }
      ret.data.num.val.floating = scale_number(significand_part, 10, exp_part,
                                               exp_negative);
    } else {
      int len;
      int prep;
      vim_str2nr(pline.data, &prep, &len, STR2NR_ALL, 
# 392 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                     ((void *)0)
# 392 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                         ,
                 &ret.data.num.val.integer, (int)pline.size, 
# 393 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                            0
# 393 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                                 , 
# 393 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                                   ((void *)0)
# 393 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                                       );
      ret.len = (size_t)len;
      const uint8_t bases[] = {
        [0] = 10,
        ['0'] = 8,
        ['x'] = 16, ['X'] = 16,
        ['b'] = 2, ['B'] = 2,
      };
      ret.data.num.base = bases[prep];
    }
    break;
  }





  case '$':
    do { ret.type = kExprLexEnv; for (; (ret.len < pline.size && ascii_isident(pline.data[ret.len])) ; ret.len++) { } } while (0);
    break;


  case 'a':
  case 'b':
  case 'c':
  case 'd':
  case 'e':
  case 'f':
  case 'g':
  case 'h':
  case 'i':
  case 'j':
  case 'k':
  case 'l':
  case 'm':
  case 'n':
  case 'o':
  case 'p':
  case 'q':
  case 'r':
  case 's':
  case 't':
  case 'u':
  case 'v':
  case 'w':
  case 'x':
  case 'y':
  case 'z':
  case 'A':
  case 'B':
  case 'C':
  case 'D':
  case 'E':
  case 'F':
  case 'G':
  case 'H':
  case 'I':
  case 'J':
  case 'K':
  case 'L':
  case 'M':
  case 'N':
  case 'O':
  case 'P':
  case 'Q':
  case 'R':
  case 'S':
  case 'T':
  case 'U':
  case 'V':
  case 'W':
  case 'X':
  case 'Y':
  case 'Z':
  case '_':
    ret.data.var.scope = 0;
    ret.data.var.autoload = 
# 469 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                           0
# 469 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                ;
    do { ret.type = kExprLexPlainIdentifier; for (; (ret.len < pline.size && ascii_isident(pline.data[ret.len])) ; ret.len++) { } } while (0);

    if (!(flags & kELFlagIsNotCmp)
        && ((ret.len == 2 && memcmp(pline.data, "is", 2) == 0)
            || (ret.len == 5 && memcmp(pline.data, "isnot", 5) == 0))) {
      ret.type = kExprLexComparison;
      ret.data.cmp.type = kExprCmpIdentical;
      ret.data.cmp.inv = (ret.len == 5);
      do { if (ret.len < pline.size && strchr("?#", pline.data[ret.len]) != 
# 478 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0)
# 478 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ) { ret.data.cmp.ccs = (ExprCaseCompareStrategy)pline.data[ret.len]; ret.len++; } else { ret.data.cmp.ccs = kCCStrategyUseOption; } } while (0);

    } else if (ret.len == 1
               && pline.size > 1
               && memchr(((char[]) { kExprVarScopeScript, kExprVarScopeGlobal, kExprVarScopeVim, kExprVarScopeBuffer, kExprVarScopeWindow, kExprVarScopeTabpage, kExprVarScopeLocal, kExprVarScopeBuffer, kExprVarScopeArguments, }), schar,
                         sizeof(((char[]) { kExprVarScopeScript, kExprVarScopeGlobal, kExprVarScopeVim, kExprVarScopeBuffer, kExprVarScopeWindow, kExprVarScopeTabpage, kExprVarScopeLocal, kExprVarScopeBuffer, kExprVarScopeArguments, }))) != 
# 483 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                        ((void *)0)
               
# 484 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
              && pline.data[ret.len] == ':'
               && !(flags & kELFlagForbidScope)) {
      ret.len++;
      ret.data.var.scope = (ExprVarScope)schar;
      do { ret.type = kExprLexPlainIdentifier; for (; (ret.len < pline.size && (ascii_isident(pline.data[ret.len]) || (pline.data[ret.len]) == '#')) ; ret.len++) { } } while (0);
      ret.data.var.autoload = (
                               memchr(pline.data + 2, '#', ret.len - 2)
                               != 
# 491 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                 ((void *)0)
# 491 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                     );







    } else if (pline.size > ret.len
               && pline.data[ret.len] == '#') {
      ret.data.var.autoload = 
# 501 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                             1
# 501 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                 ;
      do { ret.type = kExprLexPlainIdentifier; for (; (ret.len < pline.size && (ascii_isident(pline.data[ret.len]) || (pline.data[ret.len]) == '#')) ; ret.len++) { } } while (0);
    }
    break;





  case '&': {






    if (pline.size > 1 && pline.data[1] == '&') {
      ret.type = kExprLexAnd;
      ret.len++;
      break;
    }
    if (pline.size == 1 || !(((unsigned)(pline.data[1]) >= 'A' && (unsigned)(pline.data[1]) <= 'Z') || ((unsigned)(pline.data[1]) >= 'a' && (unsigned)(pline.data[1]) <= 'z'))) {
      do { ret.type = kExprLexInvalid; ret.data.err.type = kExprLexOption; ret.data.err.msg = gettext("E112: Option name missing: %.*s"); } while (0);
      break;
    }
    ret.type = kExprLexOption;
    if (pline.size > 2
        && pline.data[2] == ':'
        && memchr(((char[]){ kExprOptScopeGlobal, kExprOptScopeLocal }), pline.data[1],
                  sizeof(((char[]){ kExprOptScopeGlobal, kExprOptScopeLocal }))) != 
# 530 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                 ((void *)0)
# 530 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                     ) {
      ret.len += 2;
      ret.data.opt.scope = (ExprOptScope)pline.data[1];
      ret.data.opt.name = pline.data + 3;
    } else {
      ret.data.opt.scope = kExprOptScopeUnspecified;
      ret.data.opt.name = pline.data + 1;
    }
    const char *p = ret.data.opt.name;
    const char *const e = pline.data + pline.size;
    if (e - p >= 4 && p[0] == 't' && p[1] == '_') {
      ret.data.opt.len = 4;
      ret.len += 4;
    } else {
      for (; p < e && (((unsigned)(*p) >= 'A' && (unsigned)(*p) <= 'Z') || ((unsigned)(*p) >= 'a' && (unsigned)(*p) <= 'z')); p++) {}
      ret.data.opt.len = (size_t)(p - ret.data.opt.name);
      if (ret.data.opt.len == 0) {
        do { ret.type = kExprLexInvalid; ret.data.err.type = kExprLexOption; ret.data.err.msg = gettext("E112: Option name missing: %.*s"); } while (0);
      } else {
        ret.len += ret.data.opt.len;
      }
    }
    break;

  }


  case '@':
    ret.type = kExprLexRegister;
    if (pline.size > 1) {
      ret.len++;
      ret.data.reg.name = (uint8_t)pline.data[1];
    } else {
      ret.data.reg.name = -1;
    }
    break;


  case '\'':
    ret.type = kExprLexSingleQuotedString;
    ret.data.str.closed = 
# 570 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                         0
# 570 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                              ;
    for (; ret.len < pline.size && !ret.data.str.closed; ret.len++) {
      if (pline.data[ret.len] == '\'') {
        if (ret.len + 1 < pline.size && pline.data[ret.len + 1] == '\'') {
          ret.len++;
        } else {
          ret.data.str.closed = 
# 576 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                               1
# 576 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                   ;
        }
      }
    }
    break;


  case '"':
    ret.type = kExprLexDoubleQuotedString;
    ret.data.str.closed = 
# 585 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                         0
# 585 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                              ;
    for (; ret.len < pline.size && !ret.data.str.closed; ret.len++) {
      if (pline.data[ret.len] == '\\') {
        if (ret.len + 1 < pline.size) {
          ret.len++;
        }
      } else if (pline.data[ret.len] == '"') {
        ret.data.str.closed = 
# 592 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                             1
# 592 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                 ;
      }
    }
    break;


  case '!':
  case '=':
    if (pline.size == 1) {
      ret.type = (schar == '!' ? kExprLexNot : kExprLexAssignment);
      ret.data.ass.type = kExprAsgnPlain;
      break;
    }
    ret.type = kExprLexComparison;
    ret.data.cmp.inv = (schar == '!');
    if (pline.data[1] == '=') {
      ret.data.cmp.type = kExprCmpEqual;
      ret.len++;
    } else if (pline.data[1] == '~') {
      ret.data.cmp.type = kExprCmpMatches;
      ret.len++;
    } else if (schar == '!') {
      ret.type = kExprLexNot;
    } else {
      ret.type = kExprLexAssignment;
      ret.data.ass.type = kExprAsgnPlain;
    }
    do { if (ret.len < pline.size && strchr("?#", pline.data[ret.len]) != 
# 619 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void *)0)
# 619 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   ) { ret.data.cmp.ccs = (ExprCaseCompareStrategy)pline.data[ret.len]; ret.len++; } else { ret.data.cmp.ccs = kCCStrategyUseOption; } } while (0);
    break;


  case '>':
  case '<': {
    ret.type = kExprLexComparison;
    const 
# 626 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         _Bool 
# 626 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
              haseqsign = (pline.size > 1 && pline.data[1] == '=');
    if (haseqsign) {
      ret.len++;
    }
    do { if (ret.len < pline.size && strchr("?#", pline.data[ret.len]) != 
# 630 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void *)0)
# 630 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   ) { ret.data.cmp.ccs = (ExprCaseCompareStrategy)pline.data[ret.len]; ret.len++; } else { ret.data.cmp.ccs = kCCStrategyUseOption; } } while (0);
    ret.data.cmp.inv = (schar == '<');
    ret.data.cmp.type = ((ret.data.cmp.inv ^ haseqsign)
                         ? kExprCmpGreaterOrEqual
                         : kExprCmpGreater);
    break;
  }


  case '-': {
    if (pline.size > 1 && pline.data[1] == '>') {
      ret.len++;
      ret.type = kExprLexArrow;
    } else if (pline.size > 1 && pline.data[1] == '=') {
      ret.len++;
      ret.type = kExprLexAssignment;
      ret.data.ass.type = kExprAsgnSubtract;
    } else {
      ret.type = kExprLexMinus;
    }
    break;
  }
# 665 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
    case '+': { if (pline.size > 1 && pline.data[1] == '=') { ret.len++; ret.type = kExprLexAssignment; ret.data.ass.type = kExprAsgnAdd; } else { ret.type = kExprLexPlus; } break; }
    case '.': { if (pline.size > 1 && pline.data[1] == '=') { ret.len++; ret.type = kExprLexAssignment; ret.data.ass.type = kExprAsgnConcat; } else { ret.type = kExprLexDot; } break; }



  case '\000':
  case '\012':
    if (flags & kELFlagForbidEOC) {
      ret.type = kExprLexInvalid;
      ret.data.err.msg = gettext("E15: Unexpected EOC character: %.*s");
      ret.data.err.type = kExprLexSpacing;
    } else {
      ret.type = kExprLexEOC;
    }
    break;

  case '|':
    if (pline.size >= 2 && pline.data[ret.len] == '|') {

      ret.len++;
      ret.type = kExprLexOr;
    } else if (flags & kELFlagForbidEOC) {


      ret.type = kExprLexInvalid;
      ret.data.err.msg = gettext("E15: Unexpected EOC character: %.*s");
      ret.data.err.type = kExprLexOr;
    } else {
      ret.type = kExprLexEOC;
    }
    break;


  default:
    ret.len = (size_t)utfc_ptr2len_len(pline.data, (int)pline.size);
    ret.type = kExprLexInvalid;
    ret.data.err.type = kExprLexPlainIdentifier;
    ret.data.err.msg = gettext("E15: Unidentified character: %.*s");
    break;
  }

viml_pexpr_next_token_adv_return:
  if (!(flags & kELFlagPeek)) {
    viml_parser_advance(pstate, ret.len);
  }
  return ret;
}

static const char *const eltkn_type_tab[] = {
  [kExprLexInvalid] = "Invalid",
  [kExprLexMissing] = "Missing",
  [kExprLexSpacing] = "Spacing",
  [kExprLexEOC] = "EOC",

  [kExprLexQuestion] = "Question",
  [kExprLexColon] = "Colon",
  [kExprLexOr] = "Or",
  [kExprLexAnd] = "And",
  [kExprLexComparison] = "Comparison",
  [kExprLexPlus] = "Plus",
  [kExprLexMinus] = "Minus",
  [kExprLexDot] = "Dot",
  [kExprLexMultiplication] = "Multiplication",

  [kExprLexNot] = "Not",

  [kExprLexNumber] = "Number",
  [kExprLexSingleQuotedString] = "SingleQuotedString",
  [kExprLexDoubleQuotedString] = "DoubleQuotedString",
  [kExprLexOption] = "Option",
  [kExprLexRegister] = "Register",
  [kExprLexEnv] = "Env",
  [kExprLexPlainIdentifier] = "PlainIdentifier",

  [kExprLexBracket] = "Bracket",
  [kExprLexFigureBrace] = "FigureBrace",
  [kExprLexParenthesis] = "Parenthesis",
  [kExprLexComma] = "Comma",
  [kExprLexArrow] = "Arrow",
  [kExprLexAssignment] = "Assignment",
};

const char *const eltkn_cmp_type_tab[] = {
  [kExprCmpEqual] = "Equal",
  [kExprCmpMatches] = "Matches",
  [kExprCmpGreater] = "Greater",
  [kExprCmpGreaterOrEqual] = "GreaterOrEqual",
  [kExprCmpIdentical] = "Identical",
};

const char *const expr_asgn_type_tab[] = {
  [kExprAsgnPlain] = "Plain",
  [kExprAsgnAdd] = "Add",
  [kExprAsgnSubtract] = "Subtract",
  [kExprAsgnConcat] = "Concat",
};

const char *const ccs_tab[] = {
  [kCCStrategyUseOption] = "UseOption",
  [kCCStrategyMatchCase] = "MatchCase",
  [kCCStrategyIgnoreCase] = "IgnoreCase",
};

static const char *const eltkn_mul_type_tab[] = {
  [kExprLexMulMul] = "Mul",
  [kExprLexMulDiv] = "Div",
  [kExprLexMulMod] = "Mod",
};

static const char *const eltkn_opt_scope_tab[] = {
  [kExprOptScopeUnspecified] = "Unspecified",
  [kExprOptScopeGlobal] = "Global",
  [kExprOptScopeLocal] = "Local",
};
# 794 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
const char *viml_pexpr_repr_token(const ParserState *const pstate, const LexExprToken token,
                                  size_t *const ret_size)
  FUNC_ATTR_WARN_UNUSED_RESULT
{
  static char ret[1024];
  char *p = ret;
  const char *const e = &ret[1024] - 1;







  do { p += snprintf(p, (size_t)(sizeof(ret) - (size_t)(p - ret)), "%zu:%zu:%s", token.start.line, token.start.col, eltkn_type_tab[token.type]); if (p >= e) { goto viml_pexpr_repr_token_end; } } while (0)
                                    ;
  switch (token.type) {





  case kExprLexComparison: { do { p += snprintf(p, (size_t)(sizeof(ret) - (size_t)(p - ret)), "(type=%s,ccs=%s,inv=%i)", eltkn_cmp_type_tab[token.data.cmp.type], ccs_tab[token.data.cmp.ccs], (int)token.data.cmp.inv); if (p >= e) { goto viml_pexpr_repr_token_end; } } while (0); break; }



  case kExprLexMultiplication: { do { p += snprintf(p, (size_t)(sizeof(ret) - (size_t)(p - ret)), "(type=%s)", eltkn_mul_type_tab[token.data.mul.type]); if (p >= e) { goto viml_pexpr_repr_token_end; } } while (0); break; }

  case kExprLexAssignment: { do { p += snprintf(p, (size_t)(sizeof(ret) - (size_t)(p - ret)), "(type=%s)", expr_asgn_type_tab[token.data.ass.type]); if (p >= e) { goto viml_pexpr_repr_token_end; } } while (0); break; }

  case kExprLexRegister: { do { p += snprintf(p, (size_t)(sizeof(ret) - (size_t)(p - ret)), "(name=%s)", intchar2str(token.data.reg.name)); if (p >= e) { goto viml_pexpr_repr_token_end; } } while (0); break; }
  case kExprLexDoubleQuotedString:
    case kExprLexSingleQuotedString: { do { p += snprintf(p, (size_t)(sizeof(ret) - (size_t)(p - ret)), "(closed=%i)", (int)token.data.str.closed); if (p >= e) { goto viml_pexpr_repr_token_end; } } while (0); break; }

    case kExprLexOption: { do { p += snprintf(p, (size_t)(sizeof(ret) - (size_t)(p - ret)), "(scope=%s,name=%.*s)", eltkn_opt_scope_tab[token.data.opt.scope], (int)token.data.opt.len, token.data.opt.name); if (p >= e) { goto viml_pexpr_repr_token_end; } } while (0); break; }


    case kExprLexPlainIdentifier: { do { p += snprintf(p, (size_t)(sizeof(ret) - (size_t)(p - ret)), "(scope=%s,autoload=%i)", intchar2str((int)token.data.var.scope), (int)token.data.var.autoload); if (p >= e) { goto viml_pexpr_repr_token_end; } } while (0); break; }


    case kExprLexNumber: { do { p += snprintf(p, (size_t)(sizeof(ret) - (size_t)(p - ret)), "(is_float=%i,base=%i,val=%lg)", (int)token.data.num.is_float, (int)token.data.num.base, (double)(token.data.num.is_float ? (double)token.data.num.val.floating : (double)token.data.num.val.integer)); if (p >= e) { goto viml_pexpr_repr_token_end; } } while (0); break; }





    case kExprLexInvalid: { do { p += snprintf(p, (size_t)(sizeof(ret) - (size_t)(p - ret)), "(msg=%s)", token.data.err.msg); if (p >= e) { goto viml_pexpr_repr_token_end; } } while (0); break; }
  default:

    break;

  }
  if (pstate == 
# 846 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
               ((void *)0)
# 846 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                   ) {
    do { p += snprintf(p, (size_t)(sizeof(ret) - (size_t)(p - ret)), "::%zu", token.len); if (p >= e) { goto viml_pexpr_repr_token_end; } } while (0);
  } else {
    *p++ = ':';
    memmove(p, &pstate->reader.lines.items[token.start.line].data[token.start.col],
            token.len);
    p += token.len;
    *p = '\000';
  }

viml_pexpr_repr_token_end:
  if (ret_size != 
# 857 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                 ((void *)0)
# 857 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                     ) {
    *ret_size = (size_t)(p - ret);
  }
  return ret;
}

const char *const east_node_type_tab[] = {
  [kExprNodeMissing] = "Missing",
  [kExprNodeOpMissing] = "OpMissing",
  [kExprNodeTernary] = "Ternary",
  [kExprNodeTernaryValue] = "TernaryValue",
  [kExprNodeRegister] = "Register",
  [kExprNodeSubscript] = "Subscript",
  [kExprNodeListLiteral] = "ListLiteral",
  [kExprNodeUnaryPlus] = "UnaryPlus",
  [kExprNodeBinaryPlus] = "BinaryPlus",
  [kExprNodeNested] = "Nested",
  [kExprNodeCall] = "Call",
  [kExprNodePlainIdentifier] = "PlainIdentifier",
  [kExprNodePlainKey] = "PlainKey",
  [kExprNodeComplexIdentifier] = "ComplexIdentifier",
  [kExprNodeUnknownFigure] = "UnknownFigure",
  [kExprNodeLambda] = "Lambda",
  [kExprNodeDictLiteral] = "DictLiteral",
  [kExprNodeCurlyBracesIdentifier] = "CurlyBracesIdentifier",
  [kExprNodeComma] = "Comma",
  [kExprNodeColon] = "Colon",
  [kExprNodeArrow] = "Arrow",
  [kExprNodeComparison] = "Comparison",
  [kExprNodeConcat] = "Concat",
  [kExprNodeConcatOrSubscript] = "ConcatOrSubscript",
  [kExprNodeInteger] = "Integer",
  [kExprNodeFloat] = "Float",
  [kExprNodeSingleQuotedString] = "SingleQuotedString",
  [kExprNodeDoubleQuotedString] = "DoubleQuotedString",
  [kExprNodeOr] = "Or",
  [kExprNodeAnd] = "And",
  [kExprNodeUnaryMinus] = "UnaryMinus",
  [kExprNodeBinaryMinus] = "BinaryMinus",
  [kExprNodeNot] = "Not",
  [kExprNodeMultiplication] = "Multiplication",
  [kExprNodeDivision] = "Division",
  [kExprNodeMod] = "Mod",
  [kExprNodeOption] = "Option",
  [kExprNodeEnvironment] = "Environment",
  [kExprNodeAssignment] = "Assignment",
};
# 916 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
static const char *intchar2str(const int ch)
  FUNC_ATTR_WARN_UNUSED_RESULT
{
  static char buf[sizeof(int) * 3 + 1];
  if (' ' <= ch && ch < 0x7f) {
    if (ascii_isdigit(ch)) {
      buf[0] = '\'';
      buf[1] = (char)ch;
      buf[2] = '\'';
      buf[3] = '\000';
    } else {
      buf[0] = (char)ch;
      buf[1] = '\000';
    }
  } else {
    snprintf(buf, sizeof(buf), "%i", ch);
  }
  return buf;
}
# 982 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
const uint8_t node_maxchildren[] = {
  [kExprNodeMissing] = 0,
  [kExprNodeOpMissing] = 2,
  [kExprNodeTernary] = 2,
  [kExprNodeTernaryValue] = 2,
  [kExprNodeRegister] = 0,
  [kExprNodeSubscript] = 2,
  [kExprNodeListLiteral] = 1,
  [kExprNodeUnaryPlus] = 1,
  [kExprNodeBinaryPlus] = 2,
  [kExprNodeNested] = 1,
  [kExprNodeCall] = 2,
  [kExprNodePlainIdentifier] = 0,
  [kExprNodePlainKey] = 0,
  [kExprNodeComplexIdentifier] = 2,
  [kExprNodeUnknownFigure] = 1,
  [kExprNodeLambda] = 2,
  [kExprNodeDictLiteral] = 1,
  [kExprNodeCurlyBracesIdentifier] = 1,
  [kExprNodeComma] = 2,
  [kExprNodeColon] = 2,
  [kExprNodeArrow] = 2,
  [kExprNodeComparison] = 2,
  [kExprNodeConcat] = 2,
  [kExprNodeConcatOrSubscript] = 2,
  [kExprNodeInteger] = 0,
  [kExprNodeFloat] = 0,
  [kExprNodeSingleQuotedString] = 0,
  [kExprNodeDoubleQuotedString] = 0,
  [kExprNodeOr] = 2,
  [kExprNodeAnd] = 2,
  [kExprNodeUnaryMinus] = 1,
  [kExprNodeBinaryMinus] = 2,
  [kExprNodeNot] = 1,
  [kExprNodeMultiplication] = 2,
  [kExprNodeDivision] = 2,
  [kExprNodeMod] = 2,
  [kExprNodeOption] = 0,
  [kExprNodeEnvironment] = 0,
  [kExprNodeAssignment] = 2,
};




void viml_pexpr_free_ast(ExprAST ast)
{
  ExprASTStack ast_stack;
  ((ast_stack).capacity = ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))), (ast_stack).size = 0, (ast_stack).items = (ast_stack).init_array);
  (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&ast.root));
  while (((ast_stack).size)) {
    ExprASTNode **const cur_node = ((ast_stack).items[(((ast_stack).size) - (0) - 1)]);


    for (size_t i = 0; i < ((ast_stack).size) - 1; i++) {
      
# 1037 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void) sizeof ((
# 1037 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     *((ast_stack).items[(i)]) != *cur_node
# 1037 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ? 1 : 0), __extension__ ({ if (
# 1037 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     *((ast_stack).items[(i)]) != *cur_node
# 1037 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ; else __assert_fail (
# 1037 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     "*kv_A(ast_stack, i) != *cur_node"
# 1037 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 1037, __extension__ __PRETTY_FUNCTION__); }))
# 1037 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                             ;
    }

    if (*cur_node == 
# 1040 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                    ((void *)0)
# 1040 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                        ) {
      
# 1041 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void) sizeof ((
# 1041 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ((ast_stack).size) == 1
# 1041 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ? 1 : 0), __extension__ ({ if (
# 1041 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ((ast_stack).size) == 1
# 1041 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ; else __assert_fail (
# 1041 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     "kv_size(ast_stack) == 1"
# 1041 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 1041, __extension__ __PRETTY_FUNCTION__); }))
# 1041 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                    ;
      ((ast_stack).size -= (1));
    } else if ((*cur_node)->children != 
# 1043 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                       ((void *)0)
# 1043 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                           ) {

      const uint8_t maxchildren = node_maxchildren[(*cur_node)->type];
      
# 1046 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void) sizeof ((
# 1046 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     maxchildren > 0
# 1046 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ? 1 : 0), __extension__ ({ if (
# 1046 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     maxchildren > 0
# 1046 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ; else __assert_fail (
# 1046 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     "maxchildren > 0"
# 1046 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 1046, __extension__ __PRETTY_FUNCTION__); }))
# 1046 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                            ;
      
# 1047 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void) sizeof ((
# 1047 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     maxchildren <= 2
# 1047 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ? 1 : 0), __extension__ ({ if (
# 1047 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     maxchildren <= 2
# 1047 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ; else __assert_fail (
# 1047 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     "maxchildren <= 2"
# 1047 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 1047, __extension__ __PRETTY_FUNCTION__); }))
# 1047 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                             ;
      
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void) sizeof ((
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     maxchildren == 1 ? (*cur_node)->children->next == 
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0) 
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     : ((*cur_node)->children->next == 
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0) 
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     || (*cur_node)->children->next->next == 
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0)
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     )
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ? 1 : 0), __extension__ ({ if (
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     maxchildren == 1 ? (*cur_node)->children->next == 
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0) 
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     : ((*cur_node)->children->next == 
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0) 
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     || (*cur_node)->children->next->next == 
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0)
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     )
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ; else __assert_fail (
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     "maxchildren == 1 ? (*cur_node)->children->next == NULL : ((*cur_node)->children->next == NULL || (*cur_node)->children->next->next == NULL)"
# 1048 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 1048, __extension__ __PRETTY_FUNCTION__); }))


                                                              
# 1051 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                             ;

      (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&(*cur_node)->children));
    } else if ((*cur_node)->next != 
# 1054 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                   ((void *)0)
# 1054 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                       ) {
      (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&(*cur_node)->next));
    } else if (*cur_node != 
# 1056 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                           ((void *)0)
# 1056 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                               ) {
      ((ast_stack).size -= (1));
      switch ((*cur_node)->type) {
      case kExprNodeDoubleQuotedString:
      case kExprNodeSingleQuotedString:
        xfree((*cur_node)->data.str.value);
        break;
      case kExprNodeMissing:
      case kExprNodeOpMissing:
      case kExprNodeTernary:
      case kExprNodeTernaryValue:
      case kExprNodeRegister:
      case kExprNodeSubscript:
      case kExprNodeListLiteral:
      case kExprNodeUnaryPlus:
      case kExprNodeBinaryPlus:
      case kExprNodeNested:
      case kExprNodeCall:
      case kExprNodePlainIdentifier:
      case kExprNodePlainKey:
      case kExprNodeComplexIdentifier:
      case kExprNodeUnknownFigure:
      case kExprNodeLambda:
      case kExprNodeDictLiteral:
      case kExprNodeCurlyBracesIdentifier:
      case kExprNodeAssignment:
      case kExprNodeComma:
      case kExprNodeColon:
      case kExprNodeArrow:
      case kExprNodeComparison:
      case kExprNodeConcat:
      case kExprNodeConcatOrSubscript:
      case kExprNodeInteger:
      case kExprNodeFloat:
      case kExprNodeOr:
      case kExprNodeAnd:
      case kExprNodeUnaryMinus:
      case kExprNodeBinaryMinus:
      case kExprNodeNot:
      case kExprNodeMultiplication:
      case kExprNodeDivision:
      case kExprNodeMod:
      case kExprNodeOption:
      case kExprNodeEnvironment:
        break;
      }
      xfree(*cur_node);
      *cur_node = 
# 1103 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                 ((void *)0)
# 1103 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                     ;
    }
  }
  do { if ((ast_stack).items != (ast_stack).init_array) { do { void **ptr_ = (void **)&((ast_stack).items); xfree(*ptr_); *ptr_ = 
# 1106 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 ((void *)0)
# 1106 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
 ; (void)(*ptr_); } while (0); } } while (0);
}
# 1131 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
static inline ExprASTNode *viml_pexpr_new_node(const ExprASTNodeType type)
  FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_MALLOC
{
  ExprASTNode *ret = xmalloc(sizeof(*ret));
  ret->type = type;
  ret->children = 
# 1136 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                 ((void *)0)
# 1136 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                     ;
  ret->next = 
# 1137 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
             ((void *)0)
# 1137 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                 ;
  return ret;
}

static struct {
  ExprOpLvl lvl;
  ExprOpAssociativity ass;
} node_type_to_node_props[] = {
  [kExprNodeMissing] = { kEOpLvlInvalid, kEOpAssNo, },
  [kExprNodeOpMissing] = { kEOpLvlMultiplication, kEOpAssNo },

  [kExprNodeNested] = { kEOpLvlParens, kEOpAssNo },


  [kExprNodeCall] = { kEOpLvlParens, kEOpAssNo },
  [kExprNodeSubscript] = { kEOpLvlParens, kEOpAssNo },

  [kExprNodeUnknownFigure] = { kEOpLvlParens, kEOpAssLeft },
  [kExprNodeLambda] = { kEOpLvlParens, kEOpAssNo },
  [kExprNodeDictLiteral] = { kEOpLvlParens, kEOpAssNo },
  [kExprNodeListLiteral] = { kEOpLvlParens, kEOpAssNo },

  [kExprNodeArrow] = { kEOpLvlArrow, kEOpAssNo },
# 1168 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
  [kExprNodeComma] = { kEOpLvlComma, kEOpAssRight },


  [kExprNodeColon] = { kEOpLvlColon, kEOpAssNo },

  [kExprNodeTernary] = { kEOpLvlTernary, kEOpAssRight },

  [kExprNodeOr] = { kEOpLvlOr, kEOpAssLeft },

  [kExprNodeAnd] = { kEOpLvlAnd, kEOpAssLeft },

  [kExprNodeTernaryValue] = { kEOpLvlTernaryValue, kEOpAssRight },

  [kExprNodeComparison] = { kEOpLvlComparison, kEOpAssRight },

  [kExprNodeBinaryPlus] = { kEOpLvlAddition, kEOpAssLeft },
  [kExprNodeBinaryMinus] = { kEOpLvlAddition, kEOpAssLeft },
  [kExprNodeConcat] = { kEOpLvlAddition, kEOpAssLeft },

  [kExprNodeMultiplication] = { kEOpLvlMultiplication, kEOpAssLeft },
  [kExprNodeDivision] = { kEOpLvlMultiplication, kEOpAssLeft },
  [kExprNodeMod] = { kEOpLvlMultiplication, kEOpAssLeft },

  [kExprNodeUnaryPlus] = { kEOpLvlUnary, kEOpAssNo },
  [kExprNodeUnaryMinus] = { kEOpLvlUnary, kEOpAssNo },
  [kExprNodeNot] = { kEOpLvlUnary, kEOpAssNo },

  [kExprNodeConcatOrSubscript] = { kEOpLvlSubscript, kEOpAssLeft },

  [kExprNodeCurlyBracesIdentifier] = { kEOpLvlComplexIdentifier, kEOpAssLeft },

  [kExprNodeAssignment] = { kEOpLvlAssignment, kEOpAssLeft },

  [kExprNodeComplexIdentifier] = { kEOpLvlValue, kEOpAssLeft },

  [kExprNodePlainIdentifier] = { kEOpLvlValue, kEOpAssNo },
  [kExprNodePlainKey] = { kEOpLvlValue, kEOpAssNo },
  [kExprNodeRegister] = { kEOpLvlValue, kEOpAssNo },
  [kExprNodeInteger] = { kEOpLvlValue, kEOpAssNo },
  [kExprNodeFloat] = { kEOpLvlValue, kEOpAssNo },
  [kExprNodeDoubleQuotedString] = { kEOpLvlValue, kEOpAssNo },
  [kExprNodeSingleQuotedString] = { kEOpLvlValue, kEOpAssNo },
  [kExprNodeOption] = { kEOpLvlValue, kEOpAssNo },
  [kExprNodeEnvironment] = { kEOpLvlValue, kEOpAssNo },
};
# 1221 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
static inline ExprOpLvl node_lvl(const ExprASTNode node)
  FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_CONST FUNC_ATTR_WARN_UNUSED_RESULT
{
  return node_type_to_node_props[node.type].lvl;
}
# 1234 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
static inline ExprOpAssociativity node_ass(const ExprASTNode node)
  FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_CONST FUNC_ATTR_WARN_UNUSED_RESULT
{
  return node_type_to_node_props[node.type].ass;
}
# 1252 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
static 
# 1252 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
      _Bool 
# 1252 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           viml_pexpr_handle_bop(const ParserState *const pstate, ExprASTStack *const ast_stack,
                                  ExprASTNode *const bop_node, ExprASTWantedNode *const want_node_p,
                                  ExprASTError *const ast_err)
  FUNC_ATTR_NONNULL_ALL
{
  
# 1257 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 _Bool 
# 1257 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
      ret = 
# 1257 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
            1
# 1257 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                ;
  ExprASTNode **top_node_p = 
# 1258 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                            ((void *)0)
# 1258 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                ;
  ExprASTNode *top_node;
  ExprOpLvl top_node_lvl;
  ExprOpAssociativity top_node_ass;
  
# 1262 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 ((void) sizeof ((
# 1262 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
 ((*ast_stack).size)
# 1262 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 ) ? 1 : 0), __extension__ ({ if (
# 1262 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
 ((*ast_stack).size)
# 1262 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 ) ; else __assert_fail (
# 1262 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
 "kv_size(*ast_stack)"
# 1262 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 1262, __extension__ __PRETTY_FUNCTION__); }))
# 1262 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                            ;
  const ExprOpLvl bop_node_lvl = ((bop_node->type == kExprNodeCall
                                   || bop_node->type == kExprNodeSubscript)
                                  ? kEOpLvlSubscript
                                  : node_lvl(*bop_node));
  do {
    ExprASTNode **new_top_node_p = ((*ast_stack).items[(((*ast_stack).size) - (0) - 1)]);
    ExprASTNode *new_top_node = *new_top_node_p;
    
# 1270 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void) sizeof ((
# 1270 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   new_top_node != 
# 1270 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 1270 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   new_top_node != 
# 1270 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void *)0)) ; else __assert_fail (
# 1270 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   "new_top_node != NULL"
# 1270 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 1270, __extension__ __PRETTY_FUNCTION__); }))
# 1270 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                               ;
    const ExprOpLvl new_top_node_lvl = node_lvl(*new_top_node);
    const ExprOpAssociativity new_top_node_ass = node_ass(*new_top_node);
    if (top_node_p != 
# 1273 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                     ((void *)0)
        
# 1274 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       && ((bop_node_lvl > new_top_node_lvl
             || (bop_node_lvl == new_top_node_lvl
                 && new_top_node_ass == kEOpAssNo)))) {
      break;
    }
    ((*ast_stack).size -= (1));
    top_node_p = new_top_node_p;
    top_node = new_top_node;
    top_node_lvl = new_top_node_lvl;
    top_node_ass = new_top_node_ass;
    if (bop_node_lvl == top_node_lvl && top_node_ass == kEOpAssRight) {
      break;
    }
  } while (((*ast_stack).size));
  if (top_node_ass == kEOpAssLeft || top_node_lvl != bop_node_lvl) {







    *top_node_p = bop_node;
    bop_node->children = top_node;
    
# 1298 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void) sizeof ((
# 1298 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   bop_node->children->next == 
# 1298 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 1298 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   bop_node->children->next == 
# 1298 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void *)0)) ; else __assert_fail (
# 1298 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   "bop_node->children->next == NULL"
# 1298 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 1298, __extension__ __PRETTY_FUNCTION__); }))
# 1298 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                           ;
    (*((((*ast_stack).size == (*ast_stack).capacity) ? (((*ast_stack).capacity = (((*ast_stack).capacity << 1) > ((sizeof((*ast_stack).init_array)/sizeof(((*ast_stack).init_array)[0])) / ((size_t)(!(sizeof((*ast_stack).init_array) % sizeof(((*ast_stack).init_array)[0]))))) ? ((*ast_stack).capacity << 1) : ((sizeof((*ast_stack).init_array)/sizeof(((*ast_stack).init_array)[0])) / ((size_t)(!(sizeof((*ast_stack).init_array) % sizeof(((*ast_stack).init_array)[0])))))), (*ast_stack).items = ((*ast_stack).capacity == ((sizeof((*ast_stack).init_array)/sizeof(((*ast_stack).init_array)[0])) / ((size_t)(!(sizeof((*ast_stack).init_array) % sizeof(((*ast_stack).init_array)[0]))))) ? ((*ast_stack).items == (*ast_stack).init_array ? (*ast_stack).items : _memcpy_free((*ast_stack).init_array, (*ast_stack).items, (*ast_stack).size * sizeof((*ast_stack).items[0]))) : ((*ast_stack).items == (*ast_stack).init_array ? memcpy(xmalloc((*ast_stack).capacity * sizeof((*ast_stack).items[0])), (*ast_stack).items, (*ast_stack).size * sizeof((*ast_stack).items[0])) : xrealloc((*ast_stack).items, (*ast_stack).capacity * sizeof((*ast_stack).items[0]))))), 0) : 0), ((*ast_stack).items + ((*ast_stack).size++))) = (top_node_p));
    (*((((*ast_stack).size == (*ast_stack).capacity) ? (((*ast_stack).capacity = (((*ast_stack).capacity << 1) > ((sizeof((*ast_stack).init_array)/sizeof(((*ast_stack).init_array)[0])) / ((size_t)(!(sizeof((*ast_stack).init_array) % sizeof(((*ast_stack).init_array)[0]))))) ? ((*ast_stack).capacity << 1) : ((sizeof((*ast_stack).init_array)/sizeof(((*ast_stack).init_array)[0])) / ((size_t)(!(sizeof((*ast_stack).init_array) % sizeof(((*ast_stack).init_array)[0])))))), (*ast_stack).items = ((*ast_stack).capacity == ((sizeof((*ast_stack).init_array)/sizeof(((*ast_stack).init_array)[0])) / ((size_t)(!(sizeof((*ast_stack).init_array) % sizeof(((*ast_stack).init_array)[0]))))) ? ((*ast_stack).items == (*ast_stack).init_array ? (*ast_stack).items : _memcpy_free((*ast_stack).init_array, (*ast_stack).items, (*ast_stack).size * sizeof((*ast_stack).items[0]))) : ((*ast_stack).items == (*ast_stack).init_array ? memcpy(xmalloc((*ast_stack).capacity * sizeof((*ast_stack).items[0])), (*ast_stack).items, (*ast_stack).size * sizeof((*ast_stack).items[0])) : xrealloc((*ast_stack).items, (*ast_stack).capacity * sizeof((*ast_stack).items[0]))))), 0) : 0), ((*ast_stack).items + ((*ast_stack).size++))) = (&bop_node->children->next));
  } else {
    
# 1302 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void) sizeof ((
# 1302 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   top_node_lvl == bop_node_lvl && top_node_ass == kEOpAssRight
# 1302 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ) ? 1 : 0), __extension__ ({ if (
# 1302 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   top_node_lvl == bop_node_lvl && top_node_ass == kEOpAssRight
# 1302 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ) ; else __assert_fail (
# 1302 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   "top_node_lvl == bop_node_lvl && top_node_ass == kEOpAssRight"
# 1302 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 1302, __extension__ __PRETTY_FUNCTION__); }))
# 1302 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                                       ;
    
# 1303 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void) sizeof ((
# 1303 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   top_node->children != 
# 1303 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void *)0) 
# 1303 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   && top_node->children->next != 
# 1303 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 1303 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   top_node->children != 
# 1303 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void *)0) 
# 1303 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   && top_node->children->next != 
# 1303 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void *)0)) ; else __assert_fail (
# 1303 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   "top_node->children != NULL && top_node->children->next != NULL"
# 1303 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 1303, __extension__ __PRETTY_FUNCTION__); }))
# 1303 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                                         ;
# 1312 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
    bop_node->children = top_node->children->next;
    top_node->children->next = bop_node;
    
# 1314 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void) sizeof ((
# 1314 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   bop_node->children->next == 
# 1314 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 1314 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   bop_node->children->next == 
# 1314 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void *)0)) ; else __assert_fail (
# 1314 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   "bop_node->children->next == NULL"
# 1314 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 1314, __extension__ __PRETTY_FUNCTION__); }))
# 1314 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                           ;
    (*((((*ast_stack).size == (*ast_stack).capacity) ? (((*ast_stack).capacity = (((*ast_stack).capacity << 1) > ((sizeof((*ast_stack).init_array)/sizeof(((*ast_stack).init_array)[0])) / ((size_t)(!(sizeof((*ast_stack).init_array) % sizeof(((*ast_stack).init_array)[0]))))) ? ((*ast_stack).capacity << 1) : ((sizeof((*ast_stack).init_array)/sizeof(((*ast_stack).init_array)[0])) / ((size_t)(!(sizeof((*ast_stack).init_array) % sizeof(((*ast_stack).init_array)[0])))))), (*ast_stack).items = ((*ast_stack).capacity == ((sizeof((*ast_stack).init_array)/sizeof(((*ast_stack).init_array)[0])) / ((size_t)(!(sizeof((*ast_stack).init_array) % sizeof(((*ast_stack).init_array)[0]))))) ? ((*ast_stack).items == (*ast_stack).init_array ? (*ast_stack).items : _memcpy_free((*ast_stack).init_array, (*ast_stack).items, (*ast_stack).size * sizeof((*ast_stack).items[0]))) : ((*ast_stack).items == (*ast_stack).init_array ? memcpy(xmalloc((*ast_stack).capacity * sizeof((*ast_stack).items[0])), (*ast_stack).items, (*ast_stack).size * sizeof((*ast_stack).items[0])) : xrealloc((*ast_stack).items, (*ast_stack).capacity * sizeof((*ast_stack).items[0]))))), 0) : 0), ((*ast_stack).items + ((*ast_stack).size++))) = (top_node_p));
    (*((((*ast_stack).size == (*ast_stack).capacity) ? (((*ast_stack).capacity = (((*ast_stack).capacity << 1) > ((sizeof((*ast_stack).init_array)/sizeof(((*ast_stack).init_array)[0])) / ((size_t)(!(sizeof((*ast_stack).init_array) % sizeof(((*ast_stack).init_array)[0]))))) ? ((*ast_stack).capacity << 1) : ((sizeof((*ast_stack).init_array)/sizeof(((*ast_stack).init_array)[0])) / ((size_t)(!(sizeof((*ast_stack).init_array) % sizeof(((*ast_stack).init_array)[0])))))), (*ast_stack).items = ((*ast_stack).capacity == ((sizeof((*ast_stack).init_array)/sizeof(((*ast_stack).init_array)[0])) / ((size_t)(!(sizeof((*ast_stack).init_array) % sizeof(((*ast_stack).init_array)[0]))))) ? ((*ast_stack).items == (*ast_stack).init_array ? (*ast_stack).items : _memcpy_free((*ast_stack).init_array, (*ast_stack).items, (*ast_stack).size * sizeof((*ast_stack).items[0]))) : ((*ast_stack).items == (*ast_stack).init_array ? memcpy(xmalloc((*ast_stack).capacity * sizeof((*ast_stack).items[0])), (*ast_stack).items, (*ast_stack).size * sizeof((*ast_stack).items[0])) : xrealloc((*ast_stack).items, (*ast_stack).capacity * sizeof((*ast_stack).items[0]))))), 0) : 0), ((*ast_stack).items + ((*ast_stack).size++))) = (&top_node->children->next));
    (*((((*ast_stack).size == (*ast_stack).capacity) ? (((*ast_stack).capacity = (((*ast_stack).capacity << 1) > ((sizeof((*ast_stack).init_array)/sizeof(((*ast_stack).init_array)[0])) / ((size_t)(!(sizeof((*ast_stack).init_array) % sizeof(((*ast_stack).init_array)[0]))))) ? ((*ast_stack).capacity << 1) : ((sizeof((*ast_stack).init_array)/sizeof(((*ast_stack).init_array)[0])) / ((size_t)(!(sizeof((*ast_stack).init_array) % sizeof(((*ast_stack).init_array)[0])))))), (*ast_stack).items = ((*ast_stack).capacity == ((sizeof((*ast_stack).init_array)/sizeof(((*ast_stack).init_array)[0])) / ((size_t)(!(sizeof((*ast_stack).init_array) % sizeof(((*ast_stack).init_array)[0]))))) ? ((*ast_stack).items == (*ast_stack).init_array ? (*ast_stack).items : _memcpy_free((*ast_stack).init_array, (*ast_stack).items, (*ast_stack).size * sizeof((*ast_stack).items[0]))) : ((*ast_stack).items == (*ast_stack).init_array ? memcpy(xmalloc((*ast_stack).capacity * sizeof((*ast_stack).items[0])), (*ast_stack).items, (*ast_stack).size * sizeof((*ast_stack).items[0])) : xrealloc((*ast_stack).items, (*ast_stack).capacity * sizeof((*ast_stack).items[0]))))), 0) : 0), ((*ast_stack).items + ((*ast_stack).size++))) = (&bop_node->children->next));

    if (bop_node->type == kExprNodeComparison) {
      east_set_error(pstate, ast_err,
                     gettext("E15: Operator is not associative: %.*s"),
                     bop_node->start);
      ret = 
# 1323 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           0
# 1323 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                ;
    }
  }
  *want_node_p = kENodeValue;
  return ret;
}
# 1338 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
static inline ParserPosition shifted_pos(const ParserPosition pos, const size_t shift)
  FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_WARN_UNUSED_RESULT
{
  return (ParserPosition) { .line = pos.line, .col = pos.col + shift };
}
# 1352 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
static inline ParserPosition recol_pos(const ParserPosition pos, const size_t new_col)
  FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_WARN_UNUSED_RESULT
{
  return (ParserPosition) { .line = pos.line, .col = new_col };
}
# 1454 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
static inline void east_set_error(const ParserState *const pstate, ExprASTError *const ret_ast_err,
                                  const char *const msg, const ParserPosition start)
  FUNC_ATTR_NONNULL_ALL FUNC_ATTR_ALWAYS_INLINE
{
  if (ret_ast_err->msg != 
# 1458 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                         ((void *)0)
# 1458 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                             ) {
    return;
  }
  const ParserLine pline = pstate->reader.lines.items[start.line];
  ret_ast_err->msg = msg;
  ret_ast_err->arg_len = (int)(pline.size - start.col);
  ret_ast_err->arg = pline.data ? pline.data + start.col : 
# 1464 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                          ((void *)0)
# 1464 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                              ;
}
# 1555 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
static inline 
# 1555 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
             _Bool 
# 1555 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                  pt_is_assignment(const ExprASTParseType pt)
  FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_CONST FUNC_ATTR_WARN_UNUSED_RESULT
{
  return (pt == kEPTAssignment || pt == kEPTSingleAssignment);
}



typedef struct {
  size_t start;
  size_t orig_len;
  size_t act_len;
  
# 1567 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 _Bool 
# 1567 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
      escape_not_known;
} StringShift;
# 1582 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
static void parse_quoted_string(ParserState *const pstate, ExprASTNode *const node,
                                const LexExprToken token, const ExprASTStack *ast_stack,
                                const 
# 1584 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                     _Bool 
# 1584 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                          is_invalid)
  FUNC_ATTR_NONNULL_ALL
{
  const ParserLine pline = pstate->reader.lines.items[token.start.line];
  const char *const s = pline.data + token.start.col;
  const char *const e = s + token.len - token.data.str.closed;
  const char *p = s + 1;
  const 
# 1591 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       _Bool 
# 1591 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
            is_double = (token.type == kExprLexDoubleQuotedString);
  size_t size = token.len - token.data.str.closed - 1;
  struct { size_t size; size_t capacity; StringShift *items; StringShift init_array[16]; } shifts;
  ((shifts).capacity = ((sizeof((shifts).init_array)/sizeof(((shifts).init_array)[0])) / ((size_t)(!(sizeof((shifts).init_array) % sizeof(((shifts).init_array)[0]))))), (shifts).size = 0, (shifts).items = (shifts).init_array);
  if (!is_double) {
    viml_parser_highlight(pstate, token.start, 1, (is_invalid ? "NvimInvalid" "SingleQuote" : "Nvim" "SingleQuote"));
    while (p < e) {
      const char *const chunk_e = memchr(p, '\'', (size_t)(e - p));
      if (chunk_e == 
# 1599 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                    ((void *)0)
# 1599 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                        ) {
        break;
      }
      size--;
      p = chunk_e + 2;
      if (pstate->colors) {
        (*((((shifts).size == (shifts).capacity) ? (((shifts).capacity = (((shifts).capacity << 1) > ((sizeof((shifts).init_array)/sizeof(((shifts).init_array)[0])) / ((size_t)(!(sizeof((shifts).init_array) % sizeof(((shifts).init_array)[0]))))) ? ((shifts).capacity << 1) : ((sizeof((shifts).init_array)/sizeof(((shifts).init_array)[0])) / ((size_t)(!(sizeof((shifts).init_array) % sizeof(((shifts).init_array)[0])))))), (shifts).items = ((shifts).capacity == ((sizeof((shifts).init_array)/sizeof(((shifts).init_array)[0])) / ((size_t)(!(sizeof((shifts).init_array) % sizeof(((shifts).init_array)[0]))))) ? ((shifts).items == (shifts).init_array ? (shifts).items : _memcpy_free((shifts).init_array, (shifts).items, (shifts).size * sizeof((shifts).items[0]))) : ((shifts).items == (shifts).init_array ? memcpy(xmalloc((shifts).capacity * sizeof((shifts).items[0])), (shifts).items, (shifts).size * sizeof((shifts).items[0])) : xrealloc((shifts).items, (shifts).capacity * sizeof((shifts).items[0]))))), 0) : 0), ((shifts).items + ((shifts).size++))) = (((StringShift) { .start = token.start.col + (size_t)(chunk_e - s), .orig_len = 2, .act_len = 1, .escape_not_known = 
# 1605 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       0
# 1605 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       , })))




           ;
      }
    }
    node->data.str.size = size;
    if (size == 0) {
      node->data.str.value = 
# 1615 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                            ((void *)0)
# 1615 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                ;
    } else {
      char *v_p;
      v_p = node->data.str.value = xmallocz(size);
      p = s + 1;
      while (p < e) {
        const char *const chunk_e = memchr(p, '\'', (size_t)(e - p));
        if (chunk_e == 
# 1622 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                      ((void *)0)
# 1622 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                          ) {
          memcpy(v_p, p, (size_t)(e - p));
          break;
        }
        memcpy(v_p, p, (size_t)(chunk_e - p));
        v_p += (size_t)(chunk_e - p) + 1;
        v_p[-1] = '\'';
        p = chunk_e + 2;
      }
    }
  } else {
    viml_parser_highlight(pstate, token.start, 1, (is_invalid ? "NvimInvalid" "DoubleQuote" : "Nvim" "DoubleQuote"));
    for (p = s + 1; p < e; p++) {
      if (*p == '\\' && p + 1 < e) {
        p++;
        if (p + 1 == e) {
          size--;
          break;
        }
        switch (*p) {




        case '<':
          size += 5;
          break;

        case 'x':
        case 'X':
          size--;
          if (ascii_isxdigit(p[1])) {
            size--;
            if (p + 2 < e && ascii_isxdigit(p[2])) {
              size--;
            }
          }
          break;
# 1670 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
        case 'u':
        case 'U': {
          const char *const esc_start = p;
          size_t n = (*p == 'u' ? 4 : 8);
          int nr = 0;
          p++;
          while (p + 1 < e && n-- && ascii_isxdigit(p[1])) {
            p++;
            nr = (nr << 4) + hex2nr(*p);
          }




          size -= (size_t)((p - (esc_start - 1)) - utf_char2len(nr));
          p--;
          break;
        }

        case '0':
        case '1':
        case '2':
        case '3':
        case '4':
        case '5':
        case '6':
        case '7':
          size--;
          p++;
          if (*p >= '0' && *p <= '7') {
            size--;
            p++;
            if (p < e && *p >= '0' && *p <= '7') {
              size--;
              p++;
            }
          }
          break;
        default:
          size--;
          break;
        }
      }
    }
    if (size == 0) {
      node->data.str.value = 
# 1715 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                            ((void *)0)
# 1715 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                ;
      node->data.str.size = 0;
    } else {
      char *v_p;
      v_p = node->data.str.value = xmalloc(size);
      p = s + 1;
      while (p < e) {
        const char *const chunk_e = memchr(p, '\\', (size_t)(e - p));
        if (chunk_e == 
# 1723 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                      ((void *)0)
# 1723 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                          ) {
          memcpy(v_p, p, (size_t)(e - p));
          v_p += e - p;
          break;
        }
        memcpy(v_p, p, (size_t)(chunk_e - p));
        v_p += (size_t)(chunk_e - p);
        p = chunk_e + 1;
        if (p == e) {
          *v_p++ = '\\';
          break;
        }
        
# 1735 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       _Bool 
# 1735 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
            is_unknown = 
# 1735 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                         0
# 1735 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                              ;
        const char *const v_p_start = v_p;
        switch (*p) {






        case 'b': { *v_p++ = '\010'; p++; break; }
        case 'e': { *v_p++ = '\033'; p++; break; }
        case 'f': { *v_p++ = '\014'; p++; break; }
        case 'n': { *v_p++ = '\012'; p++; break; }
        case 'r': { *v_p++ = '\015'; p++; break; }
        case 't': { *v_p++ = '\011'; p++; break; }
        case '"': { *v_p++ = '"'; p++; break; }
        case '\\': { *v_p++ = '\\'; p++; break; }



        case 'X':
        case 'x':
        case 'u':
        case 'U':
          if (p + 1 < e && ascii_isxdigit(p[1])) {
            size_t n;
            int nr;
            
# 1762 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           _Bool 
# 1762 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                is_hex = (*p == 'x' || *p == 'X');

            if (is_hex) {
              n = 2;
            } else if (*p == 'u') {
              n = 4;
            } else {
              n = 8;
            }
            nr = 0;
            while (p + 1 < e && n-- && ascii_isxdigit(p[1])) {
              p++;
              nr = (nr << 4) + hex2nr(*p);
            }
            p++;
            if (is_hex) {
              *v_p++ = (char)nr;
            } else {
              v_p += utf_char2bytes(nr, v_p);
            }
          } else {
            is_unknown = 
# 1783 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                        1
# 1783 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                            ;
            *v_p++ = *p;
            p++;
          }
          break;

        case '0':
        case '1':
        case '2':
        case '3':
        case '4':
        case '5':
        case '6':
        case '7': {
          uint8_t ch = (uint8_t)(*p++ - '0');
          if (p < e && *p >= '0' && *p <= '7') {
            ch = (uint8_t)((ch << 3) + *p++ - '0');
            if (p < e && *p >= '0' && *p <= '7') {
              ch = (uint8_t)((ch << 3) + *p++ - '0');
            }
          }
          *v_p++ = (char)ch;
          break;
        }

        case '<': {
          int flags = FSK_KEYCODE | FSK_IN_STRING;

          if (p[1] != '*') {
            flags |= FSK_SIMPLIFY;
          }
          const size_t special_len = trans_special(&p, (size_t)(e - p),
                                                   v_p, flags, 
# 1815 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                              0
# 1815 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                                   , 
# 1815 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                                     ((void *)0)
# 1815 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                                         );
          if (special_len != 0) {
            v_p += special_len;
          } else {
            is_unknown = 
# 1819 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                        1
# 1819 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                            ;
            mb_copy_char(&p, &v_p);
          }
          break;
        }
        default:
          is_unknown = 
# 1825 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                      1
# 1825 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                          ;
          mb_copy_char(&p, &v_p);
          break;
        }
        if (pstate->colors) {
          (*((((shifts).size == (shifts).capacity) ? (((shifts).capacity = (((shifts).capacity << 1) > ((sizeof((shifts).init_array)/sizeof(((shifts).init_array)[0])) / ((size_t)(!(sizeof((shifts).init_array) % sizeof(((shifts).init_array)[0]))))) ? ((shifts).capacity << 1) : ((sizeof((shifts).init_array)/sizeof(((shifts).init_array)[0])) / ((size_t)(!(sizeof((shifts).init_array) % sizeof(((shifts).init_array)[0])))))), (shifts).items = ((shifts).capacity == ((sizeof((shifts).init_array)/sizeof(((shifts).init_array)[0])) / ((size_t)(!(sizeof((shifts).init_array) % sizeof(((shifts).init_array)[0]))))) ? ((shifts).items == (shifts).init_array ? (shifts).items : _memcpy_free((shifts).init_array, (shifts).items, (shifts).size * sizeof((shifts).items[0]))) : ((shifts).items == (shifts).init_array ? memcpy(xmalloc((shifts).capacity * sizeof((shifts).items[0])), (shifts).items, (shifts).size * sizeof((shifts).items[0])) : xrealloc((shifts).items, (shifts).capacity * sizeof((shifts).items[0]))))), 0) : 0), ((shifts).items + ((shifts).size++))) = (((StringShift) { .start = token.start.col + (size_t)(chunk_e - s), .orig_len = (size_t)(p - chunk_e), .act_len = (size_t)(v_p - (char *)v_p_start), .escape_not_known = is_unknown, })))




             ;
        }
      }
      node->data.str.size = (size_t)(v_p - node->data.str.value);
    }
  }
  if (pstate->colors) {



    size_t next_col = token.start.col + 1;
    const char *const body_str = (is_double
                                  ? (is_invalid ? "NvimInvalid" "DoubleQuotedBody" : "Nvim" "DoubleQuotedBody")
                                  : (is_invalid ? "NvimInvalid" "SingleQuotedBody" : "Nvim" "SingleQuotedBody"));
    const char *const esc_str = (is_double
                                 ? (is_invalid ? "NvimInvalid" "DoubleQuotedEscape" : "Nvim" "DoubleQuotedEscape")
                                 : (is_invalid ? "NvimInvalid" "SingleQuotedQuote" : "Nvim" "SingleQuotedQuote"));
    const char *const ukn_esc_str = (is_double
                                     ? (is_invalid ? "NvimInvalid" "DoubleQuotedUnknownEscape" : "Nvim" "DoubleQuotedUnknownEscape")
                                     : (is_invalid ? "NvimInvalid" "SingleQuotedUnknownEscape" : "Nvim" "SingleQuotedUnknownEscape"));
    for (size_t i = 0; i < ((shifts).size); i++) {
      const StringShift cur_shift = ((shifts).items[(i)]);
      if (cur_shift.start > next_col) {
        viml_parser_highlight(pstate, recol_pos(token.start, next_col),
                              cur_shift.start - next_col,
                              body_str);
      }
      viml_parser_highlight(pstate, recol_pos(token.start, cur_shift.start),
                            cur_shift.orig_len,
                            (cur_shift.escape_not_known
                             ? ukn_esc_str
                             : esc_str));
      next_col = cur_shift.start + cur_shift.orig_len;
    }
    if (next_col - token.start.col < token.len - token.data.str.closed) {
      viml_parser_highlight(pstate, recol_pos(token.start, next_col),
                            (token.start.col
                             + token.len
                             - token.data.str.closed
                             - next_col),
                            body_str);
    }
  }
  if (token.data.str.closed) {
    if (is_double) {
      viml_parser_highlight(pstate, shifted_pos(token.start, token.len - 1),
                            1, (is_invalid ? "NvimInvalid" "DoubleQuote" : "Nvim" "DoubleQuote"));
    } else {
      viml_parser_highlight(pstate, shifted_pos(token.start, token.len - 1),
                            1, (is_invalid ? "NvimInvalid" "SingleQuote" : "Nvim" "SingleQuote"));
    }
  }
  do { if ((shifts).items != (shifts).init_array) { do { void **ptr_ = (void **)&((shifts).items); xfree(*ptr_); *ptr_ = 
# 1887 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 ((void *)0)
# 1887 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
 ; (void)(*ptr_); } while (0); } } while (0);
}


static const int want_node_to_lexer_flags[] = {
  [kENodeValue] = kELFlagIsNotCmp,
  [kENodeOperator] = kELFlagForbidScope,
};


static const uint8_t base_to_prefix_length[] = {
  [2] = 2,
  [8] = 1,
  [10] = 0,
  [16] = 2,
};







ExprAST viml_pexpr_parse(ParserState *const pstate, const int flags)
  FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL
{
  ExprAST ast = {
    .err = {
      .msg = 
# 1915 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
            ((void *)0)
# 1915 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                ,
      .arg_len = 0,
      .arg = 
# 1917 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
            ((void *)0)
# 1917 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                ,
    },
    .root = 
# 1919 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ((void *)0)
# 1919 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
               ,
  };
# 1929 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
  ExprASTStack ast_stack;
  ((ast_stack).capacity = ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))), (ast_stack).size = 0, (ast_stack).items = (ast_stack).init_array);
  (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&ast.root));
  ExprASTWantedNode want_node = kENodeValue;
  ExprASTParseTypeStack pt_stack;
  ((pt_stack).capacity = ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0]))))), (pt_stack).size = 0, (pt_stack).items = (pt_stack).init_array);
  (*((((pt_stack).size == (pt_stack).capacity) ? (((pt_stack).capacity = (((pt_stack).capacity << 1) > ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0]))))) ? ((pt_stack).capacity << 1) : ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0])))))), (pt_stack).items = ((pt_stack).capacity == ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0]))))) ? ((pt_stack).items == (pt_stack).init_array ? (pt_stack).items : _memcpy_free((pt_stack).init_array, (pt_stack).items, (pt_stack).size * sizeof((pt_stack).items[0]))) : ((pt_stack).items == (pt_stack).init_array ? memcpy(xmalloc((pt_stack).capacity * sizeof((pt_stack).items[0])), (pt_stack).items, (pt_stack).size * sizeof((pt_stack).items[0])) : xrealloc((pt_stack).items, (pt_stack).capacity * sizeof((pt_stack).items[0]))))), 0) : 0), ((pt_stack).items + ((pt_stack).size++))) = (kEPTExpr));
  if (flags & kExprFlagsParseLet) {
    (*((((pt_stack).size == (pt_stack).capacity) ? (((pt_stack).capacity = (((pt_stack).capacity << 1) > ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0]))))) ? ((pt_stack).capacity << 1) : ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0])))))), (pt_stack).items = ((pt_stack).capacity == ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0]))))) ? ((pt_stack).items == (pt_stack).init_array ? (pt_stack).items : _memcpy_free((pt_stack).init_array, (pt_stack).items, (pt_stack).size * sizeof((pt_stack).items[0]))) : ((pt_stack).items == (pt_stack).init_array ? memcpy(xmalloc((pt_stack).capacity * sizeof((pt_stack).items[0])), (pt_stack).items, (pt_stack).size * sizeof((pt_stack).items[0])) : xrealloc((pt_stack).items, (pt_stack).capacity * sizeof((pt_stack).items[0]))))), 0) : 0), ((pt_stack).items + ((pt_stack).size++))) = (kEPTAssignment));
  }
  LexExprToken prev_token = { .type = kExprLexMissing };
  
# 1940 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 _Bool 
# 1940 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
      highlighted_prev_spacing = 
# 1940 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                 0
# 1940 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                      ;

  ExprASTNode *lambda_node = 
# 1942 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                            ((void *)0)
# 1942 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                ;
  size_t asgn_level = 0;
  do {
    const 
# 1945 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         _Bool 
# 1945 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
              is_concat_or_subscript = (
                                         want_node == kENodeValue
                                         && ((ast_stack).size) > 1
                                         && (*((ast_stack).items[(((ast_stack).size) - (1) - 1)])
                                                     )->type == kExprNodeConcatOrSubscript);
    const int lexer_additional_flags = (
                                        kELFlagPeek
                                        | ((flags & kExprFlagsDisallowEOC) ? kELFlagForbidEOC : 0)
                                        | ((want_node == kENodeValue
                                            && (((ast_stack).size) == 1
                                                || ((*((ast_stack).items[(((ast_stack).size) - (1) - 1)]))->type != kExprNodeConcat
                                                    && ((*((ast_stack).items[(((ast_stack).size) - (1) - 1)]))->type
                                                        != kExprNodeConcatOrSubscript))))
                                           ? kELFlagAllowFloat
                                           : 0));
    LexExprToken cur_token = viml_pexpr_next_token(pstate,
                                                   want_node_to_lexer_flags[want_node] |
                                                   lexer_additional_flags);
    if (cur_token.type == kExprLexEOC) {
      break;
    }
    LexExprTokenType tok_type = cur_token.type;
    const 
# 1967 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         _Bool 
# 1967 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
              token_invalid = (tok_type == kExprLexInvalid);
    
# 1968 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   _Bool 
# 1968 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
        is_invalid = token_invalid;
viml_pexpr_parse_process_token:

    cur_token = viml_pexpr_next_token(pstate,
                                      want_node_to_lexer_flags[want_node] | lexer_additional_flags);
    if (tok_type == kExprLexSpacing) {
      if (is_invalid) {
        viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Spacing" : "Nvim" "Spacing"));
      } else {


      }
      goto viml_pexpr_parse_cycle_end;
    } else if (is_invalid && prev_token.type == kExprLexSpacing
               && !highlighted_prev_spacing) {
      viml_parser_highlight(pstate, prev_token.start, prev_token.len,
                            (is_invalid ? "NvimInvalid" "Spacing" : "Nvim" "Spacing"));
      is_invalid = 
# 1985 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                  0
# 1985 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                       ;
      highlighted_prev_spacing = 
# 1986 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                1
# 1986 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                    ;
    }
    const ParserLine pline = pstate->reader.lines.items[cur_token.start.line];
    ExprASTNode **const top_node_p = ((ast_stack).items[(((ast_stack).size) - (0) - 1)]);
    
# 1990 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void) sizeof ((
# 1990 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   ((ast_stack).size) >= 1
# 1990 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ) ? 1 : 0), __extension__ ({ if (
# 1990 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   ((ast_stack).size) >= 1
# 1990 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ) ; else __assert_fail (
# 1990 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   "kv_size(ast_stack) >= 1"
# 1990 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 1990, __extension__ __PRETTY_FUNCTION__); }))
# 1990 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                  ;
    ExprASTNode *cur_node = 
# 1991 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                           ((void *)0)
# 1991 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                               ;

    const 
# 1993 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         _Bool 
# 1993 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
              want_value = (want_node == kENodeValue);
    
# 1994 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void) sizeof ((
# 1994 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   want_value == (*top_node_p == 
# 1994 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void *)0)
# 1994 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   )
# 1994 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ) ? 1 : 0), __extension__ ({ if (
# 1994 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   want_value == (*top_node_p == 
# 1994 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void *)0)
# 1994 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   )
# 1994 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ) ; else __assert_fail (
# 1994 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   "want_value == (*top_node_p == NULL)"
# 1994 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 1994, __extension__ __PRETTY_FUNCTION__); }))
# 1994 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                              ;
    
# 1995 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void) sizeof ((
# 1995 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   ((ast_stack).items[(0)]) == &ast.root
# 1995 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ) ? 1 : 0), __extension__ ({ if (
# 1995 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   ((ast_stack).items[(0)]) == &ast.root
# 1995 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ) ; else __assert_fail (
# 1995 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   "kv_A(ast_stack, 0) == &ast.root"
# 1995 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 1995, __extension__ __PRETTY_FUNCTION__); }))
# 1995 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                          ;

    for (size_t i = 0; i + 1 < ((ast_stack).size); i++) {
      const 
# 1998 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           _Bool 
# 1998 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                item_null = (want_value && i + 2 == ((ast_stack).size));
      
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void) sizeof ((
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     (&(*((ast_stack).items[(i)]))->children == ((ast_stack).items[(i + 1)]) && (item_null ? (*((ast_stack).items[(i)]))->children == 
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0) 
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     : (*((ast_stack).items[(i)]))->children->next == 
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0)
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     )) || ((&(*((ast_stack).items[(i)]))->children->next == ((ast_stack).items[(i + 1)])) && (item_null ? (*((ast_stack).items[(i)]))->children->next == 
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0) 
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     : (*((ast_stack).items[(i)]))->children->next->next == 
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0)
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ))
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ? 1 : 0), __extension__ ({ if (
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     (&(*((ast_stack).items[(i)]))->children == ((ast_stack).items[(i + 1)]) && (item_null ? (*((ast_stack).items[(i)]))->children == 
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0) 
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     : (*((ast_stack).items[(i)]))->children->next == 
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0)
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     )) || ((&(*((ast_stack).items[(i)]))->children->next == ((ast_stack).items[(i + 1)])) && (item_null ? (*((ast_stack).items[(i)]))->children->next == 
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0) 
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     : (*((ast_stack).items[(i)]))->children->next->next == 
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0)
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ))
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ; else __assert_fail (
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     "(&(*kv_A(ast_stack, i))->children == kv_A(ast_stack, i + 1) && (item_null ? (*kv_A(ast_stack, i))->children == NULL : (*kv_A(ast_stack, i))->children->next == NULL)) || ((&(*kv_A(ast_stack, i))->children->next == kv_A(ast_stack, i + 1)) && (item_null ? (*kv_A(ast_stack, i))->children->next == NULL : (*kv_A(ast_stack, i))->children->next->next == NULL))"
# 1999 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 1999, __extension__ __PRETTY_FUNCTION__); }))







                                                                             
# 2007 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                                            ;
    }
# 2023 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
    const 
# 2023 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         _Bool 
# 2023 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
              node_is_key = (
                              is_concat_or_subscript
                              && (cur_token.type == kExprLexPlainIdentifier
                                  ? (!cur_token.data.var.autoload
                                     && cur_token.data.var.scope == kExprVarScopeMissing)
                                  : (cur_token.type == kExprLexNumber))
                              && prev_token.type != kExprLexSpacing);
    if (is_concat_or_subscript && !node_is_key) {
# 2039 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
      (*((ast_stack).items[(((ast_stack).size) - (1) - 1)]))->type = kExprNodeConcat;
    }

    const 
# 2042 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         _Bool 
# 2042 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
              is_single_assignment = ((pt_stack).items[(((pt_stack).size) - (0) - 1)]) == kEPTSingleAssignment;
    switch (((pt_stack).items[(((pt_stack).size) - (0) - 1)])) {
    case kEPTExpr:
      break;
    case kEPTLambdaArguments:
      if ((want_node == kENodeOperator
           && tok_type != kExprLexComma
           && tok_type != kExprLexArrow)
          || (want_node == kENodeValue
              && !(cur_token.type == kExprLexPlainIdentifier
                   && cur_token.data.var.scope == kExprVarScopeMissing
                   && !cur_token.data.var.autoload)
              && tok_type != kExprLexArrow)) {
        lambda_node->data.fig.type_guesses.allow_lambda = 
# 2055 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                         0
# 2055 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                              ;
        if (lambda_node->children != 
# 2056 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                    ((void *)0)
            
# 2057 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           && lambda_node->children->type == kExprNodeComma) {
# 2066 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
          do { is_invalid = 
# 2066 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         1
# 2066 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; east_set_error(pstate, &ast.err, gettext("E15: Expected lambda arguments list or arrow: %.*s"), cur_token.start); } while (0)
                                                                                           ;
        } else {


          lambda_node = 
# 2071 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                       ((void *)0)
# 2071 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                           ;
          ((pt_stack).size -= (1));
        }
      }
      break;
    case kEPTSingleAssignment:
    case kEPTAssignment:
      if (want_node == kENodeValue
          && tok_type != kExprLexBracket
          && tok_type != kExprLexPlainIdentifier
          && (tok_type != kExprLexFigureBrace || cur_token.data.brc.closing)
          && !(node_is_key && tok_type == kExprLexNumber)
          && tok_type != kExprLexEnv
          && tok_type != kExprLexOption
          && tok_type != kExprLexRegister) {
        do { is_invalid = 
# 2086 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       1
# 2086 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; east_set_error(pstate, &ast.err, gettext("E15: Expected value part of assignment lvalue: %.*s"), cur_token.start); } while (0)
                                                                                          ;
        ((pt_stack).size -= (1));
      } else if (want_node == kENodeOperator
                 && tok_type != kExprLexBracket
                 && (tok_type != kExprLexFigureBrace
                     || cur_token.data.brc.closing)
                 && tok_type != kExprLexDot
                 && (tok_type != kExprLexComma || !is_single_assignment)
                 && tok_type != kExprLexAssignment


                 && !((tok_type == kExprLexPlainIdentifier
                       || (tok_type == kExprLexFigureBrace
                           && !cur_token.data.brc.closing))
                      && prev_token.type != kExprLexSpacing)) {
        if (flags & kExprFlagsMulti && (((ast_stack).size) == 1)) {
          goto viml_pexpr_parse_end;
        }
        do { is_invalid = 
# 2105 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       1
# 2105 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; east_set_error(pstate, &ast.err, gettext("E15: Expected assignment operator or subscript: %.*s"), cur_token.start); } while (0)
                                                                                           ;
        ((pt_stack).size -= (1));
      }
      
# 2109 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void) sizeof ((
# 2109 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ((pt_stack).size)
# 2109 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ? 1 : 0), __extension__ ({ if (
# 2109 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ((pt_stack).size)
# 2109 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ; else __assert_fail (
# 2109 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     "kv_size(pt_stack)"
# 2109 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2109, __extension__ __PRETTY_FUNCTION__); }))
# 2109 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                              ;
      break;
    }
    
# 2112 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void) sizeof ((
# 2112 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   ((pt_stack).size)
# 2112 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ) ? 1 : 0), __extension__ ({ if (
# 2112 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   ((pt_stack).size)
# 2112 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ) ; else __assert_fail (
# 2112 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   "kv_size(pt_stack)"
# 2112 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2112, __extension__ __PRETTY_FUNCTION__); }))
# 2112 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                            ;
    const ExprASTParseType cur_pt = ((pt_stack).items[(((pt_stack).size) - (0) - 1)]);
    
# 2114 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void) sizeof ((
# 2114 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   lambda_node == 
# 2114 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void *)0) 
# 2114 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   || cur_pt == kEPTLambdaArguments
# 2114 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ) ? 1 : 0), __extension__ ({ if (
# 2114 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   lambda_node == 
# 2114 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void *)0) 
# 2114 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   || cur_pt == kEPTLambdaArguments
# 2114 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ) ; else __assert_fail (
# 2114 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   "lambda_node == NULL || cur_pt == kEPTLambdaArguments"
# 2114 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2114, __extension__ __PRETTY_FUNCTION__); }))
# 2114 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                               ;
# 2131 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
    switch (tok_type) {
    case kExprLexMissing:
    case kExprLexSpacing:
    case kExprLexEOC:
      abort();
    case kExprLexInvalid:
      do { is_invalid = 
# 2137 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     1
# 2137 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ; east_set_error(pstate, &ast.err, cur_token.data.err.msg, cur_token.start); } while (0);
      tok_type = cur_token.data.err.type;
      goto viml_pexpr_parse_process_token;
    case kExprLexRegister: {
      if (want_node == kENodeOperator) {

        do { if (flags & kExprFlagsMulti && (((ast_stack).size) == 1)) { goto viml_pexpr_parse_end; } else { 
# 2143 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void) sizeof ((
# 2143 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       *top_node_p != 
# 2143 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2143 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       *top_node_p != 
# 2143 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void *)0)) ; else __assert_fail (
# 2143 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       "*top_node_p != NULL"
# 2143 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2143, __extension__ __PRETTY_FUNCTION__); }))
# 2143 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; do { is_invalid = 
# 2143 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       1
# 2143 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; east_set_error(pstate, &ast.err, gettext("E15: Missing operator: %.*s"), cur_token.start); } while (0); do { (cur_node) = viml_pexpr_new_node(kExprNodeOpMissing); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); cur_node->len = 0; is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err); goto viml_pexpr_parse_process_token; } } while (0);
      }
      do { (cur_node) = viml_pexpr_new_node(kExprNodeRegister); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
      cur_node->data.reg.name = cur_token.data.reg.name;
      *top_node_p = cur_node;
      want_node = kENodeOperator;
      viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Register" : "Nvim" "Register"));
      break;
    }
      case kExprLexPlus: { if (want_node == kENodeValue) { do { (cur_node) = viml_pexpr_new_node(kExprNodeUnaryPlus); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); *top_node_p = cur_node; (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&cur_node->children)); viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "UnaryPlus" : "Nvim" "UnaryPlus")); } else { do { (cur_node) = viml_pexpr_new_node(kExprNodeBinaryPlus); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err); viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "BinaryPlus" : "Nvim" "BinaryPlus")); } want_node = kENodeValue; break; }
      case kExprLexMinus: { if (want_node == kENodeValue) { do { (cur_node) = viml_pexpr_new_node(kExprNodeUnaryMinus); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); *top_node_p = cur_node; (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&cur_node->children)); viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "UnaryMinus" : "Nvim" "UnaryMinus")); } else { do { (cur_node) = viml_pexpr_new_node(kExprNodeBinaryMinus); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err); viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "BinaryMinus" : "Nvim" "BinaryMinus")); } want_node = kENodeValue; break; }
# 2163 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
      case kExprLexOr: { do { if (want_node == kENodeValue) { do { is_invalid = 
# 2163 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     1
# 2163 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ; east_set_error(pstate, &ast.err, (gettext("E15: Unexpected " "or operator" ": %.*s")), cur_token.start); } while (0); do { ((*top_node_p)) = viml_pexpr_new_node(kExprNodeMissing); do { (((*top_node_p)))->start = cur_token.start; (((*top_node_p)))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { ((*top_node_p))->start = prev_token.start; ((*top_node_p))->len += prev_token.len; } } while (0); (*top_node_p)->len = 0; want_node = kENodeOperator; } } while (0); do { (cur_node) = viml_pexpr_new_node(kExprNodeOr); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Or" : "Nvim" "Or")); is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err); break; }
      case kExprLexAnd: { do { if (want_node == kENodeValue) { do { is_invalid = 
# 2164 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     1
# 2164 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ; east_set_error(pstate, &ast.err, (gettext("E15: Unexpected " "and operator" ": %.*s")), cur_token.start); } while (0); do { ((*top_node_p)) = viml_pexpr_new_node(kExprNodeMissing); do { (((*top_node_p)))->start = cur_token.start; (((*top_node_p)))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { ((*top_node_p))->start = prev_token.start; ((*top_node_p))->len += prev_token.len; } } while (0); (*top_node_p)->len = 0; want_node = kENodeOperator; } } while (0); do { (cur_node) = viml_pexpr_new_node(kExprNodeAnd); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "And" : "Nvim" "And")); is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err); break; }

    case kExprLexMultiplication:
      do { if (want_node == kENodeValue) { do { is_invalid = 
# 2167 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     1
# 2167 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ; east_set_error(pstate, &ast.err, (gettext("E15: Unexpected multiplication-like operator: %.*s")), cur_token.start); } while (0); do { ((*top_node_p)) = viml_pexpr_new_node(kExprNodeMissing); do { (((*top_node_p)))->start = cur_token.start; (((*top_node_p)))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { ((*top_node_p))->start = prev_token.start; ((*top_node_p))->len += prev_token.len; } } while (0); (*top_node_p)->len = 0; want_node = kENodeOperator; } } while (0);
      switch (cur_token.data.mul.type) {






      case kExprLexMulMul: { do { (cur_node) = viml_pexpr_new_node(kExprNodeMultiplication); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Multiplication" : "Nvim" "Multiplication")); break; }
      case kExprLexMulDiv: { do { (cur_node) = viml_pexpr_new_node(kExprNodeDivision); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Division" : "Nvim" "Division")); break; }
      case kExprLexMulMod: { do { (cur_node) = viml_pexpr_new_node(kExprNodeMod); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Mod" : "Nvim" "Mod")); break; }

      }
      is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err);
      break;
    case kExprLexOption: {
      if (want_node == kENodeOperator) {
        do { if (flags & kExprFlagsMulti && (((ast_stack).size) == 1)) { goto viml_pexpr_parse_end; } else { 
# 2184 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void) sizeof ((
# 2184 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       *top_node_p != 
# 2184 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2184 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       *top_node_p != 
# 2184 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void *)0)) ; else __assert_fail (
# 2184 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       "*top_node_p != NULL"
# 2184 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2184, __extension__ __PRETTY_FUNCTION__); }))
# 2184 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; do { is_invalid = 
# 2184 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       1
# 2184 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; east_set_error(pstate, &ast.err, gettext("E15: Missing operator: %.*s"), cur_token.start); } while (0); do { (cur_node) = viml_pexpr_new_node(kExprNodeOpMissing); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); cur_node->len = 0; is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err); goto viml_pexpr_parse_process_token; } } while (0);
      }
      do { (cur_node) = viml_pexpr_new_node(kExprNodeOption); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
      if (cur_token.type == kExprLexInvalid) {
        
# 2188 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void) sizeof ((
# 2188 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       cur_token.len == 1 || (cur_token.len == 3 && pline.data[cur_token.start.col + 2] == ':')
# 2188 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ) ? 1 : 0), __extension__ ({ if (
# 2188 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       cur_token.len == 1 || (cur_token.len == 3 && pline.data[cur_token.start.col + 2] == ':')
# 2188 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ) ; else __assert_fail (
# 2188 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       "cur_token.len == 1 || (cur_token.len == 3 && pline.data[cur_token.start.col + 2] == ':')"
# 2188 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2188, __extension__ __PRETTY_FUNCTION__); }))

                                                                  
# 2190 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                                 ;
        cur_node->data.opt.ident = (
                                    pline.data + cur_token.start.col + cur_token.len);
        cur_node->data.opt.ident_len = 0;
        cur_node->data.opt.scope = (
                                    cur_token.len == 3
                                    ? (ExprOptScope)pline.data[cur_token.start.col + 1]
                                    : kExprOptScopeUnspecified);
      } else {
        cur_node->data.opt.ident = cur_token.data.opt.name;
        cur_node->data.opt.ident_len = cur_token.data.opt.len;
        cur_node->data.opt.scope = cur_token.data.opt.scope;
      }
      *top_node_p = cur_node;
      want_node = kENodeOperator;
      viml_parser_highlight(pstate, cur_token.start, 1, (is_invalid ? "NvimInvalid" "OptionSigil" : "Nvim" "OptionSigil"));
      const size_t scope_shift = (
                                  cur_token.data.opt.scope == kExprOptScopeUnspecified ? 0 : 2);
      if (scope_shift) {
        viml_parser_highlight(pstate, shifted_pos(cur_token.start, 1), 1,
                              (is_invalid ? "NvimInvalid" "OptionScope" : "Nvim" "OptionScope"));
        viml_parser_highlight(pstate, shifted_pos(cur_token.start, 2), 1,
                              (is_invalid ? "NvimInvalid" "OptionScopeDelimiter" : "Nvim" "OptionScopeDelimiter"));
      }
      viml_parser_highlight(pstate, shifted_pos(cur_token.start, scope_shift + 1),
                            cur_token.len - (scope_shift + 1), (is_invalid ? "NvimInvalid" "OptionName" : "Nvim" "OptionName"));
      break;
    }
    case kExprLexEnv:
      if (want_node == kENodeOperator) {
        do { if (flags & kExprFlagsMulti && (((ast_stack).size) == 1)) { goto viml_pexpr_parse_end; } else { 
# 2220 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void) sizeof ((
# 2220 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       *top_node_p != 
# 2220 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2220 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       *top_node_p != 
# 2220 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void *)0)) ; else __assert_fail (
# 2220 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       "*top_node_p != NULL"
# 2220 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2220, __extension__ __PRETTY_FUNCTION__); }))
# 2220 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; do { is_invalid = 
# 2220 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       1
# 2220 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; east_set_error(pstate, &ast.err, gettext("E15: Missing operator: %.*s"), cur_token.start); } while (0); do { (cur_node) = viml_pexpr_new_node(kExprNodeOpMissing); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); cur_node->len = 0; is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err); goto viml_pexpr_parse_process_token; } } while (0);
      }
      do { (cur_node) = viml_pexpr_new_node(kExprNodeEnvironment); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
      cur_node->data.env.ident = pline.data + cur_token.start.col + 1;
      cur_node->data.env.ident_len = cur_token.len - 1;
      if (cur_node->data.env.ident_len == 0) {
        do { is_invalid = 
# 2226 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       1
# 2226 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; east_set_error(pstate, &ast.err, gettext("E15: Environment variable name missing"), cur_token.start); } while (0)
                                                                             ;
      }
      *top_node_p = cur_node;
      want_node = kENodeOperator;
      viml_parser_highlight(pstate, cur_token.start, 1, (is_invalid ? "NvimInvalid" "EnvironmentSigil" : "Nvim" "EnvironmentSigil"));
      viml_parser_highlight(pstate, shifted_pos(cur_token.start, 1),
                            cur_token.len - 1, (is_invalid ? "NvimInvalid" "EnvironmentName" : "Nvim" "EnvironmentName"));
      break;
    case kExprLexNot:
      if (want_node == kENodeOperator) {
        do { if (flags & kExprFlagsMulti && (((ast_stack).size) == 1)) { goto viml_pexpr_parse_end; } else { 
# 2237 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void) sizeof ((
# 2237 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       *top_node_p != 
# 2237 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2237 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       *top_node_p != 
# 2237 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void *)0)) ; else __assert_fail (
# 2237 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       "*top_node_p != NULL"
# 2237 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2237, __extension__ __PRETTY_FUNCTION__); }))
# 2237 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; do { is_invalid = 
# 2237 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       1
# 2237 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; east_set_error(pstate, &ast.err, gettext("E15: Missing operator: %.*s"), cur_token.start); } while (0); do { (cur_node) = viml_pexpr_new_node(kExprNodeOpMissing); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); cur_node->len = 0; is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err); goto viml_pexpr_parse_process_token; } } while (0);
      }
      do { (cur_node) = viml_pexpr_new_node(kExprNodeNot); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
      *top_node_p = cur_node;
      (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&cur_node->children));
      viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Not" : "Nvim" "Not"));
      break;
    case kExprLexComparison:
      do { if (want_node == kENodeValue) { do { is_invalid = 
# 2245 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     1
# 2245 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ; east_set_error(pstate, &ast.err, (gettext("E15: Expected value, got comparison operator: %.*s")), cur_token.start); } while (0); do { ((*top_node_p)) = viml_pexpr_new_node(kExprNodeMissing); do { (((*top_node_p)))->start = cur_token.start; (((*top_node_p)))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { ((*top_node_p))->start = prev_token.start; ((*top_node_p))->len += prev_token.len; } } while (0); (*top_node_p)->len = 0; want_node = kENodeOperator; } } while (0);
      do { (cur_node) = viml_pexpr_new_node(kExprNodeComparison); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
      if (cur_token.type == kExprLexInvalid) {
        cur_node->data.cmp.ccs = kCCStrategyUseOption;
        cur_node->data.cmp.type = kExprCmpEqual;
        cur_node->data.cmp.inv = 
# 2250 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                0
# 2250 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                     ;
      } else {
        cur_node->data.cmp.ccs = cur_token.data.cmp.ccs;
        cur_node->data.cmp.type = cur_token.data.cmp.type;
        cur_node->data.cmp.inv = cur_token.data.cmp.inv;
      }
      is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err);
      if (cur_token.data.cmp.ccs != kCCStrategyUseOption) {
        viml_parser_highlight(pstate, cur_token.start, cur_token.len - 1,
                              (is_invalid ? "NvimInvalid" "Comparison" : "Nvim" "Comparison"));
        viml_parser_highlight(pstate, shifted_pos(cur_token.start, cur_token.len - 1), 1,
                              (is_invalid ? "NvimInvalid" "ComparisonModifier" : "Nvim" "ComparisonModifier"));
      } else {
        viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Comparison" : "Nvim" "Comparison"));
      }
      want_node = kENodeValue;
      break;
    case kExprLexComma:
      
# 2268 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void) sizeof ((
# 2268 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     !(want_node == kENodeValue && cur_pt == kEPTLambdaArguments)
# 2268 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ? 1 : 0), __extension__ ({ if (
# 2268 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     !(want_node == kENodeValue && cur_pt == kEPTLambdaArguments)
# 2268 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ; else __assert_fail (
# 2268 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     "!(want_node == kENodeValue && cur_pt == kEPTLambdaArguments)"
# 2268 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2268, __extension__ __PRETTY_FUNCTION__); }))
# 2268 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                                         ;
      if (want_node == kENodeValue) {


        do { is_invalid = 
# 2272 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       1
# 2272 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; east_set_error(pstate, &ast.err, gettext("E15: Expected value, got comma: %.*s"), cur_token.start); } while (0);
        do { (cur_node) = viml_pexpr_new_node(kExprNodeMissing); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
        cur_node->len = 0;
        *top_node_p = cur_node;
        want_node = kENodeOperator;
      }
      if (cur_pt == kEPTLambdaArguments) {
        
# 2279 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void) sizeof ((
# 2279 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       lambda_node != 
# 2279 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2279 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       lambda_node != 
# 2279 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void *)0)) ; else __assert_fail (
# 2279 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       "lambda_node != NULL"
# 2279 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2279, __extension__ __PRETTY_FUNCTION__); }))
# 2279 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                  ;
        
# 2280 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void) sizeof ((
# 2280 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       lambda_node->data.fig.type_guesses.allow_lambda
# 2280 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ) ? 1 : 0), __extension__ ({ if (
# 2280 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       lambda_node->data.fig.type_guesses.allow_lambda
# 2280 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ) ; else __assert_fail (
# 2280 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       "lambda_node->data.fig.type_guesses.allow_lambda"
# 2280 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2280, __extension__ __PRETTY_FUNCTION__); }))
# 2280 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                              ;
        do { ExprASTNode *const node_ = (lambda_node); 
# 2281 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void) sizeof ((
# 2281 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       node_->type == kExprNodeUnknownFigure || node_->type == kExprNodeLambda
# 2281 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ) ? 1 : 0), __extension__ ({ if (
# 2281 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       node_->type == kExprNodeUnknownFigure || node_->type == kExprNodeLambda
# 2281 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ) ; else __assert_fail (
# 2281 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       "node_->type == kExprNodeUnknownFigure || node_->type == kExprNodeLambda"
# 2281 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2281, __extension__ __PRETTY_FUNCTION__); }))
# 2281 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; node_->type = kExprNodeLambda; if (pstate->colors) { ((*pstate->colors).items[(node_->data.fig.opening_hl_idx)]).group = (is_invalid ? "NvimInvalid" "Lambda" : "Nvim" "Lambda"); } } while (0);
      }
      if (((ast_stack).size) < 2) {
        goto viml_pexpr_parse_invalid_comma;
      }
      for (size_t i = 1; i < ((ast_stack).size); i++) {
        ExprASTNode *const *const eastnode_p =
          (ExprASTNode *const *)((ast_stack).items[(((ast_stack).size) - (i) - 1)]);
        const ExprASTNodeType eastnode_type = (*eastnode_p)->type;
        const ExprOpLvl eastnode_lvl = node_lvl(**eastnode_p);
        if (eastnode_type == kExprNodeLambda) {
          
# 2292 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2292 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         cur_pt == kEPTLambdaArguments && want_node == kENodeOperator
# 2292 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ? 1 : 0), __extension__ ({ if (
# 2292 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         cur_pt == kEPTLambdaArguments && want_node == kENodeOperator
# 2292 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ; else __assert_fail (
# 2292 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         "cur_pt == kEPTLambdaArguments && want_node == kENodeOperator"
# 2292 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2292, __extension__ __PRETTY_FUNCTION__); }))
                                                
# 2293 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                               ;
          break;
        } else if (eastnode_type == kExprNodeDictLiteral
                   || eastnode_type == kExprNodeListLiteral
                   || eastnode_type == kExprNodeCall) {
          break;
        } else if (eastnode_type == kExprNodeComma
                   || eastnode_type == kExprNodeColon
                   || eastnode_lvl > kEOpLvlComma) {

        } else {
viml_pexpr_parse_invalid_comma:
          do { is_invalid = 
# 2305 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         1
# 2305 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; east_set_error(pstate, &ast.err, gettext("E15: Comma outside of call, lambda or literal: %.*s"), cur_token.start); } while (0)
                                                                                            ;
          break;
        }
        if (i == ((ast_stack).size) - 1) {
          goto viml_pexpr_parse_invalid_comma;
        }
      }
      do { (cur_node) = viml_pexpr_new_node(kExprNodeComma); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
      is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err);
      viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Comma" : "Nvim" "Comma"));
      break;

    case kExprLexColon: {
      
# 2319 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     _Bool 
# 2319 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
          is_ternary = 
# 2319 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                       0
# 2319 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                            ;
      if (((ast_stack).size) < 2) {
        goto viml_pexpr_parse_invalid_colon;
      }
      
# 2323 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     _Bool 
# 2323 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
          can_be_ternary = 
# 2323 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                           1
# 2323 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                               ;
      
# 2324 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     _Bool 
# 2324 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
          is_subscript = 
# 2324 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                         0
# 2324 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                              ;
      for (size_t i = 1; i < ((ast_stack).size); i++) {
        ExprASTNode *const *const eastnode_p =
          (ExprASTNode *const *)((ast_stack).items[(((ast_stack).size) - (i) - 1)]);
        const ExprASTNodeType eastnode_type = (*eastnode_p)->type;
        const ExprOpLvl eastnode_lvl = node_lvl(**eastnode_p);
        do { _Static_assert(kEOpLvlTernary > kEOpLvlComma, "Unexpected operator priorities"); } while (0)
                                                       ;
        if (can_be_ternary && eastnode_type == kExprNodeTernaryValue
            && !(*eastnode_p)->data.ter.got_colon) {
          ((ast_stack).size -= (i));
          (*eastnode_p)->start = cur_token.start;
          (*eastnode_p)->len = cur_token.len;
          if (prev_token.type == kExprLexSpacing) {
            (*eastnode_p)->start = prev_token.start;
            (*eastnode_p)->len += prev_token.len;
          }
          is_ternary = 
# 2341 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                      1
# 2341 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                          ;
          (*eastnode_p)->data.ter.got_colon = 
# 2342 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                             1
# 2342 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                 ;
          do { if (want_node == kENodeValue) { do { is_invalid = 
# 2343 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         1
# 2343 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; east_set_error(pstate, &ast.err, (gettext("E15: Expected value, got colon: %.*s")), cur_token.start); } while (0); do { ((*top_node_p)) = viml_pexpr_new_node(kExprNodeMissing); do { (((*top_node_p)))->start = cur_token.start; (((*top_node_p)))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { ((*top_node_p))->start = prev_token.start; ((*top_node_p))->len += prev_token.len; } } while (0); (*top_node_p)->len = 0; want_node = kENodeOperator; } } while (0);
          
# 2344 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2344 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         (*eastnode_p)->children != 
# 2344 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2344 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         (*eastnode_p)->children != 
# 2344 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ; else __assert_fail (
# 2344 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         "(*eastnode_p)->children != NULL"
# 2344 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2344, __extension__ __PRETTY_FUNCTION__); }))
# 2344 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                ;
          
# 2345 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2345 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         (*eastnode_p)->children->next == 
# 2345 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2345 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         (*eastnode_p)->children->next == 
# 2345 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ; else __assert_fail (
# 2345 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         "(*eastnode_p)->children->next == NULL"
# 2345 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2345, __extension__ __PRETTY_FUNCTION__); }))
# 2345 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                      ;
          (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&(*eastnode_p)->children->next));
          break;
        } else if (eastnode_type == kExprNodeUnknownFigure) {
          do { ExprASTNode *const node_ = (*eastnode_p); 
# 2349 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2349 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         node_->type == kExprNodeUnknownFigure || node_->type == kExprNodeDictLiteral
# 2349 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ? 1 : 0), __extension__ ({ if (
# 2349 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         node_->type == kExprNodeUnknownFigure || node_->type == kExprNodeDictLiteral
# 2349 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ; else __assert_fail (
# 2349 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         "node_->type == kExprNodeUnknownFigure || node_->type == kExprNodeDictLiteral"
# 2349 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2349, __extension__ __PRETTY_FUNCTION__); }))
# 2349 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; node_->type = kExprNodeDictLiteral; if (pstate->colors) { ((*pstate->colors).items[(node_->data.fig.opening_hl_idx)]).group = (is_invalid ? "NvimInvalid" "Dict" : "Nvim" "Dict"); } } while (0);
          break;
        } else if (eastnode_type == kExprNodeDictLiteral) {
          break;
        } else if (eastnode_type == kExprNodeSubscript) {
          is_subscript = 
# 2354 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                        1
# 2354 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                            ;

          
# 2356 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2356 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         !is_ternary
# 2356 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ? 1 : 0), __extension__ ({ if (
# 2356 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         !is_ternary
# 2356 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ; else __assert_fail (
# 2356 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         "!is_ternary"
# 2356 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2356, __extension__ __PRETTY_FUNCTION__); }))
# 2356 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                            ;
          break;
        } else if (eastnode_type == kExprNodeColon) {
          goto viml_pexpr_parse_invalid_colon;
        } else if (eastnode_lvl >= kEOpLvlTernaryValue) {

        } else if (eastnode_lvl >= kEOpLvlComma) {
          can_be_ternary = 
# 2363 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                          0
# 2363 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                               ;
        } else {
          goto viml_pexpr_parse_invalid_colon;
        }
        if (i == ((ast_stack).size) - 1) {
          goto viml_pexpr_parse_invalid_colon;
        }
      }
      if (is_subscript) {
        
# 2372 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void) sizeof ((
# 2372 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ((ast_stack).size) > 1
# 2372 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ) ? 1 : 0), __extension__ ({ if (
# 2372 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ((ast_stack).size) > 1
# 2372 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ) ; else __assert_fail (
# 2372 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       "kv_size(ast_stack) > 1"
# 2372 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2372, __extension__ __PRETTY_FUNCTION__); }))
# 2372 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                     ;


        if (want_node == kENodeValue
            && (*((ast_stack).items[(((ast_stack).size) - (1) - 1)]))->type == kExprNodeSubscript) {
          do { (*top_node_p) = viml_pexpr_new_node(kExprNodeMissing); do { ((*top_node_p))->start = cur_token.start; ((*top_node_p))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (*top_node_p)->start = prev_token.start; (*top_node_p)->len += prev_token.len; } } while (0);
          (*top_node_p)->len = 0;
          want_node = kENodeOperator;
        } else {
          do { if (want_node == kENodeValue) { do { is_invalid = 
# 2381 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         1
# 2381 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; east_set_error(pstate, &ast.err, (gettext("E15: Expected value, got colon: %.*s")), cur_token.start); } while (0); do { ((*top_node_p)) = viml_pexpr_new_node(kExprNodeMissing); do { (((*top_node_p)))->start = cur_token.start; (((*top_node_p)))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { ((*top_node_p))->start = prev_token.start; ((*top_node_p))->len += prev_token.len; } } while (0); (*top_node_p)->len = 0; want_node = kENodeOperator; } } while (0);
        }
        do { (cur_node) = viml_pexpr_new_node(kExprNodeColon); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
        is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err);
        viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "SubscriptColon" : "Nvim" "SubscriptColon"));
      } else {
        goto viml_pexpr_parse_valid_colon;
viml_pexpr_parse_invalid_colon:
        do { is_invalid = 
# 2389 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       1
# 2389 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; east_set_error(pstate, &ast.err, gettext("E15: Colon outside of dictionary or ternary operator: %.*s"), cur_token.start); } while (0)
                                                                                                 ;
viml_pexpr_parse_valid_colon:
        do { if (want_node == kENodeValue) { do { is_invalid = 
# 2392 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       1
# 2392 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; east_set_error(pstate, &ast.err, (gettext("E15: Expected value, got colon: %.*s")), cur_token.start); } while (0); do { ((*top_node_p)) = viml_pexpr_new_node(kExprNodeMissing); do { (((*top_node_p)))->start = cur_token.start; (((*top_node_p)))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { ((*top_node_p))->start = prev_token.start; ((*top_node_p))->len += prev_token.len; } } while (0); (*top_node_p)->len = 0; want_node = kENodeOperator; } } while (0);
        if (is_ternary) {
          viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "TernaryColon" : "Nvim" "TernaryColon"));
        } else {
          do { (cur_node) = viml_pexpr_new_node(kExprNodeColon); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
          is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err);
          viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Colon" : "Nvim" "Colon"));
        }
      }
      want_node = kENodeValue;
      break;
    }

    case kExprLexBracket:
      if (cur_token.data.brc.closing) {
        ExprASTNode **new_top_node_p = 
# 2407 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                      ((void *)0)
# 2407 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                          ;






        ((ast_stack).size -= (1));
        if (!((ast_stack).size)) {
          do { (cur_node) = viml_pexpr_new_node(kExprNodeListLiteral); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
          cur_node->len = 0;
          if (want_node != kENodeValue) {
            cur_node->children = *top_node_p;
          }
          *top_node_p = cur_node;
          goto viml_pexpr_parse_bracket_closing_error;
        }
        if (want_node == kENodeValue) {
# 2433 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
          if ((*((ast_stack).items[(((ast_stack).size) - (0) - 1)]))->type != kExprNodeListLiteral
              && (*((ast_stack).items[(((ast_stack).size) - (0) - 1)]))->type != kExprNodeComma
              && (*((ast_stack).items[(((ast_stack).size) - (0) - 1)]))->type != kExprNodeColon) {
            do { is_invalid = 
# 2436 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           1
# 2436 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           ; east_set_error(pstate, &ast.err, gettext("E15: Expected value, got closing bracket: %.*s"), cur_token.start); } while (0)
                                                                                         ;
          }
        }
        do {
          new_top_node_p = ((ast_stack).items[--(ast_stack).size]);
        } while (((ast_stack).size)
                 && (new_top_node_p == 
# 2443 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                      ((void *)0)
                     
# 2444 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                    || ((*new_top_node_p)->type != kExprNodeListLiteral
                         && (*new_top_node_p)->type != kExprNodeSubscript)));
        ExprASTNode *new_top_node = *new_top_node_p;
        switch (new_top_node->type) {
        case kExprNodeListLiteral:
          if (pt_is_assignment(cur_pt) && new_top_node->children == 
# 2449 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                                   ((void *)0)
# 2449 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                                       ) {
            do { is_invalid = 
# 2450 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           1
# 2450 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           ; east_set_error(pstate, &ast.err, gettext("E475: Unable to assign to empty list: %.*s"), cur_token.start); } while (0);
          }
          viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "List" : "Nvim" "List"));
          break;
        case kExprNodeSubscript:
          viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "SubscriptBracket" : "Nvim" "SubscriptBracket"));
          break;
        default:
viml_pexpr_parse_bracket_closing_error:
          
# 2459 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2459 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         !((ast_stack).size)
# 2459 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ? 1 : 0), __extension__ ({ if (
# 2459 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         !((ast_stack).size)
# 2459 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ; else __assert_fail (
# 2459 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         "!kv_size(ast_stack)"
# 2459 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2459, __extension__ __PRETTY_FUNCTION__); }))
# 2459 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                    ;
          do { is_invalid = 
# 2460 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         1
# 2460 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; east_set_error(pstate, &ast.err, gettext("E15: Unexpected closing figure brace: %.*s"), cur_token.start); } while (0);
          viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "List" : "Nvim" "List"));
          break;
        }
        (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (new_top_node_p));
        want_node = kENodeOperator;
        if (((ast_stack).size) <= asgn_level) {
          
# 2467 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2467 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ((ast_stack).size) == asgn_level
# 2467 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ? 1 : 0), __extension__ ({ if (
# 2467 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ((ast_stack).size) == asgn_level
# 2467 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ; else __assert_fail (
# 2467 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         "kv_size(ast_stack) == asgn_level"
# 2467 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2467, __extension__ __PRETTY_FUNCTION__); }))
# 2467 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                 ;
          asgn_level = 0;
          if (cur_pt == kEPTAssignment) {
            
# 2470 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ((void) sizeof ((
# 2470 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           ast.err.msg
# 2470 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ) ? 1 : 0), __extension__ ({ if (
# 2470 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           ast.err.msg
# 2470 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ) ; else __assert_fail (
# 2470 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           "ast.err.msg"
# 2470 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2470, __extension__ __PRETTY_FUNCTION__); }))
# 2470 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                              ;
          } else if (cur_pt == kEPTExpr
                     && ((pt_stack).size) > 1
                     && pt_is_assignment(((pt_stack).items[(((pt_stack).size) - (1) - 1)]))) {
            ((pt_stack).size -= (1));
          }
        }
        if (cur_pt == kEPTSingleAssignment && ((ast_stack).size) == 1) {
          ((pt_stack).size -= (1));
        }
      } else {
        if (want_node == kENodeValue) {

          do { (cur_node) = viml_pexpr_new_node(kExprNodeListLiteral); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
          *top_node_p = cur_node;
          (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&cur_node->children));
          if (cur_pt == kEPTAssignment) {


            (*((((pt_stack).size == (pt_stack).capacity) ? (((pt_stack).capacity = (((pt_stack).capacity << 1) > ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0]))))) ? ((pt_stack).capacity << 1) : ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0])))))), (pt_stack).items = ((pt_stack).capacity == ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0]))))) ? ((pt_stack).items == (pt_stack).init_array ? (pt_stack).items : _memcpy_free((pt_stack).init_array, (pt_stack).items, (pt_stack).size * sizeof((pt_stack).items[0]))) : ((pt_stack).items == (pt_stack).init_array ? memcpy(xmalloc((pt_stack).capacity * sizeof((pt_stack).items[0])), (pt_stack).items, (pt_stack).size * sizeof((pt_stack).items[0])) : xrealloc((pt_stack).items, (pt_stack).capacity * sizeof((pt_stack).items[0]))))), 0) : 0), ((pt_stack).items + ((pt_stack).size++))) = (kEPTSingleAssignment));
          } else if (cur_pt == kEPTSingleAssignment) {
            do { is_invalid = 
# 2491 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           1
# 2491 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           ; east_set_error(pstate, &ast.err, gettext("E475: Nested lists not allowed when assigning: %.*s"), cur_token.start); } while (0)
                                                                                              ;
          }
          viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "List" : "Nvim" "List"));
        } else {



          if (prev_token.type == kExprLexSpacing) {
            do { if (flags & kExprFlagsMulti && (((ast_stack).size) == 1)) { goto viml_pexpr_parse_end; } else { 
# 2500 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ((void) sizeof ((
# 2500 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           *top_node_p != 
# 2500 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2500 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           *top_node_p != 
# 2500 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ((void *)0)) ; else __assert_fail (
# 2500 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           "*top_node_p != NULL"
# 2500 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2500, __extension__ __PRETTY_FUNCTION__); }))
# 2500 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           ; do { is_invalid = 
# 2500 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           1
# 2500 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           ; east_set_error(pstate, &ast.err, gettext("E15: Missing operator: %.*s"), cur_token.start); } while (0); do { (cur_node) = viml_pexpr_new_node(kExprNodeOpMissing); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); cur_node->len = 0; is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err); goto viml_pexpr_parse_process_token; } } while (0);
          }
          do { (cur_node) = viml_pexpr_new_node(kExprNodeSubscript); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
          is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err);
          viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "SubscriptBracket" : "Nvim" "SubscriptBracket"));
          if (pt_is_assignment(cur_pt)) {
            
# 2506 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ((void) sizeof ((
# 2506 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           want_node == kENodeValue
# 2506 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ) ? 1 : 0), __extension__ ({ if (
# 2506 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           want_node == kENodeValue
# 2506 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ) ; else __assert_fail (
# 2506 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           "want_node == kENodeValue"
# 2506 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2506, __extension__ __PRETTY_FUNCTION__); }))
# 2506 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                           ;
            asgn_level = ((ast_stack).size) - 1;
            (*((((pt_stack).size == (pt_stack).capacity) ? (((pt_stack).capacity = (((pt_stack).capacity << 1) > ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0]))))) ? ((pt_stack).capacity << 1) : ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0])))))), (pt_stack).items = ((pt_stack).capacity == ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0]))))) ? ((pt_stack).items == (pt_stack).init_array ? (pt_stack).items : _memcpy_free((pt_stack).init_array, (pt_stack).items, (pt_stack).size * sizeof((pt_stack).items[0]))) : ((pt_stack).items == (pt_stack).init_array ? memcpy(xmalloc((pt_stack).capacity * sizeof((pt_stack).items[0])), (pt_stack).items, (pt_stack).size * sizeof((pt_stack).items[0])) : xrealloc((pt_stack).items, (pt_stack).capacity * sizeof((pt_stack).items[0]))))), 0) : 0), ((pt_stack).items + ((pt_stack).size++))) = (kEPTExpr));
          }
        }
      }
      break;
    case kExprLexFigureBrace:
      if (cur_token.data.brc.closing) {
        ExprASTNode **new_top_node_p = 
# 2515 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                      ((void *)0)
# 2515 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                          ;






        ((ast_stack).size -= (1));
        if (!((ast_stack).size)) {
          do { (cur_node) = viml_pexpr_new_node(kExprNodeUnknownFigure); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
          cur_node->data.fig.type_guesses.allow_lambda = 
# 2525 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                        0
# 2525 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                             ;
          cur_node->data.fig.type_guesses.allow_dict = 
# 2526 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                      0
# 2526 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                           ;
          cur_node->data.fig.type_guesses.allow_ident = 
# 2527 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                       0
# 2527 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                            ;
          cur_node->len = 0;
          if (want_node != kENodeValue) {
            cur_node->children = *top_node_p;
          }
          *top_node_p = cur_node;
          new_top_node_p = top_node_p;
          goto viml_pexpr_parse_figure_brace_closing_error;
        }
        if (want_node == kENodeValue) {
          if ((*((ast_stack).items[(((ast_stack).size) - (0) - 1)]))->type != kExprNodeUnknownFigure
              && (*((ast_stack).items[(((ast_stack).size) - (0) - 1)]))->type != kExprNodeComma) {


            do { is_invalid = 
# 2541 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           1
# 2541 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           ; east_set_error(pstate, &ast.err, gettext("E15: Expected value, got closing figure brace: %.*s"), cur_token.start); } while (0)
                                                                                              ;
          }
        }
        do {
          new_top_node_p = ((ast_stack).items[--(ast_stack).size]);
        } while (((ast_stack).size)
                 && (new_top_node_p == 
# 2548 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                      ((void *)0)
                     
# 2549 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                    || ((*new_top_node_p)->type != kExprNodeUnknownFigure
                         && (*new_top_node_p)->type != kExprNodeDictLiteral
                         && ((*new_top_node_p)->type
                             != kExprNodeCurlyBracesIdentifier)
                         && (*new_top_node_p)->type != kExprNodeLambda)));
        ExprASTNode *new_top_node = *new_top_node_p;
        switch (new_top_node->type) {
        case kExprNodeUnknownFigure:
          if (new_top_node->children == 
# 2557 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                       ((void *)0)
# 2557 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                           ) {

            
# 2559 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ((void) sizeof ((
# 2559 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           want_node == kENodeValue
# 2559 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ) ? 1 : 0), __extension__ ({ if (
# 2559 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           want_node == kENodeValue
# 2559 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ) ; else __assert_fail (
# 2559 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           "want_node == kENodeValue"
# 2559 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2559, __extension__ __PRETTY_FUNCTION__); }))
# 2559 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                           ;
            
# 2560 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ((void) sizeof ((
# 2560 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           new_top_node->data.fig.type_guesses.allow_dict
# 2560 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ) ? 1 : 0), __extension__ ({ if (
# 2560 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           new_top_node->data.fig.type_guesses.allow_dict
# 2560 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ) ; else __assert_fail (
# 2560 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           "new_top_node->data.fig.type_guesses.allow_dict"
# 2560 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2560, __extension__ __PRETTY_FUNCTION__); }))
# 2560 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                                 ;
            do { ExprASTNode *const node_ = (new_top_node); 
# 2561 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ((void) sizeof ((
# 2561 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           node_->type == kExprNodeUnknownFigure || node_->type == kExprNodeDictLiteral
# 2561 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ) ? 1 : 0), __extension__ ({ if (
# 2561 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           node_->type == kExprNodeUnknownFigure || node_->type == kExprNodeDictLiteral
# 2561 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ) ; else __assert_fail (
# 2561 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           "node_->type == kExprNodeUnknownFigure || node_->type == kExprNodeDictLiteral"
# 2561 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2561, __extension__ __PRETTY_FUNCTION__); }))
# 2561 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           ; node_->type = kExprNodeDictLiteral; if (pstate->colors) { ((*pstate->colors).items[(node_->data.fig.opening_hl_idx)]).group = (is_invalid ? "NvimInvalid" "Dict" : "Nvim" "Dict"); } } while (0);
            viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Dict" : "Nvim" "Dict"));
          } else if (new_top_node->data.fig.type_guesses.allow_ident) {
            do { ExprASTNode *const node_ = (new_top_node); 
# 2564 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ((void) sizeof ((
# 2564 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           node_->type == kExprNodeUnknownFigure || node_->type == kExprNodeCurlyBracesIdentifier
# 2564 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ) ? 1 : 0), __extension__ ({ if (
# 2564 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           node_->type == kExprNodeUnknownFigure || node_->type == kExprNodeCurlyBracesIdentifier
# 2564 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           ) ; else __assert_fail (
# 2564 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           "node_->type == kExprNodeUnknownFigure || node_->type == kExprNodeCurlyBracesIdentifier"
# 2564 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2564, __extension__ __PRETTY_FUNCTION__); }))
# 2564 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           ; node_->type = kExprNodeCurlyBracesIdentifier; if (pstate->colors) { ((*pstate->colors).items[(node_->data.fig.opening_hl_idx)]).group = (is_invalid ? "NvimInvalid" "Curly" : "Nvim" "Curly"); } } while (0)
                                           ;
            viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Curly" : "Nvim" "Curly"));
          } else {



            do { is_invalid = 
# 2571 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           1
# 2571 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           ; east_set_error(pstate, &ast.err, gettext("E15: Don't know what figure brace means: %.*s"), new_top_node->start); } while (0)
                                                                                       ;
            if (pstate->colors) {

              ((*pstate->colors).items[(new_top_node->data.fig.opening_hl_idx)])
                                                         .group = (
                                                                   (is_invalid ? "NvimInvalid" "FigureBrace" : "Nvim" "FigureBrace"));
            }
            viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "FigureBrace" : "Nvim" "FigureBrace"));
          }
          break;
        case kExprNodeDictLiteral:
          viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Dict" : "Nvim" "Dict"));
          break;
        case kExprNodeCurlyBracesIdentifier:
          viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Curly" : "Nvim" "Curly"));
          break;
        case kExprNodeLambda:
          viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Lambda" : "Nvim" "Lambda"));
          break;
        default:
viml_pexpr_parse_figure_brace_closing_error:
          
# 2593 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2593 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         !((ast_stack).size)
# 2593 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ? 1 : 0), __extension__ ({ if (
# 2593 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         !((ast_stack).size)
# 2593 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ; else __assert_fail (
# 2593 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         "!kv_size(ast_stack)"
# 2593 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2593, __extension__ __PRETTY_FUNCTION__); }))
# 2593 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                    ;
          do { is_invalid = 
# 2594 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         1
# 2594 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; east_set_error(pstate, &ast.err, gettext("E15: Unexpected closing figure brace: %.*s"), cur_token.start); } while (0);
          viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "FigureBrace" : "Nvim" "FigureBrace"));
          break;
        }
        (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (new_top_node_p));
        want_node = kENodeOperator;
        if (((ast_stack).size) <= asgn_level) {
          
# 2601 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2601 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ((ast_stack).size) == asgn_level
# 2601 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ? 1 : 0), __extension__ ({ if (
# 2601 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ((ast_stack).size) == asgn_level
# 2601 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ; else __assert_fail (
# 2601 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         "kv_size(ast_stack) == asgn_level"
# 2601 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2601, __extension__ __PRETTY_FUNCTION__); }))
# 2601 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                 ;
          if (cur_pt == kEPTExpr
              && ((pt_stack).size) > 1
              && pt_is_assignment(((pt_stack).items[(((pt_stack).size) - (1) - 1)]))) {
            ((pt_stack).size -= (1));
            asgn_level = 0;
          }
        }
      } else {
        if (want_node == kENodeValue) {
          viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "FigureBrace" : "Nvim" "FigureBrace"));





          if (pt_is_assignment(cur_pt)) {
            do { (cur_node) = viml_pexpr_new_node(kExprNodeCurlyBracesIdentifier); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
            cur_node->data.fig.type_guesses.allow_lambda = 
# 2619 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                          0
# 2619 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                               ;
            cur_node->data.fig.type_guesses.allow_dict = 
# 2620 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                        0
# 2620 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                             ;
            cur_node->data.fig.type_guesses.allow_ident = 
# 2621 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                         1
# 2621 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                             ;
            (*((((pt_stack).size == (pt_stack).capacity) ? (((pt_stack).capacity = (((pt_stack).capacity << 1) > ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0]))))) ? ((pt_stack).capacity << 1) : ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0])))))), (pt_stack).items = ((pt_stack).capacity == ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0]))))) ? ((pt_stack).items == (pt_stack).init_array ? (pt_stack).items : _memcpy_free((pt_stack).init_array, (pt_stack).items, (pt_stack).size * sizeof((pt_stack).items[0]))) : ((pt_stack).items == (pt_stack).init_array ? memcpy(xmalloc((pt_stack).capacity * sizeof((pt_stack).items[0])), (pt_stack).items, (pt_stack).size * sizeof((pt_stack).items[0])) : xrealloc((pt_stack).items, (pt_stack).capacity * sizeof((pt_stack).items[0]))))), 0) : 0), ((pt_stack).items + ((pt_stack).size++))) = (kEPTExpr));
          } else {
            do { (cur_node) = viml_pexpr_new_node(kExprNodeUnknownFigure); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
            cur_node->data.fig.type_guesses.allow_lambda = 
# 2625 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                          1
# 2625 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                              ;
            cur_node->data.fig.type_guesses.allow_dict = 
# 2626 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                        1
# 2626 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                            ;
            cur_node->data.fig.type_guesses.allow_ident = 
# 2627 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                                         1
# 2627 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                             ;
          }
          if (pstate->colors) {
            cur_node->data.fig.opening_hl_idx = ((*pstate->colors).size) - 1;
          }
          *top_node_p = cur_node;
          (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&cur_node->children));
          (*((((pt_stack).size == (pt_stack).capacity) ? (((pt_stack).capacity = (((pt_stack).capacity << 1) > ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0]))))) ? ((pt_stack).capacity << 1) : ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0])))))), (pt_stack).items = ((pt_stack).capacity == ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0]))))) ? ((pt_stack).items == (pt_stack).init_array ? (pt_stack).items : _memcpy_free((pt_stack).init_array, (pt_stack).items, (pt_stack).size * sizeof((pt_stack).items[0]))) : ((pt_stack).items == (pt_stack).init_array ? memcpy(xmalloc((pt_stack).capacity * sizeof((pt_stack).items[0])), (pt_stack).items, (pt_stack).size * sizeof((pt_stack).items[0])) : xrealloc((pt_stack).items, (pt_stack).capacity * sizeof((pt_stack).items[0]))))), 0) : 0), ((pt_stack).items + ((pt_stack).size++))) = (kEPTLambdaArguments));
          lambda_node = cur_node;
        } else {

          do { 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         want_node == kENodeOperator
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ? 1 : 0), __extension__ ({ if (
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         want_node == kENodeOperator
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ; else __assert_fail (
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         "want_node == kENodeOperator"
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2638, __extension__ __PRETTY_FUNCTION__); }))
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; if (prev_token.type == kExprLexSpacing) { do { if (flags & kExprFlagsMulti && (((ast_stack).size) == 1)) { goto viml_pexpr_parse_end; } else { 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         *top_node_p != 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         *top_node_p != 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ; else __assert_fail ("*top_node_p != NULL", "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2638, __extension__ __PRETTY_FUNCTION__); }))
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; do { is_invalid = 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         1
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; east_set_error(pstate, &ast.err, gettext("E15: Missing operator: %.*s"), cur_token.start); } while (0); do { (cur_node) = viml_pexpr_new_node(kExprNodeOpMissing); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); cur_node->len = 0; is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err); goto viml_pexpr_parse_process_token; } } while (0); } switch ((*top_node_p)->type) { case kExprNodeComplexIdentifier: case kExprNodePlainIdentifier: case kExprNodeCurlyBracesIdentifier: { do { (cur_node) = viml_pexpr_new_node(kExprNodeComplexIdentifier); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); cur_node->len = 0; cur_node->children = *top_node_p; *top_node_p = cur_node; (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&cur_node->children->next)); ExprASTNode **const new_top_node_p = ((ast_stack).items[(((ast_stack).size) - (0) - 1)]); 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         *new_top_node_p == 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         *new_top_node_p == 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ; else __assert_fail ("*new_top_node_p == NULL", "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2638, __extension__ __PRETTY_FUNCTION__); }))
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; do { do { (cur_node) = viml_pexpr_new_node(kExprNodeCurlyBracesIdentifier); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); cur_node->data.fig.opening_hl_idx = ((*pstate->colors).size); cur_node->data.fig.type_guesses.allow_lambda = 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         0
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; cur_node->data.fig.type_guesses.allow_dict = 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         0
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; cur_node->data.fig.type_guesses.allow_ident = 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         1
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&cur_node->children)); if (pt_is_assignment(cur_pt)) { (*((((pt_stack).size == (pt_stack).capacity) ? (((pt_stack).capacity = (((pt_stack).capacity << 1) > ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0]))))) ? ((pt_stack).capacity << 1) : ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0])))))), (pt_stack).items = ((pt_stack).capacity == ((sizeof((pt_stack).init_array)/sizeof(((pt_stack).init_array)[0])) / ((size_t)(!(sizeof((pt_stack).init_array) % sizeof(((pt_stack).init_array)[0]))))) ? ((pt_stack).items == (pt_stack).init_array ? (pt_stack).items : _memcpy_free((pt_stack).init_array, (pt_stack).items, (pt_stack).size * sizeof((pt_stack).items[0]))) : ((pt_stack).items == (pt_stack).init_array ? memcpy(xmalloc((pt_stack).capacity * sizeof((pt_stack).items[0])), (pt_stack).items, (pt_stack).size * sizeof((pt_stack).items[0])) : xrealloc((pt_stack).items, (pt_stack).capacity * sizeof((pt_stack).items[0]))))), 0) : 0), ((pt_stack).items + ((pt_stack).size++))) = (kEPTExpr)); } want_node = kENodeValue; } while (0); *new_top_node_p = cur_node; viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         "Curly" 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         : "Nvim" 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         "Curly"
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         )); break; } default: { do { if (flags & kExprFlagsMulti && (((ast_stack).size) == 1)) { goto viml_pexpr_parse_end; } else { 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         *top_node_p != 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         *top_node_p != 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ; else __assert_fail ("*top_node_p != NULL", "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2638, __extension__ __PRETTY_FUNCTION__); }))
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; do { is_invalid = 
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         1
# 2638 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; east_set_error(pstate, &ast.err, gettext("E15: Missing operator: %.*s"), cur_token.start); } while (0); do { (cur_node) = viml_pexpr_new_node(kExprNodeOpMissing); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); cur_node->len = 0; is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err); goto viml_pexpr_parse_process_token; } } while (0); break; } } } while (0)
# 2651 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                          ;

        }
        if (pt_is_assignment(cur_pt)
            && !pt_is_assignment(((pt_stack).items[(((pt_stack).size) - (0) - 1)]))) {
          
# 2656 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2656 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         want_node == kENodeValue
# 2656 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ? 1 : 0), __extension__ ({ if (
# 2656 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         want_node == kENodeValue
# 2656 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ; else __assert_fail (
# 2656 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         "want_node == kENodeValue"
# 2656 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2656, __extension__ __PRETTY_FUNCTION__); }))
# 2656 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                         ;
          asgn_level = ((ast_stack).size) - 1;
        }
      }
      break;
    case kExprLexArrow:
      if (cur_pt == kEPTLambdaArguments) {
        ((pt_stack).size -= (1));
        
# 2664 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void) sizeof ((
# 2664 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ((pt_stack).size)
# 2664 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ) ? 1 : 0), __extension__ ({ if (
# 2664 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ((pt_stack).size)
# 2664 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ) ; else __assert_fail (
# 2664 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       "kv_size(pt_stack)"
# 2664 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2664, __extension__ __PRETTY_FUNCTION__); }))
# 2664 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                ;
        if (want_node == kENodeValue) {


          ((ast_stack).size -= (1));
        }
        
# 2670 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void) sizeof ((
# 2670 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ((ast_stack).size) >= 1
# 2670 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ) ? 1 : 0), __extension__ ({ if (
# 2670 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ((ast_stack).size) >= 1
# 2670 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ) ; else __assert_fail (
# 2670 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       "kv_size(ast_stack) >= 1"
# 2670 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2670, __extension__ __PRETTY_FUNCTION__); }))
# 2670 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                      ;
        while ((*((ast_stack).items[(((ast_stack).size) - (0) - 1)]))->type != kExprNodeLambda
               && (*((ast_stack).items[(((ast_stack).size) - (0) - 1)]))->type != kExprNodeUnknownFigure) {
          ((ast_stack).size -= (1));
        }
        
# 2675 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void) sizeof ((
# 2675 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       (*((ast_stack).items[(((ast_stack).size) - (0) - 1)])) == lambda_node
# 2675 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ) ? 1 : 0), __extension__ ({ if (
# 2675 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       (*((ast_stack).items[(((ast_stack).size) - (0) - 1)])) == lambda_node
# 2675 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ) ; else __assert_fail (
# 2675 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       "(*kv_last(ast_stack)) == lambda_node"
# 2675 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2675, __extension__ __PRETTY_FUNCTION__); }))
# 2675 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                   ;
        do { ExprASTNode *const node_ = (lambda_node); 
# 2676 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void) sizeof ((
# 2676 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       node_->type == kExprNodeUnknownFigure || node_->type == kExprNodeLambda
# 2676 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ) ? 1 : 0), __extension__ ({ if (
# 2676 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       node_->type == kExprNodeUnknownFigure || node_->type == kExprNodeLambda
# 2676 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ) ; else __assert_fail (
# 2676 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       "node_->type == kExprNodeUnknownFigure || node_->type == kExprNodeLambda"
# 2676 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2676, __extension__ __PRETTY_FUNCTION__); }))
# 2676 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; node_->type = kExprNodeLambda; if (pstate->colors) { ((*pstate->colors).items[(node_->data.fig.opening_hl_idx)]).group = (is_invalid ? "NvimInvalid" "Lambda" : "Nvim" "Lambda"); } } while (0);
        do { (cur_node) = viml_pexpr_new_node(kExprNodeArrow); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
        if (lambda_node->children == 
# 2678 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                    ((void *)0)
# 2678 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                        ) {
          
# 2679 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2679 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         want_node == kENodeValue
# 2679 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ? 1 : 0), __extension__ ({ if (
# 2679 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         want_node == kENodeValue
# 2679 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ; else __assert_fail (
# 2679 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         "want_node == kENodeValue"
# 2679 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2679, __extension__ __PRETTY_FUNCTION__); }))
# 2679 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                         ;
          lambda_node->children = cur_node;
          (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&lambda_node->children));
        } else {
          
# 2683 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2683 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         lambda_node->children->next == 
# 2683 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2683 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         lambda_node->children->next == 
# 2683 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ; else __assert_fail (
# 2683 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         "lambda_node->children->next == NULL"
# 2683 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2683, __extension__ __PRETTY_FUNCTION__); }))
# 2683 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                    ;
          lambda_node->children->next = cur_node;
          (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&lambda_node->children->next));
        }
        (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&cur_node->children));
        lambda_node = 
# 2688 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                     ((void *)0)
# 2688 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                         ;
      } else {

        do { if (want_node == kENodeValue) { do { is_invalid = 
# 2691 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       1
# 2691 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; east_set_error(pstate, &ast.err, (gettext("E15: Unexpected arrow: %.*s")), cur_token.start); } while (0); do { ((*top_node_p)) = viml_pexpr_new_node(kExprNodeMissing); do { (((*top_node_p)))->start = cur_token.start; (((*top_node_p)))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { ((*top_node_p))->start = prev_token.start; ((*top_node_p))->len += prev_token.len; } } while (0); (*top_node_p)->len = 0; want_node = kENodeOperator; } } while (0);
        do { is_invalid = 
# 2692 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       1
# 2692 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; east_set_error(pstate, &ast.err, gettext("E15: Arrow outside of lambda: %.*s"), cur_token.start); } while (0);
        do { (cur_node) = viml_pexpr_new_node(kExprNodeArrow); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
        is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err);
      }
      want_node = kENodeValue;
      viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Arrow" : "Nvim" "Arrow"));
      break;
    case kExprLexPlainIdentifier: {
      const ExprVarScope scope = (cur_token.type == kExprLexInvalid
                                  ? kExprVarScopeMissing
                                  : cur_token.data.var.scope);
      if (want_node == kENodeValue) {
        want_node = kENodeOperator;
        do { (cur_node) = viml_pexpr_new_node((node_is_key ? kExprNodePlainKey : kExprNodePlainIdentifier)); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0)


                                                           ;
        cur_node->data.var.scope = scope;
        const size_t scope_shift = (scope == kExprVarScopeMissing ? 0 : 2);
        cur_node->data.var.ident = (pline.data + cur_token.start.col
                                    + scope_shift);
        cur_node->data.var.ident_len = cur_token.len - scope_shift;
        *top_node_p = cur_node;
        if (scope_shift) {
          
# 2716 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2716 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         !node_is_key
# 2716 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ? 1 : 0), __extension__ ({ if (
# 2716 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         !node_is_key
# 2716 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ; else __assert_fail (
# 2716 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         "!node_is_key"
# 2716 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2716, __extension__ __PRETTY_FUNCTION__); }))
# 2716 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                             ;
          viml_parser_highlight(pstate, cur_token.start, 1,
                                (is_invalid ? "NvimInvalid" "IdentifierScope" : "Nvim" "IdentifierScope"));
          viml_parser_highlight(pstate, shifted_pos(cur_token.start, 1), 1,
                                (is_invalid ? "NvimInvalid" "IdentifierScopeDelimiter" : "Nvim" "IdentifierScopeDelimiter"));
        }
        viml_parser_highlight(pstate, shifted_pos(cur_token.start,
                                                  scope_shift),
                              cur_token.len - scope_shift,
                              (node_is_key
                               ? (is_invalid ? "NvimInvalid" "IdentifierKey" : "Nvim" "IdentifierKey")
                               : (is_invalid ? "NvimInvalid" "IdentifierName" : "Nvim" "IdentifierName")));
      } else {
        if (scope == kExprVarScopeMissing) {

          do { 
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         want_node == kENodeOperator
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ? 1 : 0), __extension__ ({ if (
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         want_node == kENodeOperator
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ) ; else __assert_fail (
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         "want_node == kENodeOperator"
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2731, __extension__ __PRETTY_FUNCTION__); }))
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; if (prev_token.type == kExprLexSpacing) { do { if (flags & kExprFlagsMulti && (((ast_stack).size) == 1)) { goto viml_pexpr_parse_end; } else { 
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         *top_node_p != 
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         *top_node_p != 
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ; else __assert_fail ("*top_node_p != NULL", "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2731, __extension__ __PRETTY_FUNCTION__); }))
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; do { is_invalid = 
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         1
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; east_set_error(pstate, &ast.err, gettext("E15: Missing operator: %.*s"), cur_token.start); } while (0); do { (cur_node) = viml_pexpr_new_node(kExprNodeOpMissing); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); cur_node->len = 0; is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err); goto viml_pexpr_parse_process_token; } } while (0); } switch ((*top_node_p)->type) { case kExprNodeComplexIdentifier: case kExprNodePlainIdentifier: case kExprNodeCurlyBracesIdentifier: { do { (cur_node) = viml_pexpr_new_node(kExprNodeComplexIdentifier); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); cur_node->len = 0; cur_node->children = *top_node_p; *top_node_p = cur_node; (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&cur_node->children->next)); ExprASTNode **const new_top_node_p = ((ast_stack).items[(((ast_stack).size) - (0) - 1)]); 
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         *new_top_node_p == 
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         *new_top_node_p == 
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ; else __assert_fail ("*new_top_node_p == NULL", "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2731, __extension__ __PRETTY_FUNCTION__); }))
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; do { do { (cur_node) = viml_pexpr_new_node(kExprNodePlainIdentifier); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); cur_node->data.var.scope = scope; cur_node->data.var.ident = pline.data + cur_token.start.col; cur_node->data.var.ident_len = cur_token.len; want_node = kENodeOperator; } while (0); *new_top_node_p = cur_node; viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" 
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         "IdentifierName" 
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         : "Nvim" 
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         "IdentifierName"
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         )); break; } default: { do { if (flags & kExprFlagsMulti && (((ast_stack).size) == 1)) { goto viml_pexpr_parse_end; } else { 
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         *top_node_p != 
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         *top_node_p != 
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ; else __assert_fail ("*top_node_p != NULL", "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2731, __extension__ __PRETTY_FUNCTION__); }))
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; do { is_invalid = 
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         1
# 2731 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; east_set_error(pstate, &ast.err, gettext("E15: Missing operator: %.*s"), cur_token.start); } while (0); do { (cur_node) = viml_pexpr_new_node(kExprNodeOpMissing); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); cur_node->len = 0; is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err); goto viml_pexpr_parse_process_token; } } while (0); break; } } } while (0)






                                   ;

        } else {
          do { if (flags & kExprFlagsMulti && (((ast_stack).size) == 1)) { goto viml_pexpr_parse_end; } else { 
# 2741 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2741 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         *top_node_p != 
# 2741 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2741 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         *top_node_p != 
# 2741 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ; else __assert_fail (
# 2741 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         "*top_node_p != NULL"
# 2741 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2741, __extension__ __PRETTY_FUNCTION__); }))
# 2741 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; do { is_invalid = 
# 2741 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         1
# 2741 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; east_set_error(pstate, &ast.err, gettext("E15: Missing operator: %.*s"), cur_token.start); } while (0); do { (cur_node) = viml_pexpr_new_node(kExprNodeOpMissing); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); cur_node->len = 0; is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err); goto viml_pexpr_parse_process_token; } } while (0);
        }
      }
      break;
    }
    case kExprLexNumber:
      if (want_node != kENodeValue) {
        do { if (flags & kExprFlagsMulti && (((ast_stack).size) == 1)) { goto viml_pexpr_parse_end; } else { 
# 2748 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void) sizeof ((
# 2748 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       *top_node_p != 
# 2748 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2748 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       *top_node_p != 
# 2748 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void *)0)) ; else __assert_fail (
# 2748 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       "*top_node_p != NULL"
# 2748 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2748, __extension__ __PRETTY_FUNCTION__); }))
# 2748 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; do { is_invalid = 
# 2748 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       1
# 2748 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; east_set_error(pstate, &ast.err, gettext("E15: Missing operator: %.*s"), cur_token.start); } while (0); do { (cur_node) = viml_pexpr_new_node(kExprNodeOpMissing); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); cur_node->len = 0; is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err); goto viml_pexpr_parse_process_token; } } while (0);
      }
      if (node_is_key) {
        do { (cur_node) = viml_pexpr_new_node(kExprNodePlainKey); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
        cur_node->data.var.ident = pline.data + cur_token.start.col;
        cur_node->data.var.ident_len = cur_token.len;
        viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "IdentifierKey" : "Nvim" "IdentifierKey"));
      } else if (cur_token.data.num.is_float) {
        do { (cur_node) = viml_pexpr_new_node(kExprNodeFloat); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
        cur_node->data.flt.value = cur_token.data.num.val.floating;
        viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Float" : "Nvim" "Float"));
      } else {
        do { (cur_node) = viml_pexpr_new_node(kExprNodeInteger); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
        cur_node->data.num.value = cur_token.data.num.val.integer;
        const uint8_t prefix_length = base_to_prefix_length[
                                                            cur_token.data.num.base];
        viml_parser_highlight(pstate, cur_token.start, prefix_length,
                              (is_invalid ? "NvimInvalid" "NumberPrefix" : "Nvim" "NumberPrefix"));
        viml_parser_highlight(pstate, shifted_pos(cur_token.start, prefix_length),
                              cur_token.len - prefix_length, (is_invalid ? "NvimInvalid" "Number" : "Nvim" "Number"));
      }
      want_node = kENodeOperator;
      *top_node_p = cur_node;
      break;
    case kExprLexDot:
      do { if (want_node == kENodeValue) { do { is_invalid = 
# 2773 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     1
# 2773 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ; east_set_error(pstate, &ast.err, (gettext("E15: Unexpected dot: %.*s")), cur_token.start); } while (0); do { ((*top_node_p)) = viml_pexpr_new_node(kExprNodeMissing); do { (((*top_node_p)))->start = cur_token.start; (((*top_node_p)))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { ((*top_node_p))->start = prev_token.start; ((*top_node_p))->len += prev_token.len; } } while (0); (*top_node_p)->len = 0; want_node = kENodeOperator; } } while (0);
      if (prev_token.type == kExprLexSpacing) {
        if (cur_pt == kEPTAssignment) {
          do { is_invalid = 
# 2776 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         1
# 2776 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; east_set_error(pstate, &ast.err, gettext("E15: Cannot concatenate in assignments: %.*s"), cur_token.start); } while (0);
        }
        do { (cur_node) = viml_pexpr_new_node(kExprNodeConcat); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
        viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Concat" : "Nvim" "Concat"));
      } else {
        do { (cur_node) = viml_pexpr_new_node(kExprNodeConcatOrSubscript); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
        viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "ConcatOrSubscript" : "Nvim" "ConcatOrSubscript"));
      }
      is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err);
      break;
    case kExprLexParenthesis:
      if (cur_token.data.brc.closing) {
        if (want_node == kENodeValue) {
          if (((ast_stack).size) > 1) {
            const ExprASTNode *const prev_top_node = *((ast_stack).items[(((ast_stack).size) - (1) - 1)]);
            if (prev_top_node->type == kExprNodeCall) {


              ((ast_stack).size -= (1));
              goto viml_pexpr_parse_no_paren_closing_error;
            }
          }
          do { is_invalid = 
# 2798 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         1
# 2798 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; east_set_error(pstate, &ast.err, gettext("E15: Expected value, got parenthesis: %.*s"), cur_token.start); } while (0);
          do { (cur_node) = viml_pexpr_new_node(kExprNodeMissing); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
          cur_node->len = 0;
          *top_node_p = cur_node;
        } else {



          ((ast_stack).size -= (1));
        }
viml_pexpr_parse_no_paren_closing_error: {}
        ExprASTNode **new_top_node_p = 
# 2809 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                      ((void *)0)
# 2809 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                          ;
        while (((ast_stack).size)
               && (new_top_node_p == 
# 2811 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                    ((void *)0)
                   
# 2812 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                  || ((*new_top_node_p)->type != kExprNodeNested
                       && (*new_top_node_p)->type != kExprNodeCall))) {
          new_top_node_p = ((ast_stack).items[--(ast_stack).size]);
        }
        if (new_top_node_p != 
# 2816 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                             ((void *)0)
            
# 2817 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
           && ((*new_top_node_p)->type == kExprNodeNested
                || (*new_top_node_p)->type == kExprNodeCall)) {
          if ((*new_top_node_p)->type == kExprNodeNested) {
            viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "NestingParenthesis" : "Nvim" "NestingParenthesis"));
          } else {
            viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "CallingParenthesis" : "Nvim" "CallingParenthesis"));
          }
        } else {



          if (new_top_node_p == 
# 2828 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                               ((void *)0)
# 2828 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                   ) {
            new_top_node_p = top_node_p;
          }
          do { is_invalid = 
# 2831 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         1
# 2831 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         ; east_set_error(pstate, &ast.err, gettext("E15: Unexpected closing parenthesis: %.*s"), cur_token.start); } while (0);
          viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "NestingParenthesis" : "Nvim" "NestingParenthesis"));
          cur_node = viml_pexpr_new_node(kExprNodeNested);
          cur_node->start = cur_token.start;
          cur_node->len = 0;


          cur_node->children = *new_top_node_p;
          *new_top_node_p = cur_node;
          
# 2840 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void) sizeof ((
# 2840 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         cur_node->next == 
# 2840 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2840 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         cur_node->next == 
# 2840 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         ((void *)0)) ; else __assert_fail (
# 2840 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
         "cur_node->next == NULL"
# 2840 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
         , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2840, __extension__ __PRETTY_FUNCTION__); }))
# 2840 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                       ;
        }
        (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (new_top_node_p));
        want_node = kENodeOperator;
      } else {
        switch (want_node) {
        case kENodeValue:
          do { (cur_node) = viml_pexpr_new_node(kExprNodeNested); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
          *top_node_p = cur_node;
          (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&cur_node->children));
          viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "NestingParenthesis" : "Nvim" "NestingParenthesis"));
          break;
        case kENodeOperator:
          if (prev_token.type == kExprLexSpacing) {





            if ((*top_node_p)->type != kExprNodePlainIdentifier
                && (*top_node_p)->type != kExprNodeComplexIdentifier
                && (*top_node_p)->type != kExprNodeCurlyBracesIdentifier) {
              do { if (flags & kExprFlagsMulti && (((ast_stack).size) == 1)) { goto viml_pexpr_parse_end; } else { 
# 2862 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
             ((void) sizeof ((
# 2862 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
             *top_node_p != 
# 2862 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
             ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2862 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
             *top_node_p != 
# 2862 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
             ((void *)0)) ; else __assert_fail (
# 2862 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
             "*top_node_p != NULL"
# 2862 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
             , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2862, __extension__ __PRETTY_FUNCTION__); }))
# 2862 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
             ; do { is_invalid = 
# 2862 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
             1
# 2862 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
             ; east_set_error(pstate, &ast.err, gettext("E15: Missing operator: %.*s"), cur_token.start); } while (0); do { (cur_node) = viml_pexpr_new_node(kExprNodeOpMissing); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); cur_node->len = 0; is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err); goto viml_pexpr_parse_process_token; } } while (0);
            }
          }
          do { (cur_node) = viml_pexpr_new_node(kExprNodeCall); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
          is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err);
          viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "CallingParenthesis" : "Nvim" "CallingParenthesis"));
          break;
        }
        want_node = kENodeValue;
      }
      break;
    case kExprLexQuestion: {
      do { if (want_node == kENodeValue) { do { is_invalid = 
# 2874 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     1
# 2874 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ; east_set_error(pstate, &ast.err, (gettext("E15: Expected value, got question mark: %.*s")), cur_token.start); } while (0); do { ((*top_node_p)) = viml_pexpr_new_node(kExprNodeMissing); do { (((*top_node_p)))->start = cur_token.start; (((*top_node_p)))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { ((*top_node_p))->start = prev_token.start; ((*top_node_p))->len += prev_token.len; } } while (0); (*top_node_p)->len = 0; want_node = kENodeOperator; } } while (0);
      do { (cur_node) = viml_pexpr_new_node(kExprNodeTernary); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
      is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err);
      viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "Ternary" : "Nvim" "Ternary"));
      ExprASTNode *ter_val_node;
      do { (ter_val_node) = viml_pexpr_new_node(kExprNodeTernaryValue); do { ((ter_val_node))->start = cur_token.start; ((ter_val_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (ter_val_node)->start = prev_token.start; (ter_val_node)->len += prev_token.len; } } while (0);
      ter_val_node->data.ter.got_colon = 
# 2880 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                                        0
# 2880 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                             ;
      
# 2881 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void) sizeof ((
# 2881 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     cur_node->children != 
# 2881 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2881 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     cur_node->children != 
# 2881 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0)) ; else __assert_fail (
# 2881 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     "cur_node->children != NULL"
# 2881 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2881, __extension__ __PRETTY_FUNCTION__); }))
# 2881 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                       ;
      
# 2882 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void) sizeof ((
# 2882 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     cur_node->children->next == 
# 2882 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2882 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     cur_node->children->next == 
# 2882 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0)) ; else __assert_fail (
# 2882 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     "cur_node->children->next == NULL"
# 2882 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2882, __extension__ __PRETTY_FUNCTION__); }))
# 2882 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                             ;
      
# 2883 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void) sizeof ((
# 2883 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ((ast_stack).items[(((ast_stack).size) - (0) - 1)]) == &cur_node->children->next
# 2883 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ? 1 : 0), __extension__ ({ if (
# 2883 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ((ast_stack).items[(((ast_stack).size) - (0) - 1)]) == &cur_node->children->next
# 2883 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ; else __assert_fail (
# 2883 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     "kv_last(ast_stack) == &cur_node->children->next"
# 2883 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2883, __extension__ __PRETTY_FUNCTION__); }))
# 2883 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                                            ;
      *((ast_stack).items[(((ast_stack).size) - (0) - 1)]) = ter_val_node;
      (*((((ast_stack).size == (ast_stack).capacity) ? (((ast_stack).capacity = (((ast_stack).capacity << 1) > ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).capacity << 1) : ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0])))))), (ast_stack).items = ((ast_stack).capacity == ((sizeof((ast_stack).init_array)/sizeof(((ast_stack).init_array)[0])) / ((size_t)(!(sizeof((ast_stack).init_array) % sizeof(((ast_stack).init_array)[0]))))) ? ((ast_stack).items == (ast_stack).init_array ? (ast_stack).items : _memcpy_free((ast_stack).init_array, (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0]))) : ((ast_stack).items == (ast_stack).init_array ? memcpy(xmalloc((ast_stack).capacity * sizeof((ast_stack).items[0])), (ast_stack).items, (ast_stack).size * sizeof((ast_stack).items[0])) : xrealloc((ast_stack).items, (ast_stack).capacity * sizeof((ast_stack).items[0]))))), 0) : 0), ((ast_stack).items + ((ast_stack).size++))) = (&ter_val_node->children));
      break;
    }
    case kExprLexDoubleQuotedString:
    case kExprLexSingleQuotedString: {
      const 
# 2890 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
           _Bool 
# 2890 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                is_double = (tok_type == kExprLexDoubleQuotedString);
      if (!cur_token.data.str.closed) {



        do { is_invalid = 
# 2895 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       1
# 2895 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; east_set_error(pstate, &ast.err, (is_double ? gettext("E114: Missing double quote: %.*s") : gettext("E115: Missing single quote: %.*s")), cur_token.start); } while (0)

                                                                                      ;
      }
      if (want_node == kENodeOperator) {
        do { if (flags & kExprFlagsMulti && (((ast_stack).size) == 1)) { goto viml_pexpr_parse_end; } else { 
# 2900 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void) sizeof ((
# 2900 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       *top_node_p != 
# 2900 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2900 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       *top_node_p != 
# 2900 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       ((void *)0)) ; else __assert_fail (
# 2900 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       "*top_node_p != NULL"
# 2900 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2900, __extension__ __PRETTY_FUNCTION__); }))
# 2900 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; do { is_invalid = 
# 2900 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       1
# 2900 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; east_set_error(pstate, &ast.err, gettext("E15: Missing operator: %.*s"), cur_token.start); } while (0); do { (cur_node) = viml_pexpr_new_node(kExprNodeOpMissing); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0); cur_node->len = 0; is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err); goto viml_pexpr_parse_process_token; } } while (0);
      }
      do { (cur_node) = viml_pexpr_new_node((is_double ? kExprNodeDoubleQuotedString : kExprNodeSingleQuotedString)); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0)

                                                                      ;
      *top_node_p = cur_node;
      parse_quoted_string(pstate, cur_node, cur_token, &ast_stack, is_invalid);
      want_node = kENodeOperator;
      break;
    }
    case kExprLexAssignment:
      if (cur_pt == kEPTAssignment) {
        ((pt_stack).size -= (1));
      } else if (cur_pt == kEPTSingleAssignment) {
        ((pt_stack).size -= (2));
        do { is_invalid = 
# 2915 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       1
# 2915 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; east_set_error(pstate, &ast.err, gettext("E475: Expected closing bracket to end list assignment " "lvalue: %.*s"), cur_token.start); } while (0)

                                                   ;
      } else {
        do { is_invalid = 
# 2919 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
       1
# 2919 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
       ; east_set_error(pstate, &ast.err, gettext("E15: Misplaced assignment: %.*s"), cur_token.start); } while (0);
      }
      
# 2921 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void) sizeof ((
# 2921 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ((pt_stack).size)
# 2921 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ? 1 : 0), __extension__ ({ if (
# 2921 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ((pt_stack).size)
# 2921 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ; else __assert_fail (
# 2921 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     "kv_size(pt_stack)"
# 2921 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2921, __extension__ __PRETTY_FUNCTION__); }))
# 2921 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                              ;
      
# 2922 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void) sizeof ((
# 2922 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ((pt_stack).items[(((pt_stack).size) - (0) - 1)]) == kEPTExpr
# 2922 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ? 1 : 0), __extension__ ({ if (
# 2922 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ((pt_stack).items[(((pt_stack).size) - (0) - 1)]) == kEPTExpr
# 2922 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ) ; else __assert_fail (
# 2922 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     "kv_last(pt_stack) == kEPTExpr"
# 2922 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2922, __extension__ __PRETTY_FUNCTION__); }))
# 2922 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                          ;
      do { if (want_node == kENodeValue) { do { is_invalid = 
# 2923 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     1
# 2923 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     ; east_set_error(pstate, &ast.err, (gettext("E15: Unexpected assignment: %.*s")), cur_token.start); } while (0); do { ((*top_node_p)) = viml_pexpr_new_node(kExprNodeMissing); do { (((*top_node_p)))->start = cur_token.start; (((*top_node_p)))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { ((*top_node_p))->start = prev_token.start; ((*top_node_p))->len += prev_token.len; } } while (0); (*top_node_p)->len = 0; want_node = kENodeOperator; } } while (0);
      do { (cur_node) = viml_pexpr_new_node(kExprNodeAssignment); do { ((cur_node))->start = cur_token.start; ((cur_node))->len = cur_token.len; } while (0); if (prev_token.type == kExprLexSpacing) { (cur_node)->start = prev_token.start; (cur_node)->len += prev_token.len; } } while (0);
      cur_node->data.ass.type = cur_token.data.ass.type;
      switch (cur_token.data.ass.type) {


      case kExprAsgnPlain: { viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "PlainAssignment" : "Nvim" "PlainAssignment")); break; }
      case kExprAsgnAdd: { viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "AssignmentWithAddition" : "Nvim" "AssignmentWithAddition")); break; }
      case kExprAsgnSubtract: { viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "AssignmentWithSubtraction" : "Nvim" "AssignmentWithSubtraction")); break; }
      case kExprAsgnConcat: { viml_parser_highlight(pstate, cur_token.start, cur_token.len, (is_invalid ? "NvimInvalid" "AssignmentWithConcatenation" : "Nvim" "AssignmentWithConcatenation")); break; }

      }
      is_invalid |= !viml_pexpr_handle_bop(pstate, &ast_stack, cur_node, &want_node, &ast.err);
      break;
    }
viml_pexpr_parse_cycle_end:
    prev_token = cur_token;
    highlighted_prev_spacing = 
# 2940 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                              0
# 2940 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                                   ;
    viml_parser_advance(pstate, cur_token.len);
  } while (
# 2942 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
          1
# 2942 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
              );
viml_pexpr_parse_end:
  
# 2944 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 ((void) sizeof ((
# 2944 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
 ((pt_stack).size)
# 2944 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 ) ? 1 : 0), __extension__ ({ if (
# 2944 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
 ((pt_stack).size)
# 2944 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 ) ; else __assert_fail (
# 2944 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
 "kv_size(pt_stack)"
# 2944 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2944, __extension__ __PRETTY_FUNCTION__); }))
# 2944 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                          ;
  
# 2945 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 ((void) sizeof ((
# 2945 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
 ((ast_stack).size)
# 2945 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 ) ? 1 : 0), __extension__ ({ if (
# 2945 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
 ((ast_stack).size)
# 2945 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 ) ; else __assert_fail (
# 2945 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
 "kv_size(ast_stack)"
# 2945 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2945, __extension__ __PRETTY_FUNCTION__); }))
# 2945 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                           ;
  if (want_node == kENodeValue


      && ((pt_stack).items[(((pt_stack).size) - (0) - 1)]) != kEPTLambdaArguments) {
    east_set_error(pstate, &ast.err, gettext("E15: Expected value, got EOC: %.*s"),
                   pstate->pos);
  } else if (((ast_stack).size) != 1) {




    
# 2957 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ((void) sizeof ((
# 2957 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   ((ast_stack).size)
# 2957 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ) ? 1 : 0), __extension__ ({ if (
# 2957 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   ((ast_stack).size)
# 2957 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   ) ; else __assert_fail (
# 2957 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
   "kv_size(ast_stack)"
# 2957 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
   , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2957, __extension__ __PRETTY_FUNCTION__); }))
# 2957 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                             ;


    ((ast_stack).size -= (1));
    while (ast.err.msg == 
# 2961 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
                         ((void *)0) 
# 2961 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                              && ((ast_stack).size)) {
      const ExprASTNode *const cur_node = (*((ast_stack).items[--(ast_stack).size]));

      
# 2964 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void) sizeof ((
# 2964 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     cur_node != 
# 2964 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2964 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     cur_node != 
# 2964 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     ((void *)0)) ; else __assert_fail (
# 2964 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
     "cur_node != NULL"
# 2964 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
     , "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c", 2964, __extension__ __PRETTY_FUNCTION__); }))
# 2964 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
                             ;

      switch (cur_node->type) {
      case kExprNodeOpMissing:
      case kExprNodeMissing:

        break;
      case kExprNodeCall:
        east_set_error(pstate, &ast.err,
                       gettext("E116: Missing closing parenthesis for function call: %.*s"),
                       cur_node->start);
        break;
      case kExprNodeNested:
        east_set_error(pstate, &ast.err,
                       gettext("E110: Missing closing parenthesis for nested expression" ": %.*s")
                                  ,
                       cur_node->start);
        break;
      case kExprNodeListLiteral:


        east_set_error(pstate, &ast.err,
                       gettext("E697: Missing end of List ']': %.*s"),
                       cur_node->start);
        break;
      case kExprNodeDictLiteral:


        east_set_error(pstate, &ast.err,
                       gettext("E723: Missing end of Dictionary '}': %.*s"),
                       cur_node->start);
        break;
      case kExprNodeUnknownFigure:
        east_set_error(pstate, &ast.err,
                       gettext("E15: Missing closing figure brace: %.*s"),
                       cur_node->start);
        break;
      case kExprNodeLambda:
        east_set_error(pstate, &ast.err,
                       gettext("E15: Missing closing figure brace for lambda: %.*s"),
                       cur_node->start);
        break;
      case kExprNodeCurlyBracesIdentifier:



        abort();
      case kExprNodeInteger:
      case kExprNodeFloat:
      case kExprNodeSingleQuotedString:
      case kExprNodeDoubleQuotedString:
      case kExprNodeOption:
      case kExprNodeEnvironment:
      case kExprNodeRegister:
      case kExprNodePlainIdentifier:
      case kExprNodePlainKey:



        abort();
      case kExprNodeComma:
      case kExprNodeColon:
      case kExprNodeArrow:



        break;
      case kExprNodeSubscript:
      case kExprNodeConcatOrSubscript:
      case kExprNodeComplexIdentifier:
      case kExprNodeAssignment:
      case kExprNodeMod:
      case kExprNodeDivision:
      case kExprNodeMultiplication:
      case kExprNodeNot:
      case kExprNodeAnd:
      case kExprNodeOr:
      case kExprNodeConcat:
      case kExprNodeComparison:
      case kExprNodeUnaryMinus:
      case kExprNodeUnaryPlus:
      case kExprNodeBinaryMinus:
      case kExprNodeTernary:
      case kExprNodeBinaryPlus:

        break;
      case kExprNodeTernaryValue:
        if (!cur_node->data.ter.got_colon) {

          east_set_error(pstate, &ast.err, gettext("E109: Missing ':' after '?': %.*s"),
                         cur_node->start);
        }
        break;
      }
    }
  }
  do { if ((ast_stack).items != (ast_stack).init_array) { do { void **ptr_ = (void **)&((ast_stack).items); xfree(*ptr_); *ptr_ = 
# 3060 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c" 3 4
 ((void *)0)
# 3060 "/home/ubuntu/neovim/src/nvim/viml/parser/expressions.c"
 ; (void)(*ptr_); } while (0); } } while (0);
  return ast;
}