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

import com.l7tech.external.assertions.gatewaymanagement.server.ResourceFactory;
import com.l7tech.external.assertions.gatewaymanagement.server.rest.factories.impl.SolutionKitAPIResourceFactory;
import com.l7tech.external.assertions.gatewaymanagement.server.rest.resource.ChoiceParam;
import com.l7tech.external.assertions.gatewaymanagement.server.rest.resource.ParameterValidationUtils;
import com.l7tech.external.assertions.gatewaymanagement.server.rest.resource.RestEntityResource;
import com.l7tech.external.assertions.gatewaymanagement.server.rest.resource.RestEntityResourceUtils;
import com.l7tech.external.assertions.gatewaymanagement.server.rest.resource.RestManVersion;
import com.l7tech.external.assertions.gatewaymanagement.server.rest.resource.Since;
import com.l7tech.external.assertions.gatewaymanagement.server.rest.transformers.impl.SolutionKitTransformer;
import com.l7tech.gateway.api.Item;
import com.l7tech.gateway.api.ItemsList;
import com.l7tech.gateway.api.ManagedObjectFactory;
import com.l7tech.gateway.api.SolutionKitMO;
import com.l7tech.gateway.common.solutionkit.SolutionKit;
import com.l7tech.gateway.rest.SpringBean;
import com.l7tech.util.CollectionUtils.MapBuilder;
import jakarta.inject.Singleton;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.ext.Provider;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.lang3.StringUtils;

@Provider
@Path("1.0/solutionKits")
@Singleton
@Since(RestManVersion.VERSION_1_0_2)
public class SolutionKitResource extends RestEntityResource<SolutionKitMO, SolutionKitAPIResourceFactory, SolutionKitTransformer> {
   public static final String SolutionKits_URI;
   private static final String a;
   private static final String b;
   private static final String[] c;

   @SpringBean
   public void setFactory(SolutionKitAPIResourceFactory var1) {
      super.factory = (F)var1;
   }

   @SpringBean
   public void setTransformer(SolutionKitTransformer var1) {
      super.transformer = (T)var1;
   }

   @GET
   @Path("{id}")
   @Override
   public Item<SolutionKitMO> get(@PathParam("id") String var1) throws ResourceFactory.ResourceNotFoundException {
      SolutionKitMO var2 = this.factory.getResource(var1);
      return RestEntityResourceUtils.createGetResponseItem(var2, this.transformer, this);
   }

   @GET
   public ItemsList<SolutionKitMO> list(
      @QueryParam("sort") @ChoiceParam({"id", "name", "guid", "parent"}) String var1,
      @QueryParam("order") @ChoiceParam({"asc", "desc"}) String var2,
      @QueryParam("name") List<String> var3,
      @QueryParam("guid") List<String> var4
   ) {
      Boolean var5 = ParameterValidationUtils.convertSortOrder(var2);
      MultivaluedMap var10000 = this.uriInfo.getQueryParameters();
      String[] var10001 = new String[2];
      String[] var7 = c;
      var10001[0] = var7[13];
      var10001[1] = var7[12];
      ParameterValidationUtils.validateNoOtherQueryParamsIncludeDefaults(var10000, Arrays.asList(var10001));
      MapBuilder var6 = MapBuilder.builder();
      if (var3 != null && !var3.isEmpty()) {
         var6.put(var7[17], var3);
      }

      if (var4 != null && !var4.isEmpty()) {
         var7 = c;
         var6.put(var7[7], var4);
      }

      var7 = c;
      if (StringUtils.equalsIgnoreCase(var7[11], var1)) {
         var1 = var7[1];
      } else {
         var7 = c;
         if (StringUtils.equalsIgnoreCase(var7[9], var1)) {
            var1 = var7[0];
         }
      }

      return RestEntityResourceUtils.createItemsList(
         this.factory.listResources(var1, var5, var6.map()), this.transformer, this, this.uriInfo.getRequestUri().toString()
      );
   }

   @GET
   @Path("template")
   public Item<SolutionKitMO> template() {
      SolutionKitMO var1 = ManagedObjectFactory.createSolutionKitMO();
      String[] var2 = c;
      var1.setName(var2[8]);
      var1.setSkGuid(var2[10]);
      var1.setSkVersion(var2[3]);
      var1.setProperties(
         MapBuilder.builder()
            .put(SolutionKit.SK_PROP_DESC_KEY, var2[2])
            .put(SolutionKit.SK_PROP_TIMESTAMP_KEY, var2[16])
            .put(SolutionKit.SK_PROP_IS_COLLECTION_KEY, var2[15])
            .put(SolutionKit.SK_PROP_FEATURE_SET_KEY, var2[6])
            .map()
      );
      var1.setMappings(var2[19]);
      var1.setUninstallBundle(var2[18]);
      var1.setLastUpdateTime(1442859720418L);
      return super.createTemplateItem(var1);
   }

   static {
      String[] var5 = new String[20];
      int var3 = 0;
      String var2 = "\f\bI]\u0004c?\u0013\u0000_\u000f\u000f\u0006WM\u001e~\u0017\u0012\"RL-b\u0011\u0018((\u0001RKJ~\u000b\\\b\u001bL\u000fz\b\u0010\bO]JD\u0017\u0010\u001cOQ\u0005yX7\u0000O\u0018\u000fo\u0019\u0011\u0019W]D\u0003MG\u000b @\u0005\f\u0002(b\u0016\u0018\u0005^\u0018\u0012z\u0014\u0012\u001a\u0001T]*Z\u0014\u001dOHP8W\u0012\u001a\u0015T]c\u001d\u001f\u0001\u0015[\u0005zWNY\n\bE'LS\u000eZL\u000f`\u0019\u0005DVY\u0004v\u001f\u0019\u0004^V\u001e5FvI\u001b\u0018J+\u0014KSvY\u001ag\u0011\u0012\u000eH\u0006`7X\\I\u001b\u0018J7!\u0013\u001cI\u0018\u001fy\u0011\u0012\u001aOY\u0006{X\u001e\u001cU\\\u0006rX\u001b\u0006^KJ\u007f\u001d\u000e\f1\u0018J7X@FW\u000fPZ\u0019\f\u0019RV\rdFvU\u0014T]-:\t\u0007_T\u000f)\f\u000f\u0006WM\u001e~\u0017\u0012\"RL\u0019\u0003\u001a\u0006T\u000f\u000f\u0006WM\u001e~\u0017\u0012\"RL-b\u0011\u0018\u0013(\fVH\u0006v\f\u0019:TT\u001fc\u0011\u0013\u0007pQ\u001e\u0006\f\bI]\u0004c$\u001e]\nYRrNJD\f\r\u000e/UHZ\f\u0001G/\u001a\u001d\n\u0016\u0001\trIJ\r]^^sI\u001a\u0004\u001b\u001cR\\\u0004\u001b\u001cR\\\u0004\u0012\bV]ƿ@\u0005\f\u0002#c\u001d\u0011ICU\u0006y\u000bF\u0005\f\u0005H\u007f\f\b\u0019\u0001\u0017Ey\u000bR\u0005\fL\u000ft\u0010R\nTUE%HMY\u0014\b^8\u001f\u001d\u001d^O\u000bnU\u0011\bUY\rr\u0015\u0019\u0007O\u001aT\u001dX\\I\u001b\u0004\u0006 B2\bV]TU\r\u0012\rW]Jz\u0019\f\u0019RV\rdDS\u0005\f\u0002$v\u0015\u0019W1\u0018J7X@\u0005\f\u0002>n\b\u0019Wym$S49Ivy:G12.h\u0004E{OF=BH\u000f)r\\I\u001b\u0018V{OF=RU\u000fD\f\u001d\u0004K\u0006X'IID\u000b\u0001G%I(X\n\u0002X%BLY\u0015\u000bS/UL^\u0001\bZ+W\u0010^\u0001l\u0003z\u001d/\u001dZU\u001a)r\\I\u001b\u0018V{OF%RV\u00017\n\u0019\u0005\u0006\u001a\u0019r\u0014\u001aK\u001bM\u0018~E^F\n\u0016Z8\u001a\t\u0007_T\u000f(\u000e\u0019\u001bHQ\u0005y;\u0013\u0004V]\u0004cE/\u0000VH\u0006rS/\fIN\u0003t\u001dW\bU\\AX\f\u0014\fI\u0013.r\b\u0019\u0007_]\u0004t\u0011\u0019\u001a\u0010\u001dX/\u000eMG\n\u001dX.ZSW1\u0018J7X@\u0005\f\u00028r\u000b\u0013\u001cI[\u000f)r\\I\u001b\u0018J7X\\UW\u000fPZ\u0019\f\u0019RV\rdFvI\u001b\u0018J7X\\I\u001b\u0018J7!\u0013\u001cI\u0018'v\b\f\u0000U_\u00197\u001f\u0013\fH\u0018\u0002r\n\u0019c\u001b\u0018J7X\\I\u001b\u0004E{OF$ZH\u001a~\u0016\u001b\u001a\u00052J7X\\U\u0014T]-*\u0019\u001aTM\u0018t\u001dBc\u0007\u0017\u0006 B5\u001d^UT\u001d\u0005\u001a\bWK\u000f\u001dNY\n\rG'@QY\u000fl[%BI^\u0001\u000b_9NLZ\u0016\bR-HL\u0004\u0012\bV]";
      int var4 = "\f\bI]\u0004c?\u0013\u0000_\u000f\u000f\u0006WM\u001e~\u0017\u0012\"RL-b\u0011\u0018((\u0001RKJ~\u000b\\\b\u001bL\u000fz\b\u0010\bO]JD\u0017\u0010\u001cOQ\u0005yX7\u0000O\u0018\u000fo\u0019\u0011\u0019W]D\u0003MG\u000b @\u0005\f\u0002(b\u0016\u0018\u0005^\u0018\u0012z\u0014\u0012\u001a\u0001T]*Z\u0014\u001dOHP8W\u0012\u001a\u0015T]c\u001d\u001f\u0001\u0015[\u0005zWNY\n\bE'LS\u000eZL\u000f`\u0019\u0005DVY\u0004v\u001f\u0019\u0004^V\u001e5FvI\u001b\u0018J+\u0014KSvY\u001ag\u0011\u0012\u000eH\u0006`7X\\I\u001b\u0018J7!\u0013\u001cI\u0018\u001fy\u0011\u0012\u001aOY\u0006{X\u001e\u001cU\\\u0006rX\u001b\u0006^KJ\u007f\u001d\u000e\f1\u0018J7X@FW\u000fPZ\u0019\f\u0019RV\rdFvU\u0014T]-:\t\u0007_T\u000f)\f\u000f\u0006WM\u001e~\u0017\u0012\"RL\u0019\u0003\u001a\u0006T\u000f\u000f\u0006WM\u001e~\u0017\u0012\"RL-b\u0011\u0018\u0013(\fVH\u0006v\f\u0019:TT\u001fc\u0011\u0013\u0007pQ\u001e\u0006\f\bI]\u0004c$\u001e]\nYRrNJD\f\r\u000e/UHZ\f\u0001G/\u001a\u001d\n\u0016\u0001\trIJ\r]^^sI\u001a\u0004\u001b\u001cR\\\u0004\u001b\u001cR\\\u0004\u0012\bV]ƿ@\u0005\f\u0002#c\u001d\u0011ICU\u0006y\u000bF\u0005\f\u0005H\u007f\f\b\u0019\u0001\u0017Ey\u000bR\u0005\fL\u000ft\u0010R\nTUE%HMY\u0014\b^8\u001f\u001d\u001d^O\u000bnU\u0011\bUY\rr\u0015\u0019\u0007O\u001aT\u001dX\\I\u001b\u0004\u0006 B2\bV]TU\r\u0012\rW]Jz\u0019\f\u0019RV\rdDS\u0005\f\u0002$v\u0015\u0019W1\u0018J7X@\u0005\f\u0002>n\b\u0019Wym$S49Ivy:G12.h\u0004E{OF=BH\u000f)r\\I\u001b\u0018V{OF=RU\u000fD\f\u001d\u0004K\u0006X'IID\u000b\u0001G%I(X\n\u0002X%BLY\u0015\u000bS/UL^\u0001\bZ+W\u0010^\u0001l\u0003z\u001d/\u001dZU\u001a)r\\I\u001b\u0018V{OF%RV\u00017\n\u0019\u0005\u0006\u001a\u0019r\u0014\u001aK\u001bM\u0018~E^F\n\u0016Z8\u001a\t\u0007_T\u000f(\u000e\u0019\u001bHQ\u0005y;\u0013\u0004V]\u0004cE/\u0000VH\u0006rS/\fIN\u0003t\u001dW\bU\\AX\f\u0014\fI\u0013.r\b\u0019\u0007_]\u0004t\u0011\u0019\u001a\u0010\u001dX/\u000eMG\n\u001dX.ZSW1\u0018J7X@\u0005\f\u00028r\u000b\u0013\u001cI[\u000f)r\\I\u001b\u0018J7X\\UW\u000fPZ\u0019\f\u0019RV\rdFvI\u001b\u0018J7X\\I\u001b\u0018J7!\u0013\u001cI\u0018'v\b\f\u0000U_\u00197\u001f\u0013\fH\u0018\u0002r\n\u0019c\u001b\u0018J7X\\I\u001b\u0004E{OF$ZH\u001a~\u0016\u001b\u001a\u00052J7X\\U\u0014T]-*\u0019\u001aTM\u0018t\u001dBc\u0007\u0017\u0006 B5\u001d^UT\u001d\u0005\u001a\bWK\u000f\u001dNY\n\rG'@QY\u000fl[%BI^\u0001\u000b_9NLZ\u0016\bR-HL\u0004\u0012\bV]"
         .length();
      char var1 = '\n';
      int var7 = -1;

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

         while (true) {
            String var8 = b(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     c = var5;
                     String[] var9 = c;
                     b = c[4];
                     a = var9[14];
                     SolutionKits_URI = var9[5];
                     return;
                  }

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

                  var2 = "l) .\u0004N:4)r4>V8>6-xq\u0006v81cd|\u0014{>69xqO13-9w)V{bu&$i\u000b`\u007f\"v`#L5)hzu(Z35(rz2\u0019jZe74f\u00078g\u007fZu6K=>\"d*L\u001btpe74f\u001b\r?0e43U=>6cu*Wt20yp*^t7*rgfS1\" \u001d4f\u001btlj{#|v5 5~z!HjZy8xq\u0001\u0016%+sx#\u0005ƿl) .\u000fO1=eoy*U'j) )dS $5-;iU'~) `#X<~&xyi\tdau8$r\u0014311rc'By=$yu!^95+c6x1tpe7(*\fn\u001e$zqxy!>!{qfV5 5~z!Hh\u007f) .\bZ95{\u001d4f\u001btl) .\u0012B$5{UA\b\u007f\u0018\u0015eZU\u0016k\u001d\u001e\u0002D(iWcj\u0011nd#\u0005^pe74zWcj\u0011~y#h 1(g*t\u000beeh'-k\te\u0004t&.t\tn`u9'\u007f\u0003y`r-$v\u0007{<r-@/V1\u00031vy6\u0005^pe74zWcj\t~z-\u001b&5)*65^86g7a4Rirj&:v\u00146%+sx#\u0004\"57d})U\u0017?(zq(Oi\u0003,zd*^\u007f\u0003 eb/X1{$ypmt 8 e?\u0002^$5+sq(X=56<1t\u0003\"ak&1t\u0002v\u007f{\u001d4f\u001btl) .\u0014^'?0ew#\u0005^pe74f\u001btpy{#|v5 5~z!HjZe74f\u001btpe74f\u001b\r?0e4\u000bZ$ ,ys5\u001b3? d4.^&5O74f\u001btpe7(iWcj\bvd6R:76)\u001ef\u001btpy8xq\u0001\u000656xa4X1nO+;*\fn\u00191ryx1";
                  var4 = "l) .\u0004N:4)r4>V8>6-xq\u0006v81cd|\u0014{>69xqO13-9w)V{bu&$i\u000b`\u007f\"v`#L5)hzu(Z35(rz2\u0019jZe74f\u00078g\u007fZu6K=>\"d*L\u001btpe74f\u001b\r?0e43U=>6cu*Wt20yp*^t7*rgfS1\" \u001d4f\u001btlj{#|v5 5~z!HjZy8xq\u0001\u0016%+sx#\u0005ƿl) .\u000fO1=eoy*U'j) )dS $5-;iU'~) `#X<~&xyi\tdau8$r\u0014311rc'By=$yu!^95+c6x1tpe7(*\fn\u001e$zqxy!>!{qfV5 5~z!Hh\u007f) .\bZ95{\u001d4f\u001btl) .\u0012B$5{UA\b\u007f\u0018\u0015eZU\u0016k\u001d\u001e\u0002D(iWcj\u0011nd#\u0005^pe74zWcj\u0011~y#h 1(g*t\u000beeh'-k\te\u0004t&.t\tn`u9'\u007f\u0003y`r-$v\u0007{<r-@/V1\u00031vy6\u0005^pe74zWcj\t~z-\u001b&5)*65^86g7a4Rirj&:v\u00146%+sx#\u0004\"57d})U\u0017?(zq(Oi\u0003,zd*^\u007f\u0003 eb/X1{$ypmt 8 e?\u0002^$5+sq(X=56<1t\u0003\"ak&1t\u0002v\u007f{\u001d4f\u001btl) .\u0014^'?0ew#\u0005^pe74f\u001btpy{#|v5 5~z!HjZe74f\u001btpe74f\u001b\r?0e4\u000bZ$ ,ys5\u001b3? d4.^&5O74f\u001btpe7(iWcj\bvd6R:76)\u001ef\u001btpy8xq\u0001\u000656xa4X1nO+;*\fn\u00191ryx1"
                     .length();
                  var1 = 160;
                  var7 = -1;
            }

            var10000 = 15;
            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] ^ 91);
      }

      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 -> 95;
            case 1 -> 74;
            case 2 -> 24;
            case 3 -> 27;
            case 4 -> 73;
            case 5 -> 52;
            default -> 91;
         });
      }

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