/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.common.io.DocumentReferenceProcessor
 *  com.l7tech.common.io.DocumentReferenceProcessor$ReferenceCustomizer
 *  com.l7tech.common.io.XmlUtil
 *  com.l7tech.util.Resolver
 *  com.l7tech.wsdl.Wsdl
 *  com.l7tech.xml.soap.SoapUtil$SchemaTypeResolver
 *  javax.wsdl.Types
 *  javax.wsdl.extensions.ExtensibilityElement
 *  javax.wsdl.extensions.UnknownExtensibilityElement
 *  javax.wsdl.extensions.schema.Schema
 */
package com.l7tech.server.service.resolution;

import com.l7tech.common.io.DocumentReferenceProcessor;
import com.l7tech.common.io.XmlUtil;
import com.l7tech.server.service.resolution.m;
import com.l7tech.util.Resolver;
import com.l7tech.wsdl.Wsdl;
import com.l7tech.xml.soap.SoapUtil;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.wsdl.Types;
import javax.wsdl.extensions.ExtensibilityElement;
import javax.wsdl.extensions.UnknownExtensibilityElement;
import javax.wsdl.extensions.schema.Schema;
import javax.xml.namespace.QName;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

class k
implements SoapUtil.SchemaTypeResolver {
    private static final QName a;
    private final Wsdl b;
    private final Resolver<String, String> c;
    private final Map<QName, Collection<QName>> d = new HashMap<QName, Collection<QName>>();
    private final Map<String, Element> e = new HashMap<String, Element>();
    private static final String[] g;

    public Collection<QName> resolveType(QName qName) {
        String[] stringArray;
        Object object;
        Collection<QName> collection = this.d.get(qName);
        if (collection != null) {
            return collection;
        }
        String string = qName.getNamespaceURI();
        Collection collection2 = this.b.getTypes();
        Element element = null;
        Object object2 = collection2.iterator();
        while (object2.hasNext()) {
            object = (Types)object2.next();
            element = this.a(string, qName.getLocalPart(), (Types)object);
            if (element == null) continue;
            break;
        }
        if (element != null && (object2 = XmlUtil.findFirstChildElementByName((Node)element, (String)(stringArray = g)[4], (String)stringArray[8])) != null && (object = XmlUtil.findFirstChildElementByName((Node)object2, (String)stringArray[4], (String)stringArray[2])) != null && XmlUtil.findNextElementSibling((Element)object) == null) {
            Collection<QName> collection3 = this.a(collection2, new HashSet<Element>());
            if ("0".equals(object.getAttribute(stringArray[10]))) {
                collection3.add(null);
            }
            collection = collection3;
        }
        if (collection == null) {
            collection = Collections.singleton(new QName(null, qName.getLocalPart()));
        }
        this.d.put(qName, collection);
        return collection;
    }

    k(Wsdl wsdl) {
        this(wsdl, null);
    }

    k(Wsdl wsdl, Resolver<String, String> resolver) {
        this.b = wsdl;
        this.c = resolver;
    }

    String resolveSchema(String string) {
        return this.c == null ? null : (String)this.c.resolve((Object)string);
    }

    private Collection<QName> a(Collection<Types> collection, HashSet<Element> hashSet) {
        ArrayList<QName> arrayList = new ArrayList<QName>();
        for (Types types : collection) {
            this.a(arrayList, types, hashSet);
        }
        return arrayList;
    }

    private void a(Collection<QName> collection, Types types, HashSet<Element> hashSet) {
        for (ExtensibilityElement extensibilityElement : types.getExtensibilityElements()) {
            if (!a.equals(extensibilityElement.getElementType())) continue;
            Element element = null;
            if (extensibilityElement instanceof Schema) {
                element = ((Schema)extensibilityElement).getElement();
            } else if (extensibilityElement instanceof UnknownExtensibilityElement) {
                element = ((UnknownExtensibilityElement)extensibilityElement).getElement();
            }
            if (element == null) continue;
            this.a(collection, element, hashSet);
        }
    }

    private void a(Collection<QName> collection, Element element, HashSet<Element> hashSet) {
        Object object2;
        if (hashSet.contains(element)) {
            return;
        }
        hashSet.add(element);
        String[] stringArray = g;
        String string = element.getAttribute(stringArray[7]);
        if (string.isEmpty()) {
            string = null;
        }
        stringArray = g;
        for (Object object2 : XmlUtil.findChildElementsByName((Element)element, (String)stringArray[4], (String)stringArray[3])) {
            collection.add(new QName(string, object2.getAttribute(g[9])));
        }
        Collection<Element> collection2 = this.a(element);
        object2 = collection2.iterator();
        while (object2.hasNext()) {
            Element element2 = (Element)object2.next();
            this.a(collection, element2, hashSet);
        }
    }

    private Element a(String string, String string2, Types types) {
        Element element = null;
        for (ExtensibilityElement extensibilityElement : types.getExtensibilityElements()) {
            if (!a.equals(extensibilityElement.getElementType())) continue;
            Element element2 = null;
            if (extensibilityElement instanceof Schema) {
                element2 = ((Schema)extensibilityElement).getElement();
            } else if (extensibilityElement instanceof UnknownExtensibilityElement) {
                element2 = ((UnknownExtensibilityElement)extensibilityElement).getElement();
            }
            if (element2 == null || (element = this.a(string, string2, element2, new HashSet<Element>())) == null) continue;
            break;
        }
        return element;
    }

    private Element a(String string, String string2, Element element, Set<Element> set) {
        Element element2 = null;
        if (set.contains(element)) {
            return null;
        }
        set.add(element);
        String[] stringArray = g;
        if (string.equals(element.getAttribute(stringArray[5]))) {
            for (Element element3 : XmlUtil.findChildElementsByName((Element)element, (String)stringArray[0], (String)stringArray[6])) {
                if (!string2.equals(element3.getAttribute(g[11]))) continue;
                element2 = element3;
                break;
            }
        } else {
            Element element4;
            Collection<Element> collection = this.a(element);
            Iterator<Element> iterator = collection.iterator();
            while (iterator.hasNext() && (element2 = this.a(string, string2, element4 = iterator.next(), set)) == null) {
            }
        }
        return element2;
    }

    private Collection<Element> a(Element element) {
        ArrayList<Element> arrayList = new ArrayList<Element>();
        DocumentReferenceProcessor documentReferenceProcessor = new DocumentReferenceProcessor();
        documentReferenceProcessor.processDocumentReferences(element.getOwnerDocument().getDocumentURI(), element, (DocumentReferenceProcessor.ReferenceCustomizer)new m(this, arrayList));
        return arrayList;
    }

    private Element a(String string, String string2) throws IOException, SAXException {
        Element element = this.e.get(string);
        if (element == null) {
            InputSource inputSource = new InputSource(string);
            inputSource.setCharacterStream(new StringReader(string2));
            element = XmlUtil.parse((InputSource)inputSource, (boolean)false).getDocumentElement();
            this.e.put(string, element);
        }
        return element;
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[12];
                var3_1 = 0;
                var2_2 = "\ni7 }\u000f^\u0015j4~0\u0013_\ro$\u007fu\u0010AS2\u001b\u001d\u000bs\u0012\nx.1\u0006\u0011~+5*A\u0003\u0003s:\u0007\u0007q&=\"N\u0005 \ni7 }\u000f^\u0015j4~0\u0013_\ro$\u007fu\u0010AS2\u001b\u001d\u000bs\u0012\nx.1\u000f\u0016|17\"T?\u0003p&#7A\u0012\u0007\u000b\u0001r. +E\t6d35\u000f\u0016|17\"T?\u0003p&#7A\u0012\u0007\b\u0011x2%\"N\u0012\u0007\u0004\f|.5";
                var4_3 = "\ni7 }\u000f^\u0015j4~0\u0013_\ro$\u007fu\u0010AS2\u001b\u001d\u000bs\u0012\nx.1\u0006\u0011~+5*A\u0003\u0003s:\u0007\u0007q&=\"N\u0005 \ni7 }\u000f^\u0015j4~0\u0013_\ro$\u007fu\u0010AS2\u001b\u001d\u000bs\u0012\nx.1\u000f\u0016|17\"T?\u0003p&#7A\u0012\u0007\u000b\u0001r. +E\t6d35\u000f\u0016|17\"T?\u0003p&#7A\u0012\u0007\b\u0011x2%\"N\u0012\u0007\u0004\f|.5".length();
                var1_4 = 32;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = k.a(v0, k.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "\fw.\u001c'@\u0007\u0013m\u0004\u000f\u007f-6";
                    var4_3 = "\fw.\u001c'@\u0007\u0013m\u0004\u000f\u007f-6".length();
                    var1_4 = 9;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 81;
                        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++] = k.a(v0, k.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;
            }
        }
        k.g = var5;
        var0_6 = k.g;
        k.a = new QName(var0_6[4], var0_6[1]);
    }

    private static char[] a(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x23);
        }
        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 -> 48;
                    case 1 -> 79;
                    case 2 -> 17;
                    case 3 -> 2;
                    case 4 -> 21;
                    case 5 -> 114;
                    default -> 35;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

