Index: /branches/eam_branches/ipp-20220316/ippTools/share/Makefile.am
===================================================================
--- /branches/eam_branches/ipp-20220316/ippTools/share/Makefile.am	(revision 42206)
+++ /branches/eam_branches/ipp-20220316/ippTools/share/Makefile.am	(revision 42207)
@@ -549,4 +549,6 @@
 	fpcamtool_find_processedexp.sql \
 	fpcamtool_pendingexp.sql \
+	fpcamtool_inputchips.sql \
+	fpcamtool_inputastrom.sql \
 	fpcamtool_queue_cam_id.sql \
 	fpcamtool_revertprocessedexp.sql \
Index: /branches/eam_branches/ipp-20220316/ippTools/share/fpcamtool_find_cam_and_chip_id.sql
===================================================================
--- /branches/eam_branches/ipp-20220316/ippTools/share/fpcamtool_find_cam_and_chip_id.sql	(revision 42206)
+++ /branches/eam_branches/ipp-20220316/ippTools/share/fpcamtool_find_cam_and_chip_id.sql	(revision 42207)
@@ -5,5 +5,5 @@
  SELECT
      exp_id,
-     chip_id,
+     chip_id
  FROM chipRun
  JOIN rawExp
Index: /branches/eam_branches/ipp-20220316/ippTools/share/fpcamtool_inputastrom.sql
===================================================================
--- /branches/eam_branches/ipp-20220316/ippTools/share/fpcamtool_inputastrom.sql	(revision 42207)
+++ /branches/eam_branches/ipp-20220316/ippTools/share/fpcamtool_inputastrom.sql	(revision 42207)
@@ -0,0 +1,8 @@
+SELECT
+    fpcam_id,
+    cam_id,
+    quality,
+    path_base
+FROM fpcamRun
+JOIN camProcessedExp
+    USING(cam_id)
Index: /branches/eam_branches/ipp-20220316/ippTools/share/fpcamtool_inputchips.sql
===================================================================
--- /branches/eam_branches/ipp-20220316/ippTools/share/fpcamtool_inputchips.sql	(revision 42207)
+++ /branches/eam_branches/ipp-20220316/ippTools/share/fpcamtool_inputchips.sql	(revision 42207)
@@ -0,0 +1,10 @@
+SELECT
+    exp_id,
+    chip_id,
+    fpcam_id,
+    path_base,
+    quality,
+    class_id
+FROM fpcamRun
+JOIN chipProcessedImfile
+    USING(chip_id)
Index: /branches/eam_branches/ipp-20220316/ippTools/share/fpcamtool_pendingexp.sql
===================================================================
--- /branches/eam_branches/ipp-20220316/ippTools/share/fpcamtool_pendingexp.sql	(revision 42206)
+++ /branches/eam_branches/ipp-20220316/ippTools/share/fpcamtool_pendingexp.sql	(revision 42207)
@@ -18,6 +18,4 @@
 LEFT JOIN fpcamProcessedExp
     USING(fpcam_id)
-LEFT JOIN fpcamMask
-    ON fpcamRun.label = fpcamMask.label
 LEFT JOIN Label
     ON fpcamRun.label = Label.label
@@ -25,6 +23,5 @@
     chipRun.state = 'full'
     AND camRun.state = 'full'
-    AND ((fpcamRun.state = 'new'    AND fpcamProcessedExp.cam_id IS NULL) OR
+    AND ((fpcamRun.state = 'new'    AND fpcamProcessedExp.fpcam_id IS NULL) OR
          (fpcamRun.state = 'update' AND fpcamProcessedExp.fault = 0 AND fpcamProcessedExp.quality = 0))
-    AND fpcamMask.label IS NULL
     AND (Label.active OR Label.active IS NULL)
Index: /branches/eam_branches/ipp-20220316/ippTools/share/fpcamtool_revertprocessedexp.sql
===================================================================
--- /branches/eam_branches/ipp-20220316/ippTools/share/fpcamtool_revertprocessedexp.sql	(revision 42206)
+++ /branches/eam_branches/ipp-20220316/ippTools/share/fpcamtool_revertprocessedexp.sql	(revision 42207)
@@ -2,5 +2,5 @@
 USING fpcamProcessedExp, fpcamRun, camRun, chipRun, rawExp
 WHERE
-    fpcamRun.cam_id      = fpcamProcessedExp.cam_id
+    fpcamRun.fpcam_id      = fpcamProcessedExp.fpcam_id
     AND fpcamRun.cam_id  = camRun.cam_id
     AND fpcamRun.chip_id = chipRun.chip_id
Index: /branches/eam_branches/ipp-20220316/ippTools/share/pxadmin_create_tables.sql
===================================================================
--- /branches/eam_branches/ipp-20220316/ippTools/share/pxadmin_create_tables.sql	(revision 42206)
+++ /branches/eam_branches/ipp-20220316/ippTools/share/pxadmin_create_tables.sql	(revision 42207)
@@ -2474,9 +2474,9 @@
     deteff_uq    FLOAT,
 
-    quality      SMALLINT
+    quality      SMALLINT,
 
     PRIMARY KEY(fpcam_id),
     KEY(fault),
-    FOREIGN KEY (fpcam_id) REFERENCES fpcamRun(fpcam_id),
+    FOREIGN KEY (fpcam_id) REFERENCES fpcamRun(fpcam_id)
 ) ENGINE=innodb DEFAULT CHARSET=latin1;
 
Index: /branches/eam_branches/ipp-20220316/ippTools/share/pxadmin_drop_tables.sql
===================================================================
--- /branches/eam_branches/ipp-20220316/ippTools/share/pxadmin_drop_tables.sql	(revision 42206)
+++ /branches/eam_branches/ipp-20220316/ippTools/share/pxadmin_drop_tables.sql	(revision 42207)
@@ -129,5 +129,6 @@
 DROP TABLE IF EXISTS remoteComponent;
 DROP TABLE IF EXISTS remoteRun;
-
+DROP TABLE IF EXISTS fpcamProcessedExp;
+DROP TABLE IF EXISTS fpcamRun;
 
 SET FOREIGN_KEY_CHECKS=1
Index: /branches/eam_branches/ipp-20220316/ippTools/src/fpcamtool.c
===================================================================
--- /branches/eam_branches/ipp-20220316/ippTools/src/fpcamtool.c	(revision 42206)
+++ /branches/eam_branches/ipp-20220316/ippTools/src/fpcamtool.c	(revision 42207)
@@ -33,11 +33,10 @@
 static bool updaterunMode(pxConfig *config);
 static bool pendingexpMode(pxConfig *config);
+static bool inputchipsMode(pxConfig *config);
+static bool inputastromMode(pxConfig *config);
 static bool addprocessedexpMode(pxConfig *config);
 static bool processedexpMode(pxConfig *config);
 static bool revertprocessedexpMode(pxConfig *config);
 static bool updateprocessedexpMode(pxConfig *config);
-static bool blockMode(pxConfig *config);
-static bool maskedMode(pxConfig *config);
-static bool unblockMode(pxConfig *config);
 
 # define MODECASE(caseName, func) case caseName: if (!func(config)) { goto FAIL; } break;
@@ -57,11 +56,10 @@
         MODECASE(FPCAMTOOL_MODE_UPDATERUN,            updaterunMode);
         MODECASE(FPCAMTOOL_MODE_PENDINGEXP,           pendingexpMode);
+        MODECASE(FPCAMTOOL_MODE_INPUTCHIPS,           inputchipsMode);
+        MODECASE(FPCAMTOOL_MODE_INPUTASTROM,          inputastromMode);
         MODECASE(FPCAMTOOL_MODE_ADDPROCESSEDEXP,      addprocessedexpMode);
         MODECASE(FPCAMTOOL_MODE_PROCESSEDEXP,         processedexpMode);
         MODECASE(FPCAMTOOL_MODE_REVERTPROCESSEDEXP,   revertprocessedexpMode);
         MODECASE(FPCAMTOOL_MODE_UPDATEPROCESSEDEXP,   updateprocessedexpMode);
-        MODECASE(FPCAMTOOL_MODE_BLOCK,                blockMode);
-        MODECASE(FPCAMTOOL_MODE_MASKED,               maskedMode);
-        MODECASE(FPCAMTOOL_MODE_UNBLOCK,              unblockMode);
         default:
             psAbort("invalid option (this should not happen)");
@@ -365,4 +363,135 @@
 }
 
+static bool inputchipsMode(pxConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(config, false);
+
+    PXOPT_LOOKUP_S64(fpcam_id, config->args, "-fpcam_id", true, false);
+    PXOPT_LOOKUP_U64(limit, config->args,    "-limit", false, false);
+    PXOPT_LOOKUP_BOOL(simple, config->args,  "-simple", false);
+
+    psMetadata *where = psMetadataAlloc();
+    PXOPT_COPY_S64(config->args, where, "-fpcam_id",  "fpcamRun.fpcam_id", "==");
+    PXOPT_COPY_STR(config->args, where, "-class_id", "fpcamRun.reduction", "==");
+
+    psString query = pxDataGet("fpcamtool_inputchips.sql");
+    if (!query) {
+        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement for %d", (int) fpcam_id);
+        return false;
+    }
+
+    // use psDBGenerateWhereSQL because the SQL yields an intermediate table
+    if (!psListLength(where->list)) {
+        psError(PXTOOLS_ERR_SYS, false, "unrestricted query not allowed (-fpcam_id required)");
+        return false;
+    }
+
+    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
+    psStringAppend(&query, " WHERE %s", whereClause);
+    psFree(whereClause);
+    psFree(where);
+
+    // treat limit == 0 as "no limit"
+    if (limit) {
+        psString limitString = psDBGenerateLimitSQL(limit);
+        psStringAppend(&query, " %s", limitString);
+        psFree(limitString);
+    }
+
+    if (!p_psDBRunQuery(config->dbh, query)) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        psFree(query);
+        return false;
+    }
+    psFree(query);
+
+    psArray *output = p_psDBFetchResult(config->dbh);
+    if (!output) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        return false;
+    }
+    if (!psArrayLength(output)) {
+        psTrace("fpcamtool", PS_LOG_INFO, "no rows found");
+        psFree(output);
+        return true;
+    }
+
+    // negate simple so the default is true
+    if (!ippdbPrintMetadatas(stdout, output, "fpcamInputChips", !simple)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print array");
+        psFree(output);
+        return false;
+    }
+
+    psFree(output);
+
+    return true;
+}
+
+static bool inputastromMode(pxConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(config, false);
+
+    PXOPT_LOOKUP_S64(fpcam_id, config->args, "-fpcam_id", true, false);
+    PXOPT_LOOKUP_U64(limit, config->args,    "-limit", false, false);
+    PXOPT_LOOKUP_BOOL(simple, config->args,  "-simple", false);
+
+    psMetadata *where = psMetadataAlloc();
+    PXOPT_COPY_S64(config->args, where, "-fpcam_id",  "fpcamRun.fpcam_id", "==");
+
+    psString query = pxDataGet("fpcamtool_inputastrom.sql");
+    if (!query) {
+        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement for %d", (int) fpcam_id);
+        return false;
+    }
+
+    // use psDBGenerateWhereSQL because the SQL yields an intermediate table
+    if (!psListLength(where->list)) {
+        psError(PXTOOLS_ERR_SYS, false, "unrestricted query not allowed (-fpcam_id required)");
+        return false;
+    }
+
+    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
+    psStringAppend(&query, " WHERE %s", whereClause);
+    psFree(whereClause);
+    psFree(where);
+
+    // treat limit == 0 as "no limit"
+    if (limit) {
+        psString limitString = psDBGenerateLimitSQL(limit);
+        psStringAppend(&query, " %s", limitString);
+        psFree(limitString);
+    }
+
+    if (!p_psDBRunQuery(config->dbh, query)) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        psFree(query);
+        return false;
+    }
+    psFree(query);
+
+    psArray *output = p_psDBFetchResult(config->dbh);
+    if (!output) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        return false;
+    }
+    if (!psArrayLength(output)) {
+        psTrace("fpcamtool", PS_LOG_INFO, "no rows found");
+        psFree(output);
+        return true;
+    }
+
+    // negate simple so the default is true
+    if (!ippdbPrintMetadatas(stdout, output, "fpcamInputAstrom", !simple)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print array");
+        psFree(output);
+        return false;
+    }
+
+    psFree(output);
+
+    return true;
+}
+
 static bool addprocessedexpMode(pxConfig *config)
 {
@@ -392,10 +521,10 @@
     PXOPT_LOOKUP_F32(deteff_err, config->args,     "-deteff_inst_err", false, false);
 
-    psF32 deteff = NAN;
+    psF32 deteff_obs = NAN;
     psF32 deteff_uq = NAN;
     psF32 deteff_lq = NAN;
     if (isfinite(zpt_obs)) {
         if (isfinite(deteff_inst)) {
-            deteff = deteff_inst + zpt_obs;
+            deteff_obs = deteff_inst + zpt_obs;
         }
         if (isfinite(deteff_inst_uq)) {
@@ -437,5 +566,5 @@
 	NULL, // XXX : this should be epoch
         software_ver,
-        deteff,
+        deteff_obs,
         deteff_err,
         deteff_lq,
@@ -700,68 +829,2 @@
 }
 
-static bool blockMode(pxConfig *config)
-{
-    PS_ASSERT_PTR_NON_NULL(config, false);
-
-    PXOPT_LOOKUP_STR(label, config->args, "-label", true, false);
-
-    if (!fpcamMaskInsert(config->dbh, label)) {
-        psError(PS_ERR_UNKNOWN, false, "database error");
-        return false;
-    }
-    return true;
-}
-
-static bool maskedMode(pxConfig *config)
-{
-    PS_ASSERT_PTR_NON_NULL(config, false);
-
-    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
-
-    psString query = psStringCopy("SELECT * FROM fpcamMask");
-
-    if (!p_psDBRunQuery(config->dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database error");
-        psFree(query);
-        return false;
-    }
-    psFree(query);
-
-    psArray *output = p_psDBFetchResult(config->dbh);
-    if (!output) {
-        psError(PS_ERR_UNKNOWN, false, "database error");
-        return false;
-    }
-    if (!psArrayLength(output)) {
-        psTrace("fpcamtool", PS_LOG_INFO, "no rows found");
-        psFree(output);
-        return true;
-    }
-
-    // negative simple so the default is true
-    if (!ippdbPrintMetadatas(stdout, output, "fpcamMask", !simple)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to print array");
-        psFree(output);
-        return false;
-    }
-
-    psFree(output);
-    return true;
-}
-
-static bool unblockMode(pxConfig *config)
-{
-    PS_ASSERT_PTR_NON_NULL(config, false);
-
-    PXOPT_LOOKUP_STR(label, config->args, "-label", true, false);
-
-    char *query = "DELETE FROM fpcamMask WHERE label = '%s'";
-
-    if (!p_psDBRunQueryF(config->dbh, query, label)) {
-        psError(PS_ERR_UNKNOWN, false, "database error");
-        return false;
-    }
-
-    return true;
-}
-
Index: /branches/eam_branches/ipp-20220316/ippTools/src/fpcamtool.h
===================================================================
--- /branches/eam_branches/ipp-20220316/ippTools/src/fpcamtool.h	(revision 42206)
+++ /branches/eam_branches/ipp-20220316/ippTools/src/fpcamtool.h	(revision 42207)
@@ -28,11 +28,10 @@
     FPCAMTOOL_MODE_UPDATERUN,
     FPCAMTOOL_MODE_PENDINGEXP,
+    FPCAMTOOL_MODE_INPUTCHIPS,
+    FPCAMTOOL_MODE_INPUTASTROM,
     FPCAMTOOL_MODE_ADDPROCESSEDEXP,
     FPCAMTOOL_MODE_PROCESSEDEXP,
     FPCAMTOOL_MODE_REVERTPROCESSEDEXP,
     FPCAMTOOL_MODE_UPDATEPROCESSEDEXP,
-    FPCAMTOOL_MODE_BLOCK,
-    FPCAMTOOL_MODE_MASKED,
-    FPCAMTOOL_MODE_UNBLOCK,
 } fpcamtoolMode;
 
Index: /branches/eam_branches/ipp-20220316/ippTools/src/fpcamtoolConfig.c
===================================================================
--- /branches/eam_branches/ipp-20220316/ippTools/src/fpcamtoolConfig.c	(revision 42206)
+++ /branches/eam_branches/ipp-20220316/ippTools/src/fpcamtoolConfig.c	(revision 42207)
@@ -91,4 +91,17 @@
     psMetadataAddBool(pendingexpArgs, PS_LIST_TAIL, "-all",               0, "allow everything to be queued without search terms", false);
 
+    // -inputchips
+    psMetadata *inputchipsArgs = psMetadataAlloc();
+    psMetadataAddS64(inputchipsArgs, PS_LIST_TAIL, "-fpcam_id",          0, "search by fpcam_id (required)", 0);
+    psMetadataAddStr(inputchipsArgs, PS_LIST_TAIL, "-class_id",          0, "limit by class_id", NULL);
+    psMetadataAddU64(inputchipsArgs, PS_LIST_TAIL, "-limit",             0, "limit result set to N items", 0);
+    psMetadataAddBool(inputchipsArgs, PS_LIST_TAIL, "-simple",           0, "use the simple output format", false);
+
+    // -inputastrom
+    psMetadata *inputastromArgs = psMetadataAlloc();
+    psMetadataAddS64(inputastromArgs, PS_LIST_TAIL, "-fpcam_id",            0, "search by fpcam_id", 0);
+    psMetadataAddU64(inputastromArgs, PS_LIST_TAIL, "-limit",             0, "limit result set to N items", 0);
+    psMetadataAddBool(inputastromArgs, PS_LIST_TAIL, "-simple",           0, "use the simple output format", false);
+
     // -addprocessedexp
     psMetadata *addprocessedexpArgs = psMetadataAlloc();
@@ -135,5 +148,5 @@
     psMetadata *revertprocessedexpArgs = psMetadataAlloc();
     pxfpcamSetSearchArgs(revertprocessedexpArgs);
-    psMetadataAddS64(revertprocessedexpArgs, PS_LIST_TAIL, "-cam_id",   0,            "search by cam_id", 0);
+    psMetadataAddS64(revertprocessedexpArgs, PS_LIST_TAIL, "-fpcam_id",   0,            "search by cam_id", 0);
     psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-label",    PS_META_DUPLICATE_OK, "search by fpcamRun label", NULL);
     psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-reduction",0,            "search by fpcamRun reduction class", NULL);
@@ -151,33 +164,16 @@
     psMetadataAddS16(updateprocessedexpArgs, PS_LIST_TAIL, "-set_quality",  0,            "set quality", 0);
 
-    // -block
-    psMetadata *blockArgs = psMetadataAlloc();
-    psMetadataAddStr(blockArgs, PS_LIST_TAIL, "-label",  0,            "name of a label to mask out (required)", NULL);
-
-    // -masked
-    psMetadata *maskedArgs = psMetadataAlloc();
-    psMetadataAddBool(maskedArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
-
-    // -unblock
-    psMetadata *unblockArgs = psMetadataAlloc();
-    psMetadataAddStr(unblockArgs, PS_LIST_TAIL, "-label",  0,            "name of a label to unmask (required)", NULL);
-
-    /* cleanup and export stages ignored for now.
-       see camtool.c & camtoolConfig.c for examples
-    */
-
     psMetadata *argSets = psMetadataAlloc();
     psMetadata *modes = psMetadataAlloc();
 
-    PXOPT_ADD_MODE("-definebyquery",        "create runs from chip stage",          FPCAMTOOL_MODE_DEFINEBYQUERY, definebyqueryArgs);
-    PXOPT_ADD_MODE("-updaterun",            "change cam run properties",            FPCAMTOOL_MODE_UPDATERUN,      updaterunArgs);
-    PXOPT_ADD_MODE("-pendingexp",           "show pending exposures",               FPCAMTOOL_MODE_PENDINGEXP,    pendingexpArgs);
-    PXOPT_ADD_MODE("-addprocessedexp",      "add a processed exposure",             FPCAMTOOL_MODE_ADDPROCESSEDEXP, addprocessedexpArgs);
-    PXOPT_ADD_MODE("-processedexp",         "show processed exposures",             FPCAMTOOL_MODE_PROCESSEDEXP,  processedexpArgs);
-    PXOPT_ADD_MODE("-revertprocessedexp",   "undo a processed exposure",            FPCAMTOOL_MODE_REVERTPROCESSEDEXP,  revertprocessedexpArgs);
-    PXOPT_ADD_MODE("-updateprocessedexp",   "changed processed exp properties",     FPCAMTOOL_MODE_UPDATEPROCESSEDEXP,updateprocessedexpArgs);
-    PXOPT_ADD_MODE("-block",                "set a label block",                    FPCAMTOOL_MODE_BLOCK,         blockArgs);
-    PXOPT_ADD_MODE("-masked",               "show blocked labels",                  FPCAMTOOL_MODE_MASKED,        maskedArgs);
-    PXOPT_ADD_MODE("-unblock",              "remove a label block",                 FPCAMTOOL_MODE_UNBLOCK,       unblockArgs);
+    PXOPT_ADD_MODE("-definebyquery",        "create runs from chip stage",          FPCAMTOOL_MODE_DEFINEBYQUERY,      definebyqueryArgs);
+    PXOPT_ADD_MODE("-updaterun",            "change cam run properties",            FPCAMTOOL_MODE_UPDATERUN,          updaterunArgs);
+    PXOPT_ADD_MODE("-pendingexp",           "show pending exposures",               FPCAMTOOL_MODE_PENDINGEXP,         pendingexpArgs);
+    PXOPT_ADD_MODE("-inputchips",           "list input chips",                     FPCAMTOOL_MODE_INPUTCHIPS,         inputchipsArgs);
+    PXOPT_ADD_MODE("-inputastrom",          "list input astrometry file",           FPCAMTOOL_MODE_INPUTASTROM,        inputastromArgs);
+    PXOPT_ADD_MODE("-addprocessedexp",      "add a processed exposure",             FPCAMTOOL_MODE_ADDPROCESSEDEXP,    addprocessedexpArgs);
+    PXOPT_ADD_MODE("-processedexp",         "show processed exposures",             FPCAMTOOL_MODE_PROCESSEDEXP,       processedexpArgs);
+    PXOPT_ADD_MODE("-revertprocessedexp",   "undo a processed exposure",            FPCAMTOOL_MODE_REVERTPROCESSEDEXP, revertprocessedexpArgs);
+    PXOPT_ADD_MODE("-updateprocessedexp",   "changed processed exp properties",     FPCAMTOOL_MODE_UPDATEPROCESSEDEXP, updateprocessedexpArgs);
 
     if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
Index: /branches/eam_branches/ipp-20220316/ippTools/src/pxfpcam.c
===================================================================
--- /branches/eam_branches/ipp-20220316/ippTools/src/pxfpcam.c	(revision 42206)
+++ /branches/eam_branches/ipp-20220316/ippTools/src/pxfpcam.c	(revision 42207)
@@ -42,4 +42,5 @@
     psMetadataAddStr(md,  PS_LIST_TAIL, "-exp_tag",            0, "search by exp_tag", NULL);
     psMetadataAddStr(md,  PS_LIST_TAIL, "-exp_type",           0, "search by exp_type", NULL);
+    psMetadataAddStr(md,  PS_LIST_TAIL, "-obs_mode",           0, "search by obs_mode", NULL);
     psMetadataAddStr(md,  PS_LIST_TAIL, "-comment",            0, "search by comment", NULL);
     psMetadataAddStr(md,  PS_LIST_TAIL, "-filelevel",          0, "search by filelevel", NULL);
