#include prvdef

#define PRV$M_UPGRADE 0x00000001
#define PRV$M_DOWNGRADE 0x00000002
#define PRV$M_GRPPRV 0x00000004
#define PRV$M_READALL 0x00000008
#define PRV$M_SECURITY 0x00000040


#define UAF$C_USER_ID 1
#define UAF$C_VERSION1 1
#define UAF$C_KEYED_PART 52
#define UAF$C_AD_II 0
#define UAF$C_PURDY 1
#define UAF$C_PURDY_V 2
#define UAF$K_FIXED 644
#define UAF$C_FIXED 644
#define UAF$K_LENGTH 1412
#define UAF$C_LENGTH 1412
#define UAF$S_UAFDEF 1412

#define UAF$S_USERNAME 32
#define UAF$S_PARENT_ID 8
#define UAF$S_ACCOUNT 32
#define UAF$S_OWNER 32
#define UAF$S_DEFDEV 32
#define UAF$S_DEFDIR 64
#define UAF$S_LGICMD 64
#define UAF$S_DEFCLI 32
#define UAF$S_CLITABLES 32
#define UAF$S_PWD 8
#define UAF$S_PWD2 8
#define UAF$S_EXPIRATION 8
#define UAF$S_PWD_LIFETIME 8
#define UAF$S_PWD_DATE 8
#define UAF$S_PWD2_DATE 8
#define UAF$S_LASTLOGIN_I 8
#define UAF$S_LASTLOGIN_N 8
#define UAF$S_PRIV 8
#define UAF$S_DEF_PRIV 8
#define UAF$S_MIN_CLASS 20
#define UAF$S_MAX_CLASS 20
#define UAF$S_NETWORK_ACCESS_P 3
#define UAF$S_NETWORK_ACCESS_S 3
#define UAF$S_BATCH_ACCESS_P 3
#define UAF$S_BATCH_ACCESS_S 3
#define UAF$S_LOCAL_ACCESS_P 3
#define UAF$S_LOCAL_ACCESS_S 3
#define UAF$S_DIALUP_ACCESS_P 3
#define UAF$S_DIALUP_ACCESS_S 3
#define UAF$S_REMOTE_ACCESS_P 3
#define UAF$S_REMOTE_ACCESS_S 3

struct uaf$r_flags_bits {
  unsigned uaf$v_disctly:1;
  unsigned uaf$v_defcli:1;
  unsigned uaf$v_lockpwd:1;
  unsigned uaf$v_captive:1;
  unsigned uaf$v_disacnt:1;
  unsigned uaf$v_diswelcom:1;
  unsigned uaf$v_dismail:1;
  unsigned uaf$v_nomail:1;
  unsigned uaf$v_genpwd:1;
  unsigned uaf$v_pwd_expired:1;
  unsigned uaf$v_pwd2_expired:1;
  unsigned uaf$v_audit:1;
  unsigned uaf$v_disreport:1;
  unsigned uaf$v_disreconnect:1;
  unsigned uaf$v_autologin:1;
  unsigned uaf$v_disforce_pwd_change:1;
};

struct uaf$r_primedays_bits {
  unsigned uaf$v_monday:1;
  unsigned uaf$v_tuesday:1;
  unsigned uaf$v_wednesday:1;
  unsigned uaf$v_thursday:1;
  unsigned uaf$v_friday:1;
  unsigned uaf$v_saturday:1;
  unsigned uaf$v_sunday:1;
};

struct UAFDEF
{
  char uaf$b_rtype;
  char uaf$b_version;
  short int uaf$w_usrdatoff;
  char uaf$t_username[UAF$S_USERNAME];
  union {
    long int uaf$l_uic;
    struct {
      short int uaf$w_mem;
      short int uaf$w_grp;
    } uaf$r_uic_fields;
  } uaf$r_uic_overlay;
  long int uaf$l_sub_id;
  long int uaf$q_parent_id[2];
  char uaf$t_account[UAF$S_ACCOUNT];
  char uaf$t_owner[UAF$S_OWNER];
  char uaf$t_defdev[UAF$S_DEFDEV];
  char uaf$t_defdir[UAF$S_DEFDIR];
  char uaf$t_lgicmd[UAF$S_LGICMD];
  char uaf$t_defcli[UAF$S_DEFCLI];
  char uaf$t_clitables[UAF$S_CLITABLES];
  union {
    long int uaf$q_pwd[2];
    long int uaf$l_pwd;
  } uaf$r_pwd_overlay;
  long int uaf$q_pwd2[2];
  short int uaf$w_logfails;
  short int uaf$w_salt;
  char uaf$b_encrypt;

  char uaf$b_encrypt2;
  char uaf$b_pwd_length;
  char uaf$fill_1;
  long int uaf$q_expiration[2];
  long int uaf$q_pwd_lifetime[2];
  long int uaf$q_pwd_date[2];
  long int uaf$q_pwd2_date[2];
  long int uaf$q_lastlogin_i[2];
  long int uaf$q_lastlogin_n[2];
  union {
    long int uaf$q_priv[2];
    union prvdef uaf$r_priv;
  } uaf$r_priv_overlay;
  union {
    long int uaf$q_def_priv[2];
    union prvdef uaf$r_def_priv;
  } uaf$r_def_priv_overlay;
  char uaf$r_min_class[UAF$S_MIN_CLASS];
  char uaf$r_max_class[UAF$S_MAX_CLASS];
  union {
    long int uaf$l_flags;
    struct uaf$r_flags_bits uaf$r_flags_bits;
  } uaf$r_flags_overlay;
  char uaf$b_network_access_p[UAF$S_NETWORK_ACCESS_P];
  char uaf$b_network_access_s[UAF$S_NETWORK_ACCESS_S];
  char uaf$b_batch_access_p[UAF$S_BATCH_ACCESS_P];
  char uaf$b_batch_access_s[UAF$S_BATCH_ACCESS_S];
  char uaf$b_local_access_p[UAF$S_LOCAL_ACCESS_P];
  char uaf$b_local_access_s[UAF$S_LOCAL_ACCESS_S];
  char uaf$b_dialup_access_p[UAF$S_DIALUP_ACCESS_P];
  char uaf$b_dialup_access_s[UAF$S_DIALUP_ACCESS_S];
  char uaf$b_remote_access_p[UAF$S_REMOTE_ACCESS_P];
  char uaf$b_remote_access_s[UAF$S_REMOTE_ACCESS_S];
  char uaf$fill_2[514 - 502];
  union {
    char uaf$b_primedays;
    struct uaf$r_primedays_bits uaf$r_primedays_bits;
  } uaf$r_primedays_overlay;
  char uaf$fill_3[516 - 515];
  char uaf$b_pri;
  char uaf$b_quepri;
  short int uaf$w_maxjobs;

  short int uaf$w_maxacctjobs;

  short int uaf$w_maxdetach;

  short int uaf$w_prccnt;
  short int uaf$w_biolm;
  short int uaf$w_diolm;
  short int uaf$w_tqcnt;
  short int uaf$w_astlm;
  short int uaf$w_enqlm;
  short int uaf$w_fillm;
  short int uaf$w_shrfillm;
  long int uaf$l_wsquota;
  long int uaf$l_dfwscnt;
  long int uaf$l_wsextent;
  long int uaf$l_pgflquota;
  long int uaf$l_cputim;
  long int uaf$l_bytlm;
  long int uaf$l_pbytlm;
  long int uaf$l_jtquota;
  short int uaf$w_proxy_lim;
  short int uaf$w_proxies;
  short int uaf$w_account_lim;
  short int uaf$w_accounts;
  char uaf$fill_4[UAF$K_LENGTH - 580];
};

