/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  org.apache.ftpserver.ftplet.Authentication
 *  org.apache.ftpserver.ftplet.AuthenticationFailedException
 *  org.apache.ftpserver.ftplet.Authority
 *  org.apache.ftpserver.ftplet.FtpException
 *  org.apache.ftpserver.ftplet.User
 *  org.apache.ftpserver.ftplet.UserManager
 *  org.apache.ftpserver.usermanager.AnonymousAuthentication
 *  org.apache.ftpserver.usermanager.UsernamePasswordAuthentication
 *  org.apache.ftpserver.usermanager.impl.BaseUser
 *  org.apache.ftpserver.usermanager.impl.ConcurrentLoginPermission
 *  org.apache.ftpserver.usermanager.impl.TransferRatePermission
 *  org.apache.ftpserver.usermanager.impl.WritePermission
 *  org.jetbrains.annotations.Nullable
 */
package com.l7tech.server.transport.ftp;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.ftpserver.ftplet.Authentication;
import org.apache.ftpserver.ftplet.AuthenticationFailedException;
import org.apache.ftpserver.ftplet.Authority;
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.ftplet.User;
import org.apache.ftpserver.ftplet.UserManager;
import org.apache.ftpserver.usermanager.AnonymousAuthentication;
import org.apache.ftpserver.usermanager.UsernamePasswordAuthentication;
import org.apache.ftpserver.usermanager.impl.BaseUser;
import org.apache.ftpserver.usermanager.impl.ConcurrentLoginPermission;
import org.apache.ftpserver.usermanager.impl.TransferRatePermission;
import org.apache.ftpserver.usermanager.impl.WritePermission;
import org.jetbrains.annotations.Nullable;

class g
implements UserManager {
    private static final Logger a;
    private static final String b;
    private final int c;
    private final List<Authority> d;
    private static final String[] e;

    public g(int n2, int n3, int n4) {
        this.c = n4;
        this.d = Collections.unmodifiableList(Arrays.asList(new ConcurrentLoginPermission(n2, n3), new TransferRatePermission(0, 0), new WritePermission("/")));
    }

    public User authenticate(Authentication authentication) throws AuthenticationFailedException {
        User user;
        block4: {
            block5: {
                block2: {
                    block3: {
                        if (!(authentication instanceof AnonymousAuthentication)) break block3;
                        String[] stringArray = e;
                        user = this.a(stringArray[5], null);
                        a.log(Level.FINE, stringArray[6]);
                        break block4;
                    }
                    if (!(authentication instanceof UsernamePasswordAuthentication)) break block5;
                    UsernamePasswordAuthentication usernamePasswordAuthentication = (UsernamePasswordAuthentication)authentication;
                    String string = usernamePasswordAuthentication.getUsername();
                    String string2 = usernamePasswordAuthentication.getPassword();
                    try {
                        if (string == null || string2 == null) break block2;
                    }
                    catch (AuthenticationFailedException authenticationFailedException) {
                        throw g.a((FtpException)((Object)authenticationFailedException));
                    }
                    user = this.a(string, string2);
                    String[] stringArray = e;
                    a.log(Level.FINE, stringArray[15], string);
                    break block4;
                }
                String[] stringArray = e;
                throw new AuthenticationFailedException(stringArray[7]);
            }
            throw new AuthenticationFailedException(e[8]);
        }
        return user;
    }

    public void delete(String string) throws FtpException {
        throw new FtpException(e[11]);
    }

    public boolean doesExist(String string) throws FtpException {
        a.log(Level.FINER, e[2], string);
        return true;
    }

    public String getAdminName() throws FtpException {
        a.log(Level.FINER, e[0]);
        return null;
    }

    public String[] getAllUserNames() throws FtpException {
        a.log(Level.FINER, e[13]);
        return null;
    }

    public User getUserByName(String string) throws FtpException {
        User user = null;
        String[] stringArray = e;
        if (stringArray[12].equals(string)) {
            user = this.a(stringArray[12], null);
            a.log(Level.FINER, stringArray[4]);
        } else if (string != null) {
            user = this.a(string, null);
            stringArray = e;
            a.log(Level.FINER, stringArray[10], string);
        }
        try {
            if (user == null) {
                throw new FtpException(e[14] + string + e[3]);
            }
        }
        catch (FtpException ftpException) {
            throw g.a(ftpException);
        }
        return user;
    }

    public boolean isAdmin(String string) throws FtpException {
        a.log(Level.FINER, e[1], string);
        return false;
    }

    public void save(User user) throws FtpException {
        throw new FtpException(e[9]);
    }

    private User a(String string, @Nullable String string2) {
        BaseUser baseUser = new BaseUser();
        baseUser.setEnabled(true);
        baseUser.setName(string);
        baseUser.setPassword(string2);
        baseUser.setHomeDirectory("/");
        baseUser.setMaxIdleTime(this.c);
        baseUser.setAuthorities(this.d);
        return baseUser;
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[16];
                var3_1 = 0;
                var2_2 = "}\u00188zHNuH\u000e4gIU&R\u001d8v\u0006UcM\t0`RBb\u0012\"i\u000f0a\u0006Nu\u001c\u0012:g\u0006FbQ\u0015;zUSt]\b:a\u0006\u0000!GL(4\u0001\t\u0014i\u000f0a\u0006B~U\u000f!`\u0006\u0000!GL(4\u0001\t\u0002\u001bR\u0017{\u0019!gOIa\u001c\u001d;|H^kS\t&3STcNR\t]\u0012:}_JiI\u000f\u001d}\t!{CIrU\u001f4gCC&]\u0012:}_JiI\u000fufUBt\u0012'}\t!{CIrU\u001f4gOHh\u001c\u001a4zJBb\u001cT;|\u0006DtY\u00180}RNgP\u000f|=\u001ei\u0012&fVWiN\b0w\u0006DtY\u00180}RNgP\\3|TJgHR\u0013o\u001d#v\u0006IiH\\&fVWiN\b0w\b\u0015{\u0019!gOIa\u001c\t&vT\u0007!\u001b\u0007en\u0001\u0000(\u0015x\u00199vRB&R\u0013!3URvL\u0013'gCC(\t]\u0012:}_JiI\u000f\u0018i\u000f0aHFkY\\9zUS&N\u0019$fCTrY\u0018{";
                var4_3 = "}\u00188zHNuH\u000e4gIU&R\u001d8v\u0006UcM\t0`RBb\u0012\"i\u000f0a\u0006Nu\u001c\u0012:g\u0006FbQ\u0015;zUSt]\b:a\u0006\u0000!GL(4\u0001\t\u0014i\u000f0a\u0006B~U\u000f!`\u0006\u0000!GL(4\u0001\t\u0002\u001bR\u0017{\u0019!gOIa\u001c\u001d;|H^kS\t&3STcNR\t]\u0012:}_JiI\u000f\u001d}\t!{CIrU\u001f4gCC&]\u0012:}_JiI\u000fufUBt\u0012'}\t!{CIrU\u001f4gOHh\u001c\u001a4zJBb\u001cT;|\u0006DtY\u00180}RNgP\u000f|=\u001ei\u0012&fVWiN\b0w\u0006DtY\u00180}RNgP\\3|TJgHR\u0013o\u001d#v\u0006IiH\\&fVWiN\b0w\b\u0015{\u0019!gOIa\u001c\t&vT\u0007!\u001b\u0007en\u0001\u0000(\u0015x\u00199vRB&R\u0013!3URvL\u0013'gCC(\t]\u0012:}_JiI\u000f\u0018i\u000f0aHFkY\\9zUS&N\u0019$fCTrY\u0018{".length();
                var1_4 = 29;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = g.a(v0, g.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "\u000bmR\u0003d+\u000b*>Q\u001e1+\u0000~9\u001b\u001fkC\u0019!+\u00107}V\u0005!!D+mR\u0003dbC%.JVck";
                    var4_3 = "\u000bmR\u0003d+\u000b*>Q\u001e1+\u0000~9\u001b\u001fkC\u0019!+\u00107}V\u0005!!D+mR\u0003dbC%.JVck".length();
                    var1_4 = 16;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 3;
                        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++] = g.a(v0, g.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;
            }
        }
        g.e = var5;
        g.b = g.e[12];
        g.a = Logger.getLogger(g.class.getName());
    }

    private static FtpException a(FtpException ftpException) {
        return ftpException;
    }

    private static char[] a(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x67);
        }
        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 -> 93;
                    case 1 -> 29;
                    case 2 -> 52;
                    case 3 -> 114;
                    case 4 -> 71;
                    case 5 -> 70;
                    default -> 103;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

