
#ifdef GL_ES
precision lowp float;
#endif

#define N_HIDDEN 16
vec4 bufA[N_HIDDEN/4];
vec4 bufB[N_HIDDEN/2];
vec4 cppn_fn(vec2 coordinate, float in0, float in1, float in2, float in3) {
    vec4 tmp;
    bufB[0] = vec4(coordinate.x, coordinate.y, 0., 0.);

 // layer 0
bufA[0] = vec4(0.405, -0.198, 0.010, 0.438) + mat4(vec4(0.613, -1.955, -1.409, 0.006), vec4(0.442, -0.127, 0.383, -0.466), vec4(0.000, 0.000, 0.000, 0.000), vec4(0.000, 0.000, 0.000, 0.000)) * bufB[0];
bufA[1] = vec4(0.335, -0.245, 0.153, 0.266) + mat4(vec4(0.303, 1.814, 0.008, 0.682), vec4(-0.464, -0.481, 0.607, -1.136), vec4(0.000, 0.000, 0.000, 0.000), vec4(0.000, 0.000, 0.000, 0.000)) * bufB[0];
bufA[2] = vec4(-0.297, 0.034, -0.104, 0.092) + mat4(vec4(0.072, 0.305, -0.642, 0.698), vec4(-0.120, -0.788, -0.056, 0.304), vec4(0.000, 0.000, 0.000, 0.000), vec4(0.000, 0.000, 0.000, 0.000)) * bufB[0];
bufA[3] = vec4(-0.193, -0.177, -0.210, 0.108) + mat4(vec4(0.345, -0.795, 0.873, -0.498), vec4(0.443, -0.264, -0.762, 1.473), vec4(0.000, 0.000, 0.000, 0.000), vec4(0.000, 0.000, 0.000, 0.000)) * bufB[0];
bufB[0] = (max(bufA[0], 0.) - 0.4) / 0.58;
bufB[1] = (max(bufA[1], 0.) - 0.4) / 0.58;
bufB[2] = (max(bufA[2], 0.) - 0.4) / 0.58;
bufB[3] = (max(bufA[3], 0.) - 0.4) / 0.58;

 // layer 1
bufA[0] = vec4(-0.227, -0.220, 0.471, -0.100) + mat4(vec4(0.449, 0.112, 0.259, 0.100), vec4(0.398, -0.566, -0.033, -0.497), vec4(0.374, 0.053, 0.529, -0.129), vec4(-0.381, -0.127, -0.295, -0.277)) * bufB[0] + mat4(vec4(-0.109, -0.083, 0.032, -0.272), vec4(0.157, -0.403, -0.230, 0.099), vec4(-0.295, 0.203, 0.108, 0.270), vec4(0.050, 0.393, 0.025, 0.333)) * bufB[1] + mat4(vec4(-0.226, -0.276, -0.229, 0.099), vec4(0.301, 0.240, -0.389, -0.073), vec4(-0.307, 0.058, -0.092, -0.334), vec4(-0.209, -0.375, -0.159, -0.173)) * bufB[2] + mat4(vec4(-0.131, 0.120, 0.300, 0.035), vec4(-0.550, -0.503, 0.518, 0.414), vec4(0.254, -0.156, 0.210, 0.111), vec4(-0.389, 0.300, 0.759, 0.202)) * bufB[3];
bufA[1] = vec4(-0.163, -0.245, 0.312, 0.055) + mat4(vec4(-0.161, 0.305, 0.010, 0.272), vec4(0.122, 0.185, -0.415, 0.534), vec4(-0.206, -0.248, -0.077, -0.242), vec4(-0.189, -0.088, 0.019, 0.373)) * bufB[0] + mat4(vec4(-0.171, 0.120, 0.379, 0.011), vec4(0.124, 0.249, -0.172, -0.243), vec4(0.216, 0.093, 0.130, -0.387), vec4(-0.223, 0.076, 0.273, -0.051)) * bufB[1] + mat4(vec4(-0.317, 0.061, -0.008, -0.410), vec4(0.002, -0.279, 0.120, 0.226), vec4(-0.306, 0.355, -0.203, 0.084), vec4(0.275, 0.381, -0.345, 0.102)) * bufB[2] + mat4(vec4(0.231, 0.311, 0.036, -0.083), vec4(0.458, -0.131, -0.206, 0.496), vec4(0.206, -0.001, -0.400, 0.371), vec4(0.148, -0.001, 0.165, 0.512)) * bufB[3];
bufA[2] = vec4(0.281, -0.226, -0.310, 0.447) + mat4(vec4(0.475, 0.100, -0.271, 0.103), vec4(0.437, 0.053, 0.130, -0.124), vec4(-0.233, -0.020, -0.344, -0.482), vec4(0.540, 0.048, 0.328, 0.369)) * bufB[0] + mat4(vec4(0.153, -0.339, 0.106, 0.327), vec4(0.245, 0.458, 0.220, -0.237), vec4(0.002, 0.033, 0.256, -0.162), vec4(0.049, 0.018, 0.315, 0.238)) * bufB[1] + mat4(vec4(-0.064, -0.106, 0.188, -0.124), vec4(0.116, -0.110, 0.305, 0.799), vec4(0.347, 0.165, -0.011, 0.202), vec4(0.287, 0.423, -0.182, -0.498)) * bufB[2] + mat4(vec4(-0.354, 0.468, -0.212, 0.058), vec4(-0.143, -0.060, 0.341, 0.009), vec4(-0.315, -0.220, 0.558, 0.071), vec4(-0.044, -0.081, -0.050, 0.069)) * bufB[3];
bufA[3] = vec4(-0.053, 0.415, -0.178, 0.411) + mat4(vec4(0.434, 0.021, -0.398, 0.104), vec4(0.105, -0.330, -0.417, -0.255), vec4(0.055, 0.083, -0.017, 0.328), vec4(-0.195, -0.152, -0.393, -0.000)) * bufB[0] + mat4(vec4(-0.106, -0.083, -0.348, 0.011), vec4(0.135, 0.020, -0.026, 0.585), vec4(-0.086, 0.224, -0.005, 0.112), vec4(0.073, 0.079, -0.183, -0.317)) * bufB[1] + mat4(vec4(0.013, 0.331, -0.205, -0.276), vec4(-0.371, -0.249, -0.422, 0.246), vec4(0.217, 0.405, -0.089, -0.039), vec4(0.487, 0.462, -0.296, -0.308)) * bufB[2] + mat4(vec4(-0.239, -0.308, 0.158, -0.168), vec4(-0.046, 0.193, 0.292, -0.137), vec4(0.097, -0.034, 0.156, 0.102), vec4(0.206, -0.045, 0.223, 0.166)) * bufB[3];
bufB[0] = (max(bufA[0], 0.) - 0.4) / 0.58;
bufB[1] = (max(bufA[1], 0.) - 0.4) / 0.58;
bufB[2] = (max(bufA[2], 0.) - 0.4) / 0.58;
bufB[3] = (max(bufA[3], 0.) - 0.4) / 0.58;

 // layer 2
bufA[0] = vec4(-0.481, 0.314, -0.351, -0.215) + mat4(vec4(0.341, 0.008, 0.337, 0.020), vec4(0.016, -0.104, 0.479, 0.099), vec4(-0.120, -0.151, 0.229, 0.079), vec4(0.457, 0.025, -0.534, -0.216)) * bufB[0] + mat4(vec4(-0.093, 0.232, 0.576, 0.237), vec4(0.568, -0.368, 0.173, -0.052), vec4(-0.276, 0.120, 0.137, 0.085), vec4(0.253, -0.145, 0.110, -0.435)) * bufB[1] + mat4(vec4(0.214, 0.053, 0.584, -0.089), vec4(0.053, -0.053, 0.123, 0.256), vec4(0.114, -0.253, -0.390, -0.042), vec4(-0.267, 0.260, 0.120, -0.308)) * bufB[2] + mat4(vec4(0.200, -0.456, 0.070, -0.134), vec4(0.457, 0.261, -0.143, 0.164), vec4(0.455, -0.188, -0.241, 0.073), vec4(-0.017, 0.069, 0.348, 0.114)) * bufB[3];
bufA[1] = vec4(-0.057, -0.128, 0.539, -0.087) + mat4(vec4(0.445, -0.406, -0.420, -0.111), vec4(-0.190, 0.335, 0.137, -0.031), vec4(0.303, -0.064, 0.000, -0.082), vec4(0.069, -0.086, 0.191, 0.366)) * bufB[0] + mat4(vec4(0.044, 0.539, -0.418, -0.025), vec4(-0.186, 0.284, 0.286, 0.176), vec4(0.038, -0.154, 0.021, -0.466), vec4(0.402, -0.234, 0.230, 0.511)) * bufB[1] + mat4(vec4(0.068, -0.240, 0.087, -0.004), vec4(-0.258, -0.250, 0.068, -0.280), vec4(-0.284, 0.370, 0.066, 0.118), vec4(0.174, -0.261, 0.239, 0.237)) * bufB[2] + mat4(vec4(-0.266, 0.446, 0.375, 0.056), vec4(-0.127, -0.202, 0.055, 0.126), vec4(-0.090, -0.088, 0.137, 0.029), vec4(0.162, -0.150, 0.129, -0.089)) * bufB[3];
bufA[2] = vec4(-0.421, 0.165, 0.113, 0.360) + mat4(vec4(-0.064, -0.133, 0.024, -0.400), vec4(-0.208, 0.229, 0.052, -0.121), vec4(-0.255, -0.324, 0.136, -0.155), vec4(-0.349, 0.041, -0.258, 0.234)) * bufB[0] + mat4(vec4(-0.095, -0.171, 0.246, -0.128), vec4(0.055, 0.108, -0.208, -0.143), vec4(0.075, 0.033, -0.085, -0.340), vec4(-0.103, -0.202, -0.233, -0.149)) * bufB[1] + mat4(vec4(0.442, -0.082, 0.068, -0.012), vec4(0.024, 0.037, -0.209, -0.019), vec4(-0.120, -0.135, 0.631, -0.028), vec4(-0.002, -0.131, -0.062, 0.109)) * bufB[2] + mat4(vec4(-0.133, -0.006, -0.078, -0.501), vec4(-0.133, 0.001, -0.254, -0.060), vec4(-0.166, 0.120, -0.225, -0.097), vec4(0.117, -0.333, 0.275, 0.221)) * bufB[3];
bufA[3] = vec4(-0.002, 0.502, 0.498, 0.130) + mat4(vec4(-0.303, -0.023, 0.324, -0.061), vec4(-0.088, 0.270, 0.051, 0.089), vec4(-0.373, -0.374, -0.402, -0.113), vec4(0.496, 0.063, 0.158, -0.100)) * bufB[0] + mat4(vec4(-0.154, -0.030, 0.177, -0.406), vec4(0.051, -0.083, 0.082, 0.291), vec4(-0.011, -0.254, -0.555, 0.070), vec4(-0.051, 0.282, -0.556, -0.297)) * bufB[1] + mat4(vec4(-0.092, 0.262, 0.327, -0.152), vec4(0.136, 0.513, 0.156, -0.433), vec4(-0.418, 0.160, 0.102, 0.210), vec4(-0.058, 0.166, -0.750, 0.017)) * bufB[2] + mat4(vec4(-0.468, -0.069, 0.327, -0.194), vec4(-0.087, 0.154, -0.241, -0.127), vec4(-0.018, -0.021, -0.078, 0.096), vec4(-0.223, -0.103, 0.019, 0.481)) * bufB[3];
bufB[0] = (max(bufA[0], 0.) - 0.4) / 0.58;
bufB[1] = (max(bufA[1], 0.) - 0.4) / 0.58;
bufB[2] = (max(bufA[2], 0.) - 0.4) / 0.58;
bufB[3] = (max(bufA[3], 0.) - 0.4) / 0.58;

 // layer 3
bufA[0] = vec4(-0.521, -0.250, 0.061, -0.003) + mat4(vec4(-0.357, 0.338, -0.222, 0.139), vec4(0.082, -0.298, -0.044, -0.666), vec4(0.460, 0.056, -0.578, -0.025), vec4(0.207, 0.171, 0.038, 0.128)) * bufB[0] + mat4(vec4(-0.009, -0.194, -0.147, -0.231), vec4(-0.242, 0.101, -0.065, -0.096), vec4(0.159, 0.210, 0.064, 0.072), vec4(0.446, 0.012, -0.270, 0.104)) * bufB[1] + mat4(vec4(-0.116, -0.185, -0.082, -0.051), vec4(0.273, -0.297, -0.527, -0.051), vec4(-0.037, 0.024, 0.035, 0.203), vec4(0.070, 0.287, 0.056, -0.383)) * bufB[2] + mat4(vec4(0.219, 0.356, 0.038, 0.289), vec4(-0.215, 0.124, 0.098, 0.219), vec4(0.084, 0.168, 0.136, -0.349), vec4(-0.076, 0.040, 0.036, 0.255)) * bufB[3] + in0;
bufA[1] = vec4(0.486, -0.336, -0.396, 0.070) + mat4(vec4(-0.144, -0.371, -0.192, -0.291), vec4(0.101, -0.079, 0.074, 0.034), vec4(-0.568, -0.350, 0.238, -0.023), vec4(-0.189, 0.184, 0.386, 0.189)) * bufB[0] + mat4(vec4(-0.454, 0.395, 0.055, 0.029), vec4(-0.248, 0.215, 0.020, -0.279), vec4(-0.351, 0.075, 0.452, 0.268), vec4(0.069, -0.191, 0.429, -0.235)) * bufB[1] + mat4(vec4(0.158, 0.462, 0.325, -0.144), vec4(0.358, 0.430, 0.219, 0.155), vec4(-0.100, -0.356, 0.165, 0.036), vec4(-0.165, 0.242, -0.562, -0.027)) * bufB[2] + mat4(vec4(-0.031, 0.379, 0.317, 0.133), vec4(-0.074, 0.087, -0.072, 0.091), vec4(0.286, -0.123, -0.182, 0.360), vec4(0.285, -0.124, 0.064, 0.010)) * bufB[3] + in1;
bufA[2] = vec4(-0.270, -0.160, -0.145, 0.478) + mat4(vec4(0.195, 0.161, 0.284, -0.060), vec4(0.624, 0.008, -0.035, 0.140), vec4(-0.068, 0.247, -0.317, 0.160), vec4(0.005, 0.179, -0.000, 0.104)) * bufB[0] + mat4(vec4(0.294, 0.456, 0.274, -0.013), vec4(-0.131, 0.155, 0.014, 0.170), vec4(0.221, 0.292, -0.221, 0.179), vec4(0.072, 0.377, -0.328, -0.013)) * bufB[1] + mat4(vec4(0.238, -0.431, -0.452, -0.200), vec4(-0.095, 0.371, -0.211, -0.197), vec4(-0.026, 0.207, 0.098, 0.154), vec4(0.381, 0.063, 0.043, 0.225)) * bufB[2] + mat4(vec4(-0.037, 0.233, -0.093, -0.289), vec4(-0.346, 0.490, -0.497, 0.041), vec4(0.055, -0.376, -0.136, -0.014), vec4(-0.056, 0.172, -0.216, 0.453)) * bufB[3] + in2;
bufA[3] = vec4(-0.165, -0.094, -0.286, 0.330) + mat4(vec4(-0.014, 0.033, 0.097, 0.108), vec4(0.328, -0.552, -0.090, 0.088), vec4(-0.171, -0.165, 0.256, 0.222), vec4(-0.296, 0.122, -0.015, 0.134)) * bufB[0] + mat4(vec4(-0.086, -0.739, -0.243, 0.430), vec4(0.335, -0.147, 0.132, -0.117), vec4(-0.005, 0.310, 0.231, -0.053), vec4(-0.128, -0.031, -0.239, 0.064)) * bufB[1] + mat4(vec4(0.372, -0.153, 0.212, 0.323), vec4(0.251, 0.054, 0.222, 0.347), vec4(0.229, -0.250, 0.070, 0.280), vec4(-0.027, -0.246, 0.172, 0.497)) * bufB[2] + mat4(vec4(0.059, -0.151, 0.456, -0.037), vec4(-0.358, 0.389, -0.007, -0.211), vec4(0.175, 0.141, 0.167, 0.319), vec4(0.229, -0.089, 0.166, -0.023)) * bufB[3] + in3;
bufB[0] = (max(bufA[0], 0.) - 0.4) / 0.58;
bufB[1] = (max(bufA[1], 0.) - 0.4) / 0.58;
bufB[2] = (max(bufA[2], 0.) - 0.4) / 0.58;
bufB[3] = (max(bufA[3], 0.) - 0.4) / 0.58;

 // layer 4
bufA[0] = vec4(0.290, -0.027, 0.479, 0.240) + mat4(vec4(0.228, -0.221, 0.088, -0.191), vec4(0.181, 0.067, -0.205, -0.075), vec4(0.245, 0.124, -0.177, 0.103), vec4(0.170, -0.069, 0.423, 0.215)) * bufB[0] + mat4(vec4(0.119, 0.210, -0.519, 0.024), vec4(-0.166, 0.062, 0.006, 0.292), vec4(-0.457, 0.072, 0.245, 0.227), vec4(0.022, 0.003, 0.334, -0.165)) * bufB[1] + mat4(vec4(-0.059, 0.170, -0.208, -0.138), vec4(0.536, 0.058, 0.479, -0.465), vec4(0.420, 0.185, -0.051, -0.519), vec4(0.058, 0.562, -0.061, 0.057)) * bufB[2] + mat4(vec4(-0.674, -0.004, -0.039, 0.254), vec4(0.365, -0.028, 0.100, -0.184), vec4(0.054, -0.164, 0.429, -0.195), vec4(0.114, -0.968, 0.016, -0.245)) * bufB[3];
bufA[1] = vec4(-0.179, 0.324, -0.303, 0.319) + mat4(vec4(0.264, 0.442, 0.003, -0.205), vec4(0.368, -0.049, 0.020, -0.558), vec4(0.073, 0.276, 0.281, -0.521), vec4(0.042, 0.173, -0.107, -0.150)) * bufB[0] + mat4(vec4(-0.171, -0.136, -0.620, 0.170), vec4(0.549, 0.021, 0.130, -0.098), vec4(0.014, -0.219, -0.207, 0.522), vec4(-0.092, 0.409, 0.042, 0.063)) * bufB[1] + mat4(vec4(-0.182, 0.274, -0.323, -0.260), vec4(-0.164, -0.208, 0.134, -0.176), vec4(0.391, -0.277, -0.222, 0.165), vec4(0.081, 0.020, -0.000, -0.133)) * bufB[2] + mat4(vec4(0.182, 0.137, 0.406, -0.093), vec4(0.238, -0.268, 0.126, -0.273), vec4(0.389, -0.076, -0.606, -0.018), vec4(0.114, 0.322, 0.220, -0.056)) * bufB[3];
bufA[2] = vec4(0.358, -0.318, 0.403, -0.547) + mat4(vec4(-0.138, -0.247, -0.339, 0.412), vec4(0.043, -0.380, -0.251, 0.318), vec4(0.498, -0.254, -0.249, 0.253), vec4(-0.261, -0.449, -0.222, 0.480)) * bufB[0] + mat4(vec4(-0.258, -0.119, 0.238, 0.143), vec4(-0.323, -0.389, -0.209, 0.253), vec4(-0.089, -0.420, -0.114, 0.089), vec4(0.199, -0.462, 0.321, 0.117)) * bufB[1] + mat4(vec4(0.054, 0.293, 0.099, -0.139), vec4(-0.011, -0.863, -0.376, 0.344), vec4(-0.044, -0.023, 0.076, 0.174), vec4(0.349, 0.050, 0.007, 0.386)) * bufB[2] + mat4(vec4(0.011, -0.026, 0.209, -0.035), vec4(0.332, 0.219, -0.132, 0.333), vec4(0.349, -0.098, -0.370, 0.020), vec4(0.029, -0.549, -0.043, -0.006)) * bufB[3];
bufA[3] = vec4(-0.449, 0.350, -0.122, -0.190) + mat4(vec4(0.161, 0.212, -0.349, 0.136), vec4(-0.265, -0.160, -0.383, 0.187), vec4(0.512, -0.230, 0.171, 0.325), vec4(-0.003, 0.304, -0.347, 0.375)) * bufB[0] + mat4(vec4(-0.177, 0.053, 0.423, 0.001), vec4(-0.170, 0.045, -0.080, -0.105), vec4(-0.212, 0.364, 0.146, -0.576), vec4(-0.146, -0.128, 0.133, -0.416)) * bufB[1] + mat4(vec4(-0.079, -0.009, -0.251, -0.263), vec4(-0.222, 0.141, 0.227, -0.379), vec4(0.029, 0.367, -0.086, 0.044), vec4(-0.385, 0.008, -0.198, 0.070)) * bufB[2] + mat4(vec4(-0.689, 0.167, -0.119, 0.274), vec4(0.239, -0.335, -0.169, -0.081), vec4(0.275, -0.110, 0.236, 0.281), vec4(0.007, 0.100, 0.124, 0.072)) * bufB[3];
bufB[0] = (max(bufA[0], 0.) - 0.4) / 0.58;
bufB[1] = (max(bufA[1], 0.) - 0.4) / 0.58;
bufB[2] = (max(bufA[2], 0.) - 0.4) / 0.58;
bufB[3] = (max(bufA[3], 0.) - 0.4) / 0.58;

 // layer 5
bufA[0] = vec4(0.039, -0.389, -0.527, 0.071) + mat4(vec4(0.205, 0.077, -0.036, -0.123), vec4(-0.104, 0.425, 0.097, -0.121), vec4(0.013, -0.018, 0.134, -0.389), vec4(-0.287, -0.177, 0.087, 0.062)) * bufB[0] + mat4(vec4(-0.256, 0.214, -0.151, 0.103), vec4(0.367, -0.051, 0.134, 0.086), vec4(0.112, -0.285, 0.128, 0.350), vec4(0.029, 0.484, -0.066, 0.332)) * bufB[1] + mat4(vec4(0.186, 0.262, -0.179, 0.279), vec4(-0.302, -0.067, -0.039, 0.259), vec4(-0.391, -0.350, -0.295, -0.038), vec4(-0.347, 0.038, -0.310, -0.091)) * bufB[2] + mat4(vec4(0.157, -0.332, 0.263, -0.313), vec4(0.392, -0.379, -0.168, -0.141), vec4(-0.192, -0.059, -0.140, -0.183), vec4(-0.039, -0.439, 0.046, -0.041)) * bufB[3];
bufA[1] = vec4(0.333, 0.099, -0.256, -0.105) + mat4(vec4(0.324, 0.541, 0.071, -0.107), vec4(0.246, 0.255, 0.590, -0.034), vec4(-0.213, 0.245, -0.061, 0.011), vec4(-0.325, -0.663, 0.141, 0.241)) * bufB[0] + mat4(vec4(-0.213, 0.195, 0.221, -0.026), vec4(0.161, -0.144, -0.118, -0.374), vec4(0.080, -0.012, -0.429, -0.126), vec4(0.230, -0.041, 0.394, 0.171)) * bufB[1] + mat4(vec4(0.505, -0.284, -0.212, -0.164), vec4(0.038, 0.033, -0.606, 0.326), vec4(0.257, -0.154, 0.209, -0.218), vec4(0.349, 0.255, -0.053, 0.392)) * bufB[2] + mat4(vec4(-0.527, -0.430, -0.569, 0.455), vec4(0.503, 0.593, 0.085, -0.538), vec4(-0.310, 0.054, 0.150, 0.059), vec4(0.151, 0.654, 0.131, 0.649)) * bufB[3];
bufA[2] = vec4(-0.200, -0.070, 0.003, -0.445) + mat4(vec4(0.138, -0.083, 0.226, 0.226), vec4(-0.054, 0.043, -0.084, 0.256), vec4(-0.829, -0.107, -0.111, -0.232), vec4(-0.249, -0.177, -0.330, -0.482)) * bufB[0] + mat4(vec4(-0.023, -0.673, 0.174, -0.454), vec4(-0.038, 0.099, -0.111, -0.354), vec4(-0.039, -0.160, 0.231, 0.356), vec4(0.411, -0.175, -0.158, -0.546)) * bufB[1] + mat4(vec4(-0.149, -0.132, 0.517, 0.151), vec4(0.062, -0.035, 0.042, 0.341), vec4(0.033, 0.168, 0.103, -0.218), vec4(-0.237, -0.455, -0.332, 0.119)) * bufB[2] + mat4(vec4(-0.195, -0.501, -0.255, 0.272), vec4(0.067, 0.044, -0.055, -0.102), vec4(-0.263, 0.669, -0.238, 0.288), vec4(0.418, 0.017, -0.107, 0.639)) * bufB[3];
bufA[3] = vec4(0.103, 0.307, -0.540, -0.242) + mat4(vec4(0.288, -0.167, -0.145, 0.076), vec4(0.052, -0.113, 0.033, -0.065), vec4(0.255, -0.301, 0.348, -0.346), vec4(0.096, -0.093, -0.437, -0.493)) * bufB[0] + mat4(vec4(0.196, -0.256, -0.197, 0.340), vec4(0.427, -0.123, 0.387, 0.453), vec4(0.242, -0.360, 0.037, 0.217), vec4(-0.384, -0.241, -0.000, 0.140)) * bufB[1] + mat4(vec4(0.197, 0.191, 0.015, 0.562), vec4(-0.068, -0.243, -0.741, -0.090), vec4(-0.170, 0.467, -0.098, -0.051), vec4(-0.025, -0.109, 0.239, -0.054)) * bufB[2] + mat4(vec4(-0.057, -0.200, 0.382, -0.494), vec4(-0.424, -0.135, -0.041, 0.072), vec4(-0.137, -0.106, 0.352, 0.020), vec4(0.090, -0.236, 0.094, 0.265)) * bufB[3];
bufB[0] = (max(bufA[0], 0.) - 0.4) / 0.58;
bufB[1] = (max(bufA[1], 0.) - 0.4) / 0.58;
bufB[2] = (max(bufA[2], 0.) - 0.4) / 0.58;
bufB[3] = (max(bufA[3], 0.) - 0.4) / 0.58;

 // layer 6
bufA[0] = vec4(0.165, 0.362, -0.541, -0.376) + mat4(vec4(0.452, -0.256, 0.341, -0.059), vec4(0.034, -0.173, 0.389, 0.534), vec4(0.425, -0.078, -0.363, -0.059), vec4(0.333, 0.281, 0.282, -0.256)) * bufB[0] + mat4(vec4(-0.043, 0.057, 0.146, 0.357), vec4(0.063, -0.549, -0.378, -0.060), vec4(-0.004, 0.397, -0.049, -0.105), vec4(0.570, -0.394, 0.186, -0.481)) * bufB[1] + mat4(vec4(-0.345, -0.199, 0.239, 0.013), vec4(0.402, -0.158, 0.108, -0.150), vec4(0.336, 0.307, -0.263, 0.031), vec4(0.014, -0.658, 0.436, -0.157)) * bufB[2] + mat4(vec4(0.331, 0.551, -0.111, 0.204), vec4(-0.217, -0.199, 0.319, 0.100), vec4(0.197, 0.119, 0.126, -0.560), vec4(0.185, 0.196, 0.082, 0.038)) * bufB[3];
bufA[1] = vec4(0.139, -0.828, -0.430, 0.534) + mat4(vec4(-0.120, 0.092, 0.365, 0.009), vec4(0.382, -0.535, -0.051, 0.118), vec4(-0.176, 0.347, 0.157, -0.252), vec4(0.288, 0.193, -0.045, -0.122)) * bufB[0] + mat4(vec4(0.109, 0.161, 0.167, -0.455), vec4(0.276, 0.012, 0.072, -0.156), vec4(-0.415, -0.140, 0.446, 0.826), vec4(-0.021, 0.332, 0.160, 0.036)) * bufB[1] + mat4(vec4(0.118, 0.260, 0.096, -0.031), vec4(-0.672, -0.390, -0.045, 0.179), vec4(0.327, -0.113, -0.351, 0.087), vec4(-0.346, -0.014, -0.143, -0.186)) * bufB[2] + mat4(vec4(-0.206, 0.272, -0.453, -0.081), vec4(0.210, -0.396, 0.140, 0.177), vec4(0.185, -0.046, 0.205, -0.477), vec4(0.377, -0.050, -0.542, -0.295)) * bufB[3];
bufA[2] = vec4(-0.070, 0.311, -0.324, 0.317) + mat4(vec4(-0.439, -0.085, 0.678, 0.061), vec4(0.317, -0.590, 0.005, -0.211), vec4(-0.002, -0.479, 0.333, 0.006), vec4(0.248, -0.234, 0.227, -0.366)) * bufB[0] + mat4(vec4(-0.298, 0.081, -0.187, -0.085), vec4(-0.151, 0.321, 0.115, -0.107), vec4(-0.362, 0.133, 0.517, -0.318), vec4(0.410, 0.036, -0.059, 0.126)) * bufB[1] + mat4(vec4(0.084, 0.283, -0.307, -0.074), vec4(0.173, 0.208, 0.221, -0.538), vec4(-0.275, -0.048, -0.092, 0.060), vec4(0.066, -0.704, -0.048, -0.037)) * bufB[2] + mat4(vec4(-0.048, -0.309, 0.012, -0.200), vec4(0.247, -0.322, 0.072, 0.394), vec4(-0.047, -0.063, -0.035, -0.078), vec4(0.220, -0.190, 0.067, -0.391)) * bufB[3];
bufA[3] = vec4(0.060, -0.177, 0.157, 0.184) + mat4(vec4(-0.077, -0.222, -0.060, -0.046), vec4(-0.935, -0.032, 0.363, -0.028), vec4(-0.530, 0.355, -0.048, 0.041), vec4(0.029, -0.516, -0.354, 0.008)) * bufB[0] + mat4(vec4(0.250, 0.243, 0.115, -0.369), vec4(-0.266, -0.159, -0.196, 0.012), vec4(-0.028, -0.310, 0.273, 0.435), vec4(-0.048, 0.076, -0.084, -0.163)) * bufB[1] + mat4(vec4(0.051, -0.031, 0.477, -0.153), vec4(0.115, 0.298, 0.212, 0.205), vec4(-0.150, -0.081, -0.037, -0.185), vec4(0.101, 0.250, 0.371, -0.038)) * bufB[2] + mat4(vec4(-0.242, 0.264, 0.151, -0.051), vec4(0.501, 0.036, 0.082, 0.043), vec4(0.015, 0.086, 0.041, 0.529), vec4(-0.397, 0.640, 0.117, -0.237)) * bufB[3];
bufB[0] = (max(bufA[0], 0.) - 0.4) / 0.58;
bufB[1] = (max(bufA[1], 0.) - 0.4) / 0.58;
bufB[2] = (max(bufA[2], 0.) - 0.4) / 0.58;
bufB[3] = (max(bufA[3], 0.) - 0.4) / 0.58;

 // layer 7
bufA[0] = vec4(0.209, -0.284, 0.340, -0.556) + mat4(vec4(0.108, -0.339, -0.151, 0.447), vec4(-0.283, -0.235, 0.342, 0.028), vec4(0.303, 0.275, -0.254, 0.487), vec4(0.076, -0.851, 0.198, -0.046)) * bufB[0] + mat4(vec4(0.283, 0.347, -0.118, 0.034), vec4(-0.237, 0.069, 0.558, -0.273), vec4(-0.422, -0.208, 0.260, 0.424), vec4(0.087, -0.003, 0.550, 0.096)) * bufB[1] + mat4(vec4(-0.387, 0.267, -0.269, 0.186), vec4(-0.264, -0.474, 0.034, 0.067), vec4(-0.041, -0.056, -0.176, 0.569), vec4(0.195, 0.214, 0.033, 0.320)) * bufB[2] + mat4(vec4(0.112, 0.158, 0.445, -0.131), vec4(-0.057, 0.110, 0.352, -0.003), vec4(-0.494, 0.120, 0.471, 0.515), vec4(-0.230, 0.459, 0.059, 0.391)) * bufB[3];
bufA[1] = vec4(0.507, 0.302, 0.272, -0.251) + mat4(vec4(-0.073, 0.216, -0.506, 0.224), vec4(0.177, -0.278, 0.005, -0.699), vec4(0.273, 0.466, 0.243, 0.317), vec4(-0.003, 0.522, 0.046, 0.020)) * bufB[0] + mat4(vec4(-0.679, 0.009, -0.020, 0.182), vec4(0.192, 0.017, -0.713, -0.290), vec4(-0.067, 0.656, 0.380, 0.094), vec4(0.022, -0.056, 0.181, -0.450)) * bufB[1] + mat4(vec4(0.143, -0.447, 0.130, 0.067), vec4(0.256, 0.533, -0.015, 0.495), vec4(-0.500, 0.127, 0.119, -0.001), vec4(-0.204, 0.469, -0.567, -0.092)) * bufB[2] + mat4(vec4(0.020, 0.005, 0.122, 0.276), vec4(0.424, 0.049, -0.381, -0.231), vec4(0.174, 0.206, -0.082, -0.347), vec4(-0.433, 0.097, -0.237, -0.301)) * bufB[3];
bufA[2] = vec4(-0.338, 0.310, 0.306, -0.137) + mat4(vec4(-0.440, 0.118, 0.413, 0.074), vec4(-0.115, -0.008, 0.206, -0.208), vec4(0.262, -0.149, -0.039, -0.772), vec4(-0.441, -0.053, 0.172, -0.178)) * bufB[0] + mat4(vec4(0.066, -0.449, -0.164, -0.438), vec4(0.035, 0.214, 0.215, -0.814), vec4(0.238, 0.148, -0.205, 0.027), vec4(-0.223, 0.215, 0.463, 0.098)) * bufB[1] + mat4(vec4(0.048, 0.005, 0.137, 0.005), vec4(-0.406, 0.586, -0.161, 0.067), vec4(-0.206, 0.324, 0.013, -0.023), vec4(0.137, -0.139, 0.067, -0.071)) * bufB[2] + mat4(vec4(0.594, 0.109, 0.072, -0.018), vec4(0.046, -0.209, -0.100, -0.263), vec4(0.102, 0.291, -0.174, -0.333), vec4(0.289, -0.207, -0.100, -0.181)) * bufB[3];
bufA[3] = vec4(0.177, -0.654, 0.335, 0.056) + mat4(vec4(-0.079, 0.212, 0.107, -0.255), vec4(0.409, -0.123, 0.139, -0.263), vec4(-0.292, 0.323, -0.228, 0.245), vec4(-0.038, -0.430, -0.150, 0.185)) * bufB[0] + mat4(vec4(0.095, 0.061, 0.131, 0.318), vec4(-0.528, 0.189, -0.140, 0.179), vec4(0.363, -0.203, -0.229, 0.223), vec4(0.602, -0.425, 0.370, -0.086)) * bufB[1] + mat4(vec4(-0.065, 0.368, -0.597, 0.345), vec4(0.194, 0.020, 0.196, 0.483), vec4(0.151, 0.787, 0.568, 0.141), vec4(-0.414, 0.015, 0.001, -0.094)) * bufB[2] + mat4(vec4(-0.268, -0.041, 0.207, 0.160), vec4(-0.127, 0.077, 0.182, -0.074), vec4(-0.133, 0.006, -0.436, 0.056), vec4(-0.227, 0.123, -0.226, -0.089)) * bufB[3];
bufB[0] = (max(bufA[0], 0.) - 0.4) / 0.58;
bufB[1] = (max(bufA[1], 0.) - 0.4) / 0.58;
bufB[2] = (max(bufA[2], 0.) - 0.4) / 0.58;
bufB[3] = (max(bufA[3], 0.) - 0.4) / 0.58;

 // layer 8
bufA[0] = vec4(-0.094, 0.284, -0.264, -0.135) + mat4(vec4(0.132, 0.022, -0.338, -0.353), vec4(0.719, -0.163, 0.040, -0.481), vec4(-0.329, 0.440, 0.053, 0.212), vec4(-0.400, -0.079, -0.115, -0.183)) * bufB[0] + mat4(vec4(-0.716, 0.335, 0.258, 0.659), vec4(-0.023, 0.014, -0.168, -0.414), vec4(-0.255, -0.366, 0.065, -0.385), vec4(0.230, -0.458, -0.566, -0.198)) * bufB[1] + mat4(vec4(0.234, -0.479, 0.162, -0.322), vec4(0.163, 0.038, 0.018, -0.189), vec4(-0.207, 0.010, -0.219, 0.126), vec4(-0.408, 0.345, -0.215, 0.069)) * bufB[2] + mat4(vec4(-0.567, 0.069, 0.107, 0.112), vec4(-0.187, -0.174, -0.452, 0.041), vec4(-0.092, -0.166, -0.027, -0.194), vec4(0.078, 0.094, -0.690, 0.248)) * bufB[3];
bufA[1] = vec4(-0.268, -0.424, -0.361, 0.592) + mat4(vec4(-0.060, 0.230, 0.291, 0.021), vec4(-0.267, -0.175, 0.171, -0.370), vec4(-0.122, 0.272, 0.073, 0.241), vec4(-0.058, -0.336, 0.232, -0.434)) * bufB[0] + mat4(vec4(-0.209, 0.343, -0.054, 0.533), vec4(-0.229, -0.137, -0.184, -0.694), vec4(-0.156, -0.563, 0.254, 0.145), vec4(-0.297, 0.327, 0.440, -0.082)) * bufB[1] + mat4(vec4(0.276, -0.308, 0.073, -0.244), vec4(0.008, 0.440, 0.028, 0.248), vec4(0.071, 0.001, -0.524, -0.175), vec4(-0.262, -0.365, 0.152, -0.021)) * bufB[2] + mat4(vec4(-0.819, 0.005, -0.594, -0.255), vec4(0.366, -0.334, 0.148, -0.022), vec4(-0.181, 0.536, -0.174, -0.169), vec4(0.199, 0.188, 0.225, 0.106)) * bufB[3];
bufA[2] = vec4(0.366, 0.226, 0.357, -0.544) + mat4(vec4(0.278, 0.219, 0.240, -0.021), vec4(0.621, -0.017, 0.038, 0.319), vec4(0.224, -0.351, 0.190, -0.229), vec4(-0.016, 0.081, -0.079, -0.204)) * bufB[0] + mat4(vec4(-0.267, 0.271, 0.283, -0.296), vec4(-0.018, 0.058, 0.125, -0.093), vec4(0.165, 0.060, 0.108, -0.061), vec4(0.214, -0.143, -0.248, -0.456)) * bufB[1] + mat4(vec4(0.442, -0.329, -0.150, 0.017), vec4(-0.327, -0.069, 0.136, -0.118), vec4(-0.168, 0.319, -0.271, -0.050), vec4(-0.919, -0.025, 0.392, -0.093)) * bufB[2] + mat4(vec4(0.085, 0.638, -0.011, 0.155), vec4(0.505, 0.056, -0.338, 0.110), vec4(-0.132, -0.499, -0.162, 0.011), vec4(-0.406, -0.314, -0.272, 0.486)) * bufB[3];
bufA[3] = vec4(-0.006, 0.263, -0.089, 0.190) + mat4(vec4(-0.451, -0.199, 0.217, 0.149), vec4(-0.050, -0.408, 0.266, 0.723), vec4(-0.439, 0.067, 0.379, 0.290), vec4(0.036, -0.532, -0.512, 0.604)) * bufB[0] + mat4(vec4(0.257, 0.446, 0.091, -0.341), vec4(-0.541, -0.945, 0.280, -0.437), vec4(-0.111, 0.122, -0.077, -0.112), vec4(-0.119, -0.199, -0.084, 0.411)) * bufB[1] + mat4(vec4(-0.264, -0.438, 0.072, -0.022), vec4(0.478, -0.038, 0.313, -0.070), vec4(0.618, -0.478, 0.067, -0.066), vec4(0.190, -0.080, -0.367, -0.066)) * bufB[2] + mat4(vec4(-0.029, -0.270, -0.311, -0.491), vec4(-0.584, -0.265, -0.130, 0.694), vec4(-0.332, -0.014, 0.064, -0.350), vec4(0.568, 0.406, 0.060, -0.587)) * bufB[3];
bufB[0] = (max(bufA[0], 0.) - 0.4) / 0.58;
bufB[1] = (max(bufA[1], 0.) - 0.4) / 0.58;
bufB[2] = (max(bufA[2], 0.) - 0.4) / 0.58;
bufB[3] = (max(bufA[3], 0.) - 0.4) / 0.58;

 // layer 9
bufA[0] = vec4(0.389, 0.003, -0.104, 0.000) + mat4(vec4(0.231, 0.279, 0.273, 0.000), vec4(-0.133, -0.051, -0.095, 0.000), vec4(0.016, 0.060, 0.000, 0.000), vec4(-0.089, -0.151, -0.118, 0.000)) * bufB[0] + mat4(vec4(-0.391, 0.067, -0.064, 0.000), vec4(-0.146, -0.115, -0.123, 0.000), vec4(0.074, 0.161, 0.164, 0.000), vec4(-0.150, -0.132, -0.159, 0.000)) * bufB[1] + mat4(vec4(0.083, 0.161, 0.168, 0.000), vec4(0.094, 0.064, 0.100, 0.000), vec4(0.028, -0.068, -0.043, 0.000), vec4(-0.251, -0.152, -0.028, 0.000)) * bufB[2] + mat4(vec4(-0.207, -0.107, -0.081, 0.000), vec4(-0.202, -0.320, -0.255, 0.000), vec4(0.024, 0.057, 0.109, 0.000), vec4(0.136, 0.099, 0.137, 0.000)) * bufB[3];

 return vec4((1. / (1. + exp(-bufA[0]))).xyz, 1.0);
}

void mainImage( out vec4 fragColor, in vec2 fragCoord ) {
    // Normalized pixel coordinates (from 0 to 1)
    vec2 uv = fragCoord/iResolution.xy;
    vec2 mouseNorm = (iMouse.xy / iResolution.xy) - vec2(0.5, 0.5);

    uv.x *= iResolution.x / iResolution.y;
    uv.x -= ((iResolution.x / iResolution.y) - 1.) /2.;

    // Shifted to the form expected by the CPPN
    uv = vec2(1., -1.) * 4. * (uv - vec2(0.5, 0.5));
    // Output to screen
    fragColor = cppn_fn(uv, 0.32*sin(1.23*iTime), 0.08*sin(8.69*iTime), 0.11*sin(12.44*iTime), 0.23*sin(3.23*iTime));
}
