diff --git a/base/schema-cjson/test/inputs/schema/integer-type.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/integer-type.schema/default/TopLevel.c
index 8aa7fa7..4494240 100644
--- a/base/schema-cjson/test/inputs/schema/integer-type.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/integer-type.schema/default/TopLevel.c
@@ -25,41 +25,55 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
             if (!cJSON_HasObjectItem(j, "above_i32_max")) { cJSON_DeleteTopLevel(x); return NULL; }
             if (cJSON_HasObjectItem(j, "above_i32_max")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "above_i32_max"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "above_i32_max")->valuedouble < 0) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "above_i32_max")->valuedouble > 2147483648) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->above_i32_max = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "above_i32_max"));
             }
             if (!cJSON_HasObjectItem(j, "below_i32_min")) { cJSON_DeleteTopLevel(x); return NULL; }
             if (cJSON_HasObjectItem(j, "below_i32_min")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "below_i32_min"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "below_i32_min")->valuedouble < -2147483649) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "below_i32_min")->valuedouble > 0) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->below_i32_min = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "below_i32_min"));
             }
             if (!cJSON_HasObjectItem(j, "i32_range")) { cJSON_DeleteTopLevel(x); return NULL; }
             if (cJSON_HasObjectItem(j, "i32_range")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "i32_range"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "i32_range")->valuedouble < -2147483648) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "i32_range")->valuedouble > 2147483647) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->i32_range = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "i32_range"));
             }
             if (!cJSON_HasObjectItem(j, "large_bounds")) { cJSON_DeleteTopLevel(x); return NULL; }
             if (cJSON_HasObjectItem(j, "large_bounds")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "large_bounds"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "large_bounds")->valuedouble < -9007199254740991) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "large_bounds")->valuedouble > 9007199254740991) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->large_bounds = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "large_bounds"));
             }
             if (!cJSON_HasObjectItem(j, "only_maximum")) { cJSON_DeleteTopLevel(x); return NULL; }
             if (cJSON_HasObjectItem(j, "only_maximum")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "only_maximum"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "only_maximum")->valuedouble > 0) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->only_maximum = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "only_maximum"));
             }
             if (!cJSON_HasObjectItem(j, "only_minimum")) { cJSON_DeleteTopLevel(x); return NULL; }
             if (cJSON_HasObjectItem(j, "only_minimum")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "only_minimum"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "only_minimum")->valuedouble < 0) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->only_minimum = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "only_minimum"));
             }
             if (!cJSON_HasObjectItem(j, "small_negative")) { cJSON_DeleteTopLevel(x); return NULL; }
             if (cJSON_HasObjectItem(j, "small_negative")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "small_negative"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "small_negative")->valuedouble < -100) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "small_negative")->valuedouble > 0) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->small_negative = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "small_negative"));
             }
             if (!cJSON_HasObjectItem(j, "small_positive")) { cJSON_DeleteTopLevel(x); return NULL; }
             if (cJSON_HasObjectItem(j, "small_positive")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "small_positive"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "small_positive")->valuedouble < 0) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "small_positive")->valuedouble > 100) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->small_positive = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "small_positive"));
             }
             if (!cJSON_HasObjectItem(j, "unbounded")) { cJSON_DeleteTopLevel(x); return NULL; }
diff --git a/base/schema-cjson/test/inputs/schema/minmax-integer.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/minmax-integer.schema/default/TopLevel.c
index a5fc5be..781cb0d 100644
--- a/base/schema-cjson/test/inputs/schema/minmax-integer.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/minmax-integer.schema/default/TopLevel.c
@@ -30,26 +30,34 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
             if (!cJSON_HasObjectItem(j, "intersection")) { cJSON_DeleteTopLevel(x); return NULL; }
             if (cJSON_HasObjectItem(j, "intersection")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "intersection"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "intersection")->valuedouble < 4) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "intersection")->valuedouble > 5) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->intersection = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "intersection"));
             }
             if (!cJSON_HasObjectItem(j, "max")) { cJSON_DeleteTopLevel(x); return NULL; }
             if (cJSON_HasObjectItem(j, "max")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "max"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "max")->valuedouble > 5) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->max = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "max"));
             }
             if (!cJSON_HasObjectItem(j, "min")) { cJSON_DeleteTopLevel(x); return NULL; }
             if (cJSON_HasObjectItem(j, "min")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "min"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "min")->valuedouble < 3) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->min = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "min"));
             }
             if (!cJSON_HasObjectItem(j, "minmax")) { cJSON_DeleteTopLevel(x); return NULL; }
             if (cJSON_HasObjectItem(j, "minmax")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "minmax"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "minmax")->valuedouble < 3) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "minmax")->valuedouble > 5) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->minmax = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "minmax"));
             }
             if (!cJSON_HasObjectItem(j, "minMaxIntersection")) { cJSON_DeleteTopLevel(x); return NULL; }
             if (cJSON_HasObjectItem(j, "minMaxIntersection")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "minMaxIntersection"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "minMaxIntersection")->valuedouble < 3) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "minMaxIntersection")->valuedouble > 5) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->min_max_intersection = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "minMaxIntersection"));
             }
             if (!cJSON_HasObjectItem(j, "minMaxUnion")) { cJSON_DeleteTopLevel(x); return NULL; }
@@ -60,6 +68,8 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
             if (!cJSON_HasObjectItem(j, "union")) { cJSON_DeleteTopLevel(x); return NULL; }
             if (cJSON_HasObjectItem(j, "union")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "union"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "union")->valuedouble < 3) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "union")->valuedouble > 6) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->top_level_union = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "union"));
             }
         }
diff --git a/base/schema-cjson/test/inputs/schema/minmaxlength.schema/default/TopLevel.c b/base/schema-cjson/test/inputs/schema/minmaxlength.schema/default/TopLevel.c
deleted file mode 100644
index fa7e441..0000000
--- a/base/schema-cjson/test/inputs/schema/minmaxlength.schema/default/TopLevel.c
+++ /dev/null
@@ -1,248 +0,0 @@
-/**
- * TopLevel.c
- * This file has been autogenerated using quicktype https://github.com/quicktype/quicktype - DO NOT EDIT
- */
-
-#include "TopLevel.h"
-
-struct InUnion * cJSON_GetInUnionValue(const cJSON * j) {
-    struct InUnion * x = cJSON_malloc(sizeof(struct InUnion));
-    if (NULL != x) {
-        memset(x, 0, sizeof(struct InUnion));
-        if (cJSON_IsNumber(j)) {
-            x->type = cJSON_Number;
-            x->value.number = cJSON_GetNumberValue(j);
-        }
-        else if (cJSON_IsString(j)) {
-            x->type = cJSON_String;
-            x->value.string = strdup(cJSON_GetStringValue(j));
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateInUnion(const struct InUnion * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (cJSON_Number == x->type) {
-            j = cJSON_CreateNumber(x->value.number);
-        }
-        else if (cJSON_String == x->type) {
-            j = cJSON_CreateString(x->value.string);
-        }
-    }
-    return j;
-}
-
-void cJSON_DeleteInUnion(struct InUnion * x) {
-    if (NULL != x) {
-        if (cJSON_Number == x->type) {
-        }
-        else if (cJSON_String == x->type) {
-            cJSON_free(x->value.string);
-        }
-        cJSON_free(x);
-    }
-}
-
-struct TopLevel * cJSON_ParseTopLevel(const char * s) {
-    struct TopLevel * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetTopLevelValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
-    struct TopLevel * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct TopLevel)))) {
-            memset(x, 0, sizeof(struct TopLevel));
-            if (!cJSON_HasObjectItem(j, "intersection")) { cJSON_DeleteTopLevel(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "intersection")) {
-                if (!cJSON_IsString(cJSON_GetObjectItemCaseSensitive(j, "intersection"))) { cJSON_DeleteTopLevel(x); return NULL; }
-                if (strlen(cJSON_GetObjectItemCaseSensitive(j, "intersection")->valuestring) < 4) { cJSON_DeleteTopLevel(x); return NULL; }
-                if (strlen(cJSON_GetObjectItemCaseSensitive(j, "intersection")->valuestring) > 5) { cJSON_DeleteTopLevel(x); return NULL; }
-                x->intersection = strdup(cJSON_GetStringValue(cJSON_GetObjectItemCaseSensitive(j, "intersection")));
-            }
-            else {
-                if (NULL != (x->intersection = cJSON_malloc(sizeof(char)))) {
-                    x->intersection[0] = '\0';
-                }
-            }
-            if (!cJSON_HasObjectItem(j, "inUnion")) { cJSON_DeleteTopLevel(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "inUnion")) {
-                if (!cJSON_IsInUnion(cJSON_GetObjectItemCaseSensitive(j, "inUnion"))) { cJSON_DeleteTopLevel(x); return NULL; }
-                x->in_union = cJSON_GetInUnionValue(cJSON_GetObjectItemCaseSensitive(j, "inUnion"));
-                if (NULL == x->in_union) { cJSON_DeleteTopLevel(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "maxlength")) { cJSON_DeleteTopLevel(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "maxlength")) {
-                if (!cJSON_IsString(cJSON_GetObjectItemCaseSensitive(j, "maxlength"))) { cJSON_DeleteTopLevel(x); return NULL; }
-                if (strlen(cJSON_GetObjectItemCaseSensitive(j, "maxlength")->valuestring) > 5) { cJSON_DeleteTopLevel(x); return NULL; }
-                x->maxlength = strdup(cJSON_GetStringValue(cJSON_GetObjectItemCaseSensitive(j, "maxlength")));
-            }
-            else {
-                if (NULL != (x->maxlength = cJSON_malloc(sizeof(char)))) {
-                    x->maxlength[0] = '\0';
-                }
-            }
-            if (!cJSON_HasObjectItem(j, "minlength")) { cJSON_DeleteTopLevel(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "minlength")) {
-                if (!cJSON_IsString(cJSON_GetObjectItemCaseSensitive(j, "minlength"))) { cJSON_DeleteTopLevel(x); return NULL; }
-                if (strlen(cJSON_GetObjectItemCaseSensitive(j, "minlength")->valuestring) < 3) { cJSON_DeleteTopLevel(x); return NULL; }
-                x->minlength = strdup(cJSON_GetStringValue(cJSON_GetObjectItemCaseSensitive(j, "minlength")));
-            }
-            else {
-                if (NULL != (x->minlength = cJSON_malloc(sizeof(char)))) {
-                    x->minlength[0] = '\0';
-                }
-            }
-            if (!cJSON_HasObjectItem(j, "minMaxIntersection")) { cJSON_DeleteTopLevel(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "minMaxIntersection")) {
-                if (!cJSON_IsString(cJSON_GetObjectItemCaseSensitive(j, "minMaxIntersection"))) { cJSON_DeleteTopLevel(x); return NULL; }
-                if (strlen(cJSON_GetObjectItemCaseSensitive(j, "minMaxIntersection")->valuestring) < 3) { cJSON_DeleteTopLevel(x); return NULL; }
-                if (strlen(cJSON_GetObjectItemCaseSensitive(j, "minMaxIntersection")->valuestring) > 5) { cJSON_DeleteTopLevel(x); return NULL; }
-                x->min_max_intersection = strdup(cJSON_GetStringValue(cJSON_GetObjectItemCaseSensitive(j, "minMaxIntersection")));
-            }
-            else {
-                if (NULL != (x->min_max_intersection = cJSON_malloc(sizeof(char)))) {
-                    x->min_max_intersection[0] = '\0';
-                }
-            }
-            if (!cJSON_HasObjectItem(j, "minmaxlength")) { cJSON_DeleteTopLevel(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "minmaxlength")) {
-                if (!cJSON_IsString(cJSON_GetObjectItemCaseSensitive(j, "minmaxlength"))) { cJSON_DeleteTopLevel(x); return NULL; }
-                if (strlen(cJSON_GetObjectItemCaseSensitive(j, "minmaxlength")->valuestring) < 3) { cJSON_DeleteTopLevel(x); return NULL; }
-                if (strlen(cJSON_GetObjectItemCaseSensitive(j, "minmaxlength")->valuestring) > 5) { cJSON_DeleteTopLevel(x); return NULL; }
-                x->minmaxlength = strdup(cJSON_GetStringValue(cJSON_GetObjectItemCaseSensitive(j, "minmaxlength")));
-            }
-            else {
-                if (NULL != (x->minmaxlength = cJSON_malloc(sizeof(char)))) {
-                    x->minmaxlength[0] = '\0';
-                }
-            }
-            if (!cJSON_HasObjectItem(j, "minMaxUnion")) { cJSON_DeleteTopLevel(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "minMaxUnion")) {
-                if (!cJSON_IsString(cJSON_GetObjectItemCaseSensitive(j, "minMaxUnion"))) { cJSON_DeleteTopLevel(x); return NULL; }
-                x->min_max_union = strdup(cJSON_GetStringValue(cJSON_GetObjectItemCaseSensitive(j, "minMaxUnion")));
-            }
-            else {
-                if (NULL != (x->min_max_union = cJSON_malloc(sizeof(char)))) {
-                    x->min_max_union[0] = '\0';
-                }
-            }
-            if (!cJSON_HasObjectItem(j, "union")) { cJSON_DeleteTopLevel(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "union")) {
-                if (!cJSON_IsString(cJSON_GetObjectItemCaseSensitive(j, "union"))) { cJSON_DeleteTopLevel(x); return NULL; }
-                if (strlen(cJSON_GetObjectItemCaseSensitive(j, "union")->valuestring) < 3) { cJSON_DeleteTopLevel(x); return NULL; }
-                if (strlen(cJSON_GetObjectItemCaseSensitive(j, "union")->valuestring) > 6) { cJSON_DeleteTopLevel(x); return NULL; }
-                x->top_level_union = strdup(cJSON_GetStringValue(cJSON_GetObjectItemCaseSensitive(j, "union")));
-            }
-            else {
-                if (NULL != (x->top_level_union = cJSON_malloc(sizeof(char)))) {
-                    x->top_level_union[0] = '\0';
-                }
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            if (NULL != x->intersection) {
-                cJSON_AddStringToObject(j, "intersection", x->intersection);
-            }
-            else {
-                cJSON_AddStringToObject(j, "intersection", "");
-            }
-            cJSON_AddItemToObject(j, "inUnion", cJSON_CreateInUnion(x->in_union));
-            if (NULL != x->maxlength) {
-                cJSON_AddStringToObject(j, "maxlength", x->maxlength);
-            }
-            else {
-                cJSON_AddStringToObject(j, "maxlength", "");
-            }
-            if (NULL != x->minlength) {
-                cJSON_AddStringToObject(j, "minlength", x->minlength);
-            }
-            else {
-                cJSON_AddStringToObject(j, "minlength", "");
-            }
-            if (NULL != x->min_max_intersection) {
-                cJSON_AddStringToObject(j, "minMaxIntersection", x->min_max_intersection);
-            }
-            else {
-                cJSON_AddStringToObject(j, "minMaxIntersection", "");
-            }
-            if (NULL != x->minmaxlength) {
-                cJSON_AddStringToObject(j, "minmaxlength", x->minmaxlength);
-            }
-            else {
-                cJSON_AddStringToObject(j, "minmaxlength", "");
-            }
-            if (NULL != x->min_max_union) {
-                cJSON_AddStringToObject(j, "minMaxUnion", x->min_max_union);
-            }
-            else {
-                cJSON_AddStringToObject(j, "minMaxUnion", "");
-            }
-            if (NULL != x->top_level_union) {
-                cJSON_AddStringToObject(j, "union", x->top_level_union);
-            }
-            else {
-                cJSON_AddStringToObject(j, "union", "");
-            }
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintTopLevel(const struct TopLevel * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateTopLevel(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteTopLevel(struct TopLevel * x) {
-    if (NULL != x) {
-        if (NULL != x->intersection) {
-            cJSON_free(x->intersection);
-        }
-        if (NULL != x->in_union) {
-            cJSON_DeleteInUnion(x->in_union);
-        }
-        if (NULL != x->maxlength) {
-            cJSON_free(x->maxlength);
-        }
-        if (NULL != x->minlength) {
-            cJSON_free(x->minlength);
-        }
-        if (NULL != x->min_max_intersection) {
-            cJSON_free(x->min_max_intersection);
-        }
-        if (NULL != x->minmaxlength) {
-            cJSON_free(x->minmaxlength);
-        }
-        if (NULL != x->min_max_union) {
-            cJSON_free(x->min_max_union);
-        }
-        if (NULL != x->top_level_union) {
-            cJSON_free(x->top_level_union);
-        }
-        cJSON_free(x);
-    }
-}
diff --git a/base/schema-cjson/test/inputs/schema/minmaxlength.schema/default/TopLevel.h b/base/schema-cjson/test/inputs/schema/minmaxlength.schema/default/TopLevel.h
deleted file mode 100644
index 0aa1a52..0000000
--- a/base/schema-cjson/test/inputs/schema/minmaxlength.schema/default/TopLevel.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * TopLevel.h
- * This file has been autogenerated using quicktype https://github.com/quicktype/quicktype - DO NOT EDIT
- * This file depends of https://github.com/DaveGamble/cJSON, https://github.com/joelguittet/c-list and https://github.com/joelguittet/c-hashtable
- * To parse json data from json string use the following: struct <type> * data = cJSON_Parse<type>(<string>);
- * To get json data from cJSON object use the following: struct <type> * data = cJSON_Get<type>Value(<cjson>);
- * To get cJSON object from json data use the following: cJSON * cjson = cJSON_Create<type>(<data>);
- * To print json string from json data use the following: char * string = cJSON_Print<type>(<data>);
- * To delete json data use the following: cJSON_Delete<type>(<data>);
- */
-
-#ifndef __TOPLEVEL_H__
-#define __TOPLEVEL_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdint.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include <string.h>
-#include <cJSON.h>
-#include <hashtable.h>
-#include <list.h>
-
-#ifndef cJSON_Bool
-#define cJSON_Bool (cJSON_True | cJSON_False)
-#endif
-#ifndef cJSON_Map
-#define cJSON_Map (1 << 16)
-#endif
-#ifndef cJSON_Enum
-#define cJSON_Enum (1 << 17)
-#endif
-
-struct InUnion {
-    int type;
-    union {
-        double number;
-        char * string;
-    } value;
-};
-
-struct TopLevel {
-    char * intersection;
-    struct InUnion * in_union;
-    char * maxlength;
-    char * minlength;
-    char * min_max_intersection;
-    char * minmaxlength;
-    char * min_max_union;
-    char * top_level_union;
-};
-
-#define cJSON_IsInUnion(j) (cJSON_IsNumber(j) || cJSON_IsString(j))
-struct InUnion * cJSON_GetInUnionValue(const cJSON * j);
-cJSON * cJSON_CreateInUnion(const struct InUnion * x);
-void cJSON_DeleteInUnion(struct InUnion * x);
-
-struct TopLevel * cJSON_ParseTopLevel(const char * s);
-struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j);
-cJSON * cJSON_CreateTopLevel(const struct TopLevel * x);
-char * cJSON_PrintTopLevel(const struct TopLevel * x);
-void cJSON_DeleteTopLevel(struct TopLevel * x);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __TOPLEVEL_H__ */
diff --git a/base/schema-cjson/test/inputs/schema/renaming-bug.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/renaming-bug.schema/default/TopLevel.c
index 527f88d..9c0ff9d 100644
--- a/base/schema-cjson/test/inputs/schema/renaming-bug.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/renaming-bug.schema/default/TopLevel.c
@@ -591,7 +591,6 @@ struct Berry * cJSON_GetBerryValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "name")) {
                 if (!cJSON_IsString(cJSON_GetObjectItemCaseSensitive(j, "name"))) { cJSON_DeleteBerry(x); return NULL; }
-                if (strlen(cJSON_GetObjectItemCaseSensitive(j, "name")->valuestring) < 1) { cJSON_DeleteBerry(x); return NULL; }
                 x->name = strdup(cJSON_GetStringValue(cJSON_GetObjectItemCaseSensitive(j, "name")));
             }
             if (cJSON_HasObjectItem(j, "shapes")) {
@@ -1021,7 +1020,6 @@ struct Vehicle * cJSON_GetVehicleValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "id")) {
                 if (!cJSON_IsString(cJSON_GetObjectItemCaseSensitive(j, "id"))) { cJSON_DeleteVehicle(x); return NULL; }
-                if (strlen(cJSON_GetObjectItemCaseSensitive(j, "id")->valuestring) < 1) { cJSON_DeleteVehicle(x); return NULL; }
                 x->id = strdup(cJSON_GetStringValue(cJSON_GetObjectItemCaseSensitive(j, "id")));
             }
             if (cJSON_HasObjectItem(j, "speed")) {
diff --git a/base/schema-cjson/test/inputs/schema/vega-lite.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/vega-lite.schema/default/TopLevel.c
index 606cf98..be1b49c 100644
--- a/base/schema-cjson/test/inputs/schema/vega-lite.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/vega-lite.schema/default/TopLevel.c
@@ -3048,6 +3048,8 @@ struct MarkConfig * cJSON_GetMarkConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "angle")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "angle"))) { cJSON_DeleteMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "angle")->valuedouble < 0) { cJSON_DeleteMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "angle")->valuedouble > 360) { cJSON_DeleteMarkConfig(x); return NULL; }
                 if (NULL != (x->angle = cJSON_malloc(sizeof(double)))) {
                     *x->angle = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "angle"));
                 }
@@ -3094,6 +3096,8 @@ struct MarkConfig * cJSON_GetMarkConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "fillOpacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "fillOpacity"))) { cJSON_DeleteMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fillOpacity")->valuedouble < 0) { cJSON_DeleteMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fillOpacity")->valuedouble > 1) { cJSON_DeleteMarkConfig(x); return NULL; }
                 if (NULL != (x->fill_opacity = cJSON_malloc(sizeof(double)))) {
                     *x->fill_opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "fillOpacity"));
                 }
@@ -3104,6 +3108,7 @@ struct MarkConfig * cJSON_GetMarkConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "fontSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "fontSize"))) { cJSON_DeleteMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fontSize")->valuedouble < 0) { cJSON_DeleteMarkConfig(x); return NULL; }
                 if (NULL != (x->font_size = cJSON_malloc(sizeof(double)))) {
                     *x->font_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "fontSize"));
                 }
@@ -3139,6 +3144,8 @@ struct MarkConfig * cJSON_GetMarkConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "opacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "opacity"))) { cJSON_DeleteMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "opacity")->valuedouble < 0) { cJSON_DeleteMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "opacity")->valuedouble > 1) { cJSON_DeleteMarkConfig(x); return NULL; }
                 if (NULL != (x->opacity = cJSON_malloc(sizeof(double)))) {
                     *x->opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "opacity"));
                 }
@@ -3152,6 +3159,7 @@ struct MarkConfig * cJSON_GetMarkConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "radius")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "radius"))) { cJSON_DeleteMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "radius")->valuedouble < 0) { cJSON_DeleteMarkConfig(x); return NULL; }
                 if (NULL != (x->radius = cJSON_malloc(sizeof(double)))) {
                     *x->radius = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "radius"));
                 }
@@ -3162,6 +3170,7 @@ struct MarkConfig * cJSON_GetMarkConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "size")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "size"))) { cJSON_DeleteMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "size")->valuedouble < 0) { cJSON_DeleteMarkConfig(x); return NULL; }
                 if (NULL != (x->size = cJSON_malloc(sizeof(double)))) {
                     *x->size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "size"));
                 }
@@ -3194,18 +3203,23 @@ struct MarkConfig * cJSON_GetMarkConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "strokeOpacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity"))) { cJSON_DeleteMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity")->valuedouble < 0) { cJSON_DeleteMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity")->valuedouble > 1) { cJSON_DeleteMarkConfig(x); return NULL; }
                 if (NULL != (x->stroke_opacity = cJSON_malloc(sizeof(double)))) {
                     *x->stroke_opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity"));
                 }
             }
             if (cJSON_HasObjectItem(j, "strokeWidth")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "strokeWidth"))) { cJSON_DeleteMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeWidth")->valuedouble < 0) { cJSON_DeleteMarkConfig(x); return NULL; }
                 if (NULL != (x->stroke_width = cJSON_malloc(sizeof(double)))) {
                     *x->stroke_width = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "strokeWidth"));
                 }
             }
             if (cJSON_HasObjectItem(j, "tension")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "tension"))) { cJSON_DeleteMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "tension")->valuedouble < 0) { cJSON_DeleteMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "tension")->valuedouble > 1) { cJSON_DeleteMarkConfig(x); return NULL; }
                 if (NULL != (x->tension = cJSON_malloc(sizeof(double)))) {
                     *x->tension = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "tension"));
                 }
@@ -3511,18 +3525,23 @@ struct AxisConfig * cJSON_GetAxisConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "gridOpacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "gridOpacity"))) { cJSON_DeleteAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "gridOpacity")->valuedouble < 0) { cJSON_DeleteAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "gridOpacity")->valuedouble > 1) { cJSON_DeleteAxisConfig(x); return NULL; }
                 if (NULL != (x->grid_opacity = cJSON_malloc(sizeof(double)))) {
                     *x->grid_opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "gridOpacity"));
                 }
             }
             if (cJSON_HasObjectItem(j, "gridWidth")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "gridWidth"))) { cJSON_DeleteAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "gridWidth")->valuedouble < 0) { cJSON_DeleteAxisConfig(x); return NULL; }
                 if (NULL != (x->grid_width = cJSON_malloc(sizeof(double)))) {
                     *x->grid_width = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "gridWidth"));
                 }
             }
             if (cJSON_HasObjectItem(j, "labelAngle")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "labelAngle"))) { cJSON_DeleteAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "labelAngle")->valuedouble < -360) { cJSON_DeleteAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "labelAngle")->valuedouble > 360) { cJSON_DeleteAxisConfig(x); return NULL; }
                 if (NULL != (x->label_angle = cJSON_malloc(sizeof(double)))) {
                     *x->label_angle = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "labelAngle"));
                 }
@@ -3547,6 +3566,7 @@ struct AxisConfig * cJSON_GetAxisConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "labelFontSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "labelFontSize"))) { cJSON_DeleteAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "labelFontSize")->valuedouble < 0) { cJSON_DeleteAxisConfig(x); return NULL; }
                 if (NULL != (x->label_font_size = cJSON_malloc(sizeof(double)))) {
                     *x->label_font_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "labelFontSize"));
                 }
@@ -3610,12 +3630,14 @@ struct AxisConfig * cJSON_GetAxisConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "tickSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "tickSize"))) { cJSON_DeleteAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "tickSize")->valuedouble < 0) { cJSON_DeleteAxisConfig(x); return NULL; }
                 if (NULL != (x->tick_size = cJSON_malloc(sizeof(double)))) {
                     *x->tick_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "tickSize"));
                 }
             }
             if (cJSON_HasObjectItem(j, "tickWidth")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "tickWidth"))) { cJSON_DeleteAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "tickWidth")->valuedouble < 0) { cJSON_DeleteAxisConfig(x); return NULL; }
                 if (NULL != (x->tick_width = cJSON_malloc(sizeof(double)))) {
                     *x->tick_width = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "tickWidth"));
                 }
@@ -3644,6 +3666,7 @@ struct AxisConfig * cJSON_GetAxisConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "titleFontSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "titleFontSize"))) { cJSON_DeleteAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "titleFontSize")->valuedouble < 0) { cJSON_DeleteAxisConfig(x); return NULL; }
                 if (NULL != (x->title_font_size = cJSON_malloc(sizeof(double)))) {
                     *x->title_font_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "titleFontSize"));
                 }
@@ -4028,18 +4051,23 @@ struct VgAxisConfig * cJSON_GetVgAxisConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "gridOpacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "gridOpacity"))) { cJSON_DeleteVgAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "gridOpacity")->valuedouble < 0) { cJSON_DeleteVgAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "gridOpacity")->valuedouble > 1) { cJSON_DeleteVgAxisConfig(x); return NULL; }
                 if (NULL != (x->grid_opacity = cJSON_malloc(sizeof(double)))) {
                     *x->grid_opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "gridOpacity"));
                 }
             }
             if (cJSON_HasObjectItem(j, "gridWidth")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "gridWidth"))) { cJSON_DeleteVgAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "gridWidth")->valuedouble < 0) { cJSON_DeleteVgAxisConfig(x); return NULL; }
                 if (NULL != (x->grid_width = cJSON_malloc(sizeof(double)))) {
                     *x->grid_width = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "gridWidth"));
                 }
             }
             if (cJSON_HasObjectItem(j, "labelAngle")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "labelAngle"))) { cJSON_DeleteVgAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "labelAngle")->valuedouble < -360) { cJSON_DeleteVgAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "labelAngle")->valuedouble > 360) { cJSON_DeleteVgAxisConfig(x); return NULL; }
                 if (NULL != (x->label_angle = cJSON_malloc(sizeof(double)))) {
                     *x->label_angle = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "labelAngle"));
                 }
@@ -4064,6 +4092,7 @@ struct VgAxisConfig * cJSON_GetVgAxisConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "labelFontSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "labelFontSize"))) { cJSON_DeleteVgAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "labelFontSize")->valuedouble < 0) { cJSON_DeleteVgAxisConfig(x); return NULL; }
                 if (NULL != (x->label_font_size = cJSON_malloc(sizeof(double)))) {
                     *x->label_font_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "labelFontSize"));
                 }
@@ -4121,12 +4150,14 @@ struct VgAxisConfig * cJSON_GetVgAxisConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "tickSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "tickSize"))) { cJSON_DeleteVgAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "tickSize")->valuedouble < 0) { cJSON_DeleteVgAxisConfig(x); return NULL; }
                 if (NULL != (x->tick_size = cJSON_malloc(sizeof(double)))) {
                     *x->tick_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "tickSize"));
                 }
             }
             if (cJSON_HasObjectItem(j, "tickWidth")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "tickWidth"))) { cJSON_DeleteVgAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "tickWidth")->valuedouble < 0) { cJSON_DeleteVgAxisConfig(x); return NULL; }
                 if (NULL != (x->tick_width = cJSON_malloc(sizeof(double)))) {
                     *x->tick_width = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "tickWidth"));
                 }
@@ -4155,6 +4186,7 @@ struct VgAxisConfig * cJSON_GetVgAxisConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "titleFontSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "titleFontSize"))) { cJSON_DeleteVgAxisConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "titleFontSize")->valuedouble < 0) { cJSON_DeleteVgAxisConfig(x); return NULL; }
                 if (NULL != (x->title_font_size = cJSON_malloc(sizeof(double)))) {
                     *x->title_font_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "titleFontSize"));
                 }
@@ -4492,6 +4524,8 @@ struct BarConfig * cJSON_GetBarConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "angle")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "angle"))) { cJSON_DeleteBarConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "angle")->valuedouble < 0) { cJSON_DeleteBarConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "angle")->valuedouble > 360) { cJSON_DeleteBarConfig(x); return NULL; }
                 if (NULL != (x->angle = cJSON_malloc(sizeof(double)))) {
                     *x->angle = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "angle"));
                 }
@@ -4505,6 +4539,7 @@ struct BarConfig * cJSON_GetBarConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "binSpacing")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "binSpacing"))) { cJSON_DeleteBarConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "binSpacing")->valuedouble < 0) { cJSON_DeleteBarConfig(x); return NULL; }
                 if (NULL != (x->bin_spacing = cJSON_malloc(sizeof(double)))) {
                     *x->bin_spacing = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "binSpacing"));
                 }
@@ -4515,6 +4550,7 @@ struct BarConfig * cJSON_GetBarConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "continuousBandSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "continuousBandSize"))) { cJSON_DeleteBarConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "continuousBandSize")->valuedouble < 0) { cJSON_DeleteBarConfig(x); return NULL; }
                 if (NULL != (x->continuous_band_size = cJSON_malloc(sizeof(double)))) {
                     *x->continuous_band_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "continuousBandSize"));
                 }
@@ -4528,6 +4564,7 @@ struct BarConfig * cJSON_GetBarConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "discreteBandSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "discreteBandSize"))) { cJSON_DeleteBarConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "discreteBandSize")->valuedouble < 0) { cJSON_DeleteBarConfig(x); return NULL; }
                 if (NULL != (x->discrete_band_size = cJSON_malloc(sizeof(double)))) {
                     *x->discrete_band_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "discreteBandSize"));
                 }
@@ -4556,6 +4593,8 @@ struct BarConfig * cJSON_GetBarConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "fillOpacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "fillOpacity"))) { cJSON_DeleteBarConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fillOpacity")->valuedouble < 0) { cJSON_DeleteBarConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fillOpacity")->valuedouble > 1) { cJSON_DeleteBarConfig(x); return NULL; }
                 if (NULL != (x->fill_opacity = cJSON_malloc(sizeof(double)))) {
                     *x->fill_opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "fillOpacity"));
                 }
@@ -4566,6 +4605,7 @@ struct BarConfig * cJSON_GetBarConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "fontSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "fontSize"))) { cJSON_DeleteBarConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fontSize")->valuedouble < 0) { cJSON_DeleteBarConfig(x); return NULL; }
                 if (NULL != (x->font_size = cJSON_malloc(sizeof(double)))) {
                     *x->font_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "fontSize"));
                 }
@@ -4601,6 +4641,8 @@ struct BarConfig * cJSON_GetBarConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "opacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "opacity"))) { cJSON_DeleteBarConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "opacity")->valuedouble < 0) { cJSON_DeleteBarConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "opacity")->valuedouble > 1) { cJSON_DeleteBarConfig(x); return NULL; }
                 if (NULL != (x->opacity = cJSON_malloc(sizeof(double)))) {
                     *x->opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "opacity"));
                 }
@@ -4614,6 +4656,7 @@ struct BarConfig * cJSON_GetBarConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "radius")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "radius"))) { cJSON_DeleteBarConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "radius")->valuedouble < 0) { cJSON_DeleteBarConfig(x); return NULL; }
                 if (NULL != (x->radius = cJSON_malloc(sizeof(double)))) {
                     *x->radius = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "radius"));
                 }
@@ -4624,6 +4667,7 @@ struct BarConfig * cJSON_GetBarConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "size")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "size"))) { cJSON_DeleteBarConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "size")->valuedouble < 0) { cJSON_DeleteBarConfig(x); return NULL; }
                 if (NULL != (x->size = cJSON_malloc(sizeof(double)))) {
                     *x->size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "size"));
                 }
@@ -4656,18 +4700,23 @@ struct BarConfig * cJSON_GetBarConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "strokeOpacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity"))) { cJSON_DeleteBarConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity")->valuedouble < 0) { cJSON_DeleteBarConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity")->valuedouble > 1) { cJSON_DeleteBarConfig(x); return NULL; }
                 if (NULL != (x->stroke_opacity = cJSON_malloc(sizeof(double)))) {
                     *x->stroke_opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity"));
                 }
             }
             if (cJSON_HasObjectItem(j, "strokeWidth")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "strokeWidth"))) { cJSON_DeleteBarConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeWidth")->valuedouble < 0) { cJSON_DeleteBarConfig(x); return NULL; }
                 if (NULL != (x->stroke_width = cJSON_malloc(sizeof(double)))) {
                     *x->stroke_width = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "strokeWidth"));
                 }
             }
             if (cJSON_HasObjectItem(j, "tension")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "tension"))) { cJSON_DeleteBarConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "tension")->valuedouble < 0) { cJSON_DeleteBarConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "tension")->valuedouble > 1) { cJSON_DeleteBarConfig(x); return NULL; }
                 if (NULL != (x->tension = cJSON_malloc(sizeof(double)))) {
                     *x->tension = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "tension"));
                 }
@@ -4959,6 +5008,7 @@ struct LegendConfig * cJSON_GetLegendConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "gradientHeight")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "gradientHeight"))) { cJSON_DeleteLegendConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "gradientHeight")->valuedouble < 0) { cJSON_DeleteLegendConfig(x); return NULL; }
                 if (NULL != (x->gradient_height = cJSON_malloc(sizeof(double)))) {
                     *x->gradient_height = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "gradientHeight"));
                 }
@@ -4985,12 +5035,14 @@ struct LegendConfig * cJSON_GetLegendConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "gradientStrokeWidth")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "gradientStrokeWidth"))) { cJSON_DeleteLegendConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "gradientStrokeWidth")->valuedouble < 0) { cJSON_DeleteLegendConfig(x); return NULL; }
                 if (NULL != (x->gradient_stroke_width = cJSON_malloc(sizeof(double)))) {
                     *x->gradient_stroke_width = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "gradientStrokeWidth"));
                 }
             }
             if (cJSON_HasObjectItem(j, "gradientWidth")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "gradientWidth"))) { cJSON_DeleteLegendConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "gradientWidth")->valuedouble < 0) { cJSON_DeleteLegendConfig(x); return NULL; }
                 if (NULL != (x->gradient_width = cJSON_malloc(sizeof(double)))) {
                     *x->gradient_width = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "gradientWidth"));
                 }
@@ -5013,6 +5065,7 @@ struct LegendConfig * cJSON_GetLegendConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "labelFontSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "labelFontSize"))) { cJSON_DeleteLegendConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "labelFontSize")->valuedouble < 0) { cJSON_DeleteLegendConfig(x); return NULL; }
                 if (NULL != (x->label_font_size = cJSON_malloc(sizeof(double)))) {
                     *x->label_font_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "labelFontSize"));
                 }
@@ -5025,6 +5078,7 @@ struct LegendConfig * cJSON_GetLegendConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "labelOffset")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "labelOffset"))) { cJSON_DeleteLegendConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "labelOffset")->valuedouble < 0) { cJSON_DeleteLegendConfig(x); return NULL; }
                 if (NULL != (x->label_offset = cJSON_malloc(sizeof(double)))) {
                     *x->label_offset = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "labelOffset"));
                 }
@@ -5086,12 +5140,14 @@ struct LegendConfig * cJSON_GetLegendConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "symbolSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "symbolSize"))) { cJSON_DeleteLegendConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "symbolSize")->valuedouble < 0) { cJSON_DeleteLegendConfig(x); return NULL; }
                 if (NULL != (x->symbol_size = cJSON_malloc(sizeof(double)))) {
                     *x->symbol_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "symbolSize"));
                 }
             }
             if (cJSON_HasObjectItem(j, "symbolStrokeWidth")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "symbolStrokeWidth"))) { cJSON_DeleteLegendConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "symbolStrokeWidth")->valuedouble < 0) { cJSON_DeleteLegendConfig(x); return NULL; }
                 if (NULL != (x->symbol_stroke_width = cJSON_malloc(sizeof(double)))) {
                     *x->symbol_stroke_width = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "symbolStrokeWidth"));
                 }
@@ -5978,12 +6034,16 @@ struct ScaleConfig * cJSON_GetScaleConfigValue(const cJSON * j) {
             memset(x, 0, sizeof(struct ScaleConfig));
             if (cJSON_HasObjectItem(j, "bandPaddingInner")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "bandPaddingInner"))) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "bandPaddingInner")->valuedouble < 0) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "bandPaddingInner")->valuedouble > 1) { cJSON_DeleteScaleConfig(x); return NULL; }
                 if (NULL != (x->band_padding_inner = cJSON_malloc(sizeof(double)))) {
                     *x->band_padding_inner = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "bandPaddingInner"));
                 }
             }
             if (cJSON_HasObjectItem(j, "bandPaddingOuter")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "bandPaddingOuter"))) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "bandPaddingOuter")->valuedouble < 0) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "bandPaddingOuter")->valuedouble > 1) { cJSON_DeleteScaleConfig(x); return NULL; }
                 if (NULL != (x->band_padding_outer = cJSON_malloc(sizeof(double)))) {
                     *x->band_padding_outer = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "bandPaddingOuter"));
                 }
@@ -5996,72 +6056,87 @@ struct ScaleConfig * cJSON_GetScaleConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "continuousPadding")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "continuousPadding"))) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "continuousPadding")->valuedouble < 0) { cJSON_DeleteScaleConfig(x); return NULL; }
                 if (NULL != (x->continuous_padding = cJSON_malloc(sizeof(double)))) {
                     *x->continuous_padding = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "continuousPadding"));
                 }
             }
             if (cJSON_HasObjectItem(j, "maxBandSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "maxBandSize"))) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "maxBandSize")->valuedouble < 0) { cJSON_DeleteScaleConfig(x); return NULL; }
                 if (NULL != (x->max_band_size = cJSON_malloc(sizeof(double)))) {
                     *x->max_band_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "maxBandSize"));
                 }
             }
             if (cJSON_HasObjectItem(j, "maxFontSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "maxFontSize"))) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "maxFontSize")->valuedouble < 0) { cJSON_DeleteScaleConfig(x); return NULL; }
                 if (NULL != (x->max_font_size = cJSON_malloc(sizeof(double)))) {
                     *x->max_font_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "maxFontSize"));
                 }
             }
             if (cJSON_HasObjectItem(j, "maxOpacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "maxOpacity"))) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "maxOpacity")->valuedouble < 0) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "maxOpacity")->valuedouble > 1) { cJSON_DeleteScaleConfig(x); return NULL; }
                 if (NULL != (x->max_opacity = cJSON_malloc(sizeof(double)))) {
                     *x->max_opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "maxOpacity"));
                 }
             }
             if (cJSON_HasObjectItem(j, "maxSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "maxSize"))) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "maxSize")->valuedouble < 0) { cJSON_DeleteScaleConfig(x); return NULL; }
                 if (NULL != (x->max_size = cJSON_malloc(sizeof(double)))) {
                     *x->max_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "maxSize"));
                 }
             }
             if (cJSON_HasObjectItem(j, "maxStrokeWidth")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "maxStrokeWidth"))) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "maxStrokeWidth")->valuedouble < 0) { cJSON_DeleteScaleConfig(x); return NULL; }
                 if (NULL != (x->max_stroke_width = cJSON_malloc(sizeof(double)))) {
                     *x->max_stroke_width = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "maxStrokeWidth"));
                 }
             }
             if (cJSON_HasObjectItem(j, "minBandSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "minBandSize"))) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "minBandSize")->valuedouble < 0) { cJSON_DeleteScaleConfig(x); return NULL; }
                 if (NULL != (x->min_band_size = cJSON_malloc(sizeof(double)))) {
                     *x->min_band_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "minBandSize"));
                 }
             }
             if (cJSON_HasObjectItem(j, "minFontSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "minFontSize"))) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "minFontSize")->valuedouble < 0) { cJSON_DeleteScaleConfig(x); return NULL; }
                 if (NULL != (x->min_font_size = cJSON_malloc(sizeof(double)))) {
                     *x->min_font_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "minFontSize"));
                 }
             }
             if (cJSON_HasObjectItem(j, "minOpacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "minOpacity"))) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "minOpacity")->valuedouble < 0) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "minOpacity")->valuedouble > 1) { cJSON_DeleteScaleConfig(x); return NULL; }
                 if (NULL != (x->min_opacity = cJSON_malloc(sizeof(double)))) {
                     *x->min_opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "minOpacity"));
                 }
             }
             if (cJSON_HasObjectItem(j, "minSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "minSize"))) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "minSize")->valuedouble < 0) { cJSON_DeleteScaleConfig(x); return NULL; }
                 if (NULL != (x->min_size = cJSON_malloc(sizeof(double)))) {
                     *x->min_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "minSize"));
                 }
             }
             if (cJSON_HasObjectItem(j, "minStrokeWidth")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "minStrokeWidth"))) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "minStrokeWidth")->valuedouble < 0) { cJSON_DeleteScaleConfig(x); return NULL; }
                 if (NULL != (x->min_stroke_width = cJSON_malloc(sizeof(double)))) {
                     *x->min_stroke_width = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "minStrokeWidth"));
                 }
             }
             if (cJSON_HasObjectItem(j, "pointPadding")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "pointPadding"))) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "pointPadding")->valuedouble < 0) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "pointPadding")->valuedouble > 1) { cJSON_DeleteScaleConfig(x); return NULL; }
                 if (NULL != (x->point_padding = cJSON_malloc(sizeof(double)))) {
                     *x->point_padding = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "pointPadding"));
                 }
@@ -6080,6 +6155,7 @@ struct ScaleConfig * cJSON_GetScaleConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "textXRangeStep")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "textXRangeStep"))) { cJSON_DeleteScaleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "textXRangeStep")->valuedouble < 0) { cJSON_DeleteScaleConfig(x); return NULL; }
                 if (NULL != (x->text_x_range_step = cJSON_malloc(sizeof(double)))) {
                     *x->text_x_range_step = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "textXRangeStep"));
                 }
@@ -7194,6 +7270,8 @@ struct VgMarkConfig * cJSON_GetVgMarkConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "angle")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "angle"))) { cJSON_DeleteVgMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "angle")->valuedouble < 0) { cJSON_DeleteVgMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "angle")->valuedouble > 360) { cJSON_DeleteVgMarkConfig(x); return NULL; }
                 if (NULL != (x->angle = cJSON_malloc(sizeof(double)))) {
                     *x->angle = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "angle"));
                 }
@@ -7230,6 +7308,8 @@ struct VgMarkConfig * cJSON_GetVgMarkConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "fillOpacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "fillOpacity"))) { cJSON_DeleteVgMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fillOpacity")->valuedouble < 0) { cJSON_DeleteVgMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fillOpacity")->valuedouble > 1) { cJSON_DeleteVgMarkConfig(x); return NULL; }
                 if (NULL != (x->fill_opacity = cJSON_malloc(sizeof(double)))) {
                     *x->fill_opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "fillOpacity"));
                 }
@@ -7240,6 +7320,7 @@ struct VgMarkConfig * cJSON_GetVgMarkConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "fontSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "fontSize"))) { cJSON_DeleteVgMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fontSize")->valuedouble < 0) { cJSON_DeleteVgMarkConfig(x); return NULL; }
                 if (NULL != (x->font_size = cJSON_malloc(sizeof(double)))) {
                     *x->font_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "fontSize"));
                 }
@@ -7275,6 +7356,8 @@ struct VgMarkConfig * cJSON_GetVgMarkConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "opacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "opacity"))) { cJSON_DeleteVgMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "opacity")->valuedouble < 0) { cJSON_DeleteVgMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "opacity")->valuedouble > 1) { cJSON_DeleteVgMarkConfig(x); return NULL; }
                 if (NULL != (x->opacity = cJSON_malloc(sizeof(double)))) {
                     *x->opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "opacity"));
                 }
@@ -7288,6 +7371,7 @@ struct VgMarkConfig * cJSON_GetVgMarkConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "radius")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "radius"))) { cJSON_DeleteVgMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "radius")->valuedouble < 0) { cJSON_DeleteVgMarkConfig(x); return NULL; }
                 if (NULL != (x->radius = cJSON_malloc(sizeof(double)))) {
                     *x->radius = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "radius"));
                 }
@@ -7298,6 +7382,7 @@ struct VgMarkConfig * cJSON_GetVgMarkConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "size")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "size"))) { cJSON_DeleteVgMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "size")->valuedouble < 0) { cJSON_DeleteVgMarkConfig(x); return NULL; }
                 if (NULL != (x->size = cJSON_malloc(sizeof(double)))) {
                     *x->size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "size"));
                 }
@@ -7330,18 +7415,23 @@ struct VgMarkConfig * cJSON_GetVgMarkConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "strokeOpacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity"))) { cJSON_DeleteVgMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity")->valuedouble < 0) { cJSON_DeleteVgMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity")->valuedouble > 1) { cJSON_DeleteVgMarkConfig(x); return NULL; }
                 if (NULL != (x->stroke_opacity = cJSON_malloc(sizeof(double)))) {
                     *x->stroke_opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity"));
                 }
             }
             if (cJSON_HasObjectItem(j, "strokeWidth")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "strokeWidth"))) { cJSON_DeleteVgMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeWidth")->valuedouble < 0) { cJSON_DeleteVgMarkConfig(x); return NULL; }
                 if (NULL != (x->stroke_width = cJSON_malloc(sizeof(double)))) {
                     *x->stroke_width = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "strokeWidth"));
                 }
             }
             if (cJSON_HasObjectItem(j, "tension")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "tension"))) { cJSON_DeleteVgMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "tension")->valuedouble < 0) { cJSON_DeleteVgMarkConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "tension")->valuedouble > 1) { cJSON_DeleteVgMarkConfig(x); return NULL; }
                 if (NULL != (x->tension = cJSON_malloc(sizeof(double)))) {
                     *x->tension = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "tension"));
                 }
@@ -7594,6 +7684,8 @@ struct TextConfig * cJSON_GetTextConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "angle")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "angle"))) { cJSON_DeleteTextConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "angle")->valuedouble < 0) { cJSON_DeleteTextConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "angle")->valuedouble > 360) { cJSON_DeleteTextConfig(x); return NULL; }
                 if (NULL != (x->angle = cJSON_malloc(sizeof(double)))) {
                     *x->angle = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "angle"));
                 }
@@ -7640,6 +7732,8 @@ struct TextConfig * cJSON_GetTextConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "fillOpacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "fillOpacity"))) { cJSON_DeleteTextConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fillOpacity")->valuedouble < 0) { cJSON_DeleteTextConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fillOpacity")->valuedouble > 1) { cJSON_DeleteTextConfig(x); return NULL; }
                 if (NULL != (x->fill_opacity = cJSON_malloc(sizeof(double)))) {
                     *x->fill_opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "fillOpacity"));
                 }
@@ -7650,6 +7744,7 @@ struct TextConfig * cJSON_GetTextConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "fontSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "fontSize"))) { cJSON_DeleteTextConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fontSize")->valuedouble < 0) { cJSON_DeleteTextConfig(x); return NULL; }
                 if (NULL != (x->font_size = cJSON_malloc(sizeof(double)))) {
                     *x->font_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "fontSize"));
                 }
@@ -7685,6 +7780,8 @@ struct TextConfig * cJSON_GetTextConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "opacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "opacity"))) { cJSON_DeleteTextConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "opacity")->valuedouble < 0) { cJSON_DeleteTextConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "opacity")->valuedouble > 1) { cJSON_DeleteTextConfig(x); return NULL; }
                 if (NULL != (x->opacity = cJSON_malloc(sizeof(double)))) {
                     *x->opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "opacity"));
                 }
@@ -7698,6 +7795,7 @@ struct TextConfig * cJSON_GetTextConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "radius")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "radius"))) { cJSON_DeleteTextConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "radius")->valuedouble < 0) { cJSON_DeleteTextConfig(x); return NULL; }
                 if (NULL != (x->radius = cJSON_malloc(sizeof(double)))) {
                     *x->radius = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "radius"));
                 }
@@ -7714,6 +7812,7 @@ struct TextConfig * cJSON_GetTextConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "size")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "size"))) { cJSON_DeleteTextConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "size")->valuedouble < 0) { cJSON_DeleteTextConfig(x); return NULL; }
                 if (NULL != (x->size = cJSON_malloc(sizeof(double)))) {
                     *x->size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "size"));
                 }
@@ -7746,18 +7845,23 @@ struct TextConfig * cJSON_GetTextConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "strokeOpacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity"))) { cJSON_DeleteTextConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity")->valuedouble < 0) { cJSON_DeleteTextConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity")->valuedouble > 1) { cJSON_DeleteTextConfig(x); return NULL; }
                 if (NULL != (x->stroke_opacity = cJSON_malloc(sizeof(double)))) {
                     *x->stroke_opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity"));
                 }
             }
             if (cJSON_HasObjectItem(j, "strokeWidth")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "strokeWidth"))) { cJSON_DeleteTextConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeWidth")->valuedouble < 0) { cJSON_DeleteTextConfig(x); return NULL; }
                 if (NULL != (x->stroke_width = cJSON_malloc(sizeof(double)))) {
                     *x->stroke_width = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "strokeWidth"));
                 }
             }
             if (cJSON_HasObjectItem(j, "tension")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "tension"))) { cJSON_DeleteTextConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "tension")->valuedouble < 0) { cJSON_DeleteTextConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "tension")->valuedouble > 1) { cJSON_DeleteTextConfig(x); return NULL; }
                 if (NULL != (x->tension = cJSON_malloc(sizeof(double)))) {
                     *x->tension = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "tension"));
                 }
@@ -8028,12 +8132,15 @@ struct TickConfig * cJSON_GetTickConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "angle")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "angle"))) { cJSON_DeleteTickConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "angle")->valuedouble < 0) { cJSON_DeleteTickConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "angle")->valuedouble > 360) { cJSON_DeleteTickConfig(x); return NULL; }
                 if (NULL != (x->angle = cJSON_malloc(sizeof(double)))) {
                     *x->angle = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "angle"));
                 }
             }
             if (cJSON_HasObjectItem(j, "bandSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "bandSize"))) { cJSON_DeleteTickConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "bandSize")->valuedouble < 0) { cJSON_DeleteTickConfig(x); return NULL; }
                 if (NULL != (x->band_size = cJSON_malloc(sizeof(double)))) {
                     *x->band_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "bandSize"));
                 }
@@ -8080,6 +8187,8 @@ struct TickConfig * cJSON_GetTickConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "fillOpacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "fillOpacity"))) { cJSON_DeleteTickConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fillOpacity")->valuedouble < 0) { cJSON_DeleteTickConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fillOpacity")->valuedouble > 1) { cJSON_DeleteTickConfig(x); return NULL; }
                 if (NULL != (x->fill_opacity = cJSON_malloc(sizeof(double)))) {
                     *x->fill_opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "fillOpacity"));
                 }
@@ -8090,6 +8199,7 @@ struct TickConfig * cJSON_GetTickConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "fontSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "fontSize"))) { cJSON_DeleteTickConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fontSize")->valuedouble < 0) { cJSON_DeleteTickConfig(x); return NULL; }
                 if (NULL != (x->font_size = cJSON_malloc(sizeof(double)))) {
                     *x->font_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "fontSize"));
                 }
@@ -8125,6 +8235,8 @@ struct TickConfig * cJSON_GetTickConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "opacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "opacity"))) { cJSON_DeleteTickConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "opacity")->valuedouble < 0) { cJSON_DeleteTickConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "opacity")->valuedouble > 1) { cJSON_DeleteTickConfig(x); return NULL; }
                 if (NULL != (x->opacity = cJSON_malloc(sizeof(double)))) {
                     *x->opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "opacity"));
                 }
@@ -8138,6 +8250,7 @@ struct TickConfig * cJSON_GetTickConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "radius")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "radius"))) { cJSON_DeleteTickConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "radius")->valuedouble < 0) { cJSON_DeleteTickConfig(x); return NULL; }
                 if (NULL != (x->radius = cJSON_malloc(sizeof(double)))) {
                     *x->radius = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "radius"));
                 }
@@ -8148,6 +8261,7 @@ struct TickConfig * cJSON_GetTickConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "size")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "size"))) { cJSON_DeleteTickConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "size")->valuedouble < 0) { cJSON_DeleteTickConfig(x); return NULL; }
                 if (NULL != (x->size = cJSON_malloc(sizeof(double)))) {
                     *x->size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "size"));
                 }
@@ -8180,18 +8294,23 @@ struct TickConfig * cJSON_GetTickConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "strokeOpacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity"))) { cJSON_DeleteTickConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity")->valuedouble < 0) { cJSON_DeleteTickConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity")->valuedouble > 1) { cJSON_DeleteTickConfig(x); return NULL; }
                 if (NULL != (x->stroke_opacity = cJSON_malloc(sizeof(double)))) {
                     *x->stroke_opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity"));
                 }
             }
             if (cJSON_HasObjectItem(j, "strokeWidth")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "strokeWidth"))) { cJSON_DeleteTickConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeWidth")->valuedouble < 0) { cJSON_DeleteTickConfig(x); return NULL; }
                 if (NULL != (x->stroke_width = cJSON_malloc(sizeof(double)))) {
                     *x->stroke_width = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "strokeWidth"));
                 }
             }
             if (cJSON_HasObjectItem(j, "tension")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "tension"))) { cJSON_DeleteTickConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "tension")->valuedouble < 0) { cJSON_DeleteTickConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "tension")->valuedouble > 1) { cJSON_DeleteTickConfig(x); return NULL; }
                 if (NULL != (x->tension = cJSON_malloc(sizeof(double)))) {
                     *x->tension = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "tension"));
                 }
@@ -8208,6 +8327,7 @@ struct TickConfig * cJSON_GetTickConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "thickness")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "thickness"))) { cJSON_DeleteTickConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "thickness")->valuedouble < 0) { cJSON_DeleteTickConfig(x); return NULL; }
                 if (NULL != (x->thickness = cJSON_malloc(sizeof(double)))) {
                     *x->thickness = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "thickness"));
                 }
@@ -8495,6 +8615,7 @@ struct VgTitleConfig * cJSON_GetVgTitleConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "fontSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "fontSize"))) { cJSON_DeleteVgTitleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fontSize")->valuedouble < 0) { cJSON_DeleteVgTitleConfig(x); return NULL; }
                 if (NULL != (x->font_size = cJSON_malloc(sizeof(double)))) {
                     *x->font_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "fontSize"));
                 }
@@ -8506,6 +8627,7 @@ struct VgTitleConfig * cJSON_GetVgTitleConfigValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "limit")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "limit"))) { cJSON_DeleteVgTitleConfig(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "limit")->valuedouble < 0) { cJSON_DeleteVgTitleConfig(x); return NULL; }
                 if (NULL != (x->limit = cJSON_malloc(sizeof(double)))) {
                     *x->limit = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "limit"));
                 }
@@ -9573,6 +9695,7 @@ struct BinParams * cJSON_GetBinParamsValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "maxbins")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "maxbins"))) { cJSON_DeleteBinParams(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "maxbins")->valuedouble < 2) { cJSON_DeleteBinParams(x); return NULL; }
                 if (NULL != (x->maxbins = cJSON_malloc(sizeof(double)))) {
                     *x->maxbins = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "maxbins"));
                 }
@@ -9870,6 +9993,8 @@ struct DateTime * cJSON_GetDateTimeValue(const cJSON * j) {
             memset(x, 0, sizeof(struct DateTime));
             if (cJSON_HasObjectItem(j, "date")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "date"))) { cJSON_DeleteDateTime(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "date")->valuedouble < 1) { cJSON_DeleteDateTime(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "date")->valuedouble > 31) { cJSON_DeleteDateTime(x); return NULL; }
                 if (NULL != (x->date = cJSON_malloc(sizeof(double)))) {
                     *x->date = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "date"));
                 }
@@ -9881,18 +10006,24 @@ struct DateTime * cJSON_GetDateTimeValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "hours")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "hours"))) { cJSON_DeleteDateTime(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "hours")->valuedouble < 0) { cJSON_DeleteDateTime(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "hours")->valuedouble > 23) { cJSON_DeleteDateTime(x); return NULL; }
                 if (NULL != (x->hours = cJSON_malloc(sizeof(double)))) {
                     *x->hours = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "hours"));
                 }
             }
             if (cJSON_HasObjectItem(j, "milliseconds")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "milliseconds"))) { cJSON_DeleteDateTime(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "milliseconds")->valuedouble < 0) { cJSON_DeleteDateTime(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "milliseconds")->valuedouble > 999) { cJSON_DeleteDateTime(x); return NULL; }
                 if (NULL != (x->milliseconds = cJSON_malloc(sizeof(double)))) {
                     *x->milliseconds = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "milliseconds"));
                 }
             }
             if (cJSON_HasObjectItem(j, "minutes")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "minutes"))) { cJSON_DeleteDateTime(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "minutes")->valuedouble < 0) { cJSON_DeleteDateTime(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "minutes")->valuedouble > 59) { cJSON_DeleteDateTime(x); return NULL; }
                 if (NULL != (x->minutes = cJSON_malloc(sizeof(double)))) {
                     *x->minutes = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "minutes"));
                 }
@@ -9904,12 +10035,16 @@ struct DateTime * cJSON_GetDateTimeValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "quarter")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "quarter"))) { cJSON_DeleteDateTime(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "quarter")->valuedouble < 1) { cJSON_DeleteDateTime(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "quarter")->valuedouble > 4) { cJSON_DeleteDateTime(x); return NULL; }
                 if (NULL != (x->quarter = cJSON_malloc(sizeof(double)))) {
                     *x->quarter = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "quarter"));
                 }
             }
             if (cJSON_HasObjectItem(j, "seconds")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "seconds"))) { cJSON_DeleteDateTime(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "seconds")->valuedouble < 0) { cJSON_DeleteDateTime(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "seconds")->valuedouble > 59) { cJSON_DeleteDateTime(x); return NULL; }
                 if (NULL != (x->seconds = cJSON_malloc(sizeof(double)))) {
                     *x->seconds = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "seconds"));
                 }
@@ -10467,6 +10602,7 @@ struct Legend * cJSON_GetLegendValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "zindex")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "zindex"))) { cJSON_DeleteLegend(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "zindex")->valuedouble < 0) { cJSON_DeleteLegend(x); return NULL; }
                 if (NULL != (x->zindex = cJSON_malloc(sizeof(double)))) {
                     *x->zindex = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "zindex"));
                 }
@@ -10962,18 +11098,23 @@ struct Scale * cJSON_GetScaleValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "padding")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "padding"))) { cJSON_DeleteScale(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "padding")->valuedouble < 0) { cJSON_DeleteScale(x); return NULL; }
                 if (NULL != (x->padding = cJSON_malloc(sizeof(double)))) {
                     *x->padding = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "padding"));
                 }
             }
             if (cJSON_HasObjectItem(j, "paddingInner")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "paddingInner"))) { cJSON_DeleteScale(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "paddingInner")->valuedouble < 0) { cJSON_DeleteScale(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "paddingInner")->valuedouble > 1) { cJSON_DeleteScale(x); return NULL; }
                 if (NULL != (x->padding_inner = cJSON_malloc(sizeof(double)))) {
                     *x->padding_inner = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "paddingInner"));
                 }
             }
             if (cJSON_HasObjectItem(j, "paddingOuter")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "paddingOuter"))) { cJSON_DeleteScale(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "paddingOuter")->valuedouble < 0) { cJSON_DeleteScale(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "paddingOuter")->valuedouble > 1) { cJSON_DeleteScale(x); return NULL; }
                 if (NULL != (x->padding_outer = cJSON_malloc(sizeof(double)))) {
                     *x->padding_outer = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "paddingOuter"));
                 }
@@ -11591,6 +11732,8 @@ struct Header * cJSON_GetHeaderValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "labelAngle")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "labelAngle"))) { cJSON_DeleteHeader(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "labelAngle")->valuedouble < -360) { cJSON_DeleteHeader(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "labelAngle")->valuedouble > 360) { cJSON_DeleteHeader(x); return NULL; }
                 if (NULL != (x->label_angle = cJSON_malloc(sizeof(double)))) {
                     *x->label_angle = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "labelAngle"));
                 }
@@ -12612,6 +12755,8 @@ struct Axis * cJSON_GetAxisValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "labelAngle")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "labelAngle"))) { cJSON_DeleteAxis(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "labelAngle")->valuedouble < -360) { cJSON_DeleteAxis(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "labelAngle")->valuedouble > 360) { cJSON_DeleteAxis(x); return NULL; }
                 if (NULL != (x->label_angle = cJSON_malloc(sizeof(double)))) {
                     *x->label_angle = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "labelAngle"));
                 }
@@ -12688,6 +12833,7 @@ struct Axis * cJSON_GetAxisValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "tickSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "tickSize"))) { cJSON_DeleteAxis(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "tickSize")->valuedouble < 0) { cJSON_DeleteAxis(x); return NULL; }
                 if (NULL != (x->tick_size = cJSON_malloc(sizeof(double)))) {
                     *x->tick_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "tickSize"));
                 }
@@ -12724,6 +12870,7 @@ struct Axis * cJSON_GetAxisValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "zindex")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "zindex"))) { cJSON_DeleteAxis(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "zindex")->valuedouble < 0) { cJSON_DeleteAxis(x); return NULL; }
                 if (NULL != (x->zindex = cJSON_malloc(sizeof(double)))) {
                     *x->zindex = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "zindex"));
                 }
@@ -13704,6 +13851,8 @@ struct MarkDef * cJSON_GetMarkDefValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "angle")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "angle"))) { cJSON_DeleteMarkDef(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "angle")->valuedouble < 0) { cJSON_DeleteMarkDef(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "angle")->valuedouble > 360) { cJSON_DeleteMarkDef(x); return NULL; }
                 if (NULL != (x->angle = cJSON_malloc(sizeof(double)))) {
                     *x->angle = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "angle"));
                 }
@@ -13756,6 +13905,8 @@ struct MarkDef * cJSON_GetMarkDefValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "fillOpacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "fillOpacity"))) { cJSON_DeleteMarkDef(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fillOpacity")->valuedouble < 0) { cJSON_DeleteMarkDef(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fillOpacity")->valuedouble > 1) { cJSON_DeleteMarkDef(x); return NULL; }
                 if (NULL != (x->fill_opacity = cJSON_malloc(sizeof(double)))) {
                     *x->fill_opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "fillOpacity"));
                 }
@@ -13766,6 +13917,7 @@ struct MarkDef * cJSON_GetMarkDefValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "fontSize")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "fontSize"))) { cJSON_DeleteMarkDef(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "fontSize")->valuedouble < 0) { cJSON_DeleteMarkDef(x); return NULL; }
                 if (NULL != (x->font_size = cJSON_malloc(sizeof(double)))) {
                     *x->font_size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "fontSize"));
                 }
@@ -13801,6 +13953,8 @@ struct MarkDef * cJSON_GetMarkDefValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "opacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "opacity"))) { cJSON_DeleteMarkDef(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "opacity")->valuedouble < 0) { cJSON_DeleteMarkDef(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "opacity")->valuedouble > 1) { cJSON_DeleteMarkDef(x); return NULL; }
                 if (NULL != (x->opacity = cJSON_malloc(sizeof(double)))) {
                     *x->opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "opacity"));
                 }
@@ -13814,6 +13968,7 @@ struct MarkDef * cJSON_GetMarkDefValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "radius")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "radius"))) { cJSON_DeleteMarkDef(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "radius")->valuedouble < 0) { cJSON_DeleteMarkDef(x); return NULL; }
                 if (NULL != (x->radius = cJSON_malloc(sizeof(double)))) {
                     *x->radius = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "radius"));
                 }
@@ -13824,6 +13979,7 @@ struct MarkDef * cJSON_GetMarkDefValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "size")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "size"))) { cJSON_DeleteMarkDef(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "size")->valuedouble < 0) { cJSON_DeleteMarkDef(x); return NULL; }
                 if (NULL != (x->size = cJSON_malloc(sizeof(double)))) {
                     *x->size = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "size"));
                 }
@@ -13856,12 +14012,15 @@ struct MarkDef * cJSON_GetMarkDefValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "strokeOpacity")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity"))) { cJSON_DeleteMarkDef(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity")->valuedouble < 0) { cJSON_DeleteMarkDef(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity")->valuedouble > 1) { cJSON_DeleteMarkDef(x); return NULL; }
                 if (NULL != (x->stroke_opacity = cJSON_malloc(sizeof(double)))) {
                     *x->stroke_opacity = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "strokeOpacity"));
                 }
             }
             if (cJSON_HasObjectItem(j, "strokeWidth")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "strokeWidth"))) { cJSON_DeleteMarkDef(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "strokeWidth")->valuedouble < 0) { cJSON_DeleteMarkDef(x); return NULL; }
                 if (NULL != (x->stroke_width = cJSON_malloc(sizeof(double)))) {
                     *x->stroke_width = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "strokeWidth"));
                 }
@@ -13873,6 +14032,8 @@ struct MarkDef * cJSON_GetMarkDefValue(const cJSON * j) {
             }
             if (cJSON_HasObjectItem(j, "tension")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "tension"))) { cJSON_DeleteMarkDef(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "tension")->valuedouble < 0) { cJSON_DeleteMarkDef(x); return NULL; }
+                if (cJSON_GetObjectItemCaseSensitive(j, "tension")->valuedouble > 1) { cJSON_DeleteMarkDef(x); return NULL; }
                 if (NULL != (x->tension = cJSON_malloc(sizeof(double)))) {
                     *x->tension = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "tension"));
                 }
