]> O.S.I.I.S - jp/vkvg.git/commitdiff
add font uv vertex attribute, valgrind check, debug
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Sun, 12 Jan 2020 17:31:11 +0000 (18:31 +0100)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Sun, 12 Jan 2020 17:31:11 +0000 (18:31 +0100)
16 files changed:
include/vkvg.h
shaders/vkvg_main.vert
shaders/vkvg_main_lcd.frag
src/shaders.h
src/vkvg_context.c
src/vkvg_context_internal.c
src/vkvg_context_internal.h
src/vkvg_device.c
src/vkvg_device_internal.c
src/vkvg_fonts.c
tests/common/test.c
tests/gradient_transform.c
tests/random_cirles.c
tests/simple_paint.c
tests/svg.c
tests/test1.c

index bcdb00403de9660b393f28847ea43bbdee398be6..0cf7e8913751eec7baaa5b5b4d95bc38c7f7609e 100644 (file)
@@ -271,6 +271,7 @@ void vkvg_clip              (VkvgContext ctx);
 void vkvg_clip_preserve     (VkvgContext ctx);
 void vkvg_set_source_rgba      (VkvgContext ctx, float r, float g, float b, float a);
 void vkvg_set_source_rgb    (VkvgContext ctx, float r, float g, float b);
+//void vkvg_set_source_color  (VkvgContext ctx, uint32_t rgba);
 void vkvg_set_line_width       (VkvgContext ctx, float width);
 void vkvg_set_line_cap      (VkvgContext ctx, vkvg_line_cap_t cap);
 void vkvg_set_line_join     (VkvgContext ctx, vkvg_line_join_t join);
index 5b4619f94898bcb468ce7aa285f99c687aa9e75f..c8a84a88bc47ffacce5f7a1d24cebb65ad8ccc10 100644 (file)
@@ -26,6 +26,8 @@
 
 layout (location = 0) in               vec2 inPos;
 layout (location = 1) in lowp   vec4 inColor;
+layout (location = 2) in               vec2 inUV;
+layout (location = 3) in               int      inUVZ;
 
 layout (location = 0) out              vec3 outUV;
 layout (location = 1) out              vec4 outSrc;
@@ -76,7 +78,7 @@ void main()
                uv -= pc.source.xy;
                outUV = vec3(uv.x / pc.source.z, uv.y / pc.source.w ,-1);
        }else
-               outUV = vec3(0,0,-1);
+               outUV = vec3(inUV, inUVZ);
 
        gl_Position = vec4(p0 * vec2(2) / pc.size - vec2(1), 0.0, 1.0);
 }
index bbc2d1ea6270f0c49c54352f74b91125f85655c2..1360b29b17a315933cac7a92432900eba8488013 100644 (file)
@@ -88,8 +88,8 @@ void main()
                break;
        }
 
-       /*if (inFontUV.z >= 0.0)
-               c *= texture(fontMap, inFontUV);*/
+       if (inFontUV.z >= 0.0)
+               c *= texture(fontMap, inFontUV);
 
        outFragColor = c;
 }
index a664e471b14920c461a5219ed5bf7573fd18f0d1..7c7c7e099ff3acb596c4833480faec18df59d74e 100644 (file)
@@ -1007,92 +1007,98 @@ unsigned char vkvg_main_frag_spv[] = {
 unsigned int vkvg_main_frag_spv_len = 5780;
 unsigned char vkvg_main_vert_spv[] = {
   0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x0d, 0x00,
-  0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
+  0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
   0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30,
   0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
   0x08, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00,
   0x1a, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00,
-  0x42, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00,
-  0x02, 0x00, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x04, 0x00, 0x09, 0x00,
-  0x47, 0x4c, 0x5f, 0x41, 0x52, 0x42, 0x5f, 0x73, 0x65, 0x70, 0x61, 0x72,
-  0x61, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6f,
-  0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x00, 0x00, 0x04, 0x00, 0x09, 0x00,
-  0x47, 0x4c, 0x5f, 0x41, 0x52, 0x42, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x69,
-  0x6e, 0x67, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f,
-  0x34, 0x32, 0x30, 0x70, 0x61, 0x63, 0x6b, 0x00, 0x04, 0x00, 0x0a, 0x00,
-  0x47, 0x4c, 0x5f, 0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45, 0x5f, 0x63, 0x70,
-  0x70, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x6e, 0x65,
-  0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x00, 0x00,
-  0x04, 0x00, 0x08, 0x00, 0x47, 0x4c, 0x5f, 0x47, 0x4f, 0x4f, 0x47, 0x4c,
-  0x45, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x69,
-  0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x00, 0x05, 0x00, 0x04, 0x00,
-  0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
-  0x05, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x50,
-  0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00,
-  0x0d, 0x00, 0x00, 0x00, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x73,
-  0x74, 0x73, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x00, 0x00,
-  0x06, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-  0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00,
-  0x0d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x54,
-  0x79, 0x70, 0x65, 0x00, 0x06, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00,
-  0x03, 0x00, 0x00, 0x00, 0x66, 0x75, 0x6c, 0x6c, 0x53, 0x63, 0x72, 0x65,
-  0x65, 0x6e, 0x51, 0x75, 0x61, 0x64, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00,
-  0x0d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x74, 0x00,
-  0x06, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
-  0x6d, 0x61, 0x74, 0x49, 0x6e, 0x76, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00,
-  0x0f, 0x00, 0x00, 0x00, 0x70, 0x63, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00,
-  0x15, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x53, 0x72, 0x63, 0x00, 0x00,
-  0x05, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x43, 0x6f,
-  0x6c, 0x6f, 0x72, 0x00, 0x05, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00,
-  0x6f, 0x75, 0x74, 0x4d, 0x61, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00,
-  0x27, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x65, 0x72, 0x56, 0x65,
-  0x72, 0x74, 0x65, 0x78, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00,
-  0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x50,
-  0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x05, 0x00, 0x03, 0x00,
-  0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00,
-  0x2b, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65,
-  0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00,
-  0x42, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x55, 0x56, 0x00, 0x00, 0x00,
-  0x05, 0x00, 0x03, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x70, 0x30, 0x00, 0x00,
-  0x05, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x50, 0x6f,
-  0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00,
-  0x75, 0x76, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00,
-  0x0e, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00,
-  0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00,
-  0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00,
-  0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
-  0x48, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
-  0x23, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00,
-  0x0d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
-  0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00,
-  0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00,
-  0x0d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
-  0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00,
-  0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
-  0x48, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
-  0x05, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00,
-  0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
-  0x48, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
-  0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00,
-  0x0d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
-  0x15, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-  0x47, 0x00, 0x03, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
-  0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x18, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00,
-  0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00,
-  0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x27, 0x00, 0x00, 0x00,
-  0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00,
-  0x0b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
-  0x42, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x47, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00,
+  0x42, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00,
+  0x90, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00,
+  0xc2, 0x01, 0x00, 0x00, 0x04, 0x00, 0x09, 0x00, 0x47, 0x4c, 0x5f, 0x41,
+  0x52, 0x42, 0x5f, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x5f,
+  0x73, 0x68, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63,
+  0x74, 0x73, 0x00, 0x00, 0x04, 0x00, 0x09, 0x00, 0x47, 0x4c, 0x5f, 0x41,
+  0x52, 0x42, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6c,
+  0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x34, 0x32, 0x30, 0x70,
+  0x61, 0x63, 0x6b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x47, 0x4c, 0x5f, 0x47,
+  0x4f, 0x4f, 0x47, 0x4c, 0x45, 0x5f, 0x63, 0x70, 0x70, 0x5f, 0x73, 0x74,
+  0x79, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x64, 0x69, 0x72,
+  0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00,
+  0x47, 0x4c, 0x5f, 0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45, 0x5f, 0x69, 0x6e,
+  0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
+  0x69, 0x76, 0x65, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00,
+  0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00,
+  0x08, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x50, 0x61, 0x74, 0x54, 0x79,
+  0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00,
+  0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x73, 0x00, 0x00,
+  0x06, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00,
+  0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65,
+  0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x54, 0x79, 0x70, 0x65, 0x00,
+  0x06, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+  0x66, 0x75, 0x6c, 0x6c, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x51, 0x75,
+  0x61, 0x64, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00,
+  0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x74, 0x00, 0x06, 0x00, 0x05, 0x00,
+  0x0d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x74, 0x49,
+  0x6e, 0x76, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x00, 0x00,
+  0x70, 0x63, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00,
+  0x6f, 0x75, 0x74, 0x53, 0x72, 0x63, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00,
+  0x17, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00,
+  0x05, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x4d,
+  0x61, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x27, 0x00, 0x00, 0x00,
+  0x67, 0x6c, 0x5f, 0x50, 0x65, 0x72, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78,
+  0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x27, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74,
+  0x69, 0x6f, 0x6e, 0x00, 0x05, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x2b, 0x00, 0x00, 0x00,
+  0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64,
+  0x65, 0x78, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00,
+  0x6f, 0x75, 0x74, 0x55, 0x56, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00,
+  0x4e, 0x00, 0x00, 0x00, 0x70, 0x30, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00,
+  0x50, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x00, 0x00, 0x00,
+  0x05, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, 0x75, 0x76, 0x00, 0x00,
+  0x05, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x55, 0x56,
+  0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00,
+  0x69, 0x6e, 0x55, 0x56, 0x5a, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00,
+  0x08, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
+  0x08, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+  0x48, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00,
+  0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
+  0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+  0x48, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+  0x23, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00,
+  0x0d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+  0x48, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+  0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00,
+  0x0d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
+  0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00,
+  0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00,
+  0x0d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
+  0x38, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x00,
+  0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+  0x47, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+  0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x17, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00,
+  0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00,
+  0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
+  0x1a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+  0x48, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00,
+  0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
+  0x2b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00,
+  0x47, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00,
+  0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
+  0x8e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+  0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
+  0x03, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00,
   0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
   0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
   0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
@@ -1158,198 +1164,208 @@ unsigned char vkvg_main_vert_spv[] = {
   0x0a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00,
   0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00,
   0x58, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-  0x2c, 0x00, 0x06, 0x00, 0x40, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00,
-  0x3a, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00,
-  0x2c, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
-  0x35, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
-  0x92, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00,
-  0x2c, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00,
-  0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00,
-  0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00,
-  0x3b, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00,
-  0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00,
-  0x57, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
-  0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
-  0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
-  0x08, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x0a, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00,
-  0x3e, 0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
-  0x41, 0x00, 0x05, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00,
-  0x0f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x0c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00,
-  0x3e, 0x00, 0x03, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
-  0x41, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-  0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-  0xab, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
-  0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00,
-  0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
-  0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00,
-  0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00,
-  0xc4, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00,
-  0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x05, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00,
+  0x3b, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00,
+  0x90, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00,
+  0x0b, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00,
+  0x35, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00,
+  0x0b, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00,
+  0x3b, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00,
+  0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+  0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
+  0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
+  0x3b, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,
+  0x07, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00,
+  0x12, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
+  0x12, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00,
+  0x13, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00,
+  0x18, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
+  0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
+  0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
+  0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00,
+  0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
+  0x1a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
+  0x11, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
+  0x1f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xab, 0x00, 0x05, 0x00,
+  0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
+  0x22, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00,
+  0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00,
+  0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x05, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00,
+  0x2d, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+  0x6f, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
+  0x2f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x31, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x05, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
   0x10, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,
-  0x30, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00,
-  0xc7, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
-  0x31, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00,
-  0x09, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
-  0x50, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
-  0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00,
-  0x0b, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
-  0x35, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00,
-  0x38, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00,
-  0x81, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00,
-  0x36, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00,
-  0x09, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-  0x50, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00,
-  0x3c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00,
-  0x3b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00,
-  0x3f, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
-  0x3e, 0x00, 0x03, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00,
-  0x2b, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x44, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00,
-  0xc7, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00,
-  0x44, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00,
-  0x09, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00,
-  0x2b, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x48, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
-  0x6f, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00,
-  0x48, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x40, 0x00, 0x00, 0x00,
-  0x4b, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00,
-  0x4a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x42, 0x00, 0x00, 0x00,
-  0x4b, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0xf8, 0x00, 0x02, 0x00,
-  0x26, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00,
-  0x51, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
-  0x4e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
-  0x11, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
-  0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00,
-  0x23, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00,
-  0x2d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00,
-  0x55, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00,
-  0x55, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00, 0x5a, 0x00, 0x00, 0x00,
-  0x5b, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00,
-  0x22, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x09, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00,
-  0x41, 0x00, 0x05, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00,
-  0x4e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x09, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00,
-  0x85, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
-  0x5c, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00,
-  0x5a, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
-  0x1b, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00,
-  0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x5d, 0x00, 0x00, 0x00,
-  0x64, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00,
-  0x64, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00,
-  0x66, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00,
-  0x81, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00,
-  0x60, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00,
-  0x5a, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
-  0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00,
-  0x68, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00,
-  0x6a, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00,
-  0x41, 0x00, 0x07, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00,
+  0x33, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00,
+  0x0b, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
+  0x33, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00,
+  0x36, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00,
+  0x50, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
+  0x37, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00,
+  0x0b, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00,
+  0x38, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00,
+  0x3c, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00,
+  0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00,
+  0x0a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00,
+  0x41, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00,
+  0x29, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
+  0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00,
+  0xc4, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00,
+  0x43, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x05, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00,
+  0x10, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,
+  0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00,
+  0xc7, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00,
+  0x47, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00,
+  0x50, 0x00, 0x06, 0x00, 0x40, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00,
+  0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00,
+  0x3e, 0x00, 0x03, 0x00, 0x42, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00,
+  0xfd, 0x00, 0x01, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x26, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00,
+  0x50, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4e, 0x00, 0x00, 0x00,
+  0x51, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00,
+  0x52, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00,
+  0x52, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x00,
+  0x54, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00,
+  0xf7, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0xfa, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00,
+  0x8d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00,
+  0x41, 0x00, 0x07, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00,
   0x0f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
-  0x63, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,
-  0x6c, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
-  0x5d, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00,
   0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,
-  0x6e, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
-  0x09, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00,
-  0x6e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00, 0x5a, 0x00, 0x00, 0x00,
-  0x70, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00,
-  0x2d, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x09, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
-  0x41, 0x00, 0x05, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
-  0x4e, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x09, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
-  0x85, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00,
-  0x71, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00,
-  0x09, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
-  0x74, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00, 0x5a, 0x00, 0x00, 0x00,
-  0x76, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00,
-  0x10, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x09, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00,
-  0x81, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
-  0x75, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00,
-  0x0b, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00,
-  0x78, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00,
-  0x79, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x7a, 0x00, 0x00, 0x00,
-  0x7b, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00,
-  0x7b, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00,
-  0x7d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x0b, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,
-  0x83, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
-  0x7e, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
-  0x57, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
-  0x5d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,
+  0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
+  0x5d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00,
   0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,
-  0x81, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00,
-  0x5a, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
-  0x22, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x09, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00,
-  0x88, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00,
-  0x81, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
-  0x5d, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,
+  0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00,
+  0x5f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00, 0x5a, 0x00, 0x00, 0x00,
+  0x61, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00,
+  0x2d, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00,
+  0x41, 0x00, 0x05, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00,
+  0x4e, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00,
+  0x85, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00,
+  0x62, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+  0x66, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00, 0x5a, 0x00, 0x00, 0x00,
+  0x68, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00,
+  0x10, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00,
+  0x81, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00,
+  0x67, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00,
+  0x5a, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
+  0x1b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00,
+  0x6b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x5d, 0x00, 0x00, 0x00,
+  0x6d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00,
+  0x6d, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00,
+  0x6f, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00,
+  0x41, 0x00, 0x07, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
+  0x0f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00,
+  0x63, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,
+  0x71, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
+  0x5d, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00,
+  0x63, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,
+  0x73, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00,
+  0x73, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00,
+  0x75, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00,
+  0x41, 0x00, 0x07, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00,
+  0x0f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
   0x63, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,
-  0x87, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00,
-  0x5a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
-  0x22, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x09, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00,
-  0x88, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00,
-  0x87, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00,
-  0x40, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00,
-  0x8b, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
-  0x42, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00,
-  0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x8d, 0x00, 0x00, 0x00,
-  0x3e, 0x00, 0x03, 0x00, 0x42, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00,
+  0x77, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00,
+  0x77, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00,
+  0x79, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
+  0x3e, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00,
+  0x41, 0x00, 0x05, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00,
+  0x0f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x0a, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00,
+  0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00,
+  0x7c, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00,
+  0x7e, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00,
+  0x0b, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00,
+  0x7d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00,
+  0x7f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x5d, 0x00, 0x00, 0x00,
+  0x80, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00,
+  0x80, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x5a, 0x00, 0x00, 0x00,
+  0x83, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
+  0x82, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,
+  0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00,
+  0x84, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x5d, 0x00, 0x00, 0x00,
+  0x86, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00,
+  0x86, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x5a, 0x00, 0x00, 0x00,
+  0x89, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
+  0x88, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,
+  0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00,
+  0x8a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x40, 0x00, 0x00, 0x00,
+  0x8c, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00,
+  0x37, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x42, 0x00, 0x00, 0x00,
+  0x8c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00,
+  0xf8, 0x00, 0x02, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x0b, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00,
+  0x90, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,
+  0x92, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00,
+  0x94, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x50, 0x00, 0x06, 0x00, 0x40, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00,
+  0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00,
+  0x3e, 0x00, 0x03, 0x00, 0x42, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00,
   0xf9, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00,
   0x56, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00,
-  0x8f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
-  0x0b, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00,
-  0x90, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x92, 0x00, 0x00, 0x00,
-  0x93, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00,
-  0x93, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00,
-  0x95, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00,
-  0x83, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00,
-  0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00,
-  0x09, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00,
+  0x96, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
+  0x0b, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00,
+  0x97, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x99, 0x00, 0x00, 0x00,
+  0x9a, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00,
+  0x9a, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00,
+  0x9c, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00,
+  0x83, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00,
+  0x9c, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00,
-  0x99, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-  0x50, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00,
-  0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00,
+  0xa0, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x50, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00,
+  0x9f, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00,
   0x3b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00,
-  0x9b, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
-  0x3e, 0x00, 0x03, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00,
+  0xa2, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
+  0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00,
   0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00
 };
-unsigned int vkvg_main_vert_spv_len = 3980;
+unsigned int vkvg_main_vert_spv_len = 4172;
 unsigned char vkvg_main_lcd_frag_spv[] = {
   0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x0d, 0x00,
-  0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
+  0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
   0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30,
   0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x04, 0x00, 0x00, 0x00,
   0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
   0x0e, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-  0x5f, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00,
+  0x5f, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00,
   0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
   0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00,
   0x04, 0x00, 0x09, 0x00, 0x47, 0x4c, 0x5f, 0x41, 0x52, 0x42, 0x5f, 0x73,
@@ -1396,12 +1412,12 @@ unsigned char vkvg_main_lcd_frag_spv[] = {
   0x63, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00,
   0x66, 0x00, 0x00, 0x00, 0x78, 0x4c, 0x6f, 0x63, 0x52, 0x6f, 0x74, 0x61,
   0x74, 0x65, 0x64, 0x00, 0x05, 0x00, 0x03, 0x00, 0x87, 0x00, 0x00, 0x00,
-  0x69, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0xb4, 0x00, 0x00, 0x00,
-  0x6f, 0x75, 0x74, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72,
-  0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xb9, 0x00, 0x00, 0x00,
-  0x66, 0x6f, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x00, 0x05, 0x00, 0x04, 0x00,
-  0xbc, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x00, 0x00, 0x00,
-  0x05, 0x00, 0x05, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x4e, 0x55, 0x4d, 0x5f,
+  0x69, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xbc, 0x00, 0x00, 0x00,
+  0x66, 0x6f, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x00, 0x05, 0x00, 0x06, 0x00,
+  0xc3, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x46, 0x72, 0x61, 0x67, 0x43,
+  0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00,
+  0xc7, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x00, 0x00, 0x00,
+  0x05, 0x00, 0x05, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x4e, 0x55, 0x4d, 0x5f,
   0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x00, 0x47, 0x00, 0x03, 0x00,
   0x0e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
   0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
@@ -1426,12 +1442,12 @@ unsigned char vkvg_main_lcd_frag_spv[] = {
   0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00,
   0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
   0x5f, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
-  0x47, 0x00, 0x04, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xb9, 0x00, 0x00, 0x00,
-  0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
-  0xb9, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-  0x47, 0x00, 0x04, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
-  0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xbd, 0x00, 0x00, 0x00,
+  0x47, 0x00, 0x04, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xbc, 0x00, 0x00, 0x00,
+  0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
+  0xc3, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x47, 0x00, 0x04, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
+  0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc8, 0x00, 0x00, 0x00,
   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00,
   0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,
   0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00,
@@ -1491,255 +1507,273 @@ unsigned char vkvg_main_lcd_frag_spv[] = {
   0x0c, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
   0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
   0x28, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x94, 0x00, 0x00, 0x00,
-  0x20, 0x00, 0x04, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-  0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xb3, 0x00, 0x00, 0x00,
-  0xb4, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00,
-  0xb6, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00,
-  0xb7, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
-  0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00,
-  0x3b, 0x00, 0x04, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0xba, 0x00, 0x00, 0x00,
-  0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
-  0xbb, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00,
-  0x3b, 0x00, 0x04, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00,
-  0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00,
-  0xbd, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00,
-  0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00,
-  0x3b, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
-  0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00,
-  0x27, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
-  0x26, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
-  0x3b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00,
+  0x2b, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0xb9, 0x00, 0x00, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0xba, 0x00, 0x00, 0x00,
+  0xb9, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xbb, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
+  0xbb, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x20, 0x00, 0x04, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+  0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xc2, 0x00, 0x00, 0x00,
+  0xc3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00,
+  0xc5, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+  0x20, 0x00, 0x04, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0xc5, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xc6, 0x00, 0x00, 0x00,
+  0xc7, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x04, 0x00,
+  0x0c, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+  0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00,
+  0x05, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
+  0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
+  0x3b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00,
   0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00,
-  0x5a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
-  0x26, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
-  0x3b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00,
+  0x4e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
+  0x26, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
+  0x3b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00,
   0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00,
-  0x66, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
-  0x86, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
-  0x3e, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
-  0x0e, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x14, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x00, 0x00,
-  0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
-  0x01, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
-  0x12, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
-  0xf8, 0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x07, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
-  0x3e, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00,
-  0xf9, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00,
-  0x11, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00,
-  0x1d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x1e, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-  0x4f, 0x00, 0x07, 0x00, 0x21, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
-  0x22, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x01, 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
-  0x24, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
-  0x3e, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
-  0xf9, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00,
-  0x12, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00, 0x34, 0x00, 0x00, 0x00,
-  0x35, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
-  0x32, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00,
-  0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00,
-  0x36, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00, 0x34, 0x00, 0x00, 0x00,
-  0x38, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
-  0x31, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
-  0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00,
-  0x37, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00,
-  0x34, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
-  0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00,
-  0x3c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00, 0x34, 0x00, 0x00, 0x00,
-  0x3e, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
-  0x31, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00,
-  0x83, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-  0x19, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
-  0x3e, 0x00, 0x03, 0x00, 0x27, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00,
-  0x41, 0x00, 0x07, 0x00, 0x34, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00,
-  0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
-  0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x44, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00,
-  0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00,
-  0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00,
-  0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00,
-  0x44, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00,
-  0x34, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
+  0x63, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
+  0x26, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
+  0x3b, 0x00, 0x04, 0x00, 0x86, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00,
+  0x07, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00,
+  0x0b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00,
+  0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00,
+  0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x0b, 0x00,
+  0x0f, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+  0x13, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00,
+  0x16, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00,
+  0x17, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x00,
+  0xf8, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x1a, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
+  0x20, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x21, 0x00, 0x00, 0x00,
+  0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x57, 0x00, 0x05, 0x00,
+  0x07, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00,
+  0x23, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00,
+  0x24, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x00,
+  0xf8, 0x00, 0x02, 0x00, 0x12, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00,
+  0x34, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
+  0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00,
+  0x35, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x37, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00,
+  0x34, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
   0x31, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00,
-  0x48, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x4a, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-  0x0d, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00,
-  0x4b, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x4d, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
-  0x3e, 0x00, 0x03, 0x00, 0x42, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00,
-  0x41, 0x00, 0x07, 0x00, 0x34, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00,
+  0x38, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x3a, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00,
+  0x41, 0x00, 0x07, 0x00, 0x34, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
   0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
   0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00,
-  0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
-  0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00,
-  0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00,
-  0x50, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00,
-  0x34, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
-  0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00,
-  0x54, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x56, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-  0x0d, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00,
-  0x57, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x59, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00,
-  0x3e, 0x00, 0x03, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00,
-  0x4e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x5c, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00,
-  0x5c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00,
-  0x5d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x60, 0x00, 0x00, 0x00,
-  0x61, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00,
-  0x61, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00,
-  0x62, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x60, 0x00, 0x00, 0x00,
-  0x64, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00,
-  0x64, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x63, 0x00, 0x00, 0x00,
-  0x65, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x67, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00,
-  0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00,
-  0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00,
-  0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00,
-  0x67, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00,
+  0x34, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
+  0x31, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00,
+  0x3e, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x40, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00,
+  0x0c, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00,
+  0x40, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x27, 0x00, 0x00, 0x00,
+  0x41, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00, 0x34, 0x00, 0x00, 0x00,
+  0x43, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
+  0x31, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00,
   0x27, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x6d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
-  0x6c, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x6e, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00,
-  0x83, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
-  0x6a, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
-  0x66, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00,
-  0x70, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
-  0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x07, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00,
-  0x41, 0x00, 0x06, 0x00, 0x70, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00,
-  0x30, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00,
-  0x73, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x75, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00,
-  0x34, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
-  0x76, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
-  0x77, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x79, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
-  0x79, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x7b, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00,
-  0x42, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00, 0x34, 0x00, 0x00, 0x00,
-  0x7d, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00,
+  0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
+  0x45, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x47, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00,
+  0x41, 0x00, 0x07, 0x00, 0x34, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00,
+  0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
+  0x33, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00,
+  0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00,
+  0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
+  0x49, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00,
+  0x4c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x42, 0x00, 0x00, 0x00,
+  0x4d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00, 0x34, 0x00, 0x00, 0x00,
+  0x4f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
   0x32, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
-  0x5a, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x80, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
-  0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00,
-  0x7c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00,
-  0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00,
-  0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00,
-  0x81, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00,
-  0x07, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00,
+  0x27, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
+  0x51, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x53, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
+  0x41, 0x00, 0x07, 0x00, 0x34, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00,
+  0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
+  0x33, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00,
+  0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00,
+  0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00,
+  0x55, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00,
+  0x58, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4e, 0x00, 0x00, 0x00,
+  0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x5b, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00,
+  0x83, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00,
+  0x5b, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
+  0x5a, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
+  0x60, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00,
+  0x33, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
+  0x5e, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
+  0x60, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00,
+  0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x65, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
+  0x63, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00,
+  0x27, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x69, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
+  0x68, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x6a, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00,
+  0x5e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x6c, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x0d, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00,
+  0x6d, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x6f, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00,
+  0x3e, 0x00, 0x03, 0x00, 0x66, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
+  0x41, 0x00, 0x06, 0x00, 0x70, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00,
+  0x30, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
+  0x71, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x70, 0x00, 0x00, 0x00,
+  0x73, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
+  0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
+  0x74, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00,
+  0x41, 0x00, 0x07, 0x00, 0x34, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+  0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
+  0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x78, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00,
+  0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00,
+  0x78, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00,
+  0x7a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x7c, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00,
+  0x34, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
+  0x76, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00,
+  0x7d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x7f, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00,
+  0x7f, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x81, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00,
+  0x66, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0x83, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
+  0x7b, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00,
+  0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00,
   0x83, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00,
-  0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00,
-  0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
-  0x74, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
-  0x09, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
-  0x87, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00,
-  0x88, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x88, 0x00, 0x00, 0x00,
-  0xf6, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x8c, 0x00, 0x00, 0x00,
-  0xf8, 0x00, 0x02, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x0c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00,
-  0x7c, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00,
-  0x8d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x90, 0x00, 0x00, 0x00,
-  0x91, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00,
-  0x91, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00,
-  0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00,
-  0xb0, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00,
-  0x8e, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
-  0x95, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00,
-  0xf8, 0x00, 0x02, 0x00, 0x89, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x07, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00,
+  0x83, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00,
+  0x85, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00,
+  0x72, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00,
+  0x3e, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00,
+  0x3e, 0x00, 0x03, 0x00, 0x87, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
+  0xf9, 0x00, 0x02, 0x00, 0x88, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00,
+  0x88, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00,
+  0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00,
+  0x8c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x8c, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00,
+  0x87, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00,
+  0x8e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
+  0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
+  0x8f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00,
+  0x92, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00,
+  0x28, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00,
+  0x33, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00,
+  0x95, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00,
+  0xfa, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00,
+  0x8a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x89, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00,
+  0x97, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00,
+  0x0c, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00,
+  0x32, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x70, 0x00, 0x00, 0x00,
+  0x99, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
+  0x98, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
+  0x9a, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00,
+  0x87, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00, 0x34, 0x00, 0x00, 0x00,
+  0x9d, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00,
+  0x9c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00,
+  0x5a, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0xa0, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00,
+  0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00,
+  0x9b, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00,
   0x87, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00,
-  0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
-  0x41, 0x00, 0x06, 0x00, 0x70, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00,
-  0x30, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00,
-  0x99, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x9b, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x0c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00,
-  0x41, 0x00, 0x07, 0x00, 0x34, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00,
-  0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00,
+  0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
+  0x41, 0x00, 0x07, 0x00, 0x34, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00,
+  0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00,
   0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0x9e, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00,
-  0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00,
-  0x9e, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00,
-  0xa0, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0xa2, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
-  0x0c, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00,
-  0x80, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00,
-  0xa3, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x41, 0x00, 0x07, 0x00,
-  0x34, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
-  0x76, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00,
-  0xa5, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0xa7, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
-  0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00,
-  0xa7, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0xa9, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00,
-  0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00,
-  0x66, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00,
-  0xab, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
-  0xa1, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00,
-  0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00,
-  0xab, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00,
-  0xab, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00,
-  0xad, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00,
-  0x96, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00,
-  0x3e, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00,
-  0xf9, 0x00, 0x02, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00,
-  0x8b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00,
-  0xae, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00,
-  0x0c, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00,
-  0x32, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x87, 0x00, 0x00, 0x00,
-  0xaf, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x88, 0x00, 0x00, 0x00,
-  0xf8, 0x00, 0x02, 0x00, 0x8a, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00,
-  0x14, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x13, 0x00, 0x00, 0x00,
+  0xa6, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00,
+  0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00,
+  0xa6, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00,
+  0xa8, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0xaa, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x31, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00,
+  0xaa, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00,
+  0xac, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00,
+  0xab, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00,
+  0x07, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x2e, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00,
+  0xac, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00,
+  0xad, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x8b, 0x00, 0x00, 0x00,
+  0xf8, 0x00, 0x02, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x0c, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00,
+  0x80, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00,
+  0xae, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
+  0x87, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00,
+  0x88, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x8a, 0x00, 0x00, 0x00,
   0xf9, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00,
-  0x14, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
-  0xb5, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
-  0xb4, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00,
-  0x38, 0x00, 0x01, 0x00
+  0x13, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x00,
+  0xf8, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
+  0x60, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
+  0xb3, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
+  0xb5, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x05, 0x00,
+  0x94, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00,
+  0x0a, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xb8, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xb6, 0x00, 0x00, 0x00,
+  0xb7, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00,
+  0xb7, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0xba, 0x00, 0x00, 0x00,
+  0xbd, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x1e, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
+  0x57, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00,
+  0xbd, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
+  0x07, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
+  0x85, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00,
+  0xc0, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00,
+  0xb8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xb8, 0x00, 0x00, 0x00,
+  0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xc3, 0x00, 0x00, 0x00,
+  0xc4, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00
 };
-unsigned int vkvg_main_lcd_frag_spv_len = 4756;
+unsigned int vkvg_main_lcd_frag_spv_len = 4980;
 unsigned char wired_frag_spv[] = {
   0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x0d, 0x00,
   0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
index 4e22e6d7fa5db7258be1297a67d6ad8d6f4a9668..068a5401f215ba2b6bcf6c791f626be79de4d0e6 100644 (file)
@@ -333,8 +333,8 @@ void vkvg_line_to (VkvgContext ctx, float x, float y)
     if (_current_path_is_empty(ctx)){
         vkvg_move_to(ctx, x,y);
         return;
-    }else if (vec2_equ(_get_current_position(ctx),p))
-        return;
+    }//else if (vec2_equ(_get_current_position(ctx),p))
+    //    return;
 
     _add_point(ctx,x,y);
 }
@@ -599,7 +599,7 @@ void vkvg_stroke_preserve (VkvgContext ctx)
 
     LOG(LOG_INFO, "STROKE: ctx = %lu; path cpt = %d;\n", ctx, ctx->pathPtr / 2);
 
-    Vertex v = {{0},ctx->curColor};
+    Vertex v = {{0},ctx->curColor,{0,0},-1};
 
     float hw = ctx->lineWidth / 2.0f;
     uint i = 0, ptrPath = 0;
@@ -766,6 +766,10 @@ void vkvg_set_source_rgba (VkvgContext ctx, float r, float g, float b, float a)
     ctx->curColor = CreateRgbaf(r,g,b,a);
     //_update_cur_pattern (ctx, vkvg_pattern_create_rgba (r,g,b,a));
 }
+/*void vkvg_set_source_color (VkvgContext ctx, uint32_t rgba) {
+ * not really useful because we prefer premult alpha
+    ctx->curColor = rgba;
+}*/
 void vkvg_set_source_surface(VkvgContext ctx, VkvgSurface surf, float x, float y){
     ctx->pushConsts.source.x = x;
     ctx->pushConsts.source.y = y;
index d9578ad151cf52f93f2ed6da986ca3ad4aeb1165..f63028778bb8dff7a9d0301b557d80caf82cb522 100644 (file)
@@ -113,7 +113,7 @@ void _start_sub_path (VkvgContext ctx, float x, float y) {
 void _finish_path (VkvgContext ctx){
     if (_current_path_is_empty(ctx))
         return;
-    if (ctx->pathes[ctx->pathPtr-1] == ctx->pointCount - 1){
+    if ((ctx->pathes[ctx->pathPtr-1]&PATH_ELT_MASK) == ctx->pointCount - 1){
         //only current pos is in path
         ctx->pathPtr--;
         return;
@@ -243,6 +243,7 @@ void _add_vertexf (VkvgContext ctx, float x, float y){
     pVert->pos.x = x;
     pVert->pos.y = y;
     pVert->color = ctx->curColor;
+    pVert->uvZ = -1;
     ctx->vertCount++;
 
     _check_vbo_size(ctx);
@@ -280,10 +281,10 @@ void _add_triangle_indices(VkvgContext ctx, VKVG_IBO_INDEX_TYPE i0, VKVG_IBO_IND
 void _vao_add_rectangle (VkvgContext ctx, float x, float y, float width, float height){
     Vertex v[4] =
     {
-        {{x,y},             ctx->curColor},
-        {{x,y+height},      ctx->curColor},
-        {{x+width,y},       ctx->curColor},
-        {{x+width,y+height},ctx->curColor}
+        {{x,y},             ctx->curColor, {0,0},-1},
+        {{x,y+height},      ctx->curColor, {0,0},-1},
+        {{x+width,y},       ctx->curColor, {0,0},-1},
+        {{x+width,y+height},ctx->curColor, {0,0},-1}
     };
     VKVG_IBO_INDEX_TYPE firstIdx = ctx->vertCount - ctx->curVertOffset;
     Vertex* pVert = &ctx->vertexCache[ctx->vertCount];
@@ -761,16 +762,6 @@ void _init_descriptor_sets (VkvgContext ctx){
                                                               .pSetLayouts = &dev->dslSrc };
     VK_CHECK_RESULT(vkAllocateDescriptorSets(dev->vkDev, &descriptorSetAllocateInfo, &ctx->dsSrc));
 }
-void add_line(vkvg_context* ctx, vec2 p1, vec2 p2, vec4 col){
-    Vertex v = {{p1.x,p1.y},{0,0,-1}};
-    _add_vertex(ctx, v);
-    v.pos = p2;
-    _add_vertex(ctx, v);
-    VKVG_IBO_INDEX_TYPE* inds = &ctx->indexCache [ctx->indCount];
-    inds[0] = ctx->vertCount - 2;
-    inds[1] = ctx->vertCount - 1;
-    ctx->indCount+=2;
-}
 
 void _build_vb_step (vkvg_context* ctx, Vertex v, float hw, uint32_t iL, uint32_t i, uint32_t iR, bool isCurve){
     //if two of the three points are equal, normal is null
@@ -1101,7 +1092,7 @@ void _poly_fill (VkvgContext ctx){
     CmdBindPipeline (ctx->cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, ctx->pSurf->dev->pipelinePolyFill);
 
     uint32_t ptrPath = 0;
-    Vertex v = {{0},ctx->curColor};
+    Vertex v = {{0},ctx->curColor,{0,0},-1};
 
     while (ptrPath < ctx->pathPtr){
         if (ctx->pathes[ptrPath+1]&PATH_IS_CURVE_BIT){
@@ -1132,7 +1123,7 @@ void _poly_fill (VkvgContext ctx){
 }
 void _fill_ec (VkvgContext ctx){
     uint32_t ptrPath = 0;;
-    Vertex v = {{0},ctx->curColor};
+    Vertex v = {{0},ctx->curColor,{0,0},-1};
 
     while (ptrPath < ctx->pathPtr){
         if (ctx->pathes[ptrPath+1]&PATH_IS_CURVE_BIT){
@@ -1146,23 +1137,27 @@ void _fill_ec (VkvgContext ctx){
         uint32_t pathPointCount = lastPtIdx - firstPtIdx + 1;
         uint32_t firstVertIdx = ctx->vertCount-ctx->curVertOffset;
 
-        ear_clip_point ecps[pathPointCount];
-        uint32_t ecps_count = pathPointCount;
-        uint32_t i = 0;
+        ear_clip_point ecps[pathPointCount];        
+        uint32_t ecps_count = 0, i = 0;
 
         //init points link list
         while (i < pathPointCount-1){
-            v.pos = ctx->points[i+firstPtIdx];
-            ear_clip_point ecp = {v.pos, i+firstVertIdx, &ecps[i+1]};
-            ecps[i] = ecp;
-            _add_vertex(ctx, v);
+            vec2 np = ctx->points[i+firstPtIdx];
+            if (!vec2_equ(np, v.pos)){
+                v.pos = np;
+                ear_clip_point ecp = {v.pos, ecps_count+firstVertIdx, &ecps[ecps_count+1]};
+                ecps[ecps_count] = ecp;
+                _add_vertex(ctx, v);
+                ecps_count++;
+            }
             i++;
         }
 
         v.pos = ctx->points[i+firstPtIdx];
-        ear_clip_point ecp = {v.pos, i+firstVertIdx, ecps};
-        ecps[i] = ecp;
+        ear_clip_point ecp = {v.pos, ecps_count+firstVertIdx, ecps};
+        ecps[ecps_count] = ecp;
         _add_vertex(ctx, v);
+        ecps_count++;
 
         ear_clip_point* ecp_current = ecps;
         uint32_t tries = 0;
index ea59d4e580e9ce22e83d3472efb0dfcd67bf1b00..cab9e708de27b67ea80871ae01bb19cd294ab044 100644 (file)
 #define VKVG_ARRAY_THRESHOLD           8
 #define VKVG_IBO_INDEX_TYPE         uint32_t
 #define CreateRgba(r, g, b, a) ((a << 24) | (r << 16) | (g << 8) | b)
-#define CreateRgbaf(r, g, b, a) (((int)(a * 255.0f) << 24) | ((int)(b * a * 255.0f) << 16) | ((int)(g * a * 255.0f) << 8) | (int)(r * a * 255.0f))
+#ifdef VKVG_PREMULT_ALPHA
+    #define CreateRgbaf(r, g, b, a) (((int)(a * 255.0f) << 24) | ((int)(b * a * 255.0f) << 16) | ((int)(g * a * 255.0f) << 8) | (int)(r * a * 255.0f))
+#else
+    #define CreateRgbaf(r, g, b, a) (((int)(a * 255.0f) << 24) | ((int)(b * 255.0f) << 16) | ((int)(g * 255.0f) << 8) | (int)(r * 255.0f))
+#endif
 typedef struct{
     vec2        pos;
     uint32_t    color;
+    vec2        uv;
+    char        uvZ;
 }Vertex;
 
 typedef struct {
index cae3183aa673631afafc489d46a2bd093f380433..fbda494bb5328ac37ba35d437e179451fc140996 100644 (file)
@@ -124,8 +124,8 @@ void vkvg_device_destroy (VkvgDevice dev)
     //vkDestroyDescriptorSetLayout    (dev->vkDev, dev->dslFont,NULL);
     vkDestroyDescriptorSetLayout    (dev->vkDev, dev->dslSrc, NULL);
 
-    vkDestroyPipeline               (dev->vkDev, dev->pipelinePolyFill, NULL);
-    vkDestroyPipeline               (dev->vkDev, dev->pipelineClipping, NULL);
+    //vkDestroyPipeline               (dev->vkDev, dev->pipelinePolyFill, NULL);
+    //vkDestroyPipeline               (dev->vkDev, dev->pipelineClipping, NULL);
 
     vkDestroyPipeline               (dev->vkDev, dev->pipe_OVER,    NULL);
     vkDestroyPipeline               (dev->vkDev, dev->pipe_SUB,     NULL);
@@ -148,12 +148,14 @@ void vkvg_device_destroy (VkvgDevice dev)
     vkFreeCommandBuffers            (dev->vkDev, dev->cmdPool, 1, &dev->cmd);
     vkDestroyCommandPool            (dev->vkDev, dev->cmdPool, NULL);
 
-    _destroy_font_cache(dev);
+    _destroy_font_cache             (dev);
 
-    vmaDestroyAllocator (dev->allocator);
+    vmaDestroyAllocator             (dev->allocator);
 
     MUTEX_DESTROY (&dev->gQMutex);
 
+    vkh_queue_destroy               (dev->gQueue);
+
     free(dev);
 }
 
index 0404c4bfaf085d979c2f3a40e739a739f2c57e0e..f8f2dd7fce9f166743614d3cc418b07f280cb77e 100644 (file)
@@ -240,15 +240,17 @@ void _setupPipelines(VkvgDevice dev)
                 .stride = sizeof(Vertex),
                 .inputRate = VK_VERTEX_INPUT_RATE_VERTEX };
 
-    VkVertexInputAttributeDescription vertexInputAttributs[2] = {
-        {0, 0, VK_FORMAT_R32G32_SFLOAT,         0},
-        {1, 0, VK_FORMAT_R8G8B8A8_UNORM,      sizeof(vec2)}
+    VkVertexInputAttributeDescription vertexInputAttributs[4] = {
+        {0, 0, VK_FORMAT_R32G32_SFLOAT,         0},        
+        {1, 0, VK_FORMAT_R8G8B8A8_UNORM,        8},
+        {2, 0, VK_FORMAT_R32G32_SFLOAT,        12},
+        {3, 0, VK_FORMAT_R8_SINT,              20},
     };
 
     VkPipelineVertexInputStateCreateInfo vertexInputState = { .sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
         .vertexBindingDescriptionCount = 1,
         .pVertexBindingDescriptions = &vertexInputBinding,
-        .vertexAttributeDescriptionCount = 2,
+        .vertexAttributeDescriptionCount = 4,
         .pVertexAttributeDescriptions = vertexInputAttributs };
 
     VkShaderModule modVert, modFrag, modFragWired;
index 05ce7a56406a2e2faa7259aea5d024bc23a40843..34d3743cd01037071215fff0a9b506c1f517c069 100644 (file)
@@ -154,9 +154,7 @@ void _init_next_line_in_tex_cache (VkvgDevice dev, _vkvg_font_t* f){
     _init_next_line_in_tex_cache(dev, f);
 }
 void _destroy_font_cache (VkvgDevice dev){
-    _font_cache_t* cache = (_font_cache_t*)dev->fontCache;
-
-    //FcFini();
+    _font_cache_t* cache = (_font_cache_t*)dev->fontCache;    
 
     free (cache->hostBuff);
 
@@ -184,6 +182,11 @@ void _destroy_font_cache (VkvgDevice dev){
     //vkFreeCommandBuffers(dev->vkDev,dev->cmdPool, 1, &cache->cmd);
     vkDestroyFence      (dev->vkDev,cache->uploadFence,NULL);
 
+    FT_CHECK_RESULT(FT_Done_FreeType (cache->library));
+
+    FcConfigDestroy     (cache->config);
+    FcFini();
+
     free (dev->fontCache);
 
 }
@@ -457,8 +460,7 @@ void _show_text_run (VkvgContext ctx, VkvgText tr) {
     unsigned int glyph_count;
     hb_glyph_info_t* glyph_info = hb_buffer_get_glyph_infos (tr->hbBuf, &glyph_count);
 
-    Vertex v = {{0},ctx->curColor};
-    vec3 uv = {0};
+    Vertex v = {{0},ctx->curColor,{0},0};
     vec2 pen = {0,0};
 
     if (!_current_path_is_empty(ctx))
@@ -480,23 +482,22 @@ void _show_text_run (VkvgContext ctx, VkvgText tr) {
 
             uint32_t firstIdx = ctx->vertCount - ctx->curVertOffset;
 
-            uv.x = cr->bounds.x;
-            uv.y = cr->bounds.y;
-            uv.z = cr->pageIdx;
+            v.uv = (vec2){cr->bounds.x, cr->bounds.y};
+            v.uvZ = (int8_t)cr->pageIdx;
             _add_vertex(ctx,v);
 
             v.pos.y += cr->bounds.height;
-            uv.y += uvHeight;
+            v.uv.y += uvHeight;
             _add_vertex(ctx,v);
 
             v.pos.x += cr->bounds.width;
             v.pos.y = p0.y;
-            uv.x += uvWidth;
-            uv.y = cr->bounds.y;
+            v.uv.x += uvWidth;
+            v.uv.y = cr->bounds.y;
             _add_vertex(ctx,v);
 
             v.pos.y += cr->bounds.height;
-            uv.y += uvHeight;
+            v.uv.y += uvHeight;
             _add_vertex(ctx,v);
 
             _add_tri_indices_for_rect (ctx, firstIdx);
@@ -514,10 +515,10 @@ void _show_text_run (VkvgContext ctx, VkvgText tr) {
 #ifdef DEBUG
 void _show_texture (vkvg_context* ctx){
     Vertex vs[] = {
-        {{0,0},                             {0,0,0}},
-        {{0,FONT_PAGE_SIZE},                {0,1,0}},
-        {{FONT_PAGE_SIZE,0},                {1,0,0}},
-        {{FONT_PAGE_SIZE,FONT_PAGE_SIZE},   {1,1,0}}
+        {{0,0},                             0,{0,0},0},
+        {{0,FONT_PAGE_SIZE},                0,{0,1},0},
+        {{FONT_PAGE_SIZE,0},                0,{1,0},0},
+        {{FONT_PAGE_SIZE,FONT_PAGE_SIZE},   0,{1,1},0}
     };
 
     int i = ctx->vertCount;
index 7661a406ac2c54af29a04aec3c3029eebef7b334..5f137afadb50acb001a939497776e6cc97c0451a 100644 (file)
@@ -11,7 +11,7 @@ VkvgDevice device = NULL;
 VkvgSurface surf = NULL;
 
 uint test_size = 100;  // items drawn in one run, or complexity
-int iterations = 200;   // repeat test n times
+int iterations = 500;   // repeat test n times
 
 static bool paused = false;
 static VkSampleCountFlags samples = VK_SAMPLE_COUNT_4_BIT;
@@ -72,6 +72,7 @@ void randomize_color (VkvgContext ctx) {
         (float)rand()/RAND_MAX,
         (float)rand()/RAND_MAX
     );
+    //vkvg_set_source_color(ctx,(uint32_t) rand());
 }
 /* from caskbench */
 double
@@ -102,10 +103,9 @@ double median_run_time (double data[], int n)
 }
 double standard_deviation (const double data[], int n, double mean)
 {
-    double sum_deviation = 0.0;
-    int i;
-    for (i = 0; i < n; ++i)
-    sum_deviation += (data[i]-mean) * (data[i]-mean);
+    double sum_deviation = 0.0;    
+    for (int i = 0; i < n; ++i)
+        sum_deviation += (data[i]-mean) * (data[i]-mean);
     return sqrt (sum_deviation / n);
 }
 /***************/
@@ -188,8 +188,6 @@ VkvgSurface* surfaces;
 #endif
 
 void perform_test (void(*testfunc)(void),uint width, uint height) {
-    dumpLayerExts();
-
     e = vkengine_create (VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_PRESENT_MODE_MAILBOX_KHR, width, height);
     VkhPresenter r = e->renderer;
     vkengine_set_key_callback (e, key_callback);
@@ -213,12 +211,12 @@ void perform_test (void(*testfunc)(void),uint width, uint height) {
 #endif
 
 
-    double start_time, stop_time, run_time, run_total, min_run_time = -1, max_run_time;
+    double start_time = 0, stop_time = 0, run_time = 0, run_total = 0, min_run_time = -1, max_run_time = 0;
     double run_time_values[iterations];
 
     int i = 0;
 
-    while (!vkengine_should_close (e)){// && i < iterations) {
+    while (!vkengine_should_close (e) && i < iterations) {
         glfwPollEvents();
 
         start_time = get_tick();
@@ -260,7 +258,7 @@ void perform_test (void(*testfunc)(void),uint width, uint height) {
 
         vkDeviceWaitIdle(e->dev->dev);
 
-        //if (paused)
+        if (paused)
             continue;
 
         stop_time = get_tick();
index 917a3660085e97033c6cfaba6d08fe31b9e146e8..a9d51b87c6c016defc5c5acb59d43314cd3c7ae7 100644 (file)
@@ -10,16 +10,16 @@ void test(){
 
     //vkvg_scale(ctx,2,2);
     VkvgPattern pat = vkvg_pattern_create_linear(0,0,200,0);
-    vkvg_pattern_set_extend(pat, VKVG_EXTEND_REPEAT);
+    //vkvg_pattern_set_extend(pat, VKVG_EXTEND_REPEAT);
     vkvg_set_line_width(ctx, 20);
     vkvg_pattern_add_color_stop(pat, 0, 1, 0, 0, 1);
     vkvg_pattern_add_color_stop(pat, 0.5, 0, 1, 0, 1);
     vkvg_pattern_add_color_stop(pat, 1, 0, 0, 1, 1);
     vkvg_set_source (ctx, pat);
-    //vkvg_rectangle(ctx,0,0,200,200);
-    //vkvg_fill (ctx);
+    vkvg_rectangle(ctx,0,0,200,200);
+    vkvg_fill (ctx);
     //vkvg_stroke (ctx);
-    vkvg_paint(ctx);
+    //vkvg_paint(ctx);
     vkvg_pattern_destroy (pat);
 
     vkvg_destroy(ctx);
index 9806a211deefcc087f44cd3a32a2f8400ac8c52b..9c78f630925ad1ff36792305548da29a754b2b5b 100644 (file)
@@ -22,7 +22,10 @@ void test(){
         float y = truncf(0.5f * w*rand()/RAND_MAX + r);
 
         vkvg_arc(ctx, x, y, r, 0, M_PI * 2.0f);
-        vkvg_fill(ctx);
+        //vkvg_fill(ctx);
+        vkvg_fill_preserve(ctx);
+        randomize_color(ctx);
+        vkvg_stroke(ctx);
     }
     vkvg_destroy(ctx);
 }
index 9ea7aae142bd31c33afa270eb6cda40968651f12..366cf0c5e0a244f3702e887c430ac95aeab92f30 100644 (file)
@@ -7,9 +7,7 @@ void test(){
     vkvg_destroy(ctx);
 }
 
-int main(int argc, char *argv[]) {
-
-    vkengine_dump_available_layers();
+int main(int argc, char *argv[]) {    
 
     perform_test (test, 1024, 768);
 
index 4fa620eff9a3e52acf36260550627e7ad84ac770..37c3f28f25f8b6f4d19dd28a0e524cfb2deb29f2 100644 (file)
@@ -3,15 +3,6 @@
 #include "string.h" //for nanosvg
 //#define NANOSVG_IMPLEMENTATION       // Expands implementation
 #include "nanosvg.h"
-
-/*void _svg_set_color (VkvgContext ctx, uint32_t c, float alpha) {
-    float a = (c >> 24 & 255) / 255.f;
-    float b = (c >> 16 & 255) / 255.f;
-    float g = (c >> 8 & 255) / 255.f;
-    float r = (c & 255) / 255.f;
-    vkvg_set_source_rgba(ctx,r,g,b,a*alpha);
-}*/
-
 static float rotation = 0.f;
 static const char* path = "data/tiger.svg";
 //static const char* path = "data/vkvg.svg";
@@ -62,7 +53,7 @@ void test_svg () {
     vkvg_set_source_rgba(ctx,1.0,1.0,1.0,1);
     vkvg_paint(ctx);
 
-    vkvg_set_matrix(ctx,&mat);
+    //vkvg_set_matrix(ctx,&mat);
 
     NSVGimage* svg;
     NSVGshape* shape;
@@ -122,12 +113,10 @@ void test_svg () {
             _svg_set_color(ctx, g->stops[0].color, o);
         }
 
-        vkvg_stroke(ctx);
+        vkvg_stroke(ctx);        
     }
 
     nsvgDelete(svg);
-
-
     vkvg_destroy(ctx);
 }
 
index 8036c3385fae87ad5c16dd6f8e1d327bd8401958..baa1f9b727ac9f52acf67253dd32fbfcaaf7eda1 100644 (file)
@@ -310,7 +310,7 @@ void cairo_tests () {
 
 
     VkvgContext ctx = vkvg_create(surf);
-    vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_EVEN_ODD);
+    //vkvg_set_fill_rule(ctx, VKVG_FILL_RULE_EVEN_ODD);
     vkvg_set_source_rgba(ctx,1.0f,1.0f,1.0f,1);
     vkvg_paint(ctx);