package com.l7tech.security.cert;

import com.l7tech.common.io.CertUtils;
import com.l7tech.security.prov.ProviderUtil;
import com.l7tech.security.prov.bc.api.BCProxy;
import com.l7tech.util.ArrayUtils;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.HexUtils;
import com.l7tech.util.ISO8601Date;
import java.io.IOException;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateParsingException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import javax.naming.NamingEnumeration;
import javax.naming.directory.Attribute;
import javax.naming.ldap.LdapName;
import javax.naming.ldap.Rdn;
import javax.security.auth.x500.X500Principal;
import org.bouncycastle.asn1.x509.CertificatePolicies;
import org.bouncycastle.asn1.x509.Extension;
import org.bouncycastle.cert.jcajce.JcaX509ExtensionUtils;
import org.jetbrains.annotations.Nullable;
import sun.security.util.DerValue;

public enum CertificateAttribute {
   DER,
   BASE64,
   PEM,
   SIG_ALG_NAME,
   SIG_ALG_OID,
   SERIAL,
   NOT_AFTER,
   NOT_BEFORE,
   ISSUER,
   ISSUER_CANONICAL,
   ISSUER_RFC2253,
   ISSUER_DN,
   ISSUER_ALT_EMAIL,
   ISSUER_ALT_DNS,
   ISSUER_ALT_URI,
   ISSUER_ALT_OTHER,
   SUBJECT,
   SUBJECT_CANONICAL,
   SUBJECT_RFC2253,
   SUBJECT_DN,
   SUBJECT_PUB_KEY_ALG,
   SUBJECT_PUB_KEY,
   SUBJECT_KEY_IDENTIFIER,
   SUBJECT_ALT_EMAIL,
   SUBJECT_ALT_EMAIL_MULTI,
   SUBJECT_ALT_DNS,
   SUBJECT_ALT_DNS_MULTI,
   SUBJECT_ALT_DN,
   SUBJECT_ALT_DN_MULTI,
   SUBJECT_ALT_IP,
   SUBJECT_ALT_IP_MULTI,
   SUBJECT_ALT_URI,
   SUBJECT_ALT_URI_MULTI,
   SUBJECT_ALT_OTHER,
   SUBJECT_ALT_OTHER_MULTI,
   THUMBPRINT_SHA1,
   THUMBPRINT_SHA256,
   COUNTRY_OF_CITIZENSHIP,
   KEY_USAGE_CRITICALITY,
   KEY_USAGE_DIGITAL_SIGNATURE,
   KEY_USAGE_NON_REPUDIATION,
   KEY_USAGE_KEY_ENCIPHERMENT,
   KEY_USAGE_DATA_ENCIPHERMENT,
   KEY_USAGE_KEY_AGREEMENT,
   KEY_USAGE_KEY_CERT_SIGN,
   KEY_USAGE_CRL_SIGN,
   KEY_USAGE_ENCIPHER_ONLY,
   KEY_USAGE_DECIPHER_ONLY,
   EXTENDED_KEY_USAGE_CRITICALITY,
   EXTENDED_KEY_USAGE_VALUES,
   CERTIFICATE_POLICIES;

   private static final String X509_KEY_USAGE_EXTENSION_OID;
   private static final String X509_EXT_KEY_USAGE_EXTENSION_OID;
   private static final Logger logger;
   private static final String KEYUSAGE_NONE;
   private static final String KEYUSAGE_CRITICAL;
   private static final String KEYUSAGE_NONCRIT;
   private static final Pattern OID_PATTERN;
   private static final BCProxy bcProxy;
   private static final Map<String, String> DN_OID_MAP;
   private final String attributeName;
   private final List<String> legacyNames;
   private final boolean prefixed;
   private final boolean multiValued;
   private static final Map<String, CertificateAttribute> stringToEnum;
   private static final String[] a;

   CertificateAttribute(String var3, boolean var4, boolean var5) {
      this(var3, var4, var5);
   }

   CertificateAttribute(String var3, boolean var4, boolean var5, String... var6) {
      this.attributeName = var3;
      this.prefixed = var4;
      this.multiValued = var5;
      this.legacyNames = Collections.unmodifiableList(Arrays.asList(var6));
   }

   String getNewName(String var1) {
      return this.attributeName;
   }

   private static Map<String, Collection<Object>> makeMap(String var0, final Object var1) {
      HashMap var2 = new HashMap();
      if (var0 == null) {
         return var2;
      }

      if (var1 != null && var1.getClass().isArray() && Object.class.isAssignableFrom(var1.getClass().getComponentType())) {
         var2.put(var0, new ArrayList<Object>() {
            static final long serialVersionUID = -923817141347949881L;

            {
               this.addAll(Arrays.asList((Object[])var1));
            }
         });
      } else if (var1 instanceof Collection) {
         var2.put(var0, new ArrayList<Object>() {
            static final long serialVersionUID = -2031124461719375025L;

            {
               this.addAll((Collection<? extends Object>)var1);
            }
         });
      } else {
         var2.put(var0, new ArrayList<Object>() {
            static final long serialVersionUID = 5287902832631449359L;

            {
               this.add(var1);
            }
         });
      }

      return var2;
   }

   private static void addToMap(Map<String, Collection<Object>> var0, String var1, final Object var2) {
      if (var0 != null) {
         Collection var3 = (Collection)var0.get(var1);
         if (var3 == null) {
            var0.put(var1, new ArrayList<Object>() {
               static final long serialVersionUID = 3466433064861525963L;

               {
                  this.add(var2);
               }
            });
         } else {
            var3.add(var2);
         }
      }
   }

   private static Map<String, Collection<Object>> getValuesFromsX500Principal(X500Principal var0, String var1) {
      HashMap var2 = new HashMap();

      try {
         if (var0 != null) {
            addToMap(var2, var1, var0.toString());
            String[] var12 = a;
            ArrayList var15 = new ArrayList<>(new LdapName(var0.getName(var12[74], DN_OID_MAP)).getRdns());
            int var4 = var15.size();
            Collections.reverse(var15);

            for (Rdn var6 : var15) {
               addToMap(var2, var1 + "." + Integer.toString(var4), var6.toString());
               NamingEnumeration var7 = var6.toAttributes().getAll();

               while (var7.hasMore()) {
                  Attribute var8 = (Attribute)var7.next();
                  String var9 = var8.getID().toLowerCase();
                  if (OID_PATTERN.matcher(var9).matches()) {
                     var12 = a;
                     var9 = var12[35] + var9;
                  }

                  for (int var10 = 0; var10 < var8.size(); var10++) {
                     String var11 = attributeValueToString(var8.get(var10));
                     addToMap(var2, var1 + "." + Integer.toString(var4) + "." + var9, var11);
                     addToMap(var2, var1 + "." + var9, var11);
                  }
               }

               var4--;
            }
         }
      } catch (Exception var14) {
         Exception var3 = var14;

         try {
            if (logger.isLoggable(Level.FINE)) {
               logger.log(Level.FINE, a[4] + ExceptionUtils.getMessage(var3) + a[109], ExceptionUtils.getDebugException(var3));
            }
         } catch (Exception var13) {
            throw a(var13);
         }
      }

      return var2;
   }

   private static String getIssuerAltName(X509Certificate var0, CertificateAttribute.AltName var1) {
      try {
         return getAltName(var0.getIssuerAlternativeNames(), var1);
      } catch (CertificateParsingException var4) {
         CertificateParsingException var2 = var4;

         try {
            if (logger.isLoggable(Level.FINE)) {
               logger.log(Level.FINE, a[64] + ExceptionUtils.getMessage(var2) + a[93], ExceptionUtils.getDebugException(var2));
            }

            return null;
         } catch (CertificateParsingException var3) {
            throw a(var3);
         }
      }
   }

   private static String getSubjectAltName(X509Certificate var0, CertificateAttribute.AltName var1) {
      try {
         return getAltName(var0.getSubjectAlternativeNames(), var1);
      } catch (CertificateParsingException var4) {
         CertificateParsingException var2 = var4;

         try {
            if (logger.isLoggable(Level.FINE)) {
               logger.log(Level.FINE, a[3] + ExceptionUtils.getMessage(var2) + a[109], ExceptionUtils.getDebugException(var2));
            }

            return null;
         } catch (CertificateParsingException var3) {
            throw a(var3);
         }
      }
   }

   private static Collection<String> getSubjectAltNames(X509Certificate var0, CertificateAttribute.AltName var1) {
      try {
         return getAltNames(var0.getSubjectAlternativeNames(), var1);
      } catch (CertificateParsingException var4) {
         CertificateParsingException var2 = var4;

         try {
            if (logger.isLoggable(Level.FINE)) {
               logger.log(Level.FINE, a[116] + ExceptionUtils.getMessage(var2) + a[109], ExceptionUtils.getDebugException(var2));
            }

            return null;
         } catch (CertificateParsingException var3) {
            throw a(var3);
         }
      }
   }

   private static String getAltName(Collection<List<?>> var0, CertificateAttribute.AltName var1) {
      if (var0 != null) {
         Integer var2 = var1.getType();

         for (List var4 : var0) {
            if (var4 != null && var4.size() > 0 && var2.equals(var4.get(0))) {
               return getAltNameValue(var1, var4.get(1));
            }
         }
      }

      return null;
   }

   @Nullable
   private static String getAltNameValue(CertificateAttribute.AltName var0, Object var1) {
      try {
         if (var1 instanceof String) {
            return (String)var1;
         }
      } catch (IOException var4) {
         throw a(var4);
      }

      if (var1 instanceof byte[] var2) {
         try {
            try {
               if (var0.isExposeAsBase64()) {
                  return HexUtils.encodeBase64(var2, true);
               }
            } catch (IOException var5) {
               throw a(var5);
            }

            return new DerValue(var2).toString();
         } catch (IOException var6) {
            String[] var3 = a;
            logger.log(Level.WARNING, var3[136], var0);
            return null;
         }
      } else {
         Logger var10000;
         Level var10001;
         String var10002;
         Class var10003;
         label43: {
            try {
               var10000 = logger;
               var10001 = Level.WARNING;
               var10002 = a[26];
               if (var1 == null) {
                  var10003 = null;
                  break label43;
               }
            } catch (IOException var7) {
               throw a(var7);
            }

            var10003 = var1.getClass();
         }

         var10000.log(var10001, var10002, var10003);
         return null;
      }
   }

   private static Collection<String> getAltNames(Collection<List<?>> var0, CertificateAttribute.AltName var1) {
      if (var0 != null) {
         Integer var2 = var1.getType();
         return var0.stream()
            .filter(var1x -> var1x != null && var1x.size() > 0 && var2.equals(var1x.get(0)))
            .map(var1x -> getAltNameValue(var1, var1x.get(1)))
            .collect(Collectors.toList());
      } else {
         return null;
      }
   }

   private static List<String> extractCertificatePolicies(X509Certificate var0) {
      ArrayList var1 = new ArrayList();
      byte[] var2 = var0.getExtensionValue(Extension.certificatePolicies.getId());

      try {
         if (var2 == null || var2.length <= 0) {
            return var1;
         }
      } catch (IOException var6) {
         throw a(var6);
      }

      try {
         CertificatePolicies var3 = CertificatePolicies.getInstance(JcaX509ExtensionUtils.parseExtensionValue(var2));

         try {
            if (var3 != null) {
               Arrays.stream(var3.getPolicyInformation()).forEach(var1x -> var1.add(var1x.getPolicyIdentifier().getId()));
            }
         } catch (IOException var4) {
            throw a(var4);
         }
      } catch (IOException var5) {
         logger.log(Level.WARNING, a[104]);
      }

      return var1;
   }

   private static String[] prefixLegacyNames(String var0) {
      String[] var10000 = new String[8];
      String[] var7 = a;
      var10000[0] = var7[84];
      var10000[1] = "l";
      var10000[2] = var7[120];
      var10000[3] = "o";
      var10000[4] = var7[72];
      var10000[5] = "c";
      var10000[6] = var7[73];
      var10000[7] = var7[7];
      String[] var1 = var10000;
      ArrayList var2 = new ArrayList();

      for (String var6 : var1) {
         var2.add(var0 + "." + var6);
      }

      return var2.toArray(new String[var2.size()]);
   }

   public abstract Map<String, Collection<Object>> extractValues(X509Certificate var1);

   public Map<String, Collection<Object>> extractValuesIncludingLegacyNames(X509Certificate var1) {
      Map var2 = this.extractValues(var1);
      HashMap var3 = new HashMap();

      for (String var5 : this.legacyNames) {
         boolean var6 = false;
         String var7 = this.getNewName(var5);

         for (String var9 : var2.keySet()) {
            if (var9.startsWith(var7)) {
               var6 = true;
               String var10 = var5 + var9.substring(var7.length());
               Collection var11 = (Collection)var2.get(var9);
               var3.put(var10, var11);
            }
         }

         if (!var6) {
            var3.put(var5, new ArrayList());
         }
      }

      var2.putAll(var3);
      return var2;
   }

   @Override
   public String toString() {
      return this.attributeName;
   }

   public static CertificateAttribute fromString(String var0) {
      String var1 = var0 == null ? null : var0.toLowerCase();
      CertificateAttribute var10000;
      if (var1 == null) {
         var10000 = null;
      } else if (stringToEnum.containsKey(var1)) {
         var10000 = stringToEnum.get(var1.toLowerCase());
      } else {
         if (!var1.startsWith(ISSUER_DN.toString() + ".")) {
            String[] var2 = a;
            if (!var1.startsWith(var2[100])) {
               return !var1.startsWith(SUBJECT_DN.toString() + ".") && !var1.startsWith(a[94]) ? null : SUBJECT_DN;
            }
         }

         var10000 = ISSUER_DN;
      }

      return var10000;
   }

   public boolean isPrefixed() {
      return this.prefixed;
   }

   public boolean isMultiValued() {
      return this.multiValued;
   }

   public boolean isLegacyName(String var1) {
      CertificateAttribute var2 = fromString(var1);
      return var2 != null && !var2.toString().equals(var1);
   }

   public static String attributeValueToString(Object var0) {
      return var0 == null ? null : (var0 instanceof byte[] ? "#" + HexUtils.hexDump((byte[])var0) : var0.toString());
   }

   // $VF: Failed to inline enum fields
   // 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!)
   static {
      String[] var5 = new String[138];
      int var3 = 0;
      String var2 = "\u007f&q\u0010p\u0010%s8v\u0003j\u001a5i=g\u0013s\u001a4~\t\u001e]\u0006t\u0007j_\u001dF\u0007B\u001c]9G:\u0005=o\u001cF6Qs\u001fC\u0007\u0013?M'\u0003M\u0010GzF&\u0013F\u0016P.\u00152\u001dX\u0016A4T'\u0018Z\u0016\u00134T>\u0014\f\u0015A5Xs\u0012I\u0001G3S:\u0012M\u0007Vz\u0012<i\u0001A5Gs\u0014T\u0007A;V'\u0018B\u0014\u00133F \u0004I\u0001\u0013;Y'\u0014^\u001dR.\\%\u0014\f\u001dR7P QJ\u0001\\7\u00150\u0014^\u0007Z<\\0\u0010X\u0016\u0013}\u0011_\u0006Q0P0\u0005\u0002\u0010R4Z=\u0018O\u0012_\u0011E\u0000@/P!_H\u001d\u001d(S0C\u001eF\u0000\u0002H\u0010\bB\u001cG\u001bS'\u0014^\u001bg6j\u0005`\u00000k6l\u001et\u00070s6}\u0019|\u00039i!~\u001f{\u0007\u000e\u007f&q\u0010p\u0010%s2\u007f\u000ej\u0017?\u0010_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014e#\u0013G\u0016J\u000fF2\u0016I0A3A:\u0012M\u001fZ.L\u0019G\u0016J\u000fF2\u0016I]W;A24B\u0010Z*]6\u0003A\u0016].\u000f\u007f&q\u0010p\u0010%s2\u007f\u000ej\u0017?\u007f\u0014O\u001cF4A!\bc\u0015p3A:\u000bI\u001d@2\\#\u000fx;f\u0017w\u0003#e=g\u0005f\u001b0\u001d\u000f\u007f&q\u0010p\u0010%s!u\u0019\u0007aD\u001f\u0016I\u000bG?[7\u0014H8V#` \u0010K\u0016e;Y&\u0014_\u0006_\u0016A3T?\f_\u0006Q0P0\u0005i\u001eR3Y\u001ei+g\u001f{\u00174h,x\u001fl\f$\u007f2t\u001fj\u0010#e'z\u0019t\u001f8x*\u0010e `\u000fp\u0001.m?g\u0005z\u00079i!\u000f\u007f&q\u0010p\u0010%s#f\u0018j\u00184u\u0014_\u0006Q0P0\u0005g\u0016J\u0013Q6\u001fX\u001aU3P!\u0014o6a\u000e|\u00158o2g\u001fj\u0003>`:p\u0013p\u0000(e\u001dE;Y:\u0015\f\u0012_.P!\u001fM\u0007Z,Ps\u001fM\u001eVzC2\u001dY\u0016\u0013.L#\u0014\u0016SHjH\u0014G\u0016J\u000fF2\u0016I]P(\\'\u0018O\u0012_3A*\u0011_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014h=`\u0010G\u0016J\u000fF2\u0016I]P(Y\u0000\u0018K\u001d\u0013\u007f&q\u0010p\u0010%s#f\u0018j\u00184u,r\u0016r\u000ee `\u000fp\u0001.m?g\u0005q\u001d\"\u0017g6j\u0005`\u00000k6l\u0011p\n.o6a\u000ej\u00008k=\u0017\u007f&q\u0010p\u0010%s2\u007f\u000ej\u0016<m:\u007f\u0005x\u0006=x:\u0017g6j\u0005`\u00000k6l\u0011p\n.m4a\u001fp\u001e4b'\u0004C\u001aWt\u0010e `\u000fp\u0001.o2}\u0015{\u001a2m?\u0015G\u0016J\u000fF2\u0016I]W?V:\u0001D\u0016A\u0015[?\b\u0010I\u000bG?[7\u0014H8V#` \u0010K\u0016\u0014\u007f&q\u0010p\u0010%s2\u007f\u000ej\u0017?s>f\u0016a\u001a\u0012g6j\u0005`\u00000k6l\u0019g\u001f.\u007f:t\u0014\u0012E\u0000@/P!0@\u0007};X64A\u0012Z6\u0011_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014e#@\t\u001e]\u0006t\u0007j_\u001fD\nb<g\u0005w\u00167c!v\u0012_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014y!z)\f\u007f:t\u0005t\u001f6s=r\u0017p\u000eE\u0000@/P!_^\u0015Ph\u0007fB\u001cI\u000bG?[7\u0014H8V#` \u0010K\u0016\u001d9G:\u0005E\u0010R6\\'\b\u0019g6j\u0005`\u00000k6l\u0014z\u001d.~6c\u000fq\u001a0x:|\u0014\u0013E\u0000@/P!_H\u001d\u001d9T=\u001eB\u001aP;Y\u000f\u007f&q\u0010p\u0010%s2\u007f\u000ej\u0006#e\u0010_\u0006Q0P0\u0005|\u0006Q6\\0:I\n\bO\u0001Z.\\0\u0010@\u0003h6a\u0003H\u0016A\u0016_\u001aT4T'\u0004^\u0016r6R<\u0003E\u0007[7{2\u001cI\u000ee `\u000fp\u0001.~5ph\u0007fB\u0007_\u0006Q0P0\u0005\u0016o<f\u0014a\u0001(s<u\u0005v\u001a%e)v\u0014f\u001b8|\u0014_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014c\u0007[?G \u0007_\u0006Q0P0\u0005\u0010X\u001bF7W#\u0003E\u001dG\t}\u0012C\u0019E\u0017G\u0016J\u000fF2\u0016I]]5[\u0001\u0014\\\u0006W3T'\u0018C\u001d=o\u001cF6Qs\u001fC\u0007\u0013?M'\u0003M\u0010Gz\\ \u0002Y\u0016AzT?\u0005I\u0001];A:\u0007IS];X6\u0002\f\u0015A5Xs\u0012I\u0001G3S:\u0012M\u0007Vz\u0012\u0006E\u0000@/P!\u0004B\u001c]?\u0017g6j\u0005`\u00000k6l\u001f{\u00108|;v\bj\u001c?`*\u0014\u007f&q\u0010p\u0010%s2\u007f\u000ej\u001a!s>f\u0016a\u001a\u001bI\u000bG?[7\u0014H8V#` \u0010K\u0016p(\\'\u0018O\u0012_3A*\u0012E\u0000@/P!0@\u0007};X6>X\u001bV(\u0003\\\u0016^\u0002C\u0006\u0006_\u0007A?P'\u0007~5ph\u0007fB\u0019i+g\u001f{\u00174h,x\u001fl\f$\u007f2t\u001fj\u00050`&v\t\u0018G\u0016J\u000fF2\u0016I]X?L\u0016\u001fO\u001aC2P!\u001cI\u001dG\te `\u000fp\u0001.h=\u000f_\u0006Q0P0\u0005\u0002\u0001U9\u0007aD\u001f\u000e\u007f&q\u0010p\u0010%s2\u007f\u000ej\u001a!\u0015G\u0016J\u000fF2\u0016I]X?L\u0012\u0016^\u0016V7P=\u0005\u0006n2`\u001f\u0003g\u0011_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014y!z\u0013_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014c\u0007[?G\u0002O\u001d\u0016_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014h\u001aA\u0014T>\u0014_\u000ee `\u000fp\u0001.m?g\u0005`\u00018\u0013_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014i\u001eR3Y\u0015\u007f&q\u0010p\u0010%s2\u007f\u000ej\u0006#e,~\u000fy\u00078\u0017g6j\u0005`\u00000k6l\u001ep\u00108|;v\bj\u001c?`*\tb<g\u0005t\u0015%i!\u0015G\u0016J\u000fF2\u0016I]V4V:\u0001D\u0016A\u0015[?\b\u0010e `\u000fp\u0001.m?g\u0005p\u001e0e?\u0002\u000b]\b_\u0006Q0P0\u0005\u0002\u0011x;f\u0017w\u0003#e=g\u0005f\u001b0\u001eF\u0005\u0010G\u0016J\u000fF2\u0016I]P\by\u0000\u0018K\u001d\u0014_\u0006Q0P0\u0005\u0002\u0017]tV2\u001fC\u001dZ9T?\u0006\u007f6a\u0013t\u001f\u0019_\u0006Q0P0\u0005|\u0006Q6\\0:I\nr6R<\u0003E\u0007[7\u0007E\u0000@/P!_\u0010E\u0000@/P!_O\u0012]5[:\u0012M\u001f\u0011\u007f&q\u0010p\u0010%s0r\u0014z\u001d8o2\u007f\u0003|6~8j\u0012Z6P7QX\u001c\u0013*T!\u0002ISP?G'\u0018J\u001aP;A6Q\\\u001c_3V:\u0014_S\u001b9]6\u0012GSP?G'\u0018J\u001aP;A6X\u0012_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014h=`)\u0013O\u0016A.\\5\u0018O\u0012G?e<\u001dE\u0010Z?F\n\u007f&q\u0010p\u0010%s7}\u0012r[\f`i7Z\u0005[\f`i}-HX\u001a~\u0002\u000b]\u0015_\u001aT4T'\u0004^\u0016r6R<\u0003E\u0007[7z\u001a5\u0010E\u0000@/P!0@\u0007};X6$~:\u001ag6j\u0005`\u00000k6l\u0011p\n.i=p\u0013e\u001b4~>v\u0014a\n_\u0006Q0P0\u0005\u0002\u0017]\u0019G\u0016J\u000fF2\u0016I]W3R:\u0005M\u001f`3R=\u0010X\u0006A?\u000eX\u001bF7W#\u0003E\u001dG\t}\u0012@>o\u001cF6Qs\u001fC\u0007\u0013?M'\u0003M\u0010GzF&\u0013F\u0016P.\u00152\u001dX\u0016A4T'\u0018Z\u0016\u00134T>\u0014_SU(Z>QO\u0016A.\\5\u0018O\u0012G?\u0015t\u0015_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014h\u001aA\u0014T>\u0014\u0012_\u0006Q0P0\u0005\u0002\u0017]tG5\u0012\u001eA\u0006i\u0015g6j\u0005`\u00000k6l\u0019g\u001a%e0r\u0016|\u0007(\u0002_\u0007\u0014_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014i\u001eR3Y \u0014G\u0016J\u000fF2\u0016I]X?L\u0010\u0014^\u0007`3R=\u000b\u007f:t\u0005t\u001f6s<z\u001e\u000bE\u0000@/P!4A\u0012Z6\u0010E\u0000@/P!0@\u0007};X65b \u0015\u007f&q\u0010p\u0010%s2\u007f\u000ej\u0017?\u007f,~\u000fy\u00078\tE\u0000@/P!_H\u001d\u001bg6j\u0005`\u00000k6l\u001e|\u00148x2\u007f\u0005f\u001a6b2g\u000fg\u0016\tB\u001cG\u0018P5\u001e^\u0016\u0006e `\u000fp\u0001\u0006N\u0012@?\u0003g\u0006E\u0000@/P!\u0017\u007f&q\u0010p\u0010%s2\u007f\u000ej\u001c%d6a\u0005x\u0006=x:\u0011\u007f&q\u0010p\u0010%s2\u007f\u000ej\u0016<m:\u007f\u0011\u007f&q\u0010p\u0010%s2\u007f\u000ej\u001c%d6a";
      int var4 = "\u007f&q\u0010p\u0010%s8v\u0003j\u001a5i=g\u0013s\u001a4~\t\u001e]\u0006t\u0007j_\u001dF\u0007B\u001c]9G:\u0005=o\u001cF6Qs\u001fC\u0007\u0013?M'\u0003M\u0010GzF&\u0013F\u0016P.\u00152\u001dX\u0016A4T'\u0018Z\u0016\u00134T>\u0014\f\u0015A5Xs\u0012I\u0001G3S:\u0012M\u0007Vz\u0012<i\u0001A5Gs\u0014T\u0007A;V'\u0018B\u0014\u00133F \u0004I\u0001\u0013;Y'\u0014^\u001dR.\\%\u0014\f\u001dR7P QJ\u0001\\7\u00150\u0014^\u0007Z<\\0\u0010X\u0016\u0013}\u0011_\u0006Q0P0\u0005\u0002\u0010R4Z=\u0018O\u0012_\u0011E\u0000@/P!_H\u001d\u001d(S0C\u001eF\u0000\u0002H\u0010\bB\u001cG\u001bS'\u0014^\u001bg6j\u0005`\u00000k6l\u001et\u00070s6}\u0019|\u00039i!~\u001f{\u0007\u000e\u007f&q\u0010p\u0010%s2\u007f\u000ej\u0017?\u0010_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014e#\u0013G\u0016J\u000fF2\u0016I0A3A:\u0012M\u001fZ.L\u0019G\u0016J\u000fF2\u0016I]W;A24B\u0010Z*]6\u0003A\u0016].\u000f\u007f&q\u0010p\u0010%s2\u007f\u000ej\u0017?\u007f\u0014O\u001cF4A!\bc\u0015p3A:\u000bI\u001d@2\\#\u000fx;f\u0017w\u0003#e=g\u0005f\u001b0\u001d\u000f\u007f&q\u0010p\u0010%s!u\u0019\u0007aD\u001f\u0016I\u000bG?[7\u0014H8V#` \u0010K\u0016e;Y&\u0014_\u0006_\u0016A3T?\f_\u0006Q0P0\u0005i\u001eR3Y\u001ei+g\u001f{\u00174h,x\u001fl\f$\u007f2t\u001fj\u0010#e'z\u0019t\u001f8x*\u0010e `\u000fp\u0001.m?g\u0005z\u00079i!\u000f\u007f&q\u0010p\u0010%s#f\u0018j\u00184u\u0014_\u0006Q0P0\u0005g\u0016J\u0013Q6\u001fX\u001aU3P!\u0014o6a\u000e|\u00158o2g\u001fj\u0003>`:p\u0013p\u0000(e\u001dE;Y:\u0015\f\u0012_.P!\u001fM\u0007Z,Ps\u001fM\u001eVzC2\u001dY\u0016\u0013.L#\u0014\u0016SHjH\u0014G\u0016J\u000fF2\u0016I]P(\\'\u0018O\u0012_3A*\u0011_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014h=`\u0010G\u0016J\u000fF2\u0016I]P(Y\u0000\u0018K\u001d\u0013\u007f&q\u0010p\u0010%s#f\u0018j\u00184u,r\u0016r\u000ee `\u000fp\u0001.m?g\u0005q\u001d\"\u0017g6j\u0005`\u00000k6l\u0011p\n.o6a\u000ej\u00008k=\u0017\u007f&q\u0010p\u0010%s2\u007f\u000ej\u0016<m:\u007f\u0005x\u0006=x:\u0017g6j\u0005`\u00000k6l\u0011p\n.m4a\u001fp\u001e4b'\u0004C\u001aWt\u0010e `\u000fp\u0001.o2}\u0015{\u001a2m?\u0015G\u0016J\u000fF2\u0016I]W?V:\u0001D\u0016A\u0015[?\b\u0010I\u000bG?[7\u0014H8V#` \u0010K\u0016\u0014\u007f&q\u0010p\u0010%s2\u007f\u000ej\u0017?s>f\u0016a\u001a\u0012g6j\u0005`\u00000k6l\u0019g\u001f.\u007f:t\u0014\u0012E\u0000@/P!0@\u0007};X64A\u0012Z6\u0011_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014e#@\t\u001e]\u0006t\u0007j_\u001fD\nb<g\u0005w\u00167c!v\u0012_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014y!z)\f\u007f:t\u0005t\u001f6s=r\u0017p\u000eE\u0000@/P!_^\u0015Ph\u0007fB\u001cI\u000bG?[7\u0014H8V#` \u0010K\u0016\u001d9G:\u0005E\u0010R6\\'\b\u0019g6j\u0005`\u00000k6l\u0014z\u001d.~6c\u000fq\u001a0x:|\u0014\u0013E\u0000@/P!_H\u001d\u001d9T=\u001eB\u001aP;Y\u000f\u007f&q\u0010p\u0010%s2\u007f\u000ej\u0006#e\u0010_\u0006Q0P0\u0005|\u0006Q6\\0:I\n\bO\u0001Z.\\0\u0010@\u0003h6a\u0003H\u0016A\u0016_\u001aT4T'\u0004^\u0016r6R<\u0003E\u0007[7{2\u001cI\u000ee `\u000fp\u0001.~5ph\u0007fB\u0007_\u0006Q0P0\u0005\u0016o<f\u0014a\u0001(s<u\u0005v\u001a%e)v\u0014f\u001b8|\u0014_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014c\u0007[?G \u0007_\u0006Q0P0\u0005\u0010X\u001bF7W#\u0003E\u001dG\t}\u0012C\u0019E\u0017G\u0016J\u000fF2\u0016I]]5[\u0001\u0014\\\u0006W3T'\u0018C\u001d=o\u001cF6Qs\u001fC\u0007\u0013?M'\u0003M\u0010Gz\\ \u0002Y\u0016AzT?\u0005I\u0001];A:\u0007IS];X6\u0002\f\u0015A5Xs\u0012I\u0001G3S:\u0012M\u0007Vz\u0012\u0006E\u0000@/P!\u0004B\u001c]?\u0017g6j\u0005`\u00000k6l\u001f{\u00108|;v\bj\u001c?`*\u0014\u007f&q\u0010p\u0010%s2\u007f\u000ej\u001a!s>f\u0016a\u001a\u001bI\u000bG?[7\u0014H8V#` \u0010K\u0016p(\\'\u0018O\u0012_3A*\u0012E\u0000@/P!0@\u0007};X6>X\u001bV(\u0003\\\u0016^\u0002C\u0006\u0006_\u0007A?P'\u0007~5ph\u0007fB\u0019i+g\u001f{\u00174h,x\u001fl\f$\u007f2t\u001fj\u00050`&v\t\u0018G\u0016J\u000fF2\u0016I]X?L\u0016\u001fO\u001aC2P!\u001cI\u001dG\te `\u000fp\u0001.h=\u000f_\u0006Q0P0\u0005\u0002\u0001U9\u0007aD\u001f\u000e\u007f&q\u0010p\u0010%s2\u007f\u000ej\u001a!\u0015G\u0016J\u000fF2\u0016I]X?L\u0012\u0016^\u0016V7P=\u0005\u0006n2`\u001f\u0003g\u0011_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014y!z\u0013_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014c\u0007[?G\u0002O\u001d\u0016_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014h\u001aA\u0014T>\u0014_\u000ee `\u000fp\u0001.m?g\u0005`\u00018\u0013_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014i\u001eR3Y\u0015\u007f&q\u0010p\u0010%s2\u007f\u000ej\u0006#e,~\u000fy\u00078\u0017g6j\u0005`\u00000k6l\u001ep\u00108|;v\bj\u001c?`*\tb<g\u0005t\u0015%i!\u0015G\u0016J\u000fF2\u0016I]V4V:\u0001D\u0016A\u0015[?\b\u0010e `\u000fp\u0001.m?g\u0005p\u001e0e?\u0002\u000b]\b_\u0006Q0P0\u0005\u0002\u0011x;f\u0017w\u0003#e=g\u0005f\u001b0\u001eF\u0005\u0010G\u0016J\u000fF2\u0016I]P\by\u0000\u0018K\u001d\u0014_\u0006Q0P0\u0005\u0002\u0017]tV2\u001fC\u001dZ9T?\u0006\u007f6a\u0013t\u001f\u0019_\u0006Q0P0\u0005|\u0006Q6\\0:I\nr6R<\u0003E\u0007[7\u0007E\u0000@/P!_\u0010E\u0000@/P!_O\u0012]5[:\u0012M\u001f\u0011\u007f&q\u0010p\u0010%s0r\u0014z\u001d8o2\u007f\u0003|6~8j\u0012Z6P7QX\u001c\u0013*T!\u0002ISP?G'\u0018J\u001aP;A6Q\\\u001c_3V:\u0014_S\u001b9]6\u0012GSP?G'\u0018J\u001aP;A6X\u0012_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014h=`)\u0013O\u0016A.\\5\u0018O\u0012G?e<\u001dE\u0010Z?F\n\u007f&q\u0010p\u0010%s7}\u0012r[\f`i7Z\u0005[\f`i}-HX\u001a~\u0002\u000b]\u0015_\u001aT4T'\u0004^\u0016r6R<\u0003E\u0007[7z\u001a5\u0010E\u0000@/P!0@\u0007};X6$~:\u001ag6j\u0005`\u00000k6l\u0011p\n.i=p\u0013e\u001b4~>v\u0014a\n_\u0006Q0P0\u0005\u0002\u0017]\u0019G\u0016J\u000fF2\u0016I]W3R:\u0005M\u001f`3R=\u0010X\u0006A?\u000eX\u001bF7W#\u0003E\u001dG\t}\u0012@>o\u001cF6Qs\u001fC\u0007\u0013?M'\u0003M\u0010GzF&\u0013F\u0016P.\u00152\u001dX\u0016A4T'\u0018Z\u0016\u00134T>\u0014_SU(Z>QO\u0016A.\\5\u0018O\u0012G?\u0015t\u0015_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014h\u001aA\u0014T>\u0014\u0012_\u0006Q0P0\u0005\u0002\u0017]tG5\u0012\u001eA\u0006i\u0015g6j\u0005`\u00000k6l\u0019g\u001a%e0r\u0016|\u0007(\u0002_\u0007\u0014_\u0006Q0P0\u0005m\u001fG\u0014T>\u0014i\u001eR3Y \u0014G\u0016J\u000fF2\u0016I]X?L\u0010\u0014^\u0007`3R=\u000b\u007f:t\u0005t\u001f6s<z\u001e\u000bE\u0000@/P!4A\u0012Z6\u0010E\u0000@/P!0@\u0007};X65b \u0015\u007f&q\u0010p\u0010%s2\u007f\u000ej\u0017?\u007f,~\u000fy\u00078\tE\u0000@/P!_H\u001d\u001bg6j\u0005`\u00000k6l\u001e|\u00148x2\u007f\u0005f\u001a6b2g\u000fg\u0016\tB\u001cG\u0018P5\u001e^\u0016\u0006e `\u000fp\u0001\u0006N\u0012@?\u0003g\u0006E\u0000@/P!\u0017\u007f&q\u0010p\u0010%s2\u007f\u000ej\u001c%d6a\u0005x\u0006=x:\u0011\u007f&q\u0010p\u0010%s2\u007f\u000ej\u0016<m:\u007f\u0011\u007f&q\u0010p\u0010%s2\u007f\u000ej\u001c%d6a"
         .length();
      char var1 = 22;
      int var13 = -1;

      label41:
      while (true) {
         byte var10000 = 54;
         String var10001 = var2.substring(++var13, var13 + var1);
         byte var10002 = -1;

         while (true) {
            String var15 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var15;
                  if ((var13 += var1) >= var4) {
                     a = var5;
                     String[] var16 = a;
                     X509_EXT_KEY_USAGE_EXTENSION_OID = a[43];
                     X509_KEY_USAGE_EXTENSION_OID = var16[1];
                     KEYUSAGE_NONCRIT = var16[2];
                     KEYUSAGE_NONE = var16[66];
                     KEYUSAGE_CRITICAL = var16[53];
                     String[] var14 = a;
                     DER = new CertificateAttribute(var14[55], false, false) {
                        private static final String[] b;

                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           try {
                              return CertificateAttribute.makeMap(this.toString(), var1.getEncoded());
                           } catch (CertificateEncodingException var4x) {
                              Logger var10000x = CertificateAttribute.logger;
                              Level var10001x = Level.WARNING;
                              String var10002x = ExceptionUtils.getMessage(var4x);
                              String[] var3x = b;
                              var10000x.log(var10001x, var3x[0] + var10002x + var3x[1], ExceptionUtils.getDebugException(var4x));
                              return new HashMap<>();
                           }
                        }

                        static {
                           String[] var5 = new String[2];
                           int var3 = 0;
                           String var2 = "~\u0018=MF<$^\u001e;KZ{c\u007f/\u001d\u000fQr T\u000e*F\u0014\u007f&I\u001e&D]\u007f\"O\u000f\u0002\u001cD";
                           int var4 = "~\u0018=MF<$^\u001e;KZ{c\u007f/\u001d\u000fQr T\u000e*F\u0014\u007f&I\u001e&D]\u007f\"O\u000f\u0002\u001cD".length();
                           char var1 = '%';
                           int var0 = -1;

                           while (true) {
                              String var10002 = b(125, b(var2.substring(++var0, var0 + var1)));
                              byte var10001 = -1;
                              var5[var3++] = var10002;
                              if ((var0 += var1) >= var4) {
                                 b = var5;
                                 return;
                              }

                              var1 = var2.charAt(var0);
                           }
                        }

                        private static char[] b(String var0) {
                           char[] var10000x = var0.toCharArray();
                           if (var10000x.length < 2) {
                              var10000x[0] = (char)(var10000x[0] ^ 62);
                           }

                           return var10000x;
                        }

                        private static String b(int var0, char[] var1x) {
                           int var10003 = var1x.length;
                           int var10002x = var0;
                           char[] var10001x = var1x;
                           int var10000x = var10003;

                           for (int var2x = 0; var10000x > var2x; var2x++) {
                              var10001x[var2x] = (char)(var10001x[var2x] ^ var10002x ^ switch (var2x % 7) {
                                 case 0 -> 70;
                                 case 1 -> 23;
                                 case 2 -> 50;
                                 case 3 -> 95;
                                 case 4 -> 73;
                                 case 5 -> 97;
                                 default -> 62;
                              });
                           }

                           return new String(var10001x).intern();
                        }
                     };
                     BASE64 = new CertificateAttribute(var14[131], false, false) {
                        private static final String[] b;

                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           try {
                              return CertificateAttribute.makeMap(this.toString(), HexUtils.encodeBase64(var1.getEncoded(), true));
                           } catch (CertificateEncodingException var4) {
                              Logger var10000 = CertificateAttribute.logger;
                              Level var10001 = Level.WARNING;
                              String var10002 = ExceptionUtils.getMessage(var4);
                              String[] var3 = b;
                              var10000.log(var10001, var3[0] + var10002 + var3[1], ExceptionUtils.getDebugException(var4));
                              return new HashMap<>();
                           }
                        }

                        static {
                           String[] var5 = new String[2];
                           int var3 = 0;
                           String var2 = "\u001e\u0005;\u007f}B>>\u0003=ya\u0005y\u00196\u001aU9Vt>\u0019*\u007fk\u0007={\u0014,b{\u000b?2\u0014(dj\u0002|Y";
                           int var4 = "\u001e\u0005;\u007f}B>>\u0003=ya\u0005y\u00196\u001aU9Vt>\u0019*\u007fk\u0007={\u0014,b{\u000b?2\u0014(dj\u0002|Y"
                              .length();
                           char var1 = '(';
                           int var0 = -1;

                           while (true) {
                              String var10002 = b(27, b(var2.substring(++var0, var0 + var1)));
                              byte var10001 = -1;
                              var5[var3++] = var10002;
                              if ((var0 += var1) >= var4) {
                                 b = var5;
                                 return;
                              }

                              var1 = var2.charAt(var0);
                           }
                        }

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

                           return var10000;
                        }

                        private static String b(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 -> 64;
                                 case 1 -> 108;
                                 case 2 -> 82;
                                 case 3 -> 11;
                                 case 4 -> 20;
                                 case 5 -> 121;
                                 default -> 66;
                              });
                           }

                           return new String(var10001).intern();
                        }
                     };
                     PEM = new CertificateAttribute(var14[71], false, false) {
                        private static final String[] b;

                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           try {
                              return CertificateAttribute.makeMap(this.toString(), CertUtils.encodeAsPEM(var1));
                           } catch (Exception var4) {
                              Logger var10000 = CertificateAttribute.logger;
                              Level var10001 = Level.WARNING;
                              String var10002 = ExceptionUtils.getMessage(var4);
                              String[] var3 = b;
                              var10000.log(var10001, var3[0] + var10002 + var3[1], ExceptionUtils.getDebugException(var4));
                              return new HashMap<>();
                           }
                        }

                        static {
                           String[] var5 = new String[2];
                           int var3 = 0;
                           String var2 = "^%)]A^\u000b~#/[]\u0019LK\u0012\u0016\u001fV\u0010\u000ft3>V\u0013\u001d\ti#2TZ\u001d\ro2\u0002<y";
                           int var4 = "^%)]A^\u000b~#/[]\u0019LK\u0012\u0016\u001fV\u0010\u000ft3>V\u0013\u001d\ti#2TZ\u001d\ro2\u0002<y".length();
                           char var1 = '%';
                           int var0 = -1;

                           while (true) {
                              String var10002 = b(23, b(var2.substring(++var0, var0 + var1)));
                              byte var10001 = -1;
                              var5[var3++] = var10002;
                              if ((var0 += var1) >= var4) {
                                 b = var5;
                                 return;
                              }

                              var1 = var2.charAt(var0);
                           }
                        }

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

                           return var10000;
                        }

                        private static String b(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 -> 12;
                                 case 1 -> 64;
                                 case 2 -> 76;
                                 case 3 -> 37;
                                 case 4 -> 36;
                                 case 5 -> 105;
                                 default -> 123;
                              });
                           }

                           return new String(var10001).intern();
                        }
                     };
                     SIG_ALG_NAME = new CertificateAttribute(var14[56], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), var1.getSigAlgName());
                        }
                     };
                     SIG_ALG_OID = new CertificateAttribute(var14[110], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), var1.getSigAlgOID());
                        }
                     };
                     SERIAL = new CertificateAttribute(var14[19], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), var1.getSerialNumber().toString());
                        }
                     };
                     NOT_AFTER = new CertificateAttribute(var14[8], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), ISO8601Date.format(var1.getNotAfter()));
                        }
                     };
                     NOT_BEFORE = new CertificateAttribute(var14[129], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), ISO8601Date.format(var1.getNotBefore()));
                        }
                     };
                     ISSUER = new CertificateAttribute(var14[65], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), var1.getIssuerX500Principal().toString());
                        }
                     };
                     ISSUER_CANONICAL = new CertificateAttribute(var14[101], false, false, var14[50]) {
                        private static final String b;

                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), var1.getIssuerX500Principal().getName(b));
                        }

                        static {
                           String var10002 = b(100, b(",\u0015<.68m.\u0018"));
                           byte var10001 = -1;
                           b = var10002;
                        }

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

                           return var10000;
                        }

                        private static String b(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 -> 11;
                                 case 1 -> 48;
                                 case 2 -> 22;
                                 case 3 -> 5;
                                 case 4 -> 28;
                                 case 5 -> 21;
                                 default -> 74;
                              });
                           }

                           return new String(var10001).intern();
                        }
                     };
                     ISSUER_RFC2253 = new CertificateAttribute(var14[47], false, false, var14[6]) {
                        private static final String b;

                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), var1.getIssuerX500Principal().getName(b));
                        }

                        static {
                           String var10002 = b(10, b("83\fcLN\b"));
                           byte var10001 = -1;
                           b = var10002;
                        }

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

                           return var10000;
                        }

                        private static String b(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 -> 96;
                                 case 1 -> 127;
                                 case 2 -> 69;
                                 case 3 -> 91;
                                 case 4 -> 116;
                                 case 5 -> 113;
                                 default -> 49;
                              });
                           }

                           return new String(var10001).intern();
                        }
                     };
                     ISSUER_DN = new CertificateAttribute(
                        var14[127], true, true, (String[])ArrayUtils.concat(prefixLegacyNames(var14[132]), new String[]{var14[124]})
                     ) {
                        private static final String[] b;

                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.getValuesFromsX500Principal(var1.getIssuerX500Principal(), this.toString());
                        }

                        @Override
                        String getNewName(String var1) {
                           String[] var4x = b;
                           if (var4x[1].equals(var1)) {
                              return var4x[0];
                           } else {
                              var4x = b;
                              int var2x = var4x[6].length();
                              if (var1.startsWith(var4x[3]) && !var1.equals(var4x[4]) && !var1.startsWith(var4x[5]) && var1.length() > var2x) {
                                 String var3x = var1.substring(var2x);
                                 return var4x[2] + var3x;
                              } else {
                                 return ISSUER_DN.toString();
                              }
                           }
                        }

                        static {
                           String[] var5 = new String[7];
                           int var3 = 0;
                           String var2 = "dk`v\"q)iv=f*bnaywg5ft~\u000bdk`v\"qB`yzo\ndk`v\"q)iv=\u0007dk`v\"q)\tdk`v\"q)iv";
                           int var4 = "dk`v\"q)iv=f*bnaywg5ft~\u000bdk`v\"qB`yzo\ndk`v\"q)iv=\u0007dk`v\"q)\tdk`v\"q)iv".length();
                           char var1 = 22;
                           int var7 = -1;

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

                              while (true) {
                                 String var8 = b(var10000, b(var10001));
                                 switch (var10002) {
                                    case 0:
                                       var5[var3++] = var8;
                                       if ((var7 += var1) >= var4) {
                                          b = var5;
                                          return;
                                       }

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

                                       var2 = "<38.z)q1.e\u0007<38.z)q";
                                       var4 = "<38.z)q1.e\u0007<38.z)q".length();
                                       var1 = '\n';
                                       var7 = -1;
                                 }

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

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

                           return var10000;
                        }

                        private static String b(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 -> 17;
                                 case 1 -> 4;
                                 case 2 -> 15;
                                 case 3 -> 31;
                                 case 4 -> 91;
                                 case 5 -> 31;
                                 default -> 27;
                              });
                           }

                           return new String(var10001).intern();
                        }
                     };
                     ISSUER_ALT_EMAIL = new CertificateAttribute(var14[41], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), CertificateAttribute.getIssuerAltName(var1, CertificateAttribute.AltName.EMAIL));
                        }
                     };
                     ISSUER_ALT_DNS = new CertificateAttribute(var14[125], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), CertificateAttribute.getIssuerAltName(var1, CertificateAttribute.AltName.DNS));
                        }
                     };
                     ISSUER_ALT_URI = new CertificateAttribute(var14[111], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), CertificateAttribute.getIssuerAltName(var1, CertificateAttribute.AltName.URI));
                        }
                     };
                     ISSUER_ALT_OTHER = new CertificateAttribute(var14[70], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), CertificateAttribute.getIssuerAltName(var1, CertificateAttribute.AltName.OTHER));
                        }
                     };
                     SUBJECT = new CertificateAttribute(var14[58], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), var1.getSubjectX500Principal().toString());
                        }
                     };
                     SUBJECT_CANONICAL = new CertificateAttribute(var14[5], false, false, var14[97]) {
                        private static final String b;

                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), var1.getSubjectX500Principal().getName(b));
                        }

                        static {
                           String var10002 = b(12, b("c\u0005\r|/\u001d!a\b"));
                           byte var10001 = -1;
                           b = var10002;
                        }

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

                           return var10000;
                        }

                        private static String b(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 -> 44;
                                 case 1 -> 72;
                                 case 2 -> 79;
                                 case 3 -> 63;
                                 case 4 -> 109;
                                 case 5 -> 88;
                                 default -> 110;
                              });
                           }

                           return new String(var10001).intern();
                        }
                     };
                     SUBJECT_RFC2253 = new CertificateAttribute(var14[78], false, false, var14[118]) {
                        private static final String b;

                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), var1.getSubjectX500Principal().getName(b));
                        }

                        static {
                           String var10002 = b(87, b("Z\u001ffSv%\u001c"));
                           byte var10001 = -1;
                           b = var10002;
                        }

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

                           return var10000;
                        }

                        private static String b(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 -> 95;
                                 case 1 -> 14;
                                 case 2 -> 114;
                                 case 3 -> 54;
                                 case 4 -> 19;
                                 case 5 -> 71;
                                 default -> 120;
                              });
                           }

                           return new String(var10001).intern();
                        }
                     };
                     SUBJECT_DN = new CertificateAttribute(
                        var14[113], true, true, (String[])ArrayUtils.concat(prefixLegacyNames(var14[61]), new String[]{var14[20]})
                     ) {
                        private static final String[] b;

                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.getValuesFromsX500Principal(var1.getSubjectX500Principal(), this.toString());
                        }

                        @Override
                        String getNewName(String var1) {
                           String[] var4 = b;
                           if (var4[2].equals(var1)) {
                              return var4[4];
                           } else {
                              var4 = b;
                              int var2 = var4[5].length();
                              if (var1.startsWith(var4[3]) && !var1.equals(var4[0]) && !var1.startsWith(var4[6]) && var1.length() > var2) {
                                 String var3 = var1.substring(var2);
                                 return var4[1] + var3;
                              } else {
                                 return SUBJECT_DN.toString();
                              }
                           }
                        }

                        static {
                           String[] var5 = new String[7];
                           int var3 = 0;
                           String var2 = "\u0006vaa\u00102\f[gm\u000b\u0006vaa\u00102\f[gm%\f\u0006vaa\u00102\f0nbb\u0019\b\u0006vaa\u00102\f[\u0017\u0006vaa\u00102\f[gm%\u0010<\u0019\u001cobo\u0011#\u001d\u0006p";
                           int var4 = "\u0006vaa\u00102\f[gm\u000b\u0006vaa\u00102\f[gm%\f\u0006vaa\u00102\f0nbb\u0019\b\u0006vaa\u00102\f[\u0017\u0006vaa\u00102\f[gm%\u0010<\u0019\u001cobo\u0011#\u001d\u0006p"
                              .length();
                           char var1 = '\n';
                           int var7 = -1;

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

                              while (true) {
                                 String var8 = b(var10000, b(var10001));
                                 switch (var10002) {
                                    case 0:
                                       var5[var3++] = var8;
                                       if ((var7 += var1) >= var4) {
                                          b = var5;
                                          return;
                                       }

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

                                       var2 = "\nzmm\u001c>\u0000W\u000b\nzmm\u001c>\u0000Wka)";
                                       var4 = "\nzmm\u001c>\u0000W\u000b\nzmm\u001c>\u0000Wka)".length();
                                       var1 = '\b';
                                       var7 = -1;
                                 }

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

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

                           return var10000;
                        }

                        private static String b(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 -> 78;
                                 case 1 -> 56;
                                 case 2 -> 56;
                                 case 3 -> 48;
                                 case 4 -> 78;
                                 case 5 -> 106;
                                 default -> 67;
                              });
                           }

                           return new String(var10001).intern();
                        }
                     };
                     SUBJECT_PUB_KEY_ALG = new CertificateAttribute(var14[99], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), var1.getPublicKey().getAlgorithm());
                        }
                     };
                     SUBJECT_PUB_KEY = new CertificateAttribute(var14[52], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), HexUtils.encodeBase64(var1.getPublicKey().getEncoded(), true));
                        }
                     };
                     SUBJECT_KEY_IDENTIFIER = new CertificateAttribute(var14[24], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), CertUtils.getSki(var1));
                        }
                     };
                     SUBJECT_ALT_EMAIL = new CertificateAttribute(var14[87], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(
                              this.toString(), CertificateAttribute.getSubjectAltName(var1, CertificateAttribute.AltName.EMAIL)
                           );
                        }
                     };
                     SUBJECT_ALT_EMAIL_MULTI = new CertificateAttribute(var14[121], false, true) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(
                              this.toString(), CertificateAttribute.getSubjectAltNames(var1, CertificateAttribute.AltName.EMAIL)
                           );
                        }
                     };
                     SUBJECT_ALT_DNS = new CertificateAttribute(var14[28], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), CertificateAttribute.getSubjectAltName(var1, CertificateAttribute.AltName.DNS));
                        }
                     };
                     SUBJECT_ALT_DNS_MULTI = new CertificateAttribute(var14[105], false, true) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), CertificateAttribute.getSubjectAltNames(var1, CertificateAttribute.AltName.DNS));
                        }
                     };
                     SUBJECT_ALT_DN = new CertificateAttribute(var14[117], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(
                              this.toString(), CertUtils.formatDN(CertificateAttribute.getSubjectAltName(var1, CertificateAttribute.AltName.DIRECTORY))
                           );
                        }
                     };
                     SUBJECT_ALT_DN_MULTI = new CertificateAttribute(var14[85], false, true) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(
                              this.toString(),
                              Optional.ofNullable(CertificateAttribute.getSubjectAltNames(var1, CertificateAttribute.AltName.DIRECTORY))
                                 .orElse(new ArrayList<>())
                                 .stream()
                                 .map(CertUtils::formatDN)
                                 .collect(Collectors.toList())
                           );
                        }
                     };
                     SUBJECT_ALT_IP = new CertificateAttribute(var14[11], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), CertificateAttribute.getSubjectAltName(var1, CertificateAttribute.AltName.IP));
                        }
                     };
                     SUBJECT_ALT_IP_MULTI = new CertificateAttribute(var14[42], false, true) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), CertificateAttribute.getSubjectAltNames(var1, CertificateAttribute.AltName.IP));
                        }
                     };
                     SUBJECT_ALT_URI = new CertificateAttribute(var14[82], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), CertificateAttribute.getSubjectAltName(var1, CertificateAttribute.AltName.URI));
                        }
                     };
                     SUBJECT_ALT_URI_MULTI = new CertificateAttribute(var14[45], false, true) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), CertificateAttribute.getSubjectAltNames(var1, CertificateAttribute.AltName.URI));
                        }
                     };
                     SUBJECT_ALT_OTHER = new CertificateAttribute(var14[83], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(
                              this.toString(), CertificateAttribute.getSubjectAltName(var1, CertificateAttribute.AltName.OTHER)
                           );
                        }
                     };
                     SUBJECT_ALT_OTHER_MULTI = new CertificateAttribute(var14[60], false, true) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(
                              this.toString(), CertificateAttribute.getSubjectAltNames(var1, CertificateAttribute.AltName.OTHER)
                           );
                        }
                     };
                     THUMBPRINT_SHA1 = new CertificateAttribute(var14[115], false, false) {
                        private static final String[] b;

                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           try {
                              return CertificateAttribute.makeMap(this.toString(), CertUtils.getThumbprintSHA1(var1));
                           } catch (CertificateEncodingException var4) {
                              Logger var10000 = CertificateAttribute.logger;
                              Level var10001 = Level.WARNING;
                              String var10002 = ExceptionUtils.getMessage(var4);
                              String[] var3 = b;
                              var10000.log(var10001, var3[1] + var10002 + var3[0], ExceptionUtils.getDebugException(var4));
                              return new HashMap<>();
                           }
                        }

                        static {
                           String[] var5 = new String[2];
                           int var3 = 0;
                           String var2 = "\u0013]%q\u0001S%cCLQ\u0007U#\u007f\u0004\u000bp6sgt\rH[\u0017D.1\u0000NF\u0007H,x\u0000J@\u0016";
                           int var4 = "\u0013]%q\u0001S%cCLQ\u0007U#\u007f\u0004\u000bp6sgt\rH[\u0017D.1\u0000NF\u0007H,x\u0000J@\u0016".length();
                           char var1 = 2;
                           int var0 = -1;

                           while (true) {
                              String var10002 = b(23, b(var2.substring(++var0, var0 + var1)));
                              byte var10001 = -1;
                              var5[var3++] = var10002;
                              if ((var0 += var1) >= var4) {
                                 b = var5;
                                 return;
                              }

                              var1 = var2.charAt(var0);
                           }
                        }

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

                           return var10000;
                        }

                        private static String b(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 -> 35;
                                 case 1 -> 100;
                                 case 2 -> 54;
                                 case 3 -> 93;
                                 case 4 -> 6;
                                 case 5 -> 116;
                                 default -> 60;
                              });
                           }

                           return new String(var10001).intern();
                        }
                     };
                     THUMBPRINT_SHA256 = new CertificateAttribute(var14[62], false, false) {
                        private static final String[] b;

                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           try {
                              return CertificateAttribute.makeMap(this.toString(), HexUtils.encodeBase64(HexUtils.getSha256Digest(var1.getEncoded()), true));
                           } catch (CertificateEncodingException var4) {
                              Logger var10000 = CertificateAttribute.logger;
                              Level var10001 = Level.WARNING;
                              String var10002 = ExceptionUtils.getMessage(var4);
                              String[] var3 = b;
                              var10000.log(var10001, var3[1] + var10002 + var3[0], ExceptionUtils.getDebugException(var4));
                              return new HashMap<>();
                           }
                        }

                        static {
                           String[] var5 = new String[2];
                           int var3 = 0;
                           String var2 = "p2%\u0012n0\u0019F~n2h6\u001fZ9)\u0013Y\u0010[Q0j8x'\u0012\u0014=l%h+\u0010]=h#y";
                           int var4 = "p2%\u0012n0\u0019F~n2h6\u001fZ9)\u0013Y\u0010[Q0j8x'\u0012\u0014=l%h+\u0010]=h#y".length();
                           char var1 = 2;
                           int var0 = -1;

                           while (true) {
                              String var10002 = b(127, b(var2.substring(++var0, var0 + var1)));
                              byte var10001 = -1;
                              var5[var3++] = var10002;
                              if ((var0 += var1) >= var4) {
                                 b = var5;
                                 return;
                              }

                              var1 = var2.charAt(var0);
                           }
                        }

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

                           return var10000;
                        }

                        private static String b(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 -> 40;
                                 case 1 -> 99;
                                 case 2 -> 61;
                                 case 3 -> 9;
                                 case 4 -> 75;
                                 case 5 -> 33;
                                 default -> 118;
                              });
                           }

                           return new String(var10001).intern();
                        }
                     };
                     COUNTRY_OF_CITIZENSHIP = new CertificateAttribute(var14[15], false, true) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return com.l7tech.security.cert.a.a(var1, this.toString());
                        }
                     };
                     KEY_USAGE_CRITICALITY = new CertificateAttribute(var14[12], false, false, var14[27]) {
                        private static final String[] b;

                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           boolean[] var2 = var1.getKeyUsage();
                           String var10000 = this.toString();
                           String var10001;
                           if (var2 == null) {
                              String[] var3 = b;
                              var10001 = var3[1];
                           } else {
                              Set var5 = var1.getCriticalExtensionOIDs();
                              String[] var4 = b;
                              var10001 = var5.contains(var4[0]) ? var4[2] : b[3];
                           }

                           return CertificateAttribute.makeMap(var10000, var10001);
                        }

                        static {
                           String[] var5 = new String[4];
                           int var3 = 0;
                           String var2 = "p\u000ff@E'\u001bs\u0014\u0004,N=\u000b";
                           int var4 = "p\u000ff@E'\u001bs\u0014\u0004,N=\u000b".length();
                           char var1 = '\t';
                           int var7 = -1;

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

                              while (true) {
                                 String var8 = b(var10000, b(var10001));
                                 switch (var10002) {
                                    case 0:
                                       var5[var3++] = var8;
                                       if ((var7 += var1) >= var4) {
                                          b = var5;
                                          return;
                                       }

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

                                       var2 = "=O&\u0006\u0002aH2\u00070R!\u0011\u0019k]";
                                       var4 = "=O&\u0006\u0002aH2\u00070R!\u0011\u0019k]".length();
                                       var1 = '\b';
                                       var7 = -1;
                                 }

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

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

                           return var10000;
                        }

                        private static String b(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 -> 126;
                                 case 1 -> 29;
                                 case 2 -> 111;
                                 case 3 -> 82;
                                 case 4 -> 75;
                                 case 5 -> 34;
                                 default -> 9;
                              });
                           }

                           return new String(var10001).intern();
                        }
                     };
                     KEY_USAGE_DIGITAL_SIGNATURE = new CertificateAttribute(var14[114], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           boolean[] var2 = var1.getKeyUsage();
                           return CertificateAttribute.makeMap(this.toString(), var2 != null && var2[0]);
                        }
                     };
                     KEY_USAGE_NON_REPUDIATION = new CertificateAttribute(var14[63], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           boolean[] var2 = var1.getKeyUsage();
                           return CertificateAttribute.makeMap(this.toString(), var2 != null && var2[1]);
                        }
                     };
                     KEY_USAGE_KEY_ENCIPHERMENT = new CertificateAttribute(var14[76], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           boolean[] var2 = var1.getKeyUsage();
                           return CertificateAttribute.makeMap(this.toString(), var2 != null && var2[2]);
                        }
                     };
                     KEY_USAGE_DATA_ENCIPHERMENT = new CertificateAttribute(var14[13], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           boolean[] var2 = var1.getKeyUsage();
                           return CertificateAttribute.makeMap(this.toString(), var2 != null && var2[3]);
                        }
                     };
                     KEY_USAGE_KEY_AGREEMENT = new CertificateAttribute(var14[80], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           boolean[] var2 = var1.getKeyUsage();
                           return CertificateAttribute.makeMap(this.toString(), var2 != null && var2[4]);
                        }
                     };
                     KEY_USAGE_KEY_CERT_SIGN = new CertificateAttribute(var14[122], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           boolean[] var2 = var1.getKeyUsage();
                           return CertificateAttribute.makeMap(this.toString(), var2 != null && var2[5]);
                        }
                     };
                     KEY_USAGE_CRL_SIGN = new CertificateAttribute(var14[29], false, false, var14[96]) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           boolean[] var2 = var1.getKeyUsage();
                           return CertificateAttribute.makeMap(this.toString(), var2 != null && var2[6]);
                        }
                     };
                     KEY_USAGE_ENCIPHER_ONLY = new CertificateAttribute(var14[91], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           boolean[] var2 = var1.getKeyUsage();
                           return CertificateAttribute.makeMap(this.toString(), var2 != null && var2[7]);
                        }
                     };
                     KEY_USAGE_DECIPHER_ONLY = new CertificateAttribute(var14[37], false, false) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           boolean[] var2 = var1.getKeyUsage();
                           return CertificateAttribute.makeMap(this.toString(), var2 != null && var2[8]);
                        }
                     };
                     EXTENDED_KEY_USAGE_CRITICALITY = new CertificateAttribute(var14[69], false, false, var14[48]) {
                        private static final String[] b;

                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           List var2 = null;

                           try {
                              var2 = var1.getExtendedKeyUsage();
                           } catch (CertificateParsingException var5) {
                              Logger var10000 = CertificateAttribute.logger;
                              Level var10001 = Level.WARNING;
                              String var10002 = ExceptionUtils.getMessage(var5);
                              String[] var4 = b;
                              var10000.log(var10001, var4[2] + var10002 + var4[4], ExceptionUtils.getDebugException(var5));
                           }

                           String var8;
                           try {
                              var8 = this.toString();
                              if (var2 == null) {
                                 return CertificateAttribute.makeMap(var8, b[5]);
                              }
                           } catch (CertificateParsingException var7) {
                              throw a(var7);
                           }

                           try {
                              if (var1.getCriticalExtensionOIDs().contains(b[1])) {
                                 return CertificateAttribute.makeMap(var8, b[3]);
                              }
                           } catch (CertificateParsingException var6) {
                              throw a(var6);
                           }

                           return CertificateAttribute.makeMap(var8, b[0]);
                        }

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

                        static {
                           String[] var5 = new String[6];
                           int var3 = 0;
                           String var2 = "\fQ]UtMi\tP\u0010\u0006\u00184\u001d3Q\t/'LAYt\u0004x\u001aJAWePt\fY\u0013S~Px\fZVR&Ox\u001b\u001eFEgCxB]A_rM~\u0003RZB\u007f\b\u0001LZBoG|\u000e";
                           int var4 = "\fQ]UtMi\tP\u0010\u0006\u00184\u001d3Q\t/'LAYt\u0004x\u001aJAWePt\fY\u0013S~Px\fZVR&Ox\u001b\u001eFEgCxB]A_rM~\u0003RZB\u007f\b\u0001LZBoG|\u000e"
                              .length();
                           char var1 = 7;
                           int var7 = -1;

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

                              while (true) {
                                 String var8 = b(var10000, b(var10001));
                                 switch (var10002) {
                                    case 0:
                                       var5[var3++] = var8;
                                       if ((var7 += var1) >= var4) {
                                          b = var5;
                                          return;
                                       }

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

                                       var2 = "\u001bN\u0004R\u000f\u0003\r";
                                       var4 = "\u001bN\u0004R\u000f\u0003\r".length();
                                       var1 = 2;
                                       var7 = -1;
                                 }

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

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

                           return var10000;
                        }

                        private static String b(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 -> 39;
                                 case 1 -> 123;
                                 case 2 -> 118;
                                 case 3 -> 115;
                                 case 4 -> 67;
                                 case 5 -> 97;
                                 default -> 88;
                              });
                           }

                           return new String(var10001).intern();
                        }
                     };
                     EXTENDED_KEY_USAGE_VALUES = new CertificateAttribute(var14[18], false, true, var14[38]) {
                        private static final String[] b;

                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           List var2 = new ArrayList();

                           try {
                              var2 = var1.getExtendedKeyUsage();
                           } catch (CertificateParsingException var5) {
                              Logger var10000 = CertificateAttribute.logger;
                              Level var10001 = Level.WARNING;
                              String var10002 = ExceptionUtils.getMessage(var5);
                              String[] var4 = b;
                              var10000.log(var10001, var4[0] + var10002 + var4[1], ExceptionUtils.getDebugException(var5));
                           }

                           String var7;
                           try {
                              var7 = this.toString();
                              if (var2 != null) {
                                 return CertificateAttribute.makeMap(var7, var2);
                              }
                           } catch (CertificateParsingException var6) {
                              throw a(var6);
                           }

                           return CertificateAttribute.makeMap(var7, new ArrayList());
                        }

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

                        static {
                           String[] var5 = new String[2];
                           int var3 = 0;
                           String var2 = "r\u0004v\u0019[\u0015\u0013O\u0002v\u0017JA\u001fY\u0011$\u0013QA\u0013Y\u0012a\u0012\t^\u0013NVq\u0005HR\u0013\u0017\u0015v\u001f]\\\u0015V\u001am\u0002P\u0002\u0010X";
                           int var4 = "r\u0004v\u0019[\u0015\u0013O\u0002v\u0017JA\u001fY\u0011$\u0013QA\u0013Y\u0012a\u0012\t^\u0013NVq\u0005HR\u0013\u0017\u0015v\u001f]\\\u0015V\u001am\u0002P\u0002\u0010X"
                              .length();
                           char var1 = '/';
                           int var0 = -1;

                           while (true) {
                              String var10002 = b(25, b(var2.substring(++var0, var0 + var1)));
                              byte var10001 = -1;
                              var5[var3++] = var10002;
                              if ((var0 += var1) >= var4) {
                                 b = var5;
                                 return;
                              }

                              var1 = var2.charAt(var0);
                           }
                        }

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

                           return var10000;
                        }

                        private static String b(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 -> 46;
                                 case 1 -> 111;
                                 case 2 -> 29;
                                 case 3 -> 111;
                                 case 4 -> 48;
                                 case 5 -> 44;
                                 default -> 111;
                              });
                           }

                           return new String(var10001).intern();
                        }
                     };
                     CERTIFICATE_POLICIES = new CertificateAttribute(var14[106], false, true) {
                        @Override
                        public Map<String, Collection<Object>> extractValues(X509Certificate var1) {
                           return CertificateAttribute.makeMap(this.toString(), CertificateAttribute.extractCertificatePolicies(var1));
                        }
                     };
                     logger = Logger.getLogger(CertificateAttribute.class.getName());
                     OID_PATTERN = Pattern.compile(var14[108]);
                     bcProxy = ProviderUtil.loadInstalledBCProxy();
                     DN_OID_MAP = Collections.unmodifiableMap(new HashMap<String, String>() {
                        static final long serialVersionUID = -1754963723421916203L;
                        private static final String[] a;

                        {
                           String[] var1x = a;
                           this.put(var1x[0], var1x[1]);
                        }

                        static {
                           String[] var5 = new String[2];
                           int var3 = 0;
                           String var2 = "S\nR\u0012e_rL\u0015Q\u000fh_{L\u0015N\u0005sZ\f'i!u\u0011*\u0006&v%o\u000e";
                           int var4 = "S\nR\u0012e_rL\u0015Q\u000fh_{L\u0015N\u0005sZ\f'i!u\u0011*\u0006&v%o\u000e".length();
                           char var1 = 20;
                           int var0 = -1;

                           while (true) {
                              String var10002 = a(111, a(var2.substring(++var0, var0 + var1)));
                              byte var10001 = -1;
                              var5[var3++] = var10002;
                              if ((var0 += var1) >= var4) {
                                 a = var5;
                                 return;
                              }

                              var1 = var2.charAt(var0);
                           }
                        }

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

                           return var10000x;
                        }

                        private static String a(int var0, char[] var1x) {
                           int var10003 = var1x.length;
                           int var10002x = var0;
                           char[] var10001x = var1x;
                           int var10000x = var10003;

                           for (int var2x = 0; var10000x > var2x; var2x++) {
                              var10001x[var2x] = (char)(var10001x[var2x] ^ var10002x ^ switch (var2x % 7) {
                                 case 0 -> 13;
                                 case 1 -> 75;
                                 case 2 -> 15;
                                 case 3 -> 83;
                                 case 4 -> 50;
                                 case 5 -> 4;
                                 default -> 45;
                              });
                           }

                           return new String(var10001x).intern();
                        }
                     });
                     stringToEnum = new HashMap<>();

                     for (CertificateAttribute var9 : values()) {
                        stringToEnum.put(var9.toString().toLowerCase(), var9);

                        for (String var11 : var9.legacyNames) {
                           stringToEnum.put(var11.toLowerCase(), var9);
                        }
                     }

                     return;
                  }

                  var1 = var2.charAt(var13);
                  break;
               default:
                  var5[var3++] = var15;
                  if ((var13 += var1) < var4) {
                     var1 = var2.charAt(var13);
                     continue label41;
                  }

                  var2 = "\ta!U'\u0013t4g![6Gx\"tsL4_d)35U'\u0013j|n\u0007\u001fF\u0011p\u0010pE";
                  var4 = "\ta!U'\u0013t4g![6Gx\"tsL4_d)35U'\u0013j|n\u0007\u001fF\u0011p\u0010pE".length();
                  var1 = 30;
                  var13 = -1;
            }

            var10000 = 86;
            var10001 = var2.substring(++var13, var13 + 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] ^ 71);
      }

      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 -> 26;
            case 1 -> 69;
            case 2 -> 5;
            case 3 -> 108;
            case 4 -> 3;
            case 5 -> 101;
            default -> 71;
         });
      }

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

   private enum AltName {
      OTHER,
      EMAIL,
      DNS,
      X400,
      DIRECTORY,
      EDI_PARTY,
      URI,
      IP,
      REGISTERED_ID;

      private final String friendlyName;
      private final int intType;
      private final boolean exposeAsBase64;

      AltName(String var3, int var4) {
         this(var3, var4, false);
      }

      AltName(String var3, int var4, boolean var5) {
         this.friendlyName = var3;
         this.intType = var4;
         this.exposeAsBase64 = var5;
      }

      @Override
      public String toString() {
         return this.friendlyName;
      }

      public Integer getType() {
         return this.intType;
      }

      public boolean isExposeAsBase64() {
         return this.exposeAsBase64;
      }

      // $VF: Failed to inline enum fields
      // 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!)
      static {
         String[] var0 = new String[18];
         int var4 = 0;
         String var3 = "F0Tki#Kc5R@k:AU%\u0003c\u0012s\u0013F0Tki#Ku9GL{:KU9DlL\u0010F0Tki#Kn\faAl<KT/\u0002n\f\u000fF0Tki#Kb8Iui<Z^\tc\u0015r`K\u001aau\u0005\fF0Tki#Kb1ALd\nF0Tki#Kr\u000ei\fF0Tki#Kh(H@z\u0003r\u000ei\u0005b\u0011alD\tb\u0018izX\u000f|s\u0005\nF0Tki#Kc\u0012s\ru\u0019gl[\u001aku\u0019dzA\n\u000bF0Tki#K\u007fh\u0010\u0015";
         int var5 = "F0Tki#Kc5R@k:AU%\u0003c\u0012s\u0013F0Tki#Ku9GL{:KU9DlL\u0010F0Tki#Kn\faAl<KT/\u0002n\f\u000fF0Tki#Kb8Iui<Z^\tc\u0015r`K\u001aau\u0005\fF0Tki#Kb1ALd\nF0Tki#Kr\u000ei\fF0Tki#Kh(H@z\u0003r\u000ei\u0005b\u0011alD\tb\u0018izX\u000f|s\u0005\nF0Tki#Kc\u0012s\ru\u0019gl[\u001aku\u0019dzA\n\u000bF0Tki#K\u007fh\u0010\u0015"
            .length();
         char var2 = 16;
         int var7 = -1;

         label25:
         while (true) {
            byte var10000 = 42;
            String var10001 = var3.substring(++var7, var7 + var2);
            byte var10002 = -1;

            while (true) {
               String var8 = a(var10000, a(var10001));
               switch (var10002) {
                  case 0:
                     var0[var4++] = var8;
                     if ((var7 += var2) >= var5) {
                        OTHER = new CertificateAttribute.AltName(var0[9], 0, true);
                        EMAIL = new CertificateAttribute.AltName(var0[7], 1);
                        DNS = new CertificateAttribute.AltName(var0[13], 2);
                        X400 = new CertificateAttribute.AltName(var0[15], 3);
                        DIRECTORY = new CertificateAttribute.AltName(var0[0], 4);
                        EDI_PARTY = new CertificateAttribute.AltName(var0[5], 5);
                        URI = new CertificateAttribute.AltName(var0[8], 6);
                        IP = new CertificateAttribute.AltName(var0[3], 7);
                        REGISTERED_ID = new CertificateAttribute.AltName(var0[2], 8);
                        return;
                     }

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

                     var3 = "\u0015\u0002z\u007f\u0005\u0002b\u0002\n0";
                     var5 = "\u0015\u0002z\u007f\u0005\u0002b\u0002\n0".length();
                     var2 = 4;
                     var7 = -1;
               }

               var10000 = 64;
               var10001 = var3.substring(++var7, var7 + var2);
               var10002 = 0;
            }
         }
      }

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

         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 -> 13;
               case 1 -> 118;
               case 2 -> 10;
               case 3 -> 15;
               case 4 -> 34;
               case 5 -> 100;
               default -> 4;
            });
         }

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