public class com.mongodb.gridfs.CLI
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.mongodb.gridfs.CLI
  super_class: java.lang.Object
{
  private static java.lang.String host;
    descriptor: Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.lang.String db;
    descriptor: Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static com.mongodb.Mongo mongo;
    descriptor: Lcom/mongodb/Mongo;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static com.mongodb.gridfs.GridFS gridFS;
    descriptor: Lcom/mongodb/gridfs/GridFS;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 38
            ldc "127.0.0.1"
            putstatic com.mongodb.gridfs.CLI.host:Ljava/lang/String;
         1: .line 39
            ldc "test"
            putstatic com.mongodb.gridfs.CLI.db:Ljava/lang/String;
         2: .line 40
            aconst_null
            putstatic com.mongodb.gridfs.CLI.mongo:Lcom/mongodb/Mongo;
         3: .line 41
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.gridfs.CLI this
         0: .line 36
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.mongodb.gridfs.CLI this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/gridfs/CLI;

  private static void printUsage();
    descriptor: ()V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 48
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Usage : [--bucket bucketname] action"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 49
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "  where  action is one of:"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         2: .line 50
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "      list                      : lists all files in the store"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         3: .line 51
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "      put filename              : puts the file filename into the store"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         4: .line 52
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "      get filename1 filename2   : gets filename1 from store and sends to filename2"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         5: .line 53
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "      md5 filename              : does an md5 hash on a file in the db (for testing)"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         6: .line 54
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static com.mongodb.Mongo getMongo();
    descriptor: ()Lcom/mongodb/Mongo;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 58
            getstatic com.mongodb.gridfs.CLI.mongo:Lcom/mongodb/Mongo;
            ifnonnull 2
         1: .line 59
            new com.mongodb.MongoClient
            dup
            getstatic com.mongodb.gridfs.CLI.host:Ljava/lang/String;
            invokespecial com.mongodb.MongoClient.<init>:(Ljava/lang/String;)V
            putstatic com.mongodb.gridfs.CLI.mongo:Lcom/mongodb/Mongo;
         2: .line 61
      StackMap locals:
      StackMap stack:
            getstatic com.mongodb.gridfs.CLI.mongo:Lcom/mongodb/Mongo;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.lang.Exception

  private static com.mongodb.gridfs.GridFS getGridFS();
    descriptor: ()Lcom/mongodb/gridfs/GridFS;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 66
            getstatic com.mongodb.gridfs.CLI.gridFS:Lcom/mongodb/gridfs/GridFS;
            ifnonnull 2
         1: .line 67
            new com.mongodb.gridfs.GridFS
            dup
            invokestatic com.mongodb.gridfs.CLI.getMongo:()Lcom/mongodb/Mongo;
            getstatic com.mongodb.gridfs.CLI.db:Ljava/lang/String;
            invokevirtual com.mongodb.Mongo.getDB:(Ljava/lang/String;)Lcom/mongodb/DB;
            invokespecial com.mongodb.gridfs.GridFS.<init>:(Lcom/mongodb/DB;)V
            putstatic com.mongodb.gridfs.CLI.gridFS:Lcom/mongodb/gridfs/GridFS;
         2: .line 69
      StackMap locals:
      StackMap stack:
            getstatic com.mongodb.gridfs.CLI.gridFS:Lcom/mongodb/gridfs/GridFS;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.lang.Exception

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=11, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 75
            aload 0 /* args */
            arraylength
            iconst_1
            if_icmpge 3
         1: .line 76
            invokestatic com.mongodb.gridfs.CLI.printUsage:()V
         2: .line 77
            return
         3: .line 80
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         4: goto 76
         5: .line 81
      StackMap locals: int
      StackMap stack:
            aload 0 /* args */
            iload 1 /* i */
            aaload
            astore 2 /* s */
        start local 2 // java.lang.String s
         6: .line 83
            aload 2 /* s */
            ldc "--db"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 10
         7: .line 84
            aload 0 /* args */
            iload 1 /* i */
            iconst_1
            iadd
            aaload
            putstatic com.mongodb.gridfs.CLI.db:Ljava/lang/String;
         8: .line 85
            iinc 1 /* i */ 1
         9: .line 86
            goto 75
        10: .line 89
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* s */
            ldc "--host"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 14
        11: .line 90
            aload 0 /* args */
            iload 1 /* i */
            iconst_1
            iadd
            aaload
            putstatic com.mongodb.gridfs.CLI.host:Ljava/lang/String;
        12: .line 91
            iinc 1 /* i */ 1
        13: .line 92
            goto 75
        14: .line 95
      StackMap locals:
      StackMap stack:
            aload 2 /* s */
            ldc "help"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 17
        15: .line 96
            invokestatic com.mongodb.gridfs.CLI.printUsage:()V
        16: .line 97
            return
        17: .line 100
      StackMap locals:
      StackMap stack:
            aload 2 /* s */
            ldc "list"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 31
        18: .line 101
            invokestatic com.mongodb.gridfs.CLI.getGridFS:()Lcom/mongodb/gridfs/GridFS;
            astore 3 /* fs */
        start local 3 // com.mongodb.gridfs.GridFS fs
        19: .line 103
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "%-60s %-10s%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "Filename"
            aastore
            dup
            iconst_1
            ldc "Length"
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        20: .line 105
            aload 3 /* fs */
            invokevirtual com.mongodb.gridfs.GridFS.getFileList:()Lcom/mongodb/DBCursor;
            astore 4 /* fileListCursor */
        start local 4 // com.mongodb.DBCursor fileListCursor
        21: .line 107
            goto 24
        22: .line 108
      StackMap locals: com.mongodb.gridfs.GridFS com.mongodb.DBCursor
      StackMap stack:
            aload 4 /* fileListCursor */
            invokevirtual com.mongodb.DBCursor.next:()Lcom/mongodb/DBObject;
            astore 5 /* o */
        start local 5 // com.mongodb.DBObject o
        23: .line 109
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "%-60s %-10d%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* o */
            ldc "filename"
            invokeinterface com.mongodb.DBObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            aastore
            dup
            iconst_1
            aload 5 /* o */
            ldc "length"
            invokeinterface com.mongodb.DBObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.Number
            invokevirtual java.lang.Number.longValue:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        end local 5 // com.mongodb.DBObject o
        24: .line 107
      StackMap locals:
      StackMap stack:
            aload 4 /* fileListCursor */
            invokevirtual com.mongodb.DBCursor.hasNext:()Z
            ifne 22
        25: .line 111
            goto 29
      StackMap locals:
      StackMap stack: java.lang.Throwable
        26: astore 6
        27: .line 112
            aload 4 /* fileListCursor */
            invokevirtual com.mongodb.DBCursor.close:()V
        28: .line 113
            aload 6
            athrow
        29: .line 112
      StackMap locals:
      StackMap stack:
            aload 4 /* fileListCursor */
            invokevirtual com.mongodb.DBCursor.close:()V
        30: .line 114
            return
        end local 4 // com.mongodb.DBCursor fileListCursor
        end local 3 // com.mongodb.gridfs.GridFS fs
        31: .line 117
      StackMap locals:
      StackMap stack:
            aload 2 /* s */
            ldc "get"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 40
        32: .line 118
            invokestatic com.mongodb.gridfs.CLI.getGridFS:()Lcom/mongodb/gridfs/GridFS;
            astore 3 /* fs */
        start local 3 // com.mongodb.gridfs.GridFS fs
        33: .line 119
            aload 0 /* args */
            iload 1 /* i */
            iconst_1
            iadd
            aaload
            astore 4 /* fn */
        start local 4 // java.lang.String fn
        34: .line 120
            aload 3 /* fs */
            aload 4 /* fn */
            invokevirtual com.mongodb.gridfs.GridFS.findOne:(Ljava/lang/String;)Lcom/mongodb/gridfs/GridFSDBFile;
            astore 5 /* f */
        start local 5 // com.mongodb.gridfs.GridFSDBFile f
        35: .line 121
            aload 5 /* f */
            ifnonnull 38
        36: .line 122
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "can't find file: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* fn */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        37: .line 123
            return
        38: .line 126
      StackMap locals: com.mongodb.gridfs.GridFS java.lang.String com.mongodb.gridfs.GridFSDBFile
      StackMap stack:
            aload 5 /* f */
            aload 5 /* f */
            invokevirtual com.mongodb.gridfs.GridFSDBFile.getFilename:()Ljava/lang/String;
            invokevirtual com.mongodb.gridfs.GridFSDBFile.writeTo:(Ljava/lang/String;)J
            pop2
        39: .line 127
            return
        end local 5 // com.mongodb.gridfs.GridFSDBFile f
        end local 4 // java.lang.String fn
        end local 3 // com.mongodb.gridfs.GridFS fs
        40: .line 130
      StackMap locals:
      StackMap stack:
            aload 2 /* s */
            ldc "put"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 47
        41: .line 131
            invokestatic com.mongodb.gridfs.CLI.getGridFS:()Lcom/mongodb/gridfs/GridFS;
            astore 3 /* fs */
        start local 3 // com.mongodb.gridfs.GridFS fs
        42: .line 132
            aload 0 /* args */
            iload 1 /* i */
            iconst_1
            iadd
            aaload
            astore 4 /* fn */
        start local 4 // java.lang.String fn
        43: .line 133
            aload 3 /* fs */
            new java.io.File
            dup
            aload 4 /* fn */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            invokevirtual com.mongodb.gridfs.GridFS.createFile:(Ljava/io/File;)Lcom/mongodb/gridfs/GridFSInputFile;
            astore 5 /* f */
        start local 5 // com.mongodb.gridfs.GridFSInputFile f
        44: .line 134
            aload 5 /* f */
            invokevirtual com.mongodb.gridfs.GridFSInputFile.save:()V
        45: .line 135
            aload 5 /* f */
            invokevirtual com.mongodb.gridfs.GridFSInputFile.validate:()V
        46: .line 136
            return
        end local 5 // com.mongodb.gridfs.GridFSInputFile f
        end local 4 // java.lang.String fn
        end local 3 // com.mongodb.gridfs.GridFS fs
        47: .line 140
      StackMap locals:
      StackMap stack:
            aload 2 /* s */
            ldc "md5"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 73
        48: .line 141
            invokestatic com.mongodb.gridfs.CLI.getGridFS:()Lcom/mongodb/gridfs/GridFS;
            astore 3 /* fs */
        start local 3 // com.mongodb.gridfs.GridFS fs
        49: .line 142
            aload 0 /* args */
            iload 1 /* i */
            iconst_1
            iadd
            aaload
            astore 4 /* fn */
        start local 4 // java.lang.String fn
        50: .line 143
            aload 3 /* fs */
            aload 4 /* fn */
            invokevirtual com.mongodb.gridfs.GridFS.findOne:(Ljava/lang/String;)Lcom/mongodb/gridfs/GridFSDBFile;
            astore 5 /* f */
        start local 5 // com.mongodb.gridfs.GridFSDBFile f
        51: .line 144
            aload 5 /* f */
            ifnonnull 54
        52: .line 145
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "can't find file: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* fn */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        53: .line 146
            return
        54: .line 149
      StackMap locals: com.mongodb.gridfs.GridFS java.lang.String com.mongodb.gridfs.GridFSDBFile
      StackMap stack:
            ldc "MD5"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 6 /* md5 */
        start local 6 // java.security.MessageDigest md5
        55: .line 150
            aload 6 /* md5 */
            invokevirtual java.security.MessageDigest.reset:()V
        56: .line 151
            iconst_0
            istore 7 /* read */
        start local 7 // int read
        57: .line 152
            new java.security.DigestInputStream
            dup
            aload 5 /* f */
            invokevirtual com.mongodb.gridfs.GridFSDBFile.getInputStream:()Ljava/io/InputStream;
            aload 6 /* md5 */
            invokespecial java.security.DigestInputStream.<init>:(Ljava/io/InputStream;Ljava/security/MessageDigest;)V
            astore 8 /* is */
        start local 8 // java.security.DigestInputStream is
        58: .line 154
            goto 64
        59: .line 155
      StackMap locals: java.security.MessageDigest int java.security.DigestInputStream
      StackMap stack:
            iinc 7 /* read */ 1
        60: .line 156
            aload 8 /* is */
            bipush 17
            newarray 8
            invokevirtual java.security.DigestInputStream.read:([B)I
            istore 9 /* r */
        start local 9 // int r
        61: .line 157
            iload 9 /* r */
            ifge 63
        62: .line 158
            goto 69
        63: .line 160
      StackMap locals: int
      StackMap stack:
            iload 7 /* read */
            iload 9 /* r */
            iadd
            istore 7 /* read */
        end local 9 // int r
        64: .line 154
      StackMap locals:
      StackMap stack:
            aload 8 /* is */
            invokevirtual java.security.DigestInputStream.read:()I
            ifge 59
        65: .line 162
            goto 69
      StackMap locals:
      StackMap stack: java.lang.Throwable
        66: astore 10
        67: .line 163
            aload 8 /* is */
            invokevirtual java.security.DigestInputStream.close:()V
        68: .line 164
            aload 10
            athrow
        69: .line 163
      StackMap locals:
      StackMap stack:
            aload 8 /* is */
            invokevirtual java.security.DigestInputStream.close:()V
        70: .line 165
            aload 6 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 9 /* digest */
        start local 9 // byte[] digest
        71: .line 166
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "length: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 7 /* read */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " md5: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 9 /* digest */
            invokestatic com.mongodb.util.Util.toHex:([B)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        72: .line 167
            return
        end local 9 // byte[] digest
        end local 8 // java.security.DigestInputStream is
        end local 7 // int read
        end local 6 // java.security.MessageDigest md5
        end local 5 // com.mongodb.gridfs.GridFSDBFile f
        end local 4 // java.lang.String fn
        end local 3 // com.mongodb.gridfs.GridFS fs
        73: .line 170
      StackMap locals: java.lang.String[] int java.lang.String
      StackMap stack:
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "unknown option: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* s */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        74: .line 171
            return
        end local 2 // java.lang.String s
        75: .line 80
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        76: iload 1 /* i */
            aload 0 /* args */
            arraylength
            if_icmplt 5
        end local 1 // int i
        77: .line 173
            return
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   78     0            args  [Ljava/lang/String;
            4   77     1               i  I
            6   75     2               s  Ljava/lang/String;
           19   31     3              fs  Lcom/mongodb/gridfs/GridFS;
           21   31     4  fileListCursor  Lcom/mongodb/DBCursor;
           23   24     5               o  Lcom/mongodb/DBObject;
           33   40     3              fs  Lcom/mongodb/gridfs/GridFS;
           34   40     4              fn  Ljava/lang/String;
           35   40     5               f  Lcom/mongodb/gridfs/GridFSDBFile;
           42   47     3              fs  Lcom/mongodb/gridfs/GridFS;
           43   47     4              fn  Ljava/lang/String;
           44   47     5               f  Lcom/mongodb/gridfs/GridFSInputFile;
           49   73     3              fs  Lcom/mongodb/gridfs/GridFS;
           50   73     4              fn  Ljava/lang/String;
           51   73     5               f  Lcom/mongodb/gridfs/GridFSDBFile;
           55   73     6             md5  Ljava/security/MessageDigest;
           57   73     7            read  I
           58   73     8              is  Ljava/security/DigestInputStream;
           61   64     9               r  I
           71   73     9          digest  [B
      Exception table:
        from    to  target  type
          21    26      26  any
          58    66      66  any
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      args  final
}
SourceFile: "CLI.java"
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()