
/* This file was automatically generated by pclu.*/

#include "pclu_err.h"
#include "pclu_sys.h"

extern struct dbg_info* dbg_info__all_file_names_;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG _all_file_names__TRACE
int _all_file_names__TRACE;
extern struct OPS *int_ops;
static Vlist0 owns__all_file_names_ = {0, 0};
extern errcode _all_file_names__IB_1();
extern errcode _all_file_names__IB_2();
extern errcode _all_file_names__IB_3();
extern errcode _all_file_names__IB_4();
extern errcode arrayOPnew();
extern errcode intOPequal();
extern errcode stringOPindexc();
extern errcode file_name_fill();
extern errcode file_nameOPparse();
extern errcode _restar();
extern errcode file_exists();
extern errcode _fixup_file_name();
extern errcode _last_indexc();
extern errcode stringOPrest();
extern errcode intOPadd();
extern errcode intOPgt();
extern errcode charOPequal();
extern errcode stringOPfetch();
extern errcode intOPsub();
extern errcode stringOPsubstr();
extern errcode _split_name_part();
extern errcode _environ();
extern errcode _home_dir();
extern errcode _all_file_names_();
extern errcode file_nameOPunparse();
extern errcode file_nameOPcreate();
extern errcode arrayOPtrim();
extern errcode _all_dir_entries_();
extern errcode _match_name_spec();
extern errcode _cvt();
extern errcode arrayOPindexes();
extern errcode stringOPlt();
extern errcode arrayOPfetch();
extern errcode arrayOPstore();
extern errcode arrayOPaddh();
extern errcode arrayOPelements();
extern errcode boolOPnot();
extern OWN_req string_ownreqs;
extern struct OPS *string_ops;
extern struct REQS *array_of_t_reqs;
extern OWN_req array_ownreqs;
extern struct OPS *array_ops;
struct OPS *array_of_string_table;
struct OPS *array_of_string_ops;
struct OPS *array_of_string_ops;
OWNPTR array_of_string_owns;
CLUREF STR_;
CLUREF STR_HOME;
static int _all_file_names__own_init = 0;
CLUREF _all_file_names_OPinuse;
CLUREF _all_file_names_OPtemp;

/**** BEGIN ITERATOR _all_file_names_ ****/

errcode _all_file_names_(fs, proc, user_locals, iecode)
CLUREF fs;
errcode (*proc)();
char **user_locals;
errcode *iecode;
    {
    errcode ecode;
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        char **user_locals;
        errcode (*proc)();
        errcode err;
        errcode ecode2;
        bool body_ctrl_req;
        CLUREF fn;
        CLUREF dr;
        CLUREF z;
        CLUREF nm;
        CLUREF sf;
        CLUREF ot;
        CLUREF ok;
        CLUREF list;
        CLUREF used;
        CLUREF off;
        CLUREF buf;
        CLUREF fs;
        } locals;
    locals.fn.num = UNINIT;
    locals.dr.num = UNINIT;
    locals.z.num = UNINIT;
    locals.nm.num = UNINIT;
    locals.sf.num = UNINIT;
    locals.ot.num = UNINIT;
    locals.ok.num = UNINIT;
    locals.list.num = UNINIT;
    locals.used.num = UNINIT;
    locals.off.num = UNINIT;
    locals.buf.num = UNINIT;
    locals.fs.num = UNINIT;
    locals.DBG_INFO = dbg_info__all_file_names_;
    locals.fs = fs;
    locals.proc = proc;
    locals.user_locals = user_locals;
    locals.user_locals = user_locals;
    locals.proc = proc;
        if (_all_file_names__own_init == 0) {
        add_parm_info_type(0, string_ops, array_of_t_reqs);
        find_type_instance(array_ops, 1, &array_ownreqs, &(array_of_string_ops));
        stringOPcons("", CLU_1, CLU_0, &STR_);
        stringOPcons("HOME", CLU_1, CLU_4, &STR_HOME);
        _all_file_names__own_init = 1;
        {
            {_all_file_names_OPinuse.tf = false;
            }
            }
        {
            {CLUREF T_0_1;
            locals.err = arrayOPnew(&T_0_1);
            if (locals.err != ERR_ok) goto ex_0;
            _all_file_names_OPtemp.num = T_0_1.num;
            }
            }
    }
    enter_proc(6);

  LINE(13);
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    CLUREF T_2_3;
    T_2_1.ch = '*';
    locals.err = stringOPindexc(T_2_1, locals.fs, &T_2_2);
    if (locals.err != ERR_ok) goto ex_1;
    T_2_3.num = (T_2_2.num == 0)? true : false;
    if (T_2_3.num == true) {

  LINE(14);
        {
            {CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
            locals.err = _restar(locals.fs, &T_3_1);
            if (locals.err != ERR_ok) goto ex_1;
            locals.err = file_nameOPparse(T_3_1, &T_3_2);
            if (locals.err != ERR_ok) goto ex_1;
            locals.err = file_name_fill(T_3_2, STR_, &T_3_3);
            if (locals.err != ERR_ok) goto ex_1;
            locals.fn.num = T_3_3.num;
            }
            }

  LINE(15);
        {
        CLUREF T_3_1;
        locals.err = file_exists(locals.fn, &T_3_1);
        if (locals.err != ERR_ok) goto ex_1;
        if (T_3_1.num == true) {

  LINE(16);
            {
            CLUREF T_4_1;
            locals.err = _fixup_file_name(locals.fn, CLU_0, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            locals.err = locals.proc(T_4_1, locals.user_locals, iecode);
            if (locals.err != ERR_ok) {
            if (locals.err == ERR_break) {signal(ERR_break);}
            if (locals.err == ERR_iterbodyreturn) {signal(ERR_iterbodyreturn);}
            if (locals.err == ERR_iterbodyexit) {signal(ERR_iterbodyexit);}
            if (locals.err == ERR_iterbodysignal) {signal(ERR_iterbodysignal);}
            {signal(locals.err);
                }}
            }
            }
            }/* end if */

  LINE(17);
        {
        {signal (ERR_ok);}}
        }
        }/* end if */
    goto end_1;
    ex_1:
        if (locals.err == ERR_bad_format) {signal(ERR_bad_format);}
        else if (locals.err == ERR_not_possible) {signal(ERR_not_possible);}
        else {
            goto ex_0;}
    end_1:;

  LINE(19);
    {
        {locals.dr.num = locals.fs.num;
        }
        }

  LINE(20);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        T_1_1.ch = '/';
        locals.err = _last_indexc(T_1_1, locals.fs, &T_1_2);
        if (locals.err != ERR_ok) goto ex_0;
        locals.z.num = T_1_2.num;
        }
        }

  LINE(21);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    locals.err = intOPadd(locals.z, CLU_1, &T_1_1);
    if (locals.err != ERR_ok) goto ex_0;
    locals.err = stringOPrest(locals.fs, T_1_1, &T_1_2);
    if (locals.err != ERR_ok) goto ex_0;
    locals.fs.num = T_1_2.num;
    }

  LINE(22);
    for (;;) {
        CLUREF T_1_1;
        CLUREF T_1_2;
        CLUREF T_1_3;
        CLUREF T_1_4;
        CLUREF T_1_5;
        T_1_2.num = (locals.z.num > 1)? true : false;
        T_1_1.num = T_1_2.num;
        if (T_1_2.num) {
            locals.err = stringOPfetch(locals.dr, locals.z, &T_1_3);
            if (locals.err != ERR_ok) goto ex_0;
            T_1_4.ch = '/';
            T_1_5.num = (T_1_3.ch == T_1_4.ch)? true : false;
            T_1_1.num = T_1_5.num;
        }
        if (T_1_1.num != true) { break; }

  LINE(23);
        {
        CLUREF T_2_1;
        locals.err = intOPsub(locals.z, CLU_1, &T_2_1);
        if (locals.err != ERR_ok) goto ex_0;
        locals.z.num = T_2_1.num;
        }
        }
        end_while_1:;

  LINE(25);
    {
    CLUREF T_1_1;
    locals.err = stringOPsubstr(locals.dr, CLU_1, locals.z, &T_1_1);
    if (locals.err != ERR_ok) goto ex_0;
    locals.dr.num = T_1_1.num;
    }

  LINE(26);
    locals.nm.num = UNINIT;
    locals.sf.num = UNINIT;
    locals.ot.num = UNINIT;

  LINE(27);
    locals.ok.num = UNINIT;

  LINE(28);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    T_1_1.ch = '*';
    locals.err = stringOPindexc(T_1_1, locals.fs, &T_1_2);
    if (locals.err != ERR_ok) goto ex_0;
    T_1_3.num = (T_1_2.num == 0)? true : false;
    if (T_1_3.num == true) {

  LINE(29);
        {
        locals.ok.tf = true;
        }

  LINE(30);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        CLUREF T_2_4;
        locals.err = _restar(locals.fs, &T_2_1);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = _split_name_part(T_2_1, &T_2_2, &T_2_3, &T_2_4);
        if (locals.err != ERR_ok) goto ex_0;
        locals.nm.num = T_2_2.num;
        locals.sf.num = T_2_3.num;
        locals.ot.num = T_2_4.num;
        }
        }
    else {

  LINE(31);
        {
        locals.ok.tf = false;
        }
        }}/* end if */

  LINE(33);
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    CLUREF T_2_3;
    CLUREF T_2_4;
    CLUREF T_2_5;
    CLUREF T_2_6;
    CLUREF T_2_7;
    locals.err = stringOPfetch(locals.dr, CLU_1, &T_2_2);
    if (locals.err != ERR_ok) goto ex_2;
    T_2_3.ch = '~';
    T_2_4.num = (T_2_2.ch == T_2_3.ch)? true : false;
    T_2_1.num = T_2_4.num;
    if (T_2_4.num) {
        T_2_5.ch = '/';
        locals.err = stringOPindexc(T_2_5, locals.dr, &T_2_6);
        if (locals.err != ERR_ok) goto ex_2;
        T_2_7.num = (T_2_6.num == 0)? true : false;
        T_2_1.num = T_2_7.num;
    }
    if (T_2_1.num == true) {

  LINE(34);
        {
        CLUREF T_3_1;
        T_3_1.num = (locals.z.num == 1)? true : false;
        if (T_3_1.num == true) {

  LINE(35);
            {
            CLUREF T_4_1;
            locals.err = _environ(STR_HOME, &T_4_1);
            if (locals.err != ERR_ok) goto ex_2;
            locals.dr.num = T_4_1.num;
            }
            }
        else {

  LINE(36);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            locals.err = stringOPrest(locals.dr, CLU_2, &T_4_1);
            if (locals.err != ERR_ok) goto ex_2;
            locals.err = _home_dir(T_4_1, &T_4_2);
            if (locals.err != ERR_ok) goto ex_2;
            locals.dr.num = T_4_2.num;
            }
            }}/* end if */
        }
        }/* end if */
        goto end_2;
        ex_2:
            if ((locals.err == ERR_bounds)
             || (locals.err == ERR_not_found)) {
            }
            else {
                goto ex_0;
            }
        end_2:;

  LINE(39);
    {
        locals.body_ctrl_req = false;
        locals.err = _all_file_names_(locals.dr, _all_file_names__IB_1, &locals, &locals.ecode2);
        if (locals.err == ERR_iterbodyreturn) {signal(ERR_iterbodyreturn);}
        if (locals.err == ERR_iterbodysignal) {
            *iecode = locals.ecode2; signal(ERR_iterbodysignal);}
        if (locals.err == ERR_iterbodyexit) {
            *iecode = locals.ecode2; signal(ERR_iterbodyexit);}
        if (locals.body_ctrl_req == true) {
            locals.body_ctrl_req = false;
            if (locals.err == ERR_iteriterbodyreturn) {signal(ERR_ok);}
            if (locals.err == ERR_iteriterbodysignal) {signal(locals.ecode2);}
            if (locals.err == ERR_break) locals.err = ERR_ok;
            if (locals.err == ERR_iteriterbodyexit) locals.err = locals.ecode2;
            }
        else {
            if (locals.err == ERR_iteriterbodyreturn) {signal(ERR_iteriterbodyreturn);}
            if (locals.err == ERR_break) {signal(ERR_break);}
            if (locals.err == ERR_iteriterbodysignal) {
                  *iecode = locals.ecode2; signal(ERR_iteriterbodysignal);}
            if (locals.err == ERR_iteriterbodyexit) {
                  *iecode = locals.ecode2; signal(ERR_iteriterbodyexit);}}
        if (locals.err != ERR_ok) goto ex_3;
        }
    goto end_3;
    ex_3:
        if (locals.err == ERR_not_possible) {signal(ERR_not_possible);}
        else if (locals.err == ERR_bad_format) {signal(ERR_bad_format);}
        else {
            goto ex_0;}
    end_3:;
    goto end_0;
    ex_0:
        {
            if (locals.err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(locals.err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END ITERATOR _all_file_names_ ****/

extern struct OPS *file_name_ops;
extern struct OPS *bool_ops;
extern struct OPS *array_of_string_ops;
extern struct OPS *_bytevec_ops;
typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist1 *vals;
    siglist2 *sigs;
    Vlist17 *locals;
    Vlist0 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info__all_file_names__actual;
static Vlist1 vals__all_file_names_ = {0, 1, { {0, 2, "", &file_name_ops}}
};
static sig_desc0 sig__all_file_names__1 = {0, 3, "bad_format", {0, 0
}};
static sig_desc1 sig__all_file_names__2 = {0, 4, "not_possible", {0, 1
, { {0, 2, "", &string_ops}}}};
static siglist2 sigs__all_file_names_ = {0, 2, (sig_desc*)&sig__all_file_names__1, (sig_desc*)&sig__all_file_names__2};
static Vlist17 locals__all_file_names_ = {0, 17,{ {0, 2, "user_locals", &int_ops},  {0, 2, "proc", &int_ops},  {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "body_ctrl_req", &int_ops},  {0, 2, "fn", &file_name_ops},  {0, 2, "dr", &string_ops},  {0, 2, "z", &int_ops},  {0, 2, "nm", &string_ops},  {0, 2, "sf", &string_ops},  {0, 2, "ot", &string_ops},  {0, 2, "ok", &bool_ops},  {0, 2, "list", &array_of_string_ops},  {0, 2, "used", &bool_ops},  {0, 2, "off", &int_ops},  {0, 2, "buf", &_bytevec_ops},  {0, 2, "fs", &string_ops}}
};
static Vlist0 popowns__all_file_names_ = {0, 0};
Slist0 tformals__all_file_names_ = {0, 0};
Slist0 opformals__all_file_names_ = {0, 0};
dbg_info__all_file_names__actual dbg_info__all_file_names__data = {0, 12, 
    "_all_file_names_", "/common/pub/dcurtis-temp/pclu/lib/clu/_all_file_names_.clu", 1, 0, (int)_all_file_names_, 1, 
    &vals__all_file_names_, &sigs__all_file_names_, &locals__all_file_names_, &owns__all_file_names_, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info__all_file_names_ = (struct dbg_info*)&dbg_info__all_file_names__data;

/**** BEGIN ITERATOR BODIES for _all_file_names_ ****/

errcode _all_file_names__IB_1(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    char **user_locals;
    errcode (*proc)();
    errcode err;
    errcode ecode2;
    bool body_ctrl_req;
    CLUREF fn;
    CLUREF dr;
    CLUREF z;
    CLUREF nm;
    CLUREF sf;
    CLUREF ot;
    CLUREF ok;
    CLUREF list;
    CLUREF used;
    CLUREF off;
    CLUREF buf;
    CLUREF fs;
    } *locals;
{
    locals->fn.num = iv_1.num;
    enter_iter_body_proc(40);

  FB_LINE(40);
    {
    CLUREF T_1_1;
    locals->err = file_nameOPunparse(locals->fn, &T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    locals->dr.num = T_1_1.num;
    }

  FB_LINE(41);
    {
    if (locals->ok.num == true) {

  FB_LINE(42);
        {
        CLUREF T_2_1;
        locals->err = file_nameOPcreate(locals->dr, locals->nm, locals->sf, locals->ot, &T_2_1);
        if (locals->err != ERR_ok) goto ex_0;
        locals->fn.num = T_2_1.num;
        }

  FB_LINE(43);
        {
        CLUREF T_3_1;
        locals->err = file_exists(locals->fn, &T_3_1);
        if (locals->err != ERR_ok) goto ex_1;
        if (T_3_1.num == true) {

  FB_LINE(44);
            {
            CLUREF T_4_1;
            locals->err = _fixup_file_name(locals->fn, CLU_1, &T_4_1);
            if (locals->err != ERR_ok) goto ex_1;
            locals->err = locals->proc(T_4_1, locals->user_locals, iecode);
            if ((locals->body_ctrl_req == true) && (locals->err == ERR_iteriterbodyexit)) {
                locals->err = *iecode;
                goto ex_1;}
            if (locals->err != ERR_ok) {
            signal(locals->err);
            }
            }
            }
            }/* end if */
            goto end_1;
            ex_1:
                if ((locals->err == ERR_not_possible)) {
                }
                else {
                    goto ex_0;
                }
            end_1:;

  FB_LINE(46);
        {signal(ERR_ok);}
        }
        }/* end if */

  FB_LINE(48);
    locals->list.num = UNINIT;

  FB_LINE(49);
    {
        {locals->used.num = _all_file_names_OPinuse.num;
        }
        }

  FB_LINE(50);
    {
    if (locals->used.num == true) {

  FB_LINE(51);
        {
        CLUREF T_2_1;
        locals->err = arrayOPnew(&T_2_1);
        if (locals->err != ERR_ok) goto ex_0;
        locals->list.num = T_2_1.num;
        }
        }
    else {

  FB_LINE(52);
        {
        locals->list.num = _all_file_names_OPtemp.num;
        }

  FB_LINE(53);
        {
        locals->err = arrayOPtrim(locals->list, CLU_1, CLU_0);
        if (locals->err != ERR_ok) goto ex_0;
        }

  FB_LINE(54);
        {
        _all_file_names_OPinuse.tf = true;
        }
        }}/* end if */

  FB_LINE(56);
    {
        locals->body_ctrl_req = false;
        locals->err = _all_dir_entries_(locals->dr, _all_file_names__IB_2, locals, iecode);
        if (locals->err != ERR_ok) {
        if (locals->err == ERR_iterbodyreturn) {signal(ERR_iterbodyreturn);}
        if (locals->err == ERR_iterbodysignal) {signal(ERR_iterbodysignal);}
        if (locals->err == ERR_iterbodyexit) {signal(ERR_iterbodyexit);}
        if (locals->err == ERR_iteriterbodyreturn) {signal(ERR_iteriterbodyreturn);}
        if (locals->err == ERR_iteriterbodysignal) {signal(ERR_iteriterbodysignal);}
        if (locals->err == ERR_break && !locals->body_ctrl_req) {signal(ERR_break);}
        if (locals->err == ERR_iteriterbodyexit && !locals->body_ctrl_req) {signal(ERR_iteriterbodyexit);}
        if (locals->err == ERR_break) locals->err = ERR_ok;
        if (locals->err == ERR_iteriterbodyexit) 
        locals->err = *iecode;
        if (locals->err != ERR_ok) 
        goto ex_0;
        }
        }

  FB_LINE(73);
    {
        locals->body_ctrl_req = false;
        locals->err = arrayOPelements(locals->list, _all_file_names__IB_3, locals, iecode);
        if (locals->err != ERR_ok) {
        if (locals->err == ERR_iterbodyreturn) {signal(ERR_iterbodyreturn);}
        if (locals->err == ERR_iterbodysignal) {signal(ERR_iterbodysignal);}
        if (locals->err == ERR_iterbodyexit) {signal(ERR_iterbodyexit);}
        if (locals->err == ERR_iteriterbodyreturn) {signal(ERR_iteriterbodyreturn);}
        if (locals->err == ERR_iteriterbodysignal) {signal(ERR_iteriterbodysignal);}
        if (locals->err == ERR_break && !locals->body_ctrl_req) {signal(ERR_break);}
        if (locals->err == ERR_iteriterbodyexit && !locals->body_ctrl_req) {signal(ERR_iteriterbodyexit);}
        if (locals->err == ERR_break) locals->err = ERR_ok;
        if (locals->err == ERR_iteriterbodyexit) 
        locals->err = *iecode;
        if (locals->err != ERR_ok) 
        goto ex_0;
        }
        }

  FB_LINE(77);
    {
    _all_file_names_OPinuse.num = locals->used.num;
    }

  FB_LINE(78);
    {
    CLUREF T_1_1;
    T_1_1.num = _all_file_names_OPinuse.num ^ 1;
    if (T_1_1.num == true) {

  FB_LINE(79);
        {
        locals->err = arrayOPtrim(locals->list, CLU_1, CLU_0);
        if (locals->err != ERR_ok) goto ex_0;
        }
        }
        }/* end if */
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            locals->body_ctrl_req = true;
            {signal(ERR_iteriterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end _all_file_names__IB_1 */
errcode _all_file_names__IB_2(iv_1, iv_2, locals, iecode)
errcode *iecode;
CLUREF iv_1;
CLUREF iv_2;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    char **user_locals;
    errcode (*proc)();
    errcode err;
    errcode ecode2;
    bool body_ctrl_req;
    CLUREF fn;
    CLUREF dr;
    CLUREF z;
    CLUREF nm;
    CLUREF sf;
    CLUREF ot;
    CLUREF ok;
    CLUREF list;
    CLUREF used;
    CLUREF off;
    CLUREF buf;
    CLUREF fs;
    } *locals;
{
    locals->off.num = iv_1.num;
    locals->buf.num = iv_2.num;
    enter_iter_body_proc(57);

  FB_LINE(57);
    {
    CLUREF T_1_1;
    locals->err = _match_name_spec(locals->off, locals->buf, locals->fs, &T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    locals->z.num = T_1_1.num;
    }

  FB_LINE(58);
    {
    CLUREF T_1_1;
    T_1_1.num = (locals->z.num == 0)? true : false;
    if (T_1_1.num == true) {

  FB_LINE(59);
        {signal(ERR_ok);}
        }
        }/* end if */

  FB_LINE(60);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = locals->buf.num;
    locals->err = stringOPsubstr(T_1_1, locals->off, locals->z, &T_1_2);
    if (locals->err != ERR_ok) goto ex_0;
    locals->nm.num = T_1_2.num;
    }

  FB_LINE(61);
    {
        locals->body_ctrl_req = false;
        locals->err = arrayOPindexes(locals->list, _all_file_names__IB_4, locals, iecode);
        if (locals->err != ERR_ok) {
        if (locals->err == ERR_iterbodyreturn) {signal(ERR_iterbodyreturn);}
        if (locals->err == ERR_iterbodysignal) {signal(ERR_iterbodysignal);}
        if (locals->err == ERR_iterbodyexit) {signal(ERR_iterbodyexit);}
        if (locals->err == ERR_iteriterbodyreturn) {signal(ERR_iteriterbodyreturn);}
        if (locals->err == ERR_iteriterbodysignal) {signal(ERR_iteriterbodysignal);}
        if (locals->err == ERR_break && !locals->body_ctrl_req) {signal(ERR_break);}
        if (locals->err == ERR_iteriterbodyexit && !locals->body_ctrl_req) {signal(ERR_iteriterbodyexit);}
        if (locals->err == ERR_break) locals->err = ERR_ok;
        if (locals->err == ERR_iteriterbodyexit) 
        locals->err = *iecode;
        if (locals->err != ERR_ok) 
        goto ex_1;
        }
        }
        goto end_1;
        ex_1:
            if ((locals->err == ERR_bounds)) {
            }
            else {
                goto ex_0;
            }
        end_1:;

  FB_LINE(71);
    {
    locals->err = arrayOPaddh(locals->list, locals->nm);
    if (locals->err != ERR_ok) goto ex_0;
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            locals->body_ctrl_req = true;
            {signal(ERR_iteriterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end _all_file_names__IB_2 */
errcode _all_file_names__IB_3(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    char **user_locals;
    errcode (*proc)();
    errcode err;
    errcode ecode2;
    bool body_ctrl_req;
    CLUREF fn;
    CLUREF dr;
    CLUREF z;
    CLUREF nm;
    CLUREF sf;
    CLUREF ot;
    CLUREF ok;
    CLUREF list;
    CLUREF used;
    CLUREF off;
    CLUREF buf;
    CLUREF fs;
    } *locals;
{
    locals->nm.num = iv_1.num;
    enter_iter_body_proc(74);

  FB_LINE(74);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    locals->err = _split_name_part(locals->nm, &T_1_1, &T_1_2, &T_1_3);
    if (locals->err != ERR_ok) goto ex_0;
    locals->nm.num = T_1_1.num;
    locals->sf.num = T_1_2.num;
    locals->ot.num = T_1_3.num;
    }

  FB_LINE(75);
    {
    CLUREF T_1_1;
    locals->err = file_nameOPcreate(locals->dr, locals->nm, locals->sf, locals->ot, &T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    locals->err = locals->proc(T_1_1, locals->user_locals, iecode);
    if ((locals->body_ctrl_req == true) && (locals->err == ERR_iteriterbodyexit)) {
        locals->err = *iecode;
        goto ex_0;}
    if (locals->err != ERR_ok) {
    signal(locals->err);
    }
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            locals->body_ctrl_req = true;
            {signal(ERR_iteriterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end _all_file_names__IB_3 */
errcode _all_file_names__IB_4(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    char **user_locals;
    errcode (*proc)();
    errcode err;
    errcode ecode2;
    bool body_ctrl_req;
    CLUREF fn;
    CLUREF dr;
    CLUREF z;
    CLUREF nm;
    CLUREF sf;
    CLUREF ot;
    CLUREF ok;
    CLUREF list;
    CLUREF used;
    CLUREF off;
    CLUREF buf;
    CLUREF fs;
    } *locals;
{
    locals->z.num = iv_1.num;
    enter_iter_body_proc(62);

  FB_LINE(62);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    locals->err = arrayOPfetch(locals->list, locals->z, &T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    locals->err = stringOPlt(T_1_1, locals->nm, &T_1_2);
    if (locals->err != ERR_ok) goto ex_0;
    if (T_1_2.num == true) {

  FB_LINE(63);
        {signal(ERR_ok);}
        }
        }/* end if */

  FB_LINE(64);
    for (;;) {
        if (true != true) { break; }

  FB_LINE(65);
        {
        CLUREF T_2_1;
        locals->err = arrayOPfetch(locals->list, locals->z, &T_2_1);
        if (locals->err != ERR_ok) goto ex_0;
        locals->ot.num = T_2_1.num;
        }

  FB_LINE(66);
        {
        locals->err = arrayOPstore(locals->list, locals->z, locals->nm);
        if (locals->err != ERR_ok) goto ex_0;
        }

  FB_LINE(67);
        {
        locals->nm.num = locals->ot.num;
        }

  FB_LINE(68);
        {
        CLUREF T_2_1;
        locals->err = intOPadd(locals->z, CLU_1, &T_2_1);
        if (locals->err != ERR_ok) goto ex_0;
        locals->z.num = T_2_1.num;
        }
        }
        end_while_2:;
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            locals->body_ctrl_req = true;
            {signal(ERR_iteriterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end _all_file_names__IB_4 */

/**** END ITERATOR BODIES for _all_file_names_ ****/


extern struct dbg_info* dbg_info__restar;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG _restar_TRACE
int _restar_TRACE;
static Vlist1 owns__restar = {0, 1,{ {0, 2, "_init", &int_ops}
}
};
extern errcode stringOPconcat();
extern errcode stringOPappend();
static int _restar_own_init = 0;

/**** BEGIN PROCEDURE _restar ****/

errcode _restar(s, ret_1)
CLUREF s;
CLUREF *ret_1;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF i;
        CLUREF s;
        } locals;
    locals.i.num = UNINIT;
    locals.s.num = UNINIT;
    locals.DBG_INFO = dbg_info__restar;
    locals.s = s;
        if (_restar_own_init == 0) {
        _restar_own_init = 1;
    }
    enter_proc(83);

  LINE(84);
    for (;;) {
        if (true != true) { break; }

  LINE(85);
        {
            {CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.ch = '\000';
            locals.err = stringOPindexc(T_2_1, locals.s, &T_2_2);
            if (locals.err != ERR_ok) goto ex_0;
            locals.i.num = T_2_2.num;
            }
            }

  LINE(86);
        {
        CLUREF T_2_1;
        T_2_1.num = (locals.i.num == 0)? true : false;
        if (T_2_1.num == true) {

  LINE(87);
            {
            {
            ret_1->num = locals.s.num;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(88);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        CLUREF T_2_4;
        CLUREF T_2_5;
        CLUREF T_2_6;
        CLUREF T_2_7;
        locals.err = intOPsub(locals.i, CLU_1, &T_2_1);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = stringOPsubstr(locals.s, CLU_1, T_2_1, &T_2_2);
        if (locals.err != ERR_ok) goto ex_0;
        T_2_3.ch = '*';
        locals.err = stringOPappend(T_2_2, T_2_3, &T_2_4);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = intOPadd(locals.i, CLU_1, &T_2_5);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = stringOPrest(locals.s, T_2_5, &T_2_6);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = stringOPconcat(T_2_4, T_2_6, &T_2_7);
        if (locals.err != ERR_ok) goto ex_0;
        locals.s.num = T_2_7.num;
        }
        }
        end_while_1:;
    goto end_0;
    ex_0:
        {
            if (locals.err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(locals.err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE _restar ****/

typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist1 *vals;
    siglist0 *sigs;
    Vlist4 *locals;
    Vlist1 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info__restar_actual;
static Vlist1 vals__restar = {0, 1, { {0, 2, "", &string_ops}}
};
static siglist0 sigs__restar = {0, 0};
static Vlist4 locals__restar = {0, 4,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "i", &int_ops},  {0, 2, "s", &string_ops}}
};
static Vlist0 popowns__restar = {0, 0};
Slist0 tformals__restar = {0, 0};
Slist0 opformals__restar = {0, 0};
dbg_info__restar_actual dbg_info__restar_data = {0, 12, 
    "_restar", "/common/pub/dcurtis-temp/pclu/lib/clu/_all_file_names_.clu", 0, 0, (int)_restar, 1, 
    &vals__restar, &sigs__restar, &locals__restar, &owns__restar, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info__restar = (struct dbg_info*)&dbg_info__restar_data;

extern struct dbg_info* dbg_info__match_name_spec;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG _match_name_spec_TRACE
int _match_name_spec_TRACE;
static Vlist1 owns__match_name_spec = {0, 1,{ {0, 2, "_init", &int_ops}
}
};
extern errcode stringOPsize();
extern errcode _bytevecOPfetch();
extern errcode _bytevecOPindexc();
extern errcode intOPle();
static int _match_name_spec_own_init = 0;

/**** BEGIN PROCEDURE _match_name_spec ****/

errcode _match_name_spec(off, buf, nm, ret_1)
CLUREF off;
CLUREF buf;
CLUREF nm;
CLUREF *ret_1;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF l;
        CLUREF i;
        CLUREF h;
        CLUREF c;
        CLUREF j;
        CLUREF m;
        CLUREF c2;
        CLUREF c1;
        CLUREF off;
        CLUREF buf;
        CLUREF nm;
        } locals;
    locals.l.num = UNINIT;
    locals.i.num = UNINIT;
    locals.h.num = UNINIT;
    locals.c.num = UNINIT;
    locals.j.num = UNINIT;
    locals.m.num = UNINIT;
    locals.c2.num = UNINIT;
    locals.c1.num = UNINIT;
    locals.off.num = UNINIT;
    locals.buf.num = UNINIT;
    locals.nm.num = UNINIT;
    locals.DBG_INFO = dbg_info__match_name_spec;
    locals.off = off;
    locals.buf = buf;
    locals.nm = nm;
        if (_match_name_spec_own_init == 0) {
        _match_name_spec_own_init = 1;
    }
    enter_proc(93);

  LINE(94);
    {
        {locals.l.num = locals.off.num;
        }
        }

  LINE(95);
    {
        {locals.i.num = 1;
        }
        }

  LINE(96);
    {
        {CLUREF T_1_1;
        locals.err = stringOPsize(locals.nm, &T_1_1);
        if (locals.err != ERR_ok) goto ex_0;
        locals.h.num = T_1_1.num;
        }
        }

  LINE(97);
    for (;;) {
        if (true != true) { break; }

  LINE(98);
        {
            {CLUREF T_2_1;
            locals.err = stringOPfetch(locals.nm, locals.i, &T_2_1);
            if (locals.err != ERR_ok) goto ex_0;
            locals.c.num = T_2_1.num;
            }
            }

  LINE(99);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.ch = '*';
        T_2_2.num = (locals.c.ch == T_2_1.ch)? true : false;
        if (T_2_2.num == true) {

  LINE(100);
            goto end_while_1;
            }
        else {
        CLUREF T_2_3;
        CLUREF T_2_4;
        T_2_3.ch = '\000';
        T_2_4.num = (locals.c.ch == T_2_3.ch)? true : false;
        if (T_2_4.num == true) {

  LINE(102);
            {
            CLUREF T_3_1;
            T_3_1.ch = '*';
            locals.c.num = T_3_1.num;
            }
            }
            }}/* end if */

  LINE(103);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        locals.err = _bytevecOPfetch(locals.buf, locals.l, &T_2_1);
        if (locals.err != ERR_ok) goto ex_0;
        T_2_2.num = (locals.c.ch == T_2_1.ch)? true : false;
        T_2_3.num = T_2_2.num ^ 1;
        if (T_2_3.num == true) {

  LINE(104);
            {
            {
            ret_1->num = 0;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(105);
        {
        CLUREF T_2_1;
        locals.err = intOPadd(locals.l, CLU_1, &T_2_1);
        if (locals.err != ERR_ok) goto ex_0;
        locals.l.num = T_2_1.num;
        }

  LINE(106);
        {
        CLUREF T_2_1;
        locals.err = intOPadd(locals.i, CLU_1, &T_2_1);
        if (locals.err != ERR_ok) goto ex_0;
        locals.i.num = T_2_1.num;
        }
        }
        end_while_1:;

  LINE(108);
    for (;;) {
        if (true != true) { break; }

  LINE(109);
        {
        CLUREF T_3_1;
        locals.err = intOPadd(locals.i, CLU_1, &T_3_1);
        if (locals.err != ERR_ok) goto ex_1;
        locals.i.num = T_3_1.num;
        }

  LINE(110);
        {
            {locals.j.num = locals.i.num;
            }
            }

  LINE(111);
        for (;;) {
            CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
            CLUREF T_3_4;
            locals.err = stringOPfetch(locals.nm, locals.j, &T_3_1);
            if (locals.err != ERR_ok) goto ex_1;
            T_3_2.ch = '*';
            T_3_3.num = (T_3_1.ch == T_3_2.ch)? true : false;
            T_3_4.num = T_3_3.num ^ 1;
            if (T_3_4.num != true) { break; }

  LINE(112);
            {
            CLUREF T_4_1;
            locals.err = intOPadd(locals.j, CLU_1, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            locals.j.num = T_4_1.num;
            }
            }
            end_while_3:;

  LINE(114);
        {
        locals.j.num = locals.i.num;
        }

  LINE(115);
        for (;;) {
            if (true != true) { break; }

  LINE(116);
            {
                {locals.m.num = locals.l.num;
                }
                }

  LINE(117);
            for (;;) {
                if (true != true) { break; }

  LINE(118);
                {
                    {CLUREF T_6_1;
                    locals.err = stringOPfetch(locals.nm, locals.i, &T_6_1);
                    if (locals.err != ERR_ok) goto ex_2;
                    locals.c2.num = T_6_1.num;
                    }
                    }

  LINE(119);
                {
                CLUREF T_6_1;
                CLUREF T_6_2;
                T_6_1.ch = '*';
                T_6_2.num = (locals.c2.ch == T_6_1.ch)? true : false;
                if (T_6_2.num == true) {

  LINE(120);
                    {
                        locals.err = ERR_found;
                        goto ex_2;
                        }
                    }
                else {
                CLUREF T_6_3;
                CLUREF T_6_4;
                T_6_3.ch = '\000';
                T_6_4.num = (locals.c2.ch == T_6_3.ch)? true : false;
                if (T_6_4.num == true) {

  LINE(122);
                    {
                    CLUREF T_7_1;
                    T_7_1.ch = '*';
                    locals.c2.num = T_7_1.num;
                    }
                    }
                    }}/* end if */

  LINE(123);
                {
                    {CLUREF T_6_1;
                    locals.err = _bytevecOPfetch(locals.buf, locals.l, &T_6_1);
                    if (locals.err != ERR_ok) goto ex_2;
                    locals.c1.num = T_6_1.num;
                    }
                    }

  LINE(124);
                {
                CLUREF T_6_1;
                CLUREF T_6_2;
                T_6_1.ch = '\000';
                T_6_2.num = (locals.c1.ch == T_6_1.ch)? true : false;
                if (T_6_2.num == true) {

  LINE(125);
                    {
                    {
                    ret_1->num = 0;
                    }
                    {signal (ERR_ok);}}
                    }
                else {
                CLUREF T_6_3;
                CLUREF T_6_4;
                T_6_3.num = (locals.c1.ch == locals.c2.ch)? true : false;
                T_6_4.num = T_6_3.num ^ 1;
                if (T_6_4.num == true) {

  LINE(127);
                    goto end_while_5;
                    }
                    }}/* end if */

  LINE(128);
                {
                CLUREF T_6_1;
                locals.err = intOPadd(locals.l, CLU_1, &T_6_1);
                if (locals.err != ERR_ok) goto ex_2;
                locals.l.num = T_6_1.num;
                }

  LINE(129);
                {
                CLUREF T_6_1;
                locals.err = intOPadd(locals.i, CLU_1, &T_6_1);
                if (locals.err != ERR_ok) goto ex_2;
                locals.i.num = T_6_1.num;
                }
                }
                end_while_5:;

  LINE(131);
            {
            CLUREF T_5_1;
            locals.err = intOPadd(locals.m, CLU_1, &T_5_1);
            if (locals.err != ERR_ok) goto ex_2;
            locals.l.num = T_5_1.num;
            }

  LINE(132);
            {
            locals.i.num = locals.j.num;
            }
            }
            end_while_4:;
            goto end_2;
            ex_2:
                if ((locals.err == ERR_found)) {
                }
                else {
                    goto ex_1;
                }
            end_2:;
        }
        end_while_2:;
        goto end_1;
        ex_1:
            if ((locals.err == ERR_bounds)) {
            }
            else {
                goto ex_0;
            }
        end_1:;

  LINE(135);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        CLUREF T_1_3;
        CLUREF T_1_4;
        CLUREF T_1_5;
        T_1_1.ch = '\000';
        locals.err = _bytevecOPindexc(T_1_1, locals.buf, locals.l, &T_1_2);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = intOPsub(locals.h, locals.i, &T_1_3);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = intOPadd(T_1_3, CLU_1, &T_1_4);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = intOPsub(T_1_2, T_1_4, &T_1_5);
        if (locals.err != ERR_ok) goto ex_0;
        locals.m.num = T_1_5.num;
        }
        }

  LINE(136);
    {
    CLUREF T_1_1;
    T_1_1.num = (locals.l.num > locals.m.num)? true : false;
    if (T_1_1.num == true) {

  LINE(137);
        {
        {
        ret_1->num = 0;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(138);
    for (;;) {
        CLUREF T_1_1;
        T_1_1.num = (locals.i.num <= locals.h.num)? true : false;
        if (T_1_1.num != true) { break; }

  LINE(139);
        {
            {CLUREF T_2_1;
            locals.err = stringOPfetch(locals.nm, locals.i, &T_2_1);
            if (locals.err != ERR_ok) goto ex_0;
            locals.c.num = T_2_1.num;
            }
            }

  LINE(140);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.ch = '\000';
        T_2_2.num = (locals.c.ch == T_2_1.ch)? true : false;
        if (T_2_2.num == true) {

  LINE(141);
            {
            CLUREF T_3_1;
            T_3_1.ch = '*';
            locals.c.num = T_3_1.num;
            }
            }
            }/* end if */

  LINE(142);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        locals.err = _bytevecOPfetch(locals.buf, locals.m, &T_2_1);
        if (locals.err != ERR_ok) goto ex_0;
        T_2_2.num = (locals.c.ch == T_2_1.ch)? true : false;
        T_2_3.num = T_2_2.num ^ 1;
        if (T_2_3.num == true) {

  LINE(143);
            {
            {
            ret_1->num = 0;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(144);
        {
        CLUREF T_2_1;
        locals.err = intOPadd(locals.m, CLU_1, &T_2_1);
        if (locals.err != ERR_ok) goto ex_0;
        locals.m.num = T_2_1.num;
        }

  LINE(145);
        {
        CLUREF T_2_1;
        locals.err = intOPadd(locals.i, CLU_1, &T_2_1);
        if (locals.err != ERR_ok) goto ex_0;
        locals.i.num = T_2_1.num;
        }
        }
        end_while_6:;

  LINE(147);
    {
    {
    CLUREF T_1_1;
    locals.err = intOPsub(locals.m, locals.off, &T_1_1);
    if (locals.err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (locals.err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(locals.err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE _match_name_spec ****/

extern struct OPS *char_ops;
typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist1 *vals;
    siglist0 *sigs;
    Vlist13 *locals;
    Vlist1 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info__match_name_spec_actual;
static Vlist1 vals__match_name_spec = {0, 1, { {0, 2, "", &int_ops}}
};
static siglist0 sigs__match_name_spec = {0, 0};
static Vlist13 locals__match_name_spec = {0, 13,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "l", &int_ops},  {0, 2, "i", &int_ops},  {0, 2, "h", &int_ops},  {0, 2, "c", &char_ops},  {0, 2, "j", &int_ops},  {0, 2, "m", &int_ops},  {0, 2, "c2", &char_ops},  {0, 2, "c1", &char_ops},  {0, 2, "off", &int_ops},  {0, 2, "buf", &_bytevec_ops},  {0, 2, "nm", &string_ops}}
};
static Vlist0 popowns__match_name_spec = {0, 0};
Slist0 tformals__match_name_spec = {0, 0};
Slist0 opformals__match_name_spec = {0, 0};
dbg_info__match_name_spec_actual dbg_info__match_name_spec_data = {0, 12, 
    "_match_name_spec", "/common/pub/dcurtis-temp/pclu/lib/clu/_all_file_names_.clu", 0, 0, (int)_match_name_spec, 3, 
    &vals__match_name_spec, &sigs__match_name_spec, &locals__match_name_spec, &owns__match_name_spec, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info__match_name_spec = (struct dbg_info*)&dbg_info__match_name_spec_data;
