public class javax.servlet.http.HttpUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: javax.servlet.http.HttpUtils
  super_class: java.lang.Object
{
  private static final java.lang.String LSTRING_FILE;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.servlet.http.LocalStrings"

  private static java.util.ResourceBundle lStrings;
    descriptor: Ljava/util/ResourceBundle;
    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 39
            ldc "javax.servlet.http.LocalStrings"
            invokestatic java.util.ResourceBundle.getBundle:(Ljava/lang/String;)Ljava/util/ResourceBundle;
         1: .line 38
            putstatic javax.servlet.http.HttpUtils.lStrings:Ljava/util/ResourceBundle;
         2: .line 39
            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 // javax.servlet.http.HttpUtils this
         0: .line 45
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // javax.servlet.http.HttpUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljavax/servlet/http/HttpUtils;

  public static java.util.Hashtable<java.lang.String, java.lang.String[]> parseQueryString(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Hashtable;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=11, args_size=1
        start local 0 // java.lang.String s
         0: .line 78
            aconst_null
            astore 1 /* valArray */
        start local 1 // java.lang.String[] valArray
         1: .line 80
            aload 0 /* s */
            ifnonnull 3
         2: .line 81
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         3: .line 84
      StackMap locals: java.lang.String[]
      StackMap stack:
            new java.util.Hashtable
            dup
            invokespecial java.util.Hashtable.<init>:()V
            astore 2 /* ht */
        start local 2 // java.util.Hashtable ht
         4: .line 85
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 3 /* sb */
        start local 3 // java.lang.StringBuilder sb
         5: .line 86
            new java.util.StringTokenizer
            dup
            aload 0 /* s */
            ldc "&"
            invokespecial java.util.StringTokenizer.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            astore 4 /* st */
        start local 4 // java.util.StringTokenizer st
         6: .line 87
            goto 26
         7: .line 88
      StackMap locals: java.util.Hashtable java.lang.StringBuilder java.util.StringTokenizer
      StackMap stack:
            aload 4 /* st */
            invokevirtual java.util.StringTokenizer.nextToken:()Ljava/lang/String;
            astore 5 /* pair */
        start local 5 // java.lang.String pair
         8: .line 89
            aload 5 /* pair */
            bipush 61
            invokevirtual java.lang.String.indexOf:(I)I
            istore 6 /* pos */
        start local 6 // int pos
         9: .line 90
            iload 6 /* pos */
            iconst_m1
            if_icmpne 11
        10: .line 93
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
        11: .line 95
      StackMap locals: java.lang.String int
      StackMap stack:
            aload 5 /* pair */
            iconst_0
            iload 6 /* pos */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            aload 3 /* sb */
            invokestatic javax.servlet.http.HttpUtils.parseName:(Ljava/lang/String;Ljava/lang/StringBuilder;)Ljava/lang/String;
            astore 7 /* key */
        start local 7 // java.lang.String key
        12: .line 96
            aload 5 /* pair */
            iload 6 /* pos */
            iconst_1
            iadd
            aload 5 /* pair */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            aload 3 /* sb */
            invokestatic javax.servlet.http.HttpUtils.parseName:(Ljava/lang/String;Ljava/lang/StringBuilder;)Ljava/lang/String;
            astore 8 /* val */
        start local 8 // java.lang.String val
        13: .line 97
            aload 2 /* ht */
            aload 7 /* key */
            invokevirtual java.util.Hashtable.containsKey:(Ljava/lang/Object;)Z
            ifeq 23
        14: .line 98
            aload 2 /* ht */
            aload 7 /* key */
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String[]
            astore 9 /* oldVals */
        start local 9 // java.lang.String[] oldVals
        15: .line 99
            aload 9 /* oldVals */
            arraylength
            iconst_1
            iadd
            anewarray java.lang.String
            astore 1 /* valArray */
        16: .line 100
            iconst_0
            istore 10 /* i */
        start local 10 // int i
        17: goto 20
        18: .line 101
      StackMap locals: java.lang.String java.lang.String[] java.util.Hashtable java.lang.StringBuilder java.util.StringTokenizer java.lang.String int java.lang.String java.lang.String java.lang.String[] int
      StackMap stack:
            aload 1 /* valArray */
            iload 10 /* i */
            aload 9 /* oldVals */
            iload 10 /* i */
            aaload
            aastore
        19: .line 100
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 10 /* i */
            aload 9 /* oldVals */
            arraylength
            if_icmplt 18
        end local 10 // int i
        21: .line 103
            aload 1 /* valArray */
            aload 9 /* oldVals */
            arraylength
            aload 8 /* val */
            aastore
        end local 9 // java.lang.String[] oldVals
        22: .line 104
            goto 25
        23: .line 105
      StackMap locals:
      StackMap stack:
            iconst_1
            anewarray java.lang.String
            astore 1 /* valArray */
        24: .line 106
            aload 1 /* valArray */
            iconst_0
            aload 8 /* val */
            aastore
        25: .line 108
      StackMap locals:
      StackMap stack:
            aload 2 /* ht */
            aload 7 /* key */
            aload 1 /* valArray */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 8 // java.lang.String val
        end local 7 // java.lang.String key
        end local 6 // int pos
        end local 5 // java.lang.String pair
        26: .line 87
      StackMap locals: java.lang.String java.lang.String[] java.util.Hashtable java.lang.StringBuilder java.util.StringTokenizer
      StackMap stack:
            aload 4 /* st */
            invokevirtual java.util.StringTokenizer.hasMoreTokens:()Z
            ifne 7
        27: .line 111
            aload 2 /* ht */
            areturn
        end local 4 // java.util.StringTokenizer st
        end local 3 // java.lang.StringBuilder sb
        end local 2 // java.util.Hashtable ht
        end local 1 // java.lang.String[] valArray
        end local 0 // java.lang.String s
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   28     0         s  Ljava/lang/String;
            1   28     1  valArray  [Ljava/lang/String;
            4   28     2        ht  Ljava/util/Hashtable<Ljava/lang/String;[Ljava/lang/String;>;
            5   28     3        sb  Ljava/lang/StringBuilder;
            6   28     4        st  Ljava/util/StringTokenizer;
            8   26     5      pair  Ljava/lang/String;
            9   26     6       pos  I
           12   26     7       key  Ljava/lang/String;
           13   26     8       val  Ljava/lang/String;
           15   22     9   oldVals  [Ljava/lang/String;
           17   21    10         i  I
    Signature: (Ljava/lang/String;)Ljava/util/Hashtable<Ljava/lang/String;[Ljava/lang/String;>;
    MethodParameters:
      Name  Flags
      s     

  public static java.util.Hashtable<java.lang.String, java.lang.String[]> parsePostData(int, javax.servlet.ServletInputStream);
    descriptor: (ILjavax/servlet/ServletInputStream;)Ljava/util/Hashtable;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=2
        start local 0 // int len
        start local 1 // javax.servlet.ServletInputStream in
         0: .line 155
            iload 0 /* len */
            ifgt 2
         1: .line 157
            new java.util.Hashtable
            dup
            invokespecial java.util.Hashtable.<init>:()V
            areturn
         2: .line 160
      StackMap locals:
      StackMap stack:
            aload 1 /* in */
            ifnonnull 4
         3: .line 161
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         4: .line 167
      StackMap locals:
      StackMap stack:
            iload 0 /* len */
            newarray 8
            astore 2 /* postedBytes */
        start local 2 // byte[] postedBytes
         5: .line 169
            iconst_0
            istore 3 /* offset */
        start local 3 // int offset
         6: .line 172
      StackMap locals: byte[] int
      StackMap stack:
            aload 1 /* in */
            aload 2 /* postedBytes */
            iload 3 /* offset */
            iload 0 /* len */
            iload 3 /* offset */
            isub
            invokevirtual javax.servlet.ServletInputStream.read:([BII)I
            istore 4 /* inputLen */
        start local 4 // int inputLen
         7: .line 173
            iload 4 /* inputLen */
            ifgt 10
         8: .line 174
            getstatic javax.servlet.http.HttpUtils.lStrings:Ljava/util/ResourceBundle;
            ldc "err.io.short_read"
            invokevirtual java.util.ResourceBundle.getString:(Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* msg */
        start local 5 // java.lang.String msg
         9: .line 175
            new java.lang.IllegalArgumentException
            dup
            aload 5 /* msg */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // java.lang.String msg
        10: .line 177
      StackMap locals: int
      StackMap stack:
            iload 3 /* offset */
            iload 4 /* inputLen */
            iadd
            istore 3 /* offset */
        end local 4 // int inputLen
        11: .line 178
            iload 0 /* len */
            iload 3 /* offset */
            isub
        12: .line 171
            ifgt 6
        end local 3 // int offset
        13: .line 180
            goto 16
      StackMap locals: int javax.servlet.ServletInputStream byte[]
      StackMap stack: java.io.IOException
        14: astore 3 /* e */
        start local 3 // java.io.IOException e
        15: .line 181
            new java.lang.IllegalArgumentException
            dup
            aload 3 /* e */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.io.IOException e
        16: .line 190
      StackMap locals:
      StackMap stack:
            new java.lang.String
            dup
            aload 2 /* postedBytes */
            iconst_0
            iload 0 /* len */
            ldc "8859_1"
            invokespecial java.lang.String.<init>:([BIILjava/lang/String;)V
            astore 3 /* postedBody */
        start local 3 // java.lang.String postedBody
        17: .line 191
            aload 3 /* postedBody */
            invokestatic javax.servlet.http.HttpUtils.parseQueryString:(Ljava/lang/String;)Ljava/util/Hashtable;
        18: areturn
        end local 3 // java.lang.String postedBody
        19: .line 192
      StackMap locals:
      StackMap stack: java.io.UnsupportedEncodingException
            astore 3 /* e */
        start local 3 // java.io.UnsupportedEncodingException e
        20: .line 195
            new java.lang.IllegalArgumentException
            dup
            aload 3 /* e */
            invokevirtual java.io.UnsupportedEncodingException.getMessage:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.io.UnsupportedEncodingException e
        end local 2 // byte[] postedBytes
        end local 1 // javax.servlet.ServletInputStream in
        end local 0 // int len
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   21     0          len  I
            0   21     1           in  Ljavax/servlet/ServletInputStream;
            5   21     2  postedBytes  [B
            6   13     3       offset  I
            7   11     4     inputLen  I
            9   10     5          msg  Ljava/lang/String;
           15   16     3            e  Ljava/io/IOException;
           17   19     3   postedBody  Ljava/lang/String;
           20   21     3            e  Ljava/io/UnsupportedEncodingException;
      Exception table:
        from    to  target  type
           5    13      14  Class java.io.IOException
          16    18      19  Class java.io.UnsupportedEncodingException
    Signature: (ILjavax/servlet/ServletInputStream;)Ljava/util/Hashtable<Ljava/lang/String;[Ljava/lang/String;>;
    MethodParameters:
      Name  Flags
      len   
      in    

  private static java.lang.String parseName(java.lang.String, java.lang.StringBuilder);
    descriptor: (Ljava/lang/String;Ljava/lang/StringBuilder;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // java.lang.String s
        start local 1 // java.lang.StringBuilder sb
         0: .line 204
            aload 1 /* sb */
            iconst_0
            invokevirtual java.lang.StringBuilder.setLength:(I)V
         1: .line 205
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 22
         3: .line 206
      StackMap locals: int
      StackMap stack:
            aload 0 /* s */
            iload 2 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            istore 3 /* c */
        start local 3 // char c
         4: .line 207
            iload 3 /* c */
            lookupswitch { // 2
                   37: 7
                   43: 5
              default: 20
          }
         5: .line 209
      StackMap locals: int
      StackMap stack:
            aload 1 /* sb */
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         6: .line 210
            goto 21
         7: .line 213
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            aload 0 /* s */
            iload 2 /* i */
            iconst_1
            iadd
            iload 2 /* i */
            iconst_3
            iadd
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
         8: .line 214
            bipush 16
         9: .line 213
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;I)I
            i2c
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        10: .line 215
            iinc 2 /* i */ 2
        11: .line 216
            goto 21
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
        12: pop
        13: .line 219
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
        14: .line 220
      StackMap locals:
      StackMap stack: java.lang.StringIndexOutOfBoundsException
            pop
        15: .line 221
            aload 0 /* s */
            iload 2 /* i */
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 4 /* rest */
        start local 4 // java.lang.String rest
        16: .line 222
            aload 1 /* sb */
            aload 4 /* rest */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        17: .line 223
            aload 4 /* rest */
            invokevirtual java.lang.String.length:()I
            iconst_2
            if_icmpne 21
        18: .line 224
            iinc 2 /* i */ 1
        end local 4 // java.lang.String rest
        19: .line 227
            goto 21
        20: .line 229
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            iload 3 /* c */
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        end local 3 // char c
        21: .line 205
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        22: iload 2 /* i */
            aload 0 /* s */
            invokevirtual java.lang.String.length:()I
            if_icmplt 3
        end local 2 // int i
        23: .line 234
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuilder sb
        end local 0 // java.lang.String s
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   24     0     s  Ljava/lang/String;
            0   24     1    sb  Ljava/lang/StringBuilder;
            2   23     2     i  I
            4   21     3     c  C
           16   19     4  rest  Ljava/lang/String;
      Exception table:
        from    to  target  type
           7    11      12  Class java.lang.NumberFormatException
           7    11      14  Class java.lang.StringIndexOutOfBoundsException
    MethodParameters:
      Name  Flags
      s     
      sb    

  public static java.lang.StringBuffer getRequestURL(javax.servlet.http.HttpServletRequest);
    descriptor: (Ljavax/servlet/http/HttpServletRequest;)Ljava/lang/StringBuffer;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // javax.servlet.http.HttpServletRequest req
         0: .line 260
            new java.lang.StringBuffer
            dup
            invokespecial java.lang.StringBuffer.<init>:()V
            astore 1 /* url */
        start local 1 // java.lang.StringBuffer url
         1: .line 261
            aload 0 /* req */
            invokeinterface javax.servlet.http.HttpServletRequest.getScheme:()Ljava/lang/String;
            astore 2 /* scheme */
        start local 2 // java.lang.String scheme
         2: .line 262
            aload 0 /* req */
            invokeinterface javax.servlet.http.HttpServletRequest.getServerPort:()I
            istore 3 /* port */
        start local 3 // int port
         3: .line 263
            aload 0 /* req */
            invokeinterface javax.servlet.http.HttpServletRequest.getRequestURI:()Ljava/lang/String;
            astore 4 /* urlPath */
        start local 4 // java.lang.String urlPath
         4: .line 268
            aload 1 /* url */
            aload 2 /* scheme */
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
         5: .line 269
            aload 1 /* url */
            ldc "://"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
         6: .line 270
            aload 1 /* url */
            aload 0 /* req */
            invokeinterface javax.servlet.http.HttpServletRequest.getServerName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
         7: .line 271
            aload 2 /* scheme */
            ldc "http"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 8
            iload 3 /* port */
            bipush 80
            if_icmpne 9
         8: .line 272
      StackMap locals: javax.servlet.http.HttpServletRequest java.lang.StringBuffer java.lang.String int java.lang.String
      StackMap stack:
            aload 2 /* scheme */
            ldc "https"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 11
            iload 3 /* port */
            sipush 443
            if_icmpeq 11
         9: .line 273
      StackMap locals:
      StackMap stack:
            aload 1 /* url */
            bipush 58
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
        10: .line 274
            aload 1 /* url */
            aload 0 /* req */
            invokeinterface javax.servlet.http.HttpServletRequest.getServerPort:()I
            invokevirtual java.lang.StringBuffer.append:(I)Ljava/lang/StringBuffer;
            pop
        11: .line 280
      StackMap locals:
      StackMap stack:
            aload 1 /* url */
            aload 4 /* urlPath */
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        12: .line 282
            aload 1 /* url */
            areturn
        end local 4 // java.lang.String urlPath
        end local 3 // int port
        end local 2 // java.lang.String scheme
        end local 1 // java.lang.StringBuffer url
        end local 0 // javax.servlet.http.HttpServletRequest req
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0      req  Ljavax/servlet/http/HttpServletRequest;
            1   13     1      url  Ljava/lang/StringBuffer;
            2   13     2   scheme  Ljava/lang/String;
            3   13     3     port  I
            4   13     4  urlPath  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      req   
}
SourceFile: "HttpUtils.java"
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()