object Puzzle21 {

    @JvmStatic
    fun main(args: Array<String>) {
        val input = Puzzle21::class.java.getResource("puzzle21.txt").readText()
        val allergicData = AllergicData(input)
        println(allergicData.countNonAllergicIngredients())
        println(allergicData.listIngredientsByAllergens())
    }

    class AllergicData(input: String){
        private val allergenCanBeInFoods = mutableMapOf<String, Set<String>>()
        private val allIngredients = mutableListOf<String>()

        init {
            input.split("\n").forEach { line ->
                val ingredientsAndAllergens = line
                    .replace("(", "")
                    .replace(")", "")
                    .replace(",", "")
                    .split(" contains ")
                val ingredients = ingredientsAndAllergens.first().split(" ")
                allIngredients.addAll(ingredients)
                val ingredientsSet = ingredients.toSet()
                val allergens = ingredientsAndAllergens.last().split(" ")
                allergens.forEach { allergen ->
                    if (allergenCanBeInFoods.containsKey(allergen)){
                        allergenCanBeInFoods[allergen] = allergenCanBeInFoods[allergen]!!.intersect(ingredientsSet)
                    }else{
                        allergenCanBeInFoods[allergen] = ingredientsSet
                    }
                }
            }
            while (allergenCanBeInFoods.any { it.value.size > 1 }){
                val knownAllergens = allergenCanBeInFoods.filter { it.value.size == 1 }
                val unknownAllergenKeys = allergenCanBeInFoods.filter { allergenWithFoodList ->
                    allergenWithFoodList.value.size > 1
                }.keys
                unknownAllergenKeys.forEach { unknownAllergen ->
                    knownAllergens.forEach { knownAllergen->
                        allergenCanBeInFoods[unknownAllergen] = allergenCanBeInFoods[unknownAllergen]!!.minus(knownAllergen.value.first())
                    }
                }
            }
        }

        fun countNonAllergicIngredients() = allIngredients.count { ingredient -> allergenCanBeInFoods.none { allergen -> allergen.value.contains(ingredient) } }

        fun listIngredientsByAllergens() = allergenCanBeInFoods.toList().sortedBy { (key, _) -> key }
            .joinToString(",") { it.second.first() }
    }
}

Compiled from "Puzzle21.kt"
public final class Puzzle21 {
  public static final Puzzle21 INSTANCE;

  private Puzzle21();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  public static final void main(java.lang.String[]);
    Code:
       0: aload_0
       1: ldc           #16                 // String args
       3: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: ldc           #2                  // class Puzzle21
       8: ldc           #24                 // String puzzle21.txt
      10: invokevirtual #30                 // Method java/lang/Class.getResource:(Ljava/lang/String;)Ljava/net/URL;
      13: dup
      14: ldc           #32                 // String getResource(...)
      16: invokestatic  #35                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      19: astore_2
      20: getstatic     #41                 // Field kotlin/text/Charsets.UTF_8:Ljava/nio/charset/Charset;
      23: astore_3
      24: aload_2
      25: invokestatic  #47                 // Method kotlin/io/TextStreamsKt.readBytes:(Ljava/net/URL;)[B
      28: astore        4
      30: new           #49                 // class java/lang/String
      33: dup
      34: aload         4
      36: aload_3
      37: invokespecial #52                 // Method java/lang/String."<init>":([BLjava/nio/charset/Charset;)V
      40: astore_1
      41: new           #54                 // class Puzzle21$AllergicData
      44: dup
      45: aload_1
      46: invokespecial #57                 // Method Puzzle21$AllergicData."<init>":(Ljava/lang/String;)V
      49: astore_2
      50: aload_2
      51: invokevirtual #61                 // Method Puzzle21$AllergicData.countNonAllergicIngredients:()I
      54: istore_3
      55: getstatic     #67                 // Field java/lang/System.out:Ljava/io/PrintStream;
      58: iload_3
      59: invokevirtual #73                 // Method java/io/PrintStream.println:(I)V
      62: aload_2
      63: invokevirtual #77                 // Method Puzzle21$AllergicData.listIngredientsByAllergens:()Ljava/lang/String;
      66: getstatic     #67                 // Field java/lang/System.out:Ljava/io/PrintStream;
      69: swap
      70: invokevirtual #80                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
      73: return

  static {};
    Code:
       0: new           #2                  // class Puzzle21
       3: dup
       4: invokespecial #87                 // Method "<init>":()V
       7: putstatic     #90                 // Field INSTANCE:LPuzzle21;
      10: return
}

Compiled from "Comparisons.kt"
public final class Puzzle21$AllergicData$listIngredientsByAllergens$$inlined$sortedBy$1<T> implements java.util.Comparator {
  public Puzzle21$AllergicData$listIngredientsByAllergens$$inlined$sortedBy$1();
    Code:
       0: aload_0
       1: invokespecial #16                 // Method java/lang/Object."<init>":()V
       4: return

  public final int compare(T, T);
    Code:
       0: aload_1
       1: checkcast     #23                 // class kotlin/Pair
       4: astore_3
       5: iconst_0
       6: istore        4
       8: aload_3
       9: invokevirtual #27                 // Method kotlin/Pair.component1:()Ljava/lang/Object;
      12: checkcast     #29                 // class java/lang/String
      15: astore        5
      17: aload         5
      19: checkcast     #31                 // class java/lang/Comparable
      22: aload_2
      23: checkcast     #23                 // class kotlin/Pair
      26: astore_3
      27: astore        6
      29: iconst_0
      30: istore        4
      32: aload_3
      33: invokevirtual #27                 // Method kotlin/Pair.component1:()Ljava/lang/Object;
      36: checkcast     #29                 // class java/lang/String
      39: astore        5
      41: aload         5
      43: aload         6
      45: swap
      46: checkcast     #31                 // class java/lang/Comparable
      49: invokestatic  #37                 // Method kotlin/comparisons/ComparisonsKt.compareValues:(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
      52: ireturn
}

Compiled from "Puzzle21.kt"
public final class Puzzle21$AllergicData {
  private final java.util.Map<java.lang.String, java.util.Set<java.lang.String>> allergenCanBeInFoods;

  private final java.util.List<java.lang.String> allIngredients;

  public Puzzle21$AllergicData(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #9                  // String input
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokespecial #18                 // Method java/lang/Object."<init>":()V
      10: aload_0
      11: new           #20                 // class java/util/LinkedHashMap
      14: dup
      15: invokespecial #21                 // Method java/util/LinkedHashMap."<init>":()V
      18: checkcast     #23                 // class java/util/Map
      21: putfield      #27                 // Field allergenCanBeInFoods:Ljava/util/Map;
      24: aload_0
      25: new           #29                 // class java/util/ArrayList
      28: dup
      29: invokespecial #30                 // Method java/util/ArrayList."<init>":()V
      32: checkcast     #32                 // class java/util/List
      35: putfield      #36                 // Field allIngredients:Ljava/util/List;
      38: nop
      39: aload_1
      40: checkcast     #38                 // class java/lang/CharSequence
      43: iconst_1
      44: anewarray     #40                 // class java/lang/String
      47: astore_2
      48: aload_2
      49: iconst_0
      50: ldc           #42                 // String \n
      52: aastore
      53: aload_2
      54: iconst_0
      55: iconst_0
      56: bipush        6
      58: aconst_null
      59: invokestatic  #48                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      62: checkcast     #50                 // class java/lang/Iterable
      65: astore_2
      66: iconst_0
      67: istore_3
      68: aload_2
      69: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      74: astore        4
      76: aload         4
      78: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      83: ifeq          381
      86: aload         4
      88: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      93: astore        5
      95: aload         5
      97: checkcast     #40                 // class java/lang/String
     100: astore        6
     102: iconst_0
     103: istore        7
     105: aload         6
     107: ldc           #66                 // String (
     109: ldc           #68                 // String
     111: iconst_0
     112: iconst_4
     113: aconst_null
     114: invokestatic  #72                 // Method kotlin/text/StringsKt.replace$default:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Ljava/lang/String;
     117: ldc           #74                 // String )
     119: ldc           #68                 // String
     121: iconst_0
     122: iconst_4
     123: aconst_null
     124: invokestatic  #72                 // Method kotlin/text/StringsKt.replace$default:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Ljava/lang/String;
     127: ldc           #76                 // String ,
     129: ldc           #68                 // String
     131: iconst_0
     132: iconst_4
     133: aconst_null
     134: invokestatic  #72                 // Method kotlin/text/StringsKt.replace$default:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Ljava/lang/String;
     137: checkcast     #38                 // class java/lang/CharSequence
     140: iconst_1
     141: anewarray     #40                 // class java/lang/String
     144: astore        8
     146: aload         8
     148: iconst_0
     149: ldc           #78                 // String  contains
     151: aastore
     152: aload         8
     154: iconst_0
     155: iconst_0
     156: bipush        6
     158: aconst_null
     159: invokestatic  #48                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     162: astore        9
     164: aload         9
     166: invokestatic  #84                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     169: checkcast     #38                 // class java/lang/CharSequence
     172: iconst_1
     173: anewarray     #40                 // class java/lang/String
     176: astore        10
     178: aload         10
     180: iconst_0
     181: ldc           #86                 // String
     183: aastore
     184: aload         10
     186: iconst_0
     187: iconst_0
     188: bipush        6
     190: aconst_null
     191: invokestatic  #48                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     194: astore        8
     196: aload_0
     197: getfield      #36                 // Field allIngredients:Ljava/util/List;
     200: aload         8
     202: checkcast     #88                 // class java/util/Collection
     205: invokeinterface #92,  2           // InterfaceMethod java/util/List.addAll:(Ljava/util/Collection;)Z
     210: pop
     211: aload         8
     213: checkcast     #50                 // class java/lang/Iterable
     216: invokestatic  #96                 // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
     219: astore        10
     221: aload         9
     223: invokestatic  #99                 // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
     226: checkcast     #38                 // class java/lang/CharSequence
     229: iconst_1
     230: anewarray     #40                 // class java/lang/String
     233: astore        11
     235: aload         11
     237: iconst_0
     238: ldc           #86                 // String
     240: aastore
     241: aload         11
     243: iconst_0
     244: iconst_0
     245: bipush        6
     247: aconst_null
     248: invokestatic  #48                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     251: astore        12
     253: aload         12
     255: checkcast     #50                 // class java/lang/Iterable
     258: astore        11
     260: iconst_0
     261: istore        13
     263: aload         11
     265: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     270: astore        14
     272: aload         14
     274: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     279: ifeq          375
     282: aload         14
     284: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     289: astore        15
     291: aload         15
     293: checkcast     #40                 // class java/lang/String
     296: astore        16
     298: iconst_0
     299: istore        17
     301: aload_0
     302: getfield      #27                 // Field allergenCanBeInFoods:Ljava/util/Map;
     305: aload         16
     307: invokeinterface #103,  2          // InterfaceMethod java/util/Map.containsKey:(Ljava/lang/Object;)Z
     312: ifeq          356
     315: aload_0
     316: getfield      #27                 // Field allergenCanBeInFoods:Ljava/util/Map;
     319: aload         16
     321: aload_0
     322: getfield      #27                 // Field allergenCanBeInFoods:Ljava/util/Map;
     325: aload         16
     327: invokeinterface #107,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     332: dup
     333: invokestatic  #111                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     336: checkcast     #50                 // class java/lang/Iterable
     339: aload         10
     341: checkcast     #50                 // class java/lang/Iterable
     344: invokestatic  #115                // Method kotlin/collections/CollectionsKt.intersect:(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/util/Set;
     347: invokeinterface #119,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     352: pop
     353: goto          370
     356: aload_0
     357: getfield      #27                 // Field allergenCanBeInFoods:Ljava/util/Map;
     360: aload         16
     362: aload         10
     364: invokeinterface #119,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     369: pop
     370: nop
     371: nop
     372: goto          272
     375: nop
     376: nop
     377: nop
     378: goto          76
     381: nop
     382: aload_0
     383: getfield      #27                 // Field allergenCanBeInFoods:Ljava/util/Map;
     386: astore_2
     387: iconst_0
     388: istore_3
     389: aload_2
     390: invokeinterface #122,  1          // InterfaceMethod java/util/Map.isEmpty:()Z
     395: ifeq          402
     398: iconst_0
     399: goto          476
     402: aload_2
     403: invokeinterface #126,  1          // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set;
     408: invokeinterface #129,  1          // InterfaceMethod java/util/Set.iterator:()Ljava/util/Iterator;
     413: astore        4
     415: aload         4
     417: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     422: ifeq          475
     425: aload         4
     427: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     432: checkcast     #131                // class java/util/Map$Entry
     435: astore        5
     437: aload         5
     439: astore        6
     441: iconst_0
     442: istore        7
     444: aload         6
     446: invokeinterface #134,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     451: checkcast     #128                // class java/util/Set
     454: invokeinterface #138,  1          // InterfaceMethod java/util/Set.size:()I
     459: iconst_1
     460: if_icmple     467
     463: iconst_1
     464: goto          468
     467: iconst_0
     468: ifeq          415
     471: iconst_1
     472: goto          476
     475: iconst_0
     476: ifeq          893
     479: aload_0
     480: getfield      #27                 // Field allergenCanBeInFoods:Ljava/util/Map;
     483: astore_3
     484: iconst_0
     485: istore        4
     487: aload_3
     488: astore        5
     490: new           #20                 // class java/util/LinkedHashMap
     493: dup
     494: invokespecial #21                 // Method java/util/LinkedHashMap."<init>":()V
     497: checkcast     #23                 // class java/util/Map
     500: astore        6
     502: iconst_0
     503: istore        7
     505: aload         5
     507: invokeinterface #126,  1          // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set;
     512: invokeinterface #129,  1          // InterfaceMethod java/util/Set.iterator:()Ljava/util/Iterator;
     517: astore        8
     519: aload         8
     521: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     526: ifeq          600
     529: aload         8
     531: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     536: checkcast     #131                // class java/util/Map$Entry
     539: astore        9
     541: aload         9
     543: astore        10
     545: iconst_0
     546: istore        11
     548: aload         10
     550: invokeinterface #134,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     555: checkcast     #128                // class java/util/Set
     558: invokeinterface #138,  1          // InterfaceMethod java/util/Set.size:()I
     563: iconst_1
     564: if_icmpne     571
     567: iconst_1
     568: goto          572
     571: iconst_0
     572: ifeq          519
     575: aload         6
     577: aload         9
     579: invokeinterface #141,  1          // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
     584: aload         9
     586: invokeinterface #134,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     591: invokeinterface #119,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     596: pop
     597: goto          519
     600: aload         6
     602: nop
     603: astore_2
     604: aload_0
     605: getfield      #27                 // Field allergenCanBeInFoods:Ljava/util/Map;
     608: astore        4
     610: iconst_0
     611: istore        5
     613: aload         4
     615: astore        6
     617: new           #20                 // class java/util/LinkedHashMap
     620: dup
     621: invokespecial #21                 // Method java/util/LinkedHashMap."<init>":()V
     624: checkcast     #23                 // class java/util/Map
     627: astore        7
     629: iconst_0
     630: istore        8
     632: aload         6
     634: invokeinterface #126,  1          // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set;
     639: invokeinterface #129,  1          // InterfaceMethod java/util/Set.iterator:()Ljava/util/Iterator;
     644: astore        9
     646: aload         9
     648: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     653: ifeq          727
     656: aload         9
     658: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     663: checkcast     #131                // class java/util/Map$Entry
     666: astore        10
     668: aload         10
     670: astore        11
     672: iconst_0
     673: istore        12
     675: aload         11
     677: invokeinterface #134,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     682: checkcast     #128                // class java/util/Set
     685: invokeinterface #138,  1          // InterfaceMethod java/util/Set.size:()I
     690: iconst_1
     691: if_icmple     698
     694: iconst_1
     695: goto          699
     698: iconst_0
     699: ifeq          646
     702: aload         7
     704: aload         10
     706: invokeinterface #141,  1          // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
     711: aload         10
     713: invokeinterface #134,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     718: invokeinterface #119,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     723: pop
     724: goto          646
     727: aload         7
     729: nop
     730: invokeinterface #144,  1          // InterfaceMethod java/util/Map.keySet:()Ljava/util/Set;
     735: astore_3
     736: aload_3
     737: checkcast     #50                 // class java/lang/Iterable
     740: astore        4
     742: iconst_0
     743: istore        5
     745: aload         4
     747: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     752: astore        6
     754: aload         6
     756: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     761: ifeq          889
     764: aload         6
     766: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     771: astore        7
     773: aload         7
     775: checkcast     #40                 // class java/lang/String
     778: astore        8
     780: iconst_0
     781: istore        9
     783: aload_2
     784: astore        10
     786: iconst_0
     787: istore        11
     789: aload         10
     791: invokeinterface #126,  1          // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set;
     796: invokeinterface #129,  1          // InterfaceMethod java/util/Set.iterator:()Ljava/util/Iterator;
     801: astore        12
     803: aload         12
     805: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     810: ifeq          883
     813: aload         12
     815: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     820: checkcast     #131                // class java/util/Map$Entry
     823: astore        13
     825: aload         13
     827: astore        14
     829: iconst_0
     830: istore        15
     832: aload_0
     833: getfield      #27                 // Field allergenCanBeInFoods:Ljava/util/Map;
     836: aload         8
     838: aload_0
     839: getfield      #27                 // Field allergenCanBeInFoods:Ljava/util/Map;
     842: aload         8
     844: invokeinterface #107,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     849: dup
     850: invokestatic  #111                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     853: checkcast     #128                // class java/util/Set
     856: aload         14
     858: invokeinterface #134,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     863: checkcast     #50                 // class java/lang/Iterable
     866: invokestatic  #147                // Method kotlin/collections/CollectionsKt.first:(Ljava/lang/Iterable;)Ljava/lang/Object;
     869: invokestatic  #153                // Method kotlin/collections/SetsKt.minus:(Ljava/util/Set;Ljava/lang/Object;)Ljava/util/Set;
     872: invokeinterface #119,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     877: pop
     878: nop
     879: nop
     880: goto          803
     883: nop
     884: nop
     885: nop
     886: goto          754
     889: nop
     890: goto          382
     893: nop
     894: return

  public final int countNonAllergicIngredients();
    Code:
       0: aload_0
       1: getfield      #36                 // Field allIngredients:Ljava/util/List;
       4: checkcast     #50                 // class java/lang/Iterable
       7: astore_1
       8: iconst_0
       9: istore_2
      10: aload_1
      11: instanceof    #88                 // class java/util/Collection
      14: ifeq          33
      17: aload_1
      18: checkcast     #88                 // class java/util/Collection
      21: invokeinterface #193,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
      26: ifeq          33
      29: iconst_0
      30: goto          181
      33: iconst_0
      34: istore_3
      35: aload_1
      36: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      41: astore        4
      43: aload         4
      45: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      50: ifeq          180
      53: aload         4
      55: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      60: astore        5
      62: aload         5
      64: checkcast     #40                 // class java/lang/String
      67: astore        6
      69: iconst_0
      70: istore        7
      72: aload_0
      73: getfield      #27                 // Field allergenCanBeInFoods:Ljava/util/Map;
      76: astore        8
      78: iconst_0
      79: istore        9
      81: aload         8
      83: invokeinterface #122,  1          // InterfaceMethod java/util/Map.isEmpty:()Z
      88: ifeq          95
      91: iconst_1
      92: goto          163
      95: aload         8
      97: invokeinterface #126,  1          // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set;
     102: invokeinterface #129,  1          // InterfaceMethod java/util/Set.iterator:()Ljava/util/Iterator;
     107: astore        10
     109: aload         10
     111: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     116: ifeq          162
     119: aload         10
     121: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     126: checkcast     #131                // class java/util/Map$Entry
     129: astore        11
     131: aload         11
     133: astore        12
     135: iconst_0
     136: istore        13
     138: aload         12
     140: invokeinterface #134,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     145: checkcast     #128                // class java/util/Set
     148: aload         6
     150: invokeinterface #196,  2          // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     155: ifeq          109
     158: iconst_0
     159: goto          163
     162: iconst_1
     163: nop
     164: ifeq          43
     167: iinc          3, 1
     170: iload_3
     171: ifge          43
     174: invokestatic  #199                // Method kotlin/collections/CollectionsKt.throwCountOverflow:()V
     177: goto          43
     180: iload_3
     181: ireturn

  public final java.lang.String listIngredientsByAllergens();
    Code:
       0: aload_0
       1: getfield      #27                 // Field allergenCanBeInFoods:Ljava/util/Map;
       4: invokestatic  #215                // Method kotlin/collections/MapsKt.toList:(Ljava/util/Map;)Ljava/util/List;
       7: checkcast     #50                 // class java/lang/Iterable
      10: astore_1
      11: iconst_0
      12: istore_2
      13: aload_1
      14: new           #217                // class Puzzle21$AllergicData$listIngredientsByAllergens$$inlined$sortedBy$1
      17: dup
      18: invokespecial #218                // Method Puzzle21$AllergicData$listIngredientsByAllergens$$inlined$sortedBy$1."<init>":()V
      21: checkcast     #220                // class java/util/Comparator
      24: invokestatic  #224                // Method kotlin/collections/CollectionsKt.sortedWith:(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List;
      27: checkcast     #50                 // class java/lang/Iterable
      30: ldc           #76                 // String ,
      32: checkcast     #38                 // class java/lang/CharSequence
      35: aconst_null
      36: aconst_null
      37: iconst_0
      38: aconst_null
      39: invokedynamic #242,  0            // InvokeDynamic #0:invoke:()Lkotlin/jvm/functions/Function1;
      44: bipush        30
      46: aconst_null
      47: invokestatic  #246                // Method kotlin/collections/CollectionsKt.joinToString$default:(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
      50: areturn

  private static final java.lang.CharSequence listIngredientsByAllergens$lambda$10(kotlin.Pair);
    Code:
       0: aload_0
       1: ldc           #249                // String it
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokevirtual #254                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
      10: checkcast     #50                 // class java/lang/Iterable
      13: invokestatic  #147                // Method kotlin/collections/CollectionsKt.first:(Ljava/lang/Iterable;)Ljava/lang/Object;
      16: checkcast     #38                 // class java/lang/CharSequence
      19: areturn
}


import java.math.BigInteger

object Puzzle13 {

    @JvmStatic
    fun main(args: Array<String>) {
        val input = Puzzle13::class.java.getResource("puzzle13.txt").readText()
        val earliestBusNumberMultipledByWaitTime = earliestBusNumberMultipledByWaitTime(input)
        println(earliestBusNumberMultipledByWaitTime)
        println(firstAfterOtherStarts(input))
    }

    fun earliestBusNumberMultipledByWaitTime(input: String): Int {
        val lines = input.split("\n")
        val timeOfArrive = lines.first().toInt()
        val busNumbers = lines[1].split(",").filterNot { it == "x" }.map(String::toInt)
        val waitTimes = busNumbers.map { it to it - (timeOfArrive % it) }.minByOrNull { it.second }!!
        return waitTimes.first * waitTimes.second
    }

    fun firstAfterOtherStarts(input: String): BigInteger {
        val lines = input.split("\n")
        val busNumbers = lines[1].split(",").mapIndexed{ idx, value -> value to idx}.filterNot { it.first == "x" }.map { it.first.toBigInteger() to it.second.toBigInteger() }
        val M = busNumbers.fold(BigInteger.ONE) { prod, element -> prod * element.first}
        var x = BigInteger.ZERO
        busNumbers.forEach { pair ->
            val bNumer = pair.first
            val index = pair.second
            val m = M/bNumer
            val firstComponent = Eucledian(m, bNumer).calculate().first
            val d = (bNumer-index) % bNumer
            x += (d * firstComponent * m)
        }

        while (x < M) x += M
        return x%M
    }

    class Eucledian(a: BigInteger, b:BigInteger){
        private var q = mutableListOf(BigInteger.ZERO,BigInteger.ZERO)
        private var r = mutableListOf(a,b)
        private var x = mutableListOf(BigInteger.ONE,BigInteger.ZERO)
        private var y = mutableListOf(BigInteger.ZERO,BigInteger.ONE)
        private var i = 2

        private fun makeOneStep(): Boolean{
            q.add(r[i-2] / r[i-1])
            r.add(r[i-2] % r[i-1])
            x.add(x[i-2] - q[i] * x[i-1])
            y.add(y[i-2] - q[i] * y[i-1])
            i++
            return r.last() == BigInteger.ONE
        }

        fun calculate(): Pair<BigInteger, BigInteger>{
            while (!makeOneStep()) {}
            return  Pair(x.last(), y.last())
        }
    }

}

Compiled from "Puzzle13.kt"
public final class Puzzle13$Eucledian {
  private java.util.List<java.math.BigInteger> q;

  private java.util.List<java.math.BigInteger> r;

  private java.util.List<java.math.BigInteger> x;

  private java.util.List<java.math.BigInteger> y;

  private int i;

  public Puzzle13$Eucledian(java.math.BigInteger, java.math.BigInteger);
    Code:
       0: aload_1
       1: ldc           #9                  // String a
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #17                 // String b
       9: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: aload_0
      13: invokespecial #20                 // Method java/lang/Object."<init>":()V
      16: aload_0
      17: iconst_2
      18: anewarray     #22                 // class java/math/BigInteger
      21: astore_3
      22: aload_3
      23: iconst_0
      24: getstatic     #26                 // Field java/math/BigInteger.ZERO:Ljava/math/BigInteger;
      27: aastore
      28: aload_3
      29: iconst_1
      30: getstatic     #26                 // Field java/math/BigInteger.ZERO:Ljava/math/BigInteger;
      33: aastore
      34: aload_3
      35: invokestatic  #32                 // Method kotlin/collections/CollectionsKt.mutableListOf:([Ljava/lang/Object;)Ljava/util/List;
      38: putfield      #36                 // Field q:Ljava/util/List;
      41: aload_0
      42: iconst_2
      43: anewarray     #22                 // class java/math/BigInteger
      46: astore_3
      47: aload_3
      48: iconst_0
      49: aload_1
      50: aastore
      51: aload_3
      52: iconst_1
      53: aload_2
      54: aastore
      55: aload_3
      56: invokestatic  #32                 // Method kotlin/collections/CollectionsKt.mutableListOf:([Ljava/lang/Object;)Ljava/util/List;
      59: putfield      #39                 // Field r:Ljava/util/List;
      62: aload_0
      63: iconst_2
      64: anewarray     #22                 // class java/math/BigInteger
      67: astore_3
      68: aload_3
      69: iconst_0
      70: getstatic     #42                 // Field java/math/BigInteger.ONE:Ljava/math/BigInteger;
      73: aastore
      74: aload_3
      75: iconst_1
      76: getstatic     #26                 // Field java/math/BigInteger.ZERO:Ljava/math/BigInteger;
      79: aastore
      80: aload_3
      81: invokestatic  #32                 // Method kotlin/collections/CollectionsKt.mutableListOf:([Ljava/lang/Object;)Ljava/util/List;
      84: putfield      #45                 // Field x:Ljava/util/List;
      87: aload_0
      88: iconst_2
      89: anewarray     #22                 // class java/math/BigInteger
      92: astore_3
      93: aload_3
      94: iconst_0
      95: getstatic     #26                 // Field java/math/BigInteger.ZERO:Ljava/math/BigInteger;
      98: aastore
      99: aload_3
     100: iconst_1
     101: getstatic     #42                 // Field java/math/BigInteger.ONE:Ljava/math/BigInteger;
     104: aastore
     105: aload_3
     106: invokestatic  #32                 // Method kotlin/collections/CollectionsKt.mutableListOf:([Ljava/lang/Object;)Ljava/util/List;
     109: putfield      #48                 // Field y:Ljava/util/List;
     112: aload_0
     113: iconst_2
     114: putfield      #52                 // Field i:I
     117: return

  private final boolean makeOneStep();
    Code:
       0: aload_0
       1: getfield      #36                 // Field q:Ljava/util/List;
       4: aload_0
       5: getfield      #39                 // Field r:Ljava/util/List;
       8: aload_0
       9: getfield      #52                 // Field i:I
      12: iconst_2
      13: isub
      14: invokeinterface #62,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      19: checkcast     #22                 // class java/math/BigInteger
      22: aload_0
      23: getfield      #39                 // Field r:Ljava/util/List;
      26: aload_0
      27: getfield      #52                 // Field i:I
      30: iconst_1
      31: isub
      32: invokeinterface #62,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      37: checkcast     #22                 // class java/math/BigInteger
      40: invokevirtual #66                 // Method java/math/BigInteger.divide:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
      43: dup
      44: ldc           #68                 // String divide(...)
      46: invokestatic  #71                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      49: invokeinterface #75,  2           // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
      54: pop
      55: aload_0
      56: getfield      #39                 // Field r:Ljava/util/List;
      59: aload_0
      60: getfield      #39                 // Field r:Ljava/util/List;
      63: aload_0
      64: getfield      #52                 // Field i:I
      67: iconst_2
      68: isub
      69: invokeinterface #62,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      74: checkcast     #22                 // class java/math/BigInteger
      77: aload_0
      78: getfield      #39                 // Field r:Ljava/util/List;
      81: aload_0
      82: getfield      #52                 // Field i:I
      85: iconst_1
      86: isub
      87: invokeinterface #62,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      92: checkcast     #22                 // class java/math/BigInteger
      95: invokevirtual #78                 // Method java/math/BigInteger.remainder:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
      98: dup
      99: ldc           #80                 // String remainder(...)
     101: invokestatic  #71                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     104: invokeinterface #75,  2           // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     109: pop
     110: aload_0
     111: getfield      #45                 // Field x:Ljava/util/List;
     114: aload_0
     115: getfield      #45                 // Field x:Ljava/util/List;
     118: aload_0
     119: getfield      #52                 // Field i:I
     122: iconst_2
     123: isub
     124: invokeinterface #62,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     129: dup
     130: ldc           #82                 // String get(...)
     132: invokestatic  #71                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     135: checkcast     #22                 // class java/math/BigInteger
     138: astore_1
     139: aload_0
     140: getfield      #36                 // Field q:Ljava/util/List;
     143: aload_0
     144: getfield      #52                 // Field i:I
     147: invokeinterface #62,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     152: dup
     153: ldc           #82                 // String get(...)
     155: invokestatic  #71                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     158: checkcast     #22                 // class java/math/BigInteger
     161: astore_2
     162: aload_0
     163: getfield      #45                 // Field x:Ljava/util/List;
     166: aload_0
     167: getfield      #52                 // Field i:I
     170: iconst_1
     171: isub
     172: invokeinterface #62,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     177: dup
     178: ldc           #82                 // String get(...)
     180: invokestatic  #71                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     183: checkcast     #22                 // class java/math/BigInteger
     186: aload_2
     187: swap
     188: invokevirtual #85                 // Method java/math/BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
     191: dup
     192: ldc           #87                 // String multiply(...)
     194: invokestatic  #71                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     197: astore_2
     198: aload_1
     199: aload_2
     200: invokevirtual #90                 // Method java/math/BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
     203: dup
     204: ldc           #92                 // String subtract(...)
     206: invokestatic  #71                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     209: invokeinterface #75,  2           // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     214: pop
     215: aload_0
     216: getfield      #48                 // Field y:Ljava/util/List;
     219: aload_0
     220: getfield      #48                 // Field y:Ljava/util/List;
     223: aload_0
     224: getfield      #52                 // Field i:I
     227: iconst_2
     228: isub
     229: invokeinterface #62,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     234: dup
     235: ldc           #82                 // String get(...)
     237: invokestatic  #71                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     240: checkcast     #22                 // class java/math/BigInteger
     243: astore_1
     244: aload_0
     245: getfield      #36                 // Field q:Ljava/util/List;
     248: aload_0
     249: getfield      #52                 // Field i:I
     252: invokeinterface #62,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     257: dup
     258: ldc           #82                 // String get(...)
     260: invokestatic  #71                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     263: checkcast     #22                 // class java/math/BigInteger
     266: astore_2
     267: aload_0
     268: getfield      #48                 // Field y:Ljava/util/List;
     271: aload_0
     272: getfield      #52                 // Field i:I
     275: iconst_1
     276: isub
     277: invokeinterface #62,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     282: dup
     283: ldc           #82                 // String get(...)
     285: invokestatic  #71                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     288: checkcast     #22                 // class java/math/BigInteger
     291: aload_2
     292: swap
     293: invokevirtual #85                 // Method java/math/BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
     296: dup
     297: ldc           #87                 // String multiply(...)
     299: invokestatic  #71                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     302: astore_2
     303: aload_1
     304: aload_2
     305: invokevirtual #90                 // Method java/math/BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
     308: dup
     309: ldc           #92                 // String subtract(...)
     311: invokestatic  #71                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     314: invokeinterface #75,  2           // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     319: pop
     320: aload_0
     321: getfield      #52                 // Field i:I
     324: istore_1
     325: aload_0
     326: iload_1
     327: iconst_1
     328: iadd
     329: putfield      #52                 // Field i:I
     332: aload_0
     333: getfield      #39                 // Field r:Ljava/util/List;
     336: invokestatic  #96                 // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
     339: getstatic     #42                 // Field java/math/BigInteger.ONE:Ljava/math/BigInteger;
     342: invokestatic  #100                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     345: ireturn

  public final kotlin.Pair<java.math.BigInteger, java.math.BigInteger> calculate();
    Code:
       0: aload_0
       1: invokespecial #105                // Method makeOneStep:()Z
       4: ifeq          0
       7: new           #107                // class kotlin/Pair
      10: dup
      11: aload_0
      12: getfield      #45                 // Field x:Ljava/util/List;
      15: invokestatic  #96                 // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
      18: aload_0
      19: getfield      #48                 // Field y:Ljava/util/List;
      22: invokestatic  #96                 // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
      25: invokespecial #110                // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
      28: areturn
}

Compiled from "Puzzle13.kt"
public final class Puzzle13 {
  public static final Puzzle13 INSTANCE;

  private Puzzle13();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  public static final void main(java.lang.String[]);
    Code:
       0: aload_0
       1: ldc           #16                 // String args
       3: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: ldc           #2                  // class Puzzle13
       8: ldc           #24                 // String puzzle13.txt
      10: invokevirtual #30                 // Method java/lang/Class.getResource:(Ljava/lang/String;)Ljava/net/URL;
      13: dup
      14: ldc           #32                 // String getResource(...)
      16: invokestatic  #35                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      19: astore_2
      20: getstatic     #41                 // Field kotlin/text/Charsets.UTF_8:Ljava/nio/charset/Charset;
      23: astore_3
      24: aload_2
      25: invokestatic  #47                 // Method kotlin/io/TextStreamsKt.readBytes:(Ljava/net/URL;)[B
      28: astore        4
      30: new           #49                 // class java/lang/String
      33: dup
      34: aload         4
      36: aload_3
      37: invokespecial #52                 // Method java/lang/String."<init>":([BLjava/nio/charset/Charset;)V
      40: astore_1
      41: getstatic     #55                 // Field INSTANCE:LPuzzle13;
      44: aload_1
      45: invokevirtual #59                 // Method earliestBusNumberMultipledByWaitTime:(Ljava/lang/String;)I
      48: istore_2
      49: getstatic     #65                 // Field java/lang/System.out:Ljava/io/PrintStream;
      52: iload_2
      53: invokevirtual #71                 // Method java/io/PrintStream.println:(I)V
      56: getstatic     #55                 // Field INSTANCE:LPuzzle13;
      59: aload_1
      60: invokevirtual #75                 // Method firstAfterOtherStarts:(Ljava/lang/String;)Ljava/math/BigInteger;
      63: getstatic     #65                 // Field java/lang/System.out:Ljava/io/PrintStream;
      66: swap
      67: invokevirtual #78                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
      70: return

  public final int earliestBusNumberMultipledByWaitTime(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #83                 // String input
       3: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: checkcast     #85                 // class java/lang/CharSequence
      10: iconst_1
      11: anewarray     #49                 // class java/lang/String
      14: astore_3
      15: aload_3
      16: iconst_0
      17: ldc           #87                 // String \n
      19: aastore
      20: aload_3
      21: iconst_0
      22: iconst_0
      23: bipush        6
      25: aconst_null
      26: invokestatic  #93                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      29: astore_2
      30: aload_2
      31: invokestatic  #99                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
      34: checkcast     #49                 // class java/lang/String
      37: invokestatic  #104                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
      40: istore_3
      41: aload_2
      42: iconst_1
      43: invokeinterface #110,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      48: checkcast     #85                 // class java/lang/CharSequence
      51: iconst_1
      52: anewarray     #49                 // class java/lang/String
      55: astore        5
      57: aload         5
      59: iconst_0
      60: ldc           #112                // String ,
      62: aastore
      63: aload         5
      65: iconst_0
      66: iconst_0
      67: bipush        6
      69: aconst_null
      70: invokestatic  #93                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      73: checkcast     #114                // class java/lang/Iterable
      76: astore        5
      78: iconst_0
      79: istore        6
      81: aload         5
      83: astore        7
      85: new           #116                // class java/util/ArrayList
      88: dup
      89: invokespecial #117                // Method java/util/ArrayList."<init>":()V
      92: checkcast     #119                // class java/util/Collection
      95: astore        8
      97: iconst_0
      98: istore        9
     100: aload         7
     102: invokeinterface #123,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     107: astore        10
     109: aload         10
     111: invokeinterface #129,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     116: ifeq          161
     119: aload         10
     121: invokeinterface #133,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     126: astore        11
     128: aload         11
     130: checkcast     #49                 // class java/lang/String
     133: astore        12
     135: iconst_0
     136: istore        13
     138: aload         12
     140: ldc           #135                // String x
     142: invokestatic  #139                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     145: ifne          109
     148: aload         8
     150: aload         11
     152: invokeinterface #143,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     157: pop
     158: goto          109
     161: aload         8
     163: checkcast     #106                // class java/util/List
     166: nop
     167: checkcast     #114                // class java/lang/Iterable
     170: astore        5
     172: nop
     173: iconst_0
     174: istore        6
     176: aload         5
     178: astore        7
     180: new           #116                // class java/util/ArrayList
     183: dup
     184: aload         5
     186: bipush        10
     188: invokestatic  #147                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     191: invokespecial #149                // Method java/util/ArrayList."<init>":(I)V
     194: checkcast     #119                // class java/util/Collection
     197: astore        8
     199: iconst_0
     200: istore        9
     202: aload         7
     204: invokeinterface #123,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     209: astore        10
     211: aload         10
     213: invokeinterface #129,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     218: ifeq          265
     221: aload         10
     223: invokeinterface #133,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     228: astore        11
     230: aload         8
     232: aload         11
     234: checkcast     #49                 // class java/lang/String
     237: astore        12
     239: astore        15
     241: iconst_0
     242: istore        13
     244: aload         12
     246: invokestatic  #104                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     249: nop
     250: invokestatic  #153                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     253: aload         15
     255: swap
     256: invokeinterface #143,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     261: pop
     262: goto          211
     265: aload         8
     267: checkcast     #106                // class java/util/List
     270: nop
     271: astore        4
     273: aload         4
     275: checkcast     #114                // class java/lang/Iterable
     278: astore        6
     280: iconst_0
     281: istore        7
     283: aload         6
     285: astore        8
     287: new           #116                // class java/util/ArrayList
     290: dup
     291: aload         6
     293: bipush        10
     295: invokestatic  #147                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     298: invokespecial #149                // Method java/util/ArrayList."<init>":(I)V
     301: checkcast     #119                // class java/util/Collection
     304: astore        9
     306: iconst_0
     307: istore        10
     309: aload         8
     311: invokeinterface #123,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     316: astore        11
     318: aload         11
     320: invokeinterface #129,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     325: ifeq          384
     328: aload         11
     330: invokeinterface #133,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     335: astore        12
     337: aload         9
     339: aload         12
     341: checkcast     #155                // class java/lang/Number
     344: invokevirtual #159                // Method java/lang/Number.intValue:()I
     347: istore        13
     349: astore        15
     351: iconst_0
     352: istore        14
     354: iload         13
     356: invokestatic  #153                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     359: iload         13
     361: iload_3
     362: iload         13
     364: irem
     365: isub
     366: invokestatic  #153                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     369: invokestatic  #165                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     372: aload         15
     374: swap
     375: invokeinterface #143,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     380: pop
     381: goto          318
     384: aload         9
     386: checkcast     #106                // class java/util/List
     389: nop
     390: checkcast     #114                // class java/lang/Iterable
     393: astore        6
     395: nop
     396: iconst_0
     397: istore        7
     399: aload         6
     401: invokeinterface #123,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     406: astore        8
     408: aload         8
     410: invokeinterface #129,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     415: ifne          422
     418: aconst_null
     419: goto          528
     422: aload         8
     424: invokeinterface #133,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     429: astore        9
     431: aload         8
     433: invokeinterface #129,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     438: ifne          446
     441: aload         9
     443: goto          528
     446: aload         9
     448: checkcast     #167                // class kotlin/Pair
     451: astore        10
     453: iconst_0
     454: istore        11
     456: aload         10
     458: invokevirtual #170                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     461: checkcast     #155                // class java/lang/Number
     464: invokevirtual #159                // Method java/lang/Number.intValue:()I
     467: istore        10
     469: aload         8
     471: invokeinterface #133,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     476: astore        11
     478: aload         11
     480: checkcast     #167                // class kotlin/Pair
     483: astore        12
     485: iconst_0
     486: istore        13
     488: aload         12
     490: invokevirtual #170                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     493: checkcast     #155                // class java/lang/Number
     496: invokevirtual #159                // Method java/lang/Number.intValue:()I
     499: istore        12
     501: iload         10
     503: iload         12
     505: if_icmple     516
     508: aload         11
     510: astore        9
     512: iload         12
     514: istore        10
     516: aload         8
     518: invokeinterface #129,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     523: ifne          469
     526: aload         9
     528: dup
     529: invokestatic  #173                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     532: checkcast     #167                // class kotlin/Pair
     535: astore        5
     537: aload         5
     539: invokevirtual #176                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     542: checkcast     #155                // class java/lang/Number
     545: invokevirtual #159                // Method java/lang/Number.intValue:()I
     548: aload         5
     550: invokevirtual #170                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     553: checkcast     #155                // class java/lang/Number
     556: invokevirtual #159                // Method java/lang/Number.intValue:()I
     559: imul
     560: ireturn

  public final java.math.BigInteger firstAfterOtherStarts(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #83                 // String input
       3: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: checkcast     #85                 // class java/lang/CharSequence
      10: iconst_1
      11: anewarray     #49                 // class java/lang/String
      14: astore_3
      15: aload_3
      16: iconst_0
      17: ldc           #87                 // String \n
      19: aastore
      20: aload_3
      21: iconst_0
      22: iconst_0
      23: bipush        6
      25: aconst_null
      26: invokestatic  #93                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      29: astore_2
      30: aload_2
      31: iconst_1
      32: invokeinterface #110,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      37: checkcast     #85                 // class java/lang/CharSequence
      40: iconst_1
      41: anewarray     #49                 // class java/lang/String
      44: astore        4
      46: aload         4
      48: iconst_0
      49: ldc           #112                // String ,
      51: aastore
      52: aload         4
      54: iconst_0
      55: iconst_0
      56: bipush        6
      58: aconst_null
      59: invokestatic  #93                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      62: checkcast     #114                // class java/lang/Iterable
      65: astore        4
      67: iconst_0
      68: istore        5
      70: aload         4
      72: astore        6
      74: new           #116                // class java/util/ArrayList
      77: dup
      78: aload         4
      80: bipush        10
      82: invokestatic  #147                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      85: invokespecial #149                // Method java/util/ArrayList."<init>":(I)V
      88: checkcast     #119                // class java/util/Collection
      91: astore        7
      93: iconst_0
      94: istore        8
      96: iconst_0
      97: istore        9
      99: aload         6
     101: invokeinterface #123,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     106: astore        10
     108: aload         10
     110: invokeinterface #129,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     115: ifeq          182
     118: aload         10
     120: invokeinterface #133,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     125: astore        11
     127: aload         7
     129: iload         9
     131: iinc          9, 1
     134: istore        12
     136: iload         12
     138: ifge          144
     141: invokestatic  #213                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     144: iload         12
     146: aload         11
     148: checkcast     #49                 // class java/lang/String
     151: astore        13
     153: istore        14
     155: astore        19
     157: iconst_0
     158: istore        15
     160: aload         13
     162: iload         14
     164: invokestatic  #153                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     167: invokestatic  #165                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     170: aload         19
     172: swap
     173: invokeinterface #143,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     178: pop
     179: goto          108
     182: aload         7
     184: checkcast     #106                // class java/util/List
     187: nop
     188: checkcast     #114                // class java/lang/Iterable
     191: astore        4
     193: nop
     194: iconst_0
     195: istore        5
     197: aload         4
     199: astore        6
     201: new           #116                // class java/util/ArrayList
     204: dup
     205: invokespecial #117                // Method java/util/ArrayList."<init>":()V
     208: checkcast     #119                // class java/util/Collection
     211: astore        7
     213: iconst_0
     214: istore        8
     216: aload         6
     218: invokeinterface #123,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     223: astore        9
     225: aload         9
     227: invokeinterface #129,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     232: ifeq          280
     235: aload         9
     237: invokeinterface #133,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     242: astore        10
     244: aload         10
     246: checkcast     #167                // class kotlin/Pair
     249: astore        11
     251: iconst_0
     252: istore        12
     254: aload         11
     256: invokevirtual #176                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     259: ldc           #135                // String x
     261: invokestatic  #139                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     264: ifne          225
     267: aload         7
     269: aload         10
     271: invokeinterface #143,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     276: pop
     277: goto          225
     280: aload         7
     282: checkcast     #106                // class java/util/List
     285: nop
     286: checkcast     #114                // class java/lang/Iterable
     289: astore        4
     291: nop
     292: iconst_0
     293: istore        5
     295: aload         4
     297: astore        6
     299: new           #116                // class java/util/ArrayList
     302: dup
     303: aload         4
     305: bipush        10
     307: invokestatic  #147                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     310: invokespecial #149                // Method java/util/ArrayList."<init>":(I)V
     313: checkcast     #119                // class java/util/Collection
     316: astore        7
     318: iconst_0
     319: istore        8
     321: aload         6
     323: invokeinterface #123,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     328: astore        9
     330: aload         9
     332: invokeinterface #129,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     337: ifeq          414
     340: aload         9
     342: invokeinterface #133,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     347: astore        10
     349: aload         7
     351: aload         10
     353: checkcast     #167                // class kotlin/Pair
     356: astore        11
     358: astore        19
     360: iconst_0
     361: istore        12
     363: new           #215                // class java/math/BigInteger
     366: dup
     367: aload         11
     369: invokevirtual #176                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     372: checkcast     #49                 // class java/lang/String
     375: invokespecial #218                // Method java/math/BigInteger."<init>":(Ljava/lang/String;)V
     378: aload         11
     380: invokevirtual #170                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     383: checkcast     #155                // class java/lang/Number
     386: invokevirtual #159                // Method java/lang/Number.intValue:()I
     389: i2l
     390: invokestatic  #221                // Method java/math/BigInteger.valueOf:(J)Ljava/math/BigInteger;
     393: dup
     394: ldc           #223                // String valueOf(...)
     396: invokestatic  #35                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     399: invokestatic  #165                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     402: aload         19
     404: swap
     405: invokeinterface #143,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     410: pop
     411: goto          330
     414: aload         7
     416: checkcast     #106                // class java/util/List
     419: nop
     420: astore_3
     421: aload_3
     422: checkcast     #114                // class java/lang/Iterable
     425: astore        5
     427: getstatic     #227                // Field java/math/BigInteger.ONE:Ljava/math/BigInteger;
     430: astore        6
     432: iconst_0
     433: istore        7
     435: aload         6
     437: astore        8
     439: aload         5
     441: invokeinterface #123,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     446: astore        9
     448: aload         9
     450: invokeinterface #129,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     455: ifeq          511
     458: aload         9
     460: invokeinterface #133,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     465: astore        10
     467: aload         8
     469: aload         10
     471: checkcast     #167                // class kotlin/Pair
     474: astore        11
     476: astore        12
     478: iconst_0
     479: istore        13
     481: aload         12
     483: invokestatic  #173                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     486: aload         12
     488: aload         11
     490: invokevirtual #176                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     493: checkcast     #215                // class java/math/BigInteger
     496: invokevirtual #231                // Method java/math/BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
     499: dup
     500: ldc           #233                // String multiply(...)
     502: invokestatic  #35                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     505: nop
     506: astore        8
     508: goto          448
     511: aload         8
     513: astore        4
     515: aconst_null
     516: astore        5
     518: getstatic     #236                // Field java/math/BigInteger.ZERO:Ljava/math/BigInteger;
     521: astore        5
     523: aload_3
     524: checkcast     #114                // class java/lang/Iterable
     527: astore        6
     529: iconst_0
     530: istore        7
     532: aload         6
     534: invokeinterface #123,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     539: astore        8
     541: aload         8
     543: invokeinterface #129,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     548: ifeq          718
     551: aload         8
     553: invokeinterface #133,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     558: astore        9
     560: aload         9
     562: checkcast     #167                // class kotlin/Pair
     565: astore        10
     567: iconst_0
     568: istore        11
     570: aload         10
     572: invokevirtual #176                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     575: checkcast     #215                // class java/math/BigInteger
     578: astore        12
     580: aload         10
     582: invokevirtual #170                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     585: checkcast     #215                // class java/math/BigInteger
     588: astore        13
     590: aload         4
     592: invokestatic  #173                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     595: aload         4
     597: aload         12
     599: invokevirtual #239                // Method java/math/BigInteger.divide:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
     602: dup
     603: ldc           #241                // String divide(...)
     605: invokestatic  #35                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     608: astore        14
     610: new           #243                // class Puzzle13$Eucledian
     613: dup
     614: aload         14
     616: aload         12
     618: invokespecial #246                // Method Puzzle13$Eucledian."<init>":(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
     621: invokevirtual #250                // Method Puzzle13$Eucledian.calculate:()Lkotlin/Pair;
     624: invokevirtual #176                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     627: checkcast     #215                // class java/math/BigInteger
     630: astore        15
     632: nop
     633: aload         12
     635: aload         13
     637: invokevirtual #253                // Method java/math/BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
     640: dup
     641: ldc           #255                // String subtract(...)
     643: invokestatic  #35                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     646: aload         12
     648: invokevirtual #258                // Method java/math/BigInteger.remainder:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
     651: dup
     652: ldc_w         #260                // String remainder(...)
     655: invokestatic  #35                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     658: astore        16
     660: aload         5
     662: dup
     663: ldc_w         #262                // String element
     666: invokestatic  #35                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     669: astore        17
     671: aload         16
     673: aload         15
     675: invokevirtual #231                // Method java/math/BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
     678: dup
     679: ldc           #233                // String multiply(...)
     681: invokestatic  #35                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     684: aload         14
     686: invokevirtual #231                // Method java/math/BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
     689: dup
     690: ldc           #233                // String multiply(...)
     692: invokestatic  #35                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     695: astore        18
     697: aload         17
     699: aload         18
     701: invokevirtual #264                // Method java/math/BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
     704: dup
     705: ldc_w         #266                // String add(...)
     708: invokestatic  #35                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     711: astore        5
     713: nop
     714: nop
     715: goto          541
     718: nop
     719: aload         5
     721: aload         4
     723: invokevirtual #270                // Method java/math/BigInteger.compareTo:(Ljava/math/BigInteger;)I
     726: ifge          764
     729: aload         5
     731: dup
     732: ldc_w         #262                // String element
     735: invokestatic  #35                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     738: astore        6
     740: aload         4
     742: invokestatic  #173                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     745: aload         6
     747: aload         4
     749: invokevirtual #264                // Method java/math/BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
     752: dup
     753: ldc_w         #266                // String add(...)
     756: invokestatic  #35                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     759: astore        5
     761: goto          719
     764: aload         5
     766: dup
     767: ldc_w         #262                // String element
     770: invokestatic  #35                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     773: astore        6
     775: aload         4
     777: invokestatic  #173                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     780: aload         6
     782: aload         4
     784: invokevirtual #258                // Method java/math/BigInteger.remainder:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
     787: dup
     788: ldc_w         #260                // String remainder(...)
     791: invokestatic  #35                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     794: areturn

  static {};
    Code:
       0: new           #2                  // class Puzzle13
       3: dup
       4: invokespecial #300                // Method "<init>":()V
       7: putstatic     #55                 // Field INSTANCE:LPuzzle13;
      10: return
}