package com.l7tech.server.security;

import com.l7tech.common.password.IncorrectPasswordException;
import com.l7tech.common.password.PasswordHasher;
import com.l7tech.gateway.common.security.rbac.Role;
import com.l7tech.gateway.common.security.rbac.Role.Tag;
import com.l7tech.identity.IdentityProviderConfigManager;
import com.l7tech.identity.IdentityProviderPasswordPolicy;
import com.l7tech.identity.IdentityProviderPasswordPolicyManager;
import com.l7tech.identity.User;
import com.l7tech.identity.internal.InternalUser;
import com.l7tech.identity.internal.PasswordChangeRecord;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.InvalidPasswordException;
import com.l7tech.server.security.rbac.RoleManager;
import com.l7tech.server.util.PostStartupApplicationListener;
import com.l7tech.util.Charsets;
import com.l7tech.util.Config;
import com.l7tech.util.HexUtils;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.text.MessageFormat;
import java.util.Calendar;
import java.util.Collection;
import java.util.List;
import java.util.ListIterator;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ApplicationEvent;
import org.springframework.core.Ordered;

public class PasswordEnforcerManager implements PropertyChangeListener, ApplicationContextAware, PostStartupApplicationListener, Ordered {
   private static final Logger a;
   private final IdentityProviderPasswordPolicyManager b;
   private final Config c;
   private ApplicationContext d;
   private final RoleManager e;
   private final PasswordHasher f;
   private IdentityProviderPasswordPolicy g;
   private final IdentityProviderPasswordPolicy h;
   private final IdentityProviderPasswordPolicy i;
   private static final String[] j;

   public PasswordEnforcerManager(
      Config var1,
      IdentityProviderPasswordPolicyManager var2,
      RoleManager var3,
      PasswordHasher var4,
      IdentityProviderPasswordPolicy var5,
      IdentityProviderPasswordPolicy var6
   ) {
      this.b = var2;
      this.c = var1;
      this.e = var3;
      this.f = var4;
      this.h = var5;
      this.i = var6;
   }

   public void setApplicationContext(ApplicationContext var1) throws BeansException {
      try {
         if (this.d != null) {
            throw new IllegalStateException(j[15]);
         }
      } catch (BeansException var2) {
         throw a(var2);
      }

      this.d = var1;
      this.g = this.a();
   }

   @Override
   public void onApplicationEvent(ApplicationEvent param1) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: instanceof com/l7tech/server/event/system/ReadyForMessages
      // 04: ifeq 35
      // 07: aload 0
      // 08: aload 0
      // 09: getfield com/l7tech/server/security/PasswordEnforcerManager.c Lcom/l7tech/util/Config;
      // 0c: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // 0f: bipush 18
      // 11: aaload
      // 12: bipush 0
      // 13: invokeinterface com/l7tech/util/Config.getBooleanProperty (Ljava/lang/String;Z)Z 3
      // 18: ifne 2a
      // 1b: goto 22
      // 1e: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 21: athrow
      // 22: bipush 1
      // 23: goto 2b
      // 26: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 29: athrow
      // 2a: bipush 0
      // 2b: aload 0
      // 2c: getfield com/l7tech/server/security/PasswordEnforcerManager.g Lcom/l7tech/identity/IdentityProviderPasswordPolicy;
      // 2f: invokevirtual com/l7tech/server/security/PasswordEnforcerManager.a (ZLcom/l7tech/identity/IdentityProviderPasswordPolicy;)V
      // 32: goto 80
      // 35: aload 1
      // 36: instanceof com/l7tech/server/event/EntityClassEvent
      // 39: ifeq 80
      // 3c: aload 1
      // 3d: checkcast com/l7tech/server/event/EntityClassEvent
      // 40: astore 2
      // 41: ldc com/l7tech/identity/IdentityProviderPasswordPolicy
      // 43: aload 2
      // 44: invokevirtual com/l7tech/server/event/EntityClassEvent.getEntityClass ()Ljava/lang/Class;
      // 47: invokevirtual java/lang/Object.equals (Ljava/lang/Object;)Z
      // 4a: ifeq 80
      // 4d: aload 0
      // 4e: aload 0
      // 4f: invokevirtual com/l7tech/server/security/PasswordEnforcerManager.a ()Lcom/l7tech/identity/IdentityProviderPasswordPolicy;
      // 52: putfield com/l7tech/server/security/PasswordEnforcerManager.g Lcom/l7tech/identity/IdentityProviderPasswordPolicy;
      // 55: aload 0
      // 56: aload 0
      // 57: getfield com/l7tech/server/security/PasswordEnforcerManager.c Lcom/l7tech/util/Config;
      // 5a: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // 5d: bipush 18
      // 5f: aaload
      // 60: bipush 0
      // 61: invokeinterface com/l7tech/util/Config.getBooleanProperty (Ljava/lang/String;Z)Z 3
      // 66: ifne 78
      // 69: goto 70
      // 6c: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 6f: athrow
      // 70: bipush 1
      // 71: goto 79
      // 74: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 77: athrow
      // 78: bipush 0
      // 79: aload 0
      // 7a: getfield com/l7tech/server/security/PasswordEnforcerManager.g Lcom/l7tech/identity/IdentityProviderPasswordPolicy;
      // 7d: invokevirtual com/l7tech/server/security/PasswordEnforcerManager.a (ZLcom/l7tech/identity/IdentityProviderPasswordPolicy;)V
      // 80: return
      // try (0 -> 12): 13 java/lang/IllegalStateException
      // try (3 -> 17): 17 java/lang/IllegalStateException
      // try (30 -> 48): 49 java/lang/IllegalStateException
      // try (35 -> 53): 53 java/lang/IllegalStateException
   }

   public int getOrder() {
      return 50000;
   }

   @Override
   public void propertyChange(PropertyChangeEvent var1) {
      String var2 = var1.getPropertyName();
      String var3 = (String)var1.getNewValue();

      try {
         if (var2 == null || !j[3].equals(var2)) {
            return;
         }
      } catch (IllegalStateException var6) {
         throw a(var6);
      }

      boolean var4 = Boolean.valueOf(var3);

      PasswordEnforcerManager var10000;
      boolean var10001;
      label24: {
         try {
            var10000 = this;
            if (!var4) {
               var10001 = true;
               break label24;
            }
         } catch (IllegalStateException var5) {
            throw a(var5);
         }

         var10001 = false;
      }

      var10000.a(var10001, this.g);
   }

   public IdentityProviderPasswordPolicy getPasswordPolicy() {
      return this.g;
   }

   private void a(boolean param1, IdentityProviderPasswordPolicy param2) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: iload 1
      // 01: ifeq 0f
      // 04: aload 0
      // 05: getfield com/l7tech/server/security/PasswordEnforcerManager.h Lcom/l7tech/identity/IdentityProviderPasswordPolicy;
      // 08: goto 13
      // 0b: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0e: athrow
      // 0f: aload 0
      // 10: getfield com/l7tech/server/security/PasswordEnforcerManager.i Lcom/l7tech/identity/IdentityProviderPasswordPolicy;
      // 13: astore 3
      // 14: aload 2
      // 15: aload 3
      // 16: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.hasStrengthOf (Lcom/l7tech/identity/IdentityProviderPasswordPolicy;)Z
      // 19: ifne 74
      // 1c: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // 1f: bipush 10
      // 21: aaload
      // 22: bipush 2
      // 23: anewarray 278
      // 26: dup
      // 27: bipush 0
      // 28: iload 1
      // 29: ifeq 40
      // 2c: goto 33
      // 2f: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 32: athrow
      // 33: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // 36: bipush 12
      // 38: aaload
      // 39: goto 4a
      // 3c: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 3f: athrow
      // 40: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // 43: astore 5
      // 45: aload 5
      // 47: bipush 20
      // 49: aaload
      // 4a: aastore
      // 4b: dup
      // 4c: bipush 1
      // 4d: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // 50: bipush 14
      // 52: aaload
      // 53: aastore
      // 54: invokestatic java/text/MessageFormat.format (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
      // 57: astore 4
      // 59: aload 0
      // 5a: getfield com/l7tech/server/security/PasswordEnforcerManager.d Lorg/springframework/context/ApplicationContext;
      // 5d: new com/l7tech/server/security/PasswordEnforcerManager$1
      // 60: dup
      // 61: aload 0
      // 62: aload 0
      // 63: getstatic com/l7tech/gateway/common/Component.GW_PASSWD_POLICY_MGR Lcom/l7tech/gateway/common/Component;
      // 66: aconst_null
      // 67: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level;
      // 6a: aload 4
      // 6c: invokespecial com/l7tech/server/security/PasswordEnforcerManager$1.<init> (Lcom/l7tech/server/security/PasswordEnforcerManager;Ljava/lang/Object;Lcom/l7tech/gateway/common/Component;Ljava/lang/String;Ljava/util/logging/Level;Ljava/lang/String;)V
      // 6f: invokeinterface org/springframework/context/ApplicationContext.publishEvent (Lorg/springframework/context/ApplicationEvent;)V 2
      // 74: return
      // try (0 -> 5): 5 java/lang/IllegalStateException
      // try (10 -> 23): 24 java/lang/IllegalStateException
      // try (14 -> 30): 30 java/lang/IllegalStateException
   }

   public void isPasswordPolicyCompliant(User var1, String var2, String var3) throws InvalidPasswordException {
      try {
         if (var1 instanceof InternalUser) {
            this.validatePasswordChangesAllowable(var1);
            this.a(var2);
            this.a(var2, var3);
            this.a(var1, var2);
         }
      } catch (InvalidPasswordException var4) {
         throw a(var4);
      }
   }

   public void isPasswordPolicyCompliant(String var1) throws InvalidPasswordException {
      this.a(var1);
   }

   private void a(String var1) throws InvalidPasswordException {
      a(var1, this.g);
   }

   static void a(String param0, IdentityProviderPasswordPolicy param1) throws InvalidPasswordException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 000: aload 0
      // 001: invokevirtual java/lang/String.toCharArray ()[C
      // 004: astore 2
      // 005: bipush 0
      // 006: istore 3
      // 007: bipush 0
      // 008: istore 4
      // 00a: bipush 0
      // 00b: istore 5
      // 00d: bipush 0
      // 00e: istore 6
      // 010: bipush 0
      // 011: istore 7
      // 013: bipush 0
      // 014: istore 8
      // 016: bipush 48
      // 018: istore 9
      // 01a: bipush 0
      // 01b: istore 10
      // 01d: iload 10
      // 01f: aload 0
      // 020: invokevirtual java/lang/String.length ()I
      // 023: if_icmpge 0b5
      // 026: aload 2
      // 027: iload 10
      // 029: caload
      // 02a: invokestatic java/lang/Character.isUpperCase (C)Z
      // 02d: ifeq 041
      // 030: goto 037
      // 033: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 036: athrow
      // 037: iinc 3 1
      // 03a: goto 091
      // 03d: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 040: athrow
      // 041: aload 2
      // 042: iload 10
      // 044: caload
      // 045: invokestatic java/lang/Character.isLowerCase (C)Z
      // 048: ifeq 055
      // 04b: iinc 4 1
      // 04e: goto 091
      // 051: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 054: athrow
      // 055: aload 2
      // 056: iload 10
      // 058: caload
      // 059: invokestatic java/lang/Character.isDigit (C)Z
      // 05c: ifeq 069
      // 05f: iinc 5 1
      // 062: goto 091
      // 065: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 068: athrow
      // 069: aload 2
      // 06a: iload 10
      // 06c: caload
      // 06d: invokestatic java/lang/Character.isLetterOrDigit (C)Z
      // 070: ifne 08e
      // 073: aload 2
      // 074: iload 10
      // 076: caload
      // 077: invokestatic java/lang/Character.isWhitespace (C)Z
      // 07a: ifne 08e
      // 07d: goto 084
      // 080: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 083: athrow
      // 084: iinc 7 1
      // 087: goto 091
      // 08a: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 08d: athrow
      // 08e: iinc 6 1
      // 091: iload 10
      // 093: ifeq 0a9
      // 096: aload 2
      // 097: iload 10
      // 099: caload
      // 09a: iload 9
      // 09c: if_icmpne 0a9
      // 09f: goto 0a6
      // 0a2: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0a5: athrow
      // 0a6: bipush 1
      // 0a7: istore 8
      // 0a9: aload 2
      // 0aa: iload 10
      // 0ac: caload
      // 0ad: istore 9
      // 0af: iinc 10 1
      // 0b2: goto 01d
      // 0b5: new java/util/ArrayList
      // 0b8: dup
      // 0b9: invokespecial java/util/ArrayList.<init> ()V
      // 0bc: astore 10
      // 0be: aload 1
      // 0bf: getstatic com/l7tech/identity/IdentityProviderPasswordPolicy.MIN_PASSWORD_LENGTH Ljava/lang/String;
      // 0c2: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getIntegerProperty (Ljava/lang/String;)Ljava/lang/Integer;
      // 0c5: invokevirtual java/lang/Integer.intValue ()I
      // 0c8: istore 11
      // 0ca: aload 0
      // 0cb: invokevirtual java/lang/String.length ()I
      // 0ce: iload 11
      // 0d0: if_icmpge 0f1
      // 0d3: aload 10
      // 0d5: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // 0d8: bipush 6
      // 0da: aaload
      // 0db: bipush 1
      // 0dc: anewarray 278
      // 0df: dup
      // 0e0: bipush 0
      // 0e1: iload 11
      // 0e3: invokestatic java/lang/Integer.valueOf (I)Ljava/lang/Integer;
      // 0e6: aastore
      // 0e7: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/util/Collection;Ljava/lang/String;[Ljava/lang/Object;)V
      // 0ea: goto 0f1
      // 0ed: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0f0: athrow
      // 0f1: aload 1
      // 0f2: getstatic com/l7tech/identity/IdentityProviderPasswordPolicy.MAX_PASSWORD_LENGTH Ljava/lang/String;
      // 0f5: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getIntegerProperty (Ljava/lang/String;)Ljava/lang/Integer;
      // 0f8: invokevirtual java/lang/Integer.intValue ()I
      // 0fb: istore 12
      // 0fd: iload 12
      // 0ff: ifle 130
      // 102: aload 0
      // 103: invokevirtual java/lang/String.length ()I
      // 106: iload 12
      // 108: if_icmple 130
      // 10b: goto 112
      // 10e: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 111: athrow
      // 112: aload 10
      // 114: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // 117: bipush 17
      // 119: aaload
      // 11a: bipush 1
      // 11b: anewarray 278
      // 11e: dup
      // 11f: bipush 0
      // 120: iload 12
      // 122: invokestatic java/lang/Integer.valueOf (I)Ljava/lang/Integer;
      // 125: aastore
      // 126: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/util/Collection;Ljava/lang/String;[Ljava/lang/Object;)V
      // 129: goto 130
      // 12c: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 12f: athrow
      // 130: aload 1
      // 131: getstatic com/l7tech/identity/IdentityProviderPasswordPolicy.UPPER_MIN Ljava/lang/String;
      // 134: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getIntegerProperty (Ljava/lang/String;)Ljava/lang/Integer;
      // 137: invokevirtual java/lang/Integer.intValue ()I
      // 13a: iload 3
      // 13b: if_icmple 15e
      // 13e: aload 10
      // 140: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // 143: bipush 13
      // 145: aaload
      // 146: bipush 1
      // 147: anewarray 278
      // 14a: dup
      // 14b: bipush 0
      // 14c: aload 1
      // 14d: getstatic com/l7tech/identity/IdentityProviderPasswordPolicy.UPPER_MIN Ljava/lang/String;
      // 150: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getIntegerProperty (Ljava/lang/String;)Ljava/lang/Integer;
      // 153: aastore
      // 154: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/util/Collection;Ljava/lang/String;[Ljava/lang/Object;)V
      // 157: goto 15e
      // 15a: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 15d: athrow
      // 15e: aload 1
      // 15f: getstatic com/l7tech/identity/IdentityProviderPasswordPolicy.LOWER_MIN Ljava/lang/String;
      // 162: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getIntegerProperty (Ljava/lang/String;)Ljava/lang/Integer;
      // 165: invokevirtual java/lang/Integer.intValue ()I
      // 168: iload 4
      // 16a: if_icmple 18c
      // 16d: aload 10
      // 16f: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // 172: bipush 1
      // 173: aaload
      // 174: bipush 1
      // 175: anewarray 278
      // 178: dup
      // 179: bipush 0
      // 17a: aload 1
      // 17b: getstatic com/l7tech/identity/IdentityProviderPasswordPolicy.LOWER_MIN Ljava/lang/String;
      // 17e: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getIntegerProperty (Ljava/lang/String;)Ljava/lang/Integer;
      // 181: aastore
      // 182: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/util/Collection;Ljava/lang/String;[Ljava/lang/Object;)V
      // 185: goto 18c
      // 188: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 18b: athrow
      // 18c: aload 1
      // 18d: getstatic com/l7tech/identity/IdentityProviderPasswordPolicy.NUMBER_MIN Ljava/lang/String;
      // 190: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getIntegerProperty (Ljava/lang/String;)Ljava/lang/Integer;
      // 193: invokevirtual java/lang/Integer.intValue ()I
      // 196: iload 5
      // 198: if_icmple 1ba
      // 19b: aload 10
      // 19d: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // 1a0: bipush 4
      // 1a1: aaload
      // 1a2: bipush 1
      // 1a3: anewarray 278
      // 1a6: dup
      // 1a7: bipush 0
      // 1a8: aload 1
      // 1a9: getstatic com/l7tech/identity/IdentityProviderPasswordPolicy.NUMBER_MIN Ljava/lang/String;
      // 1ac: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getIntegerProperty (Ljava/lang/String;)Ljava/lang/Integer;
      // 1af: aastore
      // 1b0: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/util/Collection;Ljava/lang/String;[Ljava/lang/Object;)V
      // 1b3: goto 1ba
      // 1b6: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1b9: athrow
      // 1ba: aload 1
      // 1bb: getstatic com/l7tech/identity/IdentityProviderPasswordPolicy.SYMBOL_MIN Ljava/lang/String;
      // 1be: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getIntegerProperty (Ljava/lang/String;)Ljava/lang/Integer;
      // 1c1: invokevirtual java/lang/Integer.intValue ()I
      // 1c4: iload 7
      // 1c6: if_icmple 1e8
      // 1c9: aload 10
      // 1cb: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // 1ce: bipush 0
      // 1cf: aaload
      // 1d0: bipush 1
      // 1d1: anewarray 278
      // 1d4: dup
      // 1d5: bipush 0
      // 1d6: aload 1
      // 1d7: getstatic com/l7tech/identity/IdentityProviderPasswordPolicy.SYMBOL_MIN Ljava/lang/String;
      // 1da: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getIntegerProperty (Ljava/lang/String;)Ljava/lang/Integer;
      // 1dd: aastore
      // 1de: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/util/Collection;Ljava/lang/String;[Ljava/lang/Object;)V
      // 1e1: goto 1e8
      // 1e4: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1e7: athrow
      // 1e8: aload 1
      // 1e9: getstatic com/l7tech/identity/IdentityProviderPasswordPolicy.NON_NUMERIC_MIN Ljava/lang/String;
      // 1ec: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getIntegerProperty (Ljava/lang/String;)Ljava/lang/Integer;
      // 1ef: invokevirtual java/lang/Integer.intValue ()I
      // 1f2: iload 3
      // 1f3: iload 4
      // 1f5: iadd
      // 1f6: iload 7
      // 1f8: iadd
      // 1f9: iload 6
      // 1fb: iadd
      // 1fc: if_icmple 21e
      // 1ff: aload 10
      // 201: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // 204: bipush 2
      // 205: aaload
      // 206: bipush 1
      // 207: anewarray 278
      // 20a: dup
      // 20b: bipush 0
      // 20c: aload 1
      // 20d: getstatic com/l7tech/identity/IdentityProviderPasswordPolicy.NON_NUMERIC_MIN Ljava/lang/String;
      // 210: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getIntegerProperty (Ljava/lang/String;)Ljava/lang/Integer;
      // 213: aastore
      // 214: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/util/Collection;Ljava/lang/String;[Ljava/lang/Object;)V
      // 217: goto 21e
      // 21a: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 21d: athrow
      // 21e: aload 1
      // 21f: getstatic com/l7tech/identity/IdentityProviderPasswordPolicy.NO_REPEAT_CHARS Ljava/lang/String;
      // 222: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getBooleanProperty (Ljava/lang/String;)Ljava/lang/Boolean;
      // 225: invokevirtual java/lang/Boolean.booleanValue ()Z
      // 228: ifeq 24d
      // 22b: iload 8
      // 22d: ifeq 24d
      // 230: goto 237
      // 233: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 236: athrow
      // 237: aload 10
      // 239: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // 23c: bipush 16
      // 23e: aaload
      // 23f: bipush 0
      // 240: anewarray 278
      // 243: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/util/Collection;Ljava/lang/String;[Ljava/lang/Object;)V
      // 246: goto 24d
      // 249: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 24c: athrow
      // 24d: aload 10
      // 24f: invokeinterface java/util/List.isEmpty ()Z 1
      // 254: ifne 274
      // 257: new com/l7tech/objectmodel/InvalidPasswordException
      // 25a: dup
      // 25b: aload 10
      // 25d: bipush 0
      // 25e: invokeinterface java/util/List.get (I)Ljava/lang/Object; 2
      // 263: checkcast java/lang/String
      // 266: aload 1
      // 267: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getDescription ()Ljava/lang/String;
      // 26a: aload 10
      // 26c: invokespecial com/l7tech/objectmodel/InvalidPasswordException.<init> (Ljava/lang/String;Ljava/lang/String;Ljava/util/Collection;)V
      // 26f: athrow
      // 270: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 273: athrow
      // 274: return
      // try (19 -> 28): 29 com/l7tech/objectmodel/InvalidPasswordException
      // try (23 -> 33): 33 com/l7tech/objectmodel/InvalidPasswordException
      // try (35 -> 42): 42 com/l7tech/objectmodel/InvalidPasswordException
      // try (44 -> 51): 51 com/l7tech/objectmodel/InvalidPasswordException
      // try (53 -> 63): 64 com/l7tech/objectmodel/InvalidPasswordException
      // try (58 -> 68): 68 com/l7tech/objectmodel/InvalidPasswordException
      // try (71 -> 78): 79 com/l7tech/objectmodel/InvalidPasswordException
      // try (98 -> 114): 115 com/l7tech/objectmodel/InvalidPasswordException
      // try (122 -> 128): 129 com/l7tech/objectmodel/InvalidPasswordException
      // try (124 -> 143): 144 com/l7tech/objectmodel/InvalidPasswordException
      // try (146 -> 165): 166 com/l7tech/objectmodel/InvalidPasswordException
      // try (168 -> 187): 188 com/l7tech/objectmodel/InvalidPasswordException
      // try (190 -> 209): 210 com/l7tech/objectmodel/InvalidPasswordException
      // try (212 -> 231): 232 com/l7tech/objectmodel/InvalidPasswordException
      // try (234 -> 259): 260 com/l7tech/objectmodel/InvalidPasswordException
      // try (262 -> 269): 270 com/l7tech/objectmodel/InvalidPasswordException
      // try (267 -> 279): 280 com/l7tech/objectmodel/InvalidPasswordException
      // try (282 -> 296): 296 com/l7tech/objectmodel/InvalidPasswordException
   }

   private static void a(Collection<String> var0, String var1, Object... var2) {
      var0.add(MessageFormat.format(var1, var2));
   }

   private void a(String param1, String param2) throws InvalidPasswordException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: aload 2
      // 02: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 05: ifeq 1a
      // 08: new com/l7tech/objectmodel/InvalidPasswordException
      // 0b: dup
      // 0c: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // 0f: bipush 19
      // 11: aaload
      // 12: invokespecial com/l7tech/objectmodel/InvalidPasswordException.<init> (Ljava/lang/String;)V
      // 15: athrow
      // 16: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 19: athrow
      // 1a: new java/util/HashSet
      // 1d: dup
      // 1e: invokespecial java/util/HashSet.<init> ()V
      // 21: astore 3
      // 22: bipush 0
      // 23: istore 4
      // 25: iload 4
      // 27: aload 2
      // 28: invokevirtual java/lang/String.length ()I
      // 2b: if_icmpge 47
      // 2e: aload 3
      // 2f: aload 2
      // 30: iload 4
      // 32: iload 4
      // 34: bipush 1
      // 35: iadd
      // 36: invokevirtual java/lang/String.substring (II)Ljava/lang/String;
      // 39: invokevirtual java/util/HashSet.add (Ljava/lang/Object;)Z
      // 3c: pop
      // 3d: iinc 4 1
      // 40: goto 25
      // 43: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 46: athrow
      // 47: aload 0
      // 48: getfield com/l7tech/server/security/PasswordEnforcerManager.g Lcom/l7tech/identity/IdentityProviderPasswordPolicy;
      // 4b: getstatic com/l7tech/identity/IdentityProviderPasswordPolicy.CHARACTER_DIFF_MIN Ljava/lang/String;
      // 4e: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getIntegerProperty (Ljava/lang/String;)Ljava/lang/Integer;
      // 51: invokevirtual java/lang/Integer.intValue ()I
      // 54: istore 4
      // 56: iload 4
      // 58: ifge 60
      // 5b: return
      // 5c: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 5f: athrow
      // 60: bipush 0
      // 61: istore 5
      // 63: bipush 0
      // 64: istore 6
      // 66: iload 6
      // 68: aload 1
      // 69: invokevirtual java/lang/String.length ()I
      // 6c: if_icmpge a3
      // 6f: aload 3
      // 70: aload 1
      // 71: iload 6
      // 73: iload 6
      // 75: bipush 1
      // 76: iadd
      // 77: invokevirtual java/lang/String.substring (II)Ljava/lang/String;
      // 7a: invokevirtual java/util/HashSet.contains (Ljava/lang/Object;)Z
      // 7d: ifne 9d
      // 80: goto 87
      // 83: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 86: athrow
      // 87: iinc 5 1
      // 8a: iload 5
      // 8c: iload 4
      // 8e: if_icmplt 9d
      // 91: goto 98
      // 94: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 97: athrow
      // 98: return
      // 99: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 9c: athrow
      // 9d: iinc 6 1
      // a0: goto 66
      // a3: new com/l7tech/objectmodel/InvalidPasswordException
      // a6: dup
      // a7: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // aa: bipush 11
      // ac: aaload
      // ad: bipush 1
      // ae: anewarray 278
      // b1: dup
      // b2: bipush 0
      // b3: iload 4
      // b5: invokestatic java/lang/Integer.valueOf (I)Ljava/lang/Integer;
      // b8: aastore
      // b9: invokestatic java/text/MessageFormat.format (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
      // bc: aload 0
      // bd: getfield com/l7tech/server/security/PasswordEnforcerManager.g Lcom/l7tech/identity/IdentityProviderPasswordPolicy;
      // c0: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getDescription ()Ljava/lang/String;
      // c3: invokespecial com/l7tech/objectmodel/InvalidPasswordException.<init> (Ljava/lang/String;Ljava/lang/String;)V
      // c6: athrow
      // try (0 -> 11): 11 com/l7tech/objectmodel/InvalidPasswordException
      // try (19 -> 34): 34 com/l7tech/objectmodel/InvalidPasswordException
      // try (42 -> 45): 45 com/l7tech/objectmodel/InvalidPasswordException
      // try (51 -> 64): 65 com/l7tech/objectmodel/InvalidPasswordException
      // try (55 -> 71): 72 com/l7tech/objectmodel/InvalidPasswordException
      // try (67 -> 75): 75 com/l7tech/objectmodel/InvalidPasswordException
   }

   private void a(User var1, String var2) throws InvalidPasswordException {
      List var3 = ((InternalUser)var1).getPasswordChangesHistory();
      int var5 = this.g.getIntegerProperty(IdentityProviderPasswordPolicy.REPEAT_FREQUENCY);

      try {
         if (var5 < 0) {
            return;
         }
      } catch (IncorrectPasswordException var13) {
         throw a(var13);
      }

      ListIterator var6 = var3.listIterator(Math.max(0, var3.size() - var5 + 1));
      byte[] var7 = var2.getBytes(Charsets.UTF8);

      while (var6.hasNext()) {
         PasswordChangeRecord var4 = (PasswordChangeRecord)var6.next();
         if (var4 != null) {
            String var8 = var4.getPrevHashedPassword();
            boolean var9 = false;

            try {
               if (this.f.isVerifierRecognized(var8)) {
                  this.f.verifyPassword(var7, var8);
                  var9 = true;
               }
            } catch (IncorrectPasswordException var11) {
            }

            if (!var9) {
               String var10 = HexUtils.encodePasswd(var1.getLogin(), var2, HexUtils.REALM);
               if (var8.equals(var10)) {
                  var9 = true;
               }
            }

            try {
               if (var9) {
                  throw new InvalidPasswordException(MessageFormat.format(j[21], var5), this.g.getDescription());
               }
            } catch (IncorrectPasswordException var12) {
               throw a(var12);
            }
         }
      }
   }

   public void validatePasswordChangesAllowable(User param1) throws InvalidPasswordException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 000: aload 0
      // 001: getfield com/l7tech/server/security/PasswordEnforcerManager.g Lcom/l7tech/identity/IdentityProviderPasswordPolicy;
      // 004: getstatic com/l7tech/identity/IdentityProviderPasswordPolicy.ALLOWABLE_CHANGES Ljava/lang/String;
      // 007: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getBooleanProperty (Ljava/lang/String;)Ljava/lang/Boolean;
      // 00a: invokevirtual java/lang/Boolean.booleanValue ()Z
      // 00d: istore 2
      // 00e: iload 2
      // 00f: ifne 017
      // 012: return
      // 013: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 016: athrow
      // 017: invokestatic java/lang/System.currentTimeMillis ()J
      // 01a: lstore 3
      // 01b: invokestatic java/util/Calendar.getInstance ()Ljava/util/Calendar;
      // 01e: astore 5
      // 020: aload 5
      // 022: lload 3
      // 023: invokevirtual java/util/Calendar.setTimeInMillis (J)V
      // 026: aload 5
      // 028: bipush 6
      // 02a: bipush -1
      // 02b: invokevirtual java/util/Calendar.add (II)V
      // 02e: invokestatic java/util/Calendar.getInstance ()Ljava/util/Calendar;
      // 031: astore 6
      // 033: aload 1
      // 034: instanceof com/l7tech/identity/internal/InternalUser
      // 037: ifeq 101
      // 03a: aload 1
      // 03b: checkcast com/l7tech/identity/internal/InternalUser
      // 03e: astore 7
      // 040: aload 0
      // 041: aload 7
      // 043: invokevirtual com/l7tech/server/security/PasswordEnforcerManager.hasAdminRole (Lcom/l7tech/identity/internal/InternalUser;)Z
      // 046: ifne 058
      // 049: aload 7
      // 04b: invokevirtual com/l7tech/identity/internal/InternalUser.isChangePassword ()Z
      // 04e: ifeq 05d
      // 051: goto 058
      // 054: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 057: athrow
      // 058: return
      // 059: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 05c: athrow
      // 05d: aload 7
      // 05f: invokevirtual com/l7tech/identity/internal/InternalUser.getPasswordChangesHistory ()Ljava/util/List;
      // 062: astore 8
      // 064: aload 8
      // 066: ifnull 101
      // 069: aload 8
      // 06b: invokeinterface java/util/List.isEmpty ()Z 1
      // 070: ifne 101
      // 073: goto 07a
      // 076: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 079: athrow
      // 07a: aload 8
      // 07c: aload 8
      // 07e: invokeinterface java/util/List.size ()I 1
      // 083: bipush 1
      // 084: isub
      // 085: invokeinterface java/util/List.get (I)Ljava/lang/Object; 2
      // 08a: checkcast com/l7tech/identity/internal/PasswordChangeRecord
      // 08d: astore 9
      // 08f: aload 9
      // 091: invokevirtual com/l7tech/identity/internal/PasswordChangeRecord.getLastChanged ()J
      // 094: lstore 10
      // 096: aload 6
      // 098: lload 10
      // 09a: invokevirtual java/util/Calendar.setTimeInMillis (J)V
      // 09d: aload 6
      // 09f: aload 5
      // 0a1: invokevirtual java/util/Calendar.after (Ljava/lang/Object;)Z
      // 0a4: ifeq 101
      // 0a7: ldc2_w 1440
      // 0aa: lload 3
      // 0ab: lload 10
      // 0ad: lsub
      // 0ae: ldc2_w 60000
      // 0b1: ldiv
      // 0b2: lsub
      // 0b3: lstore 12
      // 0b5: new com/l7tech/objectmodel/InvalidPasswordException
      // 0b8: dup
      // 0b9: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // 0bc: bipush 8
      // 0be: aaload
      // 0bf: bipush 1
      // 0c0: anewarray 278
      // 0c3: dup
      // 0c4: bipush 0
      // 0c5: lload 12
      // 0c7: ldc2_w 60
      // 0ca: lcmp
      // 0cb: iflt 0e5
      // 0ce: lload 12
      // 0d0: ldc2_w 60
      // 0d3: ldiv
      // 0d4: getstatic com/l7tech/server/security/PasswordEnforcerManager.j [Ljava/lang/String;
      // 0d7: bipush 5
      // 0d8: aaload
      // 0d9: invokedynamic makeConcatWithConstants (JLjava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // 0de: goto 0e7
      // 0e1: invokestatic com/l7tech/server/security/PasswordEnforcerManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0e4: athrow
      // 0e5: ldc ""
      // 0e7: lload 12
      // 0e9: ldc2_w 60
      // 0ec: lrem
      // 0ed: invokedynamic makeConcatWithConstants (Ljava/lang/String;J)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // 0f2: aastore
      // 0f3: invokestatic java/text/MessageFormat.format (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
      // 0f6: aload 0
      // 0f7: getfield com/l7tech/server/security/PasswordEnforcerManager.g Lcom/l7tech/identity/IdentityProviderPasswordPolicy;
      // 0fa: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getDescription ()Ljava/lang/String;
      // 0fd: invokespecial com/l7tech/objectmodel/InvalidPasswordException.<init> (Ljava/lang/String;Ljava/lang/String;)V
      // 100: athrow
      // 101: return
      // try (6 -> 9): 9 com/l7tech/objectmodel/InvalidPasswordException
      // try (30 -> 37): 38 com/l7tech/objectmodel/InvalidPasswordException
      // try (34 -> 41): 41 com/l7tech/objectmodel/InvalidPasswordException
      // try (46 -> 51): 52 com/l7tech/objectmodel/InvalidPasswordException
      // try (80 -> 101): 101 com/l7tech/objectmodel/InvalidPasswordException
   }

   public void setUserPasswordPolicyAttributes(InternalUser var1, boolean var2) {
      var1.setPasswordExpiry(this.a(System.currentTimeMillis()));
      if (var2) {
         boolean var3 = this.g.getBooleanProperty(IdentityProviderPasswordPolicy.FORCE_PWD_CHANGE);
         var1.setChangePassword(var3);
      }
   }

   public boolean hasAdminRole(InternalUser var1) {
      try {
         Collection var2 = this.e.getAssignedRoles(var1);
         if (var2 == null) {
            return false;
         }

         for (Role var4 : var2) {
            if (var4.getTag() == Tag.ADMIN) {
               return true;
            }
         }

         return false;
      } catch (FindException var5) {
         return false;
      }
   }

   private long a(long var1) {
      try {
         int var3 = (Integer)this.g.getPropertyValue(IdentityProviderPasswordPolicy.PASSWORD_EXPIRY);

         try {
            if (var3 < 0) {
               return -1L;
            }
         } catch (NullPointerException var4) {
            throw a(var4);
         }

         return a(var1, var3);
      } catch (NullPointerException var5) {
         return -1L;
      }
   }

   public boolean isPasswordExpired(User var1) {
      if (var1 instanceof InternalUser var2) {
         try {
            if (var2.isChangePassword()) {
               return true;
            }
         } catch (IllegalStateException var6) {
            throw a(var6);
         }

         try {
            if (var2.getPasswordExpiry() < 0L) {
               return false;
            }
         } catch (IllegalStateException var7) {
            throw a(var7);
         }

         Calendar var3 = Calendar.getInstance();
         var3.setTimeInMillis(var2.getPasswordExpiry());
         Calendar var4 = Calendar.getInstance();

         try {
            var4.setTimeInMillis(System.currentTimeMillis());
            if (var4.after(var3)) {
               return true;
            }
         } catch (IllegalStateException var5) {
            throw a(var5);
         }
      }

      return false;
   }

   private static long a(long var0, int var2) {
      Calendar var3 = Calendar.getInstance();
      var3.setTimeInMillis(var0);
      var3.add(6, var2);
      return var3.getTimeInMillis();
   }

   private IdentityProviderPasswordPolicy a() {
      IdentityProviderPasswordPolicy var1 = null;
      String[] var4 = j;
      String var2 = var4[7];

      try {
         var1 = this.b.findByInternalIdentityProviderOid(IdentityProviderConfigManager.INTERNALPROVIDER_SPECIAL_GOID);
      } catch (FindException var6) {
         var4 = j;
         a.log(Level.WARNING, var4[9]);
      }

      try {
         if (var1 == null) {
            throw new IllegalStateException(j[9]);
         } else {
            return var1;
         }
      } catch (FindException var5) {
         throw a(var5);
      }
   }

   static {
      String[] var5 = new String[22];
      int var3 = 0;
      String var2 = "!\u001c;t%\u0000\u0011\u0015]%r!\u001bC\u0012\u0012&s3\u0006\rQ\u001c<'>\n\u0002\u0002\th|b\u0012C\u0002\r-d;\u000e\u000fQ\u001e f \u000e\u0000\u0005\u0018:/!F:!\u001c;t%\u0000\u0011\u0015]%r!\u001bC\u0012\u0012&s3\u0006\rQ\u001c<'>\n\u0002\u0002\th|b\u0012C\u001d\u0012?b O\u0000\u0010\u000e-'1\u0007\u0002\u0003\u001c+s7\u001dK\u0002T;!\u001c;t%\u0000\u0011\u0015]%r!\u001bC\u0012\u0012&s3\u0006\rQ\u001c<'>\n\u0002\u0002\th|b\u0012C\u001f\u0012&*<\u001a\u000e\u0014\u000f!dr\f\u000b\u0010\u000f)d&\n\u0011Y\u000ea\u0017\u0002\u0018+r \u0006\u0017\bS8d;\u000b\u0010\u0002S-i3\r\u000f\u0014\u0019,!\u001c;t%\u0000\u0011\u0015]%r!\u001bC\u0012\u0012&s3\u0006\rQ\u001c<'>\n\u0002\u0002\th|b\u0012C\u001f\b%e7\u001dK\u0002T\u000bQ\u0015'r \u001cC\u0010\u0013,'2!\u001c;t%\u0000\u0011\u0015]%r!\u001bC\u0013\u0018hf&O\u000f\u0014\u001c;sr\u0014S\f]+o3\u001d\u0002\u0012\t-u!O\n\u001f]$b<\b\u0017\u0019>2\u0012=k6O\r\u001e\tha;\u0001\u0007Q\r)t!\u0018\f\u0003\u0019hw=\u0003\n\u0012\u0004ha=\u001dC\u0018\u0013<b \u0001\u0002\u001d]!c7\u0001\u0017\u0018\t1'\"\u001d\f\u0007\u0014,b AU!\u001c;t%\u0000\u0011\u0015]+f<\u0001\f\u0005]*br\f\u000b\u0010\u0013/b6O\u000e\u001e\u000f-'&\u0007\u0002\u001f]'i1\nC\u0014\u000b-u+OQE] h'\u001d\u0010_]\u0018k7\u000e\u0010\u0014]:b&\u001d\u001aQ\u0014&')_\u001eQ\u0010!i'\u001b\u0006\u0002>2\u0012=k6O\r\u001e\tha;\u0001\u0007Q\r)t!\u0018\f\u0003\u0019hw=\u0003\n\u0012\u0004ha=\u001dC\u0018\u0013<b \u0001\u0002\u001d]!c7\u0001\u0017\u0018\t1'\"\u001d\f\u0007\u0014,b A3!\u001c;t%\u0000\u0011\u0015]:b#\u001a\n\u0003\u0018%b<\u001b\u0010Q\u001c:br\r\u0006\u001d\u0012?')_\u001eQ\u0010!i;\u0002\u0016\u001c].h O\u0018@\u0000J?\u0018?'\"\u000e\u0010\u0002\n'u6O\u000e\u0004\u000e<'6\u0006\u0005\u0017\u0018:'4\u001d\f\u001c]8u7\u0019\n\u001e\b;'\"\u000e\u0010\u0002\n'u6O\u0001\b])sr\u0003\u0006\u0010\u000e<')_\u001eQ\u001e f \u000e\u0000\u0005\u0018:t\u0004\")\u0001@:!\u001c;t%\u0000\u0011\u0015]%r!\u001bC\u0012\u0012&s3\u0006\rQ\u001c<'>\n\u0002\u0002\th|b\u0012C\u0004\r8b O\u0000\u0010\u000e-'1\u0007\u0002\u0003\u001c+s7\u001dK\u0002T\u001a8\u0013<b \u0001\u0002\u001d]\u0001c7\u0001\u0017\u0018\t1'\u0002\u001d\f\u0007\u0014,b '\u0010\r8k;\f\u0002\u0005\u0014'i\u0011\u0000\r\u0005\u00180sr\u000e\u000f\u0003\u0018)c+O\n\u001f\u0014<n3\u0003\n\u000b\u0018,&2!\u001c;t%\u0000\u0011\u0015]+h<\u001b\u0002\u0018\u0013;'1\u0000\r\u0002\u0018+r&\u0006\u0015\u0014]:b\"\n\u0002\u0005\u0014&`r\f\u000b\u0010\u000f)d&\n\u0011\u0002?!\u001c;t%\u0000\u0011\u0015]%r!\u001bC\u0013\u0018hk7\u001c\u0010Q\t f<O\f\u0003]-v'\u000e\u000fQ\t'')_\u001eQ\u001e f \u000e\u0000\u0005\u0018:tr\u0006\rQ\u0011-i5\u001b\u000b\u0017\u0002\u0018+r \u0006\u0017\bS8d;\u000b\u0010\u0002S-i3\r\u000f\u0014\u00197?\u0018?'\"\u000e\u0010\u0002\n'u6O\n\u0002]<o7O\u0010\u0010\u0010-'3\u001cC\u0005\u0015-''\u001c\u0006\u0003\u000ehd'\u001d\u0011\u0014\u0013<'\"\u000e\u0010\u0002\n'u6A";
      int var4 = "!\u001c;t%\u0000\u0011\u0015]%r!\u001bC\u0012\u0012&s3\u0006\rQ\u001c<'>\n\u0002\u0002\th|b\u0012C\u0002\r-d;\u000e\u000fQ\u001e f \u000e\u0000\u0005\u0018:/!F:!\u001c;t%\u0000\u0011\u0015]%r!\u001bC\u0012\u0012&s3\u0006\rQ\u001c<'>\n\u0002\u0002\th|b\u0012C\u001d\u0012?b O\u0000\u0010\u000e-'1\u0007\u0002\u0003\u001c+s7\u001dK\u0002T;!\u001c;t%\u0000\u0011\u0015]%r!\u001bC\u0012\u0012&s3\u0006\rQ\u001c<'>\n\u0002\u0002\th|b\u0012C\u001f\u0012&*<\u001a\u000e\u0014\u000f!dr\f\u000b\u0010\u000f)d&\n\u0011Y\u000ea\u0017\u0002\u0018+r \u0006\u0017\bS8d;\u000b\u0010\u0002S-i3\r\u000f\u0014\u0019,!\u001c;t%\u0000\u0011\u0015]%r!\u001bC\u0012\u0012&s3\u0006\rQ\u001c<'>\n\u0002\u0002\th|b\u0012C\u001f\b%e7\u001dK\u0002T\u000bQ\u0015'r \u001cC\u0010\u0013,'2!\u001c;t%\u0000\u0011\u0015]%r!\u001bC\u0013\u0018hf&O\u000f\u0014\u001c;sr\u0014S\f]+o3\u001d\u0002\u0012\t-u!O\n\u001f]$b<\b\u0017\u0019>2\u0012=k6O\r\u001e\tha;\u0001\u0007Q\r)t!\u0018\f\u0003\u0019hw=\u0003\n\u0012\u0004ha=\u001dC\u0018\u0013<b \u0001\u0002\u001d]!c7\u0001\u0017\u0018\t1'\"\u001d\f\u0007\u0014,b AU!\u001c;t%\u0000\u0011\u0015]+f<\u0001\f\u0005]*br\f\u000b\u0010\u0013/b6O\u000e\u001e\u000f-'&\u0007\u0002\u001f]'i1\nC\u0014\u000b-u+OQE] h'\u001d\u0010_]\u0018k7\u000e\u0010\u0014]:b&\u001d\u001aQ\u0014&')_\u001eQ\u0010!i'\u001b\u0006\u0002>2\u0012=k6O\r\u001e\tha;\u0001\u0007Q\r)t!\u0018\f\u0003\u0019hw=\u0003\n\u0012\u0004ha=\u001dC\u0018\u0013<b \u0001\u0002\u001d]!c7\u0001\u0017\u0018\t1'\"\u001d\f\u0007\u0014,b A3!\u001c;t%\u0000\u0011\u0015]:b#\u001a\n\u0003\u0018%b<\u001b\u0010Q\u001c:br\r\u0006\u001d\u0012?')_\u001eQ\u0010!i;\u0002\u0016\u001c].h O\u0018@\u0000J?\u0018?'\"\u000e\u0010\u0002\n'u6O\u000e\u0004\u000e<'6\u0006\u0005\u0017\u0018:'4\u001d\f\u001c]8u7\u0019\n\u001e\b;'\"\u000e\u0010\u0002\n'u6O\u0001\b])sr\u0003\u0006\u0010\u000e<')_\u001eQ\u001e f \u000e\u0000\u0005\u0018:t\u0004\")\u0001@:!\u001c;t%\u0000\u0011\u0015]%r!\u001bC\u0012\u0012&s3\u0006\rQ\u001c<'>\n\u0002\u0002\th|b\u0012C\u0004\r8b O\u0000\u0010\u000e-'1\u0007\u0002\u0003\u001c+s7\u001dK\u0002T\u001a8\u0013<b \u0001\u0002\u001d]\u0001c7\u0001\u0017\u0018\t1'\u0002\u001d\f\u0007\u0014,b '\u0010\r8k;\f\u0002\u0005\u0014'i\u0011\u0000\r\u0005\u00180sr\u000e\u000f\u0003\u0018)c+O\n\u001f\u0014<n3\u0003\n\u000b\u0018,&2!\u001c;t%\u0000\u0011\u0015]+h<\u001b\u0002\u0018\u0013;'1\u0000\r\u0002\u0018+r&\u0006\u0015\u0014]:b\"\n\u0002\u0005\u0014&`r\f\u000b\u0010\u000f)d&\n\u0011\u0002?!\u001c;t%\u0000\u0011\u0015]%r!\u001bC\u0013\u0018hk7\u001c\u0010Q\t f<O\f\u0003]-v'\u000e\u000fQ\t'')_\u001eQ\u001e f \u000e\u0000\u0005\u0018:tr\u0006\rQ\u0011-i5\u001b\u000b\u0017\u0002\u0018+r \u0006\u0017\bS8d;\u000b\u0010\u0002S-i3\r\u000f\u0014\u00197?\u0018?'\"\u000e\u0010\u0002\n'u6O\n\u0002]<o7O\u0010\u0010\u0010-'3\u001cC\u0005\u0015-''\u001c\u0006\u0003\u000ehd'\u001d\u0011\u0014\u0013<'\"\u000e\u0010\u0002\n'u6A"
         .length();
      char var1 = '7';
      int var7 = -1;

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

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

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

                  var2 = ".1\u000e%\u00193?90\u00170(-\u0001\u001f\r\u0005(z9@\u000f\u001f\u001c)g)@\u000e\u001bR5m(\u0013\t\u001aR0a)\b\u0005\u0010R<8 @\u001c\u001f\u00014\u007f2\u0012\b^\u0011/i3\u0007\t\r";
                  var4 = ".1\u000e%\u00193?90\u00170(-\u0001\u001f\r\u0005(z9@\u000f\u001f\u001c)g)@\u000e\u001bR5m(\u0013\t\u001aR0a)\b\u0005\u0010R<8 @\u001c\u001f\u00014\u007f2\u0012\b^\u0011/i3\u0007\t\r"
                     .length();
                  var1 = 7;
                  var7 = -1;
            }

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

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

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

      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 -> 115;
            case 1 -> 127;
            case 2 -> 74;
            case 3 -> 5;
            case 4 -> 80;
            case 5 -> 109;
            default -> 97;
         });
      }

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