Index: branches/eam_branches/ipp-20110710/ippTools/src/bgtoolConfig.c
===================================================================
--- branches/eam_branches/ipp-20110710/ippTools/src/bgtoolConfig.c	(revision 31852)
+++ branches/eam_branches/ipp-20110710/ippTools/src/bgtoolConfig.c	(revision 32337)
@@ -113,4 +113,6 @@
     psMetadataAddTime(updatechipArgs, PS_LIST_TAIL, "-registered_end", 0, "search by registration time (<)", NULL);
     psMetadataAddBool(updatechipArgs, PS_LIST_TAIL, "-destreaked", 0, "search for runs that have been destreaked", false);
+    psMetadataAddS64(updatechipArgs, PS_LIST_TAIL, "-magicked",  0,        "define magicked status", 0); 
+    psMetadataAddS64(updatechipArgs, PS_LIST_TAIL, "-not_destreaked",  0,        "define magicked status", 0); 
     psMetadataAddBool(updatechipArgs, PS_LIST_TAIL, "-pretend", 0, "only pretend to run the query", false);
     psMetadataAddStr(updatechipArgs, PS_LIST_TAIL, "-set_state", 0, "define new state", NULL);
@@ -298,4 +300,6 @@
     psMetadataAddTime(updatewarpArgs, PS_LIST_TAIL, "-registered_end", 0, "search by registration time (<)", NULL);
     psMetadataAddBool(updatewarpArgs, PS_LIST_TAIL, "-destreaked", 0, "search for runs that have been destreaked", false);
+    psMetadataAddBool(updatewarpArgs, PS_LIST_TAIL, "-not_destreaked", 0, "search for runs that have been destreaked", false);
+    psMetadataAddS64(updatewarpArgs, PS_LIST_TAIL, "-magicked",  0,        "define magicked status", 0); 
     psMetadataAddBool(updatewarpArgs, PS_LIST_TAIL, "-pretend", 0, "only pretend to run the query", false);
     psMetadataAddStr(updatewarpArgs, PS_LIST_TAIL, "-set_state", 0, "define new state", NULL);
Index: branches/eam_branches/ipp-20110710/ippTools/src/chiptool.c
===================================================================
--- branches/eam_branches/ipp-20110710/ippTools/src/chiptool.c	(revision 31852)
+++ branches/eam_branches/ipp-20110710/ippTools/src/chiptool.c	(revision 32337)
@@ -743,4 +743,5 @@
         faulted = false;
     }
+    PXOPT_LOOKUP_BOOL(pstamp_order, config->args, "-pstamp_order", false);
 
     psMetadata *where = psMetadataAlloc();
@@ -787,4 +788,10 @@
         // don't list faulted rows
         psStringAppend(&query, " %s", "AND chipProcessedImfile.fault = 0");
+    }
+
+    if (pstamp_order) {
+        // put runs in order of exposure id with newest chip Runs first
+        // The postage stamp parser depends on this behavior
+        psStringAppend(&query, "\nORDER by exp_id, chip_id DESC");
     }
 
Index: branches/eam_branches/ipp-20110710/ippTools/src/chiptoolConfig.c
===================================================================
--- branches/eam_branches/ipp-20110710/ippTools/src/chiptoolConfig.c	(revision 31852)
+++ branches/eam_branches/ipp-20110710/ippTools/src/chiptoolConfig.c	(revision 32337)
@@ -210,4 +210,5 @@
     psMetadataAddStr(processedimfileArgs,  PS_LIST_TAIL, "-data_group",  PS_META_DUPLICATE_OK, "search by chipRun data_group (LIKE comparison)", NULL);
     pxmagicAddArguments(processedimfileArgs);
+    psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-pstamp_order",  0,    "order results for postage stamp server", false);
 
     psMetadataAddU64(processedimfileArgs,  PS_LIST_TAIL, "-limit",  0,           "limit result set to N items", 0);
Index: branches/eam_branches/ipp-20110710/ippTools/src/difftool.c
===================================================================
--- branches/eam_branches/ipp-20110710/ippTools/src/difftool.c	(revision 31852)
+++ branches/eam_branches/ipp-20110710/ippTools/src/difftool.c	(revision 32337)
@@ -2461,5 +2461,10 @@
         psString limitString = psDBGenerateLimitSQL(limit);
         psStringAppend(&query, " %s", limitString);
+	psStringSubstitute(&query,limitString,"@INNERLIMITS@");
         psFree(limitString);
+
+    }
+    else {
+      psStringSubstitute(&query,NULL,"@INNERLIMITS@");
     }
     //    fprintf(stderr,"%s",query);
Index: branches/eam_branches/ipp-20110710/ippTools/src/disttool.c
===================================================================
--- branches/eam_branches/ipp-20110710/ippTools/src/disttool.c	(revision 31852)
+++ branches/eam_branches/ipp-20110710/ippTools/src/disttool.c	(revision 32337)
@@ -771,5 +771,5 @@
     PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "==");
     PXOPT_COPY_STR(config->args, where, "-state", "state", "==");
-    PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
+    pxAddLabelSearchArgs(config, where, "-label", "distRun.label", "==");
 
     PXOPT_COPY_S16(config->args, where,  "-fault", "distRun.fault", "==");
Index: branches/eam_branches/ipp-20110710/ippTools/src/disttoolConfig.c
===================================================================
--- branches/eam_branches/ipp-20110710/ippTools/src/disttoolConfig.c	(revision 31852)
+++ branches/eam_branches/ipp-20110710/ippTools/src/disttoolConfig.c	(revision 32337)
@@ -105,5 +105,5 @@
     psMetadataAddS64(revertrunArgs, PS_LIST_TAIL, "-stage_id", 0, "define stage_id", 0);
     psMetadataAddStr(revertrunArgs, PS_LIST_TAIL, "-state",    0, "define state", NULL);
-    psMetadataAddStr(revertrunArgs, PS_LIST_TAIL, "-label",    0, "define label", NULL);
+    psMetadataAddStr(revertrunArgs, PS_LIST_TAIL, "-label",    PS_META_DUPLICATE_OK, "define label", NULL);
     psMetadataAddS16(revertrunArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0);
     psMetadataAddBool(revertrunArgs, PS_LIST_TAIL, "-all",    0, "revert all faulted runs", NULL);
Index: branches/eam_branches/ipp-20110710/ippTools/src/dqstatstool.c
===================================================================
--- branches/eam_branches/ipp-20110710/ippTools/src/dqstatstool.c	(revision 31852)
+++ branches/eam_branches/ipp-20110710/ippTools/src/dqstatstool.c	(revision 32337)
@@ -92,5 +92,5 @@
   }
   else {
-    psStringAppend(&query, " AND (warp_id IS NOT NULL AND invalid IS NULL) ");
+    psStringAppend(&query, " AND ((warpRun.warp_id IS NOT NULL OR camProcessedExp.quality > 0) AND invalid IS NULL) ");
   }
 
Index: branches/eam_branches/ipp-20110710/ippTools/src/magictool.c
===================================================================
--- branches/eam_branches/ipp-20110710/ippTools/src/magictool.c	(revision 31852)
+++ branches/eam_branches/ipp-20110710/ippTools/src/magictool.c	(revision 32337)
@@ -131,5 +131,5 @@
     PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false);
-
+    PXOPT_LOOKUP_BOOL(multidiff, config->args, "-multidiff", false);
     psMetadata *diffWhere = psMetadataAlloc(); // WHERE conditions for diffRuns
     PXOPT_COPY_STR(config->args, diffWhere, "-diff_label", "diffRun.label", "==");
@@ -142,5 +142,11 @@
     // Get list of exposures ready to magic
     {
-        psString query = pxDataGet("magictool_definebyquery_select.sql");
+        psString query;
+        if (multidiff) {
+	  query = pxDataGet("magictool_definebyquery_select_multidiff.sql");
+        }
+        else {
+	  query = pxDataGet("magictool_definebyquery_select.sql");
+        }
         if (!query) {
             psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
Index: branches/eam_branches/ipp-20110710/ippTools/src/magictoolConfig.c
===================================================================
--- branches/eam_branches/ipp-20110710/ippTools/src/magictoolConfig.c	(revision 31852)
+++ branches/eam_branches/ipp-20110710/ippTools/src/magictoolConfig.c	(revision 32337)
@@ -61,4 +61,5 @@
     psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-available", 0, "process what's immediately available?", false);
     psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-rerun", 0, "generate new run even if existing?", false);
+    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-multidiff", 0, "allow multiple diffs to be magicked with the same label", false);
     psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
     psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend", 0, "list results but do not queue", false);
Index: branches/eam_branches/ipp-20110710/ippTools/src/regtool.c
===================================================================
--- branches/eam_branches/ipp-20110710/ippTools/src/regtool.c	(revision 31852)
+++ branches/eam_branches/ipp-20110710/ippTools/src/regtool.c	(revision 32337)
@@ -720,4 +720,5 @@
     PXOPT_COPY_STR(config->args, where,  "-obs_mode",      "obs_mode", "==");
     PXOPT_COPY_STR(config->args, where,  "-data_state",    "data_state", "==");
+    PXOPT_LOOKUP_BOOL(video_cells, config->args, "-video_cells", false);
 
     PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
@@ -769,4 +770,7 @@
         // don't list faulted rows
         psStringAppend(&query, " %s", "AND rawImfile.fault = 0");
+    }
+    if (video_cells) {
+        psStringAppend(&query, " %s", "AND rawImfile.video_cells");
     }
 
Index: branches/eam_branches/ipp-20110710/ippTools/src/regtoolConfig.c
===================================================================
--- branches/eam_branches/ipp-20110710/ippTools/src/regtoolConfig.c	(revision 31852)
+++ branches/eam_branches/ipp-20110710/ippTools/src/regtoolConfig.c	(revision 32337)
@@ -169,4 +169,5 @@
     ADD_OPT(Bool, processedimfileArgs, "-simple",    "use the simple output format",          false);
     ADD_OPT(Bool, processedimfileArgs, "-ordered_by_date", "force output to be in DATE order", false);
+    ADD_OPT(Bool, processedimfileArgs, "-video_cells",    "limit result to chips that have video cells", false);
     pxspaceAddArguments(processedimfileArgs);
     pxmagicAddArguments(processedimfileArgs);
Index: branches/eam_branches/ipp-20110710/ippTools/src/stacktool.c
===================================================================
--- branches/eam_branches/ipp-20110710/ippTools/src/stacktool.c	(revision 31852)
+++ branches/eam_branches/ipp-20110710/ippTools/src/stacktool.c	(revision 32337)
@@ -154,9 +154,9 @@
     psMetadata *row = output->data[i];
 
-    printf("%" PRId64 " %s %s %s %s\n",psMetadataLookupS64(NULL,row,"sass_id"),
-           psMetadataLookupStr(NULL,row,"data_group"),
-           psMetadataLookupStr(NULL,row,"tess_id"),
-           psMetadataLookupStr(NULL,row,"filter"),
-           psMetadataLookupStr(NULL,row,"projection_cell"));
+/*     printf("%" PRId64 " %s %s %s %s\n",psMetadataLookupS64(NULL,row,"sass_id"), */
+/*            psMetadataLookupStr(NULL,row,"data_group"), */
+/*            psMetadataLookupStr(NULL,row,"tess_id"), */
+/*            psMetadataLookupStr(NULL,row,"filter"), */
+/*            psMetadataLookupStr(NULL,row,"projection_cell")); */
 
     if (psMetadataLookupS64(NULL,row,"sass_id") == PS_MAX_S64) {
@@ -172,9 +172,9 @@
                      psMetadataLookupStr(NULL,row,"projection_cell"));
   }
-  printf("%" PRId64 " %s %s %s %s\n",psMetadataLookupS64(NULL,outrow,"sass_id"),
-         psMetadataLookupStr(NULL,outrow,"data_group"),
-         psMetadataLookupStr(NULL,outrow,"tess_id"),
-         psMetadataLookupStr(NULL,outrow,"filter"),
-         psMetadataLookupStr(NULL,outrow,"projection_cell"));
+/*   printf("%" PRId64 " %s %s %s %s\n",psMetadataLookupS64(NULL,outrow,"sass_id"), */
+/*          psMetadataLookupStr(NULL,outrow,"data_group"), */
+/*          psMetadataLookupStr(NULL,outrow,"tess_id"), */
+/*          psMetadataLookupStr(NULL,outrow,"filter"), */
+/*          psMetadataLookupStr(NULL,outrow,"projection_cell")); */
 
 
Index: branches/eam_branches/ipp-20110710/ippTools/src/warptool.c
===================================================================
--- branches/eam_branches/ipp-20110710/ippTools/src/warptool.c	(revision 31852)
+++ branches/eam_branches/ipp-20110710/ippTools/src/warptool.c	(revision 32337)
@@ -975,4 +975,5 @@
     psFree(where);
 
+    psArray *allOutput = psArrayAllocEmpty(0);
     // Now loop over the labels and query each individually
     for (long i = 0; i < psArrayLength(labelOutput); i++) {
@@ -1023,9 +1024,11 @@
         long outputLength = psArrayLength(output);
         if (outputLength) {
-            // negative simple so the default is true
-            if (!ippdbPrintMetadatas(stdout, output, "warpPendingSkyCell", !simple)) {
-                psError(PS_ERR_UNKNOWN, false, "failed to print array");
-                psFree(output);
-                return false;
+            for (int i = 0; i< outputLength; i++) {
+                psPtr ptr = output->data[i];
+                allOutput = psArrayAdd(allOutput, outputLength - i + 10, ptr);
+                if (!allOutput) {
+                    psError(PS_ERR_UNKNOWN, false, "failed to add element to array");
+                    return false;
+                }
             }
         } else {
@@ -1044,4 +1047,13 @@
         }
     }
+    long allLabelsLength = psArrayLength(allOutput);
+    if (allLabelsLength) {
+        if (!ippdbPrintMetadatas(stdout, allOutput, "warpPendingSkyCell", !simple)) {
+            psError(PS_ERR_UNKNOWN, false, "failed to print array");
+            psFree(allOutput);
+            return false;
+        }
+    }
+    psFree(allOutput);
     psFree(labelOutput);
     psFree(whereStr);
@@ -1382,4 +1394,5 @@
     pxAddLabelSearchArgs (config, where, "-data_group",   "warpRun.data_group", "LIKE");
 
+    PXOPT_LOOKUP_BOOL(pstamp_order, config->args, "-pstamp_order", false);
     PXOPT_LOOKUP_BOOL(all, config->args, "-all", false);
 
@@ -1423,4 +1436,10 @@
     }
     psFree(where);
+
+    if (pstamp_order) {
+        // put runs in order of exposure id with newest warp Runs first
+        // The postage stamp parser depends on this behavior
+        psStringAppend(&query, "\nORDER by exp_id, warp_id DESC");
+    }
 
     // treat limit == 0 as "no limit"
@@ -2467,9 +2486,8 @@
 
     if (pstamp_order) {
-        // put runs in order of exposure id with newest chip Runs first
+        // put runs in order of exposure id with newest warp Runs first
         // The postage stamp parser depends on this behavior
         psStringAppend(&query, "\nORDER by exp_id, warp_id DESC");
     }
-
 
     // treat limit == 0 as "no limit"
Index: branches/eam_branches/ipp-20110710/ippTools/src/warptoolConfig.c
===================================================================
--- branches/eam_branches/ipp-20110710/ippTools/src/warptoolConfig.c	(revision 31852)
+++ branches/eam_branches/ipp-20110710/ippTools/src/warptoolConfig.c	(revision 32337)
@@ -258,4 +258,5 @@
     // add arguments for spatial search
     pxspaceAddArguments(warpedArgs);
+    psMetadataAddBool(warpedArgs, PS_LIST_TAIL, "-pstamp_order",  0,    "order results for postage stamp server", false);
 
     psMetadataAddBool(warpedArgs, PS_LIST_TAIL, "-all",  0,             "search without arguments", false);
