package com.l7tech.server.policy.module;

import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.lang.ref.Reference;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

class g implements Closeable {
   protected static final Logger logger;
   private final ZipFile a;
   private final String b;
   private final Map<String, Reference<byte[]>> c;
   private final Set<String> d;
   private final Map<String, Long> e;
   private final boolean f;
   private static final String[] g;

   // $VF: Handled exception range with multiple entry points by splitting it
   // $VF: Duplicated exception handlers to handle obfuscated exceptions
   public g(ZipFile var1, String var2, boolean var3) throws IOException {
      this.c = new ConcurrentHashMap<>();
      label57:
      if (var1 != null) {
         try {
            if (var2 == null) {
               break label57;
            }
         } catch (Throwable var14) {
            throw a(var14);
         }

         this.a = var1;
         this.b = var2;
         ZipEntry var4 = var1.getEntry(var2);

         try {
            if (var4 == null) {
               throw new IOException(g[4] + var2 + g[3] + var1.getName());
            }
         } catch (Throwable var13) {
            throw a(var13);
         }

         InputStream var5 = var1.getInputStream(var4);

         try {
            if (var5 == null) {
               String var10003 = var1.getName();
               String[] var8 = g;
               throw new IOException(var8[5] + var2 + var8[2] + var10003);
            }
         } catch (Throwable var11) {
            if (var5 != null) {
               try {
                  var5.close();
               } catch (Throwable var9) {
                  var11.addSuppressed(var9);
               }
            }

            throw var11;
         }

         try {
            if (var5 != null) {
               var5.close();
            }
         } catch (Throwable var12) {
            throw a(var12);
         }

         HashSet var15 = new HashSet();
         HashMap var6 = new HashMap();
         this.a(null, var15, var6);
         this.d = Collections.unmodifiableSet(var15);
         this.e = Collections.unmodifiableMap(var6);
         this.f = var3;
         return;
      }

      try {
         throw new NullPointerException();
      } catch (Throwable var10) {
         throw a(var10);
      }
   }

   private synchronized byte[] a(String param1, Set<String> param2, Map<String, Long> param3) throws IOException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 000: aload 0
      // 001: getfield com/l7tech/server/policy/module/g.a Ljava/util/zip/ZipFile;
      // 004: aload 0
      // 005: getfield com/l7tech/server/policy/module/g.b Ljava/lang/String;
      // 008: invokevirtual java/util/zip/ZipFile.getEntry (Ljava/lang/String;)Ljava/util/zip/ZipEntry;
      // 00b: astore 4
      // 00d: aload 4
      // 00f: ifnonnull 03b
      // 012: new java/io/IOException
      // 015: dup
      // 016: aload 0
      // 017: getfield com/l7tech/server/policy/module/g.b Ljava/lang/String;
      // 01a: aload 0
      // 01b: getfield com/l7tech/server/policy/module/g.a Ljava/util/zip/ZipFile;
      // 01e: invokevirtual java/util/zip/ZipFile.getName ()Ljava/lang/String;
      // 021: getstatic com/l7tech/server/policy/module/g.g [Ljava/lang/String;
      // 024: bipush 0
      // 025: aaload
      // 026: dup_x2
      // 027: pop
      // 028: getstatic com/l7tech/server/policy/module/g.g [Ljava/lang/String;
      // 02b: bipush 2
      // 02c: aaload
      // 02d: swap
      // 02e: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001\u0001" ]
      // 033: invokespecial java/io/IOException.<init> (Ljava/lang/String;)V
      // 036: athrow
      // 037: invokestatic com/l7tech/server/policy/module/g.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 03a: athrow
      // 03b: aload 0
      // 03c: getfield com/l7tech/server/policy/module/g.a Ljava/util/zip/ZipFile;
      // 03f: aload 4
      // 041: invokevirtual java/util/zip/ZipFile.getInputStream (Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;
      // 044: astore 5
      // 046: aload 5
      // 048: ifnonnull 074
      // 04b: new java/io/IOException
      // 04e: dup
      // 04f: aload 0
      // 050: getfield com/l7tech/server/policy/module/g.b Ljava/lang/String;
      // 053: aload 0
      // 054: getfield com/l7tech/server/policy/module/g.a Ljava/util/zip/ZipFile;
      // 057: invokevirtual java/util/zip/ZipFile.getName ()Ljava/lang/String;
      // 05a: getstatic com/l7tech/server/policy/module/g.g [Ljava/lang/String;
      // 05d: bipush 1
      // 05e: aaload
      // 05f: dup_x2
      // 060: pop
      // 061: getstatic com/l7tech/server/policy/module/g.g [Ljava/lang/String;
      // 064: bipush 2
      // 065: aaload
      // 066: swap
      // 067: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001\u0001" ]
      // 06c: invokespecial java/io/IOException.<init> (Ljava/lang/String;)V
      // 06f: athrow
      // 070: invokestatic com/l7tech/server/policy/module/g.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 073: athrow
      // 074: aconst_null
      // 075: astore 6
      // 077: aconst_null
      // 078: astore 7
      // 07a: new java/util/zip/ZipInputStream
      // 07d: dup
      // 07e: aload 5
      // 080: invokespecial java/util/zip/ZipInputStream.<init> (Ljava/io/InputStream;)V
      // 083: astore 7
      // 085: aload 7
      // 087: invokevirtual java/util/zip/ZipInputStream.getNextEntry ()Ljava/util/zip/ZipEntry;
      // 08a: dup
      // 08b: astore 8
      // 08d: ifnull 138
      // 090: aload 8
      // 092: invokevirtual java/util/zip/ZipEntry.isDirectory ()Z
      // 095: ifeq 0b9
      // 098: goto 09f
      // 09b: invokestatic com/l7tech/server/policy/module/g.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 09e: athrow
      // 09f: aload 2
      // 0a0: ifnull 085
      // 0a3: goto 0aa
      // 0a6: invokestatic com/l7tech/server/policy/module/g.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 0a9: athrow
      // 0aa: aload 2
      // 0ab: aload 8
      // 0ad: invokevirtual java/util/zip/ZipEntry.getName ()Ljava/lang/String;
      // 0b0: invokeinterface java/util/Set.add (Ljava/lang/Object;)Z 2
      // 0b5: pop
      // 0b6: goto 085
      // 0b9: aload 3
      // 0ba: ifnull 0d8
      // 0bd: aload 3
      // 0be: aload 8
      // 0c0: invokevirtual java/util/zip/ZipEntry.getName ()Ljava/lang/String;
      // 0c3: aload 8
      // 0c5: invokevirtual java/util/zip/ZipEntry.getSize ()J
      // 0c8: invokestatic java/lang/Long.valueOf (J)Ljava/lang/Long;
      // 0cb: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 0d0: pop
      // 0d1: goto 0d8
      // 0d4: invokestatic com/l7tech/server/policy/module/g.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 0d7: athrow
      // 0d8: new com/l7tech/util/PoolByteArrayOutputStream
      // 0db: dup
      // 0dc: invokespecial com/l7tech/util/PoolByteArrayOutputStream.<init> ()V
      // 0df: astore 9
      // 0e1: aload 7
      // 0e3: aload 9
      // 0e5: invokestatic com/l7tech/util/IOUtils.copyStream (Ljava/io/InputStream;Ljava/io/OutputStream;)J
      // 0e8: pop2
      // 0e9: aload 9
      // 0eb: invokevirtual com/l7tech/util/PoolByteArrayOutputStream.toByteArray ()[B
      // 0ee: astore 10
      // 0f0: aload 0
      // 0f1: getfield com/l7tech/server/policy/module/g.c Ljava/util/Map;
      // 0f4: aload 8
      // 0f6: invokevirtual java/util/zip/ZipEntry.getName ()Ljava/lang/String;
      // 0f9: new java/lang/ref/SoftReference
      // 0fc: dup
      // 0fd: aload 10
      // 0ff: invokespecial java/lang/ref/SoftReference.<init> (Ljava/lang/Object;)V
      // 102: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 107: pop
      // 108: aload 1
      // 109: ifnull 123
      // 10c: aload 1
      // 10d: aload 8
      // 10f: invokevirtual java/util/zip/ZipEntry.getName ()Ljava/lang/String;
      // 112: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 115: ifeq 123
      // 118: goto 11f
      // 11b: invokestatic com/l7tech/server/policy/module/g.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 11e: athrow
      // 11f: aload 10
      // 121: astore 6
      // 123: aload 9
      // 125: invokevirtual com/l7tech/util/PoolByteArrayOutputStream.close ()V
      // 128: goto 135
      // 12b: astore 11
      // 12d: aload 9
      // 12f: invokevirtual com/l7tech/util/PoolByteArrayOutputStream.close ()V
      // 132: aload 11
      // 134: athrow
      // 135: goto 085
      // 138: aload 7
      // 13a: invokestatic com/l7tech/util/ResourceUtils.closeQuietly (Ljava/io/Closeable;)V
      // 13d: goto 14a
      // 140: astore 12
      // 142: aload 7
      // 144: invokestatic com/l7tech/util/ResourceUtils.closeQuietly (Ljava/io/Closeable;)V
      // 147: aload 12
      // 149: athrow
      // 14a: aload 6
      // 14c: areturn
      // try (112 -> 129): 130 java/io/IOException
      // try (88 -> 98): 99 java/io/IOException
      // try (71 -> 79): 80 java/io/IOException
      // try (70 -> 74): 75 java/io/IOException
      // try (34 -> 55): 55 java/io/IOException
      // try (6 -> 27): 27 java/io/IOException
      // try (105 -> 134): 137 null
      // try (137 -> 138): 137 null
      // try (61 -> 143): 146 null
      // try (146 -> 147): 146 null
   }

   ZipFile a() {
      return this.a;
   }

   public String getEntryName() {
      return this.b;
   }

   public Set<String> getFiles() {
      return Collections.unmodifiableSet(this.c.keySet());
   }

   public Set<String> getDirectories() {
      return Collections.unmodifiableSet(this.d);
   }

   public byte[] getFile(String var1) throws IOException {
      Reference var2 = this.c.get(var1);

      byte[] var10000;
      label36: {
         try {
            if (var2 == null) {
               var10000 = null;
               break label36;
            }
         } catch (IOException var6) {
            throw a(var6);
         }

         var10000 = (byte[])var2.get();
      }

      byte[] var3 = var10000;

      try {
         if (var3 != null) {
            return var3;
         }
      } catch (IOException var4) {
         throw a(var4);
      }

      try {
         if (!this.e.containsKey(var1)) {
            return null;
         }
      } catch (IOException var5) {
         throw a(var5);
      }

      return this.a(var1, null, null);
   }

   @Override
   public void close() throws IOException {
      this.c.clear();
   }

   public boolean isPrivateLibrary() {
      return this.f;
   }

   static {
      String[] var5 = new String[6];
      int var3 = 0;
      String var2 = "X\u0010-\\\u0019.&y\u0011lX\u001c%b-\u0010)M\u0001.b-\u0004%N\u0013\"jh^)P\u00019\u007f7^+c\u000b RU\u0002h}\u000b8m\u00019cl\u0013lX\u001a9&c\u001b?J\u0010/&w\u0017<X\u001c'c-\u001b\"J\u00072<-\u000e-\u0017\"\u001e\u000f\"v-\u0018%R\u0010q&\u000e-\u0017\"\u001e\u000f\"v-\u0018%R\u0010q&";
      int var4 = "X\u0010-\\\u0019.&y\u0011lX\u001c%b-\u0010)M\u0001.b-\u0004%N\u0013\"jh^)P\u00019\u007f7^+c\u000b RU\u0002h}\u000b8m\u00019cl\u0013lX\u001a9&c\u001b?J\u0010/&w\u0017<X\u001c'c-\u001b\"J\u00072<-\u000e-\u0017\"\u001e\u000f\"v-\u0018%R\u0010q&\u000e-\u0017\"\u001e\u000f\"v-\u0018%R\u0010q&"
         .length();
      char var1 = '%';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 61;
         String var10001 = var2.substring(++var7, var7 + var1);
         byte var10002 = -1;

         while (true) {
            String var8 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     g = var5;
                     logger = Logger.getLogger(g.class.getName());
                     return;
                  }

                  var1 = var2.charAt(var7);
                  break;
               default:
                  var5[var3++] = var8;
                  if ((var7 += var1) < var4) {
                     var1 = var2.charAt(var7);
                     continue label24;
                  }

                  var2 = "6~C2w@H\u0017\u007f\u00026rK\fC~G#o@\fCjK }L\u0004\u00060G>oW\u0011Y0+\reN<;l\u0006\u0013eV\u0003oW\r\u0002}\u00026tWH\ruQ$~AH\u0019yR6rI\rCuL$i\\RC";
                  var4 = "6~C2w@H\u0017\u007f\u00026rK\fC~G#o@\fCjK }L\u0004\u00060G>oW\u0011Y0+\reN<;l\u0006\u0013eV\u0003oW\r\u0002}\u00026tWH\ruQ$~AH\u0019yR6rI\rCuL$i\\RC"
                     .length();
                  var1 = '%';
                  var7 = -1;
            }

            var10000 = 83;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

   private static Throwable a(Throwable var0) {
      return var0;
   }

   private static char[] a(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 59);
      }

      return var10000;
   }

   private static String a(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 48;
            case 1 -> 67;
            case 2 -> 113;
            case 3 -> 3;
            case 4 -> 72;
            case 5 -> 118;
            default -> 59;
         });
      }

      return new String(var10001).intern();
   }
}
