/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.cluster.ClusterProperty
 *  com.l7tech.gateway.common.cluster.ClusterPropertyDescriptor
 *  com.l7tech.util.CollectionUtils
 *  com.l7tech.util.CollectionUtils$MapBuilder
 *  com.l7tech.util.Config
 *  com.l7tech.util.ConfigFactory$ConfigProviderSpi
 *  com.l7tech.util.ConfigFactory$DefaultConfig
 *  com.l7tech.util.ConfigFactory$DefaultConfig$ValidatorFactory
 *  com.l7tech.util.Functions
 *  com.l7tech.util.Functions$Unary
 *  com.l7tech.util.Option
 *  com.l7tech.util.SyspropUtil
 *  com.l7tech.util.ValidationUtils$Validator
 *  org.jetbrains.annotations.NotNull
 *  org.jetbrains.annotations.Nullable
 *  org.springframework.jmx.export.annotation.ManagedAttribute
 *  org.springframework.jmx.export.annotation.ManagedOperation
 *  org.springframework.jmx.export.annotation.ManagedResource
 */
package com.l7tech.server;

import com.l7tech.gateway.common.cluster.ClusterProperty;
import com.l7tech.gateway.common.cluster.ClusterPropertyDescriptor;
import com.l7tech.server.ax;
import com.l7tech.server.ay;
import com.l7tech.server.b;
import com.l7tech.server.cluster.ClusterPropertyCache;
import com.l7tech.server.cluster.ClusterPropertyListener;
import com.l7tech.util.CollectionUtils;
import com.l7tech.util.Config;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.Functions;
import com.l7tech.util.Option;
import com.l7tech.util.SyspropUtil;
import com.l7tech.util.ValidationUtils;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.concurrent.atomic.AtomicReference;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.jmx.export.annotation.ManagedAttribute;
import org.springframework.jmx.export.annotation.ManagedOperation;
import org.springframework.jmx.export.annotation.ManagedResource;

public class ServerConfig
extends ConfigFactory.DefaultConfig
implements ClusterPropertyListener {
    private final AtomicReference<Map<String, String>> a = new AtomicReference();
    private static final String b;
    private static final String c;
    private static final String d;
    private static final String e;
    private static final String f;
    private static final String g;
    private static final String h;
    private static final String i;
    private static final String j;
    private final AtomicReference<Map<String, String>> k = new AtomicReference(Collections.emptyMap());
    private final AtomicReference<Map<String, String>> l = new AtomicReference(Collections.emptyMap());
    private final ReadWriteLock m = new ReentrantReadWriteLock(false);
    private final Properties n;
    private final long o = System.currentTimeMillis();
    private final Logger p = Logger.getLogger(this.getClass().getName());
    private PropertyChangeListener q;
    private static AtomicReference<ClusterPropertyCache> r;
    private String s;
    private static final String[] u;

    @Deprecated
    public static ServerConfig getInstance() {
        return ay.a;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    public void registerServerConfigProperties(@NotNull Iterable<PropertyRegistrationInfo> iterable) {
        try {
            if (iterable == null) {
                ServerConfig.a(0);
            }
        }
        catch (IllegalStateException illegalStateException) {
            throw ServerConfig.a(illegalStateException);
        }
        for (PropertyRegistrationInfo propertyRegistrationInfo : iterable) {
            this.m.writeLock().lock();
            try {
                this.c();
                if (propertyRegistrationInfo.d != null) {
                    String[] stringArray = u;
                    this.n.setProperty(propertyRegistrationInfo.a + stringArray[49], propertyRegistrationInfo.d);
                }
                try {
                    if (propertyRegistrationInfo.c != null) {
                        this.n.setProperty(propertyRegistrationInfo.a + u[16], propertyRegistrationInfo.c);
                    }
                }
                catch (IllegalStateException illegalStateException) {
                    throw ServerConfig.a(illegalStateException);
                }
                try {
                    if (propertyRegistrationInfo.b != null) {
                        this.n.setProperty(propertyRegistrationInfo.a + u[32], propertyRegistrationInfo.b);
                    }
                }
                catch (IllegalStateException illegalStateException) {
                    throw ServerConfig.a(illegalStateException);
                }
                try {
                    if (propertyRegistrationInfo.e == null) continue;
                    this.n.setProperty(propertyRegistrationInfo.a + u[24], propertyRegistrationInfo.e);
                }
                catch (IllegalStateException illegalStateException) {
                    throw ServerConfig.a(illegalStateException);
                }
            }
            finally {
                this.m.writeLock().unlock();
            }
        }
    }

    @Deprecated
    public void registerServerConfigProperties(String[][] stringArray) {
        this.registerServerConfigProperties(Functions.map(Arrays.asList(stringArray), (Functions.Unary)new ax(this)));
    }

    public void setPropertyChangeListener(PropertyChangeListener propertyChangeListener) {
        this.m.writeLock().lock();
        try {
            this.c();
            if (this.q != null) {
                throw new IllegalStateException(u[39]);
            }
            this.q = propertyChangeListener;
        }
        finally {
            this.m.writeLock().unlock();
        }
    }

    public void setClusterPropertyCache(ClusterPropertyCache clusterPropertyCache) {
        r.compareAndSet(null, clusterPropertyCache);
    }

    @Override
    public void clusterPropertyChanged(ClusterProperty clusterProperty, ClusterProperty clusterProperty2) {
        this.a(clusterProperty2, clusterProperty);
    }

    @Override
    public void clusterPropertyDeleted(ClusterProperty clusterProperty) {
        this.a(clusterProperty, clusterProperty);
    }

    public Map<String, String> getClusterPropertyNames() {
        String[] stringArray = u;
        return this.a(stringArray[9], stringArray[2]);
    }

    public Map<String, String> getClusterPropertyDefaults() {
        String[] stringArray = u;
        return this.a(stringArray[9], stringArray[8]);
    }

    public Map<String, String> getClusterPropertyVisibilities() {
        String[] stringArray = u;
        return this.a(stringArray[9], stringArray[36]);
    }

    public Map<String, ValidationUtils.Validator<String>> getClusterPropertyValidators() {
        CollectionUtils.MapBuilder mapBuilder = CollectionUtils.mapBuilder();
        ConfigFactory.DefaultConfig.ValidatorFactory<ValidationUtils.Validator<String>, ValidationUtils.Validator<String>, ValidationUtils.Validator<String>, ValidationUtils.Validator<String>> validatorFactory = this.a();
        String[] stringArray = u;
        Map<String, String> map2 = this.a(stringArray[9], stringArray[2]);
        for (String string : map2.keySet()) {
            String string2 = this.getNameFromClusterName(string);
            mapBuilder.put((Object)string, (Object)((ValidationUtils.Validator)this.buildValidator(string2, validatorFactory, (validator, map) -> {
                try {
                    if (validator != null) {
                        validator.setHints(map);
                    }
                }
                catch (IllegalStateException illegalStateException) {
                    throw ServerConfig.a(illegalStateException);
                }
            })));
        }
        return mapBuilder.unmodifiableMap();
    }

    private ConfigFactory.DefaultConfig.ValidatorFactory<ValidationUtils.Validator<String>, ValidationUtils.Validator<String>, ValidationUtils.Validator<String>, ValidationUtils.Validator<String>> a() {
        return new b(this);
    }

    public String getClusterPropertyName(String string) {
        return this.f(string + u[9]);
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    public String getNameFromClusterName(String string) {
        Map<String, String> map = this.a.get();
        if (map == null) {
            AtomicReference<Map<String, String>> atomicReference = this.a;
            synchronized (atomicReference) {
                map = this.a.get();
                if (map == null) {
                    map = this.e(u[9]);
                    this.a.set(map);
                }
            }
        }
        return map.get(string);
    }

    public String getPropertyDescription(String string) {
        return this.f(string + u[2]);
    }

    public long getServerBootTime() {
        return this.o;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    public String getHostname() {
        String string;
        this.m.readLock().lock();
        try {
            string = this.s;
        }
        finally {
            this.m.readLock().unlock();
        }
        if (string == null) {
            String[] stringArray = u;
            string = this.getProperty(stringArray[1], null);
            if (string == null) {
                try {
                    string = InetAddress.getLocalHost().getCanonicalHostName().toLowerCase();
                }
                catch (UnknownHostException unknownHostException) {
                    try {
                        string = InetAddress.getLocalHost().getHostName().toLowerCase();
                    }
                    catch (UnknownHostException unknownHostException2) {
                        stringArray = u;
                        this.p.warning(stringArray[34]);
                    }
                }
            }
            if (string == null) {
                string = u[7];
            }
            this.m.writeLock().lock();
            try {
                this.c();
                this.s = string;
            }
            finally {
                this.m.writeLock().unlock();
            }
        }
        return string;
    }

    public int getAttachmentDiskThreshold() {
        int n2;
        block5: {
            String[] stringArray = u;
            String string = this.getProperty(stringArray[0], null);
            n2 = 0;
            try {
                if (string == null || string.length() <= 0) break block5;
            }
            catch (NumberFormatException numberFormatException) {
                throw ServerConfig.a(numberFormatException);
            }
            try {
                n2 = Integer.parseInt(string);
            }
            catch (NumberFormatException numberFormatException) {
                // empty catch block
            }
        }
        if (n2 < 1) {
            int n3 = 0x100000;
            String string = u[4] + n3 + ")";
            this.p.severe(string);
            return n3;
        }
        return n2;
    }

    public File getAttachmentDirectory() {
        return this.getLocalDirectoryProperty(u[45], true);
    }

    public File getLocalDirectoryProperty(String string, boolean bl2) {
        File file = this.getLocalDirectoryProperty(string, null, bl2);
        try {
            if (file == null) {
                throw new IllegalStateException(u[51] + string + u[28]);
            }
        }
        catch (IllegalStateException illegalStateException) {
            throw ServerConfig.a(illegalStateException);
        }
        return file;
    }

    public File getLocalDirectoryProperty(String string, String string2, boolean bl2) {
        File file;
        block11: {
            String string3;
            block10: {
                string3 = this.getProperty(string, null);
                try {
                    if (string3 != null && string3.length() >= 1) break block10;
                }
                catch (IllegalStateException illegalStateException) {
                    throw ServerConfig.a(illegalStateException);
                }
                String[] stringArray = u;
                String string4 = stringArray[3] + string + stringArray[44] + string2 + ")";
                this.p.severe(string4);
                return new File(string2);
            }
            file = new File(string3);
            try {
                if (!file.exists()) {
                    file.mkdirs();
                }
            }
            catch (IllegalStateException illegalStateException) {
                throw ServerConfig.a(illegalStateException);
            }
            if (!file.exists()) {
                String[] stringArray = u;
                String string5 = stringArray[5] + string + stringArray[40] + string3 + stringArray[10];
                this.p.severe(string5);
                throw new RuntimeException(string5);
            }
            if (!file.isDirectory()) {
                String[] stringArray = u;
                String string6 = stringArray[5] + string + stringArray[12] + string3 + stringArray[27];
                this.p.severe(string6);
                throw new RuntimeException(string6);
            }
            if (!file.canRead()) {
                String[] stringArray = u;
                String string7 = stringArray[5] + string + stringArray[29] + string3 + stringArray[38];
                this.p.severe(string7);
                throw new RuntimeException(string7);
            }
            try {
                if (!bl2 || file.canWrite()) break block11;
            }
            catch (IllegalStateException illegalStateException) {
                throw ServerConfig.a(illegalStateException);
            }
            String[] stringArray = u;
            String string8 = stringArray[5] + string + stringArray[29] + string3 + stringArray[13];
            this.p.severe(string8);
            throw new RuntimeException(string8);
        }
        return file;
    }

    boolean a(String string) {
        this.m.readLock().lock();
        try {
            String[] stringArray = u;
            boolean bl2 = stringArray[22].equals(this.n.getProperty(string + stringArray[19]));
            return bl2;
        }
        finally {
            this.m.readLock().unlock();
        }
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     * Loose catch block
     */
    public boolean putProperty(String string, String string2) {
        block19: {
            PropertyChangeListener propertyChangeListener;
            String string3;
            block20: {
                block21: {
                    try {
                        if (!this.a(string)) {
                            return false;
                        }
                    }
                    catch (Exception exception) {
                        throw ServerConfig.a(exception);
                    }
                    this.m.writeLock().lock();
                    try {
                        this.c();
                        string3 = (String)this.n.setProperty(string, string2);
                    }
                    finally {
                        this.m.writeLock().unlock();
                    }
                    this.d(string);
                    this.m.readLock().lock();
                    try {
                        propertyChangeListener = this.q;
                    }
                    finally {
                        this.m.readLock().unlock();
                    }
                    if (propertyChangeListener == null) break block19;
                    if (string3 == null) break block20;
                    break block21;
                    catch (Exception exception) {
                        throw ServerConfig.a(exception);
                    }
                }
                try {
                    block22: {
                        if (string2 == null) break block20;
                        break block22;
                        catch (Exception exception) {
                            throw ServerConfig.a(exception);
                        }
                    }
                    if (string3.equals(string2)) break block19;
                }
                catch (Exception exception) {
                    throw ServerConfig.a(exception);
                }
            }
            PropertyChangeEvent propertyChangeEvent = new PropertyChangeEvent(this, string, string3, string2);
            try {
                propertyChangeListener.propertyChange(propertyChangeEvent);
            }
            catch (Exception exception) {
                this.p.log(Level.WARNING, u[43], exception);
            }
        }
        return true;
    }

    public boolean removeProperty(String string) {
        try {
            if (!this.a(string)) {
                return false;
            }
        }
        catch (IllegalStateException illegalStateException) {
            throw ServerConfig.a(illegalStateException);
        }
        this.m.writeLock().lock();
        try {
            this.c();
            this.n.remove(string);
        }
        finally {
            this.m.writeLock().unlock();
        }
        this.d(string);
        return true;
    }

    protected Option<String> getConfigPropertyDirect(String string) {
        String string2;
        block4: {
            if (string.startsWith(u[21])) {
                string2 = this.k.get().get(string);
                try {
                    if (string2 == null) {
                        return Option.optional((Object)SyspropUtil.getProperty((String)string));
                    }
                    break block4;
                }
                catch (IllegalStateException illegalStateException) {
                    throw ServerConfig.a(illegalStateException);
                }
            }
            string2 = string;
        }
        return Option.optional((Object)this.a(string2, true));
    }

    protected ServerConfig(Properties properties, long l2) {
        super(properties, l2);
        String string2;
        this.n = new Properties();
        for (String string2 : properties.stringPropertyNames()) {
            this.n.setProperty(string2, properties.getProperty(string2));
        }
        CollectionUtils.MapBuilder mapBuilder = CollectionUtils.mapBuilder();
        string2 = CollectionUtils.mapBuilder();
        for (String string3 : this.n.stringPropertyNames()) {
            String[] stringArray;
            if (!string3.endsWith((stringArray = u)[17])) continue;
            String string4 = properties.getProperty(string3);
            String string5 = this.expand(string4);
            try {
                if (string5 == null || !string5.startsWith(stringArray[41])) continue;
            }
            catch (IllegalStateException illegalStateException) {
                throw ServerConfig.a(illegalStateException);
            }
            String string6 = string3.substring(0, string3.length() - u[14].length());
            mapBuilder.put((Object)string5, (Object)string6);
            string2.put((Object)string6, (Object)string5);
        }
        this.k.set(mapBuilder.unmodifiableMap());
        this.l.set(string2.unmodifiableMap());
        this.b();
    }

    private String b(String string) {
        return this.a(string, true);
    }

    /*
     * Loose catch block
     */
    private String a(String string, boolean bl2) {
        String string2;
        block33: {
            String string3;
            String string4;
            block32: {
                String string5;
                String[] stringArray;
                block29: {
                    ClusterPropertyCache clusterPropertyCache;
                    String string6;
                    block30: {
                        block36: {
                            block35: {
                                block34: {
                                    block28: {
                                        stringArray = u;
                                        String string7 = string + stringArray[14];
                                        String string8 = string + stringArray[6];
                                        String string9 = string + stringArray[8];
                                        String string10 = string + stringArray[9];
                                        string4 = this.f(string7);
                                        string3 = this.f(string8);
                                        string5 = this.f(string9);
                                        string6 = this.f(string10);
                                        string2 = null;
                                        clusterPropertyCache = r.get();
                                        try {
                                            if (string4 == null || string4.length() <= 0) break block28;
                                        }
                                        catch (Exception exception) {
                                            throw ServerConfig.a(exception);
                                        }
                                        stringArray = u;
                                        this.p.finest(stringArray[47] + string4);
                                        string2 = SyspropUtil.getProperty((String)string4);
                                    }
                                    if (string2 != null) break block29;
                                    if (!bl2) break block29;
                                    break block34;
                                    catch (Exception exception) {
                                        throw ServerConfig.a(exception);
                                    }
                                }
                                if (string6 == null) break block29;
                                break block35;
                                catch (Exception exception) {
                                    throw ServerConfig.a(exception);
                                }
                            }
                            if (string6.length() <= 0) break block29;
                            break block36;
                            catch (Exception exception) {
                                throw ServerConfig.a(exception);
                            }
                        }
                        try {
                            block37: {
                                if (clusterPropertyCache != null) break block30;
                                break block37;
                                catch (Exception exception) {
                                    throw ServerConfig.a(exception);
                                }
                            }
                            this.p.warning(u[48] + string + u[31]);
                            break block29;
                        }
                        catch (Exception exception) {
                            throw ServerConfig.a(exception);
                        }
                    }
                    stringArray = u;
                    this.p.finest(stringArray[46] + string6 + "'");
                    try {
                        ClusterProperty clusterProperty;
                        block31: {
                            clusterProperty = clusterPropertyCache.getCachedEntityByName(string6);
                            try {
                                if (clusterProperty != null) break block31;
                                this.p.finest(stringArray[52] + string6 + "'");
                                break block29;
                            }
                            catch (Exception exception) {
                                throw ServerConfig.a(exception);
                            }
                        }
                        stringArray = u;
                        this.p.finest(stringArray[20] + string6 + stringArray[42] + clusterProperty.getValue() + "'");
                        string2 = clusterProperty.getValue();
                    }
                    catch (Exception exception) {
                        stringArray = u;
                        this.p.log(Level.WARNING, stringArray[11] + string6 + "'", exception);
                    }
                }
                if (string2 == null) {
                    string2 = this.f(string);
                }
                if (string2 == null) {
                    stringArray = u;
                    this.p.finest(stringArray[23] + string5);
                    string2 = string5;
                }
                try {
                    if (string2 == null || string2.length() < 2) break block32;
                }
                catch (Exception exception) {
                    throw ServerConfig.a(exception);
                }
                string2 = this.c(string2);
            }
            try {
                try {
                    try {
                        try {
                            if (string2 == null || !u[22].equalsIgnoreCase(string3)) break block33;
                        }
                        catch (Exception exception) {
                            throw ServerConfig.a(exception);
                        }
                        if (string4 == null) break block33;
                    }
                    catch (Exception exception) {
                        throw ServerConfig.a(exception);
                    }
                    if (string4.length() <= 0) break block33;
                }
                catch (Exception exception) {
                    throw ServerConfig.a(exception);
                }
                System.setProperty(string4, string2);
            }
            catch (Exception exception) {
                throw ServerConfig.a(exception);
            }
        }
        return string2;
    }

    private String c(String string) {
        block7: {
            int n2;
            block6: {
                n2 = string.length();
                char c10 = string.charAt(0);
                char c11 = string.charAt(n2 - 1);
                try {
                    try {
                        try {
                            if (c10 == '\"' && c11 == '\"') break block6;
                        }
                        catch (IllegalStateException illegalStateException) {
                            throw ServerConfig.a(illegalStateException);
                        }
                        if (c10 != '\'') break block7;
                    }
                    catch (IllegalStateException illegalStateException) {
                        throw ServerConfig.a(illegalStateException);
                    }
                    if (c11 != '\'') break block7;
                }
                catch (IllegalStateException illegalStateException) {
                    throw ServerConfig.a(illegalStateException);
                }
            }
            string = string.substring(1, n2 - 1);
        }
        return string;
    }

    private void b() {
        HashSet<String> hashSet;
        this.m.readLock().lock();
        try {
            hashSet = new HashSet<String>(this.n.stringPropertyNames());
        }
        finally {
            this.m.readLock().unlock();
        }
        for (String string : hashSet) {
            try {
                if (string == null) {
                    continue;
                }
            }
            catch (IllegalStateException illegalStateException) {
                throw ServerConfig.a(illegalStateException);
            }
            String[] stringArray = u;
            if (!string.endsWith(stringArray[18])) continue;
            String string2 = string.substring(0, string.length() - stringArray[6].length());
            try {
                if (string2.length() < 1) {
                    continue;
                }
            }
            catch (IllegalStateException illegalStateException) {
                throw ServerConfig.a(illegalStateException);
            }
            this.b(string2);
        }
    }

    private void d(String string) {
        this.notifyPropertyChanged(string);
        String string2 = this.l.get().get(string);
        try {
            if (string2 != null) {
                this.notifyPropertyChanged(string2);
            }
        }
        catch (IllegalStateException illegalStateException) {
            throw ServerConfig.a(illegalStateException);
        }
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     * Loose catch block
     */
    private void a(ClusterProperty clusterProperty, ClusterProperty clusterProperty2) {
        block14: {
            String string;
            String string2;
            PropertyChangeListener propertyChangeListener;
            String string3;
            block17: {
                String string4;
                block16: {
                    block15: {
                        string3 = this.getNameFromClusterName(clusterProperty.getName());
                        if (string3 == null) break block14;
                        this.d(string3);
                        this.m.readLock().lock();
                        try {
                            propertyChangeListener = this.q;
                        }
                        finally {
                            this.m.readLock().unlock();
                        }
                        if (propertyChangeListener == null) break block14;
                        try {
                            block18: {
                                if (clusterProperty2 == null) break block15;
                                break block18;
                                catch (Exception exception) {
                                    throw ServerConfig.a(exception);
                                }
                            }
                            string4 = clusterProperty2.getValue();
                            break block16;
                        }
                        catch (Exception exception) {
                            throw ServerConfig.a(exception);
                        }
                    }
                    string4 = this.a(string3, false);
                }
                string2 = string4;
                string = this.getProperty(string3, null);
                if (string2 == null) break block17;
                try {
                    block19: {
                        if (string == null) break block17;
                        break block19;
                        catch (Exception exception) {
                            throw ServerConfig.a(exception);
                        }
                    }
                    if (string2.equals(string)) break block14;
                }
                catch (Exception exception) {
                    throw ServerConfig.a(exception);
                }
            }
            PropertyChangeEvent propertyChangeEvent = new PropertyChangeEvent(this, string3, string2, string);
            try {
                propertyChangeListener.propertyChange(propertyChangeEvent);
            }
            catch (Exception exception) {
                this.p.log(Level.WARNING, u[25], exception);
            }
        }
    }

    private void c() {
        this.a.set(null);
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    private Map<String, String> e(String string) {
        HashMap<String, String> hashMap = new HashMap<String, String>();
        if (string != null) {
            this.m.readLock().lock();
            try {
                Set<Map.Entry<Object, Object>> set = this.n.entrySet();
                for (Map.Entry<Object, Object> entry : set) {
                    String string2 = (String)entry.getKey();
                    String string3 = (String)entry.getValue();
                    if (string2 == null) continue;
                    try {
                        if (string3 == null) {
                            continue;
                        }
                    }
                    catch (IllegalStateException illegalStateException) {
                        throw ServerConfig.a(illegalStateException);
                    }
                    if (!string2.endsWith(string)) continue;
                    String string4 = string2.substring(0, string2.length() - string.length());
                    hashMap.put(string3, string4);
                }
            }
            finally {
                this.m.readLock().unlock();
            }
        }
        return hashMap;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    public ClusterPropertyDescriptor getClusterPropertyDescriptor(String string) {
        this.m.readLock().lock();
        try {
            String string2 = this.getNameFromClusterName(string);
            if (string2 != null) {
                String string3;
                String string4;
                String string5;
                String string6;
                ClusterPropertyDescriptor clusterPropertyDescriptor;
                ClusterPropertyDescriptor clusterPropertyDescriptor2;
                String[] stringArray = u;
                String string7 = this.f(string2 + stringArray[35]);
                ConfigFactory.DefaultConfig.ValidatorFactory<ValidationUtils.Validator<String>, ValidationUtils.Validator<String>, ValidationUtils.Validator<String>, ValidationUtils.Validator<String>> validatorFactory = this.a();
                try {
                    ClusterPropertyDescriptor clusterPropertyDescriptor3;
                    clusterPropertyDescriptor2 = clusterPropertyDescriptor3;
                    clusterPropertyDescriptor = clusterPropertyDescriptor3;
                    string6 = string;
                    string5 = this.f(string2 + stringArray[2]);
                    string4 = this.f(string2 + stringArray[8]);
                    string3 = string7 == null ? stringArray[26] : string7;
                }
                catch (IllegalStateException illegalStateException) {
                    throw ServerConfig.a(illegalStateException);
                }
                clusterPropertyDescriptor2(string6, string5, string4, Boolean.parseBoolean(string3), Option.optional((Object)((ValidationUtils.Validator)this.buildValidator(string2, validatorFactory, (validator, map) -> {
                    try {
                        if (validator != null) {
                            validator.setHints(map);
                        }
                    }
                    catch (IllegalStateException illegalStateException) {
                        throw ServerConfig.a(illegalStateException);
                    }
                }))));
                ClusterPropertyDescriptor clusterPropertyDescriptor4 = clusterPropertyDescriptor;
                return clusterPropertyDescriptor4;
            }
        }
        finally {
            this.m.readLock().unlock();
        }
        return null;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     * Enabled force condition propagation
     * Lifted jumps to return sites
     */
    private Map<String, String> a(String string, String string2) {
        TreeMap<String, String> treeMap = new TreeMap<String, String>();
        if (string == null) return treeMap;
        this.m.readLock().lock();
        try {
            for (Map.Entry<Object, Object> entry : this.n.entrySet()) {
                String string3 = (String)entry.getKey();
                String string4 = (String)entry.getValue();
                if (string3 == null) continue;
                try {
                    if (string4 == null) {
                        continue;
                    }
                }
                catch (IllegalStateException illegalStateException) {
                    throw ServerConfig.a(illegalStateException);
                }
                try {
                    if (!string3.endsWith(string)) continue;
                    treeMap.put(string4, this.f(string3.substring(0, string3.length() - string.length()) + string2));
                }
                catch (IllegalStateException illegalStateException) {
                    throw ServerConfig.a(illegalStateException);
                    return treeMap;
                }
            }
        }
        finally {
            this.m.readLock().unlock();
        }
    }

    private String f(String string) {
        this.m.readLock().lock();
        try {
            String string2 = this.expand(this.n.getProperty(string));
            return string2;
        }
        finally {
            this.m.readLock().unlock();
        }
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[54];
                var3_1 = 0;
                var2_2 = ">\u001d\u0014$Y&d:\u0007\u0014\u0001S=b\u000b\u0001\u0012 I&f3\r\b7\u0006\u00131T/d:\fq\r\u00056Y<`/\u001d\t*T\r\u000b\u0001\u0005eJ<f/\f\u00121Cn\u0091\u000b\u0001\u0005eJ<f/\f\u00121Cnh+\u001d\u0001&R#l1\u001d$,I%]7\u001b\u00056R!e;I\t6\u001a;g;\f\u0006,T+m\u007f\u0006\u0012eS \u007f>\u0005\t!\u0014nY3\f\u00016_nl1\u001a\u00157_n}7\f@\u0016_-|-\f35[ )\u0018\b\u0014 M/p\u007f\u0000\u0013eJ<f/\f\u0012)Cnj0\u0007\u0006,];{:\rNe\u001af^6\u0005\feO=l\u007f\r\u0005#[;e+I\u000f#\u001a\r\u000b\u0001\u0005eJ<f/\f\u00121Cn\u0012q\u001a\u00051i7z+\f\r\u0015H!y:\u001b\u0014<\u000e\n\u0007\u000b+U9g\u0018\b\u0014 M/p\bq\r\u0005#[;e+\u0010q\n\f0I:l-9\u0012*J+{+\u0010bsI\t6\u001a<l.\u001c\t7_*)=\u001c\u0014eY!|3\r@+U:)=\f@#U;g;I\u000f7\u001a-{:\b\u0014 ^`)\u007f9\f [=l\u007f\f\u000e6O<l\u007f\u001d\b \u001a\th+\f\u0017$Cn`,I\u00107U>l-\u0005\u0019eS z+\b\f)_*' \u001c\u0006\u0015)^ .+I\u0006,T*)<\u0005\u00156N+{\u007f\u0019\u0012*J+{+\u0010@b\u0013\u007f\r\u0005#S l;I\u0004,H+j+\u0006\u0012<\u001aX\u007f\u001e\b,Y&)6\u001a@5H+z:\u0007\u0014eX;}\u007f\u0000\u0013eT!}\u007f\u001e\u0012,N/k3\fNe\u001a\u001ee:\b\u0013 \u001a+g,\u001c\u0012 \u001a:a:I'$N+~>\u0010@,Iny-\u0006\u0010 H\"p\u007f\u0000\u000e6N/e3\f\u0004k\u000fq\u001a\u00196N+d\u000f\u001b\u000f5_<}&\u001e-\f\u0007,I:l-:\u00057L+{\u001c\u0006\u000e#S)Y-\u0006\u0010 H:`:\u001a\fq\r\u00056Y<`/\u001d\t*T\u000fq\u001a\u00196N+d\u000f\u001b\u000f5_<}&\u0012q\u001a\u00051i7z+\f\r\u0015H!y:\u001b\u0014<\bq\u0004\u00151[,e:\u0017\n\u001a\t+]nj3\u001c\u00131_<)/\u001b\u000f5_<}&I\u000b<\u0006\rkVy}:\n\bk\u0004+\u001b\u0015 \u0014\n\u001a\t+]nm:\u000f\u00010V:))\b\f0_n\u0010q\u001f\u0001)S*h+\u0000\u000f+\u0014:p/\f;\n\u0007\u0005=J+j+\f\u0004e_6j:\u0019\u0014,U );\u001c\u0012,T))/\u001b\u000f5_<}&I\u0003-[ n:I\u00053_ }\u007f\r\t6J/}<\u0001N\u0004+\u001b\u0015 [\u007f\u001e\b,Y&)6\u001a@5H+z:\u0007\u0014eX;}\u007f\u0000\u0013eT!}\u007f\b@!S<l<\u001d\u000f7C`)\u007f9\f [=l\u007f\f\u000e6O<l\u007f\u001d\b \u001a\th+\f\u0017$Cn`,I\u00107U>l-\u0005\u0019eS z+\b\f)_*'\u0002xG\u0013\u007f\r\u0005#S l;I\u0004,H+j+\u0006\u0012<\u001a\u001e<\u0006\rjVy}:\n\bjI+{)\f\u0012ji+{)\f\u0012\u0006U o6\u000eYxI\b$Inh\u007f\n\f0I:l-I\u00107U>l-\u001d\t Inb:\u0010@!_(`1\f\u0004i\u001a,|+I\u0014-_nJ3\u001c\u00131_<Y-\u0006\u0010 H:p\u001c\b\u0003-_n`,I\u000e*Nnp:\u001d@$L/`3\b\u0002)_\u0010q\n\f0I:l-9\u0012*J+{+\u0010\u0011-\f\u0007,I:{>\u001d\t*T\u0007g9\u0006\u00130\u0017\u0006\u00131t/d:I\u0010$H/d:\u001d\u00057\u001a f+I\u0013 Nnh1\r@!S=j0\u001f\u00057Cno>\u0000\f ^`\bq\u001f\t6S,e:\bq\u001f\t6S,e:\u0010q\u001f\u0001)S*h+\u0000\u000f+\u0014:p/\fX\u007f\u001e\b,Y&)6\u001a@5H+z:\u0007\u0014eX;}\u007f\u0000\u0013eT!}\u007f\u001b\u0005$^/k3\fNe\u001a\u001ee:\b\u0013 \u001a+g,\u001c\u0012 \u001a:a:I'$N+~>\u0010@,Iny-\u0006\u0010 H\"p\u007f\u0000\u000e6N/e3\f\u0004k#/\u001b\u000f5_<}&*\b$T)l\u0013\u0000\u00131_ l-I\u0001)H+h;\u0010@6_:(\u001bsI\u0004 \\'g:\r@$In}7\f@!S<l<\u001d\u000f7Cn\u000b<\u0006\rkVy}:\n\bk\u0004\u007fT@b;\n\u0007\u0005=J+j+\f\u0004e_6j:\u0019\u0014,U );\u001c\u0012,T))/\u001b\u000f5_<}&I\u0003-[ n:I\u00053_ }\u007f\r\t6J/}<\u0001N_\u007f\u0000\u0013eT!}\u007f\r\u0005#S l;G@ej\"l>\u001a\u0005e_ z*\u001b\u0005eN&h+I\u0014-_nN>\u001d\u00052[7)6\u001a@5H!y:\u001b\f<\u001a-f1\u000f\t\"O<l;G@e\u0012\u0019`3\u0005@0I+);\f\u0006$O\"}\u007f\u0006\u0006e\u0013>\u001d\u0014$Y&d:\u0007\u0014\u0001S<l<\u001d\u000f7C\u001f\u001c\u0001\u0005&Q'g8I\u0006*Hnj3\u001c\u00131_<)/\u001b\u000f5_<}&IG\u0019\u001c\u0001\u0005&Q'g8I3<I:l2I\u00107U>l-\u001d\u0019e\n\u000f\u001b\u000f5_<}&IG\bq\r\u0005#[;e+>\u001e\u001b\u00070W+g+I\u0006*HnI\u0011\u0006\u0014\u000bO\"e\u007f\u0019\u00017[#l+\f\u0012e\u001dkzxI\u000f#\u001akzqL\u0013eW;z+I\u000e*Nnk:I\u000e0V\"%\u0012\u0000\u00136S n\u007f\u000f\t)_nj0\u0007\u0006,];{>\u001d\t*Tny-\u0006\u0010 H:p\u007fN";
                var4_3 = ">\u001d\u0014$Y&d:\u0007\u0014\u0001S=b\u000b\u0001\u0012 I&f3\r\b7\u0006\u00131T/d:\fq\r\u00056Y<`/\u001d\t*T\r\u000b\u0001\u0005eJ<f/\f\u00121Cn\u0091\u000b\u0001\u0005eJ<f/\f\u00121Cnh+\u001d\u0001&R#l1\u001d$,I%]7\u001b\u00056R!e;I\t6\u001a;g;\f\u0006,T+m\u007f\u0006\u0012eS \u007f>\u0005\t!\u0014nY3\f\u00016_nl1\u001a\u00157_n}7\f@\u0016_-|-\f35[ )\u0018\b\u0014 M/p\u007f\u0000\u0013eJ<f/\f\u0012)Cnj0\u0007\u0006,];{:\rNe\u001af^6\u0005\feO=l\u007f\r\u0005#[;e+I\u000f#\u001a\r\u000b\u0001\u0005eJ<f/\f\u00121Cn\u0012q\u001a\u00051i7z+\f\r\u0015H!y:\u001b\u0014<\u000e\n\u0007\u000b+U9g\u0018\b\u0014 M/p\bq\r\u0005#[;e+\u0010q\n\f0I:l-9\u0012*J+{+\u0010bsI\t6\u001a<l.\u001c\t7_*)=\u001c\u0014eY!|3\r@+U:)=\f@#U;g;I\u000f7\u001a-{:\b\u0014 ^`)\u007f9\f [=l\u007f\f\u000e6O<l\u007f\u001d\b \u001a\th+\f\u0017$Cn`,I\u00107U>l-\u0005\u0019eS z+\b\f)_*' \u001c\u0006\u0015)^ .+I\u0006,T*)<\u0005\u00156N+{\u007f\u0019\u0012*J+{+\u0010@b\u0013\u007f\r\u0005#S l;I\u0004,H+j+\u0006\u0012<\u001aX\u007f\u001e\b,Y&)6\u001a@5H+z:\u0007\u0014eX;}\u007f\u0000\u0013eT!}\u007f\u001e\u0012,N/k3\fNe\u001a\u001ee:\b\u0013 \u001a+g,\u001c\u0012 \u001a:a:I'$N+~>\u0010@,Iny-\u0006\u0010 H\"p\u007f\u0000\u000e6N/e3\f\u0004k\u000fq\u001a\u00196N+d\u000f\u001b\u000f5_<}&\u001e-\f\u0007,I:l-:\u00057L+{\u001c\u0006\u000e#S)Y-\u0006\u0010 H:`:\u001a\fq\r\u00056Y<`/\u001d\t*T\u000fq\u001a\u00196N+d\u000f\u001b\u000f5_<}&\u0012q\u001a\u00051i7z+\f\r\u0015H!y:\u001b\u0014<\bq\u0004\u00151[,e:\u0017\n\u001a\t+]nj3\u001c\u00131_<)/\u001b\u000f5_<}&I\u000b<\u0006\rkVy}:\n\bk\u0004+\u001b\u0015 \u0014\n\u001a\t+]nm:\u000f\u00010V:))\b\f0_n\u0010q\u001f\u0001)S*h+\u0000\u000f+\u0014:p/\f;\n\u0007\u0005=J+j+\f\u0004e_6j:\u0019\u0014,U );\u001c\u0012,T))/\u001b\u000f5_<}&I\u0003-[ n:I\u00053_ }\u007f\r\t6J/}<\u0001N\u0004+\u001b\u0015 [\u007f\u001e\b,Y&)6\u001a@5H+z:\u0007\u0014eX;}\u007f\u0000\u0013eT!}\u007f\b@!S<l<\u001d\u000f7C`)\u007f9\f [=l\u007f\f\u000e6O<l\u007f\u001d\b \u001a\th+\f\u0017$Cn`,I\u00107U>l-\u0005\u0019eS z+\b\f)_*'\u0002xG\u0013\u007f\r\u0005#S l;I\u0004,H+j+\u0006\u0012<\u001a\u001e<\u0006\rjVy}:\n\bjI+{)\f\u0012ji+{)\f\u0012\u0006U o6\u000eYxI\b$Inh\u007f\n\f0I:l-I\u00107U>l-\u001d\t Inb:\u0010@!_(`1\f\u0004i\u001a,|+I\u0014-_nJ3\u001c\u00131_<Y-\u0006\u0010 H:p\u001c\b\u0003-_n`,I\u000e*Nnp:\u001d@$L/`3\b\u0002)_\u0010q\n\f0I:l-9\u0012*J+{+\u0010\u0011-\f\u0007,I:{>\u001d\t*T\u0007g9\u0006\u00130\u0017\u0006\u00131t/d:I\u0010$H/d:\u001d\u00057\u001a f+I\u0013 Nnh1\r@!S=j0\u001f\u00057Cno>\u0000\f ^`\bq\u001f\t6S,e:\bq\u001f\t6S,e:\u0010q\u001f\u0001)S*h+\u0000\u000f+\u0014:p/\fX\u007f\u001e\b,Y&)6\u001a@5H+z:\u0007\u0014eX;}\u007f\u0000\u0013eT!}\u007f\u001b\u0005$^/k3\fNe\u001a\u001ee:\b\u0013 \u001a+g,\u001c\u0012 \u001a:a:I'$N+~>\u0010@,Iny-\u0006\u0010 H\"p\u007f\u0000\u000e6N/e3\f\u0004k#/\u001b\u000f5_<}&*\b$T)l\u0013\u0000\u00131_ l-I\u0001)H+h;\u0010@6_:(\u001bsI\u0004 \\'g:\r@$In}7\f@!S<l<\u001d\u000f7Cn\u000b<\u0006\rkVy}:\n\bk\u0004\u007fT@b;\n\u0007\u0005=J+j+\f\u0004e_6j:\u0019\u0014,U );\u001c\u0012,T))/\u001b\u000f5_<}&I\u0003-[ n:I\u00053_ }\u007f\r\t6J/}<\u0001N_\u007f\u0000\u0013eT!}\u007f\r\u0005#S l;G@ej\"l>\u001a\u0005e_ z*\u001b\u0005eN&h+I\u0014-_nN>\u001d\u00052[7)6\u001a@5H!y:\u001b\f<\u001a-f1\u000f\t\"O<l;G@e\u0012\u0019`3\u0005@0I+);\f\u0006$O\"}\u007f\u0006\u0006e\u0013>\u001d\u0014$Y&d:\u0007\u0014\u0001S<l<\u001d\u000f7C\u001f\u001c\u0001\u0005&Q'g8I\u0006*Hnj3\u001c\u00131_<)/\u001b\u000f5_<}&IG\u0019\u001c\u0001\u0005&Q'g8I3<I:l2I\u00107U>l-\u001d\u0019e\n\u000f\u001b\u000f5_<}&IG\bq\r\u0005#[;e+>\u001e\u001b\u00070W+g+I\u0006*HnI\u0011\u0006\u0014\u000bO\"e\u007f\u0019\u00017[#l+\f\u0012e\u001dkzxI\u000f#\u001akzqL\u0013eW;z+I\u000e*Nnk:I\u000e0V\"%\u0012\u0000\u00136S n\u007f\u000f\t)_nj0\u0007\u0006,];{>\u001d\t*Tny-\u0006\u0010 H:p\u007fN".length();
                var1_4 = 23;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = ServerConfig.b(v0, ServerConfig.g(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "@W\u0011w\u0007j+z]C4\u001bm7~]C`\u0012?6oUTpK8\u0011 NPx\u0002{9zQ^zEm=i]I";
                    var4_3 = "@W\u0011w\u0007j+z]C4\u001bm7~]C`\u0012?6oUTpK8\u0011 NPx\u0002{9zQ^zEm=i]I".length();
                    var1_4 = 27;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 112;
                        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++] = ServerConfig.b(v0, ServerConfig.g(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;
            }
        }
        ServerConfig.u = var5;
        ServerConfig.j = ServerConfig.u[21];
        ServerConfig.b = ServerConfig.u[14];
        ServerConfig.d = ServerConfig.u[2];
        ServerConfig.e = ServerConfig.u[8];
        ServerConfig.h = ServerConfig.u[36];
        ServerConfig.i = ServerConfig.u[9];
        ServerConfig.g = ServerConfig.u[53];
        ServerConfig.c = ServerConfig.u[6];
        ServerConfig.f = ServerConfig.u[37];
        ServerConfig.r = new AtomicReference<V>();
    }

    private static /* synthetic */ void a(int n2) {
        String[] stringArray = u;
        throw new IllegalArgumentException(String.format(stringArray[50], stringArray[33], stringArray[30], stringArray[15]));
    }

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

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

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String b(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 -> 126;
                    case 1 -> 72;
                    case 2 -> 65;
                    case 3 -> 100;
                    case 4 -> 27;
                    case 5 -> 111;
                    default -> 40;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }

    /*
     * Exception performing whole class analysis ignored.
     */
    public static final class PropertyRegistrationInfo {
        @NotNull
        private final String a;
        @Nullable
        private final String b;
        @Nullable
        private final String c;
        @Nullable
        private final String d;
        @Nullable
        private final String e;
        private static final String[] f;

        public PropertyRegistrationInfo(@NotNull String string, @Nullable String string2, @Nullable String string3, @Nullable String string4) {
            if (string == null) {
                PropertyRegistrationInfo.a(0);
            }
            this(string, string2, string3, string4, null);
        }

        public PropertyRegistrationInfo(@NotNull String string, @Nullable String string2, @Nullable String string3, @Nullable String string4, @Nullable String string5) {
            if (string == null) {
                PropertyRegistrationInfo.a(1);
            }
            this.a = string;
            this.b = string2;
            this.c = string3;
            this.d = string4;
            this.e = string5;
        }

        public static PropertyRegistrationInfo prInfo(@NotNull String string, @Nullable String string2, @Nullable String string3, @Nullable String string4) {
            try {
                if (string == null) {
                    PropertyRegistrationInfo.a(2);
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw PropertyRegistrationInfo.a(illegalArgumentException);
            }
            return new PropertyRegistrationInfo(string, string2, string3, string4);
        }

        public static PropertyRegistrationInfo prInfo(@NotNull String string, @Nullable String string2, @Nullable String string3, @Nullable String string4, @Nullable String string5) {
            try {
                if (string == null) {
                    PropertyRegistrationInfo.a(3);
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw PropertyRegistrationInfo.a(illegalArgumentException);
            }
            return new PropertyRegistrationInfo(string, string2, string3, string4, string5);
        }

        @NotNull
        public String getName() {
            String string;
            try {
                string = this.a;
                if (string == null) {
                    PropertyRegistrationInfo.a(4);
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw PropertyRegistrationInfo.a(illegalArgumentException);
            }
            return string;
        }

        /*
         * Exception decompiling
         */
        private static /* synthetic */ void a(int var0) {
            /*
             * This method has failed to decompile.  When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
             * 
             * org.benf.cfr.reader.util.ConfusedCFRException: Tried to end blocks [0[TRYBLOCK]], but top level block is 6[SWITCH]
             *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.processEndingBlocks(Op04StructuredStatement.java:435)
             *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:484)
             *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:736)
             *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:850)
             *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278)
             *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201)
             *     at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94)
             *     at org.benf.cfr.reader.entities.Method.analyse(Method.java:531)
             *     at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1050)
             *     at org.benf.cfr.reader.entities.ClassFile.analyseInnerClassesPass1(ClassFile.java:923)
             *     at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1035)
             *     at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:942)
             *     at org.benf.cfr.reader.Driver.doJarVersionTypes(Driver.java:257)
             *     at org.benf.cfr.reader.Driver.doJar(Driver.java:139)
             *     at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:76)
             *     at org.benf.cfr.reader.Main.main(Main.java:54)
             */
            throw new IllegalStateException("Decompilation failed");
        }

        private static IllegalArgumentException a(IllegalArgumentException illegalArgumentException) {
            return illegalArgumentException;
        }

        /*
         * Unable to fully structure code
         */
        static {
            block10: {
                block9: {
                    var5 = new String[9];
                    var3_1 = 0;
                    var2_2 = ",:\u000ekm\u001ej*6\u000bkrLl90\u0011kRLl90\u0011\u0007nGx&2G\u0014sFn*'\u0017=SLy&&\u00176`]w ;**gF\u0007(0\u0017\n`D{7,:\u000ekm\u001ej*6\u000bkrLl90\u0011kRLl90\u0011\u0007nGx&2G\u0014sFn*'\u0017=SLy&&\u00176`]w ;**gF>\u000e'\u00041lLp;u\u0005+s\t^\u0001:\u0017\ntEro%\u00026`D{;0\u0011d&\fmhu\f\"!\fmap\u0010dl\\m;u\r+u\t|*u\r1mE\b?'\f4OHs**\u000f\u001b\f0O\\r#u\u000e!uAq+uF7/\fmo8\u00167u\tp !C6d]k=;C*tEr\u0004!4\u000e!";
                    var4_3 = ",:\u000ekm\u001ej*6\u000bkrLl90\u0011kRLl90\u0011\u0007nGx&2G\u0014sFn*'\u0017=SLy&&\u00176`]w ;**gF\u0007(0\u0017\n`D{7,:\u000ekm\u001ej*6\u000bkrLl90\u0011kRLl90\u0011\u0007nGx&2G\u0014sFn*'\u0017=SLy&&\u00176`]w ;**gF>\u000e'\u00041lLp;u\u0005+s\t^\u0001:\u0017\ntEro%\u00026`D{;0\u0011d&\fmhu\f\"!\fmap\u0010dl\\m;u\r+u\t|*u\r1mE\b?'\f4OHs**\u000f\u001b\f0O\\r#u\u000e!uAq+uF7/\fmo8\u00167u\tp !C6d]k=;C*tEr\u0004!4\u000e!".length();
                    var1_4 = 55;
                    var0_5 = -1;
lbl7:
                    // 2 sources

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

                    while (true) {
                        var5[var3_1++] = PropertyRegistrationInfo.a(v0, PropertyRegistrationInfo.a(v2));
                        if ((var0_5 += var1_4) < var4_3) {
                            var1_4 = var2_2.charAt(var0_5);
                            ** continue;
                        }
                        var2_2 = "\u0014[jJ\u0012p\u0006X@MM\u0000!";
                        var4_3 = "\u0014[jJ\u0012p\u0006X@MM\u0000!".length();
                        var1_4 = 6;
                        var0_5 = -1;
lbl22:
                        // 2 sources

                        while (true) {
                            v0 = 26;
                            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++] = PropertyRegistrationInfo.a(v0, PropertyRegistrationInfo.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;
                }
            }
            PropertyRegistrationInfo.f = var5;
        }

        private static char[] a(String string) {
            char[] cArray = string.toCharArray();
            if (cArray.length < 2) {
                cArray = cArray;
                cArray[0] = (char)(cArray[0] ^ 0x63);
            }
            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 -> 50;
                        case 1 -> 40;
                        case 2 -> 30;
                        case 3 -> 57;
                        case 4 -> 124;
                        case 5 -> 84;
                        default -> 99;
                    })));
                    ++n3;
                    n4 = n4;
                } while (n4 > n3);
            }
            return new String(cArray2).intern();
        }
    }

    public static class ServerConfigConfigProviderSpi
    implements ConfigFactory.ConfigProviderSpi {
        public Config newConfig(Properties properties, long l2) {
            return new ServerConfig(properties, l2);
        }
    }

    @ManagedResource(description="Server config", objectName="l7tech:type=ServerConfig")
    public static class ManagedServerConfig {
        final ServerConfig a;

        protected ManagedServerConfig(ServerConfig serverConfig) {
            this.a = serverConfig;
        }

        @ManagedOperation(description="Get Property Value")
        public String getProperty(String string) {
            return this.a.b(string);
        }

        @ManagedAttribute(description="Property Names", currencyTimeLimit=30)
        public Set<String> getPropertyNames() {
            TreeSet<String> treeSet;
            this.a.m.readLock().lock();
            try {
                treeSet = new TreeSet<String>(this.a.n.stringPropertyNames());
            }
            finally {
                this.a.m.readLock().unlock();
            }
            return treeSet;
        }
    }
}

