public class Util
{
    public static final int OFFSET = 7;
    public static final int REPEAT_SIZE = 10000;
    
    public static int[] convert (String input)
    {
        int[] result = new int[input.length()];
        char[] sequence = input.toCharArray();

        for (int i = 0; i < result.length; i++)
        {
            result[i] = Character.getNumericValue(sequence[i]);
        }

        return result;
    }

    public static int[] replicate (String input, int times)
    {
        int[] data = convert(input);
        int[] toReturn = new int[data.length * times];
        int index = 0;

        for (int i = 0; i < times; i++)
        {
            System.arraycopy(data, 0, toReturn, index, data.length);

            index += data.length;
        }

        return toReturn;
    }

    public static int[] offset (String input)
    {
        int[] data = convert(input);
        int[] offset = new int[OFFSET];

        for (int i = 0; i < OFFSET; i++)
        {
            offset[i] = data[i];
        }

        return offset;
    }

    private Util ()
    {
    }
    
}
@@ -106,16 +106,100 @@
 00;%0A    
+public static final int PHASES = 100;%0A    public static final int MESSAGE_SIZE = 8;%0A
 %0A    pub
@@ -900,21 +900,20 @@
  static 
-int%5B%5D
+long
  offset 
@@ -982,38 +982,58 @@
     
-int%5B%5D
+String
  offset
- = new int%5B
+Str = input.substring(0, Util.
 OFFSET
-%5D
+)
 ;%0A%0A 
@@ -1043,94 +1043,113 @@
     
-for (int i = 0; i %3C OFFSET; i++)%0A        %7B%0A            offset%5Bi%5D = data%5Bi%5D;%0A        %7D%0A
+return Long.parseLong(offsetStr);%0A    %7D%0A%0A    public static int%5B%5D message (int%5B%5D input, long offset)%0A    %7B
 %0A   
@@ -1160,22 +1160,20 @@
  return 
-offset
+null
 ;%0A    %7D%0A

Update Util.java