#pragma once /* #version:1# (machine generated, don't edit!) Generated by sokol-shdc (https://github.com/floooh/sokol-tools) Cmdline: sokol-shdc -i ./samples/sdf-sapp.glsl -o F:\dev\luajit\Thunc\sokol-luajit\bin/shaderbin/shader_gen.h -l glsl410 -f sokol Overview: ========= Shader program: 'sdf': Get shader desc: sdf_shader_desc(sg_query_backend()); Vertex shader: vs Attributes: ATTR_vs_position => 0 Uniform block 'vs_params': C struct: vs_params_t Bind slot: SLOT_vs_params => 0 Fragment shader: fs */ #if !defined(SOKOL_GFX_INCLUDED) #error "Please include sokol_gfx.h before shader_gen.h" #endif #if !defined(SOKOL_SHDC_ALIGN) #if defined(_MSC_VER) #define SOKOL_SHDC_ALIGN(a) __declspec(align(a)) #else #define SOKOL_SHDC_ALIGN(a) __attribute__((aligned(a))) #endif #endif #define ATTR_vs_position (0) #define SLOT_vs_params (0) #pragma pack(push,1) SOKOL_SHDC_ALIGN(16) typedef struct vs_params_t { float aspect; float time; uint8_t _pad_8[8]; } vs_params_t; #pragma pack(pop) /* #version 410 uniform vec4 vs_params[1]; layout(location = 0) in vec4 position; layout(location = 0) out vec2 pos; layout(location = 1) out vec3 eye; layout(location = 4) out vec3 fwd; layout(location = 3) out vec3 right; layout(location = 2) out vec3 up; vec3 eye_pos(float time, vec3 center) { return center + vec3(sin(time * 0.0500000007450580596923828125) * 3.0, sin(time * 0.100000001490116119384765625) * 2.0, cos(time * 0.0500000007450580596923828125) * 3.0); } void lookat(vec3 eye_1, vec3 center, vec3 up_1, inout vec3 out_fwd, inout vec3 out_right, out vec3 out_up) { out_fwd = normalize(center - eye_1); out_right = normalize(cross(out_fwd, up_1)); out_up = cross(out_right, out_fwd); } void main() { gl_Position = position; pos.x = position.x * vs_params[0].x; pos.y = position.y; float param = vs_params[0].y * 5.0; vec3 param_1 = vec3(0.0); eye = eye_pos(param, param_1); vec3 param_2 = eye; vec3 param_3 = vec3(0.0); vec3 param_4 = vec3(0.0, 1.0, 0.0); vec3 param_5; vec3 param_6; vec3 param_7; lookat(param_2, param_3, param_4, param_5, param_6, param_7); fwd = param_5; right = param_6; up = param_7; } */ static const uint8_t vs_source_glsl410[1205] = { 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x75,0x6e, 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73,0x5f,0x70,0x61, 0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e, 0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a, 0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, 0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f, 0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, 0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33, 0x20,0x65,0x79,0x65,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x34,0x29,0x20,0x6f,0x75,0x74,0x20,0x76, 0x65,0x63,0x33,0x20,0x66,0x77,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x6f,0x75, 0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x72,0x69,0x67,0x68,0x74,0x3b,0x0a,0x6c,0x61, 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, 0x32,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x75,0x70,0x3b,0x0a, 0x0a,0x76,0x65,0x63,0x33,0x20,0x65,0x79,0x65,0x5f,0x70,0x6f,0x73,0x28,0x66,0x6c, 0x6f,0x61,0x74,0x20,0x74,0x69,0x6d,0x65,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x63, 0x65,0x6e,0x74,0x65,0x72,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74, 0x75,0x72,0x6e,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x20,0x2b,0x20,0x76,0x65,0x63, 0x33,0x28,0x73,0x69,0x6e,0x28,0x74,0x69,0x6d,0x65,0x20,0x2a,0x20,0x30,0x2e,0x30, 0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35, 0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x20,0x2a,0x20,0x33, 0x2e,0x30,0x2c,0x20,0x73,0x69,0x6e,0x28,0x74,0x69,0x6d,0x65,0x20,0x2a,0x20,0x30, 0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36, 0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x20,0x2a,0x20, 0x32,0x2e,0x30,0x2c,0x20,0x63,0x6f,0x73,0x28,0x74,0x69,0x6d,0x65,0x20,0x2a,0x20, 0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35, 0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x20, 0x2a,0x20,0x33,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20, 0x6c,0x6f,0x6f,0x6b,0x61,0x74,0x28,0x76,0x65,0x63,0x33,0x20,0x65,0x79,0x65,0x5f, 0x31,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x2c,0x20, 0x76,0x65,0x63,0x33,0x20,0x75,0x70,0x5f,0x31,0x2c,0x20,0x69,0x6e,0x6f,0x75,0x74, 0x20,0x76,0x65,0x63,0x33,0x20,0x6f,0x75,0x74,0x5f,0x66,0x77,0x64,0x2c,0x20,0x69, 0x6e,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x6f,0x75,0x74,0x5f,0x72,0x69, 0x67,0x68,0x74,0x2c,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x6f,0x75, 0x74,0x5f,0x75,0x70,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f, 0x66,0x77,0x64,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28, 0x63,0x65,0x6e,0x74,0x65,0x72,0x20,0x2d,0x20,0x65,0x79,0x65,0x5f,0x31,0x29,0x3b, 0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x72,0x69,0x67,0x68,0x74,0x20,0x3d, 0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x72,0x6f,0x73,0x73, 0x28,0x6f,0x75,0x74,0x5f,0x66,0x77,0x64,0x2c,0x20,0x75,0x70,0x5f,0x31,0x29,0x29, 0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x75,0x70,0x20,0x3d,0x20,0x63, 0x72,0x6f,0x73,0x73,0x28,0x6f,0x75,0x74,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0x20, 0x6f,0x75,0x74,0x5f,0x66,0x77,0x64,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69, 0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67, 0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x70,0x6f,0x73, 0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x2e,0x78, 0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20,0x2a,0x20, 0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x3b,0x0a, 0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69, 0x74,0x69,0x6f,0x6e,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x76,0x73,0x5f,0x70,0x61,0x72, 0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x79,0x20,0x2a,0x20,0x35,0x2e,0x30,0x3b,0x0a, 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, 0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, 0x20,0x20,0x65,0x79,0x65,0x20,0x3d,0x20,0x65,0x79,0x65,0x5f,0x70,0x6f,0x73,0x28, 0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b, 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, 0x32,0x20,0x3d,0x20,0x65,0x79,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, 0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x76,0x65,0x63,0x33, 0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, 0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30, 0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20, 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x3b, 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, 0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, 0x6d,0x5f,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x6f,0x6b,0x61,0x74,0x28, 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33, 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, 0x5f,0x35,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72, 0x61,0x6d,0x5f,0x37,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x77,0x64,0x20,0x3d, 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x69, 0x67,0x68,0x74,0x20,0x3d,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x3b,0x0a,0x20, 0x20,0x20,0x20,0x75,0x70,0x20,0x3d,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x3b, 0x0a,0x7d,0x0a,0x0a,0x00, }; /* #version 410 layout(location = 1) in vec3 eye; layout(location = 4) in vec3 fwd; layout(location = 3) in vec3 right; layout(location = 0) in vec2 pos; layout(location = 2) in vec3 up; layout(location = 0) out vec4 frag_color; float sd_sphere(vec3 p, float s) { return length(p) - s; } float sd_mandelbulb(vec3 p, inout vec4 res_color) { vec3 w = p; float _49 = dot(p, p); float m = _49; vec4 trap = vec4(abs(p), _49); float dz = 1.0; for (int i = 0; i < 4; i++) { float _76 = m * m; dz = fma(8.0 * sqrt(((_76 * _76) * _76) * m), dz, 1.0); vec3 _653 = w; float _100 = _653.x * _653.x; float _104 = _100 * _100; float _112 = _653.y * _653.y; float _124 = _653.z * _653.z; float _128 = _124 * _124; float _132 = fma(_653.x, _653.x, _124); float _147 = inversesqrt((((((_132 * _132) * _132) * _132) * _132) * _132) * _132); float _170 = fma(2.0 * _124, _100, fma(_100 * (-6.0), _112, fma(_112 * (-6.0), _124, fma(_124, _124, fma(_100, _100, _112 * _112))))); float _176 = fma(_653.z, _653.z, fma(_653.x, _653.x, -_112)); vec3 _670 = vec3(fma(((((((64.0 * _653.x) * _653.y) * _653.z) * fma(_653.x, _653.x, -_124)) * _176) * fma(_124, _124, fma(_100, _100, -((6.0 * _100) * _124)))) * _170, _147, p.x), fma(_170, _170, fma((((-16.0) * _112) * _132) * _176, _176, p.y)), fma(((((-8.0) * _653.y) * _176) * fma(_128, _128, fma(-((28.0 * _100) * _124), _128, fma(70.0 * _104, _128, fma(_104, _104, -(((28.0 * _104) * _100) * _124)))))) * _170, _147, p.z)); w = _670; trap = min(trap, vec4(abs(_670), m)); float _277 = dot(_670, _670); m = _277; if (_277 > 256.0) { break; } } res_color = vec4(m, trap.yzw); return ((0.25 * log(m)) * sqrt(m)) / dz; } float d_scene(vec3 p, out vec4 res_color) { vec3 param = p; float param_1 = 1.10000002384185791015625; float _310 = sd_sphere(param, param_1); float d = _310; if (_310 < 0.100000001490116119384765625) { vec3 param_2 = p; vec4 param_3; float _319 = sd_mandelbulb(param_2, param_3); res_color = param_3; d = _319; } else { res_color = vec4(0.0); } return d; } vec3 surface_normal(vec3 p, float dp) { vec3 param = p + vec3(0.001000000047497451305389404296875, 0.0, 0.0); vec4 param_1; float _335 = d_scene(param, param_1); vec3 param_2 = p + vec3(0.0, 0.001000000047497451305389404296875, 0.0); vec4 param_3; float _345 = d_scene(param_2, param_3); vec3 param_4 = p + vec3(0.0, 0.0, 0.001000000047497451305389404296875); vec4 param_5; float _355 = d_scene(param_4, param_5); return normalize(vec3(_335 - dp, _345 - dp, _355 - dp)); } vec3 calc_color(vec3 ro, vec3 rd, float t, vec4 tra) { vec3 param = ro + (rd * t); float param_1 = t; vec3 _377 = surface_normal(param, param_1); vec3 _384 = normalize(vec3(0.57700002193450927734375, 0.57700002193450927734375, -0.57700002193450927734375) - rd); float _391 = clamp(0.0500000007450580596923828125 * log(tra.x), 0.0, 1.0); float _401 = clamp(dot(vec3(0.57700002193450927734375, 0.57700002193450927734375, -0.57700002193450927734375), _377), 0.0, 1.0); return sqrt(pow(mix(mix(mix(vec3(0.00999999977648258209228515625), vec3(0.100000001490116119384765625, 0.20000000298023223876953125, 0.300000011920928955078125), vec3(clamp(tra.y, 0.0, 1.0))), vec3(0.0199999995529651641845703125, 0.100000001490116119384765625, 0.300000011920928955078125), vec3(clamp(tra.z * tra.z, 0.0, 1.0))), vec3(0.300000011920928955078125, 0.100000001490116119384765625, 0.0199999995529651641845703125), vec3(clamp(pow(tra.w, 6.0), 0.0, 1.0))) * (((((vec3(10.5, 7.69999980926513671875, 4.900000095367431640625) * _401) + (vec3(1.0, 0.800000011920928955078125, 0.60000002384185791015625) * (clamp(fma(0.5, dot(vec3(-0.7070000171661376953125, 0.0, 0.7070000171661376953125), _377), 0.5), 0.0, 1.0) * _391))) + (vec3(0.1500000059604644775390625, 0.300000011920928955078125, 0.449999988079071044921875) * (fma(0.300000011920928955078125, _377.y, 0.699999988079071044921875) * fma(0.800000011920928955078125, _391, 0.20000000298023223876953125)))) + (vec3(0.875, 0.75, 0.625) * fma(0.949999988079071044921875, _391, 0.0500000007450580596923828125))) + vec3((4.0 * clamp(1.0 + dot(rd, _377), 0.0, 1.0)) * _391)), vec3(0.699999988079071044921875, 0.89999997615814208984375, 1.0)) + vec3(((pow(clamp(dot(_377, _384), 0.0, 1.0), 32.0) * _401) * fma(0.959999978542327880859375, pow(clamp(1.0 - dot(_384, vec3(0.57700002193450927734375, 0.57700002193450927734375, -0.57700002193450927734375)), 0.0, 1.0), 5.0), 0.039999999105930328369140625)) * 15.0)); } void main() { vec3 _561 = ((eye + (fwd * 1.7999999523162841796875)) + (right * pos.x)) + (up * pos.y); vec3 _566 = normalize(_561 - eye); vec4 color = vec4(0.100000001490116119384765625, 0.20000000298023223876953125, 0.300000011920928955078125, 1.0); float t = 0.0; vec4 param_1; for (int i = 0; i < 96; i++) { vec3 _584 = _561 + (_566 * t); vec3 param = _584; float _590 = d_scene(param, param_1); if (_590 < 0.001000000047497451305389404296875) { vec3 param_2 = _584; vec3 param_3 = _566; float param_4 = _590; vec4 param_5 = param_1; vec3 _604 = calc_color(param_2, param_3, param_4, param_5); vec4 _641 = color; _641.x = _604.x; _641.y = _604.y; _641.z = _604.z; color = _641; break; } else { vec4 _618 = color; vec3 _620 = _618.xyz + (vec3(0.0030000000260770320892333984375, 0.001000000047497451305389404296875, 0.0) * float(i)); vec4 _648 = _618; _648.x = _620.x; _648.y = _620.y; _648.z = _620.z; color = _648; } if (t > 3.0) { break; } t += _590; } frag_color = color; } */ static const uint8_t fs_source_glsl410[6135] = { 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x6c,0x61, 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, 0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x65,0x79,0x65,0x3b,0x0a, 0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, 0x3d,0x20,0x34,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x66,0x77,0x64, 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, 0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x72, 0x69,0x67,0x68,0x74,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65, 0x63,0x32,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c, 0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20, 0x76,0x65,0x63,0x33,0x20,0x75,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75, 0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, 0x72,0x3b,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x64,0x5f,0x73,0x70,0x68, 0x65,0x72,0x65,0x28,0x76,0x65,0x63,0x33,0x20,0x70,0x2c,0x20,0x66,0x6c,0x6f,0x61, 0x74,0x20,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, 0x6e,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x70,0x29,0x20,0x2d,0x20,0x73,0x3b, 0x0a,0x7d,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x64,0x5f,0x6d,0x61,0x6e, 0x64,0x65,0x6c,0x62,0x75,0x6c,0x62,0x28,0x76,0x65,0x63,0x33,0x20,0x70,0x2c,0x20, 0x69,0x6e,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x72,0x65,0x73,0x5f,0x63, 0x6f,0x6c,0x6f,0x72,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, 0x20,0x77,0x20,0x3d,0x20,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, 0x74,0x20,0x5f,0x34,0x39,0x20,0x3d,0x20,0x64,0x6f,0x74,0x28,0x70,0x2c,0x20,0x70, 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x20,0x3d, 0x20,0x5f,0x34,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x74, 0x72,0x61,0x70,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x61,0x62,0x73,0x28,0x70, 0x29,0x2c,0x20,0x5f,0x34,0x39,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, 0x61,0x74,0x20,0x64,0x7a,0x20,0x3d,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20, 0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b, 0x20,0x69,0x20,0x3c,0x20,0x34,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20, 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, 0x20,0x5f,0x37,0x36,0x20,0x3d,0x20,0x6d,0x20,0x2a,0x20,0x6d,0x3b,0x0a,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x7a,0x20,0x3d,0x20,0x66,0x6d,0x61,0x28,0x38, 0x2e,0x30,0x20,0x2a,0x20,0x73,0x71,0x72,0x74,0x28,0x28,0x28,0x5f,0x37,0x36,0x20, 0x2a,0x20,0x5f,0x37,0x36,0x29,0x20,0x2a,0x20,0x5f,0x37,0x36,0x29,0x20,0x2a,0x20, 0x6d,0x29,0x2c,0x20,0x64,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x36,0x35,0x33,0x20, 0x3d,0x20,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, 0x61,0x74,0x20,0x5f,0x31,0x30,0x30,0x20,0x3d,0x20,0x5f,0x36,0x35,0x33,0x2e,0x78, 0x20,0x2a,0x20,0x5f,0x36,0x35,0x33,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x30,0x34,0x20,0x3d,0x20, 0x5f,0x31,0x30,0x30,0x20,0x2a,0x20,0x5f,0x31,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x31,0x32,0x20, 0x3d,0x20,0x5f,0x36,0x35,0x33,0x2e,0x79,0x20,0x2a,0x20,0x5f,0x36,0x35,0x33,0x2e, 0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, 0x20,0x5f,0x31,0x32,0x34,0x20,0x3d,0x20,0x5f,0x36,0x35,0x33,0x2e,0x7a,0x20,0x2a, 0x20,0x5f,0x36,0x35,0x33,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x32,0x38,0x20,0x3d,0x20,0x5f,0x31, 0x32,0x34,0x20,0x2a,0x20,0x5f,0x31,0x32,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33,0x32,0x20,0x3d,0x20, 0x66,0x6d,0x61,0x28,0x5f,0x36,0x35,0x33,0x2e,0x78,0x2c,0x20,0x5f,0x36,0x35,0x33, 0x2e,0x78,0x2c,0x20,0x5f,0x31,0x32,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x34,0x37,0x20,0x3d,0x20, 0x69,0x6e,0x76,0x65,0x72,0x73,0x65,0x73,0x71,0x72,0x74,0x28,0x28,0x28,0x28,0x28, 0x28,0x5f,0x31,0x33,0x32,0x20,0x2a,0x20,0x5f,0x31,0x33,0x32,0x29,0x20,0x2a,0x20, 0x5f,0x31,0x33,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x33,0x32,0x29,0x20,0x2a,0x20, 0x5f,0x31,0x33,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x33,0x32,0x29,0x20,0x2a,0x20, 0x5f,0x31,0x33,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x37,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x28, 0x32,0x2e,0x30,0x20,0x2a,0x20,0x5f,0x31,0x32,0x34,0x2c,0x20,0x5f,0x31,0x30,0x30, 0x2c,0x20,0x66,0x6d,0x61,0x28,0x5f,0x31,0x30,0x30,0x20,0x2a,0x20,0x28,0x2d,0x36, 0x2e,0x30,0x29,0x2c,0x20,0x5f,0x31,0x31,0x32,0x2c,0x20,0x66,0x6d,0x61,0x28,0x5f, 0x31,0x31,0x32,0x20,0x2a,0x20,0x28,0x2d,0x36,0x2e,0x30,0x29,0x2c,0x20,0x5f,0x31, 0x32,0x34,0x2c,0x20,0x66,0x6d,0x61,0x28,0x5f,0x31,0x32,0x34,0x2c,0x20,0x5f,0x31, 0x32,0x34,0x2c,0x20,0x66,0x6d,0x61,0x28,0x5f,0x31,0x30,0x30,0x2c,0x20,0x5f,0x31, 0x30,0x30,0x2c,0x20,0x5f,0x31,0x31,0x32,0x20,0x2a,0x20,0x5f,0x31,0x31,0x32,0x29, 0x29,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, 0x6f,0x61,0x74,0x20,0x5f,0x31,0x37,0x36,0x20,0x3d,0x20,0x66,0x6d,0x61,0x28,0x5f, 0x36,0x35,0x33,0x2e,0x7a,0x2c,0x20,0x5f,0x36,0x35,0x33,0x2e,0x7a,0x2c,0x20,0x66, 0x6d,0x61,0x28,0x5f,0x36,0x35,0x33,0x2e,0x78,0x2c,0x20,0x5f,0x36,0x35,0x33,0x2e, 0x78,0x2c,0x20,0x2d,0x5f,0x31,0x31,0x32,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x36,0x37,0x30,0x20,0x3d,0x20, 0x76,0x65,0x63,0x33,0x28,0x66,0x6d,0x61,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x36, 0x34,0x2e,0x30,0x20,0x2a,0x20,0x5f,0x36,0x35,0x33,0x2e,0x78,0x29,0x20,0x2a,0x20, 0x5f,0x36,0x35,0x33,0x2e,0x79,0x29,0x20,0x2a,0x20,0x5f,0x36,0x35,0x33,0x2e,0x7a, 0x29,0x20,0x2a,0x20,0x66,0x6d,0x61,0x28,0x5f,0x36,0x35,0x33,0x2e,0x78,0x2c,0x20, 0x5f,0x36,0x35,0x33,0x2e,0x78,0x2c,0x20,0x2d,0x5f,0x31,0x32,0x34,0x29,0x29,0x20, 0x2a,0x20,0x5f,0x31,0x37,0x36,0x29,0x20,0x2a,0x20,0x66,0x6d,0x61,0x28,0x5f,0x31, 0x32,0x34,0x2c,0x20,0x5f,0x31,0x32,0x34,0x2c,0x20,0x66,0x6d,0x61,0x28,0x5f,0x31, 0x30,0x30,0x2c,0x20,0x5f,0x31,0x30,0x30,0x2c,0x20,0x2d,0x28,0x28,0x36,0x2e,0x30, 0x20,0x2a,0x20,0x5f,0x31,0x30,0x30,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x34,0x29, 0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x30,0x2c,0x20,0x5f,0x31,0x34,0x37, 0x2c,0x20,0x70,0x2e,0x78,0x29,0x2c,0x20,0x66,0x6d,0x61,0x28,0x5f,0x31,0x37,0x30, 0x2c,0x20,0x5f,0x31,0x37,0x30,0x2c,0x20,0x66,0x6d,0x61,0x28,0x28,0x28,0x28,0x2d, 0x31,0x36,0x2e,0x30,0x29,0x20,0x2a,0x20,0x5f,0x31,0x31,0x32,0x29,0x20,0x2a,0x20, 0x5f,0x31,0x33,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x36,0x2c,0x20,0x5f,0x31, 0x37,0x36,0x2c,0x20,0x70,0x2e,0x79,0x29,0x29,0x2c,0x20,0x66,0x6d,0x61,0x28,0x28, 0x28,0x28,0x28,0x2d,0x38,0x2e,0x30,0x29,0x20,0x2a,0x20,0x5f,0x36,0x35,0x33,0x2e, 0x79,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x36,0x29,0x20,0x2a,0x20,0x66,0x6d,0x61, 0x28,0x5f,0x31,0x32,0x38,0x2c,0x20,0x5f,0x31,0x32,0x38,0x2c,0x20,0x66,0x6d,0x61, 0x28,0x2d,0x28,0x28,0x32,0x38,0x2e,0x30,0x20,0x2a,0x20,0x5f,0x31,0x30,0x30,0x29, 0x20,0x2a,0x20,0x5f,0x31,0x32,0x34,0x29,0x2c,0x20,0x5f,0x31,0x32,0x38,0x2c,0x20, 0x66,0x6d,0x61,0x28,0x37,0x30,0x2e,0x30,0x20,0x2a,0x20,0x5f,0x31,0x30,0x34,0x2c, 0x20,0x5f,0x31,0x32,0x38,0x2c,0x20,0x66,0x6d,0x61,0x28,0x5f,0x31,0x30,0x34,0x2c, 0x20,0x5f,0x31,0x30,0x34,0x2c,0x20,0x2d,0x28,0x28,0x28,0x32,0x38,0x2e,0x30,0x20, 0x2a,0x20,0x5f,0x31,0x30,0x34,0x29,0x20,0x2a,0x20,0x5f,0x31,0x30,0x30,0x29,0x20, 0x2a,0x20,0x5f,0x31,0x32,0x34,0x29,0x29,0x29,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f, 0x31,0x37,0x30,0x2c,0x20,0x5f,0x31,0x34,0x37,0x2c,0x20,0x70,0x2e,0x7a,0x29,0x29, 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x20,0x3d,0x20,0x5f,0x36, 0x37,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x72,0x61,0x70, 0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x74,0x72,0x61,0x70,0x2c,0x20,0x76,0x65,0x63, 0x34,0x28,0x61,0x62,0x73,0x28,0x5f,0x36,0x37,0x30,0x29,0x2c,0x20,0x6d,0x29,0x29, 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, 0x5f,0x32,0x37,0x37,0x20,0x3d,0x20,0x64,0x6f,0x74,0x28,0x5f,0x36,0x37,0x30,0x2c, 0x20,0x5f,0x36,0x37,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x6d,0x20,0x3d,0x20,0x5f,0x32,0x37,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x37,0x37,0x20,0x3e,0x20,0x32,0x35,0x36, 0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x72,0x65,0x61,0x6b,0x3b, 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d, 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d, 0x20,0x76,0x65,0x63,0x34,0x28,0x6d,0x2c,0x20,0x74,0x72,0x61,0x70,0x2e,0x79,0x7a, 0x77,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28, 0x28,0x30,0x2e,0x32,0x35,0x20,0x2a,0x20,0x6c,0x6f,0x67,0x28,0x6d,0x29,0x29,0x20, 0x2a,0x20,0x73,0x71,0x72,0x74,0x28,0x6d,0x29,0x29,0x20,0x2f,0x20,0x64,0x7a,0x3b, 0x0a,0x7d,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x5f,0x73,0x63,0x65,0x6e, 0x65,0x28,0x76,0x65,0x63,0x33,0x20,0x70,0x2c,0x20,0x6f,0x75,0x74,0x20,0x76,0x65, 0x63,0x34,0x20,0x72,0x65,0x73,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x29,0x0a,0x7b,0x0a, 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d, 0x20,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61, 0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x31,0x2e,0x31,0x30,0x30,0x30,0x30,0x30, 0x30,0x32,0x33,0x38,0x34,0x31,0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32, 0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x31, 0x30,0x20,0x3d,0x20,0x73,0x64,0x5f,0x73,0x70,0x68,0x65,0x72,0x65,0x28,0x70,0x61, 0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20, 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x20,0x3d,0x20,0x5f,0x33,0x31, 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x31,0x30,0x20, 0x3c,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30, 0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29, 0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76, 0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x70,0x3b, 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x61, 0x72,0x61,0x6d,0x5f,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x31,0x39,0x20,0x3d,0x20,0x73,0x64,0x5f,0x6d, 0x61,0x6e,0x64,0x65,0x6c,0x62,0x75,0x6c,0x62,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, 0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d, 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x64,0x20,0x3d,0x20,0x5f,0x33,0x31,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20, 0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b, 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x5f,0x63,0x6f,0x6c, 0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a, 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, 0x20,0x64,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x72,0x66, 0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x28,0x76,0x65,0x63,0x33,0x20, 0x70,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x70,0x29,0x0a,0x7b,0x0a,0x20, 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20, 0x70,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x30,0x31,0x30,0x30, 0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35, 0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x2c,0x20,0x30,0x2e, 0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, 0x34,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x33,0x35,0x20,0x3d,0x20,0x64,0x5f,0x73,0x63, 0x65,0x6e,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, 0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61, 0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x70,0x20,0x2b,0x20,0x76,0x65,0x63,0x33, 0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30, 0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39, 0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b, 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, 0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x34, 0x35,0x20,0x3d,0x20,0x64,0x5f,0x73,0x63,0x65,0x6e,0x65,0x28,0x70,0x61,0x72,0x61, 0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20, 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20, 0x3d,0x20,0x70,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20, 0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30, 0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34, 0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76, 0x65,0x63,0x34,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x3b,0x0a,0x20,0x20,0x20, 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x35,0x35,0x20,0x3d,0x20,0x64,0x5f, 0x73,0x63,0x65,0x6e,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x2c,0x20,0x70, 0x61,0x72,0x61,0x6d,0x5f,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74, 0x75,0x72,0x6e,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x76,0x65, 0x63,0x33,0x28,0x5f,0x33,0x33,0x35,0x20,0x2d,0x20,0x64,0x70,0x2c,0x20,0x5f,0x33, 0x34,0x35,0x20,0x2d,0x20,0x64,0x70,0x2c,0x20,0x5f,0x33,0x35,0x35,0x20,0x2d,0x20, 0x64,0x70,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x65,0x63,0x33,0x20,0x63,0x61, 0x6c,0x63,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x76,0x65,0x63,0x33,0x20,0x72,0x6f, 0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x72,0x64,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, 0x20,0x74,0x2c,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x72,0x61,0x29,0x0a,0x7b,0x0a, 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d, 0x20,0x72,0x6f,0x20,0x2b,0x20,0x28,0x72,0x64,0x20,0x2a,0x20,0x74,0x29,0x3b,0x0a, 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, 0x31,0x20,0x3d,0x20,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, 0x5f,0x33,0x37,0x37,0x20,0x3d,0x20,0x73,0x75,0x72,0x66,0x61,0x63,0x65,0x5f,0x6e, 0x6f,0x72,0x6d,0x61,0x6c,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72, 0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, 0x5f,0x33,0x38,0x34,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65, 0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x37,0x37,0x30,0x30,0x30,0x30,0x32, 0x31,0x39,0x33,0x34,0x35,0x30,0x39,0x32,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x2c, 0x20,0x30,0x2e,0x35,0x37,0x37,0x30,0x30,0x30,0x30,0x32,0x31,0x39,0x33,0x34,0x35, 0x30,0x39,0x32,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x2c,0x20,0x2d,0x30,0x2e,0x35, 0x37,0x37,0x30,0x30,0x30,0x30,0x32,0x31,0x39,0x33,0x34,0x35,0x30,0x39,0x32,0x37, 0x37,0x33,0x34,0x33,0x37,0x35,0x29,0x20,0x2d,0x20,0x72,0x64,0x29,0x3b,0x0a,0x20, 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x39,0x31,0x20,0x3d,0x20, 0x63,0x6c,0x61,0x6d,0x70,0x28,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30, 0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32, 0x38,0x31,0x32,0x35,0x20,0x2a,0x20,0x6c,0x6f,0x67,0x28,0x74,0x72,0x61,0x2e,0x78, 0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x30,0x31,0x20,0x3d,0x20,0x63, 0x6c,0x61,0x6d,0x70,0x28,0x64,0x6f,0x74,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, 0x35,0x37,0x37,0x30,0x30,0x30,0x30,0x32,0x31,0x39,0x33,0x34,0x35,0x30,0x39,0x32, 0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x2c,0x20,0x30,0x2e,0x35,0x37,0x37,0x30,0x30, 0x30,0x30,0x32,0x31,0x39,0x33,0x34,0x35,0x30,0x39,0x32,0x37,0x37,0x33,0x34,0x33, 0x37,0x35,0x2c,0x20,0x2d,0x30,0x2e,0x35,0x37,0x37,0x30,0x30,0x30,0x30,0x32,0x31, 0x39,0x33,0x34,0x35,0x30,0x39,0x32,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x29,0x2c, 0x20,0x5f,0x33,0x37,0x37,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30, 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x71, 0x72,0x74,0x28,0x70,0x6f,0x77,0x28,0x6d,0x69,0x78,0x28,0x6d,0x69,0x78,0x28,0x6d, 0x69,0x78,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39, 0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32, 0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30, 0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36, 0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e, 0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32, 0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x33,0x30, 0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35, 0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x63,0x6c, 0x61,0x6d,0x70,0x28,0x74,0x72,0x61,0x2e,0x79,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, 0x31,0x2e,0x30,0x29,0x29,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30, 0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35,0x32,0x39,0x36,0x35,0x31,0x36, 0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x31, 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31, 0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x33,0x30, 0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35, 0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x63,0x6c, 0x61,0x6d,0x70,0x28,0x74,0x72,0x61,0x2e,0x7a,0x20,0x2a,0x20,0x74,0x72,0x61,0x2e, 0x7a,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x2c,0x20, 0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31, 0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c, 0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31, 0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20, 0x30,0x2e,0x30,0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35,0x32,0x39,0x36, 0x35,0x31,0x36,0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32,0x35,0x29,0x2c, 0x20,0x76,0x65,0x63,0x33,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x70,0x6f,0x77,0x28, 0x74,0x72,0x61,0x2e,0x77,0x2c,0x20,0x36,0x2e,0x30,0x29,0x2c,0x20,0x30,0x2e,0x30, 0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x28,0x28,0x28,0x28, 0x76,0x65,0x63,0x33,0x28,0x31,0x30,0x2e,0x35,0x2c,0x20,0x37,0x2e,0x36,0x39,0x39, 0x39,0x39,0x39,0x38,0x30,0x39,0x32,0x36,0x35,0x31,0x33,0x36,0x37,0x31,0x38,0x37, 0x35,0x2c,0x20,0x34,0x2e,0x39,0x30,0x30,0x30,0x30,0x30,0x30,0x39,0x35,0x33,0x36, 0x37,0x34,0x33,0x31,0x36,0x34,0x30,0x36,0x32,0x35,0x29,0x20,0x2a,0x20,0x5f,0x34, 0x30,0x31,0x29,0x20,0x2b,0x20,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c, 0x20,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39, 0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x36, 0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38,0x34,0x31,0x38,0x35,0x37,0x39,0x31, 0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2a,0x20,0x28,0x63,0x6c,0x61,0x6d,0x70, 0x28,0x66,0x6d,0x61,0x28,0x30,0x2e,0x35,0x2c,0x20,0x64,0x6f,0x74,0x28,0x76,0x65, 0x63,0x33,0x28,0x2d,0x30,0x2e,0x37,0x30,0x37,0x30,0x30,0x30,0x30,0x31,0x37,0x31, 0x36,0x36,0x31,0x33,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e, 0x30,0x2c,0x20,0x30,0x2e,0x37,0x30,0x37,0x30,0x30,0x30,0x30,0x31,0x37,0x31,0x36, 0x36,0x31,0x33,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20,0x5f,0x33, 0x37,0x37,0x29,0x2c,0x20,0x30,0x2e,0x35,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, 0x31,0x2e,0x30,0x29,0x20,0x2a,0x20,0x5f,0x33,0x39,0x31,0x29,0x29,0x29,0x20,0x2b, 0x20,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x31,0x35,0x30,0x30,0x30,0x30,0x30, 0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36, 0x32,0x35,0x2c,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39, 0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20, 0x30,0x2e,0x34,0x34,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37, 0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x20,0x2a,0x20,0x28,0x66, 0x6d,0x61,0x28,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32, 0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x5f, 0x33,0x37,0x37,0x2e,0x79,0x2c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39, 0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37, 0x35,0x29,0x20,0x2a,0x20,0x66,0x6d,0x61,0x28,0x30,0x2e,0x38,0x30,0x30,0x30,0x30, 0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38, 0x31,0x32,0x35,0x2c,0x20,0x5f,0x33,0x39,0x31,0x2c,0x20,0x30,0x2e,0x32,0x30,0x30, 0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37, 0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x29,0x29,0x29,0x20,0x2b,0x20,0x28,0x76, 0x65,0x63,0x33,0x28,0x30,0x2e,0x38,0x37,0x35,0x2c,0x20,0x30,0x2e,0x37,0x35,0x2c, 0x20,0x30,0x2e,0x36,0x32,0x35,0x29,0x20,0x2a,0x20,0x66,0x6d,0x61,0x28,0x30,0x2e, 0x39,0x34,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30, 0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x2c,0x20,0x5f,0x33,0x39,0x31,0x2c,0x20, 0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35, 0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x29, 0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a,0x20, 0x63,0x6c,0x61,0x6d,0x70,0x28,0x31,0x2e,0x30,0x20,0x2b,0x20,0x64,0x6f,0x74,0x28, 0x72,0x64,0x2c,0x20,0x5f,0x33,0x37,0x37,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, 0x31,0x2e,0x30,0x29,0x29,0x20,0x2a,0x20,0x5f,0x33,0x39,0x31,0x29,0x29,0x2c,0x20, 0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38, 0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x2c, 0x20,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31, 0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29, 0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x28,0x70,0x6f,0x77,0x28,0x63, 0x6c,0x61,0x6d,0x70,0x28,0x64,0x6f,0x74,0x28,0x5f,0x33,0x37,0x37,0x2c,0x20,0x5f, 0x33,0x38,0x34,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c, 0x20,0x33,0x32,0x2e,0x30,0x29,0x20,0x2a,0x20,0x5f,0x34,0x30,0x31,0x29,0x20,0x2a, 0x20,0x66,0x6d,0x61,0x28,0x30,0x2e,0x39,0x35,0x39,0x39,0x39,0x39,0x39,0x37,0x38, 0x35,0x34,0x32,0x33,0x32,0x37,0x38,0x38,0x30,0x38,0x35,0x39,0x33,0x37,0x35,0x2c, 0x20,0x70,0x6f,0x77,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x31,0x2e,0x30,0x20,0x2d, 0x20,0x64,0x6f,0x74,0x28,0x5f,0x33,0x38,0x34,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, 0x30,0x2e,0x35,0x37,0x37,0x30,0x30,0x30,0x30,0x32,0x31,0x39,0x33,0x34,0x35,0x30, 0x39,0x32,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x2c,0x20,0x30,0x2e,0x35,0x37,0x37, 0x30,0x30,0x30,0x30,0x32,0x31,0x39,0x33,0x34,0x35,0x30,0x39,0x32,0x37,0x37,0x33, 0x34,0x33,0x37,0x35,0x2c,0x20,0x2d,0x30,0x2e,0x35,0x37,0x37,0x30,0x30,0x30,0x30, 0x32,0x31,0x39,0x33,0x34,0x35,0x30,0x39,0x32,0x37,0x37,0x33,0x34,0x33,0x37,0x35, 0x29,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x35, 0x2e,0x30,0x29,0x2c,0x20,0x30,0x2e,0x30,0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x39, 0x31,0x30,0x35,0x39,0x33,0x30,0x33,0x32,0x38,0x33,0x36,0x39,0x31,0x34,0x30,0x36, 0x32,0x35,0x29,0x29,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d, 0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a, 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x36,0x31,0x20,0x3d,0x20, 0x28,0x28,0x65,0x79,0x65,0x20,0x2b,0x20,0x28,0x66,0x77,0x64,0x20,0x2a,0x20,0x31, 0x2e,0x37,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x32,0x33,0x31,0x36,0x32,0x38,0x34, 0x31,0x37,0x39,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2b,0x20,0x28,0x72,0x69,0x67, 0x68,0x74,0x20,0x2a,0x20,0x70,0x6f,0x73,0x2e,0x78,0x29,0x29,0x20,0x2b,0x20,0x28, 0x75,0x70,0x20,0x2a,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x3b,0x0a,0x20,0x20,0x20, 0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x36,0x36,0x20,0x3d,0x20,0x6e,0x6f,0x72, 0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x35,0x36,0x31,0x20,0x2d,0x20,0x65,0x79, 0x65,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c, 0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x31,0x30,0x30,0x30, 0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38, 0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30, 0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39, 0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30, 0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32, 0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, 0x61,0x74,0x20,0x74,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, 0x76,0x65,0x63,0x34,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x3b,0x0a,0x20,0x20, 0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30, 0x3b,0x20,0x69,0x20,0x3c,0x20,0x39,0x36,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20, 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63, 0x33,0x20,0x5f,0x35,0x38,0x34,0x20,0x3d,0x20,0x5f,0x35,0x36,0x31,0x20,0x2b,0x20, 0x28,0x5f,0x35,0x36,0x36,0x20,0x2a,0x20,0x74,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d, 0x20,0x5f,0x35,0x38,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x39,0x30,0x20,0x3d,0x20,0x64,0x5f,0x73,0x63, 0x65,0x6e,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, 0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, 0x28,0x5f,0x35,0x39,0x30,0x20,0x3c,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30, 0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33, 0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x29,0x0a,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20, 0x3d,0x20,0x5f,0x35,0x38,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33, 0x20,0x3d,0x20,0x5f,0x35,0x36,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d, 0x5f,0x34,0x20,0x3d,0x20,0x5f,0x35,0x39,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x61,0x72,0x61, 0x6d,0x5f,0x35,0x20,0x3d,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x3b,0x0a,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, 0x5f,0x36,0x30,0x34,0x20,0x3d,0x20,0x63,0x61,0x6c,0x63,0x5f,0x63,0x6f,0x6c,0x6f, 0x72,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, 0x5f,0x33,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x2c,0x20,0x70,0x61,0x72, 0x61,0x6d,0x5f,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x36,0x34,0x31,0x20,0x3d,0x20,0x63, 0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x5f,0x36,0x34,0x31,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x36,0x30,0x34,0x2e, 0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f, 0x36,0x34,0x31,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x36,0x30,0x34,0x2e,0x79,0x3b,0x0a, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x36,0x34,0x31, 0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x36,0x30,0x34,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d, 0x20,0x5f,0x36,0x34,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x62,0x72,0x65,0x61,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x36,0x31,0x38, 0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x36,0x32,0x30,0x20, 0x3d,0x20,0x5f,0x36,0x31,0x38,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x28,0x76,0x65, 0x63,0x33,0x28,0x30,0x2e,0x30,0x30,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32, 0x36,0x30,0x37,0x37,0x30,0x33,0x32,0x30,0x38,0x39,0x32,0x33,0x33,0x33,0x39,0x38, 0x34,0x33,0x37,0x35,0x2c,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30, 0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39, 0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x2c,0x20,0x30,0x2e,0x30,0x29,0x20, 0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x36, 0x34,0x38,0x20,0x3d,0x20,0x5f,0x36,0x31,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x36,0x34,0x38,0x2e,0x78,0x20,0x3d,0x20, 0x5f,0x36,0x32,0x30,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x5f,0x36,0x34,0x38,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x36,0x32, 0x30,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x5f,0x36,0x34,0x38,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x36,0x32,0x30,0x2e,0x7a, 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f, 0x6c,0x6f,0x72,0x20,0x3d,0x20,0x5f,0x36,0x34,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, 0x20,0x28,0x74,0x20,0x3e,0x20,0x33,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x62,0x72,0x65,0x61,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x20,0x2b,0x3d,0x20,0x5f, 0x35,0x39,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66, 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f, 0x72,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, }; static inline const sg_shader_desc* sdf_shader_desc(sg_backend backend) { if (backend == SG_BACKEND_GLCORE) { static sg_shader_desc desc; static bool valid; if (!valid) { valid = true; desc.attrs[0].name = "position"; desc.vs.source = (const char*)vs_source_glsl410; desc.vs.entry = "main"; desc.vs.uniform_blocks[0].size = 16; desc.vs.uniform_blocks[0].layout = SG_UNIFORMLAYOUT_STD140; desc.vs.uniform_blocks[0].uniforms[0].name = "vs_params"; desc.vs.uniform_blocks[0].uniforms[0].type = SG_UNIFORMTYPE_FLOAT4; desc.vs.uniform_blocks[0].uniforms[0].array_count = 1; desc.fs.source = (const char*)fs_source_glsl410; desc.fs.entry = "main"; desc.label = "sdf_shader"; } return &desc; } return 0; }