// Path: classes/ch/loway/oss/slicedbread/misc/StrFmt.java
// public class StrFmt {
//    
//     StringBuilder sb = new StringBuilder();
//     
//     /**
//      * 
//      *  Left-aligned string.
//      * 
//      */
//     
//     public StrFmt addL( String s, int size ) {
//         s = trim( s, size );
//         sb.append(s);
//         addSpaces( size - s.length() );
//         return this;
//     }
//     
//     public StrFmt addR( String s, int size ) {
//         s = trim( s, size );
//         addSpaces( size - s.length() );
//         sb.append(s);
//         return this;
//     }
//     
//     public StrFmt add( String s ) {
//         sb.append(s);
//         return this;
//     }
//     
//     public StrFmt addL( int n, int size ) {
//         return addL( Integer.toString(n), size );
//     }
// 
//     public StrFmt addR( int n, int size ) {
//         return addR( Integer.toString(n), size );
//     }
// 
//     public StrFmt addHistogram( int n, int total, int nCols ) {
//         
//         int cols = 0;
//         if ( total > 0 ) {
//             cols =(n*(nCols-1))/total;
//         }
//         
//         add( "|");
//         
//         addChars( cols, '#' );
//         addSpaces((nCols-1)-cols);
//         return this;
//     }
//     
//     public StrFmt addPerc( int n, int total ) {
//         int perc = 0;
//         if ( total > 0 ) {
//             perc =(n*100)/total;
//         }
//         addR( perc, 3 );
//         add( "% ");
//         return this;
//     }
//     
//     public String trim( String s, int maxLen ) {
//         if ( s.length() > maxLen ) {
//             return s.substring(0, maxLen);
//         } else {
//             return s;
//         }
//     }
//     
//     public void addSpaces( int n ) {
//         addChars( n, ' ' );
//     }
// 
//     public void addChars( int n, char c ) {
//         for (int i=0; i < n; i++ ) {
//             sb.append( c );
//         }
//     }
// 
//     @Override
//     public String toString() {
//         return sb.toString(); 
//     }
//     
//     
// 
//     
// }


import ch.loway.oss.slicedbread.misc.StrFmt;
import java.util.List;
    public boolean isOpenEnded() {
        return maxValue == Integer.MAX_VALUE;
    }
    
    /**
     * Pretty-prints a list of LogBin stats.
     * 
     * @param l
     * @return a pretty print with histograms and elephants.
     */
    
    public static String printAsText(List<LogBin> l) {

        if (l == null) {
            return "- No bins -";
        }

        int maxBin = 0;
        int totReq = 0;
        int sum = 0;
        for (int i = 0; i < l.size(); i++) {
            LogBin b = l.get(i);
            if (b.getHits() > 0) {
                maxBin = i;
                totReq += b.getHits();
                sum = b.getIntervalCenter() * b.getHits();
            }

        }

// Path: classes/ch/loway/oss/slicedbread/misc/StrFmt.java
// public class StrFmt {
//    
//     StringBuilder sb = new StringBuilder();
//     
//     /**
//      * 
//      *  Left-aligned string.
//      * 
//      */
//     
//     public StrFmt addL( String s, int size ) {
//         s = trim( s, size );
//         sb.append(s);
//         addSpaces( size - s.length() );
//         return this;
//     }
//     
//     public StrFmt addR( String s, int size ) {
//         s = trim( s, size );
//         addSpaces( size - s.length() );
//         sb.append(s);
//         return this;
//     }
//     
//     public StrFmt add( String s ) {
//         sb.append(s);
//         return this;
//     }
//     
//     public StrFmt addL( int n, int size ) {
//         return addL( Integer.toString(n), size );
//     }
// 
//     public StrFmt addR( int n, int size ) {
//         return addR( Integer.toString(n), size );
//     }
// 
//     public StrFmt addHistogram( int n, int total, int nCols ) {
//         
//         int cols = 0;
//         if ( total > 0 ) {
//             cols =(n*(nCols-1))/total;
//         }
//         
//         add( "|");
//         
//         addChars( cols, '#' );
//         addSpaces((nCols-1)-cols);
//         return this;
//     }
//     
//     public StrFmt addPerc( int n, int total ) {
//         int perc = 0;
//         if ( total > 0 ) {
//             perc =(n*100)/total;
//         }
//         addR( perc, 3 );
//         add( "% ");
//         return this;
//     }
//     
//     public String trim( String s, int maxLen ) {
//         if ( s.length() > maxLen ) {
//             return s.substring(0, maxLen);
//         } else {
//             return s;
//         }
//     }
//     
//     public void addSpaces( int n ) {
//         addChars( n, ' ' );
//     }
// 
//     public void addChars( int n, char c ) {
//         for (int i=0; i < n; i++ ) {
//             sb.append( c );
//         }
//     }
// 
//     @Override
//     public String toString() {
//         return sb.toString(); 
//     }
//     
//     
// 
//     
// }


// Path: classes/ch/loway/oss/slicedbread/timer/LogBin.java
import ch.loway.oss.slicedbread.misc.StrFmt;
import java.util.List;

    public boolean isOpenEnded() {
        return maxValue == Integer.MAX_VALUE;
    }
    
    /**
     * Pretty-prints a list of LogBin stats.
     * 
     * @param l
     * @return a pretty print with histograms and elephants.
     */
    
    public static String printAsText(List<LogBin> l) {

        if (l == null) {
            return "- No bins -";
        }

        int maxBin = 0;
        int totReq = 0;
        int sum = 0;
        for (int i = 0; i < l.size(); i++) {
            LogBin b = l.get(i);
            if (b.getHits() > 0) {
                maxBin = i;
                totReq += b.getHits();
                sum = b.getIntervalCenter() * b.getHits();
            }

        }

        StrFmt f = new StrFmt();