/**
 * # Maximum Subarray
 * Problem:
 * https://leetcode.com/problems/maximum-subarray/
 */
class MaxSubArray {
    fun maxSubArray(nums: IntArray): Int {
        val size = nums.size
        if (size == 1) return nums[0]

        var sum = nums.first()
        var localMax = sum

        for (i in 1 until size) {
            val n = nums[i]
            when {
                n > 0 -> if (sum > 0) {
                    // n(+) + sum(+) => continue the sum: n + sum
                    sum += n
                } else {
                    // n(+) + sum(-) => reset to n(+)
                    sum = n
                }
                else -> {
                    if (sum > 0) {
                        // n(-) + sum(+) => we can't know if we should reset the sum,
                        // because we can't predict the next numbers coming
                        // => 1) remember local max; 2) continue the sum;
                        localMax = maxOf(localMax, sum)
                        sum += n
                    } else {
                        // sum(-)
                        if (n > sum) {
                            // n(-) is better than sum(-) => reset the sum to n(-)
                            sum = n
                        } else {
                            // n(-) is worse than sum(-) but we can't predict the future
                            // => 1) remember local max; 2) continue the sum;
                            localMax = maxOf(localMax, sum)
                            sum += n
                        }
                    }
                }
            }
        }

        return maxOf(localMax, sum)
    }
}

Compiled from "MaxSubArray.kt"
public final class MaxSubArray {
  public MaxSubArray();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  public final int maxSubArray(int[]);
    Code:
       0: aload_1
       1: ldc           #15                 // String nums
       3: invokestatic  #21                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: arraylength
       8: istore_2
       9: iload_2
      10: iconst_1
      11: if_icmpne     18
      14: aload_1
      15: iconst_0
      16: iaload
      17: ireturn
      18: aload_1
      19: invokestatic  #26                 // Method kotlin/collections/ArraysKt.first:([I)I
      22: istore_3
      23: iload_3
      24: istore        4
      26: iconst_1
      27: istore        5
      29: iload         5
      31: iload_2
      32: if_icmpge     116
      35: aload_1
      36: iload         5
      38: iaload
      39: istore        6
      41: nop
      42: iload         6
      44: ifle          65
      47: iload_3
      48: ifle          59
      51: iload_3
      52: iload         6
      54: iadd
      55: istore_3
      56: goto          110
      59: iload         6
      61: istore_3
      62: goto          110
      65: iload_3
      66: ifle          85
      69: iload         4
      71: iload_3
      72: invokestatic  #32                 // Method java/lang/Math.max:(II)I
      75: istore        4
      77: iload_3
      78: iload         6
      80: iadd
      81: istore_3
      82: goto          110
      85: iload         6
      87: iload_3
      88: if_icmple     97
      91: iload         6
      93: istore_3
      94: goto          110
      97: iload         4
      99: iload_3
     100: invokestatic  #32                 // Method java/lang/Math.max:(II)I
     103: istore        4
     105: iload_3
     106: iload         6
     108: iadd
     109: istore_3
     110: iinc          5, 1
     113: goto          29
     116: iload         4
     118: iload_3
     119: invokestatic  #32                 // Method java/lang/Math.max:(II)I
     122: ireturn
}


/**
 * # Search a 2D Matrix
 * Problem:
 * https://leetcode.com/problems/search-a-2d-matrix/
 */
class Search2DMatrix {
    fun searchMatrix(matrix: Array<IntArray>, target: Int): Boolean {
        val rowsCount = matrix.size
        if (rowsCount == 1) return binarySearchRow(matrix[0], target)
        return binarySearchMatrix(
            matrix = matrix,
            target = target,
            lowIndex = 0,
            highIndex = rowsCount - 1
        )
    }

    private fun binarySearchMatrix(
        matrix: Array<IntArray>,
        target: Int,
        lowIndex: Int,
        highIndex: Int
    ): Boolean {
        if (lowIndex > highIndex) return false

        val mid = (lowIndex + highIndex) / 2
        val row = matrix[mid]
        val rowFirst = row[0]
        val rowLast = row.last()
        return when {
            target in rowFirst..rowLast -> binarySearchRow(row, target)
            target < rowLast ->
                // search lower row
                binarySearchMatrix(
                    matrix = matrix,
                    target = target,
                    lowIndex = 0,
                    highIndex = mid - 1
                )
            else ->
                // search higher row
                binarySearchMatrix(
                    matrix = matrix,
                    target = target,
                    lowIndex = mid + 1,
                    highIndex = highIndex
                )
        }
    }

    private fun binarySearchRow(
        row: IntArray,
        target: Int,
        low: Int = 0,
        high: Int = row.size - 1
    ): Boolean {
        if (low > high) return false

        val mid = (low + high) / 2
        val midValue = row[mid]
        if (target == midValue) return true

        return if (target > midValue) {
            // search right
            binarySearchRow(
                row = row,
                target = target,
                low = mid + 1,
                high = high
            )
        } else {
            // search left
            binarySearchRow(
                row = row,
                target = target,
                low = low,
                high = mid - 1
            )
        }
    }
}

Compiled from "Search2DMatrix.kt"
public final class Search2DMatrix {
  public Search2DMatrix();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  public final boolean searchMatrix(int[][], int);
    Code:
       0: aload_1
       1: ldc           #15                 // String matrix
       3: invokestatic  #21                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: checkcast     #23                 // class "[Ljava/lang/Object;"
      10: arraylength
      11: istore_3
      12: iload_3
      13: iconst_1
      14: if_icmpne     31
      17: aload_0
      18: aload_1
      19: iconst_0
      20: aaload
      21: iload_2
      22: iconst_0
      23: iconst_0
      24: bipush        12
      26: aconst_null
      27: invokestatic  #27                 // Method binarySearchRow$default:(LSearch2DMatrix;[IIIIILjava/lang/Object;)Z
      30: ireturn
      31: aload_0
      32: aload_1
      33: iload_2
      34: iconst_0
      35: iload_3
      36: iconst_1
      37: isub
      38: invokespecial #31                 // Method binarySearchMatrix:([[IIII)Z
      41: ireturn

  private final boolean binarySearchMatrix(int[][], int, int, int);
    Code:
       0: iload_3
       1: iload         4
       3: if_icmple     8
       6: iconst_0
       7: ireturn
       8: iload_3
       9: iload         4
      11: iadd
      12: iconst_2
      13: idiv
      14: istore        5
      16: aload_1
      17: iload         5
      19: aaload
      20: astore        6
      22: aload         6
      24: iconst_0
      25: iaload
      26: istore        7
      28: aload         6
      30: invokestatic  #41                 // Method kotlin/collections/ArraysKt.last:([I)I
      33: istore        8
      35: nop
      36: iload         7
      38: iload_2
      39: if_icmpgt     56
      42: iload_2
      43: iload         8
      45: if_icmpgt     52
      48: iconst_1
      49: goto          57
      52: iconst_0
      53: goto          57
      56: iconst_0
      57: ifeq          75
      60: aload_0
      61: aload         6
      63: iload_2
      64: iconst_0
      65: iconst_0
      66: bipush        12
      68: aconst_null
      69: invokestatic  #27                 // Method binarySearchRow$default:(LSearch2DMatrix;[IIIIILjava/lang/Object;)Z
      72: goto          107
      75: iload_2
      76: iload         8
      78: if_icmpge     95
      81: aload_0
      82: aload_1
      83: iload_2
      84: iconst_0
      85: iload         5
      87: iconst_1
      88: isub
      89: invokespecial #31                 // Method binarySearchMatrix:([[IIII)Z
      92: goto          107
      95: aload_0
      96: aload_1
      97: iload_2
      98: iload         5
     100: iconst_1
     101: iadd
     102: iload         4
     104: invokespecial #31                 // Method binarySearchMatrix:([[IIII)Z
     107: ireturn

  private final boolean binarySearchRow(int[], int, int, int);
    Code:
       0: iload_3
       1: iload         4
       3: if_icmple     8
       6: iconst_0
       7: ireturn
       8: iload_3
       9: iload         4
      11: iadd
      12: iconst_2
      13: idiv
      14: istore        5
      16: aload_1
      17: iload         5
      19: iaload
      20: istore        6
      22: iload_2
      23: iload         6
      25: if_icmpne     30
      28: iconst_1
      29: ireturn
      30: iload_2
      31: iload         6
      33: if_icmple     51
      36: aload_0
      37: aload_1
      38: iload_2
      39: iload         5
      41: iconst_1
      42: iadd
      43: iload         4
      45: invokespecial #54                 // Method binarySearchRow:([IIII)Z
      48: goto          62
      51: aload_0
      52: aload_1
      53: iload_2
      54: iload_3
      55: iload         5
      57: iconst_1
      58: isub
      59: invokespecial #54                 // Method binarySearchRow:([IIII)Z
      62: ireturn

  static boolean binarySearchRow$default(Search2DMatrix, int[], int, int, int, int, java.lang.Object);
    Code:
       0: iload         5
       2: iconst_4
       3: iand
       4: ifeq          9
       7: iconst_0
       8: istore_3
       9: iload         5
      11: bipush        8
      13: iand
      14: ifeq          23
      17: aload_1
      18: arraylength
      19: iconst_1
      20: isub
      21: istore        4
      23: aload_0
      24: aload_1
      25: iload_2
      26: iload_3
      27: iload         4
      29: invokespecial #54                 // Method binarySearchRow:([IIII)Z
      32: ireturn
}


fun main() = Droplets.solve()

private object Droplets {
    fun solve() {
        val input = readInput()
        val droplet = Droplet(input)
        println("total surface area ${droplet.surfaceArea1()}")
        println("outside surface area ${droplet.surfaceArea2()}")
    }

    private fun readInput(): List<Pos> = generateSequence(::readLine).map {
        val parts = it.split(",").map { it.toInt(10) }
        Pos(parts[0], parts[1], parts[2])
    }.toList()

    data class Pos(val x: Int, val y: Int, val z: Int) {
        fun sides() = listOf(
            Pos(x + 1, y, z), Pos(x - 1, y, z),
            Pos(x, y + 1, z), Pos(x, y - 1, z),
            Pos(x, y, z + 1), Pos(x, y, z - 1)
        )
    }

    class Droplet(val points: List<Pos>) {
        fun surfaceArea1(): Int {
            var area = 0

            val pointSet = points.toSet()
            for (point in points) {
                area += 6 - point.sides().count { pointSet.contains(it) }
            }
//            println("${joined.size} $area")
            return area
        }

        fun surfaceArea2(): Int {
            val minX = points.minOf { it.x }
            val maxX = points.maxOf { it.x }
            val minY = points.minOf { it.y }
            val maxY = points.maxOf { it.y }
            val minZ = points.minOf { it.z }
            val maxZ = points.maxOf { it.z }
            val xRange = (minX - 1)..(maxX + 1)
            val yRange = (minY - 1)..(maxY + 1)
            val zRange = (minZ - 1)..(maxZ + 1)
            println("$xRange $yRange $zRange")
            val outsideCells = mutableSetOf<Pos>()
            val pointsSet = points.toSet()
            val q = mutableListOf(Pos(xRange.start, yRange.start, zRange.start))
            while (q.isNotEmpty()) {
                val cell = q.removeFirst()
                if (cell in pointsSet || cell in outsideCells) {
                    continue
                }
                outsideCells.add(cell)
                q.addAll(cell.sides().filter { it.x in xRange && it.y in yRange && it.z in zRange })
            }
            var result = 0
            for (point in pointsSet) {
                result += point.sides().count { it in outsideCells }
            }
            return result
        }
    }
}

Compiled from "Droplets.kt"
public final class DropletsKt {
  public static final void main();
    Code:
       0: getstatic     #12                 // Field Droplets.INSTANCE:LDroplets;
       3: invokevirtual #15                 // Method Droplets.solve:()V
       6: return

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #18                 // Method main:()V
       3: return
}

Compiled from "Droplets.kt"
public final class Droplets$Pos {
  private final int x;

  private final int y;

  private final int z;

  public Droplets$Pos(int, int, int);
    Code:
       0: aload_0
       1: invokespecial #9                  // Method java/lang/Object."<init>":()V
       4: aload_0
       5: iload_1
       6: putfield      #13                 // Field x:I
       9: aload_0
      10: iload_2
      11: putfield      #16                 // Field y:I
      14: aload_0
      15: iload_3
      16: putfield      #19                 // Field z:I
      19: return

  public final int getX();
    Code:
       0: aload_0
       1: getfield      #13                 // Field x:I
       4: ireturn

  public final int getY();
    Code:
       0: aload_0
       1: getfield      #16                 // Field y:I
       4: ireturn

  public final int getZ();
    Code:
       0: aload_0
       1: getfield      #19                 // Field z:I
       4: ireturn

  public final java.util.List<Droplets$Pos> sides();
    Code:
       0: bipush        6
       2: anewarray     #2                  // class Droplets$Pos
       5: astore_1
       6: aload_1
       7: iconst_0
       8: new           #2                  // class Droplets$Pos
      11: dup
      12: aload_0
      13: getfield      #13                 // Field x:I
      16: iconst_1
      17: iadd
      18: aload_0
      19: getfield      #16                 // Field y:I
      22: aload_0
      23: getfield      #19                 // Field z:I
      26: invokespecial #31                 // Method "<init>":(III)V
      29: aastore
      30: aload_1
      31: iconst_1
      32: new           #2                  // class Droplets$Pos
      35: dup
      36: aload_0
      37: getfield      #13                 // Field x:I
      40: iconst_1
      41: isub
      42: aload_0
      43: getfield      #16                 // Field y:I
      46: aload_0
      47: getfield      #19                 // Field z:I
      50: invokespecial #31                 // Method "<init>":(III)V
      53: aastore
      54: aload_1
      55: iconst_2
      56: new           #2                  // class Droplets$Pos
      59: dup
      60: aload_0
      61: getfield      #13                 // Field x:I
      64: aload_0
      65: getfield      #16                 // Field y:I
      68: iconst_1
      69: iadd
      70: aload_0
      71: getfield      #19                 // Field z:I
      74: invokespecial #31                 // Method "<init>":(III)V
      77: aastore
      78: aload_1
      79: iconst_3
      80: new           #2                  // class Droplets$Pos
      83: dup
      84: aload_0
      85: getfield      #13                 // Field x:I
      88: aload_0
      89: getfield      #16                 // Field y:I
      92: iconst_1
      93: isub
      94: aload_0
      95: getfield      #19                 // Field z:I
      98: invokespecial #31                 // Method "<init>":(III)V
     101: aastore
     102: aload_1
     103: iconst_4
     104: new           #2                  // class Droplets$Pos
     107: dup
     108: aload_0
     109: getfield      #13                 // Field x:I
     112: aload_0
     113: getfield      #16                 // Field y:I
     116: aload_0
     117: getfield      #19                 // Field z:I
     120: iconst_1
     121: iadd
     122: invokespecial #31                 // Method "<init>":(III)V
     125: aastore
     126: aload_1
     127: iconst_5
     128: new           #2                  // class Droplets$Pos
     131: dup
     132: aload_0
     133: getfield      #13                 // Field x:I
     136: aload_0
     137: getfield      #16                 // Field y:I
     140: aload_0
     141: getfield      #19                 // Field z:I
     144: iconst_1
     145: isub
     146: invokespecial #31                 // Method "<init>":(III)V
     149: aastore
     150: aload_1
     151: invokestatic  #37                 // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     154: areturn

  public final int component1();
    Code:
       0: aload_0
       1: getfield      #13                 // Field x:I
       4: ireturn

  public final int component2();
    Code:
       0: aload_0
       1: getfield      #16                 // Field y:I
       4: ireturn

  public final int component3();
    Code:
       0: aload_0
       1: getfield      #19                 // Field z:I
       4: ireturn

  public final Droplets$Pos copy(int, int, int);
    Code:
       0: new           #2                  // class Droplets$Pos
       3: dup
       4: iload_1
       5: iload_2
       6: iload_3
       7: invokespecial #31                 // Method "<init>":(III)V
      10: areturn

  public static Droplets$Pos copy$default(Droplets$Pos, int, int, int, int, java.lang.Object);
    Code:
       0: iload         4
       2: iconst_1
       3: iand
       4: ifeq          12
       7: aload_0
       8: getfield      #13                 // Field x:I
      11: istore_1
      12: iload         4
      14: iconst_2
      15: iand
      16: ifeq          24
      19: aload_0
      20: getfield      #16                 // Field y:I
      23: istore_2
      24: iload         4
      26: iconst_4
      27: iand
      28: ifeq          36
      31: aload_0
      32: getfield      #19                 // Field z:I
      35: istore_3
      36: aload_0
      37: iload_1
      38: iload_2
      39: iload_3
      40: invokevirtual #46                 // Method copy:(III)LDroplets$Pos;
      43: areturn

  public java.lang.String toString();
    Code:
       0: new           #50                 // class java/lang/StringBuilder
       3: dup
       4: invokespecial #51                 // Method java/lang/StringBuilder."<init>":()V
       7: ldc           #53                 // String Pos(x=
       9: invokevirtual #57                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      12: aload_0
      13: getfield      #13                 // Field x:I
      16: invokevirtual #60                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      19: ldc           #62                 // String , y=
      21: invokevirtual #57                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      24: aload_0
      25: getfield      #16                 // Field y:I
      28: invokevirtual #60                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      31: ldc           #64                 // String , z=
      33: invokevirtual #57                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      36: aload_0
      37: getfield      #19                 // Field z:I
      40: invokevirtual #60                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      43: bipush        41
      45: invokevirtual #67                 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      48: invokevirtual #69                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      51: areturn

  public int hashCode();
    Code:
       0: aload_0
       1: getfield      #13                 // Field x:I
       4: invokestatic  #75                 // Method java/lang/Integer.hashCode:(I)I
       7: istore_1
       8: iload_1
       9: bipush        31
      11: imul
      12: aload_0
      13: getfield      #16                 // Field y:I
      16: invokestatic  #75                 // Method java/lang/Integer.hashCode:(I)I
      19: iadd
      20: istore_1
      21: iload_1
      22: bipush        31
      24: imul
      25: aload_0
      26: getfield      #19                 // Field z:I
      29: invokestatic  #75                 // Method java/lang/Integer.hashCode:(I)I
      32: iadd
      33: istore_1
      34: iload_1
      35: ireturn

  public boolean equals(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: if_acmpne     7
       5: iconst_1
       6: ireturn
       7: aload_1
       8: instanceof    #2                  // class Droplets$Pos
      11: ifne          16
      14: iconst_0
      15: ireturn
      16: aload_1
      17: checkcast     #2                  // class Droplets$Pos
      20: astore_2
      21: aload_0
      22: getfield      #13                 // Field x:I
      25: aload_2
      26: getfield      #13                 // Field x:I
      29: if_icmpeq     34
      32: iconst_0
      33: ireturn
      34: aload_0
      35: getfield      #16                 // Field y:I
      38: aload_2
      39: getfield      #16                 // Field y:I
      42: if_icmpeq     47
      45: iconst_0
      46: ireturn
      47: aload_0
      48: getfield      #19                 // Field z:I
      51: aload_2
      52: getfield      #19                 // Field z:I
      55: if_icmpeq     60
      58: iconst_0
      59: ireturn
      60: iconst_1
      61: ireturn
}

Compiled from "Droplets.kt"
final class Droplets$readInput$1 extends kotlin.jvm.internal.FunctionReferenceImpl implements kotlin.jvm.functions.Function0<java.lang.String> {
  public static final Droplets$readInput$1 INSTANCE;

  Droplets$readInput$1();
    Code:
       0: aload_0
       1: iconst_0
       2: ldc           #11                 // class kotlin/io/ConsoleKt
       4: ldc           #13                 // String readLine
       6: ldc           #15                 // String readLine()Ljava/lang/String;
       8: iconst_1
       9: invokespecial #18                 // Method kotlin/jvm/internal/FunctionReferenceImpl."<init>":(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
      12: return

  public final java.lang.String invoke();
    Code:
       0: invokestatic  #24                 // Method kotlin/io/ConsoleKt.readLine:()Ljava/lang/String;
       3: areturn

  public java.lang.Object invoke();
    Code:
       0: aload_0
       1: invokevirtual #27                 // Method invoke:()Ljava/lang/String;
       4: areturn

  static {};
    Code:
       0: new           #2                  // class Droplets$readInput$1
       3: dup
       4: invokespecial #30                 // Method "<init>":()V
       7: putstatic     #33                 // Field INSTANCE:LDroplets$readInput$1;
      10: return
}

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

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

  public final void solve();
    Code:
       0: aload_0
       1: invokespecial #15                 // Method readInput:()Ljava/util/List;
       4: astore_1
       5: new           #17                 // class Droplets$Droplet
       8: dup
       9: aload_1
      10: invokespecial #20                 // Method Droplets$Droplet."<init>":(Ljava/util/List;)V
      13: astore_2
      14: new           #22                 // class java/lang/StringBuilder
      17: dup
      18: invokespecial #23                 // Method java/lang/StringBuilder."<init>":()V
      21: ldc           #25                 // String total surface area
      23: invokevirtual #29                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      26: aload_2
      27: invokevirtual #33                 // Method Droplets$Droplet.surfaceArea1:()I
      30: invokevirtual #36                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      33: invokevirtual #40                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      36: getstatic     #46                 // Field java/lang/System.out:Ljava/io/PrintStream;
      39: swap
      40: invokevirtual #52                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
      43: new           #22                 // class java/lang/StringBuilder
      46: dup
      47: invokespecial #23                 // Method java/lang/StringBuilder."<init>":()V
      50: ldc           #54                 // String outside surface area
      52: invokevirtual #29                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      55: aload_2
      56: invokevirtual #57                 // Method Droplets$Droplet.surfaceArea2:()I
      59: invokevirtual #36                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      62: invokevirtual #40                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      65: getstatic     #46                 // Field java/lang/System.out:Ljava/io/PrintStream;
      68: swap
      69: invokevirtual #52                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
      72: return

  private final java.util.List<Droplets$Pos> readInput();
    Code:
       0: getstatic     #68                 // Field Droplets$readInput$1.INSTANCE:LDroplets$readInput$1;
       3: checkcast     #70                 // class kotlin/jvm/functions/Function0
       6: invokestatic  #76                 // Method kotlin/sequences/SequencesKt.generateSequence:(Lkotlin/jvm/functions/Function0;)Lkotlin/sequences/Sequence;
       9: invokedynamic #95,  0             // InvokeDynamic #0:invoke:()Lkotlin/jvm/functions/Function1;
      14: invokestatic  #99                 // Method kotlin/sequences/SequencesKt.map:(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence;
      17: invokestatic  #103                // Method kotlin/sequences/SequencesKt.toList:(Lkotlin/sequences/Sequence;)Ljava/util/List;
      20: areturn

  private static final Droplets$Pos readInput$lambda$1(java.lang.String);
    Code:
       0: aload_0
       1: ldc           #105                // String it
       3: invokestatic  #111                // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: checkcast     #113                // class java/lang/CharSequence
      10: iconst_1
      11: anewarray     #115                // class java/lang/String
      14: astore_2
      15: aload_2
      16: iconst_0
      17: ldc           #117                // String ,
      19: aastore
      20: aload_2
      21: iconst_0
      22: iconst_0
      23: bipush        6
      25: aconst_null
      26: invokestatic  #123                // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      29: checkcast     #125                // class java/lang/Iterable
      32: astore_2
      33: iconst_0
      34: istore_3
      35: aload_2
      36: astore        4
      38: new           #127                // class java/util/ArrayList
      41: dup
      42: aload_2
      43: bipush        10
      45: invokestatic  #133                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      48: invokespecial #136                // Method java/util/ArrayList."<init>":(I)V
      51: checkcast     #138                // class java/util/Collection
      54: astore        5
      56: iconst_0
      57: istore        6
      59: aload         4
      61: invokeinterface #142,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      66: astore        7
      68: aload         7
      70: invokeinterface #148,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      75: ifeq          127
      78: aload         7
      80: invokeinterface #152,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      85: astore        8
      87: aload         5
      89: aload         8
      91: checkcast     #115                // class java/lang/String
      94: astore        9
      96: astore        11
      98: iconst_0
      99: istore        10
     101: aload         9
     103: bipush        10
     105: invokestatic  #158                // Method kotlin/text/CharsKt.checkRadix:(I)I
     108: invokestatic  #164                // Method java/lang/Integer.parseInt:(Ljava/lang/String;I)I
     111: nop
     112: invokestatic  #168                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     115: aload         11
     117: swap
     118: invokeinterface #172,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     123: pop
     124: goto          68
     127: aload         5
     129: checkcast     #174                // class java/util/List
     132: nop
     133: astore_1
     134: new           #176                // class Droplets$Pos
     137: dup
     138: aload_1
     139: iconst_0
     140: invokeinterface #180,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     145: checkcast     #182                // class java/lang/Number
     148: invokevirtual #185                // Method java/lang/Number.intValue:()I
     151: aload_1
     152: iconst_1
     153: invokeinterface #180,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     158: checkcast     #182                // class java/lang/Number
     161: invokevirtual #185                // Method java/lang/Number.intValue:()I
     164: aload_1
     165: iconst_2
     166: invokeinterface #180,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     171: checkcast     #182                // class java/lang/Number
     174: invokevirtual #185                // Method java/lang/Number.intValue:()I
     177: invokespecial #188                // Method Droplets$Pos."<init>":(III)V
     180: areturn

  static {};
    Code:
       0: new           #2                  // class Droplets
       3: dup
       4: invokespecial #203                // Method "<init>":()V
       7: putstatic     #205                // Field INSTANCE:LDroplets;
      10: return
}

Compiled from "Droplets.kt"
public final class Droplets$Droplet {
  private final java.util.List<Droplets$Pos> points;

  public Droplets$Droplet(java.util.List<Droplets$Pos>);
    Code:
       0: aload_1
       1: ldc           #10                 // String points
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokespecial #19                 // Method java/lang/Object."<init>":()V
      10: aload_0
      11: aload_1
      12: putfield      #22                 // Field points:Ljava/util/List;
      15: return

  public final java.util.List<Droplets$Pos> getPoints();
    Code:
       0: aload_0
       1: getfield      #22                 // Field points:Ljava/util/List;
       4: areturn

  public final int surfaceArea1();
    Code:
       0: iconst_0
       1: istore_1
       2: aload_0
       3: getfield      #22                 // Field points:Ljava/util/List;
       6: checkcast     #31                 // class java/lang/Iterable
       9: invokestatic  #37                 // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
      12: astore_2
      13: aload_0
      14: getfield      #22                 // Field points:Ljava/util/List;
      17: invokeinterface #43,  1           // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
      22: astore_3
      23: aload_3
      24: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      29: ifeq          170
      32: aload_3
      33: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      38: checkcast     #55                 // class Droplets$Pos
      41: astore        4
      43: iload_1
      44: bipush        6
      46: aload         4
      48: invokevirtual #58                 // Method Droplets$Pos.sides:()Ljava/util/List;
      51: checkcast     #31                 // class java/lang/Iterable
      54: astore        5
      56: istore        13
      58: istore        12
      60: iconst_0
      61: istore        6
      63: aload         5
      65: instanceof    #60                 // class java/util/Collection
      68: ifeq          88
      71: aload         5
      73: checkcast     #60                 // class java/util/Collection
      76: invokeinterface #63,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
      81: ifeq          88
      84: iconst_0
      85: goto          156
      88: iconst_0
      89: istore        7
      91: aload         5
      93: invokeinterface #64,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      98: astore        8
     100: aload         8
     102: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     107: ifeq          154
     110: aload         8
     112: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     117: astore        9
     119: aload         9
     121: checkcast     #55                 // class Droplets$Pos
     124: astore        10
     126: iconst_0
     127: istore        11
     129: aload_2
     130: aload         10
     132: invokeinterface #70,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     137: ifeq          100
     140: iinc          7, 1
     143: iload         7
     145: ifge          100
     148: invokestatic  #73                 // Method kotlin/collections/CollectionsKt.throwCountOverflow:()V
     151: goto          100
     154: iload         7
     156: istore        14
     158: iload         12
     160: iload         13
     162: iload         14
     164: isub
     165: iadd
     166: istore_1
     167: goto          23
     170: iload_1
     171: ireturn

  public final int surfaceArea2();
    Code:
       0: aload_0
       1: getfield      #22                 // Field points:Ljava/util/List;
       4: checkcast     #31                 // class java/lang/Iterable
       7: invokeinterface #64,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      12: astore_3
      13: aload_3
      14: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      19: ifne          30
      22: new           #90                 // class java/util/NoSuchElementException
      25: dup
      26: invokespecial #91                 // Method java/util/NoSuchElementException."<init>":()V
      29: athrow
      30: aload_3
      31: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      36: checkcast     #55                 // class Droplets$Pos
      39: astore        4
      41: iconst_0
      42: istore        5
      44: aload         4
      46: invokevirtual #94                 // Method Droplets$Pos.getX:()I
      49: istore        4
      51: aload_3
      52: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      57: ifeq          95
      60: aload_3
      61: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      66: checkcast     #55                 // class Droplets$Pos
      69: astore        5
      71: iconst_0
      72: istore        6
      74: aload         5
      76: invokevirtual #94                 // Method Droplets$Pos.getX:()I
      79: istore        5
      81: iload         4
      83: iload         5
      85: if_icmple     51
      88: iload         5
      90: istore        4
      92: goto          51
      95: iload         4
      97: istore_1
      98: aload_0
      99: getfield      #22                 // Field points:Ljava/util/List;
     102: checkcast     #31                 // class java/lang/Iterable
     105: invokeinterface #64,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     110: astore        4
     112: aload         4
     114: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     119: ifne          130
     122: new           #90                 // class java/util/NoSuchElementException
     125: dup
     126: invokespecial #91                 // Method java/util/NoSuchElementException."<init>":()V
     129: athrow
     130: aload         4
     132: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     137: checkcast     #55                 // class Droplets$Pos
     140: astore        5
     142: iconst_0
     143: istore        6
     145: aload         5
     147: invokevirtual #94                 // Method Droplets$Pos.getX:()I
     150: istore        5
     152: aload         4
     154: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     159: ifeq          198
     162: aload         4
     164: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     169: checkcast     #55                 // class Droplets$Pos
     172: astore        6
     174: iconst_0
     175: istore        7
     177: aload         6
     179: invokevirtual #94                 // Method Droplets$Pos.getX:()I
     182: istore        6
     184: iload         5
     186: iload         6
     188: if_icmpge     152
     191: iload         6
     193: istore        5
     195: goto          152
     198: iload         5
     200: istore_2
     201: aload_0
     202: getfield      #22                 // Field points:Ljava/util/List;
     205: checkcast     #31                 // class java/lang/Iterable
     208: invokeinterface #64,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     213: astore        5
     215: aload         5
     217: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     222: ifne          233
     225: new           #90                 // class java/util/NoSuchElementException
     228: dup
     229: invokespecial #91                 // Method java/util/NoSuchElementException."<init>":()V
     232: athrow
     233: aload         5
     235: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     240: checkcast     #55                 // class Droplets$Pos
     243: astore        6
     245: iconst_0
     246: istore        7
     248: aload         6
     250: invokevirtual #97                 // Method Droplets$Pos.getY:()I
     253: istore        6
     255: aload         5
     257: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     262: ifeq          301
     265: aload         5
     267: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     272: checkcast     #55                 // class Droplets$Pos
     275: astore        7
     277: iconst_0
     278: istore        8
     280: aload         7
     282: invokevirtual #97                 // Method Droplets$Pos.getY:()I
     285: istore        7
     287: iload         6
     289: iload         7
     291: if_icmple     255
     294: iload         7
     296: istore        6
     298: goto          255
     301: iload         6
     303: istore_3
     304: aload_0
     305: getfield      #22                 // Field points:Ljava/util/List;
     308: checkcast     #31                 // class java/lang/Iterable
     311: invokeinterface #64,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     316: astore        6
     318: aload         6
     320: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     325: ifne          336
     328: new           #90                 // class java/util/NoSuchElementException
     331: dup
     332: invokespecial #91                 // Method java/util/NoSuchElementException."<init>":()V
     335: athrow
     336: aload         6
     338: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     343: checkcast     #55                 // class Droplets$Pos
     346: astore        7
     348: iconst_0
     349: istore        8
     351: aload         7
     353: invokevirtual #97                 // Method Droplets$Pos.getY:()I
     356: istore        7
     358: aload         6
     360: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     365: ifeq          404
     368: aload         6
     370: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     375: checkcast     #55                 // class Droplets$Pos
     378: astore        8
     380: iconst_0
     381: istore        9
     383: aload         8
     385: invokevirtual #97                 // Method Droplets$Pos.getY:()I
     388: istore        8
     390: iload         7
     392: iload         8
     394: if_icmpge     358
     397: iload         8
     399: istore        7
     401: goto          358
     404: iload         7
     406: istore        4
     408: aload_0
     409: getfield      #22                 // Field points:Ljava/util/List;
     412: checkcast     #31                 // class java/lang/Iterable
     415: invokeinterface #64,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     420: astore        7
     422: aload         7
     424: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     429: ifne          440
     432: new           #90                 // class java/util/NoSuchElementException
     435: dup
     436: invokespecial #91                 // Method java/util/NoSuchElementException."<init>":()V
     439: athrow
     440: aload         7
     442: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     447: checkcast     #55                 // class Droplets$Pos
     450: astore        8
     452: iconst_0
     453: istore        9
     455: aload         8
     457: invokevirtual #100                // Method Droplets$Pos.getZ:()I
     460: istore        8
     462: aload         7
     464: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     469: ifeq          508
     472: aload         7
     474: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     479: checkcast     #55                 // class Droplets$Pos
     482: astore        9
     484: iconst_0
     485: istore        10
     487: aload         9
     489: invokevirtual #100                // Method Droplets$Pos.getZ:()I
     492: istore        9
     494: iload         8
     496: iload         9
     498: if_icmple     462
     501: iload         9
     503: istore        8
     505: goto          462
     508: iload         8
     510: istore        5
     512: aload_0
     513: getfield      #22                 // Field points:Ljava/util/List;
     516: checkcast     #31                 // class java/lang/Iterable
     519: invokeinterface #64,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     524: astore        8
     526: aload         8
     528: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     533: ifne          544
     536: new           #90                 // class java/util/NoSuchElementException
     539: dup
     540: invokespecial #91                 // Method java/util/NoSuchElementException."<init>":()V
     543: athrow
     544: aload         8
     546: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     551: checkcast     #55                 // class Droplets$Pos
     554: astore        9
     556: iconst_0
     557: istore        10
     559: aload         9
     561: invokevirtual #100                // Method Droplets$Pos.getZ:()I
     564: istore        9
     566: aload         8
     568: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     573: ifeq          612
     576: aload         8
     578: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     583: checkcast     #55                 // class Droplets$Pos
     586: astore        10
     588: iconst_0
     589: istore        11
     591: aload         10
     593: invokevirtual #100                // Method Droplets$Pos.getZ:()I
     596: istore        10
     598: iload         9
     600: iload         10
     602: if_icmpge     566
     605: iload         10
     607: istore        9
     609: goto          566
     612: iload         9
     614: istore        6
     616: new           #102                // class kotlin/ranges/IntRange
     619: dup
     620: iload_1
     621: iconst_1
     622: isub
     623: iload_2
     624: iconst_1
     625: iadd
     626: invokespecial #105                // Method kotlin/ranges/IntRange."<init>":(II)V
     629: astore        7
     631: new           #102                // class kotlin/ranges/IntRange
     634: dup
     635: iload_3
     636: iconst_1
     637: isub
     638: iload         4
     640: iconst_1
     641: iadd
     642: invokespecial #105                // Method kotlin/ranges/IntRange."<init>":(II)V
     645: astore        8
     647: new           #102                // class kotlin/ranges/IntRange
     650: dup
     651: iload         5
     653: iconst_1
     654: isub
     655: iload         6
     657: iconst_1
     658: iadd
     659: invokespecial #105                // Method kotlin/ranges/IntRange."<init>":(II)V
     662: astore        9
     664: new           #107                // class java/lang/StringBuilder
     667: dup
     668: invokespecial #108                // Method java/lang/StringBuilder."<init>":()V
     671: aload         7
     673: invokevirtual #112                // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     676: bipush        32
     678: invokevirtual #115                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
     681: aload         8
     683: invokevirtual #112                // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     686: bipush        32
     688: invokevirtual #115                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
     691: aload         9
     693: invokevirtual #112                // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     696: invokevirtual #119                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     699: getstatic     #125                // Field java/lang/System.out:Ljava/io/PrintStream;
     702: swap
     703: invokevirtual #131                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     706: new           #133                // class java/util/LinkedHashSet
     709: dup
     710: invokespecial #134                // Method java/util/LinkedHashSet."<init>":()V
     713: checkcast     #66                 // class java/util/Set
     716: astore        10
     718: aload_0
     719: getfield      #22                 // Field points:Ljava/util/List;
     722: checkcast     #31                 // class java/lang/Iterable
     725: invokestatic  #37                 // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
     728: astore        11
     730: iconst_1
     731: anewarray     #55                 // class Droplets$Pos
     734: astore        13
     736: aload         13
     738: iconst_0
     739: new           #55                 // class Droplets$Pos
     742: dup
     743: aload         7
     745: invokevirtual #138                // Method kotlin/ranges/IntRange.getStart:()Ljava/lang/Integer;
     748: invokevirtual #143                // Method java/lang/Integer.intValue:()I
     751: aload         8
     753: invokevirtual #138                // Method kotlin/ranges/IntRange.getStart:()Ljava/lang/Integer;
     756: invokevirtual #143                // Method java/lang/Integer.intValue:()I
     759: aload         9
     761: invokevirtual #138                // Method kotlin/ranges/IntRange.getStart:()Ljava/lang/Integer;
     764: invokevirtual #143                // Method java/lang/Integer.intValue:()I
     767: invokespecial #146                // Method Droplets$Pos."<init>":(III)V
     770: aastore
     771: aload         13
     773: invokestatic  #150                // Method kotlin/collections/CollectionsKt.mutableListOf:([Ljava/lang/Object;)Ljava/util/List;
     776: astore        12
     778: aload         12
     780: checkcast     #60                 // class java/util/Collection
     783: invokeinterface #63,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
     788: ifne          795
     791: iconst_1
     792: goto          796
     795: iconst_0
     796: ifeq          1111
     799: aload         12
     801: invokeinterface #153,  1          // InterfaceMethod java/util/List.removeFirst:()Ljava/lang/Object;
     806: dup
     807: ldc           #155                // String removeFirst(...)
     809: invokestatic  #158                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     812: checkcast     #55                 // class Droplets$Pos
     815: astore        13
     817: aload         11
     819: aload         13
     821: invokeinterface #70,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     826: ifne          841
     829: aload         10
     831: aload         13
     833: invokeinterface #70,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     838: ifeq          844
     841: goto          778
     844: aload         10
     846: aload         13
     848: invokeinterface #161,  2          // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z
     853: pop
     854: aload         12
     856: aload         13
     858: invokevirtual #58                 // Method Droplets$Pos.sides:()Ljava/util/List;
     861: checkcast     #31                 // class java/lang/Iterable
     864: astore        14
     866: astore        26
     868: iconst_0
     869: istore        15
     871: aload         14
     873: astore        16
     875: new           #163                // class java/util/ArrayList
     878: dup
     879: invokespecial #164                // Method java/util/ArrayList."<init>":()V
     882: checkcast     #60                 // class java/util/Collection
     885: astore        17
     887: iconst_0
     888: istore        18
     890: aload         16
     892: invokeinterface #64,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     897: astore        19
     899: aload         19
     901: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     906: ifeq          1090
     909: aload         19
     911: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     916: astore        20
     918: aload         20
     920: checkcast     #55                 // class Droplets$Pos
     923: astore        21
     925: iconst_0
     926: istore        22
     928: aload         7
     930: invokevirtual #167                // Method kotlin/ranges/IntRange.getFirst:()I
     933: istore        23
     935: aload         7
     937: invokevirtual #170                // Method kotlin/ranges/IntRange.getLast:()I
     940: istore        24
     942: aload         21
     944: invokevirtual #94                 // Method Droplets$Pos.getX:()I
     947: istore        25
     949: iload         23
     951: iload         25
     953: if_icmpgt     971
     956: iload         25
     958: iload         24
     960: if_icmpgt     967
     963: iconst_1
     964: goto          972
     967: iconst_0
     968: goto          972
     971: iconst_0
     972: ifeq          1073
     975: aload         8
     977: invokevirtual #167                // Method kotlin/ranges/IntRange.getFirst:()I
     980: istore        23
     982: aload         8
     984: invokevirtual #170                // Method kotlin/ranges/IntRange.getLast:()I
     987: istore        24
     989: aload         21
     991: invokevirtual #97                 // Method Droplets$Pos.getY:()I
     994: istore        25
     996: iload         23
     998: iload         25
    1000: if_icmpgt     1018
    1003: iload         25
    1005: iload         24
    1007: if_icmpgt     1014
    1010: iconst_1
    1011: goto          1019
    1014: iconst_0
    1015: goto          1019
    1018: iconst_0
    1019: ifeq          1073
    1022: aload         9
    1024: invokevirtual #167                // Method kotlin/ranges/IntRange.getFirst:()I
    1027: istore        23
    1029: aload         9
    1031: invokevirtual #170                // Method kotlin/ranges/IntRange.getLast:()I
    1034: istore        24
    1036: aload         21
    1038: invokevirtual #100                // Method Droplets$Pos.getZ:()I
    1041: istore        25
    1043: iload         23
    1045: iload         25
    1047: if_icmpgt     1065
    1050: iload         25
    1052: iload         24
    1054: if_icmpgt     1061
    1057: iconst_1
    1058: goto          1066
    1061: iconst_0
    1062: goto          1066
    1065: iconst_0
    1066: ifeq          1073
    1069: iconst_1
    1070: goto          1074
    1073: iconst_0
    1074: ifeq          899
    1077: aload         17
    1079: aload         20
    1081: invokeinterface #171,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1086: pop
    1087: goto          899
    1090: aload         17
    1092: checkcast     #39                 // class java/util/List
    1095: nop
    1096: aload         26
    1098: swap
    1099: checkcast     #60                 // class java/util/Collection
    1102: invokeinterface #175,  2          // InterfaceMethod java/util/List.addAll:(Ljava/util/Collection;)Z
    1107: pop
    1108: goto          778
    1111: iconst_0
    1112: istore        13
    1114: aload         11
    1116: invokeinterface #176,  1          // InterfaceMethod java/util/Set.iterator:()Ljava/util/Iterator;
    1121: astore        14
    1123: aload         14
    1125: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1130: ifeq          1268
    1133: aload         14
    1135: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1140: checkcast     #55                 // class Droplets$Pos
    1143: astore        15
    1145: iload         13
    1147: aload         15
    1149: invokevirtual #58                 // Method Droplets$Pos.sides:()Ljava/util/List;
    1152: checkcast     #31                 // class java/lang/Iterable
    1155: astore        16
    1157: istore        26
    1159: iconst_0
    1160: istore        17
    1162: aload         16
    1164: instanceof    #60                 // class java/util/Collection
    1167: ifeq          1187
    1170: aload         16
    1172: checkcast     #60                 // class java/util/Collection
    1175: invokeinterface #63,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
    1180: ifeq          1187
    1183: iconst_0
    1184: goto          1256
    1187: iconst_0
    1188: istore        18
    1190: aload         16
    1192: invokeinterface #64,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1197: astore        19
    1199: aload         19
    1201: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1206: ifeq          1254
    1209: aload         19
    1211: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1216: astore        20
    1218: aload         20
    1220: checkcast     #55                 // class Droplets$Pos
    1223: astore        21
    1225: iconst_0
    1226: istore        22
    1228: aload         10
    1230: aload         21
    1232: invokeinterface #70,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
    1237: ifeq          1199
    1240: iinc          18, 1
    1243: iload         18
    1245: ifge          1199
    1248: invokestatic  #73                 // Method kotlin/collections/CollectionsKt.throwCountOverflow:()V
    1251: goto          1199
    1254: iload         18
    1256: istore        27
    1258: iload         26
    1260: iload         27
    1262: iadd
    1263: istore        13
    1265: goto          1123
    1268: iload         13
    1270: ireturn
}