/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.common.io.CertUtils
 *  com.l7tech.common.password.PasswordHasher
 *  com.l7tech.gateway.common.admin.AdminLogin
 *  com.l7tech.gateway.common.admin.AdminLogin$ServerCertificateVerificationInfo
 *  com.l7tech.gateway.common.admin.AdminLoginResult
 *  com.l7tech.gateway.common.audit.LogonEvent
 *  com.l7tech.gateway.common.security.keystore.SsgKeyEntry
 *  com.l7tech.gateway.common.spring.remoting.RemoteUtils
 *  com.l7tech.gateway.common.transport.SsgConnector
 *  com.l7tech.identity.AuthenticationException
 *  com.l7tech.identity.FailAttemptsExceededException
 *  com.l7tech.identity.FailInactivityPeriodExceededException
 *  com.l7tech.identity.IdentityProvider
 *  com.l7tech.identity.IdentityProviderConfigManager
 *  com.l7tech.identity.InvalidIdProviderCfgException
 *  com.l7tech.identity.LoginRequireClientCertificateException
 *  com.l7tech.identity.User
 *  com.l7tech.identity.UserDisabledException
 *  com.l7tech.identity.internal.InternalUser
 *  com.l7tech.objectmodel.Goid
 *  com.l7tech.objectmodel.InvalidPasswordException
 *  com.l7tech.objectmodel.ObjectModelException
 *  com.l7tech.objectmodel.ObjectNotFoundException
 *  com.l7tech.policy.assertion.credential.LoginCredentials
 *  com.l7tech.security.token.SecurityToken
 *  com.l7tech.security.token.SecurityTokenType
 *  com.l7tech.security.token.UsernamePasswordSecurityToken
 *  com.l7tech.security.token.http.TlsClientCertToken
 *  com.l7tech.util.BuildInfo
 *  com.l7tech.util.Charsets
 *  com.l7tech.util.CollectionUtils$MapBuilder
 *  com.l7tech.util.Config
 *  jakarta.servlet.ServletRequest
 *  jakarta.servlet.http.HttpServletRequest
 *  org.springframework.beans.factory.InitializingBean
 *  org.springframework.context.ApplicationEvent
 *  org.springframework.context.support.ApplicationObjectSupport
 */
package com.l7tech.server.admin;

import com.l7tech.common.io.CertUtils;
import com.l7tech.common.password.PasswordHasher;
import com.l7tech.gateway.common.admin.AdminLogin;
import com.l7tech.gateway.common.admin.AdminLoginResult;
import com.l7tech.gateway.common.audit.LogonEvent;
import com.l7tech.gateway.common.security.keystore.SsgKeyEntry;
import com.l7tech.gateway.common.spring.remoting.RemoteUtils;
import com.l7tech.gateway.common.transport.SsgConnector;
import com.l7tech.identity.AuthenticationException;
import com.l7tech.identity.FailAttemptsExceededException;
import com.l7tech.identity.FailInactivityPeriodExceededException;
import com.l7tech.identity.IdentityProvider;
import com.l7tech.identity.IdentityProviderConfigManager;
import com.l7tech.identity.InvalidIdProviderCfgException;
import com.l7tech.identity.LoginRequireClientCertificateException;
import com.l7tech.identity.User;
import com.l7tech.identity.UserDisabledException;
import com.l7tech.identity.internal.InternalUser;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.InvalidPasswordException;
import com.l7tech.objectmodel.ObjectModelException;
import com.l7tech.objectmodel.ObjectNotFoundException;
import com.l7tech.policy.assertion.credential.LoginCredentials;
import com.l7tech.security.token.SecurityToken;
import com.l7tech.security.token.SecurityTokenType;
import com.l7tech.security.token.UsernamePasswordSecurityToken;
import com.l7tech.security.token.http.TlsClientCertToken;
import com.l7tech.server.DefaultKey;
import com.l7tech.server.admin.AdminLoginHelper;
import com.l7tech.server.admin.AdminSessionManager;
import com.l7tech.server.event.system.FailedAdminLoginEvent;
import com.l7tech.server.identity.IdentityProviderFactory;
import com.l7tech.server.identity.internal.InternalIdentityProvider;
import com.l7tech.server.identity.internal.InternalUserManager;
import com.l7tech.server.security.keystore.SsgKeyStoreManager;
import com.l7tech.server.transport.http.HttpTransportModule;
import com.l7tech.server.util.JaasUtils;
import com.l7tech.util.BuildInfo;
import com.l7tech.util.Charsets;
import com.l7tech.util.CollectionUtils;
import com.l7tech.util.Config;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.rmi.server.ServerNotActiveException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.security.auth.login.AccountLockedException;
import javax.security.auth.login.FailedLoginException;
import javax.security.auth.login.LoginException;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.support.ApplicationObjectSupport;

public class AdminLoginImpl
extends ApplicationObjectSupport
implements AdminLogin,
InitializingBean {
    private static final Logger a;
    private AdminSessionManager b;
    private final SecureRandom c;
    private final DefaultKey d;
    private final SsgKeyStoreManager e;
    private IdentityProviderConfigManager f;
    private IdentityProviderFactory g;
    private PasswordHasher h;
    private Config i;
    private static final String[] j;

    public AdminLoginImpl(DefaultKey defaultKey, SsgKeyStoreManager ssgKeyStoreManager, PasswordHasher passwordHasher, SecureRandom secureRandom) {
        this.d = defaultKey;
        this.e = ssgKeyStoreManager;
        this.h = passwordHasher;
        this.c = secureRandom;
    }

    /*
     * Unable to fully structure code
     */
    public AdminLoginResult loginNew(String var1_1, String var2_2) throws SecurityException, LoginException {
        block32: {
            block34: {
                block33: {
                    block39: {
                        block38: {
                            block37: {
                                var3_3 = RemoteUtils.getClientCertificate();
                                var4_4 = true;
                                var5_5 = null;
                                try {
                                    var5_5 = RemoteUtils.getClientHost();
                                }
                                catch (ServerNotActiveException var6_6) {
                                    var4_4 = false;
                                }
                                if (var1_1 == null) ** GOTO lbl28
                                if (var2_2 == null) ** GOTO lbl28
                                break block37;
                                catch (ServerNotActiveException v0) {
                                    throw AdminLoginImpl.a(v0);
                                }
                            }
                            if (var3_3 != null) break block32;
                            break block38;
                            catch (ServerNotActiveException v1) {
                                throw AdminLoginImpl.a(v1);
                            }
                        }
                        if (!var2_2.isEmpty()) break block32;
                        break block39;
                        catch (ServerNotActiveException v2) {
                            throw AdminLoginImpl.a(v2);
                        }
                    }
                    try {
                        block40: {
                            if (!var4_4) break block33;
                            break block40;
                            catch (ServerNotActiveException v3) {
                                throw AdminLoginImpl.a(v3);
                            }
                        }
                        v4 = AdminLoginImpl.j[35] + var5_5;
                        break block34;
                    }
                    catch (ServerNotActiveException v5) {
                        throw AdminLoginImpl.a(v5);
                    }
                }
                var10_9 = AdminLoginImpl.j;
                v4 = var10_9[1];
            }
            var6_7 = v4;
            var10_9 = AdminLoginImpl.j;
            this.getApplicationContext().publishEvent((ApplicationEvent)new FailedAdminLoginEvent((Object)this, var5_5, var10_9[25] + var1_1 + var10_9[9] + var6_7));
            throw new SecurityException(var10_9[3]);
        }
        var6_8 = var1_1;
        try {
            block36: {
                block35: {
                    if (!var1_1.equalsIgnoreCase("")) {
                        var7_16 = LoginCredentials.makeLoginCredentials((SecurityToken)new UsernamePasswordSecurityToken(SecurityTokenType.UNKNOWN, var1_1, var2_2.toCharArray()), null);
                    } else {
                        try {
                            if (var3_3 == null) {
                                throw new SecurityException(AdminLoginImpl.j[41]);
                            }
                        }
                        catch (ServerNotActiveException v6) {
                            throw AdminLoginImpl.a(v6);
                        }
                        var7_16 = LoginCredentials.makeLoginCredentials((SecurityToken)new TlsClientCertToken(var3_3), null);
                        var6_8 = var7_16.getLogin();
                    }
                    try {
                        var9_18 = this.b.authenticate(var7_16);
                        try {
                            v7 = var9_18 != null ? var9_18.getUser() : null;
                        }
                        catch (ServerNotActiveException v8) {
                            throw AdminLoginImpl.a(v8);
                        }
                        var8_23 = v7;
                    }
                    catch (LoginRequireClientCertificateException var9_19) {
                        var10_10 = AdminLoginImpl.j;
                        this.getApplicationContext().publishEvent((ApplicationEvent)new FailedAdminLoginEvent((Object)this, var5_5, var10_10[6] + var6_8 + "'"));
                        throw var9_19;
                    }
                    catch (FailAttemptsExceededException var9_20) {
                        var10_11 = AdminLoginImpl.j;
                        this.getApplicationContext().publishEvent((ApplicationEvent)new FailedAdminLoginEvent((Object)this, var5_5, var10_11[15] + var6_8 + "'"));
                        throw new AccountLockedException("'" + var7_16.getLogin() + var10_11[37]);
                    }
                    catch (FailInactivityPeriodExceededException var9_21) {
                        var10_12 = AdminLoginImpl.j;
                        this.getApplicationContext().publishEvent((ApplicationEvent)new FailedAdminLoginEvent((Object)this, var5_5, var10_12[15] + var6_8 + "'"));
                        throw new AccountLockedException("'" + var7_16.getLogin() + var10_12[24]);
                    }
                    catch (UserDisabledException var9_22) {
                        var10_13 = AdminLoginImpl.j;
                        this.getApplicationContext().publishEvent((ApplicationEvent)new FailedAdminLoginEvent((Object)this, var5_5, var10_13[15] + var6_8 + "'"));
                        throw new FailedLoginException("'" + var7_16.getLogin() + var10_13[32]);
                    }
                    try {
                        if (var8_23 == null) {
                            this.getApplicationContext().publishEvent((ApplicationEvent)new FailedAdminLoginEvent((Object)this, var5_5, AdminLoginImpl.j[15] + var6_8 + "'"));
                            throw new FailedLoginException("'" + var7_16.getLogin() + AdminLoginImpl.j[11]);
                        }
                    }
                    catch (ServerNotActiveException v9) {
                        throw AdminLoginImpl.a(v9);
                    }
                    try {
                        if (!var4_4) break block35;
                        AdminLoginImpl.a.info(AdminLoginImpl.j[4] + var8_23.getLogin() + AdminLoginImpl.j[18] + var5_5 + AdminLoginImpl.j[36]);
                        break block36;
                    }
                    catch (ServerNotActiveException v10) {
                        throw AdminLoginImpl.a(v10);
                    }
                }
                var10_14 = AdminLoginImpl.j;
                AdminLoginImpl.a.finer(var10_14[7] + var8_23.getLogin() + var10_14[21]);
            }
            var9_18 = "-";
            if (var4_4) {
                this.getApplicationContext().publishEvent((ApplicationEvent)new LogonEvent((Object)var8_23, 0));
                var9_18 = this.b.createSession(var8_23, null);
            }
            var10_14 = AdminLoginImpl.j;
            return new AdminLoginResult(var8_23, (String)var9_18, this.i.getProperty(var10_14[38]), BuildInfo.getProductVersion(), this.e());
        }
        catch (ObjectModelException var7_17) {
            var10_15 = AdminLoginImpl.j;
            AdminLoginImpl.a.log(Level.WARNING, var10_15[14], var7_17);
            throw new SecurityException(var10_15[20], var7_17);
        }
    }

    public AdminLoginResult login(String string, String string2) throws SecurityException, LoginException {
        throw new RuntimeException(j[33]);
    }

    public AdminLoginResult loginWithPasswordUpdate(String string, String string2, String string3) throws SecurityException, LoginException, InvalidPasswordException {
        try {
            try {
                if (!this.b.changePassword(string, string2, string3)) {
                    throw new FailedLoginException("'" + string + j[22]);
                }
            }
            catch (SecurityException securityException) {
                throw AdminLoginImpl.a(securityException);
            }
        }
        catch (InvalidPasswordException invalidPasswordException) {
            throw invalidPasswordException;
        }
        catch (ObjectModelException objectModelException) {
            throw new SecurityException(j[20], objectModelException);
        }
        return this.loginNew(string, string3);
    }

    /*
     * Loose catch block
     * Enabled force condition propagation
     * Lifted jumps to return sites
     */
    public void changePassword(String string, String string2) throws LoginException, InvalidPasswordException {
        block12: {
            if (string == null) throw new SecurityException(j[10]);
            try {
                if (string2 != null) break block12;
                throw new SecurityException(j[10]);
                catch (InvalidPasswordException invalidPasswordException) {
                    throw AdminLoginImpl.a((Exception)((Object)invalidPasswordException));
                }
            }
            catch (InvalidPasswordException invalidPasswordException) {
                throw AdminLoginImpl.a((Exception)((Object)invalidPasswordException));
            }
        }
        try {
            User user = JaasUtils.getCurrentUser();
            try {
                if (user == null) {
                    throw new SecurityException(j[13]);
                }
            }
            catch (InvalidPasswordException invalidPasswordException) {
                throw AdminLoginImpl.a((Exception)((Object)invalidPasswordException));
            }
            try {
                if (this.b.changePassword(user, string, string2)) return;
                throw new FailedLoginException("'" + user.getLogin() + j[11]);
            }
            catch (InvalidPasswordException invalidPasswordException) {
                throw AdminLoginImpl.a((Exception)((Object)invalidPasswordException));
            }
        }
        catch (InvalidPasswordException invalidPasswordException) {
            throw invalidPasswordException;
        }
        catch (ObjectModelException objectModelException) {
            String[] stringArray = j;
            a.log(Level.WARNING, stringArray[14], objectModelException);
            throw new SecurityException(stringArray[20], objectModelException);
        }
    }

    public AdminLoginResult resume(String string) throws AuthenticationException {
        User user = null;
        try {
            user = this.b.resumeSession(string);
        }
        catch (ObjectModelException objectModelException) {
            String[] stringArray = j;
            a.log(Level.WARNING, stringArray[34], objectModelException);
        }
        try {
            if (user == null) {
                throw new AuthenticationException(j[0]);
            }
        }
        catch (ObjectModelException objectModelException) {
            throw AdminLoginImpl.a((Exception)((Object)objectModelException));
        }
        return new AdminLoginResult(user, string, this.i.getProperty(j[31]), BuildInfo.getProductVersion(), this.e());
    }

    public void logout() {
        User user = JaasUtils.getCurrentUser();
        this.getApplicationContext().publishEvent((ApplicationEvent)new LogonEvent((Object)user, 1));
        this.b.destroySession(AdminLoginHelper.a());
    }

    public void ping() {
    }

    public Map<String, String> getGatewayInfo() {
        String[] stringArray = j;
        return CollectionUtils.MapBuilder.builder().put((Object)stringArray[2], (Object)BuildInfo.getProductName()).put((Object)stringArray[8], (Object)BuildInfo.getLegacyProductName()).map();
    }

    public String getPreLoginWarningText() {
        return this.i.getProperty(j[23]);
    }

    public void setAdminSessionManager(AdminSessionManager adminSessionManager) {
        this.b = adminSessionManager;
    }

    public AdminLogin.ServerCertificateVerificationInfo getServerCertificateVerificationInfo(String string, byte[] byArray) throws SecurityException {
        try {
            String[] stringArray;
            Object object;
            X509Certificate x509Certificate;
            byte[] byArray2;
            byte[] byArray3;
            byte[] byArray4;
            block16: {
                byArray4 = new byte[20];
                this.c.nextBytes(byArray4);
                byArray3 = null;
                byArray2 = null;
                try {
                    if (string == null || !this.i.getBooleanProperty(j[30], true)) break block16;
                }
                catch (ObjectModelException objectModelException) {
                    throw AdminLoginImpl.a((Exception)((Object)objectModelException));
                }
                try {
                    x509Certificate = (InternalUser)((InternalUserManager)this.c().getUserManager()).findByLogin(string);
                    if (x509Certificate == null) break block16;
                    object = x509Certificate.getHashedPassword();
                    try {
                        if (this.h == null || !this.h.isVerifierRecognized((String)object)) break block16;
                    }
                    catch (ObjectModelException objectModelException) {
                        throw AdminLoginImpl.a((Exception)((Object)objectModelException));
                    }
                    byArray3 = this.h.extractSaltFromVerifier((String)object);
                    byArray2 = ((String)object).getBytes(Charsets.UTF8);
                }
                catch (ObjectModelException objectModelException) {
                    stringArray = j;
                    a.log(Level.WARNING, stringArray[29], objectModelException);
                }
            }
            if (byArray2 == null) {
                byArray2 = (string + AdminLogin.class.hashCode()).getBytes(Charsets.UTF8);
                byArray3 = this.h.extractSaltFromVerifier(this.h.hashPassword(byArray2));
            }
            if (byArray == null) {
                byArray = new byte[]{66, 33, 11, 44};
            }
            x509Certificate = this.b();
            object = CertUtils.getVerifierBytes((byte[])byArray2, (byte[])byArray, (byte[])byArray4, (byte[])x509Certificate.getEncoded());
            stringArray = j;
            return new AdminLogin.ServerCertificateVerificationInfo(stringArray[39], byArray4, byArray3, (byte[])object);
        }
        catch (InvalidIdProviderCfgException invalidIdProviderCfgException) {
            String[] stringArray = j;
            a.log(Level.WARNING, stringArray[14], invalidIdProviderCfgException);
            throw new SecurityException(stringArray[14], invalidIdProviderCfgException);
        }
        catch (NoSuchAlgorithmException noSuchAlgorithmException) {
            String[] stringArray = j;
            a.log(Level.WARNING, stringArray[17], noSuchAlgorithmException);
            throw new SecurityException(stringArray[26], noSuchAlgorithmException);
        }
        catch (CertificateEncodingException certificateEncodingException) {
            String[] stringArray = j;
            a.log(Level.WARNING, stringArray[19], certificateEncodingException);
            throw new SecurityException(stringArray[5], certificateEncodingException);
        }
        catch (IOException iOException) {
            String[] stringArray = j;
            a.log(Level.WARNING, stringArray[19], iOException);
            throw new SecurityException(stringArray[5], iOException);
        }
        catch (ObjectNotFoundException objectNotFoundException) {
            String[] stringArray = j;
            a.log(Level.WARNING, stringArray[19], objectNotFoundException);
            throw new SecurityException(stringArray[5], objectNotFoundException);
        }
        catch (ObjectModelException objectModelException) {
            String[] stringArray = j;
            a.log(Level.WARNING, stringArray[19], objectModelException);
            throw new SecurityException(stringArray[5], objectModelException);
        }
        catch (KeyStoreException keyStoreException) {
            String[] stringArray = j;
            a.log(Level.WARNING, stringArray[19], keyStoreException);
            throw new SecurityException(stringArray[5], keyStoreException);
        }
    }

    public byte[] getServerCertificate(String string) {
        return new byte[0];
    }

    private X509Certificate a() throws IOException {
        return this.d.getServerSslInfo().getCertificate();
    }

    private X509Certificate b() throws IOException, ObjectModelException, KeyStoreException {
        X509Certificate x509Certificate;
        String string;
        Goid goid;
        block12: {
            HttpServletRequest httpServletRequest = RemoteUtils.getHttpServletRequest();
            try {
                if (httpServletRequest == null) {
                    throw new SecurityException(j[27]);
                }
            }
            catch (IOException iOException) {
                throw AdminLoginImpl.a(iOException);
            }
            SsgConnector ssgConnector = HttpTransportModule.getConnector((ServletRequest)httpServletRequest);
            try {
                if (ssgConnector == null) {
                    throw new SecurityException(j[28]);
                }
            }
            catch (IOException iOException) {
                throw AdminLoginImpl.a(iOException);
            }
            goid = ssgConnector.getKeystoreGoid();
            string = ssgConnector.getKeyAlias();
            try {
                try {
                    if (goid != null && string != null) break block12;
                }
                catch (IOException iOException) {
                    throw AdminLoginImpl.a(iOException);
                }
                return this.a();
            }
            catch (IOException iOException) {
                throw AdminLoginImpl.a(iOException);
            }
        }
        SsgKeyEntry ssgKeyEntry = this.e.lookupKeyByKeyAlias(string, goid);
        try {
            x509Certificate = ssgKeyEntry == null ? this.a() : ssgKeyEntry.getCertificate();
        }
        catch (IOException iOException) {
            throw AdminLoginImpl.a(iOException);
        }
        return x509Certificate;
    }

    public Config getServerConfig() {
        return this.i;
    }

    public void setServerConfig(Config config) {
        this.i = config;
    }

    public void afterPropertiesSet() throws Exception {
        this.d();
    }

    private InternalIdentityProvider c() throws ObjectModelException, InvalidIdProviderCfgException {
        IdentityProvider identityProvider = this.g.getProvider(IdentityProviderConfigManager.INTERNALPROVIDER_SPECIAL_GOID);
        try {
            if (!(identityProvider instanceof InternalIdentityProvider)) {
                throw new IllegalStateException(j[40]);
            }
        }
        catch (ObjectModelException objectModelException) {
            throw AdminLoginImpl.a((Exception)((Object)objectModelException));
        }
        return (InternalIdentityProvider)identityProvider;
    }

    public void setIdentityProviderFactory(IdentityProviderFactory identityProviderFactory) {
        this.g = identityProviderFactory;
    }

    public void setIdentityProviderConfigManager(IdentityProviderConfigManager identityProviderConfigManager) {
        this.f = identityProviderConfigManager;
    }

    private void d() {
        block4: {
            try {
                try {
                    if (this.f != null && this.g != null) break block4;
                }
                catch (SecurityException securityException) {
                    throw AdminLoginImpl.a(securityException);
                }
                throw new IllegalArgumentException(j[12]);
            }
            catch (SecurityException securityException) {
                throw AdminLoginImpl.a(securityException);
            }
        }
    }

    private String e() {
        String string;
        block2: {
            string = this.i.getProperty(j[16]);
            try {
                if (string == null || !string.trim().isEmpty()) break block2;
            }
            catch (SecurityException securityException) {
                throw AdminLoginImpl.a(securityException);
            }
            string = null;
        }
        return string;
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[42];
                var3_1 = 0;
                var2_2 = "9\u001bG\u00056qT\u0011\rR\u0019:pNX\bR\u0004?zD\u0007\u0014\u0001P\f?sY\u0014\u001f\u000fG\b$~YV\u001eA\u00027jC\f@]\f>z(-\u001dV\u001f=~M\u001dNR\u00037?P\u0019\u001d@\u001a<mDX\u000fA\bs}O\f\u0006\u0013\u001f6nU\u0011\u001cV\t}\u0006-\u001dV\u001fs8\f+\u000bA\u001b6m\u0000=\u001cA\u0002!\u001e>\u000fZ\u00016{\u0000\u0019\n^\u0004=?L\u0017\tZ\u0003syO\nN_\u00024vNXI\u0006-\u001dV\u001fs8\u001a\u001f\u000fG\b$~YV\u001eA\u00027jC\f@_\b4~C\u0001 R\u00006\u0002_N1\u001b\u001bA\u001f6qT(\u000f@\u001e$pR\u001cNR\u00037?N\u001d\u0019c\f lW\u0017\u001cWM2mEX\f\\\u0019;?R\u001d\u001fF\u0004!zD\u001c_NP\u0002&sDX\u0000\\\u0019s}EX\u000fF\u0019;zN\f\u0007P\f'zD\u00191>p s~N\u001cNz=\u0015?A\n\u000b\u0013\u001f6nU\u0011\u001cV\t\u001e9\u001bG\u00056qT\u0011\rR\u0019:pNX\u000bA\u001f<m\fX\u0000\\M&lE\n@\u001d9\u001bG\u00056qT\u0011\rR\u0019:pNX\u001eA\u0002%vD\u001d\u001c\u0013\b!mO\n\u001e>\u000fZ\u00016{\u0000\u0019\n^\u0004=?L\u0017\tZ\u0003syO\nN_\u00024vNXI\u0013\u0014\u0001T\u0002=1W\u0019\u001c]\u0004=xb\u0019\u0000]\b!\f+\u000bA\u001b6m\u0000\u001d\u001cA\u0002!\u0015_N_\u00024xE\u001cNZ\u0003syR\u0017\u0003\u0013$\u0003?\u0007\f+\u000bA\u001b6m\u0000\u001d\u001cA\u0002!\u00159\u001bG\u00056qT\u0011\rR\u0019:pNX\bR\u0004?zD\u0014_N_\u00024xE\u001cNZ\u0003ssO\u001b\u000f_\u0001*1\u001c_NP\u0002&sDX\u0000\\\u0019s}EX\u000fF\u0019;zN\f\u0007P\f'zD\u001d\b\u0001_\u00040fm\u0019\u0000R\n6m\u000e\b\u001cV\u0001<xI\u00169R\u001f=vN\u001f\u001d_NV\u00150zE\u001c\u000bWM:qA\u001b\u001aZ\u001b:kYX\u001eV\u001f:pDV\u0018>\u000fZ\u00016{\u0000\u0019\n^\u0004=?L\u0017\tZ\u0003syO\nN\u0014\f+\u000bA\u001b6m\u0000=\u001cA\u0002!69\n^\u0004=?R\u001d\u001fF\b k\u0000\u001c\u0007@\f?sO\u000f\u000bWWsQOX\u001cV\u001c&zS\fNP\u0002=kE\u0000\u001a\u0013\f%~I\u0014\u000fQ\u00016U9\n^\u0004=?R\u001d\u001fF\b k\u0000\u001c\u0007@\f?sO\u000f\u000bWWsJN\u0019\f_\bskOX\nV\u00196mM\u0011\u0000VM$wI\u001b\u0006\u0013\u000e<qN\u001d\rG\u0002!?T\u0010\u0007@M!zQ\r\u000b@\u0019s|A\u0015\u000b\u0013\u0004=?O\u0016\u001d9\u001bG\u00056qT\u0011\rR\u0019:pNX\u001eA\u0002%vD\u001d\u001c\u0013\b!mO\n!\u0019\n^\u0004=1C\u001d\u001cG\u00045vC\u0019\u001aV):lC\u0017\u0018V\u001f*ZN\u0019\f_\b7\u001d\b\u0001_\u00040fm\u0019\u0000R\n6m\u000e\u000e\u000bA\u001e:pNV\u0003Z\u0003:rU\u0015\u000e_NZ\u001es{I\u000b\u000fQ\u00016{\u000eV,\u0006VM0sI\u001d\u0000GM\u0003pL\u0011\rJM\u001e~N\u0019\tV\u001fsiE\n\u001dZ\u0002=?I\u000bNG\u0002<?O\u0014\n\u0013\u0019<?L\u0017\t\u0013\u0004=?T\u0017NG\u0005:l\u0000\u000e\u000bA\u001e:pNX\u0001UM'wEX)R\u00196hA\u0001@\u0017=\u001cA\u0002!?R\u001d\u001dF\u0000:qGX\u001dV\u001e vO\u0016@\b\u001e\u001c\\\u0000sVpX\u0002_@&_NV\u00150zE\u001c\u000bWM>~XVNU\f:sE\u001cN_\u00024pNX\u000fG\u00196rP\f\u001d\u001d\u001d\b\u0001_\u00040fm\u0019\u0000R\n6m\u000e\u000e\u000bA\u001e:pNV\u0003Z\u0003:rU\u0015\b4Ye+~)\u000eH";
                var4_3 = "9\u001bG\u00056qT\u0011\rR\u0019:pNX\bR\u0004?zD\u0007\u0014\u0001P\f?sY\u0014\u001f\u000fG\b$~YV\u001eA\u00027jC\f@]\f>z(-\u001dV\u001f=~M\u001dNR\u00037?P\u0019\u001d@\u001a<mDX\u000fA\bs}O\f\u0006\u0013\u001f6nU\u0011\u001cV\t}\u0006-\u001dV\u001fs8\f+\u000bA\u001b6m\u0000=\u001cA\u0002!\u001e>\u000fZ\u00016{\u0000\u0019\n^\u0004=?L\u0017\tZ\u0003syO\nN_\u00024vNXI\u0006-\u001dV\u001fs8\u001a\u001f\u000fG\b$~YV\u001eA\u00027jC\f@_\b4~C\u0001 R\u00006\u0002_N1\u001b\u001bA\u001f6qT(\u000f@\u001e$pR\u001cNR\u00037?N\u001d\u0019c\f lW\u0017\u001cWM2mEX\f\\\u0019;?R\u001d\u001fF\u0004!zD\u001c_NP\u0002&sDX\u0000\\\u0019s}EX\u000fF\u0019;zN\f\u0007P\f'zD\u00191>p s~N\u001cNz=\u0015?A\n\u000b\u0013\u001f6nU\u0011\u001cV\t\u001e9\u001bG\u00056qT\u0011\rR\u0019:pNX\u000bA\u001f<m\fX\u0000\\M&lE\n@\u001d9\u001bG\u00056qT\u0011\rR\u0019:pNX\u001eA\u0002%vD\u001d\u001c\u0013\b!mO\n\u001e>\u000fZ\u00016{\u0000\u0019\n^\u0004=?L\u0017\tZ\u0003syO\nN_\u00024vNXI\u0013\u0014\u0001T\u0002=1W\u0019\u001c]\u0004=xb\u0019\u0000]\b!\f+\u000bA\u001b6m\u0000\u001d\u001cA\u0002!\u0015_N_\u00024xE\u001cNZ\u0003syR\u0017\u0003\u0013$\u0003?\u0007\f+\u000bA\u001b6m\u0000\u001d\u001cA\u0002!\u00159\u001bG\u00056qT\u0011\rR\u0019:pNX\bR\u0004?zD\u0014_N_\u00024xE\u001cNZ\u0003ssO\u001b\u000f_\u0001*1\u001c_NP\u0002&sDX\u0000\\\u0019s}EX\u000fF\u0019;zN\f\u0007P\f'zD\u001d\b\u0001_\u00040fm\u0019\u0000R\n6m\u000e\b\u001cV\u0001<xI\u00169R\u001f=vN\u001f\u001d_NV\u00150zE\u001c\u000bWM:qA\u001b\u001aZ\u001b:kYX\u001eV\u001f:pDV\u0018>\u000fZ\u00016{\u0000\u0019\n^\u0004=?L\u0017\tZ\u0003syO\nN\u0014\f+\u000bA\u001b6m\u0000=\u001cA\u0002!69\n^\u0004=?R\u001d\u001fF\b k\u0000\u001c\u0007@\f?sO\u000f\u000bWWsQOX\u001cV\u001c&zS\fNP\u0002=kE\u0000\u001a\u0013\f%~I\u0014\u000fQ\u00016U9\n^\u0004=?R\u001d\u001fF\b k\u0000\u001c\u0007@\f?sO\u000f\u000bWWsJN\u0019\f_\bskOX\nV\u00196mM\u0011\u0000VM$wI\u001b\u0006\u0013\u000e<qN\u001d\rG\u0002!?T\u0010\u0007@M!zQ\r\u000b@\u0019s|A\u0015\u000b\u0013\u0004=?O\u0016\u001d9\u001bG\u00056qT\u0011\rR\u0019:pNX\u001eA\u0002%vD\u001d\u001c\u0013\b!mO\n!\u0019\n^\u0004=1C\u001d\u001cG\u00045vC\u0019\u001aV):lC\u0017\u0018V\u001f*ZN\u0019\f_\b7\u001d\b\u0001_\u00040fm\u0019\u0000R\n6m\u000e\u000e\u000bA\u001e:pNV\u0003Z\u0003:rU\u0015\u000e_NZ\u001es{I\u000b\u000fQ\u00016{\u000eV,\u0006VM0sI\u001d\u0000GM\u0003pL\u0011\rJM\u001e~N\u0019\tV\u001fsiE\n\u001dZ\u0002=?I\u000bNG\u0002<?O\u0014\n\u0013\u0019<?L\u0017\t\u0013\u0004=?T\u0017NG\u0005:l\u0000\u000e\u000bA\u001e:pNX\u0001UM'wEX)R\u00196hA\u0001@\u0017=\u001cA\u0002!?R\u001d\u001dF\u0000:qGX\u001dV\u001e vO\u0016@\b\u001e\u001c\\\u0000sVpX\u0002_@&_NV\u00150zE\u001c\u000bWM>~XVNU\f:sE\u001cN_\u00024pNX\u000fG\u00196rP\f\u001d\u001d\u001d\b\u0001_\u00040fm\u0019\u0000R\n6m\u000e\u000e\u000bA\u001e:pNV\u0003Z\u0003:rU\u0015\b4Ye+~)\u000eH".length();
                var1_4 = 21;
                var0_5 = -1;
lbl7:
                // 2 sources

                while (true) {
                    v0 = 17;
                    v1 = ++var0_5;
                    v2 = var2_2.substring(v1, v1 + var1_4);
                    v3 = -1;
                    break block9;
                    break;
                }
lbl13:
                // 1 sources

                while (true) {
                    var5[var3_1++] = AdminLoginImpl.a(v0, AdminLoginImpl.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "2\bO\b>6G\u001e\u0013\u001a\u00023xMQ\u0013R\u0001z\u007fG\u0005\u0002H\n;z\t\u0018\u0003_\n.\u007f]\bGJ\u00165`@\u0015\u0002HE1$\u0014_\u00164wD\u0014G[\n>6Y\u0010\u0014I\u00135dMQ\bHD9s[\u0005\u000e\\\r9w]\u0014GS\u0017zdL\u0000\u0012S\u0016?r\u0007";
                    var4_3 = "2\bO\b>6G\u001e\u0013\u001a\u00023xMQ\u0013R\u0001z\u007fG\u0005\u0002H\n;z\t\u0018\u0003_\n.\u007f]\bGJ\u00165`@\u0015\u0002HE1$\u0014_\u00164wD\u0014G[\n>6Y\u0010\u0014I\u00135dMQ\bHD9s[\u0005\u000e\\\r9w]\u0014GS\u0017zdL\u0000\u0012S\u0016?r\u0007".length();
                    var1_4 = 46;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 24;
                        v4 = ++var0_5;
                        v2 = var2_2.substring(v4, v4 + var1_4);
                        v3 = 0;
                        break block9;
                        break;
                    }
                    break;
                }
lbl28:
                // 1 sources

                while (true) {
                    var5[var3_1++] = AdminLoginImpl.a(v0, AdminLoginImpl.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    break block10;
                    break;
                }
            }
            switch (v3) {
                default: {
                    ** continue;
                }
                ** case 0:
lbl39:
                // 1 sources

                ** continue;
            }
        }
        AdminLoginImpl.j = var5;
        AdminLoginImpl.a = Logger.getLogger(AdminLoginImpl.class.getName());
    }

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

    private static char[] a(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x31);
        }
        return cArray;
    }

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String a(int n2, char[] cArray) {
        char[] cArray2;
        block11: {
            int n3;
            int n4;
            int n5;
            block10: {
                n5 = n2;
                cArray2 = cArray;
                n4 = cArray.length;
                n3 = 0;
                if (!true) break block10;
                n4 = n4;
                if (n4 <= n3) break block11;
            }
            do {
                n5 = n5;
                cArray2 = cArray2;
                int n6 = n3;
                cArray2[n6] = (char)(cArray2[n6] ^ (n5 ^ (switch (n3 % 7) {
                    case 0 -> 105;
                    case 1 -> 127;
                    case 2 -> 34;
                    case 3 -> 124;
                    case 4 -> 66;
                    case 5 -> 14;
                    default -> 49;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

