import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.lang.reflect.Field;
import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.function.ToIntFunction;
 
class Generator {
        ToIntFunction
<Thread
> ft
=generateIntFieldAccessor
(Thread.
class, 
"threadStatus");    }
 
    private static <X> ToIntFunction<X> generateIntFieldAccessor(
 
        byte[] code = Generator.generateIntReaderCode(c.getDeclaredField(name));
        Class<?> unsafe = Class.forName("sun.misc.Unsafe");
        Field u 
= unsafe.
getDeclaredField("theUnsafe");         u.setAccessible(true);
        Object theUnsafe 
= u.
get(null);         Class<ToIntFunction<X>> gen = (Class<ToIntFunction<X>>)
            MethodHandles.publicLookup().bind(theUnsafe, "defineAnonymousClass",
                 MethodType.methodType(
                     Class.
class, 
Class.
class, 
byte[].
class, 
Object[].
class))                 .
invokeExact(c, code, 
(Object[])null);        return gen.getConstructor().newInstance();
    }
 
    private static final String HEAD 
= "Êþº¾\0\0\0004\0\24\7\0\21\7\0\t\7\0\n\7\0\22"         + "\n\0\2\0\6\f\0\13\0\f\t\0\4\0\b\f\0\23\0\20\1\0\20java/lang/Object\1\0\40"
        + "java/util/function/ToIntFunction\1\0\6<init>\1\0\3()V\1\0\4Code\1\0\n"
        + "applyAsInt\1\0\25(Ljava/lang/Object;)I\1\0\1I";
    private static final String TAIL 
= "\0001\0\1\0\2\0\1\0\3\0\0\0\2\0\1\0\13\0\f\0"         + "\1\0\r\0\0\0\21\0\1\0\1\0\0\0\5*·\0\5±\0\0\0\0\0\21\0\16\0\17\0\1\0\r\0\0"
        + "\0\24\0\1\0\2\0\0\0\b+À\0\4´\0\7¬\0\0\0\0\0\0";
 
    public static byte[] generateIntReaderCode
(Field f
) {             @SuppressWarnings("deprecation") byte[] get() {
                HEAD.getBytes(0, count = HEAD.length(), buf, 0);
                    String decl 
= f.
getDeclaringClass().
getName().
replace('.', 
'/');                     dos.writeByte(1); dos.writeUTF(decl+"$"+f.getName()+"$access");
                    dos.writeByte(1); dos.writeUTF(decl);
                    dos.writeByte(1); dos.writeUTF(f.getName());
                    throw new UncheckedIOException(ex);
                }
                int dynSize = count;
                byte[] result 
= Arrays.
copyOf(buf, dynSize 
+ TAIL.
length());                 TAIL.getBytes(0, TAIL.length(), result, dynSize);
                return result;
            }
        }.get();
    }
}
				aW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtOwppbXBvcnQgamF2YS5pby5EYXRhT3V0cHV0U3RyZWFtOwppbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKaW1wb3J0IGphdmEuaW8uVW5jaGVja2VkSU9FeGNlcHRpb247CmltcG9ydCBqYXZhLmxhbmcuaW52b2tlLk1ldGhvZEhhbmRsZXM7CmltcG9ydCBqYXZhLmxhbmcuaW52b2tlLk1ldGhvZFR5cGU7CmltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5GaWVsZDsKaW1wb3J0IGphdmEubmlvLkJ5dGVCdWZmZXI7CmltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwppbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLlRvSW50RnVuY3Rpb247CgpjbGFzcyBHZW5lcmF0b3IgewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIFRocm93YWJsZSB7CiAgICAgICAgVG9JbnRGdW5jdGlvbjxUaHJlYWQ+IGZ0PWdlbmVyYXRlSW50RmllbGRBY2Nlc3NvcihUaHJlYWQuY2xhc3MsICJ0aHJlYWRTdGF0dXMiKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZnQuYXBwbHlBc0ludChUaHJlYWQuY3VycmVudFRocmVhZCgpKSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgPFg+IFRvSW50RnVuY3Rpb248WD4gZ2VuZXJhdGVJbnRGaWVsZEFjY2Vzc29yKAogICAgICAgIENsYXNzPD8gc3VwZXIgWD4gYywgU3RyaW5nIG5hbWUpIHRocm93cyBUaHJvd2FibGUgewoKICAgICAgICBieXRlW10gY29kZSA9IEdlbmVyYXRvci5nZW5lcmF0ZUludFJlYWRlckNvZGUoYy5nZXREZWNsYXJlZEZpZWxkKG5hbWUpKTsKICAgICAgICBDbGFzczw/PiB1bnNhZmUgPSBDbGFzcy5mb3JOYW1lKCJzdW4ubWlzYy5VbnNhZmUiKTsKICAgICAgICBGaWVsZCB1ID0gdW5zYWZlLmdldERlY2xhcmVkRmllbGQoInRoZVVuc2FmZSIpOwogICAgICAgIHUuc2V0QWNjZXNzaWJsZSh0cnVlKTsKICAgICAgICBPYmplY3QgdGhlVW5zYWZlID0gdS5nZXQobnVsbCk7CiAgICAgICAgQ2xhc3M8VG9JbnRGdW5jdGlvbjxYPj4gZ2VuID0gKENsYXNzPFRvSW50RnVuY3Rpb248WD4+KQogICAgICAgICAgICBNZXRob2RIYW5kbGVzLnB1YmxpY0xvb2t1cCgpLmJpbmQodGhlVW5zYWZlLCAiZGVmaW5lQW5vbnltb3VzQ2xhc3MiLAogICAgICAgICAgICAgICAgIE1ldGhvZFR5cGUubWV0aG9kVHlwZSgKICAgICAgICAgICAgICAgICAgICAgQ2xhc3MuY2xhc3MsIENsYXNzLmNsYXNzLCBieXRlW10uY2xhc3MsIE9iamVjdFtdLmNsYXNzKSkKICAgICAgICAgICAgICAgIC5pbnZva2VFeGFjdChjLCBjb2RlLCAoT2JqZWN0W10pbnVsbCk7CiAgICAgICAgcmV0dXJuIGdlbi5nZXRDb25zdHJ1Y3RvcigpLm5ld0luc3RhbmNlKCk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQUQgPSAiw4rDvsK6wr5cMFwwXDAwMDRcMFwyNFw3XDBcMjFcN1wwXHRcN1wwXG5cN1wwXDIyIgogICAgICAgICsgIlxuXDBcMlwwXDZcZlwwXDEzXDBcZlx0XDBcNFwwXGJcZlwwXDIzXDBcMjBcMVwwXDIwamF2YS9sYW5nL09iamVjdFwxXDBcNDAiCiAgICAgICAgKyAiamF2YS91dGlsL2Z1bmN0aW9uL1RvSW50RnVuY3Rpb25cMVwwXDY8aW5pdD5cMVwwXDMoKVZcMVwwXDRDb2RlXDFcMFxuIgogICAgICAgICsgImFwcGx5QXNJbnRcMVwwXDI1KExqYXZhL2xhbmcvT2JqZWN0OylJXDFcMFwxSSI7CiAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFJTCA9ICJcMDAwMVwwXDFcMFwyXDBcMVwwXDNcMFwwXDBcMlwwXDFcMFwxM1wwXGZcMCIKICAgICAgICArICJcMVwwXHJcMFwwXDBcMjFcMFwxXDBcMVwwXDBcMFw1KsK3XDBcNcKxXDBcMFwwXDBcMFwyMVwwXDE2XDBcMTdcMFwxXDBcclwwXDAiCiAgICAgICAgKyAiXDBcMjRcMFwxXDBcMlwwXDBcMFxiK8OAXDBcNMK0XDBcN8KsXDBcMFwwXDBcMFwwIjsKCiAgICBwdWJsaWMgc3RhdGljIGJ5dGVbXSBnZW5lcmF0ZUludFJlYWRlckNvZGUoRmllbGQgZikgewogICAgICAgIHJldHVybiBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKEhFQUQubGVuZ3RoKCkgKyBUQUlMLmxlbmd0aCgpICsgMTAwKSB7CiAgICAgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJkZXByZWNhdGlvbiIpIGJ5dGVbXSBnZXQoKSB7CiAgICAgICAgICAgICAgICBIRUFELmdldEJ5dGVzKDAsIGNvdW50ID0gSEVBRC5sZW5ndGgoKSwgYnVmLCAwKTsKICAgICAgICAgICAgICAgIHRyeShEYXRhT3V0cHV0U3RyZWFtIGRvcyA9IG5ldyBEYXRhT3V0cHV0U3RyZWFtKHRoaXMpKSB7CiAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGRlY2wgPSBmLmdldERlY2xhcmluZ0NsYXNzKCkuZ2V0TmFtZSgpLnJlcGxhY2UoJy4nLCAnLycpOwogICAgICAgICAgICAgICAgICAgIGRvcy53cml0ZUJ5dGUoMSk7IGRvcy53cml0ZVVURihkZWNsKyIkIitmLmdldE5hbWUoKSsiJGFjY2VzcyIpOwogICAgICAgICAgICAgICAgICAgIGRvcy53cml0ZUJ5dGUoMSk7IGRvcy53cml0ZVVURihkZWNsKTsKICAgICAgICAgICAgICAgICAgICBkb3Mud3JpdGVCeXRlKDEpOyBkb3Mud3JpdGVVVEYoZi5nZXROYW1lKCkpOwogICAgICAgICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5jaGVja2VkSU9FeGNlcHRpb24oZXgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaW50IGR5blNpemUgPSBjb3VudDsKICAgICAgICAgICAgICAgIGJ5dGVbXSByZXN1bHQgPSBBcnJheXMuY29weU9mKGJ1ZiwgZHluU2l6ZSArIFRBSUwubGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgVEFJTC5nZXRCeXRlcygwLCBUQUlMLmxlbmd0aCgpLCByZXN1bHQsIGR5blNpemUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgfQogICAgICAgIH0uZ2V0KCk7CiAgICB9Cn0=