package com.l7tech.identity.fed;

import com.l7tech.identity.IdentityProviderConfig;
import com.l7tech.objectmodel.Goid;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Lob;
import jakarta.persistence.Table;
import jakarta.persistence.Transient;
import jakarta.xml.bind.annotation.XmlRootElement;
import org.hibernate.annotations.Proxy;

@XmlRootElement
@Entity
@Proxy(lazy = false)
@Table(name = "fed_group_virtual")
public class VirtualGroup extends FederatedGroup {
   private static final String PROP_SAML_EMAIL_PATTERN;
   private static final String PROP_X509_DN_PATTERN;
   private static final String PROP_USE_REGEX;
   static final long serialVersionUID = -6433045785895663279L;
   private static final String[] c;

   public VirtualGroup() {
      this(IdentityProviderConfig.DEFAULT_GOID, null);
   }

   public VirtualGroup(Goid var1, String var2) {
      super(var1, var2);
   }

   @Column(name = "saml_email_pattern", length = 128)
   public String getSamlEmailPattern() {
      return this.getProperty(c[0]);
   }

   public void setSamlEmailPattern(String var1) {
      this.setProperty(c[5], var1);
   }

   @Column(name = "x509_subject_dn_pattern", length = 255)
   public String getX509SubjectDnPattern() {
      return this.getProperty(c[2]);
   }

   public void setX509SubjectDnPattern(String var1) {
      this.setProperty(c[3], var1);
   }

   @Transient
   public Boolean isUseRegex() {
      return Boolean.valueOf(this.getProperty(c[4]));
   }

   public void setUseRegex(String var1) {
      this.setProperty(c[1], var1);
   }

   @Column(name = "properties", length = Integer.MAX_VALUE)
   @Lob
   @Override
   public synchronized String getXmlProperties() {
      return super.getXmlProperties();
   }

   @Override
   public boolean equals(Object var1) {
      if (this == var1) {
         return true;
      } else if (var1 == null || this.getClass() != var1.getClass()) {
         return false;
      } else if (!super.equals(var1)) {
         return false;
      } else {
         VirtualGroup var2 = (VirtualGroup)var1;
         String var3 = this.getSamlEmailPattern();
         String var4 = var2.getSamlEmailPattern();
         if (var3 != null ? var3.equals(var4) : var4 == null) {
            String var5 = this.getX509SubjectDnPattern();
            String var6 = var2.getX509SubjectDnPattern();
            return var5 != null ? var5.equals(var6) : var6 == null;
         } else {
            return false;
         }
      }
   }

   @Override
   public int hashCode() {
      int var1 = super.hashCode();
      String var2 = this.getSamlEmailPattern();
      var1 = 31 * var1 + (var2 != null ? var2.hashCode() : 0);
      String var3 = this.getX509SubjectDnPattern();
      return 31 * var1 + (var3 != null ? var3.hashCode() : 0);
   }

   static {
      String[] var5 = new String[6];
      int var3 = 0;
      String var2 = "<\u0012\u0019\u007f\u0013\u0007)&\u001f$r\"\u001e-=\u001d\b:\u0000\u0011A3\r-7\u00147FD*\u0005\u001f*%\u0016\u0017g\u0012\u0004\u0018.\u0007\u0000v$\u0004\u00147FD*\u0005\u001f*%\u0016\u0017g\u0012\u0004\u0018.\u0007\u0000v$\u0004";
      int var4 = "<\u0012\u0019\u007f\u0013\u0007)&\u001f$r\"\u001e-=\u001d\b:\u0000\u0011A3\r-7\u00147FD*\u0005\u001f*%\u0016\u0017g\u0012\u0004\u0018.\u0007\u0000v$\u0004\u00147FD*\u0005\u001f*%\u0016\u0017g\u0012\u0004\u0018.\u0007\u0000v$\u0004"
         .length();
      char var1 = 16;
      int var7 = -1;

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

         while (true) {
            String var13 = b(c(var10000));
            switch (var10001) {
               case 0:
                  var5[var3++] = var13;
                  if ((var7 += var1) >= var4) {
                     c = var5;
                     String[] var9 = c;
                     PROP_SAML_EMAIL_PATTERN = c[0];
                     PROP_USE_REGEX = var9[4];
                     PROP_X509_DN_PATTERN = var9[2];
                     return;
                  }

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

                  var2 = ":\u0000\u0011A3\r-7\u0010<\u0012\u0019\u007f\u0013\u0007)&\u001f$r\"\u001e-=\u001d";
                  var4 = ":\u0000\u0011A3\r-7\u0010<\u0012\u0019\u007f\u0013\u0007)&\u001f$r\"\u001e-=\u001d".length();
                  var1 = '\b';
                  var7 = -1;
            }

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

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

      return var10000;
   }

   private static String b(char[] var0) {
      int var10002 = var0.length;
      char[] var10001 = var0;
      int var10000 = var10002;

      for (int var1 = 0; var10000 > var1; var1++) {
         var10001[var1] = (char)(var10001[var1] ^ switch (var1 % 7) {
            case 0 -> 79;
            case 1 -> 115;
            case 2 -> 116;
            case 3 -> 19;
            case 4 -> 86;
            case 5 -> 106;
            default -> 72;
         });
      }

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