package com.l7tech.external.assertions.gatewaymanagement.server.rest.resource.impl;

import com.l7tech.external.assertions.gatewaymanagement.server.rest.resource.RestManVersion;
import com.l7tech.util.Functions;
import com.l7tech.util.IOUtils;
import jakarta.inject.Singleton;
import jakarta.ws.rs.DefaultValue;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.WebApplicationException;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.StreamingOutput;
import jakarta.ws.rs.core.UriInfo;
import jakarta.ws.rs.ext.Provider;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import org.jetbrains.annotations.NotNull;

@Provider
@Path("1.0/rest.wadl")
@Singleton
public class WadlResource {
   public static final String WadlPath;
   public static final String GATEWAY_URL;
   @Context
   protected UriInfo uriInfo;
   private static final String[] a;

   @GET
   @Produces("application/vnd.sun.wadl+xml")
   public StreamingOutput getWadl(@QueryParam("version") @DefaultValue("1.0.7") String var1) {
      RestManVersion var2 = RestManVersion.fromString(var1);

      try {
         if (var2 == null) {
            throw new WebApplicationException(a[4] + var1 + a[8] + Functions.map(Arrays.asList(RestManVersion.values()), new p(this)).toString(), 404);
         }
      } catch (WebApplicationException var4) {
         throw a(var4);
      }

      String var3 = this.a(var2).replace(a[5], this.uriInfo.getBaseUri().toString());
      return new q(this, var3);
   }

   @NotNull
   private String a(@NotNull RestManVersion var1) {
      try {
         if (var1 == null) {
            a(0);
         }
      } catch (Throwable var11) {
         throw a(var11);
      }

      ByteArrayOutputStream var2 = new ByteArrayOutputStream();

      try {
         Class var10000 = this.getClass();
         String var10001 = var1.getStringRepresentation();
         String[] var6 = a;

         try (InputStream var3 = var10000.getResourceAsStream(var6[13] + var10001 + var6[11])) {
            IOUtils.copyStream(var3, var2);
         }
      } catch (IOException var10) {
         throw new WebApplicationException(a[12] + var1, 404);
      }

      try {
         String var12 = var2.toString();
         if (var12 == null) {
            a(1);
         }

         return var12;
      } catch (Throwable var8) {
         throw a(var8);
      }
   }

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

   static {
      String[] var5 = new String[15];
      int var3 = 0;
      String var2 = " gj:~\u0010H6n*\u0012Lv:\u001e\u0012E>\"t+$\u000fF6\"<=~BZrol=$GG=v9<5\u0013\\ l9 %\u000bE>\u0013p~;=\u0002G&\"\u007f!\"Gi\u001cmm\u0000%\u000bErrx<1\nL&gknwBZu\"v(pBZ|'jn=\u0012Z&\"w!$GK7\"w;<\u000b\u0018 gx*\u0007\u0006M>P|=?\u0012[1gX=\u0003\u0013[;l~-\u0011cw ?\u0013\t gx*p\u0010H6n9<5\u0014F'pz+~G|<iw!'\t\t$gk=9\bGh\">\u0012\u007fqj)}\u0013L?ru/$\u0002\u0004'puc\u0018 gx*\u0007\u0006M>P|=?\u0012[1gX=\u0003\u0013[;l~W1mta<P]7aqa5\u001f]7pw/<HH!q|<$\u000eF<q6)1\u0013L%c`#1\tH5gt+>\u0013\u0006!gk85\u0015\u0006 gj:\u007f\u0015L!ml<3\u0002\u0006;oi\"\u007f0H6nK+#\b\\ a|\u0013u\"|6 \u0002J&g}n?\tLrm\u007ftp\u0012\u007fqj)}\u0013L?ru/$\u0002\u0004'pucW1mta<P]7aqa5\u001f]7pw/<HH!q|<$\u000eF<q6)1\u0013L%c`#1\tH5gt+>\u0013\u0006!gk85\u0015\u0006 gj:\u007f\u0015L!ml<3\u0002\u0006;oi\"\u007f0H6nK+#\b\\ a|\u0005|ux*<&\u0011cw ?\u0013\t gx*p\u0010H6n9<5\u0014F'pz+p\bOrt|<#\u000eF<89";
      int var4 = " gj:~\u0010H6n*\u0012Lv:\u001e\u0012E>\"t+$\u000fF6\"<=~BZrol=$GG=v9<5\u0013\\ l9 %\u000bE>\u0013p~;=\u0002G&\"\u007f!\"Gi\u001cmm\u0000%\u000bErrx<1\nL&gknwBZu\"v(pBZ|'jn=\u0012Z&\"w!$GK7\"w;<\u000b\u0018 gx*\u0007\u0006M>P|=?\u0012[1gX=\u0003\u0013[;l~-\u0011cw ?\u0013\t gx*p\u0010H6n9<5\u0014F'pz+~G|<iw!'\t\t$gk=9\bGh\">\u0012\u007fqj)}\u0013L?ru/$\u0002\u0004'puc\u0018 gx*\u0007\u0006M>P|=?\u0012[1gX=\u0003\u0013[;l~W1mta<P]7aqa5\u001f]7pw/<HH!q|<$\u000eF<q6)1\u0013L%c`#1\tH5gt+>\u0013\u0006!gk85\u0015\u0006 gj:\u007f\u0015L!ml<3\u0002\u0006;oi\"\u007f0H6nK+#\b\\ a|\u0013u\"|6 \u0002J&g}n?\tLrm\u007ftp\u0012\u007fqj)}\u0013L?ru/$\u0002\u0004'pucW1mta<P]7aqa5\u001f]7pw/<HH!q|<$\u000eF<q6)1\u0013L%c`#1\tH5gt+>\u0013\u0006!gk85\u0015\u0006 gj:\u007f\u0015L!ml<3\u0002\u0006;oi\"\u007f0H6nK+#\b\\ a|\u0005|ux*<&\u0011cw ?\u0013\t gx*p\u0010H6n9<5\u0014F'pz+p\bOrt|<#\u000eF<89"
         .length();
      char var1 = '\t';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 29;
         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) {
                     a = var5;
                     String[] var9 = a;
                     GATEWAY_URL = a[9];
                     WadlPath = var9[0];
                     return;
                  }

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

                  var2 = ":&1d8LYa =a8E\u0016a ,gvLAt6-leT\u0007z+-&pA\u001ap2?pzA\u0000t\";drN\u001a:6;{aE\u001c:7;zc\u000f\u001cp61|eC\u000b:7;zca>\\\u001a\u0007c ,z~O\u0000";
                  var4 = ":&1d8LYa =a8E\u0016a ,gvLAt6-leT\u0007z+-&pA\u001ap2?pzA\u0000t\";drN\u001a:6;{aE\u001c:7;zc\u000f\u001cp61|eC\u000b:7;zca>\\\u001a\u0007c ,z~O\u0000"
                     .length();
                  var1 = 'O';
                  var7 = -1;
            }

            var10000 = 90;
            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] ^ 52);
      }

      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 -> 79;
            case 1 -> 31;
            case 2 -> 4;
            case 3 -> 83;
            case 4 -> 77;
            case 5 -> 122;
            default -> 52;
         });
      }

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