package com.l7tech.identity.fed;

import com.l7tech.identity.IdentityProviderConfig;
import com.l7tech.identity.PersistentGroup;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.migration.Migration;
import com.l7tech.objectmodel.migration.MigrationMappingSelection;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Inheritance;
import jakarta.persistence.InheritanceType;
import jakarta.persistence.Table;
import jakarta.xml.bind.annotation.XmlRootElement;
import java.util.Map;
import org.hibernate.annotations.Proxy;
import org.hibernate.annotations.Type;

@XmlRootElement
@Entity
@Proxy(lazy = false)
@Table(name = "fed_group")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class FederatedGroup extends PersistentGroup {
   static final long serialVersionUID = 7340633078557753716L;
   private static final String[] b;

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

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

   public FederatedGroup(Goid var1, String var2, Map<String, String> var3) {
      super(var1, var2, var3);
   }

   @Column(name = "provider_goid", nullable = false)
   @Type(type = "com.l7tech.server.util.GoidType")
   @Migration(
      mapName = MigrationMappingSelection.NONE,
      mapValue = MigrationMappingSelection.NONE,
      export = false,
      resolver = com.l7tech.objectmodel.migration.PropertyResolver.Type.ID_PROVIDER_CONFIG
   )
   @Override
   public Goid getProviderId() {
      return super.getProviderId();
   }

   @Override
   public String toString() {
      String var10000 = this._name;
      String var10001 = String.valueOf(this.getProviderId());
      String[] var1 = b;
      return var1[0] + var10000 + var1[1] + var10001;
   }

   static {
      String[] var5 = new String[2];
      int var3 = 0;
      String var2 = "\u001bN,\u00195J\u0019\u001dB)\u00190\u0019\b\u0016U(C S\u000b\u001dEoq<\u0019\b\n@5R=:\u001f\u0017T1\u0019St\u0003\u0019L$\n\rr(1E6\u000b\u0004\u001cD3~=@";
      int var4 = "\u001bN,\u00195J\u0019\u001dB)\u00190\u0019\b\u0016U(C S\u000b\u001dEoq<\u0019\b\n@5R=:\u001f\u0017T1\u0019St\u0003\u0019L$\n\rr(1E6\u000b\u0004\u001cD3~=@"
         .length();
      char var1 = '.';
      int var0 = -1;

      while (true) {
         String var10002 = a(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] ^ 109);
      }

      return var10000;
   }

   private static String a(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 -> 120;
            case 1 -> 33;
            case 2 -> 65;
            case 3 -> 55;
            case 4 -> 89;
            case 5 -> 125;
            default -> 109;
         });
      }

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