package com.l7tech.xml.xslt;

import com.l7tech.common.io.XmlUtil;
import com.l7tech.util.ExceptionUtils;
import java.io.IOException;
import java.io.StringReader;
import java.text.ParseException;
import java.util.List;
import java.util.logging.Logger;
import javax.xml.transform.ErrorListener;
import javax.xml.transform.Source;
import javax.xml.transform.Templates;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import org.apache.xml.utils.DefaultErrorHandler;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;

public class XsltUtil {
   private static final Logger a;
   private static final String[] b;

   public static List<String> getVariablesUsedByStylesheet(String var0, String var1) throws TransformerConfigurationException, IOException, SAXException, ParseException {
      TransformerFactory var2 = createTransformerFactory(var1, true);
      var2.setURIResolver(new a());
      DOMSource var3 = new DOMSource(XmlUtil.parse(new StringReader(var0), false));
      return getVariablesUsedByTemplates(a(var2, var3));
   }

   private static Templates a(TransformerFactory var0, Source var1) throws ParseException {
      try {
         return var0.newTemplates(var1);
      } catch (TransformerConfigurationException var4) {
         throw (ParseException)new ParseException(ExceptionUtils.getMessage(var4), 0).initCause(var4);
      }
   }

   public static List<String> getVariablesUsedByTemplates(@NotNull Templates param0) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 000: aload 0
      // 001: ifnonnull 00f
      // 004: bipush 0
      // 005: invokestatic com/l7tech/xml/xslt/XsltUtil.a (I)V
      // 008: goto 00f
      // 00b: invokestatic com/l7tech/xml/xslt/XsltUtil.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 00e: athrow
      // 00f: new java/util/ArrayList
      // 012: dup
      // 013: invokespecial java/util/ArrayList.<init> ()V
      // 016: astore 1
      // 017: aload 0
      // 018: instanceof org/apache/xalan/templates/StylesheetRoot
      // 01b: ifeq 059
      // 01e: aload 0
      // 01f: checkcast org/apache/xalan/templates/StylesheetRoot
      // 022: astore 2
      // 023: aload 2
      // 024: invokevirtual org/apache/xalan/templates/StylesheetRoot.getVariablesAndParamsComposed ()Ljava/util/Vector;
      // 027: astore 3
      // 028: aload 3
      // 029: invokevirtual java/util/Vector.iterator ()Ljava/util/Iterator;
      // 02c: astore 4
      // 02e: aload 4
      // 030: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 035: ifeq 056
      // 038: aload 4
      // 03a: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 03f: checkcast org/apache/xalan/templates/ElemVariable
      // 042: astore 5
      // 044: aload 1
      // 045: aload 5
      // 047: invokevirtual org/apache/xalan/templates/ElemVariable.getName ()Lorg/apache/xml/utils/QName;
      // 04a: invokevirtual org/apache/xml/utils/QName.getLocalName ()Ljava/lang/String;
      // 04d: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 052: pop
      // 053: goto 02e
      // 056: goto 116
      // 059: aload 0
      // 05a: instanceof net/sf/saxon/PreparedStylesheet
      // 05d: ifeq 108
      // 060: aload 0
      // 061: checkcast net/sf/saxon/PreparedStylesheet
      // 064: astore 2
      // 065: aload 2
      // 066: invokevirtual net/sf/saxon/PreparedStylesheet.getCompiledGlobalVariables ()Ljava/util/HashMap;
      // 069: astore 3
      // 06a: aload 3
      // 06b: ifnull 105
      // 06e: aload 3
      // 06f: invokevirtual java/util/HashMap.entrySet ()Ljava/util/Set;
      // 072: invokeinterface java/util/Set.iterator ()Ljava/util/Iterator; 1
      // 077: astore 4
      // 079: aload 4
      // 07b: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 080: ifeq 105
      // 083: aload 4
      // 085: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 08a: checkcast java/util/Map$Entry
      // 08d: astore 5
      // 08f: aload 5
      // 091: invokeinterface java/util/Map$Entry.getKey ()Ljava/lang/Object; 1
      // 096: checkcast net/sf/saxon/om/StructuredQName
      // 099: astore 6
      // 09b: aload 5
      // 09d: invokeinterface java/util/Map$Entry.getValue ()Ljava/lang/Object; 1
      // 0a2: checkcast net/sf/saxon/expr/instruct/GlobalVariable
      // 0a5: astore 7
      // 0a7: aload 7
      // 0a9: invokevirtual net/sf/saxon/expr/instruct/GlobalVariable.getSelectExpression ()Lnet/sf/saxon/expr/Expression;
      // 0ac: astore 8
      // 0ae: aload 8
      // 0b0: instanceof net/sf/saxon/expr/StringLiteral
      // 0b3: ifeq 0e7
      // 0b6: aload 8
      // 0b8: invokevirtual net/sf/saxon/expr/Expression.toString ()Ljava/lang/String;
      // 0bb: invokevirtual java/lang/String.isEmpty ()Z
      // 0be: ifne 0df
      // 0c1: goto 0c8
      // 0c4: invokestatic com/l7tech/xml/xslt/XsltUtil.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0c7: athrow
      // 0c8: aload 8
      // 0ca: invokevirtual net/sf/saxon/expr/Expression.toString ()Ljava/lang/String;
      // 0cd: getstatic com/l7tech/xml/xslt/XsltUtil.b [Ljava/lang/String;
      // 0d0: bipush 2
      // 0d1: aaload
      // 0d2: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 0d5: ifeq 0e7
      // 0d8: goto 0df
      // 0db: invokestatic com/l7tech/xml/xslt/XsltUtil.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0de: athrow
      // 0df: bipush 1
      // 0e0: goto 0e8
      // 0e3: invokestatic com/l7tech/xml/xslt/XsltUtil.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0e6: athrow
      // 0e7: bipush 0
      // 0e8: istore 9
      // 0ea: iload 9
      // 0ec: ifeq 102
      // 0ef: aload 1
      // 0f0: aload 6
      // 0f2: invokevirtual net/sf/saxon/om/StructuredQName.getLocalPart ()Ljava/lang/String;
      // 0f5: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 0fa: pop
      // 0fb: goto 102
      // 0fe: invokestatic com/l7tech/xml/xslt/XsltUtil.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 101: athrow
      // 102: goto 079
      // 105: goto 116
      // 108: new java/lang/IllegalArgumentException
      // 10b: dup
      // 10c: getstatic com/l7tech/xml/xslt/XsltUtil.b [Ljava/lang/String;
      // 10f: bipush 8
      // 111: aaload
      // 112: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // 115: athrow
      // 116: aload 1
      // 117: areturn
      // try (0 -> 4): 5 java/lang/IllegalArgumentException
      // try (71 -> 78): 79 java/lang/IllegalArgumentException
      // try (74 -> 88): 89 java/lang/IllegalArgumentException
      // try (81 -> 93): 93 java/lang/IllegalArgumentException
      // try (97 -> 104): 105 java/lang/IllegalArgumentException
   }

   public static TransformerFactory createTransformerFactory(@Nullable String param0, boolean param1) throws TransformerConfigurationException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 0
      // 01: invokestatic com/l7tech/xml/xslt/XsltUtil.a (Ljava/lang/String;)Z
      // 04: istore 2
      // 05: iload 2
      // 06: ifeq 12
      // 09: ldc net/sf/saxon/TransformerFactoryImpl
      // 0b: goto 13
      // 0e: invokestatic com/l7tech/xml/xslt/XsltUtil.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 11: athrow
      // 12: aconst_null
      // 13: astore 3
      // 14: aload 3
      // 15: ifnonnull 22
      // 18: invokestatic javax/xml/transform/TransformerFactory.newInstance ()Ljavax/xml/transform/TransformerFactory;
      // 1b: goto 2d
      // 1e: invokestatic com/l7tech/xml/xslt/XsltUtil.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 21: athrow
      // 22: aload 3
      // 23: invokevirtual java/lang/Class.getName ()Ljava/lang/String;
      // 26: aload 3
      // 27: invokevirtual java/lang/Class.getClassLoader ()Ljava/lang/ClassLoader;
      // 2a: invokestatic javax/xml/transform/TransformerFactory.newInstance (Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/transform/TransformerFactory;
      // 2d: astore 4
      // 2f: iload 2
      // 30: ifeq 6c
      // 33: aload 4
      // 35: iload 1
      // 36: invokestatic com/l7tech/xml/SaxonUtils.configureSecureSaxonTransformerFactory (Ljavax/xml/transform/TransformerFactory;Z)V
      // 39: getstatic com/l7tech/xml/xslt/XsltUtil.a Ljava/util/logging/Logger;
      // 3c: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 3f: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 42: ifeq 6c
      // 45: goto 4c
      // 48: invokestatic com/l7tech/xml/xslt/XsltUtil.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 4b: athrow
      // 4c: getstatic com/l7tech/xml/xslt/XsltUtil.a Ljava/util/logging/Logger;
      // 4f: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 52: getstatic com/l7tech/xml/xslt/XsltUtil.b [Ljava/lang/String;
      // 55: bipush 12
      // 57: aaload
      // 58: aload 4
      // 5a: getstatic com/l7tech/xml/xslt/XsltUtil.b [Ljava/lang/String;
      // 5d: bipush 1
      // 5e: aaload
      // 5f: invokevirtual javax/xml/transform/TransformerFactory.getAttribute (Ljava/lang/String;)Ljava/lang/Object;
      // 62: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
      // 65: goto 6c
      // 68: invokestatic com/l7tech/xml/xslt/XsltUtil.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 6b: athrow
      // 6c: aload 4
      // 6e: getstatic com/l7tech/xml/xslt/XsltUtil.b [Ljava/lang/String;
      // 71: bipush 0
      // 72: aaload
      // 73: bipush 1
      // 74: invokevirtual javax/xml/transform/TransformerFactory.setFeature (Ljava/lang/String;Z)V
      // 77: aload 4
      // 79: invokestatic com/l7tech/common/io/XmlUtil.getSafeURIResolver ()Ljavax/xml/transform/URIResolver;
      // 7c: invokevirtual javax/xml/transform/TransformerFactory.setURIResolver (Ljavax/xml/transform/URIResolver;)V
      // 7f: aload 4
      // 81: new org/apache/xml/utils/DefaultErrorHandler
      // 84: dup
      // 85: bipush 1
      // 86: invokespecial org/apache/xml/utils/DefaultErrorHandler.<init> (Z)V
      // 89: invokevirtual javax/xml/transform/TransformerFactory.setErrorListener (Ljavax/xml/transform/ErrorListener;)V
      // 8c: aload 4
      // 8e: areturn
      // try (3 -> 7): 7 javax/xml/transform/TransformerConfigurationException
      // try (11 -> 15): 15 javax/xml/transform/TransformerConfigurationException
      // try (23 -> 32): 33 javax/xml/transform/TransformerConfigurationException
      // try (25 -> 46): 47 javax/xml/transform/TransformerConfigurationException
   }

   private static boolean a(String param0) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: getstatic com/l7tech/xml/xslt/XsltUtil.b [Ljava/lang/String;
      // 03: bipush 11
      // 05: aaload
      // 06: aload 0
      // 07: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 0a: ifne 20
      // 0d: getstatic com/l7tech/xml/xslt/XsltUtil.b [Ljava/lang/String;
      // 10: bipush 4
      // 11: aaload
      // 12: bipush 0
      // 13: invokestatic com/l7tech/util/ConfigFactory.getBooleanProperty (Ljava/lang/String;Z)Z
      // 16: ifeq 28
      // 19: goto 20
      // 1c: invokestatic com/l7tech/xml/xslt/XsltUtil.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1f: athrow
      // 20: bipush 1
      // 21: goto 29
      // 24: invokestatic com/l7tech/xml/xslt/XsltUtil.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 27: athrow
      // 28: bipush 0
      // 29: ireturn
      // try (0 -> 12): 13 java/lang/IllegalArgumentException
      // try (6 -> 17): 17 java/lang/IllegalArgumentException
   }

   public static void checkXsltSyntax(@NotNull Document var0, @Nullable String var1, @Nullable ErrorListener var2) throws TransformerConfigurationException, IOException, SAXException, ParseException {
      try {
         if (var0 == null) {
            a(1);
         }
      } catch (TransformerConfigurationException var6) {
         throw a(var6);
      }

      TransformerFactory var3 = createTransformerFactory(var1, false);

      label22: {
         try {
            if (var2 != null) {
               var3.setErrorListener(var2);
               break label22;
            }
         } catch (TransformerConfigurationException var5) {
            throw a(var5);
         }

         var3.setErrorListener(new DefaultErrorHandler(true));
      }

      var3.setURIResolver(new b());
      DOMSource var4 = new DOMSource(XmlUtil.parse(new StringReader(XmlUtil.nodeToString(var0)), false));
      a(var3, var4);
   }

   static {
      String[] var5 = new String[13];
      int var3 = 0;
      String var2 = "\u0018\u00166\bb:\u001b\u001a\u00034\u0019 ;L\u001d\u000el \u0015Yw\u001f\f1\f9{@\u0003M$\u001d9aA\u0002\u0007m\u000b=vA\u0002\u0007o\b*zW\u0015\u00111\u00116r,\u0018\u00166\bb:\u001b\u0003\u0003:\u00176;G\u0016L,\u001d,:R\u0015\u00036\r*p\u001b\u0017\u0007,\u001d*t@\u0015 ;\f=V[\u0014\u0007\u0002R@\u001b\u0017\u00076.9g]\u0011\u0000.\u001d+@G\u0015\u0006\u0000\u0001\fpY\u0000\u000e#\f=f\u0013\b\u0011.\fvpZ\u0017\u000b,\u001dvs[\u0002\u0001'Jh\u0003\u0014\r!\u000f\u0013\n'\u001b3MG\u001c\u0016\u0011\u00016aU\b>1\u0010%\r5pZ\u0004B$\u0017*5t>\r66-yXP\u0012#\n9xQ\u0004\u00070X\u007f0GWB-\u001ex0G^G1X5`G\u0004B,\u0017,5V\u0015B,\r4yb3\r/\b1yQ\u0014B\u001a+\u0014A\u0014\u0007\u00031X6z@P\u0003b\n=v[\u0017\f+\u0002=q\u0014(\u0003.\u001965[\u0002B\u0011\u0019 zZP\u00116\u00014pG\u0018\u0007'\fxvX\u0011\u00111Xu8\u0014\u0013\u0003,_,5S\u0015\u0016b\u001c=vX\u0011\u0010'\u001cxcU\u0002\u000b#\u001a4pG\u001c\u0013\r/W4\"@\u0015\u0001*W xX_\u001a1\u0014,:l\u0003\u000e6-,|X\t\u0004\u0007/\b4t@\u0015\u0011";
      int var4 = "\u0018\u00166\bb:\u001b\u001a\u00034\u0019 ;L\u001d\u000el \u0015Yw\u001f\f1\f9{@\u0003M$\u001d9aA\u0002\u0007m\u000b=vA\u0002\u0007o\b*zW\u0015\u00111\u00116r,\u0018\u00166\bb:\u001b\u0003\u0003:\u00176;G\u0016L,\u001d,:R\u0015\u00036\r*p\u001b\u0017\u0007,\u001d*t@\u0015 ;\f=V[\u0014\u0007\u0002R@\u001b\u0017\u00076.9g]\u0011\u0000.\u001d+@G\u0015\u0006\u0000\u0001\fpY\u0000\u000e#\f=f\u0013\b\u0011.\fvpZ\u0017\u000b,\u001dvs[\u0002\u0001'Jh\u0003\u0014\r!\u000f\u0013\n'\u001b3MG\u001c\u0016\u0011\u00016aU\b>1\u0010%\r5pZ\u0004B$\u0017*5t>\r66-yXP\u0012#\n9xQ\u0004\u00070X\u007f0GWB-\u001ex0G^G1X5`G\u0004B,\u0017,5V\u0015B,\r4yb3\r/\b1yQ\u0014B\u001a+\u0014A\u0014\u0007\u00031X6z@P\u0003b\n=v[\u0017\f+\u0002=q\u0014(\u0003.\u001965[\u0002B\u0011\u0019 zZP\u00116\u00014pG\u0018\u0007'\fxvX\u0011\u00111Xu8\u0014\u0013\u0003,_,5S\u0015\u0016b\u001c=vX\u0011\u0010'\u001cxcU\u0002\u000b#\u001a4pG\u001c\u0013\r/W4\"@\u0015\u0001*W xX_\u001a1\u0014,:l\u0003\u000e6-,|X\t\u0004\u0007/\b4t@\u0015\u0011"
         .length();
      char var1 = '7';
      int var7 = -1;

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

         while (true) {
            String var8 = a(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     a = Logger.getLogger(XsltUtil.class.getName());
                     return;
                  }

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

                  var2 = "_Qo /\u0006+\u0000&gM\b_8\u0000+m[\f\u000b6\n+(L\u0003\u001e=\t l\u0013M\u0004o\u0018";
                  var4 = "_Qo /\u0006+\u0000&gM\b_8\u0000+m[\f\u000b6\n+(L\u0003\u001e=\t l\u0013M\u0004o\u0018".length();
                  var1 = 3;
                  var7 = -1;
            }

            var10000 = 89;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

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

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

      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 -> 52;
            case 1 -> 38;
            case 2 -> 6;
            case 3 -> 60;
            case 4 -> 28;
            case 5 -> 81;
            default -> 112;
         });
      }

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