package com.l7tech.server.cassandra;

import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.jmx.JmxReporter;
import com.codahale.metrics.jmx.JmxReporter.Builder;
import com.datastax.oss.driver.api.core.CqlSession;
import com.datastax.oss.driver.api.core.DriverException;
import com.datastax.oss.driver.api.core.DriverExecutionException;
import com.datastax.oss.driver.api.core.ssl.ProgrammaticSslEngineFactory;
import com.l7tech.common.io.SslSocketUtil;
import com.l7tech.gateway.common.audit.AssertionMessages;
import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.gateway.common.audit.LoggingAudit;
import com.l7tech.gateway.common.audit.Messages.M;
import com.l7tech.gateway.common.cassandra.CassandraConnection;
import com.l7tech.gateway.common.security.password.SecurePassword;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.server.security.password.SecurePasswordManager;
import com.l7tech.server.util.ManagedTimer;
import com.l7tech.util.Config;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.JdkLoggerConfigurator;
import java.lang.reflect.Field;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.text.ParseException;
import java.util.Iterator;
import java.util.Optional;
import java.util.Timer;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import org.slf4j.LoggerFactory;

public class CassandraConnectionManagerImpl implements CassandraConnectionManager {
   private static final Logger a;
   private final ConcurrentHashMap<String, CassandraConnectionHolder> b = new ConcurrentHashMap<>();
   private final CassandraConnectionEntityManager c;
   private final Config d;
   private final SecurePasswordManager e;
   private final TrustManager f;
   private final SecureRandom g;
   private static final Audit h;
   private final Timer i;
   private final String[] j;
   private static final String k;
   private static final long l;
   protected final Lock lock;
   private static final String[] m;

   private static void a() {
      try {
         String[] var3 = m;
         org.slf4j.Logger var0 = LoggerFactory.getLogger(var3[15]);
         if (var0 == null) {
            a.log(Level.WARNING, var3[14]);
            return;
         }

         Class var10000 = var0.getClass();
         var3 = m;
         Field var1 = var10000.getDeclaredField(var3[4]);
         var1.setAccessible(true);
         Logger var2 = (Logger)var1.get(var0);
         var2.setLevel(Level.OFF);
      } catch (Exception var4) {
         a.log(Level.WARNING, m[1] + ExceptionUtils.getMessage(var4), ExceptionUtils.getDebugException(var4));
      }
   }

   public CassandraConnectionManagerImpl(CassandraConnectionEntityManager var1, Config var2, SecurePasswordManager var3, TrustManager var4, SecureRandom var5) {
      String[] var10001 = new String[2];
      String[] var6 = m;
      var10001[0] = var6[9];
      var10001[1] = var6[20];
      this.j = var10001;
      this.lock = new ReentrantLock();
      this.c = var1;
      this.d = var2;
      this.e = var3;
      this.f = var4;
      this.g = var5;
      this.i = new ManagedTimer(var6[17]);
      this.i.schedule(new f(this.b, this), 30797L, l);
   }

   @Override
   public CassandraConnectionHolder getConnection(String var1) {
      this.lock.lock();

      try {
         CassandraConnectionHolder var2 = this.b.get(var1);
         if (var2 == null) {
            CassandraConnection var3;
            try {
               var3 = this.c.getCassandraConnectionEntity(var1);
            } catch (FindException var13) {
               Audit var10000 = h;
               M var10001 = AssertionMessages.CASSANDRA_CONNECTION_CANNOT_CONNECT;
               String[] var10002 = new String[]{var1, null};
               String[] var7 = m;
               var10002[1] = var7[19] + var1;
               var10000.logAndAudit(var10001, var10002, ExceptionUtils.getDebugException(var13));
               return null;
            }

            if (var3 == null) {
               h.logAndAudit(AssertionMessages.CASSANDRA_CONNECTION_CANNOT_CONNECT, new String[]{var1, m[12]});
               return null;
            }

            if (var3.isEnabled()) {
               var2 = this.createConnection(var3);

               try {
                  if (var2 != null) {
                     this.b.put(var1, var2);
                  }
               } catch (FindException var12) {
                  throw a(var12);
               }
            } else {
               h.logAndAudit(AssertionMessages.CASSANDRA_CONNECTION_DISABLED, new String[]{var1});
            }
         }

         try {
            if (var2 != null) {
               var2.getLastAccessTime().set(System.currentTimeMillis());
            }
         } catch (FindException var14) {
            throw a(var14);
         }

         return var2;
      } finally {
         this.lock.unlock();
      }
   }

   @Override
   public void closeAllConnections() {
      this.lock.lock();

      try {
         Iterator var1 = this.b.values().iterator();

         while (var1.hasNext()) {
            CassandraConnectionHolder var2 = (CassandraConnectionHolder)var1.next();
            this.closeConnection(var2);
            var1.remove();
         }
      } finally {
         this.lock.unlock();
      }
   }

   @Override
   public void removeConnection(CassandraConnection var1) {
      this.lock.lock();

      try {
         CassandraConnectionHolder var2 = this.b.get(var1.getName());

         try {
            if (this.closeConnection(var2)) {
               this.b.remove(var1.getName());
               h.logAndAudit(AssertionMessages.CASSANDRA_CONNECTION_MANAGER_FINE_MESSAGE, new String[]{m[13] + var1.getName()});
               return;
            }
         } catch (DriverException var6) {
            throw a(var6);
         }

         h.logAndAudit(AssertionMessages.CASSANDRA_CONNECTION_MANAGER_FINE_MESSAGE, new String[]{m[2] + var1.getName()});
      } finally {
         this.lock.unlock();
      }
   }

   @Override
   public void addConnection(CassandraConnection var1) {
      this.getConnection(var1.getName());
   }

   @Override
   public void removeConnection(Goid var1) {
      this.lock.lock();

      try {
         CassandraConnection var2 = null;

         try {
            var2 = (CassandraConnection)this.c.findByPrimaryKey(var1);
            this.removeConnection(var2);
         } catch (FindException var10) {
            h.logAndAudit(AssertionMessages.CASSANDRA_CANNOT_REMOVE_CONNECTION, new String[]{m[7]}, ExceptionUtils.getDebugException(var10));
         }

         if (var2 == null) {
            Iterator var3 = this.b.values().iterator();

            while (var3.hasNext()) {
               CassandraConnectionHolder var4 = (CassandraConnectionHolder)var3.next();

               try {
                  if (var4.getCassandraConnectionEntity().getGoid().equals(var1)) {
                     this.closeConnection(var4);
                     var3.remove();
                  }
               } catch (FindException var9) {
                  throw a(var9);
               }
            }
         }
      } finally {
         this.lock.unlock();
      }
   }

   @Override
   public void updateConnection(CassandraConnection param1) throws UpdateException {
      // $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:
      // 00: aload 0
      // 01: getfield com/l7tech/server/cassandra/CassandraConnectionManagerImpl.lock Ljava/util/concurrent/locks/Lock;
      // 04: invokeinterface java/util/concurrent/locks/Lock.lock ()V 1
      // 09: bipush 0
      // 0a: istore 2
      // 0b: aload 0
      // 0c: getfield com/l7tech/server/cassandra/CassandraConnectionManagerImpl.b Ljava/util/concurrent/ConcurrentHashMap;
      // 0f: invokevirtual java/util/concurrent/ConcurrentHashMap.entrySet ()Ljava/util/Set;
      // 12: invokeinterface java/util/Set.iterator ()Ljava/util/Iterator; 1
      // 17: astore 4
      // 19: aload 4
      // 1b: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 20: ifeq ab
      // 23: aload 4
      // 25: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 2a: checkcast java/util/Map$Entry
      // 2d: astore 5
      // 2f: aload 5
      // 31: invokeinterface java/util/Map$Entry.getValue ()Ljava/lang/Object; 1
      // 36: checkcast com/l7tech/server/cassandra/CassandraConnectionHolder
      // 39: invokeinterface com/l7tech/server/cassandra/CassandraConnectionHolder.getCassandraConnectionEntity ()Lcom/l7tech/gateway/common/cassandra/CassandraConnection; 1
      // 3e: invokevirtual com/l7tech/gateway/common/cassandra/CassandraConnection.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 41: aload 1
      // 42: invokevirtual com/l7tech/gateway/common/cassandra/CassandraConnection.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 45: invokevirtual com/l7tech/objectmodel/Goid.equals (Ljava/lang/Object;)Z
      // 48: ifeq a8
      // 4b: aload 5
      // 4d: invokeinterface java/util/Map$Entry.getValue ()Ljava/lang/Object; 1
      // 52: checkcast com/l7tech/server/cassandra/CassandraConnectionHolder
      // 55: astore 3
      // 56: aload 0
      // 57: aload 3
      // 58: invokevirtual com/l7tech/server/cassandra/CassandraConnectionManagerImpl.closeConnection (Lcom/l7tech/server/cassandra/CassandraConnectionHolder;)Z
      // 5b: ifeq 90
      // 5e: bipush 1
      // 5f: istore 2
      // 60: aload 4
      // 62: invokeinterface java/util/Iterator.remove ()V 1
      // 67: getstatic com/l7tech/server/cassandra/CassandraConnectionManagerImpl.h Lcom/l7tech/gateway/common/audit/Audit;
      // 6a: getstatic com/l7tech/gateway/common/audit/AssertionMessages.CASSANDRA_CONNECTION_MANAGER_FINE_MESSAGE Lcom/l7tech/gateway/common/audit/Messages$M;
      // 6d: bipush 1
      // 6e: anewarray 272
      // 71: dup
      // 72: bipush 0
      // 73: aload 1
      // 74: invokevirtual com/l7tech/gateway/common/cassandra/CassandraConnection.getName ()Ljava/lang/String;
      // 77: getstatic com/l7tech/server/cassandra/CassandraConnectionManagerImpl.m [Ljava/lang/String;
      // 7a: astore 7
      // 7c: aload 7
      // 7e: bipush 18
      // 80: aaload
      // 81: swap
      // 82: invokedynamic makeConcatWithConstants (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" ]
      // 87: aastore
      // 88: invokeinterface com/l7tech/gateway/common/audit/Audit.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V 3
      // 8d: goto ab
      // 90: new com/l7tech/objectmodel/UpdateException
      // 93: dup
      // 94: aload 1
      // 95: invokevirtual com/l7tech/gateway/common/cassandra/CassandraConnection.getName ()Ljava/lang/String;
      // 98: getstatic com/l7tech/server/cassandra/CassandraConnectionManagerImpl.m [Ljava/lang/String;
      // 9b: bipush 11
      // 9d: aaload
      // 9e: swap
      // 9f: invokedynamic makeConcatWithConstants (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" ]
      // a4: invokespecial com/l7tech/objectmodel/UpdateException.<init> (Ljava/lang/String;)V
      // a7: athrow
      // a8: goto 19
      // ab: iload 2
      // ac: ifeq de
      // af: aload 0
      // b0: aload 1
      // b1: invokevirtual com/l7tech/server/cassandra/CassandraConnectionManagerImpl.createConnection (Lcom/l7tech/gateway/common/cassandra/CassandraConnection;)Lcom/l7tech/server/cassandra/CassandraConnectionHolder;
      // b4: astore 5
      // b6: aload 5
      // b8: ifnull de
      // bb: aload 1
      // bc: invokevirtual com/l7tech/gateway/common/cassandra/CassandraConnection.isEnabled ()Z
      // bf: ifeq de
      // c2: goto c9
      // c5: invokestatic com/l7tech/server/cassandra/CassandraConnectionManagerImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // c8: athrow
      // c9: aload 0
      // ca: getfield com/l7tech/server/cassandra/CassandraConnectionManagerImpl.b Ljava/util/concurrent/ConcurrentHashMap;
      // cd: aload 1
      // ce: invokevirtual com/l7tech/gateway/common/cassandra/CassandraConnection.getName ()Ljava/lang/String;
      // d1: aload 5
      // d3: invokevirtual java/util/concurrent/ConcurrentHashMap.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      // d6: pop
      // d7: goto de
      // da: invokestatic com/l7tech/server/cassandra/CassandraConnectionManagerImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // dd: athrow
      // de: aload 0
      // df: getfield com/l7tech/server/cassandra/CassandraConnectionManagerImpl.lock Ljava/util/concurrent/locks/Lock;
      // e2: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // e7: goto f8
      // ea: astore 6
      // ec: aload 0
      // ed: getfield com/l7tech/server/cassandra/CassandraConnectionManagerImpl.lock Ljava/util/concurrent/locks/Lock;
      // f0: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // f5: aload 6
      // f7: athrow
      // f8: return
      // try (76 -> 89): 90 com/l7tech/objectmodel/UpdateException
      // try (74 -> 79): 80 com/l7tech/objectmodel/UpdateException
      // try (3 -> 92): 96 null
      // try (96 -> 97): 96 null
   }

   private CassandraConnectionHolder a(Goid var1) {
      for (CassandraConnectionHolder var3 : this.b.values()) {
         try {
            if (var3.getCassandraConnectionEntity().getGoid().equals(var1)) {
               return var3;
            }
         } catch (DriverException var4) {
            throw a(var4);
         }
      }

      return null;
   }

   protected CassandraConnectionHolder createConnection(CassandraConnection var1) {
      CqlSession var2;
      try {
         var2 = this.a(var1);
         h.logAndAudit(AssertionMessages.CASSANDRA_CONNECTION_MANAGER_FINE_MESSAGE, new String[]{m[16] + var1.getName()});
      } catch (Exception var4) {
         h.logAndAudit(
            AssertionMessages.CASSANDRA_CONNECTION_CANNOT_CONNECT, new String[]{var1.getName(), var4.getMessage()}, ExceptionUtils.getDebugException(var4)
         );
         return null;
      }

      return new CassandraConnectionHolderImpl(var1, var2, this.a(var2, var1));
   }

   // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow.
   // 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!)
   @Override
   public void testConnection(CassandraConnection var1) throws DriverException {
      CqlSession var2 = null;
      boolean var8 = false /* VF: Semaphore variable */;

      try {
         var8 = true;
         var2 = this.a(var1);
         h.logAndAudit(AssertionMessages.CASSANDRA_CONNECTION_MANAGER_FINE_MESSAGE, new String[]{m[21] + var1.getName()});
         var8 = false;
      } catch (DriverException var9) {
         h.logAndAudit(
            AssertionMessages.CASSANDRA_CONNECTION_CANNOT_CONNECT, new String[]{var1.getName(), var9.getMessage()}, ExceptionUtils.getDebugException(var9)
         );
         throw var9;
      } finally {
         if (var8) {
            try {
               if (var2 != null) {
                  var2.close();
               }
            } catch (DriverException var10) {
               throw a(var10);
            }
         }
      }

      if (var2 != null) {
         var2.close();
      }
   }

   private Optional<JmxReporter> a(CqlSession var1, CassandraConnection var2) {
      return var1.getMetrics().map(var1x -> {
         MetricRegistry var2x = var1x.getRegistry();
         Builder var10000 = JmxReporter.forRegistry(var2x);
         String[] var4 = m;
         JmxReporter var3 = var10000.inDomain(var4[10]).build();
         var3.start();
         h.logAndAudit(AssertionMessages.CASSANDRA_CONNECTION_MANAGER_INFO_MESSAGE, new String[]{String.format(var4[0], var2.getName())});
         return var3;
      });
   }

   private CqlSession a(CassandraConnection var1) {
      return new CassandraSessionBuilder(var1, this.d).sslEngineFactorySupplier(var1x -> {
         try {
            return this.b(var1x);
         } catch (NoSuchAlgorithmException | KeyManagementException var3) {
            throw new DriverExecutionException(var3);
         }
      }).passwordSupplier(var1x -> {
         try {
            return String.valueOf(this.c(var1x));
         } catch (FindException | ParseException var3) {
            throw new DriverExecutionException(var3);
         }
      }).build();
   }

   private ProgrammaticSslEngineFactory b(CassandraConnection var1) throws NoSuchAlgorithmException, KeyManagementException {
      TrustManager[] var2 = new TrustManager[]{this.f};
      String var3 = var1.getTlsEnabledCipherSuites();
      String[] var6 = m;
      SSLContext var4 = SSLContext.getInstance(var6[5]);
      var4.init(null, var2, this.g);
      String[] var5 = this.j;

      try {
         if (var3 == null || var3.equals("")) {
            return new ProgrammaticSslEngineFactory(var4, var5, false);
         }
      } catch (NoSuchAlgorithmException var7) {
         throw a(var7);
      }

      var5 = SslSocketUtil.filterUnsupportedCiphers(var3.split(m[3]), var4.getSupportedSSLParameters().getCipherSuites());
      return new ProgrammaticSslEngineFactory(var4, var5, false);
   }

   private char[] c(CassandraConnection var1) throws FindException, ParseException {
      try {
         if (var1.getPasswordGoid() == null || Goid.isDefault(var1.getPasswordGoid())) {
            return new char[0];
         }
      } catch (FindException var4) {
         throw a(var4);
      }

      SecurePassword var2 = (SecurePassword)this.e.findByPrimaryKey(var1.getPasswordGoid());

      try {
         if (var2 == null) {
            return new char[0];
         }
      } catch (FindException var3) {
         throw a(var3);
      }

      return this.e.decryptPassword(var2.getEncodedPassword());
   }

   protected boolean closeConnection(CassandraConnectionHolder var1) {
      if (var1 != null) {
         var1.getJmxReporter().ifPresent(JmxReporter::close);
         CqlSession var2 = var1.getSession();

         try {
            if (var2 != null) {
               var2.close();
            }
         } catch (DriverException var3) {
            throw a(var3);
         }
      }

      return true;
   }

   public int getConnectionCacheSize() {
      return this.b.size();
   }

   static {
      String[] var5 = new String[22];
      int var3 = 0;
      String var2 = "?/\n\nK\u00063%#^G\u0018H!<'\f\u0016\u000e\fr?/\n\nK\"\u001f\u0010f\u001b\f\n\n>-\"C\u001d(\u001f\u0000\u0007\rr<)^\u0016\u001e\u001a<h)\u0018\u0004K\u0004=/5^\u0004\u0019\u0007?h\u0002\u001f\u0016\n\u001b&)>^!\n\u001b!)(\u001a\u0010\nH6:/\b\u0007\u0019H\u0011'(\u0010\u0007\b\u001c;'(DB&\u001d(\u001f\u0000\u0007\rr<)^\u0010\u000e\u0005=>#^!\n\u001b!)(\u001a\u0010\nH1'(\u0010\u0007\b\u001c;'(^\u0007\u00145TN7\u001bx\u0006$)\u0019\u0005\u000e\u001a\u0003\u001c\n-9+)\u0013L\u0007_&-%\u0016L\u0018\r >#\fL\b\t!;'\u0010\u0006\u0019\t|+)\u0010\f\u000e\u000b&!)\u0010L\b\t1 #=\u000e\u000e\t<\u0001(\n\u0007\u0019\u001e3$9\u001d(\u001f\u0000\u0007\rr<)^\u0004\u0002\u00066h'\u000e\u0012\u0019\u0007\":/\u001f\u0016\u000eH1'(\u0010\u0007\b\u001c;'(^\u000b\u0005H& #^\u0006\n\u001c3h5\u0011\u0017\u0019\u000b7f9+)\u0013L\u0007_&-%\u0016L\u0018\r >#\fL\b\t!;'\u0010\u0006\u0019\t|+)\u0010\f\u000e\u000b&!)\u0010L\b\t1 #=\u000e\u000e\t<\u0001(\n\u0007\u0019\u001e3$\u001c\u001c\n-=9;\u0013\u0017\u001176#7\u0013\r\u0015!P^^\r\u000b\u0004==8 \u0013\u0017+)\u0013L\u000f\t&)5\n\u0003\u0013F=;5P\u0006\u0019\u0001$-4%\u001d(\u001f\u0000\u0007\rr<)^\u0001\u0007\u0007!-f=\u0003\u0018\u001b3&\"\f\u0003K\u000b=&(\u001b\u0001\u001f\u0001=&f$\u000b'\r\u0011\n\u00066:'^\u0001\u0004\u0006<-%\n\u000b\u0004\u0006r,)\u001b\u0011K\u0006=<f\u001b\u001a\u0002\u001b&f\u001d\u001a#\u0013\r\u001d\r6h\u0005\u001f\u0011\u0018\t<,4\u001fB\b\u0007<&#\u001d\u0016\u0002\u0007<h \u001d(\u001f\u0000\u0007\rr<)^\u0005\u000e\u001cr;*\u0018V\u0001H ')\nB\u0007\u00075/#\fL\u0017+)\u0013L\u000f\t&)5\n\u0003\u0013F=;5P\u0006\u0019\u0001$-4\u001d\u000b4\u001b\u0003\u001f\r6h\u0005\u001f\u0011\u0018\t<,4\u001fB(\u0007<&#\u001d\u0016\u0002\u0007<h'\u000b'\r\u0011\n\u00066:'=\r\u0005\u00067+2\u0017\r\u0005%3&'\u0019\u0007\u0019E\u0011)%\u0016\u0007(\u00047)(\u000b\u0012\u001d\u001a#\u0013\r\u001d\r6h\u0005\u001f\u0011\u0018\t<,4\u001fB\b\u0007<&#\u001d\u0016\u0002\u0007<h)\u001d(\u001f\u0000\u0007\rr<)^\u0004\u0002\u00066h\u0005\u001f\u0011\u0018\t<,4\u001fB\b\u0007<&#\u001d\u0016\u0002\u0007<h(\u001f\u000f\u000eR";
      int var4 = "?/\n\nK\u00063%#^G\u0018H!<'\f\u0016\u000e\fr?/\n\nK\"\u001f\u0010f\u001b\f\n\n>-\"C\u001d(\u001f\u0000\u0007\rr<)^\u0016\u001e\u001a<h)\u0018\u0004K\u0004=/5^\u0004\u0019\u0007?h\u0002\u001f\u0016\n\u001b&)>^!\n\u001b!)(\u001a\u0010\nH6:/\b\u0007\u0019H\u0011'(\u0010\u0007\b\u001c;'(DB&\u001d(\u001f\u0000\u0007\rr<)^\u0010\u000e\u0005=>#^!\n\u001b!)(\u001a\u0010\nH1'(\u0010\u0007\b\u001c;'(^\u0007\u00145TN7\u001bx\u0006$)\u0019\u0005\u000e\u001a\u0003\u001c\n-9+)\u0013L\u0007_&-%\u0016L\u0018\r >#\fL\b\t!;'\u0010\u0006\u0019\t|+)\u0010\f\u000e\u000b&!)\u0010L\b\t1 #=\u000e\u000e\t<\u0001(\n\u0007\u0019\u001e3$9\u001d(\u001f\u0000\u0007\rr<)^\u0004\u0002\u00066h'\u000e\u0012\u0019\u0007\":/\u001f\u0016\u000eH1'(\u0010\u0007\b\u001c;'(^\u000b\u0005H& #^\u0006\n\u001c3h5\u0011\u0017\u0019\u000b7f9+)\u0013L\u0007_&-%\u0016L\u0018\r >#\fL\b\t!;'\u0010\u0006\u0019\t|+)\u0010\f\u000e\u000b&!)\u0010L\b\t1 #=\u000e\u000e\t<\u0001(\n\u0007\u0019\u001e3$\u001c\u001c\n-=9;\u0013\u0017\u001176#7\u0013\r\u0015!P^^\r\u000b\u0004==8 \u0013\u0017+)\u0013L\u000f\t&)5\n\u0003\u0013F=;5P\u0006\u0019\u0001$-4%\u001d(\u001f\u0000\u0007\rr<)^\u0001\u0007\u0007!-f=\u0003\u0018\u001b3&\"\f\u0003K\u000b=&(\u001b\u0001\u001f\u0001=&f$\u000b'\r\u0011\n\u00066:'^\u0001\u0004\u0006<-%\n\u000b\u0004\u0006r,)\u001b\u0011K\u0006=<f\u001b\u001a\u0002\u001b&f\u001d\u001a#\u0013\r\u001d\r6h\u0005\u001f\u0011\u0018\t<,4\u001fB\b\u0007<&#\u001d\u0016\u0002\u0007<h \u001d(\u001f\u0000\u0007\rr<)^\u0005\u000e\u001cr;*\u0018V\u0001H ')\nB\u0007\u00075/#\fL\u0017+)\u0013L\u000f\t&)5\n\u0003\u0013F=;5P\u0006\u0019\u0001$-4\u001d\u000b4\u001b\u0003\u001f\r6h\u0005\u001f\u0011\u0018\t<,4\u001fB(\u0007<&#\u001d\u0016\u0002\u0007<h'\u000b'\r\u0011\n\u00066:'=\r\u0005\u00067+2\u0017\r\u0005%3&'\u0019\u0007\u0019E\u0011)%\u0016\u0007(\u00047)(\u000b\u0012\u001d\u001a#\u0013\r\u001d\r6h\u0005\u001f\u0011\u0018\t<,4\u001fB\b\u0007<&#\u001d\u0016\u0002\u0007<h)\u001d(\u001f\u0000\u0007\rr<)^\u0004\u0002\u00066h\u0005\u001f\u0011\u0018\t<,4\u001fB\b\u0007<&#\u001d\u0016\u0002\u0007<h(\u001f\u000f\u000eR"
         .length();
      char var1 = '%';
      int var8 = -1;

      label35:
      while (true) {
         byte var10000 = 73;
         String var10001 = var2.substring(++var8, var8 + var1);
         byte var10002 = -1;

         while (true) {
            String var9 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var8 += var1) >= var4) {
                     m = var5;
                     k = m[8];

                     try {
                        a = Logger.getLogger(CassandraConnectionManagerImpl.class.getName());
                        h = new LoggingAudit(a);
                        l = ConfigFactory.getLongProperty(m[6], 900000L);
                        if (!JdkLoggerConfigurator.debugState()) {
                           a();
                        }

                        return;
                     } catch (DriverException var6) {
                        throw a(var6);
                     }
                  }

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

                  var2 = "!7\u0010\u0000\u0004\u0006.*,\n\u000b\u001e\n.0(\u001cndm069\u0000\u0000\u0005\u001d.\u001d6\t&>\"0\u000bU8\",%4\u0001\u0011\t\"\u007f\u0015:\u0001\u001b\u001e +?:\u0001U";
                  var4 = "!7\u0010\u0000\u0004\u0006.*,\n\u000b\u001e\n.0(\u001cndm069\u0000\u0000\u0005\u001d.\u001d6\t&>\"0\u000bU8\",%4\u0001\u0011\t\"\u007f\u0015:\u0001\u001b\u001e +?:\u0001U"
                     .length();
                  var1 = 28;
                  var8 = -1;
            }

            var10000 = 116;
            var10001 = var2.substring(++var8, var8 + var1);
            var10002 = 0;
         }
      }
   }

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

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

      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 -> 1;
            case 1 -> 15;
            case 2 -> 55;
            case 3 -> 43;
            case 4 -> 34;
            case 5 -> 33;
            default -> 27;
         });
      }

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