package com.l7tech.common.io;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import javax.xml.namespace.QName;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.ext.EntityResolver2;

public class SchemaUtil {
   private static final Collection<QName> a;

   public static boolean isSchema(Document var0) {
      boolean var1 = false;
      if (var0 != null) {
         var1 = isSchema(var0.getDocumentElement());
      }

      return var1;
   }

   public static boolean isSchema(Element var0) {
      boolean var1 = false;
      if (var0 != null) {
         var1 = isSchema(new QName(var0.getNamespaceURI(), var0.getLocalName()));
      }

      return var1;
   }

   public static boolean isSchema(QName var0) {
      boolean var1 = false;
      if (var0 != null) {
         var1 = a.contains(var0);
      }

      return var1;
   }

   public static Collection<ResourceReference> getDependencies(Document var0) {
      ArrayList var1 = new ArrayList();
      a(var0, var1);
      return var1;
   }

   public static Collection<ResourceReference> getDependencies(InputSource var0, EntityResolver var1) throws IOException, SAXException {
      ArrayList var2 = new ArrayList();
      Document var3 = XmlUtil.parse(var0, a(var1, var2));
      a(var3, var2);
      return var2;
   }

   private static void a(Document var0, Collection<ResourceReference> var1) {
      DocumentReferenceProcessor var2 = DocumentReferenceProcessor.schemaProcessor();
      var2.processDocumentReferences(var0, new m(var1));
   }

   private static EntityResolver a(EntityResolver var0, Collection<ResourceReference> var1) {
      return var0 instanceof EntityResolver2 var2 ? new ao(var1, var2) : new n(var1, var0);
   }

   static {
      String[] var0 = new String[5];
      int var4 = 0;
      String var3 = "\u000fE\fa\n\u0018&\u0010F\u000f?G\u0004'\bC\u001f>\u0002\u00079W\u001eI!\u001foD+b\u001byUZh\u0006\u0014R\u0010t]V \u000fE\fa\n\u0018&\u0010F\u000f?G\u0004'\bC\u001f>\u0001\u000e0^\u001e \\|dj\u000fT\u0015p";
      int var5 = "\u000fE\fa\n\u0018&\u0010F\u000f?G\u0004'\bC\u001f>\u0002\u00079W\u001eI!\u001foD+b\u001byUZh\u0006\u0014R\u0010t]V \u000fE\fa\n\u0018&\u0010F\u000f?G\u0004'\bC\u001f>\u0001\u000e0^\u001e \\|dj\u000fT\u0015p"
         .length();
      char var2 = '#';
      int var7 = -1;

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

         while (true) {
            String var8 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var0[var4++] = var8;
                  if ((var7 += var2) >= var5) {
                     a = Collections.unmodifiableList(Arrays.asList(new QName(var0[2], var0[3]), new QName(var0[0], var0[1]), new QName(var0[4], var0[1])));
                     return;
                  }

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

                  var3 = "\u001b]\u001f{RY \u0000J\u0003n\u0005\u0017)\u001fI\u00000H\u000b(\u0007L\u00101\r\b6Y\u0011/Sske\u0000[\u001a\u007f";
                  var5 = "\u001b]\u001f{RY \u0000J\u0003n\u0005\u0017)\u001fI\u00000H\u000b(\u0007L\u00101\r\b6Y\u0011/Sske\u0000[\u001a\u007f".length();
                  var2 = 6;
                  var7 = -1;
            }

            var10000 = 14;
            var10001 = var3.substring(++var7, var7 + var2);
            var10002 = 0;
         }
      }
   }

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

      return var10000;
   }

   private static String a(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 102;
            case 1 -> 48;
            case 2 -> 121;
            case 3 -> 16;
            case 4 -> 49;
            case 5 -> 54;
            default -> 8;
         });
      }

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