package com.l7tech.external.assertions.gatewaymanagement;

import com.l7tech.policy.AssertionPath;
import com.l7tech.policy.PolicyValidatorResult;
import com.l7tech.policy.PolicyValidatorResult.Warning;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.AssertionMetadata;
import com.l7tech.policy.assertion.DefaultAssertionMetadata;
import com.l7tech.policy.assertion.SetsVariables;
import com.l7tech.policy.assertion.annotation.ProcessesRequest;
import com.l7tech.policy.assertion.annotation.RequiresSOAP;
import com.l7tech.policy.assertion.identity.IdentityAssertion;
import com.l7tech.policy.validator.AssertionValidator;
import com.l7tech.policy.validator.PolicyValidationContext;
import com.l7tech.policy.variable.DataType;
import com.l7tech.policy.variable.VariableMetadata;
import com.l7tech.wsdl.Wsdl;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;

@ProcessesRequest
@RequiresSOAP
public class GatewayManagementAssertion extends Assertion implements SetsVariables {
   public static final String SUFFIX_ACTION;
   public static final String SUFFIX_ENTITY_TYPE;
   public static final String SUFFIX_ENTITY_ID;
   public static final String SUFFIX_MESSAGE;
   public static final Collection<String> VARIABLE_SUFFIXES;
   private static final String META_INITIALIZED;
   private String variablePrefix;
   static final long serialVersionUID = 5861935765925563882L;
   private static final String[] b;

   public String getVariablePrefix() {
      return this.variablePrefix;
   }

   public void setVariablePrefix(String var1) {
      this.variablePrefix = var1;
   }

   public VariableMetadata[] getVariablesSet() {
      VariableMetadata[] var1;
      if (this.variablePrefix == null) {
         var1 = new VariableMetadata[0];
      } else {
         VariableMetadata[] var10000 = new VariableMetadata[4];
         String[] var2 = b;
         var10000[0] = new VariableMetadata(this.variablePrefix + var2[1], false, false, null, false, DataType.STRING);
         var10000[1] = new VariableMetadata(this.variablePrefix + var2[28], false, false, null, false, DataType.STRING);
         var10000[2] = new VariableMetadata(this.variablePrefix + var2[19], false, false, null, false, DataType.STRING);
         var10000[3] = new VariableMetadata(this.variablePrefix + var2[7], false, false, null, false, DataType.STRING);
         var1 = var10000;
      }

      return var1;
   }

   public AssertionMetadata meta() {
      DefaultAssertionMetadata var1 = super.defaultMeta();
      if (Boolean.TRUE.equals(var1.get(META_INITIALIZED))) {
         return var1;
      }

      String[] var2 = b;
      var1.put(var2[23], var2[13]);
      var1.put(var2[14], var2[8]);
      var1.put(var2[24], var2[12]);
      var1.put(var2[5], new String[]{var2[26]});
      var1.put(var2[20], var2[16]);
      var1.put(var2[3], var2[18]);
      var1.put(var2[10], var2[0]);
      var1.put(var2[22], var2[30]);
      var1.put(var2[9], GatewayManagementAssertion.Validator.class.getName());
      var1.put(var2[6], Boolean.TRUE);
      var1.put(META_INITIALIZED, Boolean.TRUE);
      return var1;
   }

   static {
      String[] var5 = new String[31];
      int var3 = 0;
      String var2 = "h,ctRs~n ft[<~n1`;Rjkx0k(J-ee0 =_0o|\"w7_*kl&c?P0$h,`)Q(o%\u0004o.[3kr\u000eo4_#of&`.\u007f7yn1z3Q*Zy,~?L0cn0J3_(el\u0007%\"m.W+d\u0007f&})_#o\u000em&o.K6oX&z\u0014_)o\u0006j z3Q*\u000e{\"b?J0oM,b>[6y\u0012b0\\5K0ce$O)M!x\u007f*a4\b%.k)M%mn\u0013F\"`;Y!*\u007f+kzy%~n4o#\u0010\u0018{,b3]=\\j/g>_0ey\u0000b;M7dj.k\u0019{1a*[6~b&}\u001fZ-~d1M6_7ye\"c?\u0007f&})_#o\u001dL\"z?I%s+\u000eo4_#of&`.\u001e\u0014xd3k(J-ox\u000eF\"`;Y!*L\"z?I%s\u000bo&}9L-z\u007f*a4\bn-z3J=Co)h,cuRs~n fu]+dx,b?\u00116ox,{(]!y$0k(H!x:u =W\"\nn-z3J=^r3k\u000b#%|5S\u0007fj0}s\t%&`.W0sB'\u000f{\"b?J0oE,j?w'ee\u0006j z3Q*\u001bf,j/R!Fd\"j\u0016W7~n-k(}(kx0`;S!\tx+a(J\nkf&\u0014{1a*[6~b&}\u001b]0cd-@;S!\bn-z3J=Co\u0012b-z?L*kg\u0002})[6~b,`)\nn-z3J=^r3k\u000b%&`.W0s_:~?";
      int var4 = "h,ctRs~n ft[<~n1`;Rjkx0k(J-ee0 =_0o|\"w7_*kl&c?P0$h,`)Q(o%\u0004o.[3kr\u000eo4_#of&`.\u007f7yn1z3Q*Zy,~?L0cn0J3_(el\u0007%\"m.W+d\u0007f&})_#o\u000em&o.K6oX&z\u0014_)o\u0006j z3Q*\u000e{\"b?J0oM,b>[6y\u0012b0\\5K0ce$O)M!x\u007f*a4\b%.k)M%mn\u0013F\"`;Y!*\u007f+kzy%~n4o#\u0010\u0018{,b3]=\\j/g>_0ey\u0000b;M7dj.k\u0019{1a*[6~b&}\u001fZ-~d1M6_7ye\"c?\u0007f&})_#o\u001dL\"z?I%s+\u000eo4_#of&`.\u001e\u0014xd3k(J-ox\u000eF\"`;Y!*L\"z?I%s\u000bo&}9L-z\u007f*a4\bn-z3J=Co)h,cuRs~n fu]+dx,b?\u00116ox,{(]!y$0k(H!x:u =W\"\nn-z3J=^r3k\u000b#%|5S\u0007fj0}s\t%&`.W0sB'\u000f{\"b?J0oE,j?w'ee\u0006j z3Q*\u001bf,j/R!Fd\"j\u0016W7~n-k(}(kx0`;S!\tx+a(J\nkf&\u0014{1a*[6~b&}\u001b]0cd-@;S!\bn-z3J=Co\u0012b-z?L*kg\u0002})[6~b,`)\nn-z3J=^r3k\u000b%&`.W0s_:~?"
         .length();
      char var1 = 'c';
      int var7 = -1;

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

         while (true) {
            String var9 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     String[] var10 = b;
                     SUFFIX_ACTION = b[4];
                     SUFFIX_MESSAGE = var10[2];
                     SUFFIX_ENTITY_ID = var10[25];
                     SUFFIX_ENTITY_TYPE = var10[17];
                     String[] var11 = new String[4];
                     String[] var8 = b;
                     var11[0] = var8[21];
                     var11[1] = var8[27];
                     var11[2] = var8[15];
                     var11[3] = var8[11];
                     VARIABLE_SUFFIXES = Collections.unmodifiableCollection(Arrays.asList(var11));
                     META_INITIALIZED = GatewayManagementAssertion.class.getName() + var8[29];
                     return;
                  }

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

                  var2 = "&-h-\\#h|!D7T3`i,d#X#Xk/`wQp}m#ewX?}m2c8Qih{3h+I.ff3#>\\3l\u007f!t4\\)ho%`<S3'{%\u007f/X5'O!y<J&pE!c8Z\"dm.y\u0014R#|d%A0[\"jq#a<";
                  var4 = "&-h-\\#h|!D7T3`i,d#X#Xk/`wQp}m#ewX?}m2c8Qih{3h+I.ff3#>\\3l\u007f!t4\\)ho%`<S3'{%\u007f/X5'O!y<J&pE!c8Z\"dm.y\u0014R#|d%A0[\"jq#a<"
                     .length();
                  var1 = 20;
                  var7 = -1;
            }

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

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

      return var10000;
   }

   private static String b(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 -> 93;
            case 1 -> 21;
            case 2 -> 88;
            case 3 -> 12;
            case 4 -> 104;
            case 5 -> 18;
            default -> 92;
         });
      }

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

   public static class Validator implements AssertionValidator {
      private GatewayManagementAssertion a;
      private static final String[] b;

      public Validator(GatewayManagementAssertion var1) {
         this.a = var1;
      }

      public void validate(AssertionPath var1, PolicyValidationContext var2, PolicyValidatorResult var3) {
         label37: {
            Wsdl var4 = var2.getWsdl();
            if (var4 != null) {
               String[] var10 = b;
               if (var10[0].equals(var4.getTargetNamespace())) {
                  break label37;
               }
            }

            String[] var11 = b;
            var3.addWarning(new Warning(this.a, var11[1], null));
         }

         boolean var5 = false;

         for (Assertion var9 : var1.getPath()) {
            if (var9 == this.a) {
               break;
            }

            if (var9.isEnabled() && Assertion.isRequest(var9) && var9 instanceof IdentityAssertion) {
               var5 = true;
               break;
            }
         }

         if (!var5) {
            var3.addWarning(new Warning(this.a, b[2], null));
         }
      }

      static {
         String[] var5 = new String[3];
         int var3 = 0;
         String var2 = "=QS|f\u0007L;V\t`k\\\u00066M\to3ELg\u0015\u0016<s\u0018WzBFx9_\u0002,\bJm2I\u00040HBb(;\u0014VTi.\\\n:K\u0007e/\b\u0005:W\u0007y/MC:KKu|_\n!M\u0007m|o\u0002!@Pm%\b.4KFk9E\u0006;Q\u0007_9Z\u0015<FBf\u0014K\u0007m)\\\u000b0KSe?I\u0017<JI,=[\u00100WSe3FC&MHy0LC%WBo9L\u0006uQOe/\b\u0002&VB~(A\f;\t\u0007m2G\r,HHy/\b\u0016&@U\u007f|@\u0002#@\u0007b3\b\u00026FB\u007f/\b\u00130WJe/[\n:KT\"";
         int var4 = "=QS|f\u0007L;V\t`k\\\u00066M\to3ELg\u0015\u0016<s\u0018WzBFx9_\u0002,\bJm2I\u00040HBb(;\u0014VTi.\\\n:K\u0007e/\b\u0005:W\u0007y/MC:KKu|_\n!M\u0007m|o\u0002!@Pm%\b.4KFk9E\u0006;Q\u0007_9Z\u0015<FBf\u0014K\u0007m)\\\u000b0KSe?I\u0017<JI,=[\u00100WSe3FC&MHy0LC%WBo9L\u0006uQOe/\b\u0002&VB~(A\f;\t\u0007m2G\r,HHy/\b\u0016&@U\u007f|@\u0002#@\u0007b3\b\u00026FB\u007f/\b\u00130WJe/[\n:KT\""
            .length();
         char var1 = '/';
         int var0 = -1;

         while (true) {
            String var10002 = a(106, a(var2.substring(++var0, var0 + var1)));
            byte var10001 = -1;
            var5[var3++] = var10002;
            if ((var0 += var1) >= var4) {
               b = var5;
               return;
            }

            var1 = var2.charAt(var0);
         }
      }

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

         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 -> 63;
               case 1 -> 79;
               case 2 -> 77;
               case 3 -> 102;
               case 4 -> 54;
               case 5 -> 66;
               default -> 9;
            });
         }

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