package com.l7tech.security.xml;

import com.l7tech.common.io.XmlUtil;
import com.l7tech.security.xml.xades.CertIDListType;
import com.l7tech.security.xml.xades.CertIDType;
import com.l7tech.security.xml.xades.DigestAlgAndValueType;
import com.l7tech.security.xml.xades.ObjectFactory;
import com.l7tech.security.xml.xades.QualifyingPropertiesType;
import com.l7tech.security.xml.xades.SignaturePolicyIdentifierType;
import com.l7tech.security.xml.xades.SignedPropertiesType;
import com.l7tech.security.xml.xades.SignedSignaturePropertiesType;
import com.l7tech.security.xml.xades.X509IssuerSerialType;
import com.l7tech.util.Pair;
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBElement;
import jakarta.xml.bind.JAXBException;
import jakarta.xml.bind.Marshaller;
import java.security.Key;
import java.security.SignatureException;
import java.security.cert.X509Certificate;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import javax.xml.crypto.MarshalException;
import javax.xml.crypto.XMLStructure;
import javax.xml.crypto.dom.DOMStructure;
import javax.xml.crypto.dsig.CanonicalizationMethod;
import javax.xml.crypto.dsig.Reference;
import javax.xml.crypto.dsig.SignatureMethod;
import javax.xml.crypto.dsig.SignedInfo;
import javax.xml.crypto.dsig.Transform;
import javax.xml.crypto.dsig.XMLObject;
import javax.xml.crypto.dsig.XMLSignature;
import javax.xml.crypto.dsig.XMLSignatureFactory;
import javax.xml.crypto.dsig.dom.DOMSignContext;
import javax.xml.crypto.dsig.keyinfo.KeyInfo;
import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;
import javax.xml.crypto.dsig.keyinfo.X509Data;
import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
import javax.xml.crypto.dsig.spec.TransformParameterSpec;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.transform.dom.DOMResult;
import org.apache.xml.security.utils.resolver.ResourceResolver;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

public class SignatureCreationContext {
   private static final String a;
   private final List<SignatureCreationContext.ElementReference> b;
   private final X509Certificate[] c;
   private final Key d;
   private final Element e;
   private final String f;
   private final String g;
   private final String h;
   private final boolean i;
   private final boolean j;
   private final boolean k;
   private final boolean l;
   private final Element m;
   private final Map<String, InputSource> n;
   private final Map<String, Node> o;
   private static final String p;
   private static final String q;
   private final boolean r;
   private final String s;
   private static final String[] t;

   private SignatureCreationContext(SignatureCreationContext.Builder var1) {
      this.b = var1.a;
      this.c = var1.b;
      this.d = var1.c;
      this.e = var1.d;
      this.g = var1.e;
      this.h = var1.f;
      this.i = var1.g;
      this.j = var1.h;
      this.k = var1.i;
      this.l = var1.j;
      this.m = var1.k;
      this.n = var1.l;
      this.o = var1.m;
      this.f = var1.n;
      this.r = var1.o;
      this.s = var1.p;
   }

   public Element createSignature() throws SignatureException {
      SupportedSignatureMethods var1 = DsigUtil.getSignatureMethodForSignerPrivateKey(this.d, this.g, this.i);

      SupportedDigestMethods var10000;
      label43: {
         try {
            if (this.h == null) {
               var10000 = SupportedDigestMethods.fromAlias(var1.getDigestAlgorithmName());
               break label43;
            }
         } catch (SignatureException var9) {
            throw a(var9);
         }

         var10000 = SupportedDigestMethods.fromAlias(this.h);
      }

      SupportedDigestMethods var2 = var10000;

      label35: {
         try {
            if (this.m == null) {
               var10 = XmlUtil.createEmptyDocument(t[14], t[16], t[24]).getDocumentElement();
               break label35;
            }
         } catch (SignatureException var8) {
            throw a(var8);
         }

         var10 = this.m;
      }

      Element var3 = var10;
      L7XmlDsigProvider.validatePermittedDigestAlg(var2.getCanonicalName(), var2.getAliases());
      XMLSignatureFactory var4 = XMLSignatureFactory.getInstance(t[6], L7XmlDsigProvider.INSTANCE);
      DOMSignContext var5 = this.a(this.d, var3);
      List var6 = this.generateSignatureReferences(var4, var5, this.b, var2.getIdentifier(), this.j, this.k, this.l);

      try {
         if (this.r) {
            return this.a(var3, var4, var5, var6, this.getKeyInfo(var4, this.e, this.c), var1.getAlgorithmIdentifier(), var2.getIdentifier());
         }
      } catch (SignatureException var7) {
         throw a(var7);
      }

      return this.a(var3, var4, var5, var6, this.getKeyInfo(var4, this.e, this.c), var1.getAlgorithmIdentifier());
   }

   private DOMSignContext a(@NotNull Key param1, @NotNull Node param2) {
      // $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 1
      // 01: ifnonnull 0f
      // 04: bipush 0
      // 05: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (I)V
      // 08: goto 0f
      // 0b: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0e: athrow
      // 0f: aload 2
      // 10: ifnonnull 1e
      // 13: bipush 1
      // 14: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (I)V
      // 17: goto 1e
      // 1a: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1d: athrow
      // 1e: new javax/xml/crypto/dsig/dom/DOMSignContext
      // 21: dup
      // 22: aload 1
      // 23: aload 2
      // 24: invokespecial javax/xml/crypto/dsig/dom/DOMSignContext.<init> (Ljava/security/Key;Lorg/w3c/dom/Node;)V
      // 27: astore 3
      // 28: aconst_null
      // 29: aload 0
      // 2a: getfield com/l7tech/security/xml/SignatureCreationContext.n Ljava/util/Map;
      // 2d: if_acmpeq 56
      // 30: aload 0
      // 31: getfield com/l7tech/security/xml/SignatureCreationContext.n Ljava/util/Map;
      // 34: invokeinterface java/util/Map.isEmpty ()Z 1
      // 39: ifne 56
      // 3c: goto 43
      // 3f: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 42: athrow
      // 43: aload 3
      // 44: getstatic com/l7tech/util/SoapConstants.WSSE_ATTACHMENT_REFERENCE_MAP Ljava/lang/String;
      // 47: aload 0
      // 48: getfield com/l7tech/security/xml/SignatureCreationContext.n Ljava/util/Map;
      // 4b: invokevirtual javax/xml/crypto/dsig/dom/DOMSignContext.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      // 4e: pop
      // 4f: goto 56
      // 52: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 55: athrow
      // 56: aconst_null
      // 57: aload 0
      // 58: getfield com/l7tech/security/xml/SignatureCreationContext.o Ljava/util/Map;
      // 5b: if_acmpeq 84
      // 5e: aload 0
      // 5f: getfield com/l7tech/security/xml/SignatureCreationContext.o Ljava/util/Map;
      // 62: invokeinterface java/util/Map.isEmpty ()Z 1
      // 67: ifne 84
      // 6a: goto 71
      // 6d: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 70: athrow
      // 71: aload 3
      // 72: getstatic com/l7tech/util/SoapConstants.WSSE_SECURITY_TOKEN_REFERENCE_MAP Ljava/lang/String;
      // 75: aload 0
      // 76: getfield com/l7tech/security/xml/SignatureCreationContext.o Ljava/util/Map;
      // 79: invokevirtual javax/xml/crypto/dsig/dom/DOMSignContext.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      // 7c: pop
      // 7d: goto 84
      // 80: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 83: athrow
      // 84: aload 3
      // 85: getstatic com/l7tech/security/xml/SignatureCreationContext.t [Ljava/lang/String;
      // 88: astore 4
      // 8a: aload 4
      // 8c: bipush 44
      // 8e: aaload
      // 8f: aload 4
      // 91: bipush 11
      // 93: aaload
      // 94: invokevirtual javax/xml/crypto/dsig/dom/DOMSignContext.putNamespacePrefix (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
      // 97: pop
      // 98: aload 3
      // 99: areturn
      // try (0 -> 4): 5 java/lang/RuntimeException
      // try (7 -> 11): 12 java/lang/RuntimeException
      // try (20 -> 28): 29 java/lang/RuntimeException
      // try (24 -> 37): 38 java/lang/RuntimeException
      // try (40 -> 48): 49 java/lang/RuntimeException
      // try (44 -> 57): 58 java/lang/RuntimeException
   }

   private Element a(@NotNull Element var1, XMLSignatureFactory var2, DOMSignContext var3, List<Reference> var4, KeyInfo var5, String var6) throws SignatureException {
      try {
         if (var1 == null) {
            a(2);
         }
      } catch (Exception var13) {
         throw a(var13);
      }

      try {
         String var10000;
         label26: {
            try {
               if (this.f != null) {
                  var10000 = this.f;
                  break label26;
               }
            } catch (Exception var14) {
               throw a(var14);
            }

            String[] var12 = t;
            var10000 = var12[28];
         }

         String var7 = var10000;
         CanonicalizationMethod var8 = var2.newCanonicalizationMethod(var7, this.getInclusiveNamespacePrefix());
         SignatureMethod var9 = var2.newSignatureMethod(var6, null);
         SignedInfo var10 = null;
         var10 = var2.newSignedInfo(var8, var9, var4);
         XMLSignature var11 = var2.newXMLSignature(var10, var5);
         var11.sign(var3);
         return (Element)var1.getLastChild();
      } catch (Exception var15) {
         throw new SignatureException(t[17] + var15.getMessage());
      }
   }

   private Element a(@NotNull Element var1, XMLSignatureFactory var2, DOMSignContext var3, List<Reference> var4, KeyInfo var5, String var6, String var7) throws SignatureException {
      try {
         if (var1 == null) {
            a(3);
         }
      } catch (Exception var18) {
         throw a(var18);
      }

      try {
         String var10000;
         label26: {
            try {
               if (this.f != null) {
                  var10000 = this.f;
                  break label26;
               }
            } catch (Exception var19) {
               throw a(var19);
            }

            String[] var17 = t;
            var10000 = var17[28];
         }

         String var8 = var10000;
         CanonicalizationMethod var9 = var2.newCanonicalizationMethod(var8, this.getInclusiveNamespacePrefix());
         SignatureMethod var10 = var2.newSignatureMethod(var6, null);
         var10000 = String.valueOf(UUID.randomUUID());
         String[] var21 = t;
         String var12 = var21[30] + var10000;
         String var13 = var21[46] + UUID.randomUUID();
         List var14 = this.a(var2, var3, this.b, var7, this.j, this.l, var13);
         var4.addAll(var14);
         SignedInfo var11 = var2.newSignedInfo(var9, var10, var4);
         XMLObject var15 = this.a(var1, var13, var12, var2);
         XMLSignature var16 = var2.newXMLSignature(var11, var5, List.of(var15), var12, null);
         var16.sign(var3);
         return (Element)var1.getLastChild();
      } catch (Exception var20) {
         throw new SignatureException(t[23] + var20.getMessage());
      }
   }

   protected List<Reference> generateSignatureReferences(
      @NotNull XMLSignatureFactory var1,
      @NotNull DOMSignContext var2,
      @NotNull List<SignatureCreationContext.ElementReference> var3,
      @NotNull String var4,
      boolean var5,
      boolean var6,
      boolean var7
   ) throws SignatureException {
      try {
         if (var1 == null) {
            a(4);
         }
      } catch (SignatureException var9) {
         throw a(var9);
      }

      try {
         if (var2 == null) {
            a(5);
         }
      } catch (SignatureException var11) {
         throw a(var11);
      }

      try {
         if (var3 == null) {
            a(6);
         }
      } catch (SignatureException var8) {
         throw a(var8);
      }

      try {
         if (var4 == null) {
            a(7);
         }
      } catch (SignatureException var10) {
         throw a(var10);
      }

      return this.a(var1, var2, var3, var4, var5, var6, var7, null, null);
   }

   private List<Reference> a(
      @NotNull XMLSignatureFactory var1,
      @NotNull DOMSignContext var2,
      @NotNull List<SignatureCreationContext.ElementReference> var3,
      @NotNull String var4,
      boolean var5,
      boolean var6,
      String var7
   ) throws SignatureException {
      try {
         if (var1 == null) {
            a(8);
         }
      } catch (SignatureException var9) {
         throw a(var9);
      }

      try {
         if (var2 == null) {
            a(9);
         }
      } catch (SignatureException var11) {
         throw a(var11);
      }

      try {
         if (var3 == null) {
            a(10);
         }
      } catch (SignatureException var8) {
         throw a(var8);
      }

      try {
         if (var4 == null) {
            a(11);
         }
      } catch (SignatureException var10) {
         throw a(var10);
      }

      return this.a(var1, var2, var3, var4, var5, this.k, var6, t[42], "#" + var7);
   }

   private List<Reference> a(
      @NotNull XMLSignatureFactory param1,
      @NotNull DOMSignContext param2,
      @NotNull List<SignatureCreationContext.ElementReference> param3,
      @NotNull String param4,
      boolean param5,
      boolean param6,
      boolean param7,
      String param8,
      String param9
   ) throws SignatureException {
      // $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 1
      // 001: ifnonnull 010
      // 004: bipush 12
      // 006: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (I)V
      // 009: goto 010
      // 00c: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 00f: athrow
      // 010: aload 2
      // 011: ifnonnull 020
      // 014: bipush 13
      // 016: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (I)V
      // 019: goto 020
      // 01c: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 01f: athrow
      // 020: aload 3
      // 021: ifnonnull 030
      // 024: bipush 14
      // 026: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (I)V
      // 029: goto 030
      // 02c: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 02f: athrow
      // 030: aload 4
      // 032: ifnonnull 041
      // 035: bipush 15
      // 037: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (I)V
      // 03a: goto 041
      // 03d: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 040: athrow
      // 041: new java/util/ArrayList
      // 044: dup
      // 045: aload 3
      // 046: invokeinterface java/util/List.size ()I 1
      // 04b: invokespecial java/util/ArrayList.<init> (I)V
      // 04e: astore 10
      // 050: aload 1
      // 051: aload 4
      // 053: aconst_null
      // 054: invokevirtual javax/xml/crypto/dsig/XMLSignatureFactory.newDigestMethod (Ljava/lang/String;Ljavax/xml/crypto/dsig/spec/DigestMethodParameterSpec;)Ljavax/xml/crypto/dsig/DigestMethod;
      // 057: astore 11
      // 059: aload 3
      // 05a: invokeinterface java/util/List.iterator ()Ljava/util/Iterator; 1
      // 05f: astore 12
      // 061: aload 12
      // 063: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 068: ifeq 176
      // 06b: aload 12
      // 06d: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 072: checkcast com/l7tech/security/xml/SignatureCreationContext$ElementReference
      // 075: astore 13
      // 077: aload 13
      // 079: invokevirtual com/l7tech/security/xml/SignatureCreationContext$ElementReference.getRefId ()Ljava/lang/String;
      // 07c: astore 14
      // 07e: aload 14
      // 080: getstatic com/l7tech/security/xml/SignatureCreationContext.t [Ljava/lang/String;
      // 083: astore 19
      // 085: aload 19
      // 087: bipush 27
      // 089: aaload
      // 08a: invokevirtual java/lang/String.startsWith (Ljava/lang/String;)Z
      // 08d: ifeq 0c6
      // 090: aload 1
      // 091: aload 13
      // 093: invokevirtual com/l7tech/security/xml/SignatureCreationContext$ElementReference.getAttachmentTransform ()Ljava/lang/String;
      // 096: aconst_null
      // 097: checkcast javax/xml/crypto/dsig/spec/TransformParameterSpec
      // 09a: invokevirtual javax/xml/crypto/dsig/XMLSignatureFactory.newTransform (Ljava/lang/String;Ljavax/xml/crypto/dsig/spec/TransformParameterSpec;)Ljavax/xml/crypto/dsig/Transform;
      // 09d: astore 16
      // 09f: aload 9
      // 0a1: ifnull 0ad
      // 0a4: aload 9
      // 0a6: goto 0af
      // 0a9: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0ac: athrow
      // 0ad: aload 14
      // 0af: astore 17
      // 0b1: aload 1
      // 0b2: aload 17
      // 0b4: aload 11
      // 0b6: aload 16
      // 0b8: invokestatic java/util/Collections.singletonList (Ljava/lang/Object;)Ljava/util/List;
      // 0bb: aload 8
      // 0bd: aconst_null
      // 0be: invokevirtual javax/xml/crypto/dsig/XMLSignatureFactory.newReference (Ljava/lang/String;Ljavax/xml/crypto/dsig/DigestMethod;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)Ljavax/xml/crypto/dsig/Reference;
      // 0c1: astore 15
      // 0c3: goto 169
      // 0c6: aload 14
      // 0c8: ifnull 0da
      // 0cb: aload 14
      // 0cd: invokevirtual java/lang/String.isEmpty ()Z
      // 0d0: ifeq 0e3
      // 0d3: goto 0da
      // 0d6: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0d9: athrow
      // 0da: ldc ""
      // 0dc: goto 0ea
      // 0df: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0e2: athrow
      // 0e3: aload 14
      // 0e5: invokedynamic makeConcatWithConstants (Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "#\u0001" ]
      // 0ea: astore 16
      // 0ec: iload 6
      // 0ee: ifeq 128
      // 0f1: aload 16
      // 0f3: invokevirtual java/lang/String.isEmpty ()Z
      // 0f6: ifeq 128
      // 0f9: goto 100
      // 0fc: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0ff: athrow
      // 100: aload 1
      // 101: getstatic com/l7tech/security/xml/SignatureCreationContext.t [Ljava/lang/String;
      // 104: astore 19
      // 106: aload 19
      // 108: bipush 2
      // 109: aaload
      // 10a: aconst_null
      // 10b: checkcast javax/xml/crypto/dsig/spec/TransformParameterSpec
      // 10e: invokevirtual javax/xml/crypto/dsig/XMLSignatureFactory.newTransform (Ljava/lang/String;Ljavax/xml/crypto/dsig/spec/TransformParameterSpec;)Ljavax/xml/crypto/dsig/Transform;
      // 111: astore 17
      // 113: aload 1
      // 114: ldc ""
      // 116: aload 11
      // 118: aload 17
      // 11a: invokestatic java/util/Collections.singletonList (Ljava/lang/Object;)Ljava/util/List;
      // 11d: aload 8
      // 11f: aconst_null
      // 120: invokevirtual javax/xml/crypto/dsig/XMLSignatureFactory.newReference (Ljava/lang/String;Ljavax/xml/crypto/dsig/DigestMethod;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)Ljavax/xml/crypto/dsig/Reference;
      // 123: astore 15
      // 125: goto 169
      // 128: aload 0
      // 129: aload 13
      // 12b: aload 1
      // 12c: iload 5
      // 12e: iload 7
      // 130: invokevirtual com/l7tech/security/xml/SignatureCreationContext.a (Lcom/l7tech/security/xml/SignatureCreationContext$ElementReference;Ljavax/xml/crypto/dsig/XMLSignatureFactory;ZZ)Ljava/util/List;
      // 133: astore 17
      // 135: aload 9
      // 137: ifnull 143
      // 13a: aload 9
      // 13c: goto 145
      // 13f: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 142: athrow
      // 143: aload 16
      // 145: astore 18
      // 147: aload 1
      // 148: aload 18
      // 14a: aload 11
      // 14c: aload 17
      // 14e: aload 8
      // 150: aconst_null
      // 151: invokevirtual javax/xml/crypto/dsig/XMLSignatureFactory.newReference (Ljava/lang/String;Ljavax/xml/crypto/dsig/DigestMethod;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)Ljavax/xml/crypto/dsig/Reference;
      // 154: astore 15
      // 156: aload 2
      // 157: aload 13
      // 159: invokevirtual com/l7tech/security/xml/SignatureCreationContext$ElementReference.getReferenceElement ()Lorg/w3c/dom/Element;
      // 15c: aload 13
      // 15e: invokevirtual com/l7tech/security/xml/SignatureCreationContext$ElementReference.getNameSpace ()Ljava/lang/String;
      // 161: aload 13
      // 163: invokevirtual com/l7tech/security/xml/SignatureCreationContext$ElementReference.getAttrId ()Ljava/lang/String;
      // 166: invokevirtual javax/xml/crypto/dsig/dom/DOMSignContext.setIdAttributeNS (Lorg/w3c/dom/Element;Ljava/lang/String;Ljava/lang/String;)V
      // 169: aload 10
      // 16b: aload 15
      // 16d: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 172: pop
      // 173: goto 061
      // 176: goto 194
      // 179: astore 11
      // 17b: new java/security/SignatureException
      // 17e: dup
      // 17f: aload 11
      // 181: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 184: getstatic com/l7tech/security/xml/SignatureCreationContext.t [Ljava/lang/String;
      // 187: bipush 9
      // 189: aaload
      // 18a: swap
      // 18b: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // 190: invokespecial java/security/SignatureException.<init> (Ljava/lang/String;)V
      // 193: athrow
      // 194: aload 10
      // 196: areturn
      // try (135 -> 139): 139 java/lang/Exception
      // try (100 -> 105): 106 java/lang/Exception
      // try (87 -> 95): 95 java/lang/Exception
      // try (85 -> 90): 91 java/lang/Exception
      // try (67 -> 71): 71 java/lang/Exception
      // try (21 -> 25): 26 java/lang/Exception
      // try (14 -> 18): 19 java/lang/Exception
      // try (7 -> 11): 12 java/lang/Exception
      // try (0 -> 4): 5 java/lang/Exception
      // try (34 -> 164): 165 java/lang/Exception
   }

   private List<Transform> a(@NotNull SignatureCreationContext.ElementReference param1, @NotNull XMLSignatureFactory param2, boolean param3, boolean param4) throws SignatureException {
      // $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 1
      // 01: ifnonnull 10
      // 04: bipush 16
      // 06: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (I)V
      // 09: goto 10
      // 0c: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0f: athrow
      // 10: aload 2
      // 11: ifnonnull 20
      // 14: bipush 17
      // 16: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (I)V
      // 19: goto 20
      // 1c: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1f: athrow
      // 20: aload 1
      // 21: invokevirtual com/l7tech/security/xml/SignatureCreationContext$ElementReference.getTransformAlgorithms ()Ljava/util/List;
      // 24: astore 5
      // 26: aload 5
      // 28: ifnull 48
      // 2b: aload 5
      // 2d: invokeinterface java/util/List.isEmpty ()Z 1
      // 32: ifne 48
      // 35: goto 3c
      // 38: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 3b: athrow
      // 3c: aload 0
      // 3d: aload 2
      // 3e: aload 5
      // 40: invokevirtual com/l7tech/security/xml/SignatureCreationContext.a (Ljavax/xml/crypto/dsig/XMLSignatureFactory;Ljava/util/List;)Ljava/util/List;
      // 43: areturn
      // 44: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 47: athrow
      // 48: aload 0
      // 49: aload 2
      // 4a: iload 3
      // 4b: iload 4
      // 4d: invokevirtual com/l7tech/security/xml/SignatureCreationContext.a (Ljavax/xml/crypto/dsig/XMLSignatureFactory;ZZ)Ljava/util/List;
      // 50: areturn
      // try (0 -> 4): 5 java/security/SignatureException
      // try (7 -> 11): 12 java/security/SignatureException
      // try (17 -> 22): 23 java/security/SignatureException
      // try (19 -> 30): 30 java/security/SignatureException
   }

   private List<Transform> a(XMLSignatureFactory var1, List<Pair<String, XMLStructure>> var2) throws SignatureException {
      ArrayList var3 = new ArrayList(2);

      for (Pair var5 : var2) {
         try {
            try {
               if (t[28].equals(var5.left)) {
                  var3.add(var1.newTransform((String)var5.left, this.getInclusiveNamespacePrefix()));
                  continue;
               }
            } catch (Exception var7) {
               throw a(var7);
            }

            var3.add(var1.newTransform((String)var5.left, (XMLStructure)var5.right));
         } catch (Exception var8) {
            throw new SignatureException(t[9] + var8);
         }
      }

      return var3;
   }

   private List<Transform> a(XMLSignatureFactory var1, boolean var2, boolean var3) throws SignatureException {
      ArrayList var4 = new ArrayList(2);

      try {
         try {
            if (var2) {
               var4.add(var1.newTransform(t[29], (TransformParameterSpec)null));
            }
         } catch (Exception var7) {
            throw a(var7);
         }

         try {
            if (var3) {
               var4.add(var1.newCanonicalizationMethod(t[32], this.getInclusiveNamespacePrefix()));
               return var4;
            }
         } catch (Exception var8) {
            throw a(var8);
         }

         String[] var6 = t;
         var4.add(var1.newCanonicalizationMethod(var6[28], (C14NMethodParameterSpec)null));
         return var4;
      } catch (Exception var9) {
         throw new SignatureException(t[8] + var9);
      }
   }

   protected KeyInfo getKeyInfo(@NotNull XMLSignatureFactory var1, Element var2, X509Certificate[] var3) throws SignatureException {
      try {
         if (var1 == null) {
            a(18);
         }
      } catch (SignatureException var8) {
         throw a(var8);
      }

      KeyInfoFactory var4 = var1.getKeyInfoFactory();
      KeyInfo var5;
      if (var2 != null) {
         var5 = this.getKeyInfoFromElement(var2, var4);
      } else {
         ArrayList var6 = new ArrayList();
         Collections.addAll(var6, var3);
         X509Data var7 = var4.newX509Data(var6);
         var5 = var4.newKeyInfo(Collections.singletonList(var7), null);
      }

      return var5;
   }

   protected KeyInfo getKeyInfoFromElement(@NotNull Element var1, @NotNull KeyInfoFactory var2) throws SignatureException {
      try {
         if (var1 == null) {
            a(19);
         }
      } catch (MarshalException var7) {
         throw a(var7);
      }

      try {
         if (var2 == null) {
            a(20);
         }
      } catch (MarshalException var8) {
         throw a(var8);
      }

      DOMStructure var3 = new DOMStructure(var1);

      try {
         return var2.unmarshalKeyInfo(var3);
      } catch (MarshalException var6) {
         throw new SignatureException(t[34] + var6);
      }
   }

   private XMLObject a(Element var1, String var2, String var3, @NotNull XMLSignatureFactory var4) throws JAXBException {
      try {
         if (var4 == null) {
            a(21);
         }
      } catch (JAXBException var24) {
         throw a(var24);
      }

      ObjectFactory var5 = new ObjectFactory();
      X509Certificate var6 = this.c[0];

      String var10000;
      label22: {
         try {
            if (this.s == null) {
               var10000 = t[39];
               break label22;
            }
         } catch (JAXBException var23) {
            throw a(var23);
         }

         var10000 = this.s;
      }

      String var7 = var10000;
      DigestAlgAndValueType var8 = var5.createDigestAlgAndValueType();
      var8.setDigestValue(DsigUtil.calculateCertificateShaDigest(var6, var7));
      var8.setDigestMethod(var5.createDigestMethodType());
      var8.getDigestMethod().setAlgorithm(var7);
      X509IssuerSerialType var9 = var5.createX509IssuerSerialType();
      var9.setX509IssuerName(var6.getIssuerX500Principal().getName());
      var9.setX509SerialNumber(var6.getSerialNumber());
      CertIDType var10 = var5.createCertIDType();
      var10.setCertDigest(var8);
      var10.setIssuerSerial(var9);
      CertIDListType var11 = var5.createCertIDListType();
      var11.getCert().add(var10);
      SignaturePolicyIdentifierType var12 = var5.createSignaturePolicyIdentifierType();
      var12.setSignaturePolicyImplied("");
      SignedSignaturePropertiesType var13 = var5.createSignedSignaturePropertiesType();
      var13.setSigningTime(a());
      var13.setSigningCertificate(var11);
      var13.setSignaturePolicyIdentifier(var12);
      SignedPropertiesType var14 = var5.createSignedPropertiesType();
      var14.setId(var2);
      var14.setSignedSignatureProperties(var13);
      QualifyingPropertiesType var15 = var5.createQualifyingPropertiesType();
      var15.setTarget("#" + var3);
      var15.setSignedProperties(var14);
      JAXBElement var16 = var5.createQualifyingProperties(var15);
      JAXBContext var17 = JAXBContext.newInstance(new Class[]{QualifyingPropertiesType.class});
      Marshaller var18 = var17.createMarshaller();
      DOMResult var19 = new DOMResult();
      var18.marshal(var16, var19);
      Node var20 = var19.getNode().getFirstChild();
      Node var21 = var1.getOwnerDocument().importNode(var20, true);
      a(var21.getChildNodes());
      DOMStructure var22 = new DOMStructure(var21);
      return var4.newXMLObject(Collections.singletonList(var22), null, null, null);
   }

   private static void a(NodeList var0) {
      for (int var1 = 0; var1 < var0.getLength(); var1++) {
         Node var2 = var0.item(var1);
         if (var2 instanceof Element var3) {
            String[] var6 = t;

            for (String var5 : Set.of(var6[4], var6[31], var6[12])) {
               try {
                  if (var3.hasAttribute(var5)) {
                     var3.setIdAttribute(var5, true);
                  }
               } catch (RuntimeException var7) {
                  throw a(var7);
               }
            }
         }

         a(var2.getChildNodes());
      }
   }

   private static XMLGregorianCalendar a() {
      try {
         GregorianCalendar var0 = GregorianCalendar.from(ZonedDateTime.now());
         return DatatypeFactory.newInstance().newXMLGregorianCalendar(var0);
      } catch (DatatypeConfigurationException var1) {
         throw new RuntimeException(var1);
      }
   }

   protected C14NMethodParameterSpec getInclusiveNamespacePrefix() {
      // $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/security/xml/SignatureCreationContext.t [Ljava/lang/String;
      // 03: bipush 33
      // 05: aaload
      // 06: aconst_null
      // 07: invokestatic com/l7tech/util/ConfigFactory.getProperty (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
      // 0a: astore 1
      // 0b: aload 1
      // 0c: ifnull 2d
      // 0f: aload 1
      // 10: invokevirtual java/lang/String.isEmpty ()Z
      // 13: ifne 2d
      // 16: goto 1d
      // 19: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1c: athrow
      // 1d: new javax/xml/crypto/dsig/spec/ExcC14NParameterSpec
      // 20: dup
      // 21: aload 1
      // 22: invokestatic java/util/Collections.singletonList (Ljava/lang/Object;)Ljava/util/List;
      // 25: invokespecial javax/xml/crypto/dsig/spec/ExcC14NParameterSpec.<init> (Ljava/util/List;)V
      // 28: areturn
      // 29: invokestatic com/l7tech/security/xml/SignatureCreationContext.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2c: athrow
      // 2d: aconst_null
      // 2e: areturn
      // try (6 -> 11): 12 java/lang/RuntimeException
      // try (8 -> 20): 20 java/lang/RuntimeException
   }

   static {
      String[] var5 = new String[48];
      int var3 = 0;
      String var2 = "g1J\u0003\u001bZ)e\u0007M\u0001\u0007^9P&K\u0016\fI)i1W4\f]8r1J\u0005\fH*h P\u0016S\u0014ru&MH\fO.izK\u0014\u000e\u0014m1m\u0014UJh4g:A\u00029I2p1V\u0012\u0000^.5h P\u0016S\u0014rw#SH\u001e\bso&CI[\u000bm0{\u0014_FC0l0W\u000f\u000e\u00188n\"A\n\u0006K8dyW\u000f\u000eU<t!V\u0003\ng1P-\fB\u0014n2K\u0002i0\u0007S\u001ceK[\u000ek\u0003D\u001bi0c;II\u0005\f)e7LI\u001a^>u&M\u0012\u0010\u0014%m8\u000b5\u0000\\3a Q\u0014\fx/e5P\u000f\u0006U\u001eo:P\u0003\u0011O0E&V\t\u001b\u001b-r;G\u0003\u001aH4n3\u0004\u0015\u0000\\3a Q\u0014\f\u001b/e2A\u0014\fU>etE\n\u000eT/i L\u000bS\u001b0E&V\t\u001b\u001b-r;G\u0003\u001aH4n3\u0004\u0015\u0000\\3a Q\u0014\f\u001b/e2A\u0014\fU>etE\n\u000eT/i L\u000bS\u001b\rp5V\u0003\u0007O\u0018l1I\u0003\u0007O\u0002d'\u0002I\u0010\u001bg1J\u0003\u001bZ)e\u0007M\u0001\u0007Z)u&A4\f]8r1J\u0005\fH\u0006p5V\u0003\u0007O\u000ek1]/\u0007]2E8A\u000b\fU)\u0002d'\u001aE&V\t\u001b\u001b>r1E\u0012\u0000U: 'M\u0001\u0007Z)u&A\\I\u0019r1B\u0003\u001b^3c1`\u000f\u000e^.t\u0019A\u0012\u0001T9N5I\u0003\u0012g1J\u0003\u001bZ)e\u0006A\u0000\fI8n7A\u0015\u0016e8A\u000b\fU)R1B\u0003\u001b^3c1p\t:R:n\u0003r1B\u000ek1]/\u0007]2F5G\u0012\u0006I$\u001eE&V\t\u001b\u001b>r1E\u0012\u0000U: \fe\u0002,h4g:E\u0012\u001cI8:t\"h P\u0016S\u0014rw#SH\u001e\bso&CI[\u000bm0{\u0014_FC0l0W\u000f\u000e\u0018\u001ac&A\u0007\u001d^\fu5H\u000f\u000fB4n3t\u0014\u0006K8r M\u0003\u001a\ns=C\b\u0000U:K1]\u0004c=@\\'h P\u0016S\u0014rw#SH\u001e\bso&CI[\u000bm1{\u0015VFC0lyA\u001e\n\u0016>1`JE5h P\u0016S\u0014rw#SH\u001e\bso&CI[\u000bm0{\u0014_FC0l0W\u000f\u000e\u00188n\"A\n\u0006K8dyW\u000f\u000eU<t!V\u0003\ns=C\b\bO(r1\t\u0002I0'h P\u0016S\u0014rw#SH\u001e\bso&CI[\u000bm1{\u0015VFC0lyA\u001e\n\u0016>1`JEBc;IH\u0005\f)e7LH\u001a^>u&M\u0012\u0010\u0015%m8\n\u0002\fX2r5P\t\u001b\u00159i3W\u000f\u000e\u00154n7H\u0013\u001aR+e\u001aE\u000b\fH-a7A\u00159I8f=\\\"E&V\t\u001b\u001b-r;G\u0003\u001aH4n3\u0004\r\fB\u0014n2KF\fW8m1J\u0012S\u001b>A&C\u0013\u0004^3ttB\t\u001b\u001b\u001dN;P(\u001cW1 $E\u0014\bV8t1VFN\u001e.'tK\u0000I\u001e..qWF\u0004N.ttJ\t\u001d\u001b?etJ\u0013\u0005W\u0010s=C\b\bO(r1b\u0007\nO2r-\u000ed;I5\u0000\\3C;J\u0012\fC)\u0013c&A\u0007\u001d^\u0005M\u0018`5\u0000\\3a Q\u0014\f\u0007S\u001ceK[\u000ek\u0010g1P2\u001bZ3s2K\u0014\u0004w4s \u000eg1P5\u0000\\3C;J\u0012\fC)*h P\u0016S\u0014ru&MH\fO.izK\u0014\u000e\u0014m1m\u0014UJh4g:A\u00029I2p1V\u0012\u0000^.\u0013x9H5\u0000\\3a Q\u0014\f}<c K\u0014\u0010\"h P\u0016S\u0014rw#SH\u001e\bso&CI[\u000bm0{\u0014_FC0l0W\u000f\u000e\u0018\u0013c&A\u0007\u001d^\u0005A0a5\u0000\\3a Q\u0014\f";
      int var4 = "g1J\u0003\u001bZ)e\u0007M\u0001\u0007^9P&K\u0016\fI)i1W4\f]8r1J\u0005\fH*h P\u0016S\u0014ru&MH\fO.izK\u0014\u000e\u0014m1m\u0014UJh4g:A\u00029I2p1V\u0012\u0000^.5h P\u0016S\u0014rw#SH\u001e\bso&CI[\u000bm0{\u0014_FC0l0W\u000f\u000e\u00188n\"A\n\u0006K8dyW\u000f\u000eU<t!V\u0003\ng1P-\fB\u0014n2K\u0002i0\u0007S\u001ceK[\u000ek\u0003D\u001bi0c;II\u0005\f)e7LI\u001a^>u&M\u0012\u0010\u0014%m8\u000b5\u0000\\3a Q\u0014\fx/e5P\u000f\u0006U\u001eo:P\u0003\u0011O0E&V\t\u001b\u001b-r;G\u0003\u001aH4n3\u0004\u0015\u0000\\3a Q\u0014\f\u001b/e2A\u0014\fU>etE\n\u000eT/i L\u000bS\u001b0E&V\t\u001b\u001b-r;G\u0003\u001aH4n3\u0004\u0015\u0000\\3a Q\u0014\f\u001b/e2A\u0014\fU>etE\n\u000eT/i L\u000bS\u001b\rp5V\u0003\u0007O\u0018l1I\u0003\u0007O\u0002d'\u0002I\u0010\u001bg1J\u0003\u001bZ)e\u0007M\u0001\u0007Z)u&A4\f]8r1J\u0005\fH\u0006p5V\u0003\u0007O\u000ek1]/\u0007]2E8A\u000b\fU)\u0002d'\u001aE&V\t\u001b\u001b>r1E\u0012\u0000U: 'M\u0001\u0007Z)u&A\\I\u0019r1B\u0003\u001b^3c1`\u000f\u000e^.t\u0019A\u0012\u0001T9N5I\u0003\u0012g1J\u0003\u001bZ)e\u0006A\u0000\fI8n7A\u0015\u0016e8A\u000b\fU)R1B\u0003\u001b^3c1p\t:R:n\u0003r1B\u000ek1]/\u0007]2F5G\u0012\u0006I$\u001eE&V\t\u001b\u001b>r1E\u0012\u0000U: \fe\u0002,h4g:E\u0012\u001cI8:t\"h P\u0016S\u0014rw#SH\u001e\bso&CI[\u000bm0{\u0014_FC0l0W\u000f\u000e\u0018\u001ac&A\u0007\u001d^\fu5H\u000f\u000fB4n3t\u0014\u0006K8r M\u0003\u001a\ns=C\b\u0000U:K1]\u0004c=@\\'h P\u0016S\u0014rw#SH\u001e\bso&CI[\u000bm1{\u0015VFC0lyA\u001e\n\u0016>1`JE5h P\u0016S\u0014rw#SH\u001e\bso&CI[\u000bm0{\u0014_FC0l0W\u000f\u000e\u00188n\"A\n\u0006K8dyW\u000f\u000eU<t!V\u0003\ns=C\b\bO(r1\t\u0002I0'h P\u0016S\u0014rw#SH\u001e\bso&CI[\u000bm1{\u0015VFC0lyA\u001e\n\u0016>1`JEBc;IH\u0005\f)e7LH\u001a^>u&M\u0012\u0010\u0015%m8\n\u0002\fX2r5P\t\u001b\u00159i3W\u000f\u000e\u00154n7H\u0013\u001aR+e\u001aE\u000b\fH-a7A\u00159I8f=\\\"E&V\t\u001b\u001b-r;G\u0003\u001aH4n3\u0004\r\fB\u0014n2KF\fW8m1J\u0012S\u001b>A&C\u0013\u0004^3ttB\t\u001b\u001b\u001dN;P(\u001cW1 $E\u0014\bV8t1VFN\u001e.'tK\u0000I\u001e..qWF\u0004N.ttJ\t\u001d\u001b?etJ\u0013\u0005W\u0010s=C\b\bO(r1b\u0007\nO2r-\u000ed;I5\u0000\\3C;J\u0012\fC)\u0013c&A\u0007\u001d^\u0005M\u0018`5\u0000\\3a Q\u0014\f\u0007S\u001ceK[\u000ek\u0010g1P2\u001bZ3s2K\u0014\u0004w4s \u000eg1P5\u0000\\3C;J\u0012\fC)*h P\u0016S\u0014ru&MH\fO.izK\u0014\u000e\u0014m1m\u0014UJh4g:A\u00029I2p1V\u0012\u0000^.\u0013x9H5\u0000\\3a Q\u0014\f}<c K\u0014\u0010\"h P\u0016S\u0014rw#SH\u001e\bso&CI[\u000bm0{\u0014_FC0l0W\u000f\u000e\u0018\u0013c&A\u0007\u001d^\u0005A0a5\u0000\\3a Q\u0014\f"
         .length();
      char var1 = '"';
      int var7 = -1;

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

         while (true) {
            String var8 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     t = var5;
                     String[] var9 = t;
                     a = t[9];
                     q = var9[5];
                     p = var9[1];
                     ResourceResolver.register(new ResolverAttachment(), true);
                     return;
                  }

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

                  var2 = ",b\u001cWS\u0000//y\u0014IS\u0016v6n\b\u0014\u00158n\u000frS\u001dK1m\u0014\u007fD\u000bo\u001ag\u001eTS\nv";
                  var4 = ",b\u001cWS\u0000//y\u0014IS\u0016v6n\b\u0014\u00158n\u000frS\u001dK1m\u0014\u007fD\u000bo\u001ag\u001eTS\nv".length();
                  var1 = 18;
                  var7 = -1;
            }

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

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

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

      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 -> 56;
            case 1 -> 108;
            case 2 -> 28;
            case 3 -> 94;
            case 4 -> 81;
            case 5 -> 3;
            default -> 101;
         });
      }

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

   public static class Builder {
      private List<SignatureCreationContext.ElementReference> a;
      private X509Certificate[] b;
      private Key c;
      private Element d;
      private String e;
      private String f;
      private boolean g;
      private boolean h;
      private boolean i;
      private boolean j;
      private Element k;
      private Map<String, InputSource> l;
      private Map<String, Node> m;
      private String n;
      private boolean o;
      private String p;
      private static final String[] q;

      public SignatureCreationContext.Builder setElementReferenceList(@NotNull List<SignatureCreationContext.ElementReference> var1) {
         try {
            if (var1 == null) {
               a(0);
            }
         } catch (IllegalArgumentException var2) {
            throw a(var2);
         }

         this.a = var1;
         return this;
      }

      public SignatureCreationContext.Builder setX509CertificateChain(@NotNull X509Certificate[] var1) {
         try {
            if (var1 == null) {
               a(1);
            }
         } catch (IllegalArgumentException var2) {
            throw a(var2);
         }

         this.b = var1;
         return this;
      }

      public SignatureCreationContext.Builder setSigningKey(@NotNull Key var1) {
         try {
            if (var1 == null) {
               a(2);
            }
         } catch (IllegalArgumentException var2) {
            throw a(var2);
         }

         this.c = var1;
         return this;
      }

      public SignatureCreationContext.Builder setKeyInfoChildElement(@NotNull Element var1) {
         try {
            if (var1 == null) {
               a(3);
            }
         } catch (IllegalArgumentException var2) {
            throw a(var2);
         }

         this.d = var1;
         return this;
      }

      public SignatureCreationContext.Builder setSignatureCanonicalizationMethod(@NotNull String var1) {
         try {
            if (var1 == null) {
               a(4);
            }
         } catch (IllegalArgumentException var2) {
            throw a(var2);
         }

         this.n = var1;
         return this;
      }

      public SignatureCreationContext.Builder setSignatureMethodDigestAlg(@Nullable String var1) {
         this.e = var1;
         return this;
      }

      public SignatureCreationContext.Builder setReferenceDigestAlg(@Nullable String var1) {
         this.f = var1;
         return this;
      }

      public SignatureCreationContext.Builder allowDigestFallback(boolean var1) {
         this.g = var1;
         return this;
      }

      public SignatureCreationContext.Builder includeEnvelopedTransform(boolean var1) {
         this.h = var1;
         return this;
      }

      public SignatureCreationContext.Builder enableImplicitEmptyUriDocRef(boolean var1) {
         this.i = var1;
         return this;
      }

      public SignatureCreationContext.Builder addInclusiveNamespaceToTransform(boolean var1) {
         this.j = var1;
         return this;
      }

      public SignatureCreationContext.Builder setEnvelopeElement(Element var1) {
         this.k = var1;
         return this;
      }

      public SignatureCreationContext.Builder usesAttachmentEntityMap(@NotNull Map<String, InputSource> var1) {
         try {
            if (var1 == null) {
               a(5);
            }
         } catch (IllegalArgumentException var2) {
            throw a(var2);
         }

         this.l = var1;
         return this;
      }

      public SignatureCreationContext.Builder usesSTRMapping(@NotNull Map<String, Node> var1) {
         try {
            if (var1 == null) {
               a(6);
            }
         } catch (IllegalArgumentException var2) {
            throw a(var2);
         }

         this.m = var1;
         return this;
      }

      public SignatureCreationContext.Builder isXAdESEnabled(boolean var1) {
         this.o = var1;
         return this;
      }

      public SignatureCreationContext.Builder setCertificateDigestAlgName(@Nullable String var1) {
         this.p = var1;
         return this;
      }

      public SignatureCreationContext build() {
         return new SignatureCreationContext(this);
      }

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

      static {
         String[] var5 = new String[16];
         int var3 = 0;
         String var2 = "k\u001bfXmz\u000fm\u0017cXr(\u0018}\u0006b\u0003xb\u0003e\u0018$$h*\u0015i\u0000~\u0005d\u000e\tm\u0015\u007f\u001en#8g\u001a\u007f\u0012y9_J\u0001b\u001be(\t\u0014pA;NB(\t|\u001dm\u001eb,\u000fm7c\u0016h#\u0014m\u0018n\u001ad#\u000fZ\u0011m\u0012s(\u0015k\u0011G\u001er9\u0013c\u0011r>o+\u0014K\u001cb\u001be\b\u0017m\u0019n\u0019u>I\u0006l\u0002l(\u0015|Tm\u0018sm;F\u001b\u007f9t!\u0017(\u0004j\u0005` \u001e|\u0011yW&h\b/Td\u0011!h\b&QxWl8\b|Te\u0018um\u0019mTe\u0002m!\u0016{\u0011\u007f<d42f\u0012d4i$\u0017l1g\u0012l(\u0015|\n{\u001dl\u0019h#\u001cC\u0011r\u0017{\u0011\u007f/4}BK\u0011y\u0003h+\u0012k\u0015\u007f\u0012B%\u001aa\u001a\u0017}\u0007n\u0004@9\u000fi\u0017c\u001ad#\u000fM\u001a\u007f\u001eu46i\u0004\u000e}\u0007n\u0004R\u0019)E\u0015{\u0007h#\u001c\u0016k\u0015e\u0018o$\u0018i\u0018b\r`9\u0012g\u001aF\u0012u%\u0014l\u0017{\u0011\u007f2m(\u0016m\u001a\u007f%d+\u001ez\u0011e\u0014d\u0001\u0012{\u0000\"{\u0011\u007f$h*\u0015i\u0000~\u0005d\u000e\u001af\u001be\u001eb,\u0017a\u000ej\u0003h\"\u0015E\u0011\u007f\u001fn)\u0013i\u0000\u007f\u0016b%\u0016m\u001a\u007f2o9\u0012|\rF\u0016q";
         int var4 = "k\u001bfXmz\u000fm\u0017cXr(\u0018}\u0006b\u0003xb\u0003e\u0018$$h*\u0015i\u0000~\u0005d\u000e\tm\u0015\u007f\u001en#8g\u001a\u007f\u0012y9_J\u0001b\u001be(\t\u0014pA;NB(\t|\u001dm\u001eb,\u000fm7c\u0016h#\u0014m\u0018n\u001ad#\u000fZ\u0011m\u0012s(\u0015k\u0011G\u001er9\u0013c\u0011r>o+\u0014K\u001cb\u001be\b\u0017m\u0019n\u0019u>I\u0006l\u0002l(\u0015|Tm\u0018sm;F\u001b\u007f9t!\u0017(\u0004j\u0005` \u001e|\u0011yW&h\b/Td\u0011!h\b&QxWl8\b|Te\u0018um\u0019mTe\u0002m!\u0016{\u0011\u007f<d42f\u0012d4i$\u0017l1g\u0012l(\u0015|\n{\u001dl\u0019h#\u001cC\u0011r\u0017{\u0011\u007f/4}BK\u0011y\u0003h+\u0012k\u0015\u007f\u0012B%\u001aa\u001a\u0017}\u0007n\u0004@9\u000fi\u0017c\u001ad#\u000fM\u001a\u007f\u001eu46i\u0004\u000e}\u0007n\u0004R\u0019)E\u0015{\u0007h#\u001c\u0016k\u0015e\u0018o$\u0018i\u0018b\r`9\u0012g\u001aF\u0012u%\u0014l\u0017{\u0011\u007f2m(\u0016m\u001a\u007f%d+\u001ez\u0011e\u0014d\u0001\u0012{\u0000\"{\u0011\u007f$h*\u0015i\u0000~\u0005d\u000e\u001af\u001be\u001eb,\u0017a\u000ej\u0003h\"\u0015E\u0011\u007f\u001fn)\u0013i\u0000\u007f\u0016b%\u0016m\u001a\u007f2o9\u0012|\rF\u0016q"
            .length();
         char var1 = '8';
         int var7 = -1;

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

            while (true) {
               String var8 = a(var10000, a(var10001));
               switch (var10002) {
                  case 0:
                     var5[var3++] = var8;
                     if ((var7 += var1) >= var4) {
                        q = var5;
                        return;
                     }

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

                     var2 = "\nq\bR\u001fhe\u0012`\u0014K\u0011L\r\n`\u000eU\u0019[d\u0010k\u001dM\u0015E";
                     var4 = "\nq\bR\u001fhe\u0012`\u0014K\u0011L\r\n`\u000eU\u0019[d\u0010k\u001dM\u0015E".length();
                     var1 = '\r';
                     var7 = -1;
               }

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

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

         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 -> 50;
               case 1 -> 78;
               case 2 -> 49;
               case 3 -> 77;
               case 4 -> 59;
               case 5 -> 119;
               default -> 65;
            });
         }

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

   public static class ElementReference {
      private final Element a;
      private final String b;
      private final String c;
      private final String d;
      private String e;
      private final List<Pair<String, XMLStructure>> f = new ArrayList<>();

      public ElementReference(Element var1, String var2, String var3, String var4) {
         this.a = var1;
         this.b = var2;
         this.c = var3;
         this.d = var4;
      }

      public Element getReferenceElement() {
         return this.a;
      }

      public String getNameSpace() {
         return this.b;
      }

      public String getAttrId() {
         return this.c;
      }

      public String getRefId() {
         return this.d;
      }

      public List<Pair<String, XMLStructure>> getTransformAlgorithms() {
         return this.f;
      }

      public void addTransform(Pair<String, XMLStructure> var1) {
         this.f.add(var1);
      }

      public String getAttachmentTransform() {
         return this.e;
      }

      public void addAttachmentTransform(String var1) {
         this.e = var1;
      }
   }
}
