var control = (function() {

  var mod = {};

  mod.debug = {
    active: false,
    toggle: function() {
      if (mod.debug.active) {
        mod.debug.active = false;
      } else {
        mod.debug.active = true;
      };
    }
  };

  mod.header = [{
    element: ".control-menu-open",
    type: "button",
    func: function() {
      menu.open();
      theme.render.custom.tabIndex();
    },
  }, {
    element: ".control-add-link",
    type: "button",
    func: function() {
      link.add.item.open();
    }
  }, {
    element: ".control-add-group",
    type: "button",
    func: function() {
      link.add.group.open();
    }
  }, {
    element: ".control-edit",
    path: "edit",
    type: "checkbox",
    func: function() {
      link.tabindex();
      render.class();
    }
  }, {
    element: ".control-theme-color-rgb-color-quick",
    path: "theme.color.rgb",
    type: "color",
    mirrorElement: [{
      element: ".control-theme-color-rgb-color",
      path: "theme.color.rgb",
      type: "color"
    }, {
      element: ".control-theme-color-rgb-text",
      path: "theme.color.rgb",
      type: "text",
      valueConvert: ["hexTextString"]
    }, {
      element: ".control-theme-color-hsl-h-range",
      path: "theme.color.hsl.h",
      type: "range"
    }, {
      element: ".control-theme-color-hsl-h-number",
      path: "theme.color.hsl.h",
      type: "number"
    }, {
      element: ".control-theme-color-hsl-s-range",
      path: "theme.color.hsl.s",
      type: "range"
    }, {
      element: ".control-theme-color-hsl-s-number",
      path: "theme.color.hsl.s",
      type: "number"
    }, {
      element: ".control-theme-color-hsl-l-range",
      path: "theme.color.hsl.l",
      type: "range"
    }, {
      element: ".control-theme-color-hsl-l-number",
      path: "theme.color.hsl.l",
      type: "number"
    }, {
      element: ".control-theme-color-rgb-r-range",
      path: "theme.color.rgb.r",
      type: "range"
    }, {
      element: ".control-theme-color-rgb-r-number",
      path: "theme.color.rgb.r",
      type: "number"
    }, {
      element: ".control-theme-color-rgb-g-range",
      path: "theme.color.rgb.g",
      type: "range"
    }, {
      element: ".control-theme-color-rgb-g-number",
      path: "theme.color.rgb.g",
      type: "number"
    }, {
      element: ".control-theme-color-rgb-b-range",
      path: "theme.color.rgb.b",
      type: "range"
    }, {
      element: ".control-theme-color-rgb-b-number",
      path: "theme.color.rgb.b",
      type: "number"
    }],
    func: function() {
      theme.mod.color.hsl();
      theme.mod.color.generated();
      theme.render.color.shade();
      theme.render.themeMetaTag();
    }
  }, {
    element: ".control-theme-accent-rgb-color-quick",
    path: "theme.accent.rgb",
    type: "color",
    mirrorElement: [{
      element: ".control-theme-accent-rgb-color",
      path: "theme.accent.rgb",
      type: "color"
    }, {
      element: ".control-theme-accent-rgb-text",
      path: "theme.accent.rgb",
      type: "text",
      valueConvert: ["hexTextString"]
    }, {
      element: ".control-theme-accent-hsl-h-range",
      path: "theme.accent.hsl.h",
      type: "range"
    }, {
      element: ".control-theme-accent-hsl-h-number",
      path: "theme.accent.hsl.h",
      type: "number"
    }, {
      element: ".control-theme-accent-hsl-s-range",
      path: "theme.accent.hsl.s",
      type: "range"
    }, {
      element: ".control-theme-accent-hsl-s-number",
      path: "theme.accent.hsl.s",
      type: "number"
    }, {
      element: ".control-theme-accent-hsl-l-range",
      path: "theme.accent.hsl.l",
      type: "range"
    }, {
      element: ".control-theme-accent-hsl-l-number",
      path: "theme.accent.hsl.l",
      type: "number"
    }, {
      element: ".control-theme-accent-rgb-r-range",
      path: "theme.accent.rgb.r",
      type: "range"
    }, {
      element: ".control-theme-accent-rgb-r-number",
      path: "theme.accent.rgb.r",
      type: "number"
    }, {
      element: ".control-theme-accent-rgb-g-range",
      path: "theme.accent.rgb.g",
      type: "range"
    }, {
      element: ".control-theme-accent-rgb-g-number",
      path: "theme.accent.rgb.g",
      type: "number"
    }, {
      element: ".control-theme-accent-rgb-b-range",
      path: "theme.accent.rgb.b",
      type: "range"
    }, {
      element: ".control-theme-accent-rgb-b-number",
      path: "theme.accent.rgb.b",
      type: "number"
    }],
    func: function() {
      theme.mod.accent.hsl();
      theme.render.accent.color();
    }
  }];

  mod.menu = {
    controls: {
      nav: {
        buttons: [{
          element: ".control-menu-layout",
          type: "button",
          func: function() {
            menu.nav("layout");
            theme.render.custom.tabIndex();
          }
        }, {
          element: ".control-menu-header",
          type: "button",
          func: function() {
            menu.nav("header");
            theme.render.custom.tabIndex();
          }
        }, {
          element: ".control-menu-groups",
          type: "button",
          func: function() {
            menu.nav("groups");
            theme.render.custom.tabIndex();
          }
        }, {
          element: ".control-menu-bookmarks",
          type: "button",
          func: function() {
            menu.nav("bookmarks");
            theme.render.custom.tabIndex();
          }
        }, {
          element: ".control-menu-theme",
          type: "button",
          func: function() {
            menu.nav("theme");
            theme.render.custom.tabIndex();
          }
        }, {
          element: ".control-menu-background",
          type: "button",
          func: function() {
            menu.nav("background");
            theme.render.custom.tabIndex();
          }
        }, {
          element: ".control-menu-data",
          type: "button",
          func: function() {
            menu.nav("data");
            theme.render.custom.tabIndex();
          }
        }, {
          element: ".control-menu-firefox",
          type: "button",
          func: function() {
            menu.nav("firefox");
            theme.render.custom.tabIndex();
          }
        }, {
          element: ".control-menu-coffee",
          type: "button",
          func: function() {
            menu.nav("coffee");
            theme.render.custom.tabIndex();
          }
        }, {
          element: ".control-menu-nighttab",
          type: "button",
          func: function() {
            menu.nav("nighttab");
            theme.render.custom.tabIndex();
          }
        }, {
          element: ".control-menu-close",
          type: "button",
          func: function() {
            menu.close();
            theme.render.custom.tabIndex();
          }
        }]
      },
      layout: {
        scaling: [{
          element: ".control-layout-size-range",
          path: "layout.size",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 50,
            max: 200,
            step: 5
          },
          mirrorElement: [{
            element: ".control-layout-size-number",
            path: "layout.size",
            type: "number",
            valueConvert: ["float"]
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".layout"),
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".layout"),
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: helper.e(".layout"),
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            layout.render.size();
          }
        }, {
          element: ".control-layout-size-number",
          path: "layout.size",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 50,
            max: 200,
            step: 5
          },
          mirrorElement: [{
            element: ".control-layout-size-range",
            path: "layout.size",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            layout.render.size();
          }
        }, {
          element: ".control-layout-size-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".layout"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("layout.size");
            layout.render.size();
            render.update.control.menu();
          }
        }],
        area: [{
          element: ".control-layout-width-range",
          path: "layout.width",
          type: "range",
          valueModify: {
            min: 10,
            max: 100
          },
          mirrorElement: [{
            element: ".control-layout-width-number",
            path: "layout.width",
            type: "number"
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".layout"),
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".layout"),
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: helper.e(".layout"),
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            render.class();
            layout.render.width();
          }
        }, {
          element: ".control-layout-width-number",
          path: "layout.width",
          type: "number",
          valueModify: {
            min: 10,
            max: 100
          },
          mirrorElement: [{
            element: ".control-layout-width-range",
            path: "layout.width",
            type: "number"
          }],
          func: function() {
            render.class();
            layout.render.width();
          }
        }, {
          element: ".control-layout-width-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".layout"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("layout.width");
            layout.render.width();
            render.update.control.menu();
          }
        }],
        alignment: [{
          element: ".control-layout-alignment-topleft",
          path: "layout.alignment",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-layout-alignment-topcenter",
          path: "layout.alignment",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-layout-alignment-topright",
          path: "layout.alignment",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-layout-alignment-centerleft",
          path: "layout.alignment",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-layout-alignment-centercenter",
          path: "layout.alignment",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-layout-alignment-centerright",
          path: "layout.alignment",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-layout-alignment-bottomleft",
          path: "layout.alignment",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-layout-alignment-bottomcenter",
          path: "layout.alignment",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-layout-alignment-bottomright",
          path: "layout.alignment",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-layout-order-headerlink",
          path: "layout.order",
          type: "radio",
          func: function() {
            render.class();
            header.render.color.scrolling();
          }
        }, {
          element: ".control-layout-order-linkheader",
          path: "layout.order",
          type: "radio",
          func: function() {
            render.class();
            header.render.color.scrolling();
          }
        }, {
          element: ".control-layout-direction-vertical",
          path: "layout.direction",
          type: "radio",
          func: function() {
            render.class();
            render.dependents();
            header.render.color.scrolling();
          }
        }, {
          element: ".control-layout-direction-horizontal",
          path: "layout.direction",
          type: "radio",
          func: function() {
            render.class();
            render.dependents();
            header.render.color.scrolling();
          }
        }],
        padding: [{
          element: ".control-layout-padding-range",
          path: "layout.padding",
          type: "range",
          valueModify: {
            min: 0,
            max: 40
          },
          mirrorElement: [{
            element: ".control-layout-padding-number",
            path: "layout.padding",
            type: "number"
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".layout"),
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".layout"),
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: helper.e(".layout"),
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            layout.render.padding();
          }
        }, {
          element: ".control-layout-padding-number",
          path: "layout.padding",
          type: "number",
          valueModify: {
            min: 0,
            max: 40
          },
          mirrorElement: [{
            element: ".control-layout-padding-range",
            path: "layout.padding",
            type: "range"
          }],
          func: function() {
            layout.render.padding();
          }
        }, {
          element: ".control-layout-padding-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".layout"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("layout.padding");
            layout.render.padding();
            render.update.control.menu();
          }
        }],
        gutter: [{
          element: ".control-layout-gutter-range",
          path: "layout.gutter",
          type: "range",
          valueModify: {
            min: 0,
            max: 40
          },
          mirrorElement: [{
            element: ".control-layout-gutter-number",
            path: "layout.gutter",
            type: "number"
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".layout"),
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".layout"),
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: helper.e(".layout"),
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            layout.render.gutter();
          }
        }, {
          element: ".control-layout-gutter-number",
          path: "layout.gutter",
          type: "number",
          valueModify: {
            min: 0,
            max: 40
          },
          mirrorElement: [{
            element: ".control-layout-gutter-range",
            path: "layout.gutter",
            type: "range"
          }],
          func: function() {
            layout.render.gutter();
          }
        }, {
          element: ".control-layout-gutter-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".layout"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("layout.gutter");
            layout.render.gutter();
            render.update.control.menu();
          }
        }],
        page: [{
          element: ".control-layout-title",
          path: "layout.title",
          type: "text",
          func: function() {
            layout.render.title();
          }
        }, {
          element: ".control-layout-title-default",
          type: "button",
          func: function() {
            mod.default("layout.title");
            layout.render.title();
            render.update.control.menu();
          }
        }, {
          element: ".control-layout-scrollpastend",
          path: "layout.scrollPastEnd",
          type: "checkbox",
          func: function() {
            render.class();
            header.render.color.scrolling();
          }
        }, {
          element: ".control-layout-scrollbars-auto",
          path: "layout.scrollbars",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-layout-scrollbars-thin",
          path: "layout.scrollbars",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-layout-scrollbars-none",
          path: "layout.scrollbars",
          type: "radio",
          func: function() {
            render.class();
          }
        }]
      },
      header: {
        area: [{
          element: ".control-header-area-width-range",
          path: "header.area.width",
          type: "range",
          valueModify: {
            min: 10,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-area-width-number",
            path: "header.area.width",
            type: "number"
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".header-area")
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".header-area")
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: helper.e(".header-area"),
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            header.render.area.width();
          }
        }, {
          element: ".control-header-area-width-number",
          path: "header.area.width",
          type: "number",
          valueModify: {
            min: 10,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-area-width-range",
            path: "header.area.width",
            type: "range"
          }],
          func: function() {
            header.render.area.width();
          }
        }, {
          element: ".control-header-area-width-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".header-area"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("header.area.width");
            header.render.area.width();
            render.update.control.menu();
          }
        }, {
          element: ".control-header-area-width-match",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".header-area"),
                delay: 500
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            mod.match("header.area.width", "link.area.width");
            header.render.area.width();
            render.update.control.menu();
          }
        }],
        alignment: [{
          element: ".control-header-area-justify-left",
          path: "header.area.justify",
          type: "radio",
          additionalEvents: [{
            event: "change",
            func: function() {
              edge.box.open({
                element: helper.e(".header-area"),
                delay: 500
              });
            }
          }],
          func: function() {
            render.class();
          }
        }, {
          element: ".control-header-area-justify-center",
          path: "header.area.justify",
          type: "radio",
          additionalEvents: [{
            event: "change",
            func: function() {
              edge.box.open({
                element: helper.e(".header-area"),
                delay: 500
              });
            }
          }],
          func: function() {
            render.class();
          }
        }, {
          element: ".control-header-area-justify-right",
          path: "header.area.justify",
          type: "radio",
          additionalEvents: [{
            event: "change",
            func: function() {
              edge.box.open({
                element: helper.e(".header-area"),
                delay: 500
              });
            }
          }],
          func: function() {
            render.class();
          }
        }, {
          element: ".control-header-area-align-center",
          path: "header.area.align",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-header-area-align-baseline",
          path: "header.area.align",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-header-item-justify-left",
          path: "header.item.justify",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-header-item-justify-center",
          path: "header.item.justify",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-header-item-justify-right",
          path: "header.item.justify",
          type: "radio",
          func: function() {
            render.class();
          }
        }],
        greeting: [{
          element: ".control-header-greeting-show",
          path: "header.greeting.show",
          type: "checkbox",
          func: function() {
            header.render.item.clear();
            header.render.item.all();
            greeting.render.clear();
            greeting.render.all();
            clock.render.clear();
            clock.render.all();
            transitional.render.clear();
            transitional.render.all();
            date.render.clear();
            date.render.all();
            render.dependents();
            render.update.control.header();
            bind.control.header();
            search.render.engine();
            search.bind.input();
            search.bind.clear();
            dropdown.bind.editAdd();
          }
        }, {
          element: ".control-header-greeting-type-good",
          path: "header.greeting.type",
          type: "radio",
          func: function() {
            greeting.render.clear();
            greeting.render.all();
          }
        }, {
          element: ".control-header-greeting-type-hello",
          path: "header.greeting.type",
          type: "radio",
          func: function() {
            greeting.render.clear();
            greeting.render.all();
          }
        }, {
          element: ".control-header-greeting-type-hi",
          path: "header.greeting.type",
          type: "radio",
          func: function() {
            greeting.render.clear();
            greeting.render.all();
          }
        }, {
          element: ".control-header-greeting-name",
          path: "header.greeting.name",
          type: "text",
          func: function() {
            greeting.render.clear();
            greeting.render.all();
          }
        }, {
          element: ".control-header-greeting-size-range",
          path: "header.greeting.size",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-header-greeting-size-number",
            path: "header.greeting.size",
            type: "number",
            valueConvert: ["float"]
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".greeting"),
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".greeting"),
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: helper.e(".greeting"),
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            header.render.greeting.size();
          }
        }, {
          element: ".control-header-greeting-size-number",
          path: "header.greeting.size",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-header-greeting-size-range",
            path: "header.greeting.size",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.greeting.size();
          }
        }, {
          element: ".control-header-greeting-size-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".greeting"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("header.greeting.size");
            header.render.greeting.size();
            render.update.control.menu();
          }
        }, {
          element: ".control-header-greeting-newline",
          path: "header.greeting.newLine",
          type: "checkbox",
          func: function() {
            render.class();
          }
        }],
        transitional: [{
          element: ".control-header-transitional-show",
          path: "header.transitional.show",
          type: "checkbox",
          func: function() {
            header.render.item.clear();
            header.render.item.all();
            greeting.render.clear();
            greeting.render.all();
            clock.render.clear();
            clock.render.all();
            transitional.render.clear();
            transitional.render.all();
            date.render.clear();
            date.render.all();
            render.dependents();
            render.update.control.header();
            bind.control.header();
            search.render.engine();
            search.bind.input();
            search.bind.clear();
            dropdown.bind.editAdd();
          }
        }, {
          element: ".control-header-transitional-type-timeanddate",
          path: "header.transitional.type",
          type: "radio",
          func: function() {
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-transitional-type-its",
          path: "header.transitional.type",
          type: "radio",
          func: function() {
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-transitional-size-range",
          path: "header.transitional.size",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-header-transitional-size-number",
            path: "header.transitional.size",
            type: "number",
            valueConvert: ["float"]
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".transitional"),
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".transitional"),
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: helper.e(".transitional"),
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            header.render.transitional.size();
          }
        }, {
          element: ".control-header-transitional-size-number",
          path: "header.transitional.size",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-header-transitional-size-range",
            path: "header.transitional.size",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.transitional.size();
          }
        }, {
          element: ".control-header-transitional-size-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".transitional"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("header.transitional.size");
            header.render.transitional.size();
            render.update.control.menu();
          }
        }, {
          element: ".control-header-transitional-newline",
          path: "header.transitional.newLine",
          type: "checkbox",
          func: function() {
            render.class();
          }
        }],
        clock: [{
          element: ".control-header-clock-hours-show",
          path: "header.clock.hours.show",
          type: "checkbox",
          func: function() {
            header.render.item.clear();
            header.render.item.all();
            greeting.render.clear();
            greeting.render.all();
            clock.render.clear();
            clock.render.all();
            transitional.render.clear();
            transitional.render.all();
            date.render.clear();
            date.render.all();
            render.dependents();
            render.update.control.header();
            bind.control.header();
            search.render.engine();
            search.bind.input();
            search.bind.clear();
            dropdown.bind.editAdd();
          }
        }, {
          element: ".control-header-clock-hours-display-number",
          path: "header.clock.hours.display",
          type: "radio",
          func: function() {
            clock.render.clear();
            clock.render.all();
          }
        }, {
          element: ".control-header-clock-hours-display-word",
          path: "header.clock.hours.display",
          type: "radio",
          func: function() {
            clock.render.clear();
            clock.render.all();
          }
        }, {
          element: ".control-header-clock-minutes-show",
          path: "header.clock.minutes.show",
          type: "checkbox",
          func: function() {
            header.render.item.clear();
            header.render.item.all();
            greeting.render.clear();
            greeting.render.all();
            clock.render.clear();
            clock.render.all();
            transitional.render.clear();
            transitional.render.all();
            date.render.clear();
            date.render.all();
            render.dependents();
            render.update.control.header();
            bind.control.header();
            search.render.engine();
            search.bind.input();
            search.bind.clear();
            dropdown.bind.editAdd();
          }
        }, {
          element: ".control-header-clock-minutes-display-number",
          path: "header.clock.minutes.display",
          type: "radio",
          func: function() {
            clock.render.clear();
            clock.render.all();
          }
        }, {
          element: ".control-header-clock-minutes-display-word",
          path: "header.clock.minutes.display",
          type: "radio",
          func: function() {
            clock.render.clear();
            clock.render.all();
          }
        }, {
          element: ".control-header-clock-seconds-show",
          path: "header.clock.seconds.show",
          type: "checkbox",
          func: function() {
            header.render.item.clear();
            header.render.item.all();
            greeting.render.clear();
            greeting.render.all();
            clock.render.clear();
            clock.render.all();
            transitional.render.clear();
            transitional.render.all();
            date.render.clear();
            date.render.all();
            render.dependents();
            render.update.control.header();
            bind.control.header();
            search.render.engine();
            search.bind.input();
            search.bind.clear();
            dropdown.bind.editAdd();
          }
        }, {
          element: ".control-header-clock-seconds-display-number",
          path: "header.clock.seconds.display",
          type: "radio",
          func: function() {
            clock.render.clear();
            clock.render.all();
          }
        }, {
          element: ".control-header-clock-seconds-display-word",
          path: "header.clock.seconds.display",
          type: "radio",
          func: function() {
            clock.render.clear();
            clock.render.all();
          }
        }, {
          element: ".control-header-clock-separator-show",
          path: "header.clock.separator.show",
          type: "checkbox",
          func: function() {
            clock.render.clear();
            clock.render.all();
            render.dependents();
          }
        }, {
          element: ".control-header-clock-separator-text",
          path: "header.clock.separator.text",
          type: "text",
          func: function() {
            clock.render.clear();
            clock.render.all();
          }
        }, {
          element: ".control-header-clock-separator-text-default",
          type: "button",
          func: function() {
            mod.default("header.clock.separator.text");
            clock.render.clear();
            clock.render.all();
            render.update.control.menu();
          }
        }, {
          element: ".control-header-clock-hour24-show",
          path: "header.clock.hour24.show",
          type: "checkbox",
          func: function() {
            clock.render.clear();
            clock.render.all();
            render.dependents();
          }
        }, {
          element: ".control-header-clock-meridiem-show",
          path: "header.clock.meridiem.show",
          type: "checkbox",
          func: function() {
            clock.render.clear();
            clock.render.all();
            render.dependents();
          }
        }, {
          element: ".control-header-clock-size-range",
          path: "header.clock.size",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-header-clock-size-number",
            path: "header.clock.size",
            type: "number",
            valueConvert: ["float"]
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".clock"),
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".clock"),
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: helper.e(".clock"),
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            header.render.clock.size();
          }
        }, {
          element: ".control-header-clock-size-number",
          path: "header.clock.size",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-header-clock-size-range",
            path: "header.clock.size",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.clock.size();
          }
        }, {
          element: ".control-header-clock-size-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".clock"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("header.clock.size");
            header.render.clock.size();
            render.update.control.menu();
          }
        }, {
          element: ".control-header-clock-newline",
          path: "header.clock.newLine",
          type: "checkbox",
          func: function() {
            render.class();
          }
        }],
        date: [{
          element: ".control-header-date-day-show",
          path: "header.date.day.show",
          type: "checkbox",
          func: function() {
            header.render.item.clear();
            header.render.item.all();
            greeting.render.clear();
            greeting.render.all();
            clock.render.clear();
            clock.render.all();
            transitional.render.clear();
            transitional.render.all();
            date.render.clear();
            date.render.all();
            render.dependents();
            render.update.control.header();
            bind.control.header();
            search.render.engine();
            search.bind.input();
            search.bind.clear();
            dropdown.bind.editAdd();
          }
        }, {
          element: ".control-header-date-day-display-number",
          path: "header.date.day.display",
          type: "radio",
          func: function() {
            render.dependents();
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-day-week-start-monday",
          path: "header.date.day.weekStart",
          type: "radio",
          func: function() {
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-day-week-start-sunday",
          path: "header.date.day.weekStart",
          type: "radio",
          func: function() {
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-day-display-word",
          path: "header.date.day.display",
          type: "radio",
          func: function() {
            render.dependents();
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-day-length-long",
          path: "header.date.day.length",
          type: "radio",
          func: function() {
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-day-length-short",
          path: "header.date.day.length",
          type: "radio",
          func: function() {
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-date-show",
          path: "header.date.date.show",
          type: "checkbox",
          func: function() {
            header.render.item.clear();
            header.render.item.all();
            greeting.render.clear();
            greeting.render.all();
            clock.render.clear();
            clock.render.all();
            transitional.render.clear();
            transitional.render.all();
            date.render.clear();
            date.render.all();
            render.dependents();
            render.update.control.header();
            bind.control.header();
            search.render.engine();
            search.bind.input();
            search.bind.clear();
            dropdown.bind.editAdd();
          }
        }, {
          element: ".control-header-date-date-display-number",
          path: "header.date.date.display",
          type: "radio",
          func: function() {
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-date-display-word",
          path: "header.date.date.display",
          type: "radio",
          func: function() {
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-date-ordinal",
          path: "header.date.date.ordinal",
          type: "checkbox",
          func: function() {
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-month-show",
          path: "header.date.month.show",
          type: "checkbox",
          func: function() {
            header.render.item.clear();
            header.render.item.all();
            greeting.render.clear();
            greeting.render.all();
            clock.render.clear();
            clock.render.all();
            transitional.render.clear();
            transitional.render.all();
            date.render.clear();
            date.render.all();
            render.dependents();
            render.update.control.header();
            bind.control.header();
            search.render.engine();
            search.bind.input();
            search.bind.clear();
            dropdown.bind.editAdd();
          }
        }, {
          element: ".control-header-date-month-display-number",
          path: "header.date.month.display",
          type: "radio",
          func: function() {
            render.dependents();
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-month-ordinal",
          path: "header.date.month.ordinal",
          type: "checkbox",
          func: function() {
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-month-display-word",
          path: "header.date.month.display",
          type: "radio",
          func: function() {
            render.dependents();
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-month-length-long",
          path: "header.date.month.length",
          type: "radio",
          func: function() {
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-month-length-short",
          path: "header.date.month.length",
          type: "radio",
          func: function() {
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-year-show",
          path: "header.date.year.show",
          type: "checkbox",
          func: function() {
            header.render.item.clear();
            header.render.item.all();
            greeting.render.clear();
            greeting.render.all();
            clock.render.clear();
            clock.render.all();
            transitional.render.clear();
            transitional.render.all();
            date.render.clear();
            date.render.all();
            render.dependents();
            render.update.control.header();
            bind.control.header();
            search.render.engine();
            search.bind.input();
            search.bind.clear();
            dropdown.bind.editAdd();
          }
        }, {
          element: ".control-header-date-year-display-number",
          path: "header.date.year.display",
          type: "radio",
          func: function() {
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-year-display-word",
          path: "header.date.year.display",
          type: "radio",
          func: function() {
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-separator-show",
          path: "header.date.separator.show",
          type: "checkbox",
          func: function() {
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
            render.dependents();
          }
        }, {
          element: ".control-header-date-separator-text",
          path: "header.date.separator.text",
          type: "text",
          func: function() {
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-separator-text-default",
          type: "button",
          func: function() {
            mod.default("header.date.separator.text");
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
            render.update.control.menu();
          }
        }, {
          element: ".control-header-date-format-datemonth",
          path: "header.date.format",
          type: "radio",
          func: function() {
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-format-monthdate",
          path: "header.date.format",
          type: "radio",
          func: function() {
            date.render.clear();
            date.render.all();
            greeting.render.clear();
            greeting.render.all();
            transitional.render.clear();
            transitional.render.all();
          }
        }, {
          element: ".control-header-date-size-range",
          path: "header.date.size",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-header-date-size-number",
            path: "header.date.size",
            type: "number",
            valueConvert: ["float"]
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".date"),
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".date"),
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: helper.e(".date"),
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            header.render.date.size();
          }
        }, {
          element: ".control-header-date-size-number",
          path: "header.date.size",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-header-date-size-range",
            path: "header.date.size",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.date.size();
          }
        }, {
          element: ".control-header-date-size-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".date"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("header.date.size");
            header.render.date.size();
            render.update.control.menu();
          }
        }, {
          element: ".control-header-date-newline",
          path: "header.date.newLine",
          type: "checkbox",
          func: function() {
            render.class();
          }
        }],
        search: [{
          element: ".control-header-search-show",
          path: "header.search.show",
          type: "checkbox",
          func: function() {
            header.render.item.clear();
            header.render.item.all();
            header.render.search.width.size();
            greeting.render.clear();
            greeting.render.all();
            clock.render.clear();
            clock.render.all();
            transitional.render.clear();
            transitional.render.all();
            date.render.clear();
            date.render.all();
            render.class();
            render.dependents();
            render.update.control.header();
            bind.control.header();
            search.render.engine();
            search.bind.input();
            search.bind.clear();
            dropdown.bind.editAdd();
          }
        }, {
          element: ".control-header-search-width-by-auto",
          path: "header.search.width.by",
          type: "radio",
          func: function() {
            render.class();
            render.dependents();
            header.render.search.width.size();
          }
        }, {
          element: ".control-header-search-width-by-custom",
          path: "header.search.width.by",
          type: "radio",
          func: function() {
            render.class();
            render.dependents();
            header.render.search.width.size();
          }
        }, {
          element: ".control-header-search-width-size-range",
          path: "header.search.width.size",
          type: "range",
          valueModify: {
            min: 10,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-search-width-size-number",
            path: "header.search.width.size",
            type: "number",
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".search-wrapper"),
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".search-wrapper"),
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: helper.e(".search-wrapper"),
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            header.render.search.width.size();
          }
        }, {
          element: ".control-header-search-width-size-number",
          path: "header.search.width.size",
          type: "number",
          valueModify: {
            min: 10,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-search-width-size-range",
            path: "header.search.width.size",
            type: "range",
          }],
          func: function() {
            header.render.search.width.size();
          }
        }, {
          element: ".control-header-search-width-size-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".search-wrapper"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("header.search.width.size");
            header.render.search.width.size();
            render.update.control.menu();
          }
        }, {
          element: ".control-header-search-opacity-range",
          path: "header.search.opacity",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-search-opacity-number",
            path: "header.search.opacity",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.search.opacity();
            render.class();
          }
        }, {
          element: ".control-header-search-opacity-number",
          path: "header.search.opacity",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-search-opacity-range",
            path: "header.search.opacity",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.search.opacity();
            render.class();
          }
        }, {
          element: ".control-header-search-opacity-default",
          type: "button",
          func: function() {
            mod.default("header.search.opacity");
            header.render.search.opacity();
            render.update.control.menu();
            render.class();
          }
        }, {
          element: ".control-header-search-focus",
          path: "header.search.focus",
          type: "checkbox"
        }, {
          element: ".control-header-search-engine-google",
          path: "header.search.engine.selected",
          type: "radio",
          func: function() {
            render.dependents();
            search.render.engine();
          }
        }, {
          element: ".control-header-search-engine-duckduckgo",
          path: "header.search.engine.selected",
          type: "radio",
          func: function() {
            render.dependents();
            search.render.engine();
          }
        }, {
          element: ".control-header-search-engine-youtube",
          path: "header.search.engine.selected",
          type: "radio",
          func: function() {
            render.dependents();
            search.render.engine();
          }
        }, {
          element: ".control-header-search-engine-giphy",
          path: "header.search.engine.selected",
          type: "radio",
          func: function() {
            render.dependents();
            search.render.engine();
          }
        }, {
          element: ".control-header-search-engine-bing",
          path: "header.search.engine.selected",
          type: "radio",
          func: function() {
            render.dependents();
            search.render.engine();
          }
        }, {
          element: ".control-header-search-engine-custom",
          path: "header.search.engine.selected",
          type: "radio",
          func: function() {
            render.dependents();
            search.render.engine();
          }
        }, {
          element: ".control-header-search-engine-custom-name",
          path: "header.search.engine.custom.name",
          type: "text",
          func: function() {
            search.render.engine();
          }
        }, {
          element: ".control-header-search-engine-custom-url",
          path: "header.search.engine.custom.url",
          type: "text",
          func: function() {
            search.render.engine();
          }
        }, {
          element: ".control-header-search-engine-custom-queryname",
          path: "header.search.engine.custom.queryName",
          type: "text",
          func: function() {
            header.render.item.clear();
            header.render.item.all();
            header.render.search.width.size();
            greeting.render.clear();
            greeting.render.all();
            clock.render.clear();
            clock.render.all();
            transitional.render.clear();
            transitional.render.all();
            date.render.clear();
            date.render.all();
            render.class();
            render.dependents();
            render.update.control.header();
            bind.control.header();
            search.render.engine();
            search.bind.input();
            search.bind.clear();
            dropdown.bind.editAdd();
          }
        }, {
          element: ".control-header-search-text-justify-left",
          path: "header.search.text.justify",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-header-search-text-justify-center",
          path: "header.search.text.justify",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-header-search-text-justify-right",
          path: "header.search.text.justify",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-header-search-size-range",
          path: "header.search.size",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-header-search-size-number",
            path: "header.search.size",
            type: "number",
            valueConvert: ["float"]
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".search"),
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".search"),
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: helper.e(".search"),
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            header.render.search.size();
          }
        }, {
          element: ".control-header-search-size-number",
          path: "header.search.size",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-header-search-size-range",
            path: "header.search.size",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.search.size();
          }
        }, {
          element: ".control-header-search-size-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".search-wrapper"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("header.search.size");
            header.render.search.size();
            render.update.control.menu();
          }
        }, {
          element: ".control-header-search-newtab",
          path: "header.search.newTab",
          type: "checkbox",
          func: function() {
            header.render.item.clear();
            header.render.item.all();
            header.render.search.width.size();
            greeting.render.clear();
            greeting.render.all();
            clock.render.clear();
            clock.render.all();
            transitional.render.clear();
            transitional.render.all();
            date.render.clear();
            date.render.all();
            render.class();
            render.dependents();
            render.update.control.header();
            bind.control.header();
            search.render.engine();
            search.bind.input();
            search.bind.clear();
            dropdown.bind.editAdd();
          }
        }, {
          element: ".control-header-search-newline",
          path: "header.search.newLine",
          type: "checkbox",
          func: function() {
            render.class();
          }
        }],
        editadd: [{
          element: ".control-header-editadd-show",
          path: "header.editAdd.show",
          type: "checkbox",
          func: function() {
            header.render.item.clear();
            header.render.item.all();
            greeting.render.clear();
            greeting.render.all();
            clock.render.clear();
            clock.render.all();
            transitional.render.clear();
            transitional.render.all();
            date.render.clear();
            date.render.all();
            render.dependents();
            render.update.control.header();
            bind.control.header();
            search.render.engine();
            search.bind.input();
            search.bind.clear();
            dropdown.bind.editAdd();
            render.dependents();
          }
        }, {
          element: ".control-header-editadd-size-range",
          path: "header.editAdd.size",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-header-editadd-size-number",
            path: "header.editAdd.size",
            type: "number",
            valueConvert: ["float"]
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".header-editadd"),
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".header-editadd"),
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: ".header-item-editadd",
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            header.render.editadd.size();
          }
        }, {
          element: ".control-header-editadd-size-number",
          path: "header.editAdd.size",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-header-editadd-size-range",
            path: "header.editAdd.size",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.editadd.size();
          }
        }, {
          element: ".control-header-editadd-size-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".header-editadd"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("header.editAdd.size");
            header.render.editadd.size();
            render.update.control.menu();
          }
        }, {
          element: ".control-header-editadd-opacity-range",
          path: "header.editAdd.opacity",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-editadd-opacity-number",
            path: "header.editAdd.opacity",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.editadd.opacity();
            render.class();
          }
        }, {
          element: ".control-header-editadd-opacity-number",
          path: "header.editAdd.opacity",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-editadd-opacity-range",
            path: "header.editAdd.opacity",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.editadd.opacity();
            render.class();
          }
        }, {
          element: ".control-header-editadd-opacity-default",
          type: "button",
          func: function() {
            mod.default("header.editAdd.opacity");
            header.render.editadd.opacity();
            render.update.control.menu();
            render.class();
          }
        }, {
          element: ".control-header-editadd-newline",
          path: "header.editAdd.newLine",
          type: "checkbox",
          func: function() {
            render.class();
          }
        }],
        coloraccent: [{
          element: ".control-header-coloraccent-show",
          path: "header.colorAccent.show",
          type: "checkbox",
          func: function() {
            header.render.item.clear();
            header.render.item.all();
            greeting.render.clear();
            greeting.render.all();
            clock.render.clear();
            clock.render.all();
            transitional.render.clear();
            transitional.render.all();
            date.render.clear();
            date.render.all();
            render.dependents();
            render.update.control.header();
            bind.control.header();
            search.render.engine();
            search.bind.input();
            search.bind.clear();
            dropdown.bind.editAdd();
          }
        }, {
          element: ".control-header-coloraccent-dot-show",
          path: "header.colorAccent.dot.show",
          type: "checkbox",
          func: function() {
            header.render.item.clear();
            header.render.item.all();
            greeting.render.clear();
            greeting.render.all();
            clock.render.clear();
            clock.render.all();
            transitional.render.clear();
            transitional.render.all();
            date.render.clear();
            date.render.all();
            render.dependents();
            render.update.control.header();
            bind.control.header();
            search.render.engine();
            search.bind.input();
            search.bind.clear();
            dropdown.bind.editAdd();
          }
        }, {
          element: ".control-header-coloraccent-size-range",
          path: "header.colorAccent.size",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-header-coloraccent-size-number",
            path: "header.colorAccent.size",
            type: "number",
            valueConvert: ["float"]
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".header-coloraccent"),
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".header-coloraccent"),
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: ".header-item-coloraccent",
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            header.render.coloraccent.size();
          }
        }, {
          element: ".control-header-coloraccent-size-number",
          path: "header.colorAccent.size",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-header-coloraccent-size-range",
            path: "header.colorAccent.size",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.coloraccent.size();
          }
        }, {
          element: ".control-header-coloraccent-size-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".header-coloraccent"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("header.colorAccent.size");
            header.render.coloraccent.size();
            render.update.control.menu();
          }
        }, {
          element: ".control-header-coloraccent-opacity-range",
          path: "header.colorAccent.opacity",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-coloraccent-opacity-number",
            path: "header.colorAccent.opacity",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.coloraccent.opacity();
            render.class();
          }
        }, {
          element: ".control-header-coloraccent-opacity-number",
          path: "header.colorAccent.opacity",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-coloraccent-opacity-range",
            path: "header.colorAccent.opacity",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.coloraccent.opacity();
            render.class();
          }
        }, {
          element: ".control-header-coloraccent-opacity-default",
          type: "button",
          func: function() {
            mod.default("header.colorAccent.opacity");
            header.render.coloraccent.opacity();
            render.update.control.menu();
            render.class();
          }
        }, {
          element: ".control-header-coloraccent-newline",
          path: "header.colorAccent.newLine",
          type: "checkbox",
          func: function() {
            render.class();
          }
        }],
        menu: [{
          element: ".control-header-menu-size-range",
          path: "header.menu.size",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-header-menu-size-number",
            path: "header.menu.size",
            type: "number",
            valueConvert: ["float"]
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".control-menu-open"),
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".control-menu-open"),
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: ".control-menu-open",
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            header.render.menu.size();
          }
        }, {
          element: ".control-header-menu-size-number",
          path: "header.menu.size",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-header-menu-size-range",
            path: "header.menu.size",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.menu.size();
          }
        }, {
          element: ".control-header-menu-size-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".control-menu-open"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("header.menu.size");
            header.render.menu.size();
            render.update.control.menu();
          }
        }, {
          element: ".control-header-menu-opacity-range",
          path: "header.menu.opacity",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-menu-opacity-number",
            path: "header.menu.opacity",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.menu.opacity();
            render.class();
          }
        }, {
          element: ".control-header-menu-opacity-number",
          path: "header.menu.opacity",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-menu-opacity-range",
            path: "header.menu.opacity",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.menu.opacity();
            render.class();
          }
        }, {
          element: ".control-header-menu-opacity-default",
          type: "button",
          func: function() {
            mod.default("header.menu.opacity");
            header.render.menu.opacity();
            render.update.control.menu();
            render.class();
          }
        }, {
          element: ".control-header-menu-newline",
          path: "header.menu.newLine",
          type: "checkbox",
          func: function() {
            render.class();
          }
        }],
        border: [{
          element: ".control-header-border-top-range",
          path: "header.border.top",
          type: "range",
          valueModify: {
            min: 0,
            max: 60
          },
          mirrorElement: [{
            element: ".control-header-border-top-number",
            path: "header.border.top",
            type: "number"
          }],
          func: function() {
            header.render.border();
            render.class();
          }
        }, {
          element: ".control-header-border-top-number",
          path: "header.border.top",
          type: "number",
          valueModify: {
            min: 0,
            max: 60
          },
          mirrorElement: [{
            element: ".control-header-border-top-range",
            path: "header.border.top",
            type: "range"
          }],
          func: function() {
            header.render.border();
            render.class();
          }
        }, {
          element: ".control-header-border-top-default",
          type: "button",
          func: function() {
            mod.default("header.border.top");
            header.render.border();
            render.class();
            render.update.control.menu();
          }
        }, {
          element: ".control-header-border-bottom-range",
          path: "header.border.bottom",
          type: "range",
          valueModify: {
            min: 0,
            max: 60
          },
          mirrorElement: [{
            element: ".control-header-border-bottom-number",
            path: "header.border.bottom",
            type: "number"
          }],
          func: function() {
            header.render.border();
            render.class();
          }
        }, {
          element: ".control-header-border-bottom-number",
          path: "header.border.bottom",
          type: "number",
          valueModify: {
            min: 0,
            max: 60
          },
          mirrorElement: [{
            element: ".control-header-border-bottom-range",
            path: "header.border.bottom",
            type: "range"
          }],
          func: function() {
            header.render.border();
            render.class();
          }
        }, {
          element: ".control-header-border-bottom-default",
          type: "button",
          func: function() {
            mod.default("header.border.bottom");
            header.render.border();
            render.class();
            render.update.control.menu();
          }
        }],
        position: [{
          element: ".control-header-position-sticky",
          path: "header.position",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-header-position-inline",
          path: "header.position",
          type: "radio",
          func: function() {
            render.class();
          }
        }],
        color: [{
          element: ".control-header-color-show",
          path: "header.color.show",
          type: "checkbox",
          func: function() {
            render.class();
            render.dependents();
            header.render.color.scrolling();
          }
        }, {
          element: ".control-header-color-style-always",
          path: "header.color.style",
          type: "radio",
          func: function() {
            render.class();
            header.render.color.scrolling();
          }
        }, {
          element: ".control-header-color-style-scroll",
          path: "header.color.style",
          type: "radio",
          func: function() {
            render.class();
            header.render.color.scrolling();
          }
        }, {
          element: ".control-header-color-by-theme",
          path: "header.color.by",
          type: "radio",
          func: function() {
            render.class();
            render.dependents();
          }
        }, {
          element: ".control-header-color-by-custom",
          path: "header.color.by",
          type: "radio",
          func: function() {
            render.class();
            render.dependents();
          }
        }, {
          element: ".control-header-color-rgb-color",
          path: "header.color.rgb",
          type: "color",
          mirrorElement: [{
            element: ".control-header-color-rgb-text",
            path: "header.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-header-color-hsl-h-range",
            path: "header.color.hsl.h",
            type: "range"
          }, {
            element: ".control-header-color-hsl-h-number",
            path: "header.color.hsl.h",
            type: "number"
          }, {
            element: ".control-header-color-hsl-s-range",
            path: "header.color.hsl.s",
            type: "range"
          }, {
            element: ".control-header-color-hsl-s-number",
            path: "header.color.hsl.s",
            type: "number"
          }, {
            element: ".control-header-color-hsl-l-range",
            path: "header.color.hsl.l",
            type: "range"
          }, {
            element: ".control-header-color-hsl-l-number",
            path: "header.color.hsl.l",
            type: "number"
          }, {
            element: ".control-header-color-rgb-r-range",
            path: "header.color.rgb.r",
            type: "range"
          }, {
            element: ".control-header-color-rgb-r-number",
            path: "header.color.rgb.r",
            type: "number"
          }, {
            element: ".control-header-color-rgb-g-range",
            path: "header.color.rgb.g",
            type: "range"
          }, {
            element: ".control-header-color-rgb-g-number",
            path: "header.color.rgb.g",
            type: "number"
          }, {
            element: ".control-header-color-rgb-b-range",
            path: "header.color.rgb.b",
            type: "range"
          }, {
            element: ".control-header-color-rgb-b-number",
            path: "header.color.rgb.b",
            type: "number"
          }],
          func: function() {
            header.mod.color.hsl();
            header.render.color.custom();
          }
        }, {
          element: ".control-header-color-rgb-text",
          path: "header.color.rgb",
          type: "text",
          valueConvert: ["hexTextString"],
          mirrorElement: [{
            element: ".control-header-color-rgb-color",
            path: "header.color.rgb",
            type: "color"
          }, {
            element: ".control-header-color-hsl-h-range",
            path: "header.color.hsl.h",
            type: "range"
          }, {
            element: ".control-header-color-hsl-h-number",
            path: "header.color.hsl.h",
            type: "number"
          }, {
            element: ".control-header-color-hsl-s-range",
            path: "header.color.hsl.s",
            type: "range"
          }, {
            element: ".control-header-color-hsl-s-number",
            path: "header.color.hsl.s",
            type: "number"
          }, {
            element: ".control-header-color-hsl-l-range",
            path: "header.color.hsl.l",
            type: "range"
          }, {
            element: ".control-header-color-hsl-l-number",
            path: "header.color.hsl.l",
            type: "number"
          }, {
            element: ".control-header-color-rgb-r-range",
            path: "header.color.rgb.r",
            type: "range"
          }, {
            element: ".control-header-color-rgb-r-number",
            path: "header.color.rgb.r",
            type: "number"
          }, {
            element: ".control-header-color-rgb-g-range",
            path: "header.color.rgb.g",
            type: "range"
          }, {
            element: ".control-header-color-rgb-g-number",
            path: "header.color.rgb.g",
            type: "number"
          }, {
            element: ".control-header-color-rgb-b-range",
            path: "header.color.rgb.b",
            type: "range"
          }, {
            element: ".control-header-color-rgb-b-number",
            path: "header.color.rgb.b",
            type: "number"
          }],
          func: function() {
            header.mod.color.hsl();
            header.render.color.custom();
          }
        }, {
          element: ".control-header-color-hsl-h-range",
          path: "header.color.hsl.h",
          type: "range",
          valueModify: {
            min: 0,
            max: 359
          },
          mirrorElement: [{
            element: ".control-header-color-rgb-color",
            path: "header.color.rgb",
            type: "color"
          }, {
            element: ".control-header-color-rgb-text",
            path: "header.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-header-color-hsl-h-number",
            path: "header.color.hsl.h",
            type: "number"
          }, {
            element: ".control-header-color-rgb-r-range",
            path: "header.color.rgb.r",
            type: "range"
          }, {
            element: ".control-header-color-rgb-r-number",
            path: "header.color.rgb.r",
            type: "number"
          }, {
            element: ".control-header-color-rgb-g-range",
            path: "header.color.rgb.g",
            type: "range"
          }, {
            element: ".control-header-color-rgb-g-number",
            path: "header.color.rgb.g",
            type: "number"
          }, {
            element: ".control-header-color-rgb-b-range",
            path: "header.color.rgb.b",
            type: "range"
          }, {
            element: ".control-header-color-rgb-b-number",
            path: "header.color.rgb.b",
            type: "number"
          }],
          func: function() {
            header.mod.color.rgb();
            header.render.color.custom();
          }
        }, {
          element: ".control-header-color-hsl-h-number",
          path: "header.color.hsl.h",
          type: "number",
          valueModify: {
            min: 0,
            max: 359
          },
          mirrorElement: [{
            element: ".control-header-color-rgb-color",
            path: "header.color.rgb",
            type: "color"
          }, {
            element: ".control-header-color-rgb-text",
            path: "header.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-header-color-hsl-h-range",
            path: "header.color.hsl.h",
            type: "range"
          }, {
            element: ".control-header-color-rgb-r-range",
            path: "header.color.rgb.r",
            type: "range"
          }, {
            element: ".control-header-color-rgb-r-number",
            path: "header.color.rgb.r",
            type: "number"
          }, {
            element: ".control-header-color-rgb-g-range",
            path: "header.color.rgb.g",
            type: "range"
          }, {
            element: ".control-header-color-rgb-g-number",
            path: "header.color.rgb.g",
            type: "number"
          }, {
            element: ".control-header-color-rgb-b-range",
            path: "header.color.rgb.b",
            type: "range"
          }, {
            element: ".control-header-color-rgb-b-number",
            path: "header.color.rgb.b",
            type: "number"
          }],
          func: function() {
            header.mod.color.rgb();
            header.render.color.custom();
          }
        }, {
          element: ".control-header-color-hsl-s-range",
          path: "header.color.hsl.s",
          type: "range",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-color-rgb-color",
            path: "header.color.rgb",
            type: "color"
          }, {
            element: ".control-header-color-rgb-text",
            path: "header.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-header-color-hsl-s-number",
            path: "header.color.hsl.s",
            type: "number"
          }, {
            element: ".control-header-color-rgb-r-range",
            path: "header.color.rgb.r",
            type: "range"
          }, {
            element: ".control-header-color-rgb-r-number",
            path: "header.color.rgb.r",
            type: "number"
          }, {
            element: ".control-header-color-rgb-g-range",
            path: "header.color.rgb.g",
            type: "range"
          }, {
            element: ".control-header-color-rgb-g-number",
            path: "header.color.rgb.g",
            type: "number"
          }, {
            element: ".control-header-color-rgb-b-range",
            path: "header.color.rgb.b",
            type: "range"
          }, {
            element: ".control-header-color-rgb-b-number",
            path: "header.color.rgb.b",
            type: "number"
          }],
          func: function() {
            header.mod.color.rgb();
            header.render.color.custom();
          }
        }, {
          element: ".control-header-color-hsl-s-number",
          path: "header.color.hsl.s",
          type: "number",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-color-rgb-color",
            path: "header.color.rgb",
            type: "color"
          }, {
            element: ".control-header-color-rgb-text",
            path: "header.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-header-color-hsl-s-range",
            path: "header.color.hsl.s",
            type: "range"
          }, {
            element: ".control-header-color-rgb-r-range",
            path: "header.color.rgb.r",
            type: "range"
          }, {
            element: ".control-header-color-rgb-r-number",
            path: "header.color.rgb.r",
            type: "number"
          }, {
            element: ".control-header-color-rgb-g-range",
            path: "header.color.rgb.g",
            type: "range"
          }, {
            element: ".control-header-color-rgb-g-number",
            path: "header.color.rgb.g",
            type: "number"
          }, {
            element: ".control-header-color-rgb-b-range",
            path: "header.color.rgb.b",
            type: "range"
          }, {
            element: ".control-header-color-rgb-b-number",
            path: "header.color.rgb.b",
            type: "number"
          }],
          func: function() {
            header.mod.color.rgb();
            header.render.color.custom();
          }
        }, {
          element: ".control-header-color-hsl-l-range",
          path: "header.color.hsl.l",
          type: "range",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-color-rgb-color",
            path: "header.color.rgb",
            type: "color"
          }, {
            element: ".control-header-color-rgb-text",
            path: "header.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-header-color-hsl-l-number",
            path: "header.color.hsl.l",
            type: "number"
          }, {
            element: ".control-header-color-rgb-r-range",
            path: "header.color.rgb.r",
            type: "range"
          }, {
            element: ".control-header-color-rgb-r-number",
            path: "header.color.rgb.r",
            type: "number"
          }, {
            element: ".control-header-color-rgb-g-range",
            path: "header.color.rgb.g",
            type: "range"
          }, {
            element: ".control-header-color-rgb-g-number",
            path: "header.color.rgb.g",
            type: "number"
          }, {
            element: ".control-header-color-rgb-b-range",
            path: "header.color.rgb.b",
            type: "range"
          }, {
            element: ".control-header-color-rgb-b-number",
            path: "header.color.rgb.b",
            type: "number"
          }],
          func: function() {
            header.mod.color.rgb();
            header.render.color.custom();
          }
        }, {
          element: ".control-header-color-hsl-l-number",
          path: "header.color.hsl.l",
          type: "number",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-color-rgb-color",
            path: "header.color.rgb",
            type: "color"
          }, {
            element: ".control-header-color-rgb-text",
            path: "header.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-header-color-hsl-l-range",
            path: "header.color.hsl.l",
            type: "range"
          }, {
            element: ".control-header-color-rgb-r-range",
            path: "header.color.rgb.r",
            type: "range"
          }, {
            element: ".control-header-color-rgb-r-number",
            path: "header.color.rgb.r",
            type: "number"
          }, {
            element: ".control-header-color-rgb-g-range",
            path: "header.color.rgb.g",
            type: "range"
          }, {
            element: ".control-header-color-rgb-g-number",
            path: "header.color.rgb.g",
            type: "number"
          }, {
            element: ".control-header-color-rgb-b-range",
            path: "header.color.rgb.b",
            type: "range"
          }, {
            element: ".control-header-color-rgb-b-number",
            path: "header.color.rgb.b",
            type: "number"
          }],
          func: function() {
            header.mod.color.rgb();
            header.render.color.custom();
          }
        }, {
          element: ".control-header-color-rgb-r-range",
          path: "header.color.rgb.r",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-header-color-rgb-color",
            path: "header.color.rgb",
            type: "color"
          }, {
            element: ".control-header-color-rgb-text",
            path: "header.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-header-color-rgb-r-number",
            path: "header.color.rgb.r",
            type: "number"
          }, {
            element: ".control-header-color-hsl-h-range",
            path: "header.color.hsl.h",
            type: "range"
          }, {
            element: ".control-header-color-hsl-h-number",
            path: "header.color.hsl.h",
            type: "number"
          }, {
            element: ".control-header-color-hsl-s-range",
            path: "header.color.hsl.s",
            type: "range"
          }, {
            element: ".control-header-color-hsl-s-number",
            path: "header.color.hsl.s",
            type: "number"
          }, {
            element: ".control-header-color-hsl-l-range",
            path: "header.color.hsl.l",
            type: "range"
          }, {
            element: ".control-header-color-hsl-l-number",
            path: "header.color.hsl.l",
            type: "number"
          }],
          func: function() {
            header.mod.color.hsl();
            header.render.color.custom();
          }
        }, {
          element: ".control-header-color-rgb-r-number",
          path: "header.color.rgb.r",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-header-color-rgb-color",
            path: "header.color.rgb",
            type: "color"
          }, {
            element: ".control-header-color-rgb-text",
            path: "header.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-header-color-rgb-r-range",
            path: "header.color.rgb.r",
            type: "range"
          }, {
            element: ".control-header-color-hsl-h-range",
            path: "header.color.hsl.h",
            type: "range"
          }, {
            element: ".control-header-color-hsl-h-number",
            path: "header.color.hsl.h",
            type: "number"
          }, {
            element: ".control-header-color-hsl-s-range",
            path: "header.color.hsl.s",
            type: "range"
          }, {
            element: ".control-header-color-hsl-s-number",
            path: "header.color.hsl.s",
            type: "number"
          }, {
            element: ".control-header-color-hsl-l-range",
            path: "header.color.hsl.l",
            type: "range"
          }, {
            element: ".control-header-color-hsl-l-number",
            path: "header.color.hsl.l",
            type: "number"
          }],
          func: function() {
            header.mod.color.hsl();
            header.render.color.custom();
          }
        }, {
          element: ".control-header-color-rgb-g-range",
          path: "header.color.rgb.g",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-header-color-rgb-color",
            path: "header.color.rgb",
            type: "color"
          }, {
            element: ".control-header-color-rgb-text",
            path: "header.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-header-color-rgb-g-number",
            path: "header.color.rgb.g",
            type: "number"
          }, {
            element: ".control-header-color-hsl-h-range",
            path: "header.color.hsl.h",
            type: "range"
          }, {
            element: ".control-header-color-hsl-h-number",
            path: "header.color.hsl.h",
            type: "number"
          }, {
            element: ".control-header-color-hsl-s-range",
            path: "header.color.hsl.s",
            type: "range"
          }, {
            element: ".control-header-color-hsl-s-number",
            path: "header.color.hsl.s",
            type: "number"
          }, {
            element: ".control-header-color-hsl-l-range",
            path: "header.color.hsl.l",
            type: "range"
          }, {
            element: ".control-header-color-hsl-l-number",
            path: "header.color.hsl.l",
            type: "number"
          }],
          func: function() {
            header.mod.color.hsl();
            header.render.color.custom();
          }
        }, {
          element: ".control-header-color-rgb-g-number",
          path: "header.color.rgb.g",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-header-color-rgb-color",
            path: "header.color.rgb",
            type: "color"
          }, {
            element: ".control-header-color-rgb-text",
            path: "header.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-header-color-rgb-g-range",
            path: "header.color.rgb.g",
            type: "range"
          }, {
            element: ".control-header-color-hsl-h-range",
            path: "header.color.hsl.h",
            type: "range"
          }, {
            element: ".control-header-color-hsl-h-number",
            path: "header.color.hsl.h",
            type: "number"
          }, {
            element: ".control-header-color-hsl-s-range",
            path: "header.color.hsl.s",
            type: "range"
          }, {
            element: ".control-header-color-hsl-s-number",
            path: "header.color.hsl.s",
            type: "number"
          }, {
            element: ".control-header-color-hsl-l-range",
            path: "header.color.hsl.l",
            type: "range"
          }, {
            element: ".control-header-color-hsl-l-number",
            path: "header.color.hsl.l",
            type: "number"
          }],
          func: function() {
            header.mod.color.hsl();
            header.render.color.custom();
          }
        }, {
          element: ".control-header-color-rgb-b-range",
          path: "header.color.rgb.b",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-header-color-rgb-color",
            path: "header.color.rgb",
            type: "color"
          }, {
            element: ".control-header-color-rgb-text",
            path: "header.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-header-color-rgb-b-number",
            path: "header.color.rgb.b",
            type: "number"
          }, {
            element: ".control-header-color-hsl-h-range",
            path: "header.color.hsl.h",
            type: "range"
          }, {
            element: ".control-header-color-hsl-h-number",
            path: "header.color.hsl.h",
            type: "number"
          }, {
            element: ".control-header-color-hsl-s-range",
            path: "header.color.hsl.s",
            type: "range"
          }, {
            element: ".control-header-color-hsl-s-number",
            path: "header.color.hsl.s",
            type: "number"
          }, {
            element: ".control-header-color-hsl-l-range",
            path: "header.color.hsl.l",
            type: "range"
          }, {
            element: ".control-header-color-hsl-l-number",
            path: "header.color.hsl.l",
            type: "number"
          }],
          func: function() {
            header.mod.color.hsl();
            header.render.color.custom();
          }
        }, {
          element: ".control-header-color-rgb-b-number",
          path: "header.color.rgb.b",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-header-color-rgb-color",
            path: "header.color.rgb",
            type: "color"
          }, {
            element: ".control-header-color-rgb-text",
            path: "header.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-header-color-rgb-b-range",
            path: "header.color.rgb.b",
            type: "range"
          }, {
            element: ".control-header-color-hsl-h-range",
            path: "header.color.hsl.h",
            type: "range"
          }, {
            element: ".control-header-color-hsl-h-number",
            path: "header.color.hsl.h",
            type: "number"
          }, {
            element: ".control-header-color-hsl-s-range",
            path: "header.color.hsl.s",
            type: "range"
          }, {
            element: ".control-header-color-hsl-s-number",
            path: "header.color.hsl.s",
            type: "number"
          }, {
            element: ".control-header-color-hsl-l-range",
            path: "header.color.hsl.l",
            type: "range"
          }, {
            element: ".control-header-color-hsl-l-number",
            path: "header.color.hsl.l",
            type: "number"
          }],
          func: function() {
            header.mod.color.hsl();
            header.render.color.custom();
          }
        }, {
          element: ".control-header-color-opacity-range",
          path: "header.color.opacity",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-color-opacity-number",
            path: "header.color.opacity",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.opacity();
          }
        }, {
          element: ".control-header-color-opacity-number",
          path: "header.color.opacity",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-header-color-opacity-range",
            path: "header.color.opacity",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            header.render.opacity();
          }
        }, {
          element: ".control-header-color-opacity-default",
          type: "button",
          func: function() {
            mod.default("header.color.opacity");
            header.render.opacity();
            render.update.control.menu();
          }
        }, {
          element: ".control-header-radius",
          path: "header.radius",
          type: "checkbox",
          func: function() {
            render.class();
          }
        }]
      },
      bookmarks: {
        area: [{
          element: ".control-link-area-width-range",
          path: "link.area.width",
          type: "range",
          valueModify: {
            min: 10,
            max: 100
          },
          mirrorElement: [{
            element: ".control-link-area-width-number",
            path: "link.area.width",
            type: "number"
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".link-area"),
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".link-area"),
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: helper.e(".group"),
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            link.render.area.width();
          }
        }, {
          element: ".control-link-area-width-number",
          path: "link.area.width",
          type: "number",
          valueModify: {
            min: 10,
            max: 100
          },
          mirrorElement: [{
            element: ".control-link-area-width-range",
            path: "link.area.width",
            type: "range"
          }],
          func: function() {
            link.render.area.width();
          }
        }, {
          element: ".control-link-area-width-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".link-area"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("link.area.width");
            link.render.area.width();
            render.update.control.menu();
          }
        }, {
          element: ".control-link-area-width-match",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".link-area"),
                delay: 500
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            mod.match("link.area.width", "header.area.width");
            link.render.area.width();
            render.update.control.menu();
          }
        }],
        alignment: [{
          element: ".control-link-area-justify-left",
          path: "link.area.justify",
          type: "radio",
          additionalEvents: [{
            event: "change",
            func: function() {
              edge.box.open({
                element: helper.e(".link-area"),
                delay: 500
              });
            }
          }],
          func: function() {
            render.class();
          }
        }, {
          element: ".control-link-area-justify-center",
          path: "link.area.justify",
          type: "radio",
          additionalEvents: [{
            event: "change",
            func: function() {
              edge.box.open({
                element: helper.e(".link-area"),
                delay: 500
              });
            }
          }],
          func: function() {
            render.class();
          }
        }, {
          element: ".control-link-area-justify-right",
          path: "link.area.justify",
          type: "radio",
          additionalEvents: [{
            event: "change",
            func: function() {
              edge.box.open({
                element: helper.e(".link-area"),
                delay: 500
              });
            }
          }],
          func: function() {
            render.class();
          }
        }, {
          element: ".control-link-area-direction-ltr",
          path: "link.area.direction",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-link-area-direction-rtl",
          path: "link.area.direction",
          type: "radio",
          func: function() {
            render.class();
          }
        }],
        bookmarks: [{
          element: ".control-link-item-size-range",
          path: "link.item.size",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 50,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-link-item-size-number",
            path: "link.item.size",
            type: "number",
            valueConvert: ["float"]
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".link-item"),
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".link-item"),
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: helper.e(".link-item"),
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            link.render.item.size();
          }
        }, {
          element: ".control-link-item-size-number",
          path: "link.item.size",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 50,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-link-item-size-range",
            path: "link.item.size",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            link.render.item.size();
          }
        }, {
          element: ".control-link-show",
          path: "link.show",
          type: "checkbox",
          func: function() {
            render.class();
            render.dependents();
            search.render.engine();
          }
        }, {
          element: ".control-link-item-size-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".link-item"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("link.item.size");
            link.render.item.size();
            render.update.control.menu();
          }
        }, {
          element: ".control-link-item-url-show",
          path: "link.item.url.show",
          type: "checkbox",
          func: function() {
            render.class();
            render.dependents();
          }
        }, {
          element: ".control-link-item-line-show",
          path: "link.item.line.show",
          type: "checkbox",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-link-item-shadow-show",
          path: "link.item.shadow.show",
          type: "checkbox",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-link-item-hoverscale",
          path: "link.item.hoverScale.show",
          type: "checkbox",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-link-newtab",
          path: "link.item.newTab",
          type: "checkbox",
          func: function() {
            link.groupAndItems();
          }
        }],
        content: [{
          element: ".control-link-item-display-alignment-topleft",
          path: "link.item.display.alignment",
          type: "radio"
        }, {
          element: ".control-link-item-display-alignment-topcenter",
          path: "link.item.display.alignment",
          type: "radio"
        }, {
          element: ".control-link-item-display-alignment-topright",
          path: "link.item.display.alignment",
          type: "radio"
        }, {
          element: ".control-link-item-display-alignment-centerleft",
          path: "link.item.display.alignment",
          type: "radio"
        }, {
          element: ".control-link-item-display-alignment-centercenter",
          path: "link.item.display.alignment",
          type: "radio"
        }, {
          element: ".control-link-item-display-alignment-centerright",
          path: "link.item.display.alignment",
          type: "radio"
        }, {
          element: ".control-link-item-display-alignment-bottomleft",
          path: "link.item.display.alignment",
          type: "radio"
        }, {
          element: ".control-link-item-display-alignment-bottomcenter",
          path: "link.item.display.alignment",
          type: "radio"
        }, {
          element: ".control-link-item-display-alignment-bottomright",
          path: "link.item.display.alignment",
          type: "radio"
        }, {
          element: ".control-link-item-display-alignment-apply",
          type: "button",
          func: function() {
            link.mod.item.display.alignment();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-display-rotate-range",
          path: "link.item.display.rotate",
          type: "range",
          valueModify: {
            min: -180,
            max: 180
          },
          mirrorElement: [{
            element: ".control-link-item-display-rotate-number",
            path: "link.item.display.rotate",
            type: "number"
          }]
        }, {
          element: ".control-link-item-display-rotate-number",
          path: "link.item.display.rotate",
          type: "number",
          valueModify: {
            min: -180,
            max: 180
          },
          mirrorElement: [{
            element: ".control-link-item-display-rotate-range",
            path: "link.item.display.rotate",
            type: "range"
          }]
        }, {
          element: ".control-link-item-display-rotate-default",
          type: "button",
          func: function() {
            mod.default("link.item.display.rotate");
            render.update.control.menu();
          }
        }, {
          element: ".control-link-item-display-rotate-apply",
          type: "button",
          func: function() {
            link.mod.item.display.rotate();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-display-translate-x-range",
          path: "link.item.display.translate.x",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: -1000,
            max: 1000,
            step: 10
          },
          mirrorElement: [{
            element: ".control-link-item-display-translate-x-number",
            path: "link.item.display.translate.x",
            type: "number",
            valueConvert: ["float"]
          }]
        }, {
          element: ".control-link-item-display-translate-x-number",
          path: "link.item.display.translate.x",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: -1000,
            max: 1000,
            step: 10
          },
          mirrorElement: [{
            element: ".control-link-item-display-translate-x-range",
            path: "link.item.display.translate.x",
            type: "range",
            valueConvert: ["float"]
          }]
        }, {
          element: ".control-link-item-display-translate-x-default",
          type: "button",
          func: function() {
            mod.default("link.item.display.translate.x");
            render.update.control.menu();
          }
        }, {
          element: ".control-link-item-display-translate-x-apply",
          type: "button",
          func: function() {
            link.mod.item.display.translate.x();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-display-translate-y-range",
          path: "link.item.display.translate.y",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: -1000,
            max: 1000,
            step: 10
          },
          mirrorElement: [{
            element: ".control-link-item-display-translate-y-number",
            path: "link.item.display.translate.y",
            type: "number",
            valueConvert: ["float"]
          }]
        }, {
          element: ".control-link-item-display-translate-y-number",
          path: "link.item.display.translate.y",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: -1000,
            max: 1000,
            step: 10
          },
          mirrorElement: [{
            element: ".control-link-item-display-translate-y-range",
            path: "link.item.display.translate.y",
            type: "range",
            valueConvert: ["float"]
          }]
        }, {
          element: ".control-link-item-display-translate-y-default",
          type: "button",
          func: function() {
            mod.default("link.item.display.translate.y");
            render.update.control.menu();
          }
        }, {
          element: ".control-link-item-display-translate-y-apply",
          type: "button",
          func: function() {
            link.mod.item.display.translate.y();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-display-gutter-range",
          path: "link.item.display.gutter",
          type: "range",
          valueModify: {
            min: 0,
            max: 40
          },
          mirrorElement: [{
            element: ".control-link-item-display-gutter-number",
            path: "link.item.display.gutter",
            type: "number"
          }]
        }, {
          element: ".control-link-item-display-gutter-number",
          path: "link.item.display.gutter",
          type: "number",
          valueModify: {
            min: 0,
            max: 40
          },
          mirrorElement: [{
            element: ".control-link-item-display-gutter-range",
            path: "link.item.display.gutter",
            type: "range"
          }]
        }, {
          element: ".control-link-item-display-gutter-default",
          type: "button",
          func: function() {
            mod.default("link.item.display.gutter");
            render.update.control.menu();
          }
        }, {
          element: ".control-link-item-display-gutter-apply",
          type: "button",
          func: function() {
            link.mod.item.display.gutter();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-display-direction-horizontal",
          path: "link.item.display.direction",
          type: "radio"
        }, {
          element: ".control-link-item-display-direction-vertical",
          path: "link.item.display.direction",
          type: "radio"
        }, {
          element: ".control-link-item-display-direction-apply",
          type: "button",
          func: function() {
            link.mod.item.display.direction();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-display-order-visualname",
          path: "link.item.display.order",
          type: "radio"
        }, {
          element: ".control-link-item-display-order-namevisual",
          path: "link.item.display.order",
          type: "radio"
        }, {
          element: ".control-link-item-display-order-apply",
          type: "button",
          func: function() {
            link.mod.item.display.order();
            link.groupAndItems();
          }
        }],
        visual: [{
          element: ".control-link-item-display-visual-show",
          type: "button",
          func: function() {
            link.mod.item.display.visual.show();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-display-visual-hide",
          type: "button",
          func: function() {
            link.mod.item.display.visual.hide();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-display-visual-letter-size-range",
          path: "link.item.display.visual.letter.size",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 3000,
            step: 10
          },
          mirrorElement: [{
            element: ".control-link-item-display-visual-letter-size-number",
            path: "link.item.display.visual.letter.size",
            type: "number",
            valueConvert: ["float"]
          }]
        }, {
          element: ".control-link-item-display-visual-letter-size-number",
          path: "link.item.display.visual.letter.size",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 3000,
            step: 10
          },
          mirrorElement: [{
            element: ".control-link-item-display-visual-letter-size-range",
            path: "link.item.display.visual.letter.size",
            type: "range",
            valueConvert: ["float"]
          }]
        }, {
          element: ".control-link-item-display-visual-letter-size-default",
          type: "button",
          func: function() {
            mod.default("link.item.display.visual.letter.size");
            render.update.control.menu();
          }
        }, {
          element: ".control-link-item-display-visual-letter-size-apply",
          type: "button",
          func: function() {
            link.mod.item.display.visual.letter.size();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-display-visual-icon-size-range",
          path: "link.item.display.visual.icon.size",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 3000,
            step: 10
          },
          mirrorElement: [{
            element: ".control-link-item-display-visual-icon-size-number",
            path: "link.item.display.visual.icon.size",
            type: "number",
            valueConvert: ["float"]
          }],
        }, {
          element: ".control-link-item-display-visual-icon-size-number",
          path: "link.item.display.visual.icon.size",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 3000,
            step: 10
          },
          mirrorElement: [{
            element: ".control-link-item-display-visual-icon-size-range",
            path: "link.item.display.visual.icon.size",
            type: "range",
            valueConvert: ["float"]
          }],
        }, {
          element: ".control-link-item-display-visual-icon-size-default",
          type: "button",
          func: function() {
            mod.default("link.item.display.visual.icon.size");
            render.update.control.menu();
          }
        }, {
          element: ".control-link-item-display-visual-icon-size-apply",
          type: "button",
          func: function() {
            link.mod.item.display.visual.icon.size();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-display-visual-image-size-range",
          path: "link.item.display.visual.image.size",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 3000,
            step: 10
          },
          mirrorElement: [{
            element: ".control-link-item-display-visual-image-size-number",
            path: "link.item.display.visual.image.size",
            type: "number",
            valueConvert: ["float"]
          }],
        }, {
          element: ".control-link-item-display-visual-image-size-number",
          path: "link.item.display.visual.image.size",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 3000,
            step: 10
          },
          mirrorElement: [{
            element: ".control-link-item-display-visual-image-size-range",
            path: "link.item.display.visual.image.size",
            type: "range",
            valueConvert: ["float"]
          }],
        }, {
          element: ".control-link-item-display-visual-image-size-default",
          type: "button",
          func: function() {
            mod.default("link.item.display.visual.image.size");
            render.update.control.menu();
          }
        }, {
          element: ".control-link-item-display-visual-image-size-apply",
          type: "button",
          func: function() {
            link.mod.item.display.visual.image.size();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-display-visual-shadow-size-range",
          path: "link.item.display.visual.shadow.size",
          type: "range",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-link-item-display-visual-shadow-size-number",
            path: "link.item.display.visual.shadow.size",
            type: "number"
          }],
        }, {
          element: ".control-link-item-display-visual-shadow-size-number",
          path: "link.item.display.visual.shadow.size",
          type: "number",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-link-item-display-visual-shadow-size-range",
            path: "link.item.display.visual.shadow.size",
            type: "range"
          }],
        }, {
          element: ".control-link-item-display-visual-shadow-size-default",
          type: "button",
          func: function() {
            mod.default("link.item.display.visual.shadow.size");
            render.update.control.menu();
          }
        }, {
          element: ".control-link-item-display-visual-shadow-size-apply",
          type: "button",
          func: function() {
            link.mod.item.display.visual.shadow.size();
            link.groupAndItems();
          }
        }],
        name: [{
          element: ".control-link-item-display-name-show",
          type: "button",
          func: function() {
            link.mod.item.display.name.show();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-display-name-hide",
          type: "button",
          func: function() {
            link.mod.item.display.name.hide();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-display-name-size-range",
          path: "link.item.display.name.size",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 1500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-link-item-display-name-size-number",
            path: "link.item.display.name.size",
            type: "number",
            valueConvert: ["float"]
          }]
        }, {
          element: ".control-link-item-display-name-size-number",
          path: "link.item.display.name.size",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 1500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-link-item-display-name-size-range",
            path: "link.item.display.name.size",
            type: "range",
            valueConvert: ["float"]
          }]
        }, {
          element: ".control-link-item-display-name-size-default",
          type: "button",
          func: function() {
            mod.default("link.item.display.name.size");
            render.update.control.menu();
          }
        }, {
          element: ".control-link-item-display-name-size-apply",
          type: "button",
          func: function() {
            link.mod.item.display.name.size();
            link.groupAndItems();
          }
        }],
        style: [{
          element: ".control-link-style-block",
          path: "link.style",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-link-style-list",
          path: "link.style",
          type: "radio",
          func: function() {
            render.class();
          }
        }],
        color: [{
          element: ".control-link-item-color-by-theme",
          path: "link.item.color.by",
          type: "radio",
          func: function() {
            render.dependents();
          }
        }, {
          element: ".control-link-item-color-by-custom",
          path: "link.item.color.by",
          type: "radio",
          func: function() {
            render.dependents();
          }
        }, {
          element: ".control-link-item-color-rgb-color",
          path: "link.item.color.rgb",
          type: "color",
          mirrorElement: [{
            element: ".control-link-item-color-rgb-text",
            path: "link.item.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-color-hsl-h-range",
            path: "link.item.color.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-h-number",
            path: "link.item.color.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-s-range",
            path: "link.item.color.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-s-number",
            path: "link.item.color.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-l-range",
            path: "link.item.color.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-l-number",
            path: "link.item.color.hsl.l",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-r-range",
            path: "link.item.color.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-r-number",
            path: "link.item.color.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-g-range",
            path: "link.item.color.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-g-number",
            path: "link.item.color.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-b-range",
            path: "link.item.color.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-b-number",
            path: "link.item.color.rgb.b",
            type: "number"
          }],
          func: function() {
            link.mod.item.color.hsl();
          }
        }, {
          element: ".control-link-item-color-rgb-text",
          path: "link.item.color.rgb",
          type: "text",
          valueConvert: ["hexTextString"],
          mirrorElement: [{
            element: ".control-link-item-color-rgb-color",
            path: "link.item.color.rgb",
            type: "color"
          }, {
            element: ".control-link-item-color-hsl-h-range",
            path: "link.item.color.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-h-number",
            path: "link.item.color.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-s-range",
            path: "link.item.color.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-s-number",
            path: "link.item.color.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-l-range",
            path: "link.item.color.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-l-number",
            path: "link.item.color.hsl.l",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-r-range",
            path: "link.item.color.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-r-number",
            path: "link.item.color.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-g-range",
            path: "link.item.color.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-g-number",
            path: "link.item.color.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-b-range",
            path: "link.item.color.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-b-number",
            path: "link.item.color.rgb.b",
            type: "number"
          }],
          func: function() {
            link.mod.item.color.hsl();
          }
        }, {
          element: ".control-link-item-color-hsl-h-range",
          path: "link.item.color.hsl.h",
          type: "range",
          valueModify: {
            min: 0,
            max: 359
          },
          mirrorElement: [{
            element: ".control-link-item-color-rgb-color",
            path: "link.item.color.rgb",
            type: "color"
          }, {
            element: ".control-link-item-color-rgb-text",
            path: "link.item.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-color-hsl-h-number",
            path: "link.item.color.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-r-range",
            path: "link.item.color.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-r-number",
            path: "link.item.color.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-g-range",
            path: "link.item.color.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-g-number",
            path: "link.item.color.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-b-range",
            path: "link.item.color.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-b-number",
            path: "link.item.color.rgb.b",
            type: "number"
          }],
          func: function() {
            link.mod.item.color.rgb();
          }
        }, {
          element: ".control-link-item-color-hsl-h-number",
          path: "link.item.color.hsl.h",
          type: "number",
          valueModify: {
            min: 0,
            max: 359
          },
          mirrorElement: [{
            element: ".control-link-item-color-rgb-color",
            path: "link.item.color.rgb",
            type: "color"
          }, {
            element: ".control-link-item-color-rgb-text",
            path: "link.item.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-color-hsl-h-range",
            path: "link.item.color.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-r-range",
            path: "link.item.color.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-r-number",
            path: "link.item.color.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-g-range",
            path: "link.item.color.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-g-number",
            path: "link.item.color.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-b-range",
            path: "link.item.color.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-b-number",
            path: "link.item.color.rgb.b",
            type: "number"
          }],
          func: function() {
            link.mod.item.color.rgb();
          }
        }, {
          element: ".control-link-item-color-hsl-s-range",
          path: "link.item.color.hsl.s",
          type: "range",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-link-item-color-rgb-color",
            path: "link.item.color.rgb",
            type: "color"
          }, {
            element: ".control-link-item-color-rgb-text",
            path: "link.item.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-color-hsl-s-number",
            path: "link.item.color.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-r-range",
            path: "link.item.color.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-r-number",
            path: "link.item.color.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-g-range",
            path: "link.item.color.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-g-number",
            path: "link.item.color.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-b-range",
            path: "link.item.color.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-b-number",
            path: "link.item.color.rgb.b",
            type: "number"
          }],
          func: function() {
            link.mod.item.color.rgb();
          }
        }, {
          element: ".control-link-item-color-hsl-s-number",
          path: "link.item.color.hsl.s",
          type: "number",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-link-item-color-rgb-color",
            path: "link.item.color.rgb",
            type: "color"
          }, {
            element: ".control-link-item-color-rgb-text",
            path: "link.item.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-color-hsl-s-range",
            path: "link.item.color.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-r-range",
            path: "link.item.color.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-r-number",
            path: "link.item.color.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-g-range",
            path: "link.item.color.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-g-number",
            path: "link.item.color.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-b-range",
            path: "link.item.color.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-b-number",
            path: "link.item.color.rgb.b",
            type: "number"
          }],
          func: function() {
            link.mod.item.color.rgb();
          }
        }, {
          element: ".control-link-item-color-hsl-l-range",
          path: "link.item.color.hsl.l",
          type: "range",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-link-item-color-rgb-color",
            path: "link.item.color.rgb",
            type: "color"
          }, {
            element: ".control-link-item-color-rgb-text",
            path: "link.item.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-color-hsl-l-number",
            path: "link.item.color.hsl.l",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-r-range",
            path: "link.item.color.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-r-number",
            path: "link.item.color.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-g-range",
            path: "link.item.color.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-g-number",
            path: "link.item.color.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-b-range",
            path: "link.item.color.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-b-number",
            path: "link.item.color.rgb.b",
            type: "number"
          }],
          func: function() {
            link.mod.item.color.rgb();
          }
        }, {
          element: ".control-link-item-color-hsl-l-number",
          path: "link.item.color.hsl.l",
          type: "number",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-link-item-color-rgb-color",
            path: "link.item.color.rgb",
            type: "color"
          }, {
            element: ".control-link-item-color-rgb-text",
            path: "link.item.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-color-hsl-l-range",
            path: "link.item.color.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-r-range",
            path: "link.item.color.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-r-number",
            path: "link.item.color.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-g-range",
            path: "link.item.color.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-g-number",
            path: "link.item.color.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-color-rgb-b-range",
            path: "link.item.color.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-color-rgb-b-number",
            path: "link.item.color.rgb.b",
            type: "number"
          }],
          func: function() {
            link.mod.item.color.rgb();
          }
        }, {
          element: ".control-link-item-color-rgb-r-range",
          path: "link.item.color.rgb.r",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-link-item-color-rgb-color",
            path: "link.item.color.rgb",
            type: "color"
          }, {
            element: ".control-link-item-color-rgb-text",
            path: "link.item.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-color-rgb-r-number",
            path: "link.item.color.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-h-range",
            path: "link.item.color.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-h-number",
            path: "link.item.color.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-s-range",
            path: "link.item.color.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-s-number",
            path: "link.item.color.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-l-range",
            path: "link.item.color.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-l-number",
            path: "link.item.color.hsl.l",
            type: "number"
          }],
          func: function() {
            link.mod.item.color.hsl();
          }
        }, {
          element: ".control-link-item-color-rgb-r-number",
          path: "link.item.color.rgb.r",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-link-item-color-rgb-color",
            path: "link.item.color.rgb",
            type: "color"
          }, {
            element: ".control-link-item-color-rgb-text",
            path: "link.item.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-color-rgb-r-range",
            path: "link.item.color.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-h-range",
            path: "link.item.color.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-h-number",
            path: "link.item.color.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-s-range",
            path: "link.item.color.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-s-number",
            path: "link.item.color.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-l-range",
            path: "link.item.color.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-l-number",
            path: "link.item.color.hsl.l",
            type: "number"
          }],
          func: function() {
            link.mod.item.color.hsl();
          }
        }, {
          element: ".control-link-item-color-rgb-g-range",
          path: "link.item.color.rgb.g",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-link-item-color-rgb-color",
            path: "link.item.color.rgb",
            type: "color"
          }, {
            element: ".control-link-item-color-rgb-text",
            path: "link.item.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-color-rgb-g-number",
            path: "link.item.color.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-h-range",
            path: "link.item.color.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-h-number",
            path: "link.item.color.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-s-range",
            path: "link.item.color.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-s-number",
            path: "link.item.color.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-l-range",
            path: "link.item.color.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-l-number",
            path: "link.item.color.hsl.l",
            type: "number"
          }],
          func: function() {
            link.mod.item.color.hsl();
          }
        }, {
          element: ".control-link-item-color-rgb-g-number",
          path: "link.item.color.rgb.g",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-link-item-color-rgb-color",
            path: "link.item.color.rgb",
            type: "color"
          }, {
            element: ".control-link-item-color-rgb-text",
            path: "link.item.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-color-rgb-g-range",
            path: "link.item.color.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-h-range",
            path: "link.item.color.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-h-number",
            path: "link.item.color.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-s-range",
            path: "link.item.color.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-s-number",
            path: "link.item.color.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-l-range",
            path: "link.item.color.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-l-number",
            path: "link.item.color.hsl.l",
            type: "number"
          }],
          func: function() {
            link.mod.item.color.hsl();
          }
        }, {
          element: ".control-link-item-color-rgb-b-range",
          path: "link.item.color.rgb.b",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-link-item-color-rgb-color",
            path: "link.item.color.rgb",
            type: "color"
          }, {
            element: ".control-link-item-color-rgb-text",
            path: "link.item.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-color-rgb-b-number",
            path: "link.item.color.rgb.b",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-h-range",
            path: "link.item.color.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-h-number",
            path: "link.item.color.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-s-range",
            path: "link.item.color.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-s-number",
            path: "link.item.color.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-l-range",
            path: "link.item.color.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-l-number",
            path: "link.item.color.hsl.l",
            type: "number"
          }],
          func: function() {
            link.mod.item.color.hsl();
          }
        }, {
          element: ".control-link-item-color-rgb-b-number",
          path: "link.item.color.rgb.b",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-link-item-color-rgb-color",
            path: "link.item.color.rgb",
            type: "color"
          }, {
            element: ".control-link-item-color-rgb-text",
            path: "link.item.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-color-rgb-b-range",
            path: "link.item.color.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-h-range",
            path: "link.item.color.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-h-number",
            path: "link.item.color.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-s-range",
            path: "link.item.color.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-s-number",
            path: "link.item.color.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-color-hsl-l-range",
            path: "link.item.color.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-color-hsl-l-number",
            path: "link.item.color.hsl.l",
            type: "number"
          }],
          func: function() {
            link.mod.item.color.hsl();
          }
        }, {
          element: ".control-link-item-color-apply",
          type: "button",
          func: function() {
            link.mod.item.color.set();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-color-rainbow",
          type: "button",
          func: function() {
            link.mod.item.color.rainbow();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-color-opacity-range",
          path: "link.item.color.opacity",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-link-item-color-opacity-number",
            path: "link.item.color.opacity",
            type: "number",
            valueConvert: ["float"]
          }]
        }, {
          element: ".control-link-item-color-opacity-number",
          path: "link.item.color.opacity",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-link-item-color-opacity-range",
            path: "link.item.color.opacity",
            type: "number",
            valueConvert: ["float"]
          }]
        }, {
          element: ".control-link-item-color-opacity-default",
          type: "button",
          func: function() {
            mod.default("link.item.color.opacity");
            render.update.control.menu();
          }
        }, {
          element: ".control-link-item-color-opacity-apply",
          type: "button",
          func: function() {
            link.mod.item.color.opacity();
            link.groupAndItems();
          }
        }],
        accent: [{
          element: ".control-link-item-accent-by-theme",
          path: "link.item.accent.by",
          type: "radio",
          func: function() {
            render.dependents();
          }
        }, {
          element: ".control-link-item-accent-by-custom",
          path: "link.item.accent.by",
          type: "radio",
          func: function() {
            render.dependents();
          }
        }, {
          element: ".control-link-item-accent-rgb-color",
          path: "link.item.accent.rgb",
          type: "color",
          mirrorElement: [{
            element: ".control-link-item-accent-rgb-text",
            path: "link.item.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-accent-hsl-h-range",
            path: "link.item.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-h-number",
            path: "link.item.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-s-range",
            path: "link.item.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-s-number",
            path: "link.item.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-l-range",
            path: "link.item.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-l-number",
            path: "link.item.accent.hsl.l",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-r-range",
            path: "link.item.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-r-number",
            path: "link.item.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-g-range",
            path: "link.item.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-g-number",
            path: "link.item.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-b-range",
            path: "link.item.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-b-number",
            path: "link.item.accent.rgb.b",
            type: "number"
          }],
          func: function() {
            link.mod.item.accent.hsl();
          }
        }, {
          element: ".control-link-item-accent-rgb-text",
          path: "link.item.accent.rgb",
          type: "text",
          valueConvert: ["hexTextString"],
          mirrorElement: [{
            element: ".control-link-item-accent-rgb-color",
            path: "link.item.accent.rgb",
            type: "color"
          }, {
            element: ".control-link-item-accent-hsl-h-range",
            path: "link.item.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-h-number",
            path: "link.item.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-s-range",
            path: "link.item.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-s-number",
            path: "link.item.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-l-range",
            path: "link.item.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-l-number",
            path: "link.item.accent.hsl.l",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-r-range",
            path: "link.item.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-r-number",
            path: "link.item.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-g-range",
            path: "link.item.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-g-number",
            path: "link.item.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-b-range",
            path: "link.item.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-b-number",
            path: "link.item.accent.rgb.b",
            type: "number"
          }],
          func: function() {
            link.mod.item.accent.hsl();
          }
        }, {
          element: ".control-link-item-accent-hsl-h-range",
          path: "link.item.accent.hsl.h",
          type: "range",
          valueModify: {
            min: 0,
            max: 359
          },
          mirrorElement: [{
            element: ".control-link-item-accent-rgb-color",
            path: "link.item.accent.rgb",
            type: "color"
          }, {
            element: ".control-link-item-accent-rgb-text",
            path: "link.item.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-accent-hsl-h-number",
            path: "link.item.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-r-range",
            path: "link.item.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-r-number",
            path: "link.item.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-g-range",
            path: "link.item.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-g-number",
            path: "link.item.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-b-range",
            path: "link.item.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-b-number",
            path: "link.item.accent.rgb.b",
            type: "number"
          }],
          func: function() {
            link.mod.item.accent.rgb();
          }
        }, {
          element: ".control-link-item-accent-hsl-h-number",
          path: "link.item.accent.hsl.h",
          type: "number",
          valueModify: {
            min: 0,
            max: 359
          },
          mirrorElement: [{
            element: ".control-link-item-accent-rgb-color",
            path: "link.item.accent.rgb",
            type: "color"
          }, {
            element: ".control-link-item-accent-rgb-text",
            path: "link.item.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-accent-hsl-h-range",
            path: "link.item.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-r-range",
            path: "link.item.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-r-number",
            path: "link.item.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-g-range",
            path: "link.item.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-g-number",
            path: "link.item.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-b-range",
            path: "link.item.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-b-number",
            path: "link.item.accent.rgb.b",
            type: "number"
          }],
          func: function() {
            link.mod.item.accent.rgb();
          }
        }, {
          element: ".control-link-item-accent-hsl-s-range",
          path: "link.item.accent.hsl.s",
          type: "range",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-link-item-accent-rgb-color",
            path: "link.item.accent.rgb",
            type: "color"
          }, {
            element: ".control-link-item-accent-rgb-text",
            path: "link.item.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-accent-hsl-s-number",
            path: "link.item.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-r-range",
            path: "link.item.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-r-number",
            path: "link.item.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-g-range",
            path: "link.item.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-g-number",
            path: "link.item.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-b-range",
            path: "link.item.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-b-number",
            path: "link.item.accent.rgb.b",
            type: "number"
          }],
          func: function() {
            link.mod.item.accent.rgb();
          }
        }, {
          element: ".control-link-item-accent-hsl-s-number",
          path: "link.item.accent.hsl.s",
          type: "number",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-link-item-accent-rgb-color",
            path: "link.item.accent.rgb",
            type: "color"
          }, {
            element: ".control-link-item-accent-rgb-text",
            path: "link.item.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-accent-hsl-s-range",
            path: "link.item.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-r-range",
            path: "link.item.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-r-number",
            path: "link.item.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-g-range",
            path: "link.item.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-g-number",
            path: "link.item.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-b-range",
            path: "link.item.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-b-number",
            path: "link.item.accent.rgb.b",
            type: "number"
          }],
          func: function() {
            link.mod.item.accent.rgb();
          }
        }, {
          element: ".control-link-item-accent-hsl-l-range",
          path: "link.item.accent.hsl.l",
          type: "range",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-link-item-accent-rgb-color",
            path: "link.item.accent.rgb",
            type: "color"
          }, {
            element: ".control-link-item-accent-rgb-text",
            path: "link.item.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-accent-hsl-l-number",
            path: "link.item.accent.hsl.l",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-r-range",
            path: "link.item.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-r-number",
            path: "link.item.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-g-range",
            path: "link.item.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-g-number",
            path: "link.item.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-b-range",
            path: "link.item.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-b-number",
            path: "link.item.accent.rgb.b",
            type: "number"
          }],
          func: function() {
            link.mod.item.accent.rgb();
          }
        }, {
          element: ".control-link-item-accent-hsl-l-number",
          path: "link.item.accent.hsl.l",
          type: "number",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-link-item-accent-rgb-color",
            path: "link.item.accent.rgb",
            type: "color"
          }, {
            element: ".control-link-item-accent-rgb-text",
            path: "link.item.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-accent-hsl-l-range",
            path: "link.item.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-r-range",
            path: "link.item.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-r-number",
            path: "link.item.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-g-range",
            path: "link.item.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-g-number",
            path: "link.item.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-accent-rgb-b-range",
            path: "link.item.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-accent-rgb-b-number",
            path: "link.item.accent.rgb.b",
            type: "number"
          }],
          func: function() {
            link.mod.item.accent.rgb();
          }
        }, {
          element: ".control-link-item-accent-rgb-r-range",
          path: "link.item.accent.rgb.r",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-link-item-accent-rgb-color",
            path: "link.item.accent.rgb",
            type: "color"
          }, {
            element: ".control-link-item-accent-rgb-text",
            path: "link.item.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-accent-rgb-r-number",
            path: "link.item.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-h-range",
            path: "link.item.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-h-number",
            path: "link.item.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-s-range",
            path: "link.item.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-s-number",
            path: "link.item.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-l-range",
            path: "link.item.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-l-number",
            path: "link.item.accent.hsl.l",
            type: "number"
          }],
          func: function() {
            link.mod.item.accent.hsl();
          }
        }, {
          element: ".control-link-item-accent-rgb-r-number",
          path: "link.item.accent.rgb.r",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-link-item-accent-rgb-color",
            path: "link.item.accent.rgb",
            type: "color"
          }, {
            element: ".control-link-item-accent-rgb-text",
            path: "link.item.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-accent-rgb-r-range",
            path: "link.item.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-h-range",
            path: "link.item.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-h-number",
            path: "link.item.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-s-range",
            path: "link.item.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-s-number",
            path: "link.item.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-l-range",
            path: "link.item.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-l-number",
            path: "link.item.accent.hsl.l",
            type: "number"
          }],
          func: function() {
            link.mod.item.accent.hsl();
          }
        }, {
          element: ".control-link-item-accent-rgb-g-range",
          path: "link.item.accent.rgb.g",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-link-item-accent-rgb-color",
            path: "link.item.accent.rgb",
            type: "color"
          }, {
            element: ".control-link-item-accent-rgb-text",
            path: "link.item.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-accent-rgb-g-number",
            path: "link.item.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-h-range",
            path: "link.item.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-h-number",
            path: "link.item.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-s-range",
            path: "link.item.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-s-number",
            path: "link.item.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-l-range",
            path: "link.item.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-l-number",
            path: "link.item.accent.hsl.l",
            type: "number"
          }],
          func: function() {
            link.mod.item.accent.hsl();
          }
        }, {
          element: ".control-link-item-accent-rgb-g-number",
          path: "link.item.accent.rgb.g",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-link-item-accent-rgb-color",
            path: "link.item.accent.rgb",
            type: "color"
          }, {
            element: ".control-link-item-accent-rgb-text",
            path: "link.item.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-accent-rgb-g-range",
            path: "link.item.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-h-range",
            path: "link.item.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-h-number",
            path: "link.item.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-s-range",
            path: "link.item.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-s-number",
            path: "link.item.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-l-range",
            path: "link.item.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-l-number",
            path: "link.item.accent.hsl.l",
            type: "number"
          }],
          func: function() {
            link.mod.item.accent.hsl();
          }
        }, {
          element: ".control-link-item-accent-rgb-b-range",
          path: "link.item.accent.rgb.b",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-link-item-accent-rgb-color",
            path: "link.item.accent.rgb",
            type: "color"
          }, {
            element: ".control-link-item-accent-rgb-text",
            path: "link.item.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-accent-rgb-b-number",
            path: "link.item.accent.rgb.b",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-h-range",
            path: "link.item.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-h-number",
            path: "link.item.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-s-range",
            path: "link.item.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-s-number",
            path: "link.item.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-l-range",
            path: "link.item.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-l-number",
            path: "link.item.accent.hsl.l",
            type: "number"
          }],
          func: function() {
            link.mod.item.accent.hsl();
          }
        }, {
          element: ".control-link-item-accent-rgb-b-number",
          path: "link.item.accent.rgb.b",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-link-item-accent-rgb-color",
            path: "link.item.accent.rgb",
            type: "color"
          }, {
            element: ".control-link-item-accent-rgb-text",
            path: "link.item.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-link-item-accent-rgb-b-range",
            path: "link.item.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-h-range",
            path: "link.item.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-h-number",
            path: "link.item.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-s-range",
            path: "link.item.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-s-number",
            path: "link.item.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-link-item-accent-hsl-l-range",
            path: "link.item.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-link-item-accent-hsl-l-number",
            path: "link.item.accent.hsl.l",
            type: "number"
          }],
          func: function() {
            link.mod.item.accent.hsl();
          }
        }, {
          element: ".control-link-item-accent-apply",
          type: "button",
          func: function() {
            link.mod.item.accent.set();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-accent-rainbow",
          type: "button",
          func: function() {
            link.mod.item.accent.rainbow();
            link.groupAndItems();
          }
        }],
        background: [{
          element: ".control-link-item-background-show",
          type: "button",
          func: function() {
            link.mod.item.background.show();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-background-hide",
          type: "button",
          func: function() {
            link.mod.item.background.hide();
            link.groupAndItems();
          }
        }, {
          element: ".control-link-item-background-opacity-range",
          path: "link.item.background.opacity",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-link-item-background-opacity-number",
            path: "link.item.background.opacity",
            type: "number",
            valueConvert: ["float"]
          }]
        }, {
          element: ".control-link-item-background-opacity-number",
          path: "link.item.background.opacity",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-link-item-background-opacity-range",
            path: "link.item.background.opacity",
            type: "number",
            valueConvert: ["float"]
          }]
        }, {
          element: ".control-link-item-background-opacity-default",
          type: "button",
          func: function() {
            mod.default("link.item.background.opacity");
            render.update.control.menu();
          }
        }, {
          element: ".control-link-item-background-opacity-apply",
          type: "button",
          func: function() {
            link.mod.item.background.opacity();
            link.groupAndItems();
          }
        }],
        border: [{
          element: ".control-link-item-border-range",
          path: "link.item.border",
          type: "range",
          valueModify: {
            min: 0,
            max: 60
          },
          mirrorElement: [{
            element: ".control-link-item-border-number",
            path: "link.item.border",
            type: "number"
          }],
          func: function() {
            link.render.item.border();
            render.class();
          }
        }, {
          element: ".control-link-item-border-number",
          path: "link.item.border",
          type: "number",
          valueModify: {
            min: 0,
            max: 60
          },
          mirrorElement: [{
            element: ".control-link-item-border-range",
            path: "link.item.border",
            type: "range"
          }],
          func: function() {
            link.render.item.border();
            render.class();
          }
        }, {
          element: ".control-link-item-border-default",
          type: "button",
          func: function() {
            mod.default("link.item.border");
            render.class();
            link.render.item.border();
            render.update.control.menu();
          }
        }],
        orientation: [{
          element: ".control-link-orientation-top",
          path: "link.orientation",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-link-orientation-bottom",
          path: "link.orientation",
          type: "radio",
          func: function() {
            render.class();
          }
        }],
        sort: [{
          element: ".control-link-sort-letter",
          type: "button",
          func: function() {
            bookmarks.sort("letter");
            link.groupAndItems();
          }
        }, {
          element: ".control-link-sort-icon",
          type: "button",
          func: function() {
            bookmarks.sort("icon");
            link.groupAndItems();
          }
        }, {
          element: ".control-link-sort-name",
          type: "button",
          func: function() {
            bookmarks.sort("name");
            link.groupAndItems();
          }
        }]
      },
      groups: {
        area: [{
          element: ".control-group-area-justify-left",
          path: "group.area.justify",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-group-area-justify-center",
          path: "group.area.justify",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-group-area-justify-right",
          path: "group.area.justify",
          type: "radio",
          func: function() {
            render.class();
          }
        }],
        order: [{
          element: ".control-group-order-headerbody",
          path: "group.order",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-group-order-bodyheader",
          path: "group.order",
          type: "radio",
          func: function() {
            render.class();
          }
        }],
        names: [{
          element: ".control-group-name-show",
          type: "button",
          func: function() {
            link.mod.group.name.show();
            link.groupAndItems();
          }
        }, {
          element: ".control-group-name-hide",
          type: "button",
          func: function() {
            link.mod.group.name.hide();
            link.groupAndItems();
          }
        }, {
          element: ".control-group-name-size-range",
          path: "group.name.size",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-group-name-size-number",
            path: "group.name.size",
            type: "number",
            valueConvert: ["float"]
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".group-name-text"),
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".group-name-text"),
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: helper.e(".group-name-text"),
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            link.render.group.name.size();
          }
        }, {
          element: ".control-group-name-size-number",
          path: "group.name.size",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-group-name-size-range",
            path: "group.name.size",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            link.render.group.name.size();
          }
        }, {
          element: ".control-group-name-size-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".group-name-text"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("group.name.size");
            link.render.group.name.size();
            render.update.control.menu();
          }
        }],
        openall: [{
          element: ".control-group-openall-show",
          type: "button",
          func: function() {
            link.mod.group.openall.show();
            link.groupAndItems();
          }
        }, {
          element: ".control-group-openall-hide",
          type: "button",
          func: function() {
            link.mod.group.openall.hide();
            link.groupAndItems();
          }
        }, {
          element: ".control-group-openall-size-range",
          path: "group.openAll.size",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-group-openall-size-number",
            path: "group.openAll.size",
            type: "number",
            valueConvert: ["float"]
          }],
          additionalEvents: [{
            event: "input",
            func: function() {
              edge.box.open({
                element: helper.e(".group-openall"),
              });
            }
          }, {
            event: "mousedown",
            func: function() {
              edge.box.open({
                element: helper.e(".group-openall"),
              });
            }
          }, {
            event: "mouseup",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "touchend",
            func: function() {
              edge.box.close();
            }
          }, {
            event: "keydown",
            func: function() {
              if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                edge.box.open({
                  element: ".header-item-coloraccent",
                });
              };
            }
          }, {
            event: "keyup",
            func: function() {
              edge.box.close();
            }
          }],
          func: function() {
            link.render.group.openall.size();
          }
        }, {
          element: ".control-group-openall-size-number",
          path: "group.openAll.size",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 10,
            max: 500,
            step: 10
          },
          mirrorElement: [{
            element: ".control-group-openall-size-range",
            path: "group.openAll.size",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            link.render.group.openall.size();
          }
        }, {
          element: ".control-group-openall-size-default",
          type: "button",
          additionalEvents: [{
            event: "click",
            func: function() {
              edge.box.open({
                element: helper.e(".group-openall"),
                delay: 500
              });
            }
          }],
          func: function() {
            mod.default("group.openAll.size");
            link.render.group.openall.size();
            render.update.control.menu();
          }
        }, {
          element: ".control-group-openall-opacity-range",
          path: "group.openAll.opacity",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-group-openall-opacity-number",
            path: "group.openAll.opacity",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            link.render.group.openall.opacity();
            render.class();
          }
        }, {
          element: ".control-group-openall-opacity-number",
          path: "group.openAll.opacity",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-group-openall-opacity-range",
            path: "group.openAll.opacity",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            link.render.group.openall.opacity();
            render.class();
          }
        }, {
          element: ".control-group-openall-opacity-default",
          type: "button",
          func: function() {
            mod.default("group.openAll.opacity");
            link.render.group.openall.opacity();
            render.update.control.menu();
            render.class();
          }
        }],
        border: [{
          element: ".control-group-border-range",
          path: "group.border",
          type: "range",
          valueModify: {
            min: 0,
            max: 60
          },
          mirrorElement: [{
            element: ".control-group-border-number",
            path: "group.border",
            type: "number"
          }],
          func: function() {
            link.render.group.border();
            render.class();
          }
        }, {
          element: ".control-group-border-number",
          path: "group.border",
          type: "number",
          valueModify: {
            min: 0,
            max: 60
          },
          mirrorElement: [{
            element: ".control-group-border-range",
            path: "group.border",
            type: "range"
          }],
          func: function() {
            link.render.group.border();
            render.class();
          }
        }, {
          element: ".control-group-border-default",
          type: "button",
          func: function() {
            mod.default("group.border");
            link.render.group.border();
            render.class();
            render.update.control.menu();
          }
        }]
      },
      theme: {
        saved: [{
          element: ".control-theme-custom-add",
          type: "button",
          func: function() {
            menu.close();
            theme.custom.add();
          }
        }, {
          element: ".control-theme-custom-edit",
          path: "theme.custom.edit",
          type: "checkbox",
          func: function() {
            theme.render.custom.tabIndex();
            render.class();
          }
        }],
        fonts: [{
          element: ".control-theme-font-display-name",
          path: "theme.font.display.name",
          type: "text",
          func: function() {
            theme.render.font.delay.display();
          }
        }, {
          element: ".control-theme-font-display-name-default",
          type: "button",
          func: function() {
            mod.default("theme.font.display.name");
            theme.render.font.display.name();
            render.update.control.menu();
          }
        }, {
          element: ".control-theme-font-display-weight-range",
          path: "theme.font.display.weight",
          type: "range",
          valueModify: {
            min: 100,
            max: 900,
            step: 100
          },
          mirrorElement: [{
            element: ".control-theme-font-display-weight-number",
            path: "theme.font.display.weight",
            type: "number"
          }],
          func: function() {
            theme.render.font.display.weight();
          }
        }, {
          element: ".control-theme-font-display-weight-default",
          type: "button",
          func: function() {
            mod.default("theme.font.display.weight");
            theme.render.font.display.weight();
            render.update.control.menu();
          }
        }, {
          element: ".control-theme-font-display-weight-number",
          path: "theme.font.display.weight",
          type: "number",
          valueModify: {
            min: 100,
            max: 900,
            step: 100
          },
          mirrorElement: [{
            element: ".control-theme-font-display-weight-range",
            path: "theme.font.display.weight",
            type: "range"
          }],
          func: function() {
            theme.render.font.display.weight();
          }
        }, {
          element: ".control-theme-font-display-light",
          type: "button",
          func: function() {
            theme.mod.font.display.light();
            theme.render.font.display.weight();
            render.update.control.menu();
          }
        }, {
          element: ".control-theme-font-display-regular",
          type: "button",
          func: function() {
            theme.mod.font.display.regular();
            theme.render.font.display.weight();
            render.update.control.menu();
          }
        }, {
          element: ".control-theme-font-display-bold",
          type: "button",
          func: function() {
            theme.mod.font.display.bold();
            theme.render.font.display.weight();
            render.update.control.menu();
          }
        }, {
          element: ".control-theme-font-display-style-normal",
          path: "theme.font.display.style",
          type: "radio",
          func: function() {
            theme.render.font.display.style();
          }
        }, {
          element: ".control-theme-font-display-style-italic",
          path: "theme.font.display.style",
          type: "radio",
          func: function() {
            theme.render.font.display.style();
          }
        }, {
          element: ".control-theme-font-display-style-default",
          type: "button",
          func: function() {
            mod.default("theme.font.display.style");
            theme.render.font.display.style();
            render.update.control.menu();
          }
        }, {
          element: ".control-theme-font-ui-name",
          path: "theme.font.ui.name",
          type: "text",
          func: function() {
            theme.render.font.delay.ui();
          }
        }, {
          element: ".control-theme-font-ui-name-default",
          type: "button",
          func: function() {
            mod.default("theme.font.ui.name");
            theme.render.font.ui.name();
            render.update.control.menu();
          }
        }, {
          element: ".control-theme-font-ui-weight-range",
          path: "theme.font.ui.weight",
          type: "range",
          valueModify: {
            min: 100,
            max: 900,
            step: 100
          },
          mirrorElement: [{
            element: ".control-theme-font-ui-weight-number",
            path: "theme.font.ui.weight",
            type: "number"
          }],
          func: function() {
            theme.render.font.ui.weight();
          }
        }, {
          element: ".control-theme-font-ui-weight-default",
          type: "button",
          func: function() {
            mod.default("theme.font.ui.weight");
            theme.render.font.ui.weight();
            render.update.control.menu();
          }
        }, {
          element: ".control-theme-font-ui-weight-number",
          path: "theme.font.ui.weight",
          type: "number",
          valueModify: {
            min: 100,
            max: 900,
            step: 100
          },
          mirrorElement: [{
            element: ".control-theme-font-ui-weight-range",
            path: "theme.font.ui.weight",
            type: "range"
          }],
          func: function() {
            theme.render.font.ui.weight();
          }
        }, {
          element: ".control-theme-font-ui-light",
          type: "button",
          func: function() {
            theme.mod.font.ui.light();
            theme.render.font.ui.weight();
            render.update.control.menu();
          }
        }, {
          element: ".control-theme-font-ui-regular",
          type: "button",
          func: function() {
            theme.mod.font.ui.regular();
            theme.render.font.ui.weight();
            render.update.control.menu();
          }
        }, {
          element: ".control-theme-font-ui-bold",
          type: "button",
          func: function() {
            theme.mod.font.ui.bold();
            theme.render.font.ui.weight();
            render.update.control.menu();
          }
        }, {
          element: ".control-theme-font-ui-style-normal",
          path: "theme.font.ui.style",
          type: "radio",
          func: function() {
            theme.render.font.ui.style();
          }
        }, {
          element: ".control-theme-font-ui-style-italic",
          path: "theme.font.ui.style",
          type: "radio",
          func: function() {
            theme.render.font.ui.style();
          }
        }, {
          element: ".control-theme-font-ui-style-default",
          type: "button",
          func: function() {
            mod.default("theme.font.ui.style");
            theme.render.font.ui.style();
            render.update.control.menu();
          }
        }],
        style: [{
          element: ".control-theme-style-dark",
          path: "theme.style",
          type: "radio",
          func: function() {
            theme.style.dark();
          }
        }, {
          element: ".control-theme-style-light",
          path: "theme.style",
          type: "radio",
          func: function() {
            theme.style.light();
          }
        }, {
          element: ".control-theme-style-system",
          path: "theme.style",
          type: "radio",
          func: function() {
            theme.style.system();
          }
        }],
        color: [{
          element: ".control-theme-color-rgb-color",
          path: "theme.color.rgb",
          type: "color",
          mirrorElement: [{
            element: ".control-theme-color-rgb-color-quick",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-text",
            path: "theme.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-color-hsl-h-range",
            path: "theme.color.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-h-number",
            path: "theme.color.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-s-range",
            path: "theme.color.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-s-number",
            path: "theme.color.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-l-range",
            path: "theme.color.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-l-number",
            path: "theme.color.hsl.l",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-r-range",
            path: "theme.color.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-r-number",
            path: "theme.color.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-g-range",
            path: "theme.color.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-g-number",
            path: "theme.color.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-b-range",
            path: "theme.color.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-b-number",
            path: "theme.color.rgb.b",
            type: "number"
          }],
          func: function() {
            theme.mod.color.hsl();
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-rgb-text",
          path: "theme.color.rgb",
          type: "text",
          valueConvert: ["hexTextString"],
          mirrorElement: [{
            element: ".control-theme-color-rgb-color-quick",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-color",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-hsl-h-range",
            path: "theme.color.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-h-number",
            path: "theme.color.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-s-range",
            path: "theme.color.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-s-number",
            path: "theme.color.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-l-range",
            path: "theme.color.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-l-number",
            path: "theme.color.hsl.l",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-r-range",
            path: "theme.color.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-r-number",
            path: "theme.color.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-g-range",
            path: "theme.color.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-g-number",
            path: "theme.color.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-b-range",
            path: "theme.color.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-b-number",
            path: "theme.color.rgb.b",
            type: "number"
          }],
          func: function() {
            theme.mod.color.hsl();
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-rgb-default",
          type: "button",
          func: function() {
            mod.default("theme.color.rgb");
            theme.mod.color.hsl();
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
            render.update.control.header();
            render.update.control.menu();
          }
        }, {
          element: ".control-theme-color-hsl-h-range",
          path: "theme.color.hsl.h",
          type: "range",
          valueModify: {
            min: 0,
            max: 359
          },
          mirrorElement: [{
            element: ".control-theme-color-rgb-color-quick",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-color",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-text",
            path: "theme.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-color-hsl-h-number",
            path: "theme.color.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-r-range",
            path: "theme.color.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-r-number",
            path: "theme.color.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-g-range",
            path: "theme.color.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-g-number",
            path: "theme.color.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-b-range",
            path: "theme.color.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-b-number",
            path: "theme.color.rgb.b",
            type: "number"
          }],
          func: function() {
            theme.mod.color.rgb();
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-hsl-h-number",
          path: "theme.color.hsl.h",
          type: "number",
          valueModify: {
            min: 0,
            max: 359
          },
          mirrorElement: [{
            element: ".control-theme-color-rgb-color-quick",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-color",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-text",
            path: "theme.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-color-hsl-h-range",
            path: "theme.color.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-r-range",
            path: "theme.color.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-r-number",
            path: "theme.color.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-g-range",
            path: "theme.color.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-g-number",
            path: "theme.color.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-b-range",
            path: "theme.color.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-b-number",
            path: "theme.color.rgb.b",
            type: "number"
          }],
          func: function() {
            theme.mod.color.rgb();
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-hsl-s-range",
          path: "theme.color.hsl.s",
          type: "range",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-theme-color-rgb-color-quick",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-color",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-text",
            path: "theme.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-color-hsl-s-number",
            path: "theme.color.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-r-range",
            path: "theme.color.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-r-number",
            path: "theme.color.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-g-range",
            path: "theme.color.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-g-number",
            path: "theme.color.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-b-range",
            path: "theme.color.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-b-number",
            path: "theme.color.rgb.b",
            type: "number"
          }],
          func: function() {
            theme.mod.color.rgb();
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-hsl-s-number",
          path: "theme.color.hsl.s",
          type: "number",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-theme-color-rgb-color-quick",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-color",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-text",
            path: "theme.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-color-hsl-s-range",
            path: "theme.color.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-r-range",
            path: "theme.color.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-r-number",
            path: "theme.color.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-g-range",
            path: "theme.color.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-g-number",
            path: "theme.color.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-b-range",
            path: "theme.color.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-b-number",
            path: "theme.color.rgb.b",
            type: "number"
          }],
          func: function() {
            theme.mod.color.rgb();
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-hsl-l-range",
          path: "theme.color.hsl.l",
          type: "range",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-theme-color-rgb-color-quick",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-color",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-text",
            path: "theme.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-color-hsl-l-number",
            path: "theme.color.hsl.l",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-r-range",
            path: "theme.color.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-r-number",
            path: "theme.color.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-g-range",
            path: "theme.color.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-g-number",
            path: "theme.color.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-b-range",
            path: "theme.color.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-b-number",
            path: "theme.color.rgb.b",
            type: "number"
          }],
          func: function() {
            theme.mod.color.rgb();
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-hsl-l-number",
          path: "theme.color.hsl.l",
          type: "number",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-theme-color-rgb-color-quick",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-color",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-text",
            path: "theme.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-color-hsl-l-range",
            path: "theme.color.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-r-range",
            path: "theme.color.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-r-number",
            path: "theme.color.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-g-range",
            path: "theme.color.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-g-number",
            path: "theme.color.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-color-rgb-b-range",
            path: "theme.color.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-color-rgb-b-number",
            path: "theme.color.rgb.b",
            type: "number"
          }],
          func: function() {
            theme.mod.color.rgb();
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-rgb-r-range",
          path: "theme.color.rgb.r",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-theme-color-rgb-color-quick",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-color",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-text",
            path: "theme.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-color-rgb-r-number",
            path: "theme.color.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-h-range",
            path: "theme.color.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-h-number",
            path: "theme.color.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-s-range",
            path: "theme.color.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-s-number",
            path: "theme.color.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-l-range",
            path: "theme.color.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-l-number",
            path: "theme.color.hsl.l",
            type: "number"
          }],
          func: function() {
            theme.mod.color.hsl();
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-rgb-r-number",
          path: "theme.color.rgb.r",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-theme-color-rgb-color-quick",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-color",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-text",
            path: "theme.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-color-rgb-r-range",
            path: "theme.color.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-h-range",
            path: "theme.color.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-h-number",
            path: "theme.color.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-s-range",
            path: "theme.color.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-s-number",
            path: "theme.color.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-l-range",
            path: "theme.color.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-l-number",
            path: "theme.color.hsl.l",
            type: "number"
          }],
          func: function() {
            theme.mod.color.hsl();
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-rgb-g-range",
          path: "theme.color.rgb.g",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-theme-color-rgb-color-quick",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-color",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-text",
            path: "theme.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-color-rgb-g-number",
            path: "theme.color.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-h-range",
            path: "theme.color.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-h-number",
            path: "theme.color.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-s-range",
            path: "theme.color.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-s-number",
            path: "theme.color.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-l-range",
            path: "theme.color.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-l-number",
            path: "theme.color.hsl.l",
            type: "number"
          }],
          func: function() {
            theme.mod.color.hsl();
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-rgb-g-number",
          path: "theme.color.rgb.g",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-theme-color-rgb-color-quick",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-color",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-text",
            path: "theme.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-color-rgb-g-range",
            path: "theme.color.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-h-range",
            path: "theme.color.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-h-number",
            path: "theme.color.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-s-range",
            path: "theme.color.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-s-number",
            path: "theme.color.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-l-range",
            path: "theme.color.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-l-number",
            path: "theme.color.hsl.l",
            type: "number"
          }],
          func: function() {
            theme.mod.color.hsl();
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-rgb-b-range",
          path: "theme.color.rgb.b",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-theme-color-rgb-color-quick",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-color",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-text",
            path: "theme.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-color-rgb-b-number",
            path: "theme.color.rgb.b",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-h-range",
            path: "theme.color.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-h-number",
            path: "theme.color.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-s-range",
            path: "theme.color.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-s-number",
            path: "theme.color.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-l-range",
            path: "theme.color.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-l-number",
            path: "theme.color.hsl.l",
            type: "number"
          }],
          func: function() {
            theme.mod.color.hsl();
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-rgb-b-number",
          path: "theme.color.rgb.b",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-theme-color-rgb-color-quick",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-color",
            path: "theme.color.rgb",
            type: "color"
          }, {
            element: ".control-theme-color-rgb-text",
            path: "theme.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-color-rgb-b-range",
            path: "theme.color.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-h-range",
            path: "theme.color.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-h-number",
            path: "theme.color.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-s-range",
            path: "theme.color.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-s-number",
            path: "theme.color.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-color-hsl-l-range",
            path: "theme.color.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-color-hsl-l-number",
            path: "theme.color.hsl.l",
            type: "number"
          }],
          func: function() {
            theme.mod.color.hsl();
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-contrast-light-range",
          path: "theme.color.contrast.light",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 100,
            max: 800,
            step: 10
          },
          mirrorElement: [{
            element: ".control-theme-color-contrast-light-number",
            path: "theme.color.contrast.light",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-contrast-light-number",
          path: "theme.color.contrast.light",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 100,
            max: 800,
            step: 10
          },
          mirrorElement: [{
            element: ".control-theme-color-contrast-light-range",
            path: "theme.color.contrast.light",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-contrast-light-default",
          type: "button",
          func: function() {
            mod.default("theme.color.contrast.light");
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
            render.update.control.menu();
          }
        }, {
          element: ".control-theme-color-contrast-dark-range",
          path: "theme.color.contrast.dark",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 100,
            max: 800,
            step: 10
          },
          mirrorElement: [{
            element: ".control-theme-color-contrast-dark-number",
            path: "theme.color.contrast.dark",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-contrast-dark-number",
          path: "theme.color.contrast.dark",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 100,
            max: 800,
            step: 10
          },
          mirrorElement: [{
            element: ".control-theme-color-contrast-dark-range",
            path: "theme.color.contrast.dark",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
          }
        }, {
          element: ".control-theme-color-contrast-dark-default",
          type: "button",
          func: function() {
            mod.default("theme.color.contrast.dark");
            theme.mod.color.generated();
            theme.render.color.shade();
            theme.render.themeMetaTag();
            render.update.control.menu();
          }
        }],
        accent: [{
          element: ".control-theme-accent-rgb-color",
          path: "theme.accent.rgb",
          type: "color",
          mirrorElement: [{
            element: ".control-theme-accent-rgb-color-quick",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-text",
            path: "theme.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-accent-hsl-h-range",
            path: "theme.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-h-number",
            path: "theme.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-s-range",
            path: "theme.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-s-number",
            path: "theme.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-l-range",
            path: "theme.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-l-number",
            path: "theme.accent.hsl.l",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-r-range",
            path: "theme.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-r-number",
            path: "theme.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-g-range",
            path: "theme.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-g-number",
            path: "theme.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-b-range",
            path: "theme.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-b-number",
            path: "theme.accent.rgb.b",
            type: "number"
          }],
          func: function() {
            theme.mod.accent.hsl();
            theme.render.accent.color();
          }
        }, {
          element: ".control-theme-accent-rgb-text",
          path: "theme.accent.rgb",
          type: "text",
          valueConvert: ["hexTextString"],
          mirrorElement: [{
            element: ".control-theme-accent-rgb-color-quick",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-color",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-hsl-h-range",
            path: "theme.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-h-number",
            path: "theme.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-s-range",
            path: "theme.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-s-number",
            path: "theme.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-l-range",
            path: "theme.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-l-number",
            path: "theme.accent.hsl.l",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-r-range",
            path: "theme.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-r-number",
            path: "theme.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-g-range",
            path: "theme.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-g-number",
            path: "theme.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-b-range",
            path: "theme.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-b-number",
            path: "theme.accent.rgb.b",
            type: "number"
          }],
          func: function() {
            theme.mod.accent.hsl();
            theme.render.accent.color();
          }
        }, {
          element: ".control-theme-accent-rgb-default",
          type: "button",
          func: function() {
            mod.default("theme.accent.rgb");
            theme.mod.accent.hsl();
            theme.render.accent.color();
            render.update.control.header();
            render.update.control.menu();
          }
        }, {
          element: ".control-theme-accent-hsl-h-range",
          path: "theme.accent.hsl.h",
          type: "range",
          valueModify: {
            min: 0,
            max: 359
          },
          mirrorElement: [{
            element: ".control-theme-accent-rgb-color-quick",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-color",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-text",
            path: "theme.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-accent-hsl-h-number",
            path: "theme.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-r-range",
            path: "theme.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-r-number",
            path: "theme.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-g-range",
            path: "theme.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-g-number",
            path: "theme.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-b-range",
            path: "theme.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-b-number",
            path: "theme.accent.rgb.b",
            type: "number"
          }],
          func: function() {
            theme.mod.accent.rgb();
            theme.render.accent.color();
          }
        }, {
          element: ".control-theme-accent-hsl-h-number",
          path: "theme.accent.hsl.h",
          type: "number",
          valueModify: {
            min: 0,
            max: 359
          },
          mirrorElement: [{
            element: ".control-theme-accent-rgb-color-quick",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-color",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-text",
            path: "theme.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-accent-hsl-h-range",
            path: "theme.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-r-range",
            path: "theme.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-r-number",
            path: "theme.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-g-range",
            path: "theme.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-g-number",
            path: "theme.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-b-range",
            path: "theme.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-b-number",
            path: "theme.accent.rgb.b",
            type: "number"
          }],
          func: function() {
            theme.mod.accent.rgb();
            theme.render.accent.color();
          }
        }, {
          element: ".control-theme-accent-hsl-s-range",
          path: "theme.accent.hsl.s",
          type: "range",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-theme-accent-rgb-color-quick",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-color",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-text",
            path: "theme.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-accent-hsl-s-number",
            path: "theme.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-r-range",
            path: "theme.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-r-number",
            path: "theme.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-g-range",
            path: "theme.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-g-number",
            path: "theme.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-b-range",
            path: "theme.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-b-number",
            path: "theme.accent.rgb.b",
            type: "number"
          }],
          func: function() {
            theme.mod.accent.rgb();
            theme.render.accent.color();
          }
        }, {
          element: ".control-theme-accent-hsl-s-number",
          path: "theme.accent.hsl.s",
          type: "number",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-theme-accent-rgb-color-quick",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-color",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-text",
            path: "theme.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-accent-hsl-s-range",
            path: "theme.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-r-range",
            path: "theme.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-r-number",
            path: "theme.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-g-range",
            path: "theme.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-g-number",
            path: "theme.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-b-range",
            path: "theme.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-b-number",
            path: "theme.accent.rgb.b",
            type: "number"
          }],
          func: function() {
            theme.mod.accent.rgb();
            theme.render.accent.color();
          }
        }, {
          element: ".control-theme-accent-hsl-l-range",
          path: "theme.accent.hsl.l",
          type: "range",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-theme-accent-rgb-color-quick",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-color",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-text",
            path: "theme.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-accent-hsl-l-number",
            path: "theme.accent.hsl.l",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-r-range",
            path: "theme.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-r-number",
            path: "theme.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-g-range",
            path: "theme.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-g-number",
            path: "theme.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-b-range",
            path: "theme.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-b-number",
            path: "theme.accent.rgb.b",
            type: "number"
          }],
          func: function() {
            theme.mod.accent.rgb();
            theme.render.accent.color();
          }
        }, {
          element: ".control-theme-accent-hsl-l-number",
          path: "theme.accent.hsl.l",
          type: "number",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-theme-accent-rgb-color-quick",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-color",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-text",
            path: "theme.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-accent-hsl-l-range",
            path: "theme.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-r-range",
            path: "theme.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-r-number",
            path: "theme.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-g-range",
            path: "theme.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-g-number",
            path: "theme.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-accent-rgb-b-range",
            path: "theme.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-accent-rgb-b-number",
            path: "theme.accent.rgb.b",
            type: "number"
          }],
          func: function() {
            theme.mod.accent.rgb();
            theme.render.accent.color();
          }
        }, {
          element: ".control-theme-accent-rgb-r-range",
          path: "theme.accent.rgb.r",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-theme-accent-rgb-color-quick",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-color",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-text",
            path: "theme.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-accent-rgb-r-number",
            path: "theme.accent.rgb.r",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-h-range",
            path: "theme.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-h-number",
            path: "theme.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-s-range",
            path: "theme.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-s-number",
            path: "theme.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-l-range",
            path: "theme.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-l-number",
            path: "theme.accent.hsl.l",
            type: "number"
          }],
          func: function() {
            theme.mod.accent.hsl();
            theme.render.accent.color();
          }
        }, {
          element: ".control-theme-accent-rgb-r-number",
          path: "theme.accent.rgb.r",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-theme-accent-rgb-color-quick",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-color",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-text",
            path: "theme.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-accent-rgb-r-range",
            path: "theme.accent.rgb.r",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-h-range",
            path: "theme.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-h-number",
            path: "theme.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-s-range",
            path: "theme.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-s-number",
            path: "theme.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-l-range",
            path: "theme.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-l-number",
            path: "theme.accent.hsl.l",
            type: "number"
          }],
          func: function() {
            theme.mod.accent.hsl();
            theme.render.accent.color();
          }
        }, {
          element: ".control-theme-accent-rgb-g-range",
          path: "theme.accent.rgb.g",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-theme-accent-rgb-color-quick",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-color",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-text",
            path: "theme.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-accent-rgb-g-number",
            path: "theme.accent.rgb.g",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-h-range",
            path: "theme.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-h-number",
            path: "theme.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-s-range",
            path: "theme.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-s-number",
            path: "theme.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-l-range",
            path: "theme.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-l-number",
            path: "theme.accent.hsl.l",
            type: "number"
          }],
          func: function() {
            theme.mod.accent.hsl();
            theme.render.accent.color();
          }
        }, {
          element: ".control-theme-accent-rgb-g-number",
          path: "theme.accent.rgb.g",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-theme-accent-rgb-color-quick",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-color",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-text",
            path: "theme.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-accent-rgb-g-range",
            path: "theme.accent.rgb.g",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-h-range",
            path: "theme.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-h-number",
            path: "theme.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-s-range",
            path: "theme.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-s-number",
            path: "theme.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-l-range",
            path: "theme.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-l-number",
            path: "theme.accent.hsl.l",
            type: "number"
          }],
          func: function() {
            theme.mod.accent.hsl();
            theme.render.accent.color();
          }
        }, {
          element: ".control-theme-accent-rgb-b-range",
          path: "theme.accent.rgb.b",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-theme-accent-rgb-color-quick",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-color",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-text",
            path: "theme.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-accent-rgb-b-number",
            path: "theme.accent.rgb.b",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-h-range",
            path: "theme.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-h-number",
            path: "theme.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-s-range",
            path: "theme.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-s-number",
            path: "theme.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-l-range",
            path: "theme.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-l-number",
            path: "theme.accent.hsl.l",
            type: "number"
          }],
          func: function() {
            theme.mod.accent.hsl();
            theme.render.accent.color();
          }
        }, {
          element: ".control-theme-accent-rgb-b-number",
          path: "theme.accent.rgb.b",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-theme-accent-rgb-color-quick",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-color",
            path: "theme.accent.rgb",
            type: "color"
          }, {
            element: ".control-theme-accent-rgb-text",
            path: "theme.accent.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-theme-accent-rgb-b-range",
            path: "theme.accent.rgb.b",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-h-range",
            path: "theme.accent.hsl.h",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-h-number",
            path: "theme.accent.hsl.h",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-s-range",
            path: "theme.accent.hsl.s",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-s-number",
            path: "theme.accent.hsl.s",
            type: "number"
          }, {
            element: ".control-theme-accent-hsl-l-range",
            path: "theme.accent.hsl.l",
            type: "range"
          }, {
            element: ".control-theme-accent-hsl-l-number",
            path: "theme.accent.hsl.l",
            type: "number"
          }],
          func: function() {
            theme.mod.accent.hsl();
            theme.render.accent.color();
          }
        }, {
          element: ".control-theme-accent-random-active",
          path: "theme.accent.random.active",
          type: "checkbox",
          func: function() {
            render.dependents();
            theme.render.accent.color();
          }
        }, {
          element: ".control-theme-accent-random-style-any",
          path: "theme.accent.random.style",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-theme-accent-random-style-light",
          path: "theme.accent.random.style",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-theme-accent-random-style-dark",
          path: "theme.accent.random.style",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-theme-accent-random-style-pastel",
          path: "theme.accent.random.style",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-theme-accent-random-style-saturated",
          path: "theme.accent.random.style",
          type: "radio",
          func: function() {
            render.class();
          }
        }, {
          element: ".control-theme-accent-randomise",
          type: "button",
          func: function() {
            theme.accent.random();
            render.update.control.header();
            render.update.control.menu();
          }
        }, {
          element: ".control-theme-accent-cycle-active",
          path: "theme.accent.cycle.active",
          type: "checkbox",
          func: function() {
            render.class();
            render.dependents();
            theme.bind.accent.cycle.toggle();
          }
        }, {
          element: ".control-theme-accent-cycle-speed-range",
          path: "theme.accent.cycle.speed",
          type: "range",
          valueModify: {
            min: 100,
            max: 1000,
            step: 10
          },
          mirrorElement: [{
            element: ".control-theme-accent-cycle-speed-number",
            path: "theme.accent.cycle.speed",
            type: "number"
          }],
          func: function() {
            theme.bind.accent.cycle.remove();
            theme.bind.accent.cycle.add();
          }
        }, {
          element: ".control-theme-accent-cycle-speed-number",
          path: "theme.accent.cycle.speed",
          type: "number",
          valueModify: {
            min: 100,
            max: 1000,
            step: 10
          },
          mirrorElement: [{
            element: ".control-theme-accent-cycle-speed-range",
            path: "theme.accent.cycle.speed",
            type: "number"
          }],
          func: function() {
            theme.bind.accent.cycle.remove();
            theme.bind.accent.cycle.add();
          }
        }, {
          element: ".control-theme-accent-cycle-speed-default",
          type: "button",
          func: function() {
            mod.default("theme.accent.cycle.speed");
            theme.bind.accent.cycle.remove();
            theme.bind.accent.cycle.add();
            render.update.control.menu();
          }
        }, {
          element: ".control-theme-accent-cycle-step-range",
          path: "theme.accent.cycle.step",
          type: "range",
          valueModify: {
            min: 1,
            max: 100
          },
          mirrorElement: [{
            element: ".control-theme-accent-cycle-step-number",
            path: "theme.accent.cycle.step",
            type: "number"
          }],
          func: function() {
            theme.bind.accent.cycle.remove();
            theme.bind.accent.cycle.add();
          }
        }, {
          element: ".control-theme-accent-cycle-step-number",
          path: "theme.accent.cycle.step",
          type: "number",
          valueModify: {
            min: 1,
            max: 100
          },
          mirrorElement: [{
            element: ".control-theme-accent-cycle-step-range",
            path: "theme.accent.cycle.step",
            type: "number"
          }],
          func: function() {
            theme.bind.accent.cycle.remove();
            theme.bind.accent.cycle.add();
          }
        }, {
          element: ".control-theme-accent-cycle-step-default",
          type: "button",
          func: function() {
            mod.default("theme.accent.cycle.step");
            theme.bind.accent.cycle.remove();
            theme.bind.accent.cycle.add();
            render.update.control.menu();
          }
        }],
        radius: [{
          element: ".control-theme-radius-range",
          path: "theme.radius",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 400,
            step: 5
          },
          mirrorElement: [{
            element: ".control-theme-radius-number",
            path: "theme.radius",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            theme.render.radius();
            render.class();
          }
        }, {
          element: ".control-theme-radius-number",
          path: "theme.radius",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 400,
            step: 5
          },
          mirrorElement: [{
            element: ".control-theme-radius-range",
            path: "theme.radius",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            theme.render.radius();
            render.class();
          }
        }, {
          element: ".control-theme-radius-default",
          type: "button",
          func: function() {
            mod.default("theme.radius");
            theme.render.radius();
            render.update.control.menu();
          }
        }],
        shadow: [{
          element: ".control-theme-shadow-range",
          path: "theme.shadow",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 300,
            step: 25
          },
          mirrorElement: [{
            element: ".control-theme-shadow-number",
            path: "theme.shadow",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            theme.render.shadow();
          }
        }, {
          element: ".control-theme-shadow-number",
          path: "theme.shadow",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 300,
            step: 25
          },
          mirrorElement: [{
            element: ".control-theme-shadow-range",
            path: "theme.shadow",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            theme.render.shadow();
          }
        }, {
          element: ".control-theme-shadow-default",
          type: "button",
          func: function() {
            mod.default("theme.shadow");
            theme.render.shadow();
            render.update.control.menu();
          }
        }],
        shade: [{
          element: ".control-theme-shade-opacity-range",
          path: "theme.shade.opacity",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-theme-shade-opacity-number",
            path: "theme.shade.opacity",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            theme.render.shade.opacity();
            render.class();
          }
        }, {
          element: ".control-theme-shade-opacity-number",
          path: "theme.shade.opacity",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-theme-shade-opacity-range",
            path: "theme.shade.opacity",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            theme.render.shade.opacity();
            render.class();
          }
        }, {
          element: ".control-theme-shade-opacity-default",
          type: "button",
          func: function() {
            mod.default("theme.shade.opacity");
            theme.render.shade.opacity();
            render.update.control.menu();
          }
        }]
      },
      data: {
        restore: [{
          element: ".control-data-import",
          type: "file",
          func: function() {
            data.mod.import();
          }
        }],
        backup: [{
          element: ".control-data-export",
          type: "a",
          func: function() {
            data.mod.export();
          }
        }],
        clear: [{
          element: ".control-data-clear",
          type: "a",
          func: function() {
            menu.close();
            data.render.clear();
          }
        }]
      },
      background: {
        color: [{
          element: ".control-background-color-by-theme",
          path: "background.color.by",
          type: "radio",
          func: function() {
            render.dependents();
            render.class();
          }
        }, {
          element: ".control-background-color-by-custom",
          path: "background.color.by",
          type: "radio",
          func: function() {
            render.dependents();
            render.class();
          }
        }, {
          element: ".control-background-color-rgb-color",
          path: "background.color.rgb",
          type: "color",
          mirrorElement: [{
            element: ".control-background-color-rgb-text",
            path: "background.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-background-color-hsl-h-range",
            path: "background.color.hsl.h",
            type: "range"
          }, {
            element: ".control-background-color-hsl-h-number",
            path: "background.color.hsl.h",
            type: "number"
          }, {
            element: ".control-background-color-hsl-s-range",
            path: "background.color.hsl.s",
            type: "range"
          }, {
            element: ".control-background-color-hsl-s-number",
            path: "background.color.hsl.s",
            type: "number"
          }, {
            element: ".control-background-color-hsl-l-range",
            path: "background.color.hsl.l",
            type: "range"
          }, {
            element: ".control-background-color-hsl-l-number",
            path: "background.color.hsl.l",
            type: "number"
          }, {
            element: ".control-background-color-rgb-r-range",
            path: "background.color.rgb.r",
            type: "range"
          }, {
            element: ".control-background-color-rgb-r-number",
            path: "background.color.rgb.r",
            type: "number"
          }, {
            element: ".control-background-color-rgb-g-range",
            path: "background.color.rgb.g",
            type: "range"
          }, {
            element: ".control-background-color-rgb-g-number",
            path: "background.color.rgb.g",
            type: "number"
          }, {
            element: ".control-background-color-rgb-b-range",
            path: "background.color.rgb.b",
            type: "range"
          }, {
            element: ".control-background-color-rgb-b-number",
            path: "background.color.rgb.b",
            type: "number"
          }],
          func: function() {
            background.mod.color.hsl();
            background.render.color.custom();
          }
        }, {
          element: ".control-background-color-rgb-text",
          path: "background.color.rgb",
          type: "text",
          valueConvert: ["hexTextString"],
          mirrorElement: [{
            element: ".control-background-color-rgb-color",
            path: "background.color.rgb",
            type: "color"
          }, {
            element: ".control-background-color-hsl-h-range",
            path: "background.color.hsl.h",
            type: "range"
          }, {
            element: ".control-background-color-hsl-h-number",
            path: "background.color.hsl.h",
            type: "number"
          }, {
            element: ".control-background-color-hsl-s-range",
            path: "background.color.hsl.s",
            type: "range"
          }, {
            element: ".control-background-color-hsl-s-number",
            path: "background.color.hsl.s",
            type: "number"
          }, {
            element: ".control-background-color-hsl-l-range",
            path: "background.color.hsl.l",
            type: "range"
          }, {
            element: ".control-background-color-hsl-l-number",
            path: "background.color.hsl.l",
            type: "number"
          }, {
            element: ".control-background-color-rgb-r-range",
            path: "background.color.rgb.r",
            type: "range"
          }, {
            element: ".control-background-color-rgb-r-number",
            path: "background.color.rgb.r",
            type: "number"
          }, {
            element: ".control-background-color-rgb-g-range",
            path: "background.color.rgb.g",
            type: "range"
          }, {
            element: ".control-background-color-rgb-g-number",
            path: "background.color.rgb.g",
            type: "number"
          }, {
            element: ".control-background-color-rgb-b-range",
            path: "background.color.rgb.b",
            type: "range"
          }, {
            element: ".control-background-color-rgb-b-number",
            path: "background.color.rgb.b",
            type: "number"
          }],
          func: function() {
            background.mod.color.hsl();
            background.render.color.custom();
          }
        }, {
          element: ".control-background-color-hsl-h-range",
          path: "background.color.hsl.h",
          type: "range",
          valueModify: {
            min: 0,
            max: 359
          },
          mirrorElement: [{
            element: ".control-background-color-rgb-color",
            path: "background.color.rgb",
            type: "color"
          }, {
            element: ".control-background-color-rgb-text",
            path: "background.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-background-color-hsl-h-number",
            path: "background.color.hsl.h",
            type: "number"
          }, {
            element: ".control-background-color-rgb-r-range",
            path: "background.color.rgb.r",
            type: "range"
          }, {
            element: ".control-background-color-rgb-r-number",
            path: "background.color.rgb.r",
            type: "number"
          }, {
            element: ".control-background-color-rgb-g-range",
            path: "background.color.rgb.g",
            type: "range"
          }, {
            element: ".control-background-color-rgb-g-number",
            path: "background.color.rgb.g",
            type: "number"
          }, {
            element: ".control-background-color-rgb-b-range",
            path: "background.color.rgb.b",
            type: "range"
          }, {
            element: ".control-background-color-rgb-b-number",
            path: "background.color.rgb.b",
            type: "number"
          }],
          func: function() {
            background.mod.color.rgb();
            background.render.color.custom();
          }
        }, {
          element: ".control-background-color-hsl-h-number",
          path: "background.color.hsl.h",
          type: "number",
          valueModify: {
            min: 0,
            max: 359
          },
          mirrorElement: [{
            element: ".control-background-color-rgb-color",
            path: "background.color.rgb",
            type: "color"
          }, {
            element: ".control-background-color-rgb-text",
            path: "background.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-background-color-hsl-h-range",
            path: "background.color.hsl.h",
            type: "range"
          }, {
            element: ".control-background-color-rgb-r-range",
            path: "background.color.rgb.r",
            type: "range"
          }, {
            element: ".control-background-color-rgb-r-number",
            path: "background.color.rgb.r",
            type: "number"
          }, {
            element: ".control-background-color-rgb-g-range",
            path: "background.color.rgb.g",
            type: "range"
          }, {
            element: ".control-background-color-rgb-g-number",
            path: "background.color.rgb.g",
            type: "number"
          }, {
            element: ".control-background-color-rgb-b-range",
            path: "background.color.rgb.b",
            type: "range"
          }, {
            element: ".control-background-color-rgb-b-number",
            path: "background.color.rgb.b",
            type: "number"
          }],
          func: function() {
            background.mod.color.rgb();
            background.render.color.custom();
          }
        }, {
          element: ".control-background-color-hsl-s-range",
          path: "background.color.hsl.s",
          type: "range",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-color-rgb-color",
            path: "background.color.rgb",
            type: "color"
          }, {
            element: ".control-background-color-rgb-text",
            path: "background.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-background-color-hsl-s-number",
            path: "background.color.hsl.s",
            type: "number"
          }, {
            element: ".control-background-color-rgb-r-range",
            path: "background.color.rgb.r",
            type: "range"
          }, {
            element: ".control-background-color-rgb-r-number",
            path: "background.color.rgb.r",
            type: "number"
          }, {
            element: ".control-background-color-rgb-g-range",
            path: "background.color.rgb.g",
            type: "range"
          }, {
            element: ".control-background-color-rgb-g-number",
            path: "background.color.rgb.g",
            type: "number"
          }, {
            element: ".control-background-color-rgb-b-range",
            path: "background.color.rgb.b",
            type: "range"
          }, {
            element: ".control-background-color-rgb-b-number",
            path: "background.color.rgb.b",
            type: "number"
          }],
          func: function() {
            background.mod.color.rgb();
            background.render.color.custom();
          }
        }, {
          element: ".control-background-color-hsl-s-number",
          path: "background.color.hsl.s",
          type: "number",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-color-rgb-color",
            path: "background.color.rgb",
            type: "color"
          }, {
            element: ".control-background-color-rgb-text",
            path: "background.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-background-color-hsl-s-range",
            path: "background.color.hsl.s",
            type: "range"
          }, {
            element: ".control-background-color-rgb-r-range",
            path: "background.color.rgb.r",
            type: "range"
          }, {
            element: ".control-background-color-rgb-r-number",
            path: "background.color.rgb.r",
            type: "number"
          }, {
            element: ".control-background-color-rgb-g-range",
            path: "background.color.rgb.g",
            type: "range"
          }, {
            element: ".control-background-color-rgb-g-number",
            path: "background.color.rgb.g",
            type: "number"
          }, {
            element: ".control-background-color-rgb-b-range",
            path: "background.color.rgb.b",
            type: "range"
          }, {
            element: ".control-background-color-rgb-b-number",
            path: "background.color.rgb.b",
            type: "number"
          }],
          func: function() {
            background.mod.color.rgb();
            background.render.color.custom();
          }
        }, {
          element: ".control-background-color-hsl-l-range",
          path: "background.color.hsl.l",
          type: "range",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-color-rgb-color",
            path: "background.color.rgb",
            type: "color"
          }, {
            element: ".control-background-color-rgb-text",
            path: "background.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-background-color-hsl-l-number",
            path: "background.color.hsl.l",
            type: "number"
          }, {
            element: ".control-background-color-rgb-r-range",
            path: "background.color.rgb.r",
            type: "range"
          }, {
            element: ".control-background-color-rgb-r-number",
            path: "background.color.rgb.r",
            type: "number"
          }, {
            element: ".control-background-color-rgb-g-range",
            path: "background.color.rgb.g",
            type: "range"
          }, {
            element: ".control-background-color-rgb-g-number",
            path: "background.color.rgb.g",
            type: "number"
          }, {
            element: ".control-background-color-rgb-b-range",
            path: "background.color.rgb.b",
            type: "range"
          }, {
            element: ".control-background-color-rgb-b-number",
            path: "background.color.rgb.b",
            type: "number"
          }],
          func: function() {
            background.mod.color.rgb();
            background.render.color.custom();
          }
        }, {
          element: ".control-background-color-hsl-l-number",
          path: "background.color.hsl.l",
          type: "number",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-color-rgb-color",
            path: "background.color.rgb",
            type: "color"
          }, {
            element: ".control-background-color-rgb-text",
            path: "background.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-background-color-hsl-l-range",
            path: "background.color.hsl.l",
            type: "range"
          }, {
            element: ".control-background-color-rgb-r-range",
            path: "background.color.rgb.r",
            type: "range"
          }, {
            element: ".control-background-color-rgb-r-number",
            path: "background.color.rgb.r",
            type: "number"
          }, {
            element: ".control-background-color-rgb-g-range",
            path: "background.color.rgb.g",
            type: "range"
          }, {
            element: ".control-background-color-rgb-g-number",
            path: "background.color.rgb.g",
            type: "number"
          }, {
            element: ".control-background-color-rgb-b-range",
            path: "background.color.rgb.b",
            type: "range"
          }, {
            element: ".control-background-color-rgb-b-number",
            path: "background.color.rgb.b",
            type: "number"
          }],
          func: function() {
            background.mod.color.rgb();
            background.render.color.custom();
          }
        }, {
          element: ".control-background-color-rgb-r-range",
          path: "background.color.rgb.r",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-background-color-rgb-color",
            path: "background.color.rgb",
            type: "color"
          }, {
            element: ".control-background-color-rgb-text",
            path: "background.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-background-color-rgb-r-number",
            path: "background.color.rgb.r",
            type: "number"
          }, {
            element: ".control-background-color-hsl-h-range",
            path: "background.color.hsl.h",
            type: "range"
          }, {
            element: ".control-background-color-hsl-h-number",
            path: "background.color.hsl.h",
            type: "number"
          }, {
            element: ".control-background-color-hsl-s-range",
            path: "background.color.hsl.s",
            type: "range"
          }, {
            element: ".control-background-color-hsl-s-number",
            path: "background.color.hsl.s",
            type: "number"
          }, {
            element: ".control-background-color-hsl-l-range",
            path: "background.color.hsl.l",
            type: "range"
          }, {
            element: ".control-background-color-hsl-l-number",
            path: "background.color.hsl.l",
            type: "number"
          }],
          func: function() {
            background.mod.color.hsl();
            background.render.color.custom();
          }
        }, {
          element: ".control-background-color-rgb-r-number",
          path: "background.color.rgb.r",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-background-color-rgb-color",
            path: "background.color.rgb",
            type: "color"
          }, {
            element: ".control-background-color-rgb-text",
            path: "background.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-background-color-rgb-r-range",
            path: "background.color.rgb.r",
            type: "range"
          }, {
            element: ".control-background-color-hsl-h-range",
            path: "background.color.hsl.h",
            type: "range"
          }, {
            element: ".control-background-color-hsl-h-number",
            path: "background.color.hsl.h",
            type: "number"
          }, {
            element: ".control-background-color-hsl-s-range",
            path: "background.color.hsl.s",
            type: "range"
          }, {
            element: ".control-background-color-hsl-s-number",
            path: "background.color.hsl.s",
            type: "number"
          }, {
            element: ".control-background-color-hsl-l-range",
            path: "background.color.hsl.l",
            type: "range"
          }, {
            element: ".control-background-color-hsl-l-number",
            path: "background.color.hsl.l",
            type: "number"
          }],
          func: function() {
            background.mod.color.hsl();
            background.render.color.custom();
          }
        }, {
          element: ".control-background-color-rgb-g-range",
          path: "background.color.rgb.g",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-background-color-rgb-color",
            path: "background.color.rgb",
            type: "color"
          }, {
            element: ".control-background-color-rgb-text",
            path: "background.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-background-color-rgb-g-number",
            path: "background.color.rgb.g",
            type: "number"
          }, {
            element: ".control-background-color-hsl-h-range",
            path: "background.color.hsl.h",
            type: "range"
          }, {
            element: ".control-background-color-hsl-h-number",
            path: "background.color.hsl.h",
            type: "number"
          }, {
            element: ".control-background-color-hsl-s-range",
            path: "background.color.hsl.s",
            type: "range"
          }, {
            element: ".control-background-color-hsl-s-number",
            path: "background.color.hsl.s",
            type: "number"
          }, {
            element: ".control-background-color-hsl-l-range",
            path: "background.color.hsl.l",
            type: "range"
          }, {
            element: ".control-background-color-hsl-l-number",
            path: "background.color.hsl.l",
            type: "number"
          }],
          func: function() {
            background.mod.color.hsl();
            background.render.color.custom();
          }
        }, {
          element: ".control-background-color-rgb-g-number",
          path: "background.color.rgb.g",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-background-color-rgb-color",
            path: "background.color.rgb",
            type: "color"
          }, {
            element: ".control-background-color-rgb-text",
            path: "background.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-background-color-rgb-g-range",
            path: "background.color.rgb.g",
            type: "range"
          }, {
            element: ".control-background-color-hsl-h-range",
            path: "background.color.hsl.h",
            type: "range"
          }, {
            element: ".control-background-color-hsl-h-number",
            path: "background.color.hsl.h",
            type: "number"
          }, {
            element: ".control-background-color-hsl-s-range",
            path: "background.color.hsl.s",
            type: "range"
          }, {
            element: ".control-background-color-hsl-s-number",
            path: "background.color.hsl.s",
            type: "number"
          }, {
            element: ".control-background-color-hsl-l-range",
            path: "background.color.hsl.l",
            type: "range"
          }, {
            element: ".control-background-color-hsl-l-number",
            path: "background.color.hsl.l",
            type: "number"
          }],
          func: function() {
            background.mod.color.hsl();
            background.render.color.custom();
          }
        }, {
          element: ".control-background-color-rgb-b-range",
          path: "background.color.rgb.b",
          type: "range",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-background-color-rgb-color",
            path: "background.color.rgb",
            type: "color"
          }, {
            element: ".control-background-color-rgb-text",
            path: "background.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-background-color-rgb-b-number",
            path: "background.color.rgb.b",
            type: "number"
          }, {
            element: ".control-background-color-hsl-h-range",
            path: "background.color.hsl.h",
            type: "range"
          }, {
            element: ".control-background-color-hsl-h-number",
            path: "background.color.hsl.h",
            type: "number"
          }, {
            element: ".control-background-color-hsl-s-range",
            path: "background.color.hsl.s",
            type: "range"
          }, {
            element: ".control-background-color-hsl-s-number",
            path: "background.color.hsl.s",
            type: "number"
          }, {
            element: ".control-background-color-hsl-l-range",
            path: "background.color.hsl.l",
            type: "range"
          }, {
            element: ".control-background-color-hsl-l-number",
            path: "background.color.hsl.l",
            type: "number"
          }],
          func: function() {
            background.mod.color.hsl();
            background.render.color.custom();
          }
        }, {
          element: ".control-background-color-rgb-b-number",
          path: "background.color.rgb.b",
          type: "number",
          valueModify: {
            min: 0,
            max: 255
          },
          mirrorElement: [{
            element: ".control-background-color-rgb-color",
            path: "background.color.rgb",
            type: "color"
          }, {
            element: ".control-background-color-rgb-text",
            path: "background.color.rgb",
            type: "text",
            valueConvert: ["hexTextString"]
          }, {
            element: ".control-background-color-rgb-b-range",
            path: "background.color.rgb.b",
            type: "range"
          }, {
            element: ".control-background-color-hsl-h-range",
            path: "background.color.hsl.h",
            type: "range"
          }, {
            element: ".control-background-color-hsl-h-number",
            path: "background.color.hsl.h",
            type: "number"
          }, {
            element: ".control-background-color-hsl-s-range",
            path: "background.color.hsl.s",
            type: "range"
          }, {
            element: ".control-background-color-hsl-s-number",
            path: "background.color.hsl.s",
            type: "number"
          }, {
            element: ".control-background-color-hsl-l-range",
            path: "background.color.hsl.l",
            type: "range"
          }, {
            element: ".control-background-color-hsl-l-number",
            path: "background.color.hsl.l",
            type: "number"
          }],
          func: function() {
            background.mod.color.hsl();
            background.render.color.custom();
          }
        }],
        visual: [{
          element: ".control-background-visual-show",
          path: "background.visual.show",
          type: "checkbox",
          func: function() {
            render.class();
            render.dependents();
            background.render.visual.video.set();
            background.render.visual.image.set();
          }
        }, {
          element: ".control-background-visual-type-video",
          path: "background.visual.type",
          type: "radio",
          func: function() {
            render.dependents();
            background.render.visual.video.set();
            background.render.visual.image.clear();
          }
        }, {
          element: ".control-background-visual-type-image",
          path: "background.visual.type",
          type: "radio",
          func: function() {
            render.dependents();
            background.render.visual.video.clear();
            background.render.visual.image.set();
          }
        }, {
          element: ".control-background-visual-image-type-file",
          path: "background.visual.image.type",
          type: "radio",
          func: function() {
            render.dependents();
            background.render.visual.image.set();
          }
        }, {
          element: ".control-background-visual-image-type-url",
          path: "background.visual.image.type",
          type: "radio",
          func: function() {
            render.dependents();
            background.render.visual.image.set();
          }
        }, {
          element: ".control-background-visual-image-file",
          type: "file",
          func: function() {
            background.mod.import();
            background.render.visual.image.set();
          }
        }, {
          element: ".control-background-visual-image-clear",
          type: "button",
          func: function() {
            background.mod.visual.image.clear();
            background.render.visual.image.clear();
            background.render.feedback.clear({
              animate: true
            });
            background.render.feedback.empty();
          }
        }, {
          element: ".control-background-visual-image-url",
          path: "background.visual.image.url",
          type: "textarea",
          func: function() {
            background.render.visual.image.clear();
            background.render.visual.image.set();
          }
        }, {
          element: ".control-background-visual-video-url",
          path: "background.visual.video.url",
          type: "textarea",
          func: function() {
            background.render.visual.video.clear();
            background.render.visual.video.set();
          }
        }, {
          element: ".control-background-visual-opacity-range",
          path: "background.visual.opacity",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-visual-opacity-number",
            path: "background.visual.opacity",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            background.render.visual.opacity();
          }
        }, {
          element: ".control-background-visual-opacity-number",
          path: "background.visual.opacity",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-visual-opacity-range",
            path: "background.visual.opacity",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            background.render.visual.opacity();
          }
        }, {
          element: ".control-background-visual-opacity-default",
          type: "button",
          func: function() {
            mod.default("background.visual.opacity");
            background.render.visual.opacity();
            render.update.control.menu();
          }
        }, {
          element: ".control-background-visual-grayscale-range",
          path: "background.visual.grayscale",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-visual-grayscale-number",
            path: "background.visual.grayscale",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            background.render.visual.grayscale();
          }
        }, {
          element: ".control-background-visual-grayscale-number",
          path: "background.visual.grayscale",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-visual-grayscale-range",
            path: "background.visual.grayscale",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            background.render.visual.grayscale();
          }
        }, {
          element: ".control-background-visual-grayscale-default",
          type: "button",
          func: function() {
            mod.default("background.visual.grayscale");
            background.render.visual.grayscale();
            render.update.control.menu();
          }
        }, {
          element: ".control-background-visual-blur-range",
          path: "background.visual.blur",
          type: "range",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-visual-blur-number",
            path: "background.visual.blur",
            type: "number"
          }],
          func: function() {
            background.render.visual.blur();
          }
        }, {
          element: ".control-background-visual-blur-number",
          path: "background.visual.blur",
          type: "number",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-visual-blur-range",
            path: "background.visual.blur",
            type: "range"
          }],
          func: function() {
            background.render.visual.blur();
          }
        }, {
          element: ".control-background-visual-blur-default",
          type: "button",
          func: function() {
            mod.default("background.visual.blur");
            background.render.visual.blur();
            render.update.control.menu();
          }
        }, {
          element: ".control-background-visual-accent-range",
          path: "background.visual.accent",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-visual-accent-number",
            path: "background.visual.accent",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            background.render.visual.accent();
          }
        }, {
          element: ".control-background-visual-accent-number",
          path: "background.visual.accent",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-visual-accent-range",
            path: "background.visual.accent",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            background.render.visual.accent();
          }
        }, {
          element: ".control-background-visual-accent-default",
          type: "button",
          func: function() {
            mod.default("background.visual.accent");
            background.render.visual.accent();
            render.update.control.menu();
          }
        }, {
          element: ".control-background-visual-scale-range",
          path: "background.visual.scale",
          type: "range",
          valueConvert: ["float"],
          valueModify: {
            min: 100,
            max: 1000
          },
          mirrorElement: [{
            element: ".control-background-visual-scale-number",
            path: "background.visual.scale",
            type: "number",
            valueConvert: ["float"]
          }],
          func: function() {
            background.render.visual.scale();
          }
        }, {
          element: ".control-background-visual-scale-number",
          path: "background.visual.scale",
          type: "number",
          valueConvert: ["float"],
          valueModify: {
            min: 100,
            max: 1000
          },
          mirrorElement: [{
            element: ".control-background-visual-scale-range",
            path: "background.visual.scale",
            type: "range",
            valueConvert: ["float"]
          }],
          func: function() {
            background.render.visual.scale();
          }
        }, {
          element: ".control-background-visual-scale-default",
          type: "button",
          func: function() {
            mod.default("background.visual.scale");
            background.render.visual.scale();
            render.update.control.menu();
          }
        }, {
          element: ".control-background-vignette-opacity-range",
          path: "background.visual.vignette.opacity",
          type: "range",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-vignette-opacity-number",
            path: "background.visual.vignette.opacity",
            type: "number"
          }],
          func: function() {
            background.render.visual.vignette.opacity();
            background.render.visual.vignette.start();
            background.render.visual.vignette.end();
          }
        }, {
          element: ".control-background-vignette-opacity-number",
          path: "background.visual.vignette.opacity",
          type: "number",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-vignette-opacity-range",
            path: "background.visual.vignette.opacity",
            type: "range"
          }],
          func: function() {
            background.render.visual.vignette.opacity();
            background.render.visual.vignette.start();
            background.render.visual.vignette.end();
          }
        }, {
          element: ".control-background-vignette-opacity-default",
          type: "button",
          func: function() {
            mod.default("background.visual.vignette.opacity");
            background.render.visual.vignette.opacity();
            background.render.visual.vignette.start();
            background.render.visual.vignette.end();
            render.update.control.menu();
          }
        }, {
          element: ".control-background-vignette-start-range",
          path: "background.visual.vignette.start",
          type: "range",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-vignette-start-number",
            path: "background.visual.vignette.start",
            type: "number"
          }],
          limitElement: [{
            element: ".control-background-vignette-end-range",
            path: "background.visual.vignette.end",
            type: "range",
            limit: "max"
          }, {
            element: ".control-background-vignette-end-number",
            path: "background.visual.vignette.end",
            type: "number",
            limit: "max"
          }],
          func: function() {
            background.render.visual.vignette.opacity();
            background.render.visual.vignette.start();
            background.render.visual.vignette.end();
          }
        }, {
          element: ".control-background-vignette-start-number",
          path: "background.visual.vignette.start",
          type: "number",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-vignette-start-range",
            path: "background.visual.vignette.start",
            type: "range"
          }],
          func: function() {
            background.render.visual.vignette.opacity();
            background.render.visual.vignette.start();
            background.render.visual.vignette.end();
          }
        }, {
          element: ".control-background-vignette-start-default",
          type: "button",
          func: function() {
            mod.default("background.visual.vignette.start");
            background.render.visual.vignette.opacity();
            background.render.visual.vignette.start();
            background.render.visual.vignette.end();
            render.update.control.menu();
          }
        }, {
          element: ".control-background-vignette-end-range",
          path: "background.visual.vignette.end",
          type: "range",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-vignette-end-number",
            path: "background.visual.vignette.end",
            type: "number"
          }],
          limitElement: [{
            element: ".control-background-vignette-start-range",
            path: "background.visual.vignette.start",
            type: "range",
            limit: "min"
          }, {
            element: ".control-background-vignette-start-number",
            path: "background.visual.vignette.start",
            type: "number",
            limit: "min"
          }],
          func: function() {
            background.render.visual.vignette.opacity();
            background.render.visual.vignette.start();
            background.render.visual.vignette.end();
          }
        }, {
          element: ".control-background-vignette-end-number",
          path: "background.visual.vignette.end",
          type: "number",
          valueModify: {
            min: 0,
            max: 100
          },
          mirrorElement: [{
            element: ".control-background-vignette-end-range",
            path: "background.visual.vignette.end",
            type: "range"
          }],
          func: function() {
            background.render.visual.vignette.opacity();
            background.render.visual.vignette.start();
            background.render.visual.vignette.end();
          }
        }, {
          element: ".control-background-vignette-end-default",
          type: "button",
          func: function() {
            mod.default("background.visual.vignette.end");
            background.render.visual.vignette.opacity();
            background.render.visual.vignette.start();
            background.render.visual.vignette.end();
            render.update.control.menu();
          }
        }]
      }
    },
    all: function() {
      var allMenuControls = [];
      for (key1 in mod.menu.controls) {
        for (key2 in mod.menu.controls[key1]) {
          mod.menu.controls[key1][key2].forEach(function(arrayItem, index) {
            allMenuControls.push(arrayItem);
          });
        };
      };
      return allMenuControls;
    }
  };

  mod.default = function(path) {
    helper.setObject({
      object: state.get.current(),
      path: path,
      newValue: helper.getObject({
        object: state.get.default(),
        path: path
      })
    });
  };

  mod.match = function(origin, target) {
    helper.setObject({
      object: state.get.current(),
      path: origin,
      newValue: helper.getObject({
        object: state.get.current(),
        path: target
      })
    });
  };

  var bind = {};

  bind.control = {
    supportedElement: ["checkbox", "radio", "text", "number", "range", "color", "textarea"],
    timer: {
      inputUpdate: null
    },
    value: {
      set: function(object) {
        if (object.path) {
          var newValue = bind.control.value.get[object.type](object);
          if (object.valueModify) {
            for (var key in object.valueModify) {
              newValue = bind.control.value.modify[key](newValue, object);
            };
          };
          if (object.valueConvert) {
            object.valueConvert.forEach(function(arrayItem, index) {
              newValue = bind.control.value.convert[arrayItem](newValue, object);
            });
          };
          helper.setObject({
            object: state.get.current(),
            path: object.path,
            newValue: newValue
          });
          if (mod.debug.active) {
            console.log("state set", object.path, helper.getObject({
              object: state.get.current(),
              path: object.path
            }));
          };
        };
      },
      get: {
        checkbox: function(object) {
          return helper.e(object.element).checked;
        },
        radio: function(object) {
          return helper.e(object.element).value;
        },
        text: function(object) {
          return helper.e(object.element).value;
        },
        textarea: function(object) {
          return helper.e(object.element).value;
        },
        number: function(object) {
          return parseInt(helper.e(object.element).value, 10);
        },
        range: function(object) {
          return parseInt(helper.e(object.element).value, 10);
        },
        color: function(object) {
          return helper.convertColor.hex.rgb(helper.e(object.element).value);
        }
      },
      convert: {
        reverse: function(value, object) {
          return parseInt(object.valueModify.max, 10) - value;
        },
        float: function(value, object) {
          return value / 100;
        },
        hexTextString: function(value, object) {
          return helper.convertColor.hex.rgb(value);
        }
      },
      modify: {
        min: function(value, object) {
          if (isNaN(value) || value < object.valueModify.min) {
            value = object.valueModify.min;
          };
          return value;
        },
        max: function(value, object) {
          if (value > object.valueModify.max) {
            value = object.valueModify.max;
          };
          return value;
        },
        step: function(value, object) {
          value = Math.round(value / object.valueModify.step) * object.valueModify.step;
          return value;
        }
      }
    },
    eventType: {
      a: "click",
      button: "click",
      checkbox: "change",
      radio: "change",
      text: "input",
      textarea: "input",
      number: "input",
      range: "input",
      color: "change",
      file: "change"
    },
    limit: function(sourceObject, targetObject) {
      var sourceValue = helper.getObject({
        object: state.get.current(),
        path: sourceObject.path
      });
      var targetValue = helper.getObject({
        object: state.get.current(),
        path: targetObject.path
      });
      var _set = function() {
        helper.setObject({
          object: state.get.current(),
          path: targetObject.path,
          newValue: helper.getObject({
            object: state.get.current(),
            path: sourceObject.path
          })
        });
      };
      if (targetObject.limit == "max" && targetValue >= sourceValue) {
        _set();
      } else if (targetObject.limit == "min" && targetValue <= sourceValue) {
        _set();
      };
      render.update.control.menu(targetObject);
    },
    action: function(object) {
      if (object.element) {
        helper.e(object.element).addEventListener(bind.control.eventType[object.type], function(event) {
          if (bind.control.supportedElement.includes(object.type)) {
            bind.control.value.set(object);
          };
          if (object.func) {
            object.func();
          };
          data.save();
        }, false);
      };
      if (object.additionalEvents) {
        object.additionalEvents.forEach(function(arrayItem, index) {
          helper.e(object.element).addEventListener(arrayItem.event, function(event) {
            arrayItem.func(event);
            data.save();
          }, false);
        });
      };
      if (object.mirrorElement) {
        object.mirrorElement.forEach(function(arrayItem, index) {
          helper.e(object.element).addEventListener(bind.control.eventType[object.type], function(event) {
            render.update.control.menu(arrayItem);
          }, false);
        });
      };
      if (object.limitElement) {
        object.limitElement.forEach(function(arrayItem, index) {
          helper.e(object.element).addEventListener(bind.control.eventType[object.type], function(event) {
            bind.control.limit(object, arrayItem);
          }, false);
        });
      };
      if (object.valueModify) {
        for (var key in object.valueModify) {
          helper.e(object.element).addEventListener(bind.control.eventType[object.type], function(event) {
            var _update = function() {
              render.update.control.menu(object);
            };
            clearTimeout(bind.control.timer.inputUpdate);
            bind.control.timer.inputUpdate = setTimeout(_update, 1000);
          }, false);
        };
      };
    },
    header: function(object) {
      if (object) {
        if (helper.e(object.element)) {
          bind.control.action(object);
        };
      } else {
        mod.header.forEach(function(arrayItem, index) {
          if (helper.e(arrayItem.element)) {
            bind.control.action(arrayItem);
          };
        });
      };
    },
    menu: function(object) {
      if (object) {
        if (helper.e(object.element)) {
          bind.control.action(object);
        };
      } else {
        mod.menu.all().forEach(function(arrayItem, index) {
          if (helper.e(arrayItem.element)) {
            bind.control.action(arrayItem);
          };
        });
      };
    }
  };

  var render = {};

  render.class = function() {
    var html = helper.e("html");
    var all = {
      edit: [{
        remove: [
          "is-edit"
        ],
        condition: function() {
          return state.get.current().edit;
        },
        name: "is-edit"
      }],
      layout: [{
        remove: [
          "is-layout-scrollpastend"
        ],
        condition: function() {
          return state.get.current().layout.scrollPastEnd;
        },
        name: "is-layout-scrollpastend"
      }, {
        remove: [
          "is-layout-alignment-topleft",
          "is-layout-alignment-topcenter",
          "is-layout-alignment-topright",
          "is-layout-alignment-centerleft",
          "is-layout-alignment-centercenter",
          "is-layout-alignment-centerright",
          "is-layout-alignment-bottomleft",
          "is-layout-alignment-bottomcenter",
          "is-layout-alignment-bottomright"
        ],
        name: "is-layout-alignment-" + state.get.current().layout.alignment
      }, {
        remove: [
          "is-layout-direction-vertical",
          "is-layout-direction-horizontal"
        ],
        name: "is-layout-direction-" + state.get.current().layout.direction
      }, {
        remove: [
          "is-layout-order-headerlink",
          "is-layout-order-linkheader"
        ],
        name: "is-layout-order-" + state.get.current().layout.order
      }, {
        remove: [
          "is-layout-scrollbars-auto",
          "is-layout-scrollbars-thin",
          "is-layout-scrollbars-none"
        ],
        name: "is-layout-scrollbars-" + state.get.current().layout.scrollbars
      }],
      header: {
        area: [{
          remove: [
            "is-header-area-justify-left",
            "is-header-area-justify-center",
            "is-header-area-justify-right"
          ],
          name: "is-header-area-justify-" + state.get.current().header.area.justify
        }, {
          remove: [
            "is-header-area-align-center",
            "is-header-area-align-baseline"
          ],
          name: "is-header-area-align-" + state.get.current().header.area.align
        }],
        item: [{
          remove: [
            "is-header-item-justify-left",
            "is-header-item-justify-center",
            "is-header-item-justify-right"
          ],
          name: "is-header-item-justify-" + state.get.current().header.item.justify
        }],
        greeting: [{
          remove: [
            "is-header-item-newline-greeting"
          ],
          condition: function() {
            return state.get.current().header.greeting.newLine;
          },
          name: "is-header-item-newline-greeting"
        }],
        clock: [{
          remove: [
            "is-header-item-newline-clock"
          ],
          condition: function() {
            return state.get.current().header.clock.newLine;
          },
          name: "is-header-item-newline-clock"
        }],
        transitional: [{
          remove: [
            "is-header-item-newline-transitional"
          ],
          condition: function() {
            return state.get.current().header.transitional.newLine;
          },
          name: "is-header-item-newline-transitional"
        }],
        date: [{
          remove: [
            "is-header-item-newline-date"
          ],
          condition: function() {
            return state.get.current().header.date.newLine;
          },
          name: "is-header-item-newline-date"
        }],
        search: [{
          remove: [
            "is-header-search-text-justify-left",
            "is-header-search-text-justify-center",
            "is-header-search-text-justify-right"
          ],
          condition: function() {
            return state.get.current().header.search.show;
          },
          name: "is-header-search-text-justify-" + state.get.current().header.search.text.justify
        }, {
          remove: [
            "is-header-search-width-by-custom",
            "is-header-search-width-by-auto"
          ],
          condition: function() {
            return state.get.current().header.search.show;
          },
          name: "is-header-search-width-by-" + state.get.current().header.search.width.by
        }, {
          condition: function() {
            return state.get.current().header.search.show;
          },
          name: "is-header-search-text-justify-" + state.get.current().header.search.text.justify
        }, {
          remove: [
            "is-header-item-newline-search"
          ],
          condition: function() {
            return state.get.current().header.search.newLine;
          },
          name: "is-header-item-newline-search"
        }],
        editadd: [{
          remove: [
            "is-header-item-newline-editadd"
          ],
          condition: function() {
            return state.get.current().header.editAdd.newLine;
          },
          name: "is-header-item-newline-editadd"
        }, {
          remove: [
            "is-header-editadd-opacity"
          ],
          condition: function() {
            return (state.get.current().header.editAdd.opacity == 0);
          },
          name: "is-header-editadd-opacity"
        }],
        coloraccent: [{
          remove: [
            "is-header-item-newline-coloraccent"
          ],
          condition: function() {
            return state.get.current().header.colorAccent.newLine;
          },
          name: "is-header-item-newline-coloraccent"
        }, {
          remove: [
            "is-header-coloraccent-opacity"
          ],
          condition: function() {
            return (state.get.current().header.colorAccent.opacity == 0);
          },
          name: "is-header-coloraccent-opacity"
        }],
        menu: [{
          remove: [
            "is-header-item-newline-menu"
          ],
          condition: function() {
            return state.get.current().header.menu.newLine;
          },
          name: "is-header-item-newline-menu"
        }, {
          remove: [
            "is-header-menu-opacity"
          ],
          condition: function() {
            return (state.get.current().header.menu.opacity == 0);
          },
          name: "is-header-menu-opacity"
        }],
        color: [{
          remove: [
            "is-header-color-show"
          ],
          condition: function() {
            return state.get.current().header.color.show;
          },
          name: "is-header-color-show"
        }, {
          remove: [
            "is-header-color-style-scroll",
            "is-header-color-style-always"
          ],
          condition: function() {
            return state.get.current().header.color.show;
          },
          name: "is-header-color-style-" + state.get.current().header.color.style
        }, {
          remove: [
            "is-header-color-by-theme",
            "is-header-color-by-custom"
          ],
          condition: function() {
            return state.get.current().header.color.show;
          },
          name: "is-header-color-by-" + state.get.current().header.color.by
        }],
        radius: [{
          remove: [
            "is-header-radius"
          ],
          condition: function() {
            return (state.get.current().header.radius > 0);
          },
          name: "is-header-radius"
        }],
        border: [{
          remove: [
            "is-header-border-top"
          ],
          condition: function() {
            return (state.get.current().header.border.top > 0);
          },
          name: "is-header-border-top"
        }, {
          remove: [
            "is-header-border-bottom"
          ],
          condition: function() {
            return (state.get.current().header.border.bottom > 0);
          },
          name: "is-header-border-bottom"
        }],
        position: [{
          remove: [
            "is-header-position-sticky",
            "is-header-position-inline"
          ],
          name: "is-header-position-" + state.get.current().header.position
        }]
      },
      group: {
        area: [{
          remove: [
            "is-group-area-justify-left",
            "is-group-area-justify-center",
            "is-group-area-justify-right"
          ],
          name: "is-group-area-justify-" + state.get.current().group.area.justify
        }],
        order: [{
          remove: [
            "is-group-order-headerbody",
            "is-group-order-bodyheader"
          ],
          name: "is-group-order-" + state.get.current().group.order
        }],
        openall: [{
          remove: [
            "is-group-openall-opacity"
          ],
          condition: function() {
            return (state.get.current().group.openAll.opacity == 0);
          },
          name: "is-group-openall-opacity"
        }],
        border: [{
          remove: [
            "is-group-border"
          ],
          condition: function() {
            return (state.get.current().group.border > 0);
          },
          name: "is-group-border"
        }]
      },
      link: [{
        remove: [
          "is-link-show"
        ],
        condition: function() {
          return state.get.current().link.show;
        },
        name: "is-link-show"
      }, {
        remove: [
          "is-link-area-justify-left",
          "is-link-area-justify-center",
          "is-link-area-justify-right"
        ],
        condition: function() {
          return state.get.current().link.show;
        },
        name: "is-link-area-justify-" + state.get.current().link.area.justify
      }, {
        remove: [
          "is-link-area-direction-ltr",
          "is-link-area-direction-rtl"
        ],
        condition: function() {
          return state.get.current().link.show;
        },
        name: "is-link-area-direction-" + state.get.current().link.area.direction
      }, {
        remove: [
          "is-link-style-list",
          "is-link-style-block"
        ],
        condition: function() {
          return (state.get.current().link.show && state.get.current().link.show);
        },
        name: "is-link-style-" + state.get.current().link.style
      }, {
        remove: [
          "is-link-orientation-top",
          "is-link-orientation-bottom"
        ],
        condition: function() {
          return (state.get.current().link.show && state.get.current().link.show);
        },
        name: "is-link-orientation-" + state.get.current().link.orientation
      }, {
        remove: [
          "is-link-item-url-show"
        ],
        condition: function() {
          return (state.get.current().link.show && state.get.current().link.item.url.show);
        },
        name: "is-link-item-url-show"
      }, {
        remove: [
          "is-link-item-line-show"
        ],
        condition: function() {
          return (state.get.current().link.show && state.get.current().link.item.line.show);
        },
        name: "is-link-item-line-show"
      }, {
        remove: [
          "is-link-item-shadow-show"
        ],
        condition: function() {
          return (state.get.current().link.show && state.get.current().link.item.shadow.show);
        },
        name: "is-link-item-shadow-show"
      }, {
        remove: [
          "is-link-item-hoverscale-show"
        ],
        condition: function() {
          return (state.get.current().link.show && state.get.current().link.item.hoverScale.show);
        },
        name: "is-link-item-hoverscale-show"
      }, {
        remove: [
          "is-link-item-border"
        ],
        condition: function() {
          return (state.get.current().link.show && (state.get.current().link.item.border > 0));
        },
        name: "is-link-item-border"
      }],
      theme: [{
        remove: [
          "is-theme-style-dark",
          "is-theme-style-light",
        ],
        name: "is-theme-style-" + state.get.current().theme.style
      }, {
        remove: [
          "is-theme-custom-edit"
        ],
        condition: function() {
          return state.get.current().theme.custom.edit;
        },
        name: "is-theme-custom-edit"
      }, {
        remove: [
          "is-theme-accent-cycle"
        ],
        condition: function() {
          return state.get.current().theme.accent.cycle.active;
        },
        name: "is-theme-accent-cycle"
      }, {
        remove: [
          "is-theme-radius"
        ],
        condition: function() {
          return (state.get.current().theme.radius > 0);
        },
        name: "is-theme-radius"
      }],
      background: [{
        remove: [
          "is-background-visual-show"
        ],
        condition: function() {
          return state.get.current().background.visual.show;
        },
        name: "is-background-visual-show"
      }, {
        remove: [
          "is-background-color-by-theme",
          "is-background-color-by-custom"
        ],
        name: "is-background-color-by-" + state.get.current().background.color.by
      }]
    };

    var classCheck = function(array, debug) {
      array.forEach(function(arrayItem, index) {
        if ("remove" in arrayItem) {
          arrayItem.remove.forEach(function(arrayItem, index) {
            helper.removeClass(html, arrayItem);
          });
        };
        if ("condition" in arrayItem) {
          if (arrayItem.condition()) {
            helper.addClass(html, arrayItem.name);
          };
        } else {
          helper.addClass(html, arrayItem.name);
        };
      });
    };

    classCheck(all.edit, true);
    classCheck(all.layout);
    classCheck(all.header.area);
    classCheck(all.header.item);
    classCheck(all.header.greeting);
    classCheck(all.header.clock);
    classCheck(all.header.transitional);
    classCheck(all.header.date);
    classCheck(all.header.search);
    classCheck(all.header.editadd);
    classCheck(all.header.coloraccent);
    classCheck(all.header.menu);
    classCheck(all.header.color);
    classCheck(all.header.radius);
    classCheck(all.header.border);
    classCheck(all.header.position);
    classCheck(all.group.area);
    classCheck(all.group.order);
    classCheck(all.group.openall);
    classCheck(all.group.border);
    classCheck(all.link);
    classCheck(all.theme);
    classCheck(all.background);
  };

  render.dependents = function() {
    var type = {
      control: ["input", "button", "textarea"],
      element: ["label", "p", "div"]
    };
    var disable = {
      control: function(control, state) {
        if (control) {
          if (state) {
            control.disabled = false;
          } else {
            control.disabled = true;
          };
        };
      },
      element: function(element, state) {
        if (element) {
          if (state) {
            helper.removeClass(element, "disabled");
          } else {
            helper.addClass(element, "disabled");
          };
        };
      }
    };
    var all = {
      edit: [{
        condition: function() {
          return (bookmarks.get().length > 0);
        },
        dependents: function() {
          return [
            "control-edit"
          ]
        }
      }],
      header: {
        alignment: [{
          condition: function() {
            return (state.get.current().layout.direction == "vertical")
          },
          dependents: function() {
            return [
              ".control-header-area-justify-grid",
              ".control-header-area-justify-label",
              ".control-header-area-justify-left",
              ".control-header-area-justify-center",
              ".control-header-area-justify-right",
              ".control-header-area-justify-helper",
            ]
          }
        }],
        greeting: [{
          condition: function() {
            return state.get.current().header.greeting.show;
          },
          dependents: function() {
            return [
              "[for=control-header-greeting-name]",
              ".control-header-greeting-name",
              ".control-header-greeting-type-label",
              ".control-header-greeting-type-good",
              ".control-header-greeting-type-hello",
              ".control-header-greeting-type-hi",
              "[for=control-header-greeting-size-range]",
              ".control-header-greeting-size-range",
              ".control-header-greeting-size-number",
              ".control-header-greeting-size-default",
              ".control-header-greeting-newline"
            ]
          }
        }],
        clock: [{
          condition: function() {
            var activeCount = 0;
            var toCheck = [state.get.current().header.clock.seconds.show, state.get.current().header.clock.minutes.show, state.get.current().header.clock.hours.show];
            toCheck.forEach(function(arrayItem, index) {
              if (arrayItem == true) {
                activeCount++;
              };
            });
            return (activeCount >= 2 && (state.get.current().header.clock.seconds.show || state.get.current().header.clock.minutes.show || state.get.current().header.clock.hours.show));
          },
          dependents: function() {
            return [
              ".control-header-clock-separator-show",
              ".control-header-clock-separator-text",
              ".control-header-clock-separator-text-default"
            ];
          }
        }, {
          condition: function() {
            var activeCount = 0;
            var toCheck = [state.get.current().header.clock.seconds.show, state.get.current().header.clock.minutes.show, state.get.current().header.clock.hours.show];
            toCheck.forEach(function(arrayItem, index) {
              if (arrayItem == true) {
                activeCount++;
              };
            });
            return (state.get.current().header.clock.separator.show && activeCount >= 2 && (state.get.current().header.clock.seconds.show || state.get.current().header.clock.minutes.show || state.get.current().header.clock.hours.show));
          },
          dependents: function() {
            return [
              ".control-header-clock-separator-text",
              ".control-header-clock-separator-text-default"
            ];
          }
        }, {
          condition: function() {
            return (state.get.current().header.clock.seconds.show || state.get.current().header.clock.minutes.show || state.get.current().header.clock.hours.show);
          },
          dependents: function() {
            return [
              ".control-header-clock-hour24-show",
              ".control-header-clock-meridiem-show"
            ];
          }
        }, {
          condition: function() {
            return ((state.get.current().header.clock.seconds.show || state.get.current().header.clock.minutes.show || state.get.current().header.clock.hours.show) && !state.get.current().header.clock.hour24.show);
          },
          dependents: function() {
            return [
              ".control-header-clock-meridiem-show"
            ];
          }
        }, {
          condition: function() {
            return state.get.current().header.clock.hours.show;
          },
          dependents: function() {
            return [
              ".control-header-clock-hours-display-number",
              ".control-header-clock-hours-display-word"
            ];
          }
        }, {
          condition: function() {
            return state.get.current().header.clock.minutes.show;
          },
          dependents: function() {
            return [
              ".control-header-clock-minutes-display-number",
              ".control-header-clock-minutes-display-word"
            ];
          }
        }, {
          condition: function() {
            return state.get.current().header.clock.seconds.show;
          },
          dependents: function() {
            return [
              ".control-header-clock-seconds-display-number",
              ".control-header-clock-seconds-display-word"
            ];
          }
        }, {
          condition: function() {
            return (state.get.current().header.clock.seconds.show || state.get.current().header.clock.minutes.show || state.get.current().header.clock.hours.show);
          },
          dependents: function() {
            return [
              "[for=control-header-clock-size-range]",
              ".control-header-clock-size-range",
              ".control-header-clock-size-number",
              ".control-header-clock-size-default",
              ".control-header-clock-newline"
            ];
          }
        }],
        transitional: [{
          condition: function() {
            return (state.get.current().header.date.date.show || state.get.current().header.date.day.show || state.get.current().header.date.month.show || state.get.current().header.date.year.show || state.get.current().header.clock.seconds.show || state.get.current().header.clock.minutes.show || state.get.current().header.clock.hours.show);
          },
          dependents: function() {
            return [
              ".control-header-transitional-show",
              ".control-header-transitional-show-helper"
            ];
          }
        }, {
          condition: function() {
            return (state.get.current().header.transitional.show && ((state.get.current().header.date.date.show || state.get.current().header.date.day.show || state.get.current().header.date.month.show || state.get.current().header.date.year.show || state.get.current().header.clock.seconds.show || state.get.current().header.clock.minutes.show || state.get.current().header.clock.hours.show)));
          },
          dependents: function() {
            return [
              ".control-header-transitional-type-label",
              ".control-header-transitional-type-timeanddate",
              ".control-header-transitional-type-its",
              "[for=control-header-transitional-size-range]",
              ".control-header-transitional-size-range",
              ".control-header-transitional-size-number",
              ".control-header-transitional-size-default",
              '.control-header-transitional-newline'
            ];
          }
        }],
        date: [{
          condition: function() {
            var activeCount = 0;
            var toCheck = [state.get.current().header.date.day.show, state.get.current().header.date.date.show, state.get.current().header.date.month.show, state.get.current().header.date.year.show];
            toCheck.forEach(function(arrayItem, index) {
              if (arrayItem == true) {
                activeCount++;
              };
            });
            return (activeCount >= 2 && (state.get.current().header.date.day.show || state.get.current().header.date.date.show || state.get.current().header.date.month.show || state.get.current().header.date.year.show));
          },
          dependents: function() {
            return [
              ".control-header-date-separator-show",
              ".control-header-date-separator-text",
              ".control-header-date-separator-text-default"
            ];
          }
        }, {
          condition: function() {
            var activeCount = 0;
            var toCheck = [state.get.current().header.date.day.show, state.get.current().header.date.date.show, state.get.current().header.date.month.show, state.get.current().header.date.year.show];
            toCheck.forEach(function(arrayItem, index) {
              if (arrayItem == true) {
                activeCount++;
              };
            });
            return (state.get.current().header.date.separator.show && activeCount >= 2 && (state.get.current().header.date.day.show || state.get.current().header.date.date.show || state.get.current().header.date.month.show || state.get.current().header.date.year.show));
          },
          dependents: function() {
            return [
              ".control-header-date-separator-text",
              ".control-header-date-separator-text-default"
            ];
          }
        }, {
          condition: function() {
            return (state.get.current().header.date.date.show && state.get.current().header.date.month.show);
          },
          dependents: function() {
            return [
              ".control-header-date-format-label",
              ".control-header-date-format-datemonth",
              ".control-header-date-format-monthdate"
            ];
          }
        }, {
          condition: function() {
            return state.get.current().header.date.day.show;
          },
          dependents: function() {
            return [
              ".control-header-date-day-display-number",
              ".control-header-date-day-display-word"
            ];
          }
        }, {
          condition: function() {
            return state.get.current().header.date.date.show;
          },
          dependents: function() {
            return [
              ".control-header-date-date-display-number",
              ".control-header-date-date-display-word",
              ".control-header-date-date-ordinal"
            ];
          }
        }, {
          condition: function() {
            return state.get.current().header.date.month.show;
          },
          dependents: function() {
            return [
              ".control-header-date-month-display-number",
              ".control-header-date-month-display-word"
            ];
          }
        }, {
          condition: function() {
            return state.get.current().header.date.year.show;
          },
          dependents: function() {
            return [".control-header-date-year-display-number",
              ".control-header-date-year-display-word"
            ];
          }
        }, {
          condition: function() {
            return (state.get.current().header.date.day.show && state.get.current().header.date.day.display == "number");
          },
          dependents: function() {
            return [
              ".control-header-date-day-week-start-label",
              ".control-header-date-day-week-start-monday",
              ".control-header-date-day-week-start-sunday",
              ".control-header-date-day-week-start-helper"
            ];
          }
        }, {
          condition: function() {
            return (state.get.current().header.date.day.show && state.get.current().header.date.day.display == "word");
          },
          dependents: function() {
            return [
              ".control-header-date-day-length-label",
              ".control-header-date-day-length-long",
              ".control-header-date-day-length-short"
            ];
          }
        }, {
          condition: function() {
            return (state.get.current().header.date.month.show && state.get.current().header.date.month.display == "word");
          },
          dependents: function() {
            return [
              ".control-header-date-month-length-label",
              ".control-header-date-month-length-long",
              ".control-header-date-month-length-short"
            ];
          }
        }, {
          condition: function() {
            return (state.get.current().header.date.month.show && state.get.current().header.date.month.display == "number");
          },
          dependents: function() {
            return [
              ".control-header-date-month-ordinal"
            ];
          }
        }, {
          condition: function() {
            return (state.get.current().header.date.day.show || state.get.current().header.date.date.show || state.get.current().header.date.month.show || state.get.current().header.date.year.show);
          },
          dependents: function() {
            return [
              "[for=control-header-date-size-range]",
              ".control-header-date-size-range",
              ".control-header-date-size-number",
              ".control-header-date-size-default",
              ".control-header-date-newline"
            ];
          }
        }],
        search: [{
          condition: function() {
            return state.get.current().header.search.show;
          },
          dependents: function() {
            return [
              ".control-header-search-width-by-label",
              ".control-header-search-width-by-auto",
              ".control-header-search-width-by-custom",
              ".control-header-search-width-size-range",
              ".control-header-search-width-size-number",
              ".control-header-search-width-size-default",
              "[for=control-header-search-opacity-range]",
              ".control-header-search-opacity-range",
              ".control-header-search-opacity-number",
              ".control-header-search-opacity-default",
              ".control-header-search-focus",
              ".control-header-search-focus-helper",
              ".control-header-search-engine-label",
              ".control-header-search-engine-google",
              ".control-header-search-engine-duckduckgo",
              ".control-header-search-engine-youtube",
              ".control-header-search-engine-giphy",
              ".control-header-search-engine-bing",
              ".control-header-search-engine-custom",
              ".control-header-search-text-justify-grid",
              ".control-header-search-text-justify-label",
              ".control-header-search-text-justify-left",
              ".control-header-search-text-justify-center",
              ".control-header-search-text-justify-right",
              "[for=control-header-search-size-range]",
              ".control-header-search-size-range",
              ".control-header-search-size-number",
              ".control-header-search-size-default",
              ".control-header-search-size-helper",
              ".control-header-search-newtab",
              ".control-header-search-newline"
            ];
          }
        }, {
          condition: function() {
            return (state.get.current().header.search.show && state.get.current().header.search.engine.selected === "custom");
          },
          dependents: function() {
            return [
              "[for=control-header-search-engine-custom-name]",
              ".control-header-search-engine-custom-name",
              "[for=control-header-search-engine-custom-url]",
              ".control-header-search-engine-custom-url",
              "[for=control-header-search-engine-custom-queryname]",
              ".control-header-search-engine-custom-queryname",
              ".control-header-search-engine-custom-helper"
            ];
          }
        }, {
          condition: function() {
            return (state.get.current().header.search.show && state.get.current().header.search.width.by === "custom");
          },
          dependents: function() {
            return [
              ".control-header-search-width-size-range",
              ".control-header-search-width-size-number",
              ".control-header-search-width-size-default"
            ];
          }
        }],
        editAdd: [{
          condition: function() {
            return state.get.current().header.editAdd.show;
          },
          dependents: function() {
            return [
              ".control-header-editadd-show-helper",
              "[for=control-header-editadd-opacity-range]",
              ".control-header-editadd-opacity-range",
              ".control-header-editadd-opacity-number",
              ".control-header-editadd-opacity-default",
              "[for=control-header-editadd-size-range]",
              ".control-header-editadd-size-range",
              ".control-header-editadd-size-number",
              ".control-header-editadd-size-default",
              ".control-header-editadd-newline"
            ];
          }
        }],
        colorAccent: [{
          condition: function() {
            return state.get.current().header.colorAccent.show;
          },
          dependents: function() {
            return [
              ".control-header-coloraccent-show-helper",
              ".control-header-coloraccent-dot-show",
              "[for=control-header-coloraccent-opacity-range]",
              ".control-header-coloraccent-opacity-range",
              ".control-header-coloraccent-opacity-number",
              ".control-header-coloraccent-opacity-default",
              "[for=control-header-coloraccent-size-range]",
              ".control-header-coloraccent-size-range",
              ".control-header-coloraccent-size-number",
              ".control-header-coloraccent-size-default",
              ".control-header-coloraccent-newline"
            ];
          }
        }],
        menu: [{
          condition: function() {
            return state.get.current().header.menu.show;
          },
          dependents: function() {
            return [
              "[for=control-header-menu-opacity-range]",
              ".control-header-menu-opacity-range",
              ".control-header-menu-opacity-number",
              ".control-header-menu-opacity-default",
              "[for=control-header-menu-size-range]",
              ".control-header-menu-size-range",
              ".control-header-menu-size-number",
              ".control-header-menu-size-default",
              ".control-header-menu-newline"
            ];
          }
        }],
        color: [{
          condition: function() {
            return state.get.current().header.color.show;
          },
          dependents: function() {
            return [
              ".control-header-color-style-always",
              ".control-header-color-style-scroll",
              ".control-header-color-style-helper",
              ".control-header-color-by-theme",
              ".control-header-color-by-theme-helper",
              ".control-header-color-by-custom",
              ".control-header-color-by-custom-helper",
              "[for=control-header-color-opacity-range]",
              ".control-header-color-opacity-range",
              ".control-header-color-opacity-number",
              ".control-header-color-opacity-default",
              ".control-header-radius",
              ".control-header-radius-helper"
            ];
          }
        }, {
          condition: function() {
            return (state.get.current().header.color.show && state.get.current().header.color.by == "custom");
          },
          dependents: function() {
            return [
              ".control-header-color-rgb-color",
              ".control-header-color-rgb-text",
              "[for=control-header-color-hsl-h-range]",
              ".control-header-color-hsl-h-range",
              ".control-header-color-hsl-h-number",
              "[for=control-header-color-hsl-s-range]",
              ".control-header-color-hsl-s-range",
              ".control-header-color-hsl-s-number",
              "[for=control-header-color-hsl-l-range]",
              ".control-header-color-hsl-l-range",
              ".control-header-color-hsl-l-number",
              "[for=control-header-color-rgb-r-range]",
              ".control-header-color-rgb-r-range",
              ".control-header-color-rgb-r-number",
              "[for=control-header-color-rgb-g-range]",
              ".control-header-color-rgb-g-range",
              ".control-header-color-rgb-g-number",
              "[for=control-header-color-rgb-b-range]",
              ".control-header-color-rgb-b-range",
              ".control-header-color-rgb-b-number"
            ];
          }
        }],
        position: [{
          condition: function() {
            return (state.get.current().layout.direction == "vertical");
          },
          dependents: function() {
            return [
              ".control-header-position-sticky",
              ".control-header-position-inline"
            ];
          }
        }]
      },
      link: [{
        condition: function() {
          return state.get.current().link.show;
        },
        dependents: function() {
          return [
            ".control-layout-order-headerlink",
            ".control-layout-order-linkheader",
            "[for=control-link-area-width-range]",
            ".control-link-area-width-range",
            ".control-link-area-width-number",
            ".control-link-area-width-default",
            ".control-link-area-width-match",
            ".control-link-area-width-helper",
            ".control-link-area-helper",
            ".control-link-area-direction-label",
            ".control-link-area-direction-ltr",
            ".control-link-area-direction-rtl",
            ".control-link-area-direction-helper",
            "[for=control-link-item-size-range]",
            ".control-link-item-size-range",
            ".control-link-item-size-number",
            ".control-link-item-size-default",
            ".control-link-item-url-show",
            ".control-link-item-line-show",
            ".control-link-item-shadow-show",
            ".control-link-item-shadow-show-helper",
            ".control-link-item-hoverscale",
            ".control-link-newtab",
            ".control-link-item-display-visual-show",
            ".control-link-item-display-visual-hide",
            ".control-link-item-display-visual-helper",
            "[for=control-link-item-display-visual-letter-size-range]",
            ".control-link-item-display-visual-letter-size-range",
            ".control-link-item-display-visual-letter-size-number",
            ".control-link-item-display-visual-letter-size-default",
            ".control-link-item-display-visual-letter-size-apply",
            "[for=control-link-item-display-visual-icon-size-range]",
            ".control-link-item-display-visual-icon-size-range",
            ".control-link-item-display-visual-icon-size-number",
            ".control-link-item-display-visual-icon-size-default",
            ".control-link-item-display-visual-icon-size-apply",
            "[for=control-link-item-display-visual-image-size-range]",
            ".control-link-item-display-visual-image-size-range",
            ".control-link-item-display-visual-image-size-number",
            ".control-link-item-display-visual-image-size-default",
            ".control-link-item-display-visual-image-size-apply",
            "[for=control-link-item-display-visual-shadow-size-range]",
            ".control-link-item-display-visual-shadow-size-range",
            ".control-link-item-display-visual-shadow-size-number",
            ".control-link-item-display-visual-shadow-size-default",
            ".control-link-item-display-visual-shadow-size-apply",
            ".control-link-item-display-visual-shadow-size-helper",
            ".control-link-item-display-name-show",
            ".control-link-item-display-name-hide",
            ".control-link-item-display-name-helper",
            "[for=control-link-item-display-name-size-range]",
            ".control-link-item-display-name-size-range",
            ".control-link-item-display-name-size-number",
            ".control-link-item-display-name-size-default",
            ".control-link-item-display-name-size-apply",
            ".control-link-item-display-alignment-grid",
            ".control-link-item-display-alignment-label",
            ".control-link-item-display-alignment-topleft",
            ".control-link-item-display-alignment-topcenter",
            ".control-link-item-display-alignment-topright",
            ".control-link-item-display-alignment-centerleft",
            ".control-link-item-display-alignment-centercenter",
            ".control-link-item-display-alignment-centerright",
            ".control-link-item-display-alignment-bottomleft",
            ".control-link-item-display-alignment-bottomcenter",
            ".control-link-item-display-alignment-bottomright",
            ".control-link-item-display-alignment-helper",
            ".control-link-item-display-alignment-apply",
            "[for=control-link-item-display-rotate-range]",
            ".control-link-item-display-rotate-range",
            ".control-link-item-display-rotate-number",
            ".control-link-item-display-rotate-default",
            ".control-link-item-display-rotate-apply",
            "[for=control-link-item-display-translate-x-range]",
            ".control-link-item-display-translate-x-range",
            ".control-link-item-display-translate-x-number",
            ".control-link-item-display-translate-x-default",
            ".control-link-item-display-translate-x-apply",
            "[for=control-link-item-display-translate-y-range]",
            ".control-link-item-display-translate-y-range",
            ".control-link-item-display-translate-y-number",
            ".control-link-item-display-translate-y-default",
            ".control-link-item-display-translate-y-apply",
            "[for=control-link-item-display-gutter-range]",
            ".control-link-item-display-gutter-range",
            ".control-link-item-display-gutter-number",
            ".control-link-item-display-gutter-default",
            ".control-link-item-display-gutter-apply",
            ".control-link-item-display-direction-horizontal",
            ".control-link-item-display-direction-vertical",
            ".control-link-item-display-direction-apply",
            ".control-link-item-display-order-visualname",
            ".control-link-item-display-order-namevisual",
            ".control-link-item-display-order-apply",
            ".control-link-item-color-by-theme",
            ".control-link-item-color-by-custom",
            ".control-link-item-color-apply",
            ".control-link-item-color-rainbow",
            "[for=control-link-item-color-opacity-range]",
            ".control-link-item-color-opacity-range",
            ".control-link-item-color-opacity-number",
            ".control-link-item-color-opacity-default",
            ".control-link-item-color-opacity-apply",
            ".control-link-item-accent-by-theme",
            ".control-link-item-accent-by-custom",
            ".control-link-item-accent-apply",
            ".control-link-item-accent-rainbow",
            ".control-link-item-background-show",
            ".control-link-item-background-hide",
            ".control-link-item-background-helper",
            "[for=control-link-item-background-opacity-range]",
            ".control-link-item-background-opacity-range",
            ".control-link-item-background-opacity-number",
            ".control-link-item-background-opacity-default",
            ".control-link-item-background-opacity-apply",
            "[for=control-link-item-border-range]",
            ".control-link-item-border-range",
            ".control-link-item-border-number",
            ".control-link-item-border-default",
            ".control-link-style-block",
            ".control-link-style-list",
            "[for=control-link-item-image-opacity-range]",
            ".control-link-item-image-opacity-range",
            ".control-link-item-image-opacity-number",
            ".control-link-item-image-opacity-default",
            ".control-link-item-image-opacity-apply",
            ".control-link-orientation-top",
            ".control-link-orientation-bottom",
            ".control-link-orientation-helper",
            ".control-link-sort-name",
            ".control-link-sort-letter",
            ".control-link-sort-icon"
          ];
        }
      }, {
        condition: function() {
          return state.get.current().link.show && (state.get.current().link.item.color.by == "custom")
        },
        dependents: function() {
          return [
            ".control-link-item-color-rgb-color",
            ".control-link-item-color-rgb-text",
            "[for=control-link-item-color-hsl-h-range]",
            ".control-link-item-color-hsl-h-range",
            ".control-link-item-color-hsl-h-number",
            "[for=control-link-item-color-hsl-s-range]",
            ".control-link-item-color-hsl-s-range",
            ".control-link-item-color-hsl-s-number",
            "[for=control-link-item-color-hsl-l-range]",
            ".control-link-item-color-hsl-l-range",
            ".control-link-item-color-hsl-l-number",
            "[for=control-link-item-color-rgb-r-range]",
            ".control-link-item-color-rgb-r-range",
            ".control-link-item-color-rgb-r-number",
            "[for=control-link-item-color-rgb-g-range]",
            ".control-link-item-color-rgb-g-range",
            ".control-link-item-color-rgb-g-number",
            "[for=control-link-item-color-rgb-b-range]",
            ".control-link-item-color-rgb-b-range",
            ".control-link-item-color-rgb-b-number"
          ]
        }
      }, {
        condition: function() {
          return state.get.current().link.show && (state.get.current().link.item.accent.by == "custom")
        },
        dependents: function() {
          return [
            ".control-link-item-accent-rgb-color",
            ".control-link-item-accent-rgb-text",
            "[for=control-link-item-accent-hsl-h-range]",
            ".control-link-item-accent-hsl-h-range",
            ".control-link-item-accent-hsl-h-number",
            "[for=control-link-item-accent-hsl-s-range]",
            ".control-link-item-accent-hsl-s-range",
            ".control-link-item-accent-hsl-s-number",
            "[for=control-link-item-accent-hsl-l-range]",
            ".control-link-item-accent-hsl-l-range",
            ".control-link-item-accent-hsl-l-number",
            "[for=control-link-item-accent-rgb-r-range]",
            ".control-link-item-accent-rgb-r-range",
            ".control-link-item-accent-rgb-r-number",
            "[for=control-link-item-accent-rgb-g-range]",
            ".control-link-item-accent-rgb-g-range",
            ".control-link-item-accent-rgb-g-number",
            "[for=control-link-item-accent-rgb-b-range]",
            ".control-link-item-accent-rgb-b-range",
            ".control-link-item-accent-rgb-b-number"
          ]
        }
      }, {
        condition: function() {
          return (state.get.current().layout.direction == "vertical") && state.get.current().link.show
        },
        dependents: function() {
          return [
            ".control-link-area-justify-grid",
            ".control-link-area-justify-label",
            ".control-link-area-justify-left",
            ".control-link-area-justify-center",
            ".control-link-area-justify-right",
            ".control-link-area-justify-helper",
          ]
        }
      }],
      theme: [{
        condition: function() {
          return (state.get.current().theme.custom.all.length > 0);
        },
        dependents: function() {
          return [
            ".control-theme-custom-edit"
          ];
        }
      }, {
        condition: function() {
          return state.get.current().theme.accent.cycle.active;
        },
        dependents: function() {
          return [
            "[for=control-theme-accent-cycle-speed-range]",
            ".control-theme-accent-cycle-speed-range",
            ".control-theme-accent-cycle-speed-range",
            ".control-theme-accent-cycle-speed-number",
            ".control-theme-accent-cycle-speed-default",
            "[for=control-theme-accent-cycle-step-range]",
            ".control-theme-accent-cycle-step-range",
            ".control-theme-accent-cycle-step-range",
            ".control-theme-accent-cycle-step-number",
            ".control-theme-accent-cycle-step-default",
            ".control-theme-accent-cycle-helper"
          ];
        }
      }, {
        condition: function() {
          return (!state.get.current().theme.accent.cycle.active);
        },
        dependents: function() {
          return [
            ".control-theme-accent-random-active"
          ];
        }
      }, {
        condition: function() {
          return (state.get.current().theme.accent.random.active && !state.get.current().theme.accent.cycle.active);
        },
        dependents: function() {
          return [
            ".control-theme-accent-random-style-any",
            ".control-theme-accent-random-style-light",
            ".control-theme-accent-random-style-dark",
            ".control-theme-accent-random-style-pastel",
            ".control-theme-accent-random-style-saturated",
            ".control-theme-accent-randomise"
          ];
        }
      }],
      background: [{
        condition: function() {
          return (state.get.current().background.color.by == "custom");
        },
        dependents: function() {
          return [
            ".control-background-color-rgb-color",
            ".control-background-color-rgb-text",
            ".control-background-color-by-custom-helper",
            "[for=control-background-color-hsl-h-range]",
            ".control-background-color-hsl-h-range",
            ".control-background-color-hsl-h-number",
            "[for=control-background-color-hsl-s-range]",
            ".control-background-color-hsl-s-range",
            ".control-background-color-hsl-s-number",
            "[for=control-background-color-hsl-l-range]",
            ".control-background-color-hsl-l-range",
            ".control-background-color-hsl-l-number",
            "[for=control-background-color-rgb-r-range]",
            ".control-background-color-rgb-r-range",
            ".control-background-color-rgb-r-number",
            "[for=control-background-color-rgb-g-range]",
            ".control-background-color-rgb-g-range",
            ".control-background-color-rgb-g-number",
            "[for=control-background-color-rgb-b-range]",
            ".control-background-color-rgb-b-range",
            ".control-background-color-rgb-b-number"
          ];
        }
      }, {
        condition: function() {
          return (state.get.current().background.visual.show);
        },
        dependents: function() {
          return [
            ".control-background-visual-type-video",
            ".control-background-visual-type-image",
            "[for=control-background-visual-opacity-range]",
            ".control-background-visual-opacity-range",
            ".control-background-visual-opacity-number",
            ".control-background-visual-opacity-default",
            "[for=control-background-visual-blur-range]",
            ".control-background-visual-blur-range",
            ".control-background-visual-blur-number",
            ".control-background-visual-blur-default",
            "[for=control-background-visual-grayscale-range]",
            ".control-background-visual-grayscale-range",
            ".control-background-visual-grayscale-number",
            ".control-background-visual-grayscale-default",
            "[for=control-background-visual-accent-range]",
            ".control-background-visual-accent-range",
            ".control-background-visual-accent-number",
            ".control-background-visual-accent-default",
            "[for=control-background-visual-scale-range]",
            ".control-background-visual-scale-range",
            ".control-background-visual-scale-number",
            ".control-background-visual-scale-default",
            "[for=control-background-vignette-opacity-range]",
            ".control-background-vignette-opacity-range",
            ".control-background-vignette-opacity-number",
            ".control-background-vignette-opacity-default",
            "[for=control-background-vignette-start-range]",
            ".control-background-vignette-start-range",
            ".control-background-vignette-start-number",
            ".control-background-vignette-start-default",
            "[for=control-background-vignette-end-range]",
            ".control-background-vignette-end-range",
            ".control-background-vignette-end-number",
            ".control-background-vignette-end-default"
          ];
        }
      }, {
        condition: function() {
          return (state.get.current().background.visual.show && state.get.current().background.visual.type == "video");
        },
        dependents: function() {
          return [
            "[for=control-background-visual-video-url]",
            ".control-background-visual-video-url",
            ".control-background-visual-video-url-helper"
          ];
        }
      }, {
        condition: function() {
          return (state.get.current().background.visual.show && state.get.current().background.visual.type == "image");
        },
        dependents: function() {
          return [
            ".control-background-visual-image-type-file",
            ".control-background-visual-image-type-url"
          ];
        }
      }, {
        condition: function() {
          return (state.get.current().background.visual.show && state.get.current().background.visual.type == "image" && state.get.current().background.visual.image.type == "file");
        },
        dependents: function() {
          return [
            ".control-background-visual-image-file",
            ".control-background-visual-image-clear",
            ".control-background-visual-image-file-helper",
            ".control-background-visual-image-file-feedback"
          ];
        }
      }, {
        condition: function() {
          return (state.get.current().background.visual.show && state.get.current().background.visual.type == "image" && state.get.current().background.visual.image.type == "url");
        },
        dependents: function() {
          return [
            ".control-background-visual-image-url",
            ".control-background-visual-image-url-helper"
          ];
        }
      }]
    };

    var disableCheck = function(array) {
      array.forEach(function(arrayItem, index) {
        var condition = arrayItem.condition();
        arrayItem.dependents().forEach(function(arrayItem, index) {
          var element = helper.eA(arrayItem);
          element.forEach(function(arrayItem, index) {
            var elementType = arrayItem.tagName.toLowerCase();
            if (type.control.includes(elementType)) {
              disable.control(arrayItem, condition);
            } else if (type.element.includes(elementType)) {
              disable.element(arrayItem, condition);
            };
          });

        });
      });
    };

    disableCheck(all.edit);
    disableCheck(all.header.alignment);
    disableCheck(all.header.greeting);
    disableCheck(all.header.clock);
    disableCheck(all.header.transitional);
    disableCheck(all.header.date);
    disableCheck(all.header.search);
    disableCheck(all.header.editAdd);
    disableCheck(all.header.colorAccent);
    disableCheck(all.header.menu);
    disableCheck(all.header.position);
    disableCheck(all.header.color);
    disableCheck(all.link);
    disableCheck(all.theme);
    disableCheck(all.background);
  };

  render.update = {
    value: {
      set: {
        checkbox: function(object) {
          helper.e(object.element).checked = helper.getObject({
            object: state.get.current(),
            path: object.path
          });
        },
        radio: function(object) {
          helper.e(object.element.substring(0, object.element.lastIndexOf("-") + 1) + helper.getObject({
            object: state.get.current(),
            path: object.path
          })).checked = true;
        },
        text: function(object) {
          var newValue = helper.getObject({
            object: state.get.current(),
            path: object.path
          });
          if (object.valueConvert) {
            object.valueConvert.slice().reverse().forEach(function(arrayItem, index) {
              newValue = render.update.value.convert[arrayItem](newValue, object);
            });
          };
          helper.e(object.element).value = newValue;
        },
        textarea: function(object) {
          var newValue = helper.getObject({
            object: state.get.current(),
            path: object.path
          });
          if (object.valueConvert) {
            object.valueConvert.slice().reverse().forEach(function(arrayItem, index) {
              newValue = render.update.value.convert[arrayItem](newValue, object);
            });
          };
          helper.e(object.element).value = newValue;
        },
        number: function(object) {
          var newValue = helper.getObject({
            object: state.get.current(),
            path: object.path
          });
          if (object.valueConvert) {
            object.valueConvert.slice().reverse().forEach(function(arrayItem, index) {
              newValue = render.update.value.convert[arrayItem](newValue, object);
            });
          };
          helper.e(object.element).value = Math.round(newValue);
        },
        range: function(object) {
          var newValue = helper.getObject({
            object: state.get.current(),
            path: object.path
          });
          if (object.valueConvert) {
            object.valueConvert.slice().reverse().forEach(function(arrayItem, index) {
              newValue = render.update.value.convert[arrayItem](newValue, object);
            });
          };
          helper.e(object.element).value = newValue;
        },
        color: function(object) {
          helper.e(object.element).value = helper.convertColor.rgb.hex(helper.getObject({
            object: state.get.current(),
            path: object.path
          }));
        }
      },
      convert: {
        reverse: function(value, object) {
          return object.valueModify.max - value;
        },
        float: function(value, object) {
          return value * 100;
        },
        hexTextString: function(value, object) {
          return helper.convertColor.rgb.hex(value);
        }
      }
    },
    control: {
      header: function(object) {
        if (object) {
          if (bind.control.supportedElement.includes(object.type) && helper.e(object.element)) {
            render.update.value.set[object.type](object);
          };
        } else {
          mod.header.forEach(function(arrayItem, index) {
            if (bind.control.supportedElement.includes(arrayItem.type) && helper.e(arrayItem.element)) {
              render.update.value.set[arrayItem.type](arrayItem);
            };
          });
        };
      },
      menu: function(object) {
        if (object) {
          if (bind.control.supportedElement.includes(object.type) && helper.e(object.element)) {
            render.update.value.set[object.type](object);
          };
        } else {
          mod.menu.all().forEach(function(arrayItem, index) {
            if (bind.control.supportedElement.includes(arrayItem.type) && helper.e(arrayItem.element)) {
              render.update.value.set[arrayItem.type](arrayItem);
            };
          });
        };
      }
    }
  };

  render.input = {
    header: function() {
      mod.header.forEach(function(arrayItem, index) {
        if (arrayItem.valueModify) {
          for (var key in arrayItem.valueModify) {
            helper.e(arrayItem.element)[key] = arrayItem.valueModify[key];
          };
        };
      });
    },
    menu: function() {
      mod.menu.all().forEach(function(arrayItem, index) {
        if (arrayItem.valueModify) {
          for (var key in arrayItem.valueModify) {
            helper.e(arrayItem.element)[key] = arrayItem.valueModify[key];
          };
        };
      });
    }
  };

  var debug = function() {
    mod.debug.toggle();
  };

  var init = function() {
    bind.control.header();
    bind.control.menu();
    render.input.header();
    render.input.menu();
    render.update.control.header();
    render.update.control.menu();
    render.dependents();
    render.class();
  };

  // exposed methods
  return {
    init: init,
    mod: mod,
    bind: bind,
    render: render,
    debug: debug
  };

})();
