util

package
v0.4.25 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 14, 2024 License: MIT Imports: 45 Imported by: 1

Documentation

Overview

Code generated from files in client/src/svg. See https://projectforge.dev for details. DO NOT EDIT.

Index

Constants

View Source
const (
	BoolTrue  = "true"
	BoolFalse = "false"
)
View Source
const (
	AppKey     = "admini"
	AppName    = "Admini"
	AppSummary = "Use Admini to explore and manage your data as fast and easily as possible"
	AppPort    = 14000
	AppContact = "Kyle U <kyle@kyleu.com>"
	AppURL     = "https://admini.dev"
	AppSource  = "https://github.com/kyleu/admini"
	AppLegal   = `Built by <a href="mailto:kyle@kyleu.com">Kyle U</a>, all rights reserved`

	KeyDebug   = "debug"
	KeyError   = "error"
	KeyRandom  = "random"
	KeyStart   = "start"
	KeyUnknown = "unknown"

	KeyCSV  = "csv"
	KeyJSON = "json"
	KeyTOML = "toml"
	KeyXML  = "xml"
	KeyYAML = "yaml"

	ExtJSON     = ".json"
	ExtMarkdown = ".md"
)

Variables

View Source
var (
	DEBUG     = false
	ConfigDir = "."
)
View Source
var EmptyStruct = struct{}{}
View Source
var HTTPDefaultClient = http.DefaultClient
View Source
var SVGIconKeys = []string{"android", "app", "apple", "archive", "backward", "bell", "bolt", "bookmark", "calendar", "camera", "cart", "check", "clock", "code", "cog", "comment", "compass", "database", "desktop", "dna", "dot", "down", "download", "edit", "error", "export", "external", "eye", "file", "file-text", "filter", "fingerprint", "fire", "flag", "folder", "folder-open", "forward", "gift", "github", "graph", "grid", "handle", "happy", "hashtag", "heart", "image", "import", "info", "left", "link", "linux", "list", "location", "lock", "mail", "mail-open", "medal", "meh", "microphone", "minus", "mobile", "pencil", "play", "plus", "poo", "print", "profile", "question", "refresh", "reply", "right", "robot", "sad", "searchbox", "server", "settings", "share", "social", "sort", "star", "struct", "tag", "thumbs-down", "thumbs-up", "times", "tools", "trash", "trophy", "unlock", "up", "upload", "users", "warning", "windows", "world", "wrench"}
View Source
var SVGLibrary = map[string]string{
	"android":     `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-android" viewBox="0 0 32 32"><path class="svg-fill" d="M 10.53125 3.5 C 10.363281 3.542969 10.230469 3.671875 10.179688 3.835938 C 10.128906 4.003906 10.167969 4.183594 10.28125 4.3125 L 11.75 6.4375 C 10.082031 7.71875 9 9.742188 9 12 L 9 22 C 9 22.703125 9.441406 23.203125 10 23.5625 L 10 26.5 C 10 27.867188 11.132813 29 12.5 29 C 13.867188 29 15 27.867188 15 26.5 L 15 24 L 17 24 L 17 26.5 C 17 27.867188 18.132813 29 19.5 29 C 20.867188 29 22 27.867188 22 26.5 L 22 23.5625 C 22.558594 23.203125 23 22.703125 23 22 L 23 12 C 23 9.742188 21.917969 7.71875 20.25 6.4375 L 21.71875 4.3125 C 21.839844 4.160156 21.863281 3.949219 21.777344 3.777344 C 21.6875 3.601563 21.507813 3.492188 21.3125 3.5 C 21.28125 3.496094 21.25 3.496094 21.21875 3.5 C 21.085938 3.535156 20.972656 3.625 20.90625 3.75 L 19.40625 5.875 C 18.398438 5.3125 17.230469 5 16 5 C 14.769531 5 13.601563 5.3125 12.59375 5.875 L 11.09375 3.75 C 11.007813 3.601563 10.855469 3.507813 10.6875 3.5 C 10.65625 3.496094 10.625 3.496094 10.59375 3.5 C 10.574219 3.5 10.550781 3.5 10.53125 3.5 Z M 16 7 C 18.425781 7 20.441406 8.714844 20.90625 11 L 11.09375 11 C 11.558594 8.714844 13.574219 7 16 7 Z M 14 8 C 13.449219 8 13 8.449219 13 9 C 13 9.550781 13.449219 10 14 10 C 14.550781 10 15 9.550781 15 9 C 15 8.449219 14.550781 8 14 8 Z M 18 8 C 17.449219 8 17 8.449219 17 9 C 17 9.550781 17.449219 10 18 10 C 18.550781 10 19 9.550781 19 9 C 19 8.449219 18.550781 8 18 8 Z M 6 11 L 6 21 L 8 21 L 8 11 Z M 24 11 L 24 21 L 26 21 L 26 11 Z M 11 13 L 21 13 L 21 22 L 20 22 L 20 26.5 C 20 26.785156 19.785156 27 19.5 27 C 19.214844 27 19 26.785156 19 26.5 L 19 22 L 13 22 L 13 26.5 C 13 26.785156 12.785156 27 12.5 27 C 12.214844 27 12 26.785156 12 26.5 L 12 22 L 11 22 Z" /></symbol><use xlink:href="#svg-android" /></svg>`,
	"app":         `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-app" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 4 C 9.382813 4 4 9.382813 4 16 C 4 22.617188 9.382813 28 16 28 C 22.617188 28 28 22.617188 28 16 C 28 9.382813 22.617188 4 16 4 Z M 14.96875 6.0625 C 14.980469 6.0625 14.988281 6.0625 15 6.0625 L 15 7 L 17 7 L 17 6.0625 C 21.738281 6.527344 25.472656 10.261719 25.9375 15 L 25 15 L 25 17 L 25.9375 17 C 25.472656 21.738281 21.738281 25.472656 17 25.9375 L 17 25 L 15 25 L 15 25.9375 C 10.261719 25.472656 6.527344 21.738281 6.0625 17 L 7 17 L 7 15 L 6.0625 15 C 6.527344 10.269531 10.246094 6.539063 14.96875 6.0625 Z M 22.5 9.5 L 14.15625 14.15625 L 9.5 22.5 L 17.84375 17.84375 Z M 16 14.5 C 16.828125 14.5 17.5 15.171875 17.5 16 C 17.5 16.828125 16.828125 17.5 16 17.5 C 15.171875 17.5 14.5 16.828125 14.5 16 C 14.5 15.171875 15.171875 14.5 16 14.5 Z" /></symbol><use xlink:href="#svg-app" /></svg>`,
	"apple":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-apple" viewBox="0 0 32 32"><path class="svg-fill" d="M 20.84375 2 C 19.203125 2 17.546875 2.851563 16.4375 4.15625 L 16.4375 4.1875 C 15.648438 5.167969 14.792969 6.714844 15.0625 8.5 C 14.933594 8.449219 14.925781 8.464844 14.78125 8.40625 C 14.089844 8.125 13.234375 7.8125 12.21875 7.8125 C 8.238281 7.8125 5.21875 11.417969 5.21875 16.15625 C 5.21875 19.222656 6.25 22.097656 7.625 24.25 C 8.3125 25.328125 9.09375 26.214844 9.90625 26.875 C 10.71875 27.535156 11.570313 28 12.53125 28 C 13.492188 28 14.210938 27.675781 14.75 27.4375 C 15.289063 27.199219 15.707031 27 16.5 27 C 17.214844 27 17.578125 27.195313 18.125 27.4375 C 18.671875 27.679688 19.417969 28 20.40625 28 C 21.476563 28 22.386719 27.476563 23.125 26.8125 C 23.863281 26.148438 24.484375 25.292969 25 24.46875 C 25.515625 23.644531 25.921875 22.835938 26.21875 22.1875 C 26.367188 21.863281 26.476563 21.59375 26.5625 21.375 C 26.648438 21.15625 26.691406 21.09375 26.75 20.84375 L 26.9375 20.03125 L 26.1875 19.6875 C 26.011719 19.609375 25.3125 19.261719 24.6875 18.625 C 24.0625 17.988281 23.53125 17.117188 23.53125 15.78125 C 23.53125 14.488281 24.027344 13.621094 24.5625 13 C 24.828125 12.691406 25.105469 12.4375 25.3125 12.28125 C 25.417969 12.203125 25.5 12.164063 25.5625 12.125 C 25.625 12.085938 25.613281 12.097656 25.71875 12.03125 L 26.5625 11.5 L 26 10.65625 C 24.367188 8.144531 21.753906 7.8125 20.71875 7.8125 C 20.238281 7.8125 19.898438 7.980469 19.46875 8.0625 C 19.710938 7.835938 20.023438 7.695313 20.21875 7.4375 C 20.222656 7.433594 20.214844 7.410156 20.21875 7.40625 C 20.230469 7.394531 20.242188 7.386719 20.25 7.375 L 20.28125 7.375 C 21.347656 6.183594 21.9375 4.582031 21.84375 2.9375 L 21.78125 2 Z M 19.65625 4.3125 C 19.484375 4.972656 19.203125 5.601563 18.75 6.09375 L 18.6875 6.15625 C 18.304688 6.671875 17.714844 7.054688 17.125 7.28125 C 17.289063 6.628906 17.574219 5.96875 17.96875 5.46875 C 17.976563 5.457031 17.992188 5.449219 18 5.4375 C 18.4375 4.9375 19.042969 4.5625 19.65625 4.3125 Z M 12.21875 9.8125 C 12.777344 9.8125 13.390625 10.023438 14.03125 10.28125 C 14.671875 10.539063 15.269531 10.875 16.125 10.875 C 16.976563 10.875 17.621094 10.539063 18.375 10.28125 C 19.128906 10.023438 19.933594 9.8125 20.71875 9.8125 C 21.242188 9.8125 22.535156 10.144531 23.625 11.15625 C 23.433594 11.328125 23.265625 11.453125 23.0625 11.6875 C 22.300781 12.570313 21.53125 13.945313 21.53125 15.78125 C 21.53125 17.6875 22.363281 19.121094 23.25 20.03125 C 23.800781 20.59375 24.140625 20.726563 24.5625 20.96875 C 24.507813 21.09375 24.476563 21.191406 24.40625 21.34375 C 24.136719 21.929688 23.765625 22.679688 23.3125 23.40625 C 22.859375 24.132813 22.308594 24.839844 21.78125 25.3125 C 21.253906 25.785156 20.78125 26 20.40625 26 C 19.839844 26 19.507813 25.84375 18.9375 25.59375 C 18.367188 25.34375 17.582031 25 16.5 25 C 15.363281 25 14.523438 25.335938 13.9375 25.59375 C 13.351563 25.851563 13.046875 26 12.53125 26 C 12.285156 26 11.753906 25.800781 11.15625 25.3125 C 10.558594 24.824219 9.902344 24.082031 9.3125 23.15625 C 8.128906 21.304688 7.21875 18.761719 7.21875 16.15625 C 7.21875 12.214844 9.417969 9.8125 12.21875 9.8125 Z" /></symbol><use xlink:href="#svg-apple" /></svg>`,
	"archive":     `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-archive" viewBox="0 0 32 32"><path class="svg-fill" d="M 4 5 L 4 11 L 5 11 L 5 27 L 27 27 L 27 11 L 28 11 L 28 5 Z M 6 7 L 26 7 L 26 9 L 6 9 Z M 7 11 L 25 11 L 25 25 L 7 25 Z M 12.8125 13 C 12.261719 13.050781 11.855469 13.542969 11.90625 14.09375 C 11.957031 14.644531 12.449219 15.050781 13 15 L 19 15 C 19.359375 15.003906 19.695313 14.816406 19.878906 14.503906 C 20.058594 14.191406 20.058594 13.808594 19.878906 13.496094 C 19.695313 13.183594 19.359375 12.996094 19 13 L 13 13 C 12.96875 13 12.9375 13 12.90625 13 C 12.875 13 12.84375 13 12.8125 13 Z" /></symbol><use xlink:href="#svg-archive" /></svg>`,
	"backward":    `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-backward" viewBox="0 0 32 32"><path class="svg-fill" d="M 17 5 L 15.40625 6.1875 L 3.40625 15.1875 L 2.34375 16 L 3.40625 16.8125 L 15.40625 25.8125 L 17 27 L 17 19.625 L 25.40625 25.8125 L 27 26.96875 L 27 5.03125 L 25.40625 6.1875 L 17 12.375 Z M 25 8.96875 L 25 23.03125 L 16.59375 16.84375 L 15.46875 16 L 16.59375 15.15625 Z M 15 9 L 15 23 L 5.6875 16 Z" /></symbol><use xlink:href="#svg-backward" /></svg>`,
	"bell":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-bell" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 3 C 14.894531 3 14 3.894531 14 5 C 14 5.085938 14.019531 5.167969 14.03125 5.25 C 10.574219 6.132813 8 9.273438 8 13 L 8 22 C 8 22.566406 7.566406 23 7 23 L 6 23 L 6 25 L 13.1875 25 C 13.074219 25.316406 13 25.648438 13 26 C 13 27.644531 14.355469 29 16 29 C 17.644531 29 19 27.644531 19 26 C 19 25.648438 18.925781 25.316406 18.8125 25 L 26 25 L 26 23 L 25 23 C 24.433594 23 24 22.566406 24 22 L 24 13.28125 C 24 9.523438 21.488281 6.171875 17.96875 5.25 C 17.980469 5.167969 18 5.085938 18 5 C 18 3.894531 17.105469 3 16 3 Z M 15.5625 7 C 15.707031 6.988281 15.851563 7 16 7 C 16.0625 7 16.125 7 16.1875 7 C 19.453125 7.097656 22 9.960938 22 13.28125 L 22 22 C 22 22.351563 22.074219 22.683594 22.1875 23 L 9.8125 23 C 9.925781 22.683594 10 22.351563 10 22 L 10 13 C 10 9.824219 12.445313 7.226563 15.5625 7 Z M 16 25 C 16.5625 25 17 25.4375 17 26 C 17 26.5625 16.5625 27 16 27 C 15.4375 27 15 26.5625 15 26 C 15 25.4375 15.4375 25 16 25 Z" /></symbol><use xlink:href="#svg-bell" /></svg>`,
	"bolt":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-bolt" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 6 L 16 15 L 20 16 L 16.101563 26 L 16 26 L 16 17.96875 L 12 16.96875 L 15.898438 6 L 16 6 M 18 4 L 14.488281 4 L 14.015625 5.328125 L 10.113281 16.300781 L 9.378906 18.375 L 11.515625 18.910156 L 14 19.53125 L 14 28 L 17.46875 28 L 17.964844 26.726563 L 21.863281 16.726563 L 22.6875 14.609375 L 18 13.4375 Z" /></symbol><use xlink:href="#svg-bolt" /></svg>`,
	"bookmark":    `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-bookmark" viewBox="0 0 32 32"><path class="svg-fill" d="M 7 5 L 7 28 L 8.59375 26.8125 L 16 21.25 L 23.40625 26.8125 L 25 28 L 25 5 Z M 9 7 L 23 7 L 23 24 L 16.59375 19.1875 L 16 18.75 L 15.40625 19.1875 L 9 24 Z" /></symbol><use xlink:href="#svg-bookmark" /></svg>`,
	"calendar":    `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-calendar" viewBox="0 0 32 32"><path class="svg-fill" d="M 9 4 L 9 5 L 5 5 L 5 27 L 27 27 L 27 5 L 23 5 L 23 4 L 21 4 L 21 5 L 11 5 L 11 4 Z M 7 7 L 9 7 L 9 8 L 11 8 L 11 7 L 21 7 L 21 8 L 23 8 L 23 7 L 25 7 L 25 9 L 7 9 Z M 7 11 L 25 11 L 25 25 L 7 25 Z M 13 13 L 13 15 L 15 15 L 15 13 Z M 17 13 L 17 15 L 19 15 L 19 13 Z M 21 13 L 21 15 L 23 15 L 23 13 Z M 9 17 L 9 19 L 11 19 L 11 17 Z M 13 17 L 13 19 L 15 19 L 15 17 Z M 17 17 L 17 19 L 19 19 L 19 17 Z M 21 17 L 21 19 L 23 19 L 23 17 Z M 9 21 L 9 23 L 11 23 L 11 21 Z M 13 21 L 13 23 L 15 23 L 15 21 Z M 17 21 L 17 23 L 19 23 L 19 21 Z" /></symbol><use xlink:href="#svg-calendar" /></svg>`,
	"camera":      `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-camera" viewBox="0 0 32 32"><path class="svg-fill" d="M 11.5 6 L 11.1875 6.40625 L 10 8 L 3 8 L 3 26 L 29 26 L 29 8 L 22 8 L 20.8125 6.40625 L 20.5 6 Z M 12.5 8 L 19.5 8 L 20.6875 9.59375 L 21 10 L 27 10 L 27 24 L 5 24 L 5 10 L 11 10 L 11.3125 9.59375 Z M 8 11 C 7.449219 11 7 11.449219 7 12 C 7 12.550781 7.449219 13 8 13 C 8.550781 13 9 12.550781 9 12 C 9 11.449219 8.550781 11 8 11 Z M 16 11 C 12.699219 11 10 13.699219 10 17 C 10 20.300781 12.699219 23 16 23 C 19.300781 23 22 20.300781 22 17 C 22 13.699219 19.300781 11 16 11 Z M 16 13 C 18.222656 13 20 14.777344 20 17 C 20 19.222656 18.222656 21 16 21 C 13.777344 21 12 19.222656 12 17 C 12 14.777344 13.777344 13 16 13 Z" /></symbol><use xlink:href="#svg-camera" /></svg>`,
	"cart":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-cart" viewBox="0 0 32 32"><path class="svg-fill" d="M 5 7 C 4.449219 7 4 7.449219 4 8 C 4 8.550781 4.449219 9 5 9 L 7.21875 9 L 9.84375 19.5 C 10.066406 20.390625 10.863281 21 11.78125 21 L 23.25 21 C 24.152344 21 24.917969 20.402344 25.15625 19.53125 L 27.75 10 L 11 10 L 11.5 12 L 25.15625 12 L 23.25 19 L 11.78125 19 L 9.15625 8.5 C 8.933594 7.609375 8.136719 7 7.21875 7 Z M 22 21 C 20.355469 21 19 22.355469 19 24 C 19 25.644531 20.355469 27 22 27 C 23.644531 27 25 25.644531 25 24 C 25 22.355469 23.644531 21 22 21 Z M 13 21 C 11.355469 21 10 22.355469 10 24 C 10 25.644531 11.355469 27 13 27 C 14.644531 27 16 25.644531 16 24 C 16 22.355469 14.644531 21 13 21 Z M 13 23 C 13.5625 23 14 23.4375 14 24 C 14 24.5625 13.5625 25 13 25 C 12.4375 25 12 24.5625 12 24 C 12 23.4375 12.4375 23 13 23 Z M 22 23 C 22.5625 23 23 23.4375 23 24 C 23 24.5625 22.5625 25 22 25 C 21.4375 25 21 24.5625 21 24 C 21 23.4375 21.4375 23 22 23 Z" /></symbol><use xlink:href="#svg-cart" /></svg>`,
	"check":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-check" viewBox="0 0 32 32"><path class="svg-fill" d="M 28.28125 6.28125 L 11 23.5625 L 3.71875 16.28125 L 2.28125 17.71875 L 10.28125 25.71875 L 11 26.40625 L 11.71875 25.71875 L 29.71875 7.71875 Z" /></symbol><use xlink:href="#svg-check" /></svg>`,
	"clock":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-clock" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 4 C 9.382813 4 4 9.382813 4 16 C 4 22.617188 9.382813 28 16 28 C 22.617188 28 28 22.617188 28 16 C 28 9.382813 22.617188 4 16 4 Z M 16 6 C 21.535156 6 26 10.464844 26 16 C 26 21.535156 21.535156 26 16 26 C 10.464844 26 6 21.535156 6 16 C 6 10.464844 10.464844 6 16 6 Z M 15 8 L 15 17 L 22 17 L 22 15 L 17 15 L 17 8 Z" /></symbol><use xlink:href="#svg-clock" /></svg>`,
	"code":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-code" viewBox="0 0 32 32"><path class="svg-fill" d="M 18 5 L 12 27 L 14 27 L 20 5 Z M 7.9375 6.40625 L 1.1875 15.40625 L 0.75 16 L 1.1875 16.59375 L 7.9375 25.59375 L 9.5625 24.40625 L 3.25 16 L 9.5625 7.59375 Z M 24.0625 6.40625 L 22.4375 7.59375 L 28.75 16 L 22.4375 24.40625 L 24.0625 25.59375 L 30.8125 16.59375 L 31.25 16 L 30.8125 15.40625 Z" /></symbol><use xlink:href="#svg-code" /></svg>`,
	"cog":         `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-cog" viewBox="0 0 32 32"><path class="svg-fill" d="M 13.1875 3 L 13.03125 3.8125 L 12.4375 6.78125 C 11.484375 7.15625 10.625 7.683594 9.84375 8.3125 L 6.9375 7.3125 L 6.15625 7.0625 L 5.75 7.78125 L 3.75 11.21875 L 3.34375 11.9375 L 3.9375 12.46875 L 6.1875 14.4375 C 6.105469 14.949219 6 15.460938 6 16 C 6 16.539063 6.105469 17.050781 6.1875 17.5625 L 3.9375 19.53125 L 3.34375 20.0625 L 3.75 20.78125 L 5.75 24.21875 L 6.15625 24.9375 L 6.9375 24.6875 L 9.84375 23.6875 C 10.625 24.316406 11.484375 24.84375 12.4375 25.21875 L 13.03125 28.1875 L 13.1875 29 L 18.8125 29 L 18.96875 28.1875 L 19.5625 25.21875 C 20.515625 24.84375 21.375 24.316406 22.15625 23.6875 L 25.0625 24.6875 L 25.84375 24.9375 L 26.25 24.21875 L 28.25 20.78125 L 28.65625 20.0625 L 28.0625 19.53125 L 25.8125 17.5625 C 25.894531 17.050781 26 16.539063 26 16 C 26 15.460938 25.894531 14.949219 25.8125 14.4375 L 28.0625 12.46875 L 28.65625 11.9375 L 28.25 11.21875 L 26.25 7.78125 L 25.84375 7.0625 L 25.0625 7.3125 L 22.15625 8.3125 C 21.375 7.683594 20.515625 7.15625 19.5625 6.78125 L 18.96875 3.8125 L 18.8125 3 Z M 14.8125 5 L 17.1875 5 L 17.6875 7.59375 L 17.8125 8.1875 L 18.375 8.375 C 19.511719 8.730469 20.542969 9.332031 21.40625 10.125 L 21.84375 10.53125 L 22.40625 10.34375 L 24.9375 9.46875 L 26.125 11.5 L 24.125 13.28125 L 23.65625 13.65625 L 23.8125 14.25 C 23.941406 14.820313 24 15.402344 24 16 C 24 16.597656 23.941406 17.179688 23.8125 17.75 L 23.6875 18.34375 L 24.125 18.71875 L 26.125 20.5 L 24.9375 22.53125 L 22.40625 21.65625 L 21.84375 21.46875 L 21.40625 21.875 C 20.542969 22.667969 19.511719 23.269531 18.375 23.625 L 17.8125 23.8125 L 17.6875 24.40625 L 17.1875 27 L 14.8125 27 L 14.3125 24.40625 L 14.1875 23.8125 L 13.625 23.625 C 12.488281 23.269531 11.457031 22.667969 10.59375 21.875 L 10.15625 21.46875 L 9.59375 21.65625 L 7.0625 22.53125 L 5.875 20.5 L 7.875 18.71875 L 8.34375 18.34375 L 8.1875 17.75 C 8.058594 17.179688 8 16.597656 8 16 C 8 15.402344 8.058594 14.820313 8.1875 14.25 L 8.34375 13.65625 L 7.875 13.28125 L 5.875 11.5 L 7.0625 9.46875 L 9.59375 10.34375 L 10.15625 10.53125 L 10.59375 10.125 C 11.457031 9.332031 12.488281 8.730469 13.625 8.375 L 14.1875 8.1875 L 14.3125 7.59375 Z M 16 11 C 13.25 11 11 13.25 11 16 C 11 18.75 13.25 21 16 21 C 18.75 21 21 18.75 21 16 C 21 13.25 18.75 11 16 11 Z M 16 13 C 17.667969 13 19 14.332031 19 16 C 19 17.667969 17.667969 19 16 19 C 14.332031 19 13 17.667969 13 16 C 13 14.332031 14.332031 13 16 13 Z" /></symbol><use xlink:href="#svg-cog" /></svg>`,
	"comment":     `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-comment" viewBox="0 0 32 32"><path class="svg-fill" d="M 3 6 L 3 26 L 12.585938 26 L 16 29.414063 L 19.414063 26 L 29 26 L 29 6 Z M 5 8 L 27 8 L 27 24 L 18.585938 24 L 16 26.585938 L 13.414063 24 L 5 24 Z M 9 11 L 9 13 L 23 13 L 23 11 Z M 9 15 L 9 17 L 23 17 L 23 15 Z M 9 19 L 9 21 L 19 21 L 19 19 Z" /></symbol><use xlink:href="#svg-comment" /></svg>`,
	"compass":     `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-compass" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 4 C 9.382813 4 4 9.382813 4 16 C 4 22.617188 9.382813 28 16 28 C 22.617188 28 28 22.617188 28 16 C 28 9.382813 22.617188 4 16 4 Z M 14.96875 6.0625 C 14.980469 6.0625 14.988281 6.0625 15 6.0625 L 15 7 L 17 7 L 17 6.0625 C 21.738281 6.527344 25.472656 10.261719 25.9375 15 L 25 15 L 25 17 L 25.9375 17 C 25.472656 21.738281 21.738281 25.472656 17 25.9375 L 17 25 L 15 25 L 15 25.9375 C 10.261719 25.472656 6.527344 21.738281 6.0625 17 L 7 17 L 7 15 L 6.0625 15 C 6.527344 10.269531 10.246094 6.539063 14.96875 6.0625 Z M 22.5 9.5 L 14.15625 14.15625 L 9.5 22.5 L 17.84375 17.84375 Z M 16 14.5 C 16.828125 14.5 17.5 15.171875 17.5 16 C 17.5 16.828125 16.828125 17.5 16 17.5 C 15.171875 17.5 14.5 16.828125 14.5 16 C 14.5 15.171875 15.171875 14.5 16 14.5 Z" /></symbol><use xlink:href="#svg-compass" /></svg>`,
	"database":    `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-database" viewBox="0 0 32 32"><path class="svg-fill" d="M 6 4 L 6 28 L 26 28 L 26 4 Z M 8 6 L 24 6 L 24 11 L 8 11 Z M 8 13 L 24 13 L 24 19 L 8 19 Z M 8 21 L 24 21 L 24 26 L 8 26 Z" /></symbol><use xlink:href="#svg-database" /></svg>`,
	"desktop":     `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-desktop" viewBox="0 0 32 32"><path class="svg-fill" d="M 2 6 L 2 24 L 15 24 L 15 26 L 10 26 L 10 28 L 22 28 L 22 26 L 17 26 L 17 24 L 30 24 L 30 6 Z M 4 8 L 28 8 L 28 22 L 4 22 Z" /></symbol><use xlink:href="#svg-desktop" /></svg>`,
	"dna":         `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-dna" viewBox="0 0 32 32"><path class="svg-fill" d="M 6 5 C 6 8.023438 7.28125 10.375 9.09375 12.21875 C 10.53125 13.683594 12.277344 14.886719 14.0625 16 C 9.894531 18.632813 6 21.511719 6 27 L 8 27 C 8 22.304688 11.78125 19.742188 15.96875 17.15625 C 16.964844 17.769531 17.9375 18.367188 18.84375 19 L 15.1875 19 C 14.1875 19.601563 13.304688 20.300781 12.40625 21 L 21.3125 21 C 21.363281 21.050781 21.417969 21.105469 21.46875 21.15625 C 22.039063 21.734375 22.542969 22.347656 22.9375 23 L 10.59375 23 C 10.09375 23.601563 9.800781 24.300781 9.5 25 L 23.75 25 C 23.90625 25.617188 24 26.273438 24 27 L 26 27 C 26 23.976563 24.71875 21.625 22.90625 19.78125 C 21.09375 17.9375 18.78125 16.53125 16.53125 15.15625 C 14.28125 13.78125 12.09375 12.4375 10.53125 10.84375 C 8.96875 9.25 8 7.476563 8 5 Z M 24 5 C 24 5.71875 23.882813 6.378906 23.71875 7 L 9.5 7 C 9.800781 7.699219 10.09375 8.398438 10.59375 9 L 22.875 9 C 22.4375 9.722656 21.882813 10.378906 21.25 11 L 12.40625 11 C 13.304688 11.699219 14.1875 12.398438 15.1875 13 L 18.875 13 C 18.273438 13.4375 17.640625 13.878906 17 14.3125 C 17.601563 14.710938 18.210938 15.007813 18.8125 15.40625 C 22.613281 12.90625 26 10 26 5 Z" /></symbol><use xlink:href="#svg-dna" /></svg>`,
	"dot":         `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-dot" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 4 C 9.382813 4 4 9.382813 4 16 C 4 22.617188 9.382813 28 16 28 C 22.617188 28 28 22.617188 28 16 C 28 9.382813 22.617188 4 16 4 Z M 16 6 C 21.535156 6 26 10.464844 26 16 C 26 21.535156 21.535156 26 16 26 C 10.464844 26 6 21.535156 6 16 C 6 10.464844 10.464844 6 16 6 Z M 16 13 C 14.34375 13 13 14.34375 13 16 C 13 17.65625 14.34375 19 16 19 C 17.65625 19 19 17.65625 19 16 C 19 14.34375 17.65625 13 16 13 Z" /></symbol><use xlink:href="#svg-dot" /></svg>`,
	"down":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-down" viewBox="0 0 32 32"><path class="svg-fill" d="M 4.21875 10.78125 L 2.78125 12.21875 L 15.28125 24.71875 L 16 25.40625 L 16.71875 24.71875 L 29.21875 12.21875 L 27.78125 10.78125 L 16 22.5625 Z" /></symbol><use xlink:href="#svg-down" /></svg>`,
	"download":    `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-download" viewBox="0 0 32 32"><path class="svg-fill" d="M 15 4 L 15 20.5625 L 9.71875 15.28125 L 8.28125 16.71875 L 15.28125 23.71875 L 16 24.40625 L 16.71875 23.71875 L 23.71875 16.71875 L 22.28125 15.28125 L 17 20.5625 L 17 4 Z M 7 26 L 7 28 L 25 28 L 25 26 Z" /></symbol><use xlink:href="#svg-download" /></svg>`,
	"edit":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-edit" viewBox="0 0 32 32"><path class="svg-fill" d="M 25 4.03125 C 24.234375 4.03125 23.484375 4.328125 22.90625 4.90625 L 13 14.78125 L 12.78125 15 L 12.71875 15.3125 L 12.03125 18.8125 L 11.71875 20.28125 L 13.1875 19.96875 L 16.6875 19.28125 L 17 19.21875 L 17.21875 19 L 27.09375 9.09375 C 28.246094 7.941406 28.246094 6.058594 27.09375 4.90625 C 26.515625 4.328125 25.765625 4.03125 25 4.03125 Z M 25 5.96875 C 25.234375 5.96875 25.464844 6.089844 25.6875 6.3125 C 26.132813 6.757813 26.132813 7.242188 25.6875 7.6875 L 16 17.375 L 14.28125 17.71875 L 14.625 16 L 24.3125 6.3125 C 24.535156 6.089844 24.765625 5.96875 25 5.96875 Z M 4 8 L 4 28 L 24 28 L 24 14.8125 L 22 16.8125 L 22 26 L 6 26 L 6 10 L 15.1875 10 L 17.1875 8 Z" /></symbol><use xlink:href="#svg-edit" /></svg>`,
	"error":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-error" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 3.21875 L 15.125 4.71875 L 3.125 25.5 L 2.28125 27 L 29.71875 27 L 28.875 25.5 L 16.875 4.71875 Z M 16 7.21875 L 26.25 25 L 5.75 25 Z M 15 14 L 15 20 L 17 20 L 17 14 Z M 15 21 L 15 23 L 17 23 L 17 21 Z" /></symbol><use xlink:href="#svg-error" /></svg>`,
	"export":      `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-export" viewBox="0 0 32 32"><path class="svg-fill" d="M 6 4 L 6 28 L 26 28 L 26 20 L 24 22 L 24 26 L 8 26 L 8 6 L 24 6 L 24 10 L 26 12 L 26 4 Z M 22.40625 11 L 21 12.40625 L 23.5625 15 L 13.90625 15 L 13.90625 17 L 23.5625 17 L 21 19.59375 L 22.40625 21 L 26.71875 16.71875 L 27.40625 16 L 26.71875 15.28125 Z" /></symbol><use xlink:href="#svg-export" /></svg>`,
	"external":    `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-external" viewBox="0 0 32 32"><path class="svg-fill" d="M 23.414062 4.4375 L 22 5.8515625 L 26.167969 10 L 16.5 10 C 13.468 10 11 12.467 11 15.5 C 11 18.533 13.468 21 16.5 21 L 17 21 L 17 19 L 16.5 19 C 14.57 19 13 17.43 13 15.5 C 13 13.57 14.57 12 16.5 12 L 26.171875 12 L 22.007812 16.164062 L 23.421875 17.578125 L 30 11 L 23.414062 4.4375 z M 5 5 L 5 27 L 27 27 L 27 17 L 25 19 L 25 25 L 7 25 L 7 7 L 17.853516 7 L 19.853516 5 L 5 5 z" /></symbol><use xlink:href="#svg-external" /></svg>`,
	"eye":         `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-eye" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 8 C 7.664063 8 1.25 15.34375 1.25 15.34375 L 0.65625 16 L 1.25 16.65625 C 1.25 16.65625 7.097656 23.324219 14.875 23.9375 C 15.246094 23.984375 15.617188 24 16 24 C 16.382813 24 16.753906 23.984375 17.125 23.9375 C 24.902344 23.324219 30.75 16.65625 30.75 16.65625 L 31.34375 16 L 30.75 15.34375 C 30.75 15.34375 24.335938 8 16 8 Z M 16 10 C 18.203125 10 20.234375 10.601563 22 11.40625 C 22.636719 12.460938 23 13.675781 23 15 C 23 18.613281 20.289063 21.582031 16.78125 21.96875 C 16.761719 21.972656 16.738281 21.964844 16.71875 21.96875 C 16.480469 21.980469 16.242188 22 16 22 C 15.734375 22 15.476563 21.984375 15.21875 21.96875 C 11.710938 21.582031 9 18.613281 9 15 C 9 13.695313 9.351563 12.480469 9.96875 11.4375 L 9.9375 11.4375 C 11.71875 10.617188 13.773438 10 16 10 Z M 16 12 C 14.34375 12 13 13.34375 13 15 C 13 16.65625 14.34375 18 16 18 C 17.65625 18 19 16.65625 19 15 C 19 13.34375 17.65625 12 16 12 Z M 7.25 12.9375 C 7.09375 13.609375 7 14.285156 7 15 C 7 16.753906 7.5 18.394531 8.375 19.78125 C 5.855469 18.324219 4.105469 16.585938 3.53125 16 C 4.011719 15.507813 5.351563 14.203125 7.25 12.9375 Z M 24.75 12.9375 C 26.648438 14.203125 27.988281 15.507813 28.46875 16 C 27.894531 16.585938 26.144531 18.324219 23.625 19.78125 C 24.5 18.394531 25 16.753906 25 15 C 25 14.285156 24.90625 13.601563 24.75 12.9375 Z" /></symbol><use xlink:href="#svg-eye" /></svg>`,
	"file":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-file" viewBox="0 0 32 32"><path class="svg-fill" d="M 6 3 L 6 29 L 26 29 L 26 9.59375 L 25.71875 9.28125 L 19.71875 3.28125 L 19.40625 3 Z M 8 5 L 18 5 L 18 11 L 24 11 L 24 27 L 8 27 Z M 20 6.4375 L 22.5625 9 L 20 9 Z M 11 13 L 11 15 L 21 15 L 21 13 Z M 11 17 L 11 19 L 21 19 L 21 17 Z M 11 21 L 11 23 L 21 23 L 21 21 Z" /></symbol><use xlink:href="#svg-file" /></svg>`,
	"file-text":   `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-file-text" viewBox="0 0 32 32"><path class="svg-fill" d="M 6 3 L 6 29 L 26 29 L 26 9.59375 L 25.71875 9.28125 L 19.71875 3.28125 L 19.40625 3 Z M 8 5 L 18 5 L 18 11 L 24 11 L 24 27 L 8 27 Z M 20 6.4375 L 22.5625 9 L 20 9 Z M 11 13 L 11 15 L 21 15 L 21 13 Z M 11 17 L 11 19 L 21 19 L 21 17 Z M 11 21 L 11 23 L 21 23 L 21 21 Z" /></symbol><use xlink:href="#svg-file-text" /></svg>`,
	"filter":      `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-filter" viewBox="0 0 32 32"><path class="svg-fill" d="M 5 4 L 5 6.34375 L 5.21875 6.625 L 13 16.34375 L 13 28 L 14.59375 26.8125 L 18.59375 23.8125 L 19 23.5 L 19 16.34375 L 26.78125 6.625 L 27 6.34375 L 27 4 Z M 7.28125 6 L 24.71875 6 L 17.53125 15 L 14.46875 15 Z M 15 17 L 17 17 L 17 22.5 L 15 24 Z" /></symbol><use xlink:href="#svg-filter" /></svg>`,
	"fingerprint": `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-fingerprint" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 4 C 15.738281 4 15.503906 4.015625 15.25 4.03125 C 13.84375 4.109375 12.46875 4.398438 11.1875 4.90625 L 11.9375 6.78125 C 13.015625 6.351563 14.152344 6.097656 15.34375 6.03125 C 15.550781 6.019531 15.773438 6 16 6 C 17.882813 6 19.664063 6.476563 21.21875 7.3125 L 22.15625 5.5625 C 20.320313 4.574219 18.21875 4 16 4 Z M 9.5 5.71875 C 8.324219 6.398438 7.242188 7.273438 6.3125 8.3125 C 5.898438 8.773438 5.535156 9.292969 5.1875 9.8125 C 4.804688 10.382813 4.472656 10.980469 4.1875 11.59375 L 6 12.40625 C 6.238281 11.890625 6.519531 11.394531 6.84375 10.90625 C 7.136719 10.464844 7.464844 10.042969 7.8125 9.65625 C 8.605469 8.769531 9.511719 8.042969 10.5 7.46875 Z M 23.96875 6.71875 L 22.75 8.3125 C 25.191406 10.207031 26.789063 13.09375 26.96875 16.40625 C 26.972656 16.46875 27.015625 17.015625 26.96875 17.9375 L 28.96875 18.0625 C 29.019531 17.058594 28.976563 16.398438 28.96875 16.28125 C 28.757813 12.378906 26.851563 8.953125 23.96875 6.71875 Z M 16 7 L 16 9 C 20.25 9 23.769531 12.3125 24 16.5625 C 24.007813 16.675781 24.128906 19.628906 23 23.1875 L 24.90625 23.78125 C 26.144531 19.878906 26.015625 16.75 26 16.46875 C 25.714844 11.175781 21.292969 7 16 7 Z M 14.15625 7.15625 C 12.003906 7.550781 10.050781 8.652344 8.5625 10.3125 C 8.242188 10.667969 7.925781 11.066406 7.65625 11.46875 L 7.6875 11.46875 L 7.6875 11.5 C 6.519531 13.261719 5.902344 15.300781 6 17.40625 C 6 17.425781 6 17.449219 6 17.46875 L 6 17.96875 L 8 18.03125 L 8 17.375 C 7.910156 15.660156 8.382813 14 9.34375 12.5625 C 9.554688 12.242188 9.777344 11.9375 10.03125 11.65625 C 11.230469 10.316406 12.8125 9.441406 14.53125 9.125 Z M 15.59375 10 C 14.003906 10.085938 12.523438 10.722656 11.34375 11.78125 L 12.65625 13.28125 C 13.503906 12.519531 14.582031 12.0625 15.71875 12 C 15.824219 11.992188 15.902344 12 16 12 C 16.582031 12 17.140625 12.097656 17.65625 12.28125 L 18.34375 10.40625 C 17.617188 10.148438 16.808594 10 16 10 C 15.855469 10 15.730469 9.992188 15.59375 10 Z M 19.875 11.15625 L 18.78125 12.84375 C 20.050781 13.691406 20.910156 15.078125 21 16.71875 L 23 16.625 C 22.875 14.34375 21.652344 12.339844 19.875 11.15625 Z M 15.78125 13 C 14.726563 13.058594 13.738281 13.554688 13.03125 14.34375 C 12.324219 15.132813 11.941406 16.160156 12 17.21875 C 12 17.214844 12.050781 18.34375 11.59375 19.65625 C 11.136719 20.96875 10.222656 22.449219 8.25 23.40625 C 8.25 23.40625 7.957031 23.539063 7.625 23.6875 C 7.292969 23.835938 6.875 24.007813 6.78125 24.03125 L 7.21875 25.96875 C 7.664063 25.867188 8.09375 25.667969 8.46875 25.5 C 8.84375 25.332031 9.125 25.1875 9.125 25.1875 C 11.625 23.976563 12.886719 21.980469 13.46875 20.3125 C 14.050781 18.644531 14.007813 17.316406 14 17.125 L 14 17.09375 C 13.96875 16.554688 14.136719 16.058594 14.5 15.65625 C 14.863281 15.25 15.347656 15.027344 15.875 15 C 15.925781 14.996094 15.964844 15 16 15 L 16 13 C 15.917969 13 15.851563 12.996094 15.78125 13 Z M 10.15625 13.125 C 9.328125 14.363281 8.925781 15.839844 9 17.34375 C 9 17.355469 9 17.363281 9 17.375 C 9.003906 17.457031 9.089844 19.640625 6.9375 20.6875 C 6.890625 20.707031 6.144531 21 5 21 L 5 23 C 6.566406 23 7.75 22.53125 7.75 22.53125 L 7.78125 22.53125 L 7.8125 22.5 C 11.035156 20.9375 11.003906 17.460938 11 17.28125 L 11 17.25 C 10.941406 16.160156 11.25 15.140625 11.84375 14.25 Z M 17.90625 13.46875 L 16.9375 15.25 C 17.53125 15.570313 17.960938 16.152344 18 16.875 C 18.007813 17.039063 18.285156 23.261719 13.375 27.21875 L 14.625 28.78125 C 20.34375 24.175781 20.027344 17.25 20 16.78125 C 19.925781 15.351563 19.097656 14.109375 17.90625 13.46875 Z M 16 16 C 15.449219 16 15 16.449219 15 17 C 15 17.023438 15 17.042969 15 17.0625 C 15 17.0625 15.117188 19.121094 14.09375 21.4375 L 15.90625 22.25 C 17.089844 19.574219 17.007813 17.171875 17 17 C 17 16.976563 17 16.957031 17 16.9375 C 16.964844 16.414063 16.53125 16 16 16 Z M 20.96875 17.9375 C 20.84375 19.96875 20.203125 24.132813 17.25 27.625 L 18.75 28.90625 C 22.113281 24.933594 22.828125 20.347656 22.96875 18.0625 Z M 13.5625 22.5 C 12.761719 23.847656 11.523438 25.144531 9.5625 26.09375 L 10.4375 27.90625 C 12.757813 26.78125 14.308594 25.136719 15.28125 23.5 Z" /></symbol><use xlink:href="#svg-fingerprint" /></svg>`,
	"fire":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-fire" viewBox="0 0 32 32"><path class="svg-fill" d="M 16.798828 4.390625 L 13.802734 9.3867188 L 11.953125 7.5390625 L 11.25 8.3378906 C 7.767 12.285891 6 15.873 6 19 C 6 23.962 10.486 28 16 28 C 21.514 28 26 23.962 26 19 C 26 14.238 20.803078 8.3660625 17.705078 5.2890625 L 16.798828 4.390625 z M 17.191406 7.6230469 C 19.767406 10.309047 24 15.288 24 19 C 24 21.391212 22.620267 23.5043 20.523438 24.767578 C 20.822014 24.054088 21 23.267477 21 22.429688 C 21 20.048687 19.315344 17.224391 17.902344 15.275391 L 17.058594 14.109375 L 14.84375 17.431641 L 13.4375 16.025391 L 12.777344 17.115234 C 11.598344 19.061234 11 20.848688 11 22.429688 C 11 23.267477 11.177986 24.054088 11.476562 24.767578 C 9.3797333 23.5043 8 21.391212 8 19 C 8 16.611 9.3976406 13.676703 12.056641 10.470703 L 14.197266 12.613281 L 17.191406 7.6230469 z M 17.103516 17.648438 C 18.333516 19.565437 19 21.233687 19 22.429688 C 19 24.398688 17.654 26 16 26 C 14.346 26 13 24.398688 13 22.429688 C 13 21.507688 13.290234 20.45225 13.865234 19.28125 L 15.15625 20.570312 L 17.103516 17.648438 z" /></symbol><use xlink:href="#svg-fire" /></svg>`,
	"flag":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-flag" viewBox="0 0 32 32"><path class="svg-fill" d="M 5 5 L 5 29 L 7 29 L 7 19 L 15 19 L 15 22 L 27 22 L 27 8 L 17 8 L 17 5 Z M 7 7 L 15 7 L 15 17 L 7 17 Z M 17 10 L 25 10 L 25 20 L 17 20 Z" /></symbol><use xlink:href="#svg-flag" /></svg>`,
	"folder":      `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-folder" viewBox="0 0 32 32"><path class="svg-fill" d="M 6 3 L 6 29 L 26 29 L 26 15.4375 L 27.71875 13.71875 L 28 13.40625 L 28 3 Z M 8 5 L 22 5 L 22 13.40625 L 22.28125 13.71875 L 24 15.4375 L 24 27 L 8 27 Z M 24 5 L 26 5 L 26 12.5625 L 25 13.5625 L 24 12.5625 Z" /></symbol><use xlink:href="#svg-folder" /></svg>`,
	"folder-open": `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-folder-open" viewBox="0 0 32 32"><path class="svg-fill" d="M 5 3 L 5 27.8125 L 5.78125 27.96875 L 17.78125 30.46875 L 19 30.71875 L 19 28 L 25 28 L 25 15.4375 L 26.71875 13.71875 L 27 13.40625 L 27 3 Z M 14.125 5 L 25 5 L 25 12.5625 L 23.28125 14.28125 L 23 14.59375 L 23 26 L 19 26 L 19 17.09375 L 18.71875 16.78125 L 17 15.0625 L 17 5.71875 Z M 7 5.28125 L 15 7.28125 L 15 15.90625 L 15.28125 16.21875 L 17 17.9375 L 17 28.28125 L 7 26.1875 Z" /></symbol><use xlink:href="#svg-folder-open" /></svg>`,
	"forward":     `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-forward" viewBox="0 0 32 32"><path class="svg-fill" d="M 15 5 L 15 12.375 L 6.59375 6.1875 L 5 5.03125 L 5 26.96875 L 6.59375 25.8125 L 15 19.625 L 15 27 L 16.59375 25.8125 L 28.59375 16.8125 L 29.65625 16 L 28.59375 15.1875 L 16.59375 6.1875 Z M 7 8.96875 L 15.40625 15.15625 L 16.53125 16 L 15.40625 16.84375 L 7 23.03125 Z M 17 9 L 26.3125 16 L 17 23 Z" /></symbol><use xlink:href="#svg-forward" /></svg>`,
	"gift":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-gift" viewBox="0 0 32 32"><path class="svg-fill" d="M 12 5 C 10.355469 5 9 6.355469 9 8 C 9 8.351563 9.074219 8.683594 9.1875 9 L 4 9 L 4 15 L 5 15 L 5 28 L 27 28 L 27 15 L 28 15 L 28 9 L 22.8125 9 C 22.925781 8.683594 23 8.351563 23 8 C 23 6.355469 21.644531 5 20 5 C 18.25 5 17.0625 6.328125 16.28125 7.4375 C 16.175781 7.585938 16.09375 7.730469 16 7.875 C 15.90625 7.730469 15.824219 7.585938 15.71875 7.4375 C 14.9375 6.328125 13.75 5 12 5 Z M 12 7 C 12.625 7 13.4375 7.671875 14.0625 8.5625 C 14.214844 8.78125 14.191406 8.792969 14.3125 9 L 12 9 C 11.433594 9 11 8.566406 11 8 C 11 7.433594 11.433594 7 12 7 Z M 20 7 C 20.566406 7 21 7.433594 21 8 C 21 8.566406 20.566406 9 20 9 L 17.6875 9 C 17.808594 8.792969 17.785156 8.78125 17.9375 8.5625 C 18.5625 7.671875 19.375 7 20 7 Z M 6 11 L 26 11 L 26 13 L 17 13 L 17 12 L 15 12 L 15 13 L 6 13 Z M 7 15 L 25 15 L 25 26 L 17 26 L 17 16 L 15 16 L 15 26 L 7 26 Z" /></symbol><use xlink:href="#svg-gift" /></svg>`,
	"github":      `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-github" viewBox="0 0 32 32"><path class="svg-fill" fill-rule="evenodd" d="M 16 4 C 9.371094 4 4 9.371094 4 16 C 4 21.300781 7.4375 25.800781 12.207031 27.386719 C 12.808594 27.496094 13.027344 27.128906 13.027344 26.808594 C 13.027344 26.523438 13.015625 25.769531 13.011719 24.769531 C 9.671875 25.492188 8.96875 23.160156 8.96875 23.160156 C 8.421875 21.773438 7.636719 21.402344 7.636719 21.402344 C 6.546875 20.660156 7.71875 20.675781 7.71875 20.675781 C 8.921875 20.761719 9.554688 21.910156 9.554688 21.910156 C 10.625 23.746094 12.363281 23.214844 13.046875 22.910156 C 13.15625 22.132813 13.46875 21.605469 13.808594 21.304688 C 11.144531 21.003906 8.34375 19.972656 8.34375 15.375 C 8.34375 14.0625 8.8125 12.992188 9.578125 12.152344 C 9.457031 11.851563 9.042969 10.628906 9.695313 8.976563 C 9.695313 8.976563 10.703125 8.65625 12.996094 10.207031 C 13.953125 9.941406 14.980469 9.808594 16 9.804688 C 17.019531 9.808594 18.046875 9.941406 19.003906 10.207031 C 21.296875 8.65625 22.300781 8.976563 22.300781 8.976563 C 22.957031 10.628906 22.546875 11.851563 22.421875 12.152344 C 23.191406 12.992188 23.652344 14.0625 23.652344 15.375 C 23.652344 19.984375 20.847656 20.996094 18.175781 21.296875 C 18.605469 21.664063 18.988281 22.398438 18.988281 23.515625 C 18.988281 25.121094 18.976563 26.414063 18.976563 26.808594 C 18.976563 27.128906 19.191406 27.503906 19.800781 27.386719 C 24.566406 25.796875 28 21.300781 28 16 C 28 9.371094 22.628906 4 16 4 Z" /></symbol><use xlink:href="#svg-github" /></svg>`,
	"graph":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-graph" viewBox="0 0 32 32"><path class="svg-fill" d="M 5 7 L 5 23 L 3 23 L 3 25 L 29 25 L 29 23 L 27 23 L 27 7 Z M 7 9 L 25 9 L 25 23 L 7 23 Z M 21.28125 12.28125 L 17 16.5625 L 13.71875 13.28125 L 13 12.59375 L 12.28125 13.28125 L 9.28125 16.28125 L 10.71875 17.71875 L 13 15.4375 L 16.28125 18.71875 L 17 19.40625 L 17.71875 18.71875 L 22.71875 13.71875 Z M 20 20 L 19 21 L 20 22 L 24 22 L 24 20 Z" /></symbol><use xlink:href="#svg-graph" /></svg>`,
	"grid":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-grid" viewBox="0 0 32 32"><path class="svg-fill" d="M 12 6 C 10.894531 6 10 6.894531 10 8 C 10 9.105469 10.894531 10 12 10 C 13.105469 10 14 9.105469 14 8 C 14 6.894531 13.105469 6 12 6 Z M 20 6 C 18.894531 6 18 6.894531 18 8 C 18 9.105469 18.894531 10 20 10 C 21.105469 10 22 9.105469 22 8 C 22 6.894531 21.105469 6 20 6 Z M 12 14 C 10.894531 14 10 14.894531 10 16 C 10 17.105469 10.894531 18 12 18 C 13.105469 18 14 17.105469 14 16 C 14 14.894531 13.105469 14 12 14 Z M 20 14 C 18.894531 14 18 14.894531 18 16 C 18 17.105469 18.894531 18 20 18 C 21.105469 18 22 17.105469 22 16 C 22 14.894531 21.105469 14 20 14 Z M 12 22 C 10.894531 22 10 22.894531 10 24 C 10 25.105469 10.894531 26 12 26 C 13.105469 26 14 25.105469 14 24 C 14 22.894531 13.105469 22 12 22 Z M 20 22 C 18.894531 22 18 22.894531 18 24 C 18 25.105469 18.894531 26 20 26 C 21.105469 26 22 25.105469 22 24 C 22 22.894531 21.105469 22 20 22 Z" /></symbol><use xlink:href="#svg-grid" /></svg>`,
	"handle":      `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-handle" viewBox="0 0 32 32"><path class="svg-fill" d="M 4 7 L 4 9 L 28 9 L 28 7 Z M 4 15 L 4 17 L 28 17 L 28 15 Z M 4 23 L 4 25 L 28 25 L 28 23 Z" /></symbol><use xlink:href="#svg-handle" /></svg>`,
	"happy":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-happy" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 4 C 9.382813 4 4 9.382813 4 16 C 4 22.617188 9.382813 28 16 28 C 22.617188 28 28 22.617188 28 16 C 28 9.382813 22.617188 4 16 4 Z M 16 6 C 21.535156 6 26 10.464844 26 16 C 26 21.535156 21.535156 26 16 26 C 10.464844 26 6 21.535156 6 16 C 6 10.464844 10.464844 6 16 6 Z M 11.5 12 C 10.671875 12 10 12.671875 10 13.5 C 10 14.328125 10.671875 15 11.5 15 C 12.328125 15 13 14.328125 13 13.5 C 13 12.671875 12.328125 12 11.5 12 Z M 20.5 12 C 19.671875 12 19 12.671875 19 13.5 C 19 14.328125 19.671875 15 20.5 15 C 21.328125 15 22 14.328125 22 13.5 C 22 12.671875 21.328125 12 20.5 12 Z M 10.8125 19 L 9.09375 20 C 10.476563 22.386719 13.046875 24 16 24 C 18.953125 24 21.523438 22.386719 22.90625 20 L 21.1875 19 C 20.148438 20.792969 18.226563 22 16 22 C 13.773438 22 11.851563 20.792969 10.8125 19 Z" /></symbol><use xlink:href="#svg-happy" /></svg>`,
	"hashtag":     `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-hashtag" viewBox="0 0 32 32"><path class="svg-fill" d="M 11 5 L 11 11 L 5 11 L 5 13 L 11 13 L 11 19 L 5 19 L 5 21 L 11 21 L 11 27 L 13 27 L 13 21 L 19 21 L 19 27 L 21 27 L 21 21 L 27 21 L 27 19 L 21 19 L 21 13 L 27 13 L 27 11 L 21 11 L 21 5 L 19 5 L 19 11 L 13 11 L 13 5 Z M 13 13 L 19 13 L 19 19 L 13 19 Z" /></symbol><use xlink:href="#svg-hashtag" /></svg>`,
	"heart":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-heart" viewBox="0 0 32 32"><path class="svg-fill" d="M 9.5 5 C 5.363281 5 2 8.402344 2 12.5 C 2 13.929688 2.648438 15.167969 3.25 16.0625 C 3.851563 16.957031 4.46875 17.53125 4.46875 17.53125 L 15.28125 28.375 L 16 29.09375 L 16.71875 28.375 L 27.53125 17.53125 C 27.53125 17.53125 30 15.355469 30 12.5 C 30 8.402344 26.636719 5 22.5 5 C 19.066406 5 16.855469 7.066406 16 7.9375 C 15.144531 7.066406 12.933594 5 9.5 5 Z M 9.5 7 C 12.488281 7 15.25 9.90625 15.25 9.90625 L 16 10.75 L 16.75 9.90625 C 16.75 9.90625 19.511719 7 22.5 7 C 25.542969 7 28 9.496094 28 12.5 C 28 14.042969 26.125 16.125 26.125 16.125 L 16 26.25 L 5.875 16.125 C 5.875 16.125 5.390625 15.660156 4.90625 14.9375 C 4.421875 14.214844 4 13.273438 4 12.5 C 4 9.496094 6.457031 7 9.5 7 Z" /></symbol><use xlink:href="#svg-heart" /></svg>`,
	"image":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-image" viewBox="0 0 32 32"><path class="svg-fill" d="M 6 3 L 6 29 L 26 29 L 26 9.59375 L 25.71875 9.28125 L 19.71875 3.28125 L 19.40625 3 Z M 8 5 L 18 5 L 18 11 L 24 11 L 24 27 L 8 27 Z M 20 6.4375 L 22.5625 9 L 20 9 Z M 21.09375 14 C 20.542969 14 20.09375 14.449219 20.09375 15 C 20.09375 15.550781 20.542969 16 21.09375 16 C 21.644531 16 22.09375 15.550781 22.09375 15 C 22.09375 14.449219 21.644531 14 21.09375 14 Z M 14 15.59375 L 13.28125 16.28125 L 9.28125 20.28125 L 10.71875 21.71875 L 14 18.4375 L 16.28125 20.71875 L 17 21.40625 L 17.71875 20.71875 L 19 19.4375 L 21.28125 21.71875 L 22.71875 20.28125 L 19.71875 17.28125 L 19 16.59375 L 18.28125 17.28125 L 17 18.5625 L 14.71875 16.28125 Z" /></symbol><use xlink:href="#svg-image" /></svg>`,
	"import":      `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-import" viewBox="0 0 32 32"><path class="svg-fill" d="M 6 4 L 6 28 L 26 28 L 26 19 L 24 19 L 24 26 L 8 26 L 8 6 L 24 6 L 24 13 L 26 13 L 26 4 Z M 17.5 11 L 13.1875 15.28125 L 12.5 16 L 13.1875 16.71875 L 17.5 21 L 18.90625 19.59375 L 16.3125 17 L 28 17 L 28 15 L 16.3125 15 L 18.90625 12.40625 Z" /></symbol><use xlink:href="#svg-import" /></svg>`,
	"info":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-info" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 3 C 8.832031 3 3 8.832031 3 16 C 3 23.167969 8.832031 29 16 29 C 23.167969 29 29 23.167969 29 16 C 29 8.832031 23.167969 3 16 3 Z M 16 5 C 22.085938 5 27 9.914063 27 16 C 27 22.085938 22.085938 27 16 27 C 9.914063 27 5 22.085938 5 16 C 5 9.914063 9.914063 5 16 5 Z M 15 10 L 15 12 L 17 12 L 17 10 Z M 15 14 L 15 22 L 17 22 L 17 14 Z" /></symbol><use xlink:href="#svg-info" /></svg>`,
	"left":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-left" viewBox="0 0 32 32"><path class="svg-fill" d="M 19.03125 4.28125 L 8.03125 15.28125 L 7.34375 16 L 8.03125 16.71875 L 19.03125 27.71875 L 20.46875 26.28125 L 10.1875 16 L 20.46875 5.71875 Z" /></symbol><use xlink:href="#svg-left" /></svg>`,
	"link":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-link" viewBox="0 0 32 32"><path class="svg-fill" d="M 21.75 4 C 20.078125 4 18.492188 4.660156 17.3125 5.84375 L 15.84375 7.3125 C 14.660156 8.496094 14 10.078125 14 11.75 C 14 12.542969 14.152344 13.316406 14.4375 14.03125 L 16.0625 12.40625 C 15.859375 11.109375 16.253906 9.714844 17.25 8.71875 L 18.71875 7.25 C 19.523438 6.445313 20.613281 6 21.75 6 C 22.886719 6 23.945313 6.445313 24.75 7.25 C 26.410156 8.910156 26.410156 11.621094 24.75 13.28125 L 23.28125 14.75 C 22.476563 15.554688 21.386719 16 20.25 16 C 20.027344 16 19.808594 15.976563 19.59375 15.9375 L 17.96875 17.5625 C 18.683594 17.847656 19.457031 18 20.25 18 C 21.921875 18 23.507813 17.339844 24.6875 16.15625 L 26.15625 14.6875 C 27.339844 13.503906 28 11.921875 28 10.25 C 28 8.578125 27.339844 7.027344 26.15625 5.84375 C 24.976563 4.660156 23.421875 4 21.75 4 Z M 19.28125 11.28125 L 11.28125 19.28125 L 12.71875 20.71875 L 20.71875 12.71875 Z M 11.75 14 C 10.078125 14 8.492188 14.660156 7.3125 15.84375 L 5.84375 17.3125 C 4.660156 18.496094 4 20.078125 4 21.75 C 4 23.421875 4.660156 24.972656 5.84375 26.15625 C 7.023438 27.339844 8.578125 28 10.25 28 C 11.921875 28 13.507813 27.339844 14.6875 26.15625 L 16.15625 24.6875 C 17.339844 23.503906 18 21.921875 18 20.25 C 18 19.457031 17.847656 18.683594 17.5625 17.96875 L 15.9375 19.59375 C 16.140625 20.890625 15.746094 22.285156 14.75 23.28125 L 13.28125 24.75 C 12.476563 25.554688 11.386719 26 10.25 26 C 9.113281 26 8.054688 25.554688 7.25 24.75 C 5.589844 23.089844 5.589844 20.378906 7.25 18.71875 L 8.71875 17.25 C 9.523438 16.445313 10.613281 16 11.75 16 C 11.972656 16 12.191406 16.023438 12.40625 16.0625 L 14.03125 14.4375 C 13.316406 14.152344 12.542969 14 11.75 14 Z" /></symbol><use xlink:href="#svg-link" /></svg>`,
	"linux":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-linux" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 5 C 10.488281 5 6 9.488281 6 15 L 6 23 C 6 24.117188 5.117188 25 4 25 L 4 27 C 6.199219 27 8 25.199219 8 23 L 8 15 C 8 10.570313 11.570313 7 16 7 C 17.015625 7 17.984375 7.1875 18.875 7.53125 C 18.582031 7.945313 18.738281 8.675781 19.28125 9.21875 C 19.867188 9.804688 20.671875 9.953125 21.0625 9.5625 C 21.207031 9.417969 21.25 9.195313 21.25 8.96875 C 22.929688 10.433594 24 12.585938 24 15 L 24 23 C 24 25.199219 25.800781 27 28 27 L 28 25 C 26.882813 25 26 24.117188 26 23 L 26 15 C 26 9.488281 21.511719 5 16 5 Z M 13 11 C 11.480469 11 10.332031 11.851563 9.75 12.875 C 9.167969 13.898438 9 15.046875 9 16 C 9 17.355469 9.414063 18.347656 9.875 18.96875 C 9.917969 19.027344 9.957031 19.070313 10 19.125 C 9.386719 19.78125 9 20.59375 9 21.5 C 9 22.929688 9.972656 24.097656 11.25 24.84375 C 12.527344 25.589844 14.183594 26 16 26 C 17.816406 26 19.472656 25.589844 20.75 24.84375 C 22.027344 24.097656 23 22.929688 23 21.5 C 23 20.59375 22.613281 19.78125 22 19.125 C 22.042969 19.070313 22.082031 19.027344 22.125 18.96875 C 22.585938 18.347656 23 17.355469 23 16 C 23 15.046875 22.832031 13.898438 22.25 12.875 C 21.667969 11.851563 20.519531 11 19 11 C 17.667969 11 16.628906 11.652344 16 12.5 C 15.371094 11.652344 14.332031 11 13 11 Z M 13 13 C 13.867188 13 14.210938 13.3125 14.53125 13.875 C 14.851563 14.4375 15 15.292969 15 16 L 17 16 C 17 15.292969 17.148438 14.4375 17.46875 13.875 C 17.789063 13.3125 18.132813 13 19 13 C 19.867188 13 20.210938 13.3125 20.53125 13.875 C 20.851563 14.4375 21 15.292969 21 16 C 21 16.960938 20.722656 17.480469 20.5 17.78125 C 20.429688 17.878906 20.390625 17.921875 20.34375 17.96875 C 20.117188 17.855469 19.898438 17.71875 19.65625 17.625 C 19.867188 17.351563 20 16.953125 20 16.5 C 20 15.671875 19.550781 15 19 15 C 18.449219 15 18 15.671875 18 16.5 C 18 16.765625 18.078125 17.003906 18.15625 17.21875 C 17.46875 17.082031 16.757813 17 16 17 C 15.242188 17 14.53125 17.082031 13.84375 17.21875 C 13.921875 17.003906 14 16.765625 14 16.5 C 14 15.671875 13.550781 15 13 15 C 12.449219 15 12 15.671875 12 16.5 C 12 16.953125 12.132813 17.351563 12.34375 17.625 C 12.101563 17.71875 11.882813 17.855469 11.65625 17.96875 C 11.609375 17.921875 11.570313 17.878906 11.5 17.78125 C 11.277344 17.480469 11 16.960938 11 16 C 11 15.292969 11.148438 14.4375 11.46875 13.875 C 11.789063 13.3125 12.132813 13 13 13 Z M 16 19 C 17.5 19 18.855469 19.351563 19.75 19.875 C 20.644531 20.398438 21 20.996094 21 21.5 C 21 22.003906 20.644531 22.601563 19.75 23.125 C 18.855469 23.648438 17.5 24 16 24 C 14.5 24 13.144531 23.648438 12.25 23.125 C 11.355469 22.601563 11 22.003906 11 21.5 C 11 20.996094 11.355469 20.398438 12.25 19.875 C 13.144531 19.351563 14.5 19 16 19 Z M 13.5 20.4375 L 12.5 22.15625 C 12.5 22.15625 13.925781 23 16 23 C 18.074219 23 19.5 22.15625 19.5 22.15625 L 18.5 20.4375 C 18.5 20.4375 17.546875 21 16 21 C 14.453125 21 13.5 20.4375 13.5 20.4375 Z" /></symbol><use xlink:href="#svg-linux" /></svg>`,
	"list":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-list" viewBox="0 0 32 32"><path class="svg-fill" d="M 4 5 L 4 11 L 10 11 L 10 5 Z M 6 7 L 8 7 L 8 9 L 6 9 Z M 12 7 L 12 9 L 27 9 L 27 7 Z M 4 13 L 4 19 L 10 19 L 10 13 Z M 6 15 L 8 15 L 8 17 L 6 17 Z M 12 15 L 12 17 L 27 17 L 27 15 Z M 4 21 L 4 27 L 10 27 L 10 21 Z M 6 23 L 8 23 L 8 25 L 6 25 Z M 12 23 L 12 25 L 27 25 L 27 23 Z" /></symbol><use xlink:href="#svg-list" /></svg>`,
	"location":    `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-location" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 3 C 11.042969 3 7 7.042969 7 12 C 7 13.40625 7.570313 15.019531 8.34375 16.78125 C 9.117188 18.542969 10.113281 20.414063 11.125 22.15625 C 13.148438 25.644531 15.1875 28.5625 15.1875 28.5625 L 16 29.75 L 16.8125 28.5625 C 16.8125 28.5625 18.851563 25.644531 20.875 22.15625 C 21.886719 20.414063 22.882813 18.542969 23.65625 16.78125 C 24.429688 15.019531 25 13.40625 25 12 C 25 7.042969 20.957031 3 16 3 Z M 16 5 C 19.878906 5 23 8.121094 23 12 C 23 12.800781 22.570313 14.316406 21.84375 15.96875 C 21.117188 17.621094 20.113281 19.453125 19.125 21.15625 C 17.554688 23.867188 16.578125 25.300781 16 26.15625 C 15.421875 25.300781 14.445313 23.867188 12.875 21.15625 C 11.886719 19.453125 10.882813 17.621094 10.15625 15.96875 C 9.429688 14.316406 9 12.800781 9 12 C 9 8.121094 12.121094 5 16 5 Z M 16 10 C 14.894531 10 14 10.894531 14 12 C 14 13.105469 14.894531 14 16 14 C 17.105469 14 18 13.105469 18 12 C 18 10.894531 17.105469 10 16 10 Z" /></symbol><use xlink:href="#svg-location" /></svg>`,
	"lock":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-lock" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 3 C 12.15625 3 9 6.15625 9 10 L 9 13 L 6 13 L 6 29 L 26 29 L 26 13 L 23 13 L 23 10 C 23 6.15625 19.84375 3 16 3 Z M 16 5 C 18.753906 5 21 7.246094 21 10 L 21 13 L 11 13 L 11 10 C 11 7.246094 13.246094 5 16 5 Z M 8 15 L 24 15 L 24 27 L 8 27 Z" /></symbol><use xlink:href="#svg-lock" /></svg>`,
	"mail":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-mail" viewBox="0 0 32 32"><path class="svg-fill" d="M 3 8 L 3 26 L 29 26 L 29 8 Z M 7.3125 10 L 24.6875 10 L 16 15.78125 Z M 5 10.875 L 15.4375 17.84375 L 16 18.1875 L 16.5625 17.84375 L 27 10.875 L 27 24 L 5 24 Z" /></symbol><use xlink:href="#svg-mail" /></svg>`,
	"mail-open":   `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-mail-open" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 3 L 15.46875 3.34375 L 3.46875 11.15625 L 3 11.46875 L 3 29 L 29 29 L 29 11.46875 L 28.53125 11.15625 L 16.53125 3.34375 Z M 16 5.375 L 26.1875 12 L 16 18.59375 L 5.8125 12 Z M 5 13.84375 L 15.46875 20.625 L 16 20.96875 L 16.53125 20.625 L 27 13.84375 L 27 27 L 5 27 Z" /></symbol><use xlink:href="#svg-mail-open" /></svg>`,
	"medal":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-medal" viewBox="0 0 32 32"><path class="svg-fill" d="M 7 3 L 11.265625 13.359375 C 8.7096967 14.94892 7 17.775441 7 21 C 7 25.962 11.037 30 16 30 C 20.963 30 25 25.962 25 21 C 25 17.775441 23.290303 14.94892 20.734375 13.359375 L 25 3 L 22.837891 3 L 18.925781 12.498047 C 18.268581 12.271202 17.580892 12.113483 16.865234 12.044922 L 20.587891 3 L 18.425781 3 L 14.673828 12.109375 C 14.12256 12.191305 13.588371 12.320577 13.074219 12.498047 L 9.1621094 3 L 7 3 z M 11.412109 3 L 13.953125 9.1738281 L 15.035156 6.546875 L 13.574219 3 L 11.412109 3 z M 16 14 C 19.859 14 23 17.14 23 21 C 23 24.86 19.859 28 16 28 C 12.141 28 9 24.86 9 21 C 9 17.14 12.141 14 16 14 z M 16 17.162109 L 14.832031 19.78125 L 12 20.091797 L 14.119141 21.996094 L 13.523438 24.806641 L 16 23.376953 L 18.476562 24.806641 L 17.880859 21.996094 L 20 20.091797 L 17.167969 19.78125 L 16 17.162109 z" /></symbol><use xlink:href="#svg-medal" /></svg>`,
	"meh":         `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-meh" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 4 C 9.382813 4 4 9.382813 4 16 C 4 22.617188 9.382813 28 16 28 C 22.617188 28 28 22.617188 28 16 C 28 9.382813 22.617188 4 16 4 Z M 16 6 C 21.535156 6 26 10.464844 26 16 C 26 21.535156 21.535156 26 16 26 C 10.464844 26 6 21.535156 6 16 C 6 10.464844 10.464844 6 16 6 Z M 11.5 12 C 10.671875 12 10 12.671875 10 13.5 C 10 14.328125 10.671875 15 11.5 15 C 12.328125 15 13 14.328125 13 13.5 C 13 12.671875 12.328125 12 11.5 12 Z M 20.5 12 C 19.671875 12 19 12.671875 19 13.5 C 19 14.328125 19.671875 15 20.5 15 C 21.328125 15 22 14.328125 22 13.5 C 22 12.671875 21.328125 12 20.5 12 Z M 11 20 L 11 22 L 21 22 L 21 20 Z" /></symbol><use xlink:href="#svg-meh" /></svg>`,
	"microphone":  `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-microphone" viewBox="0 0 32 32"><path class="svg-fill" d="M 13 4 C 11.90625 4 11 4.90625 11 6 L 11 18 C 11 19.09375 11.90625 20 13 20 L 19 20 C 20.09375 20 21 19.09375 21 18 L 21 6 C 21 4.90625 20.09375 4 19 4 Z M 13 6 L 19 6 L 19 18 L 13 18 Z M 7 14 L 7 18 C 7 21.300781 9.699219 24 13 24 L 15 24 L 15 26 L 11 26 L 11 28 L 21 28 L 21 26 L 17 26 L 17 24 L 19 24 C 22.300781 24 25 21.300781 25 18 L 25 14 L 23 14 L 23 18 C 23 20.21875 21.21875 22 19 22 L 13 22 C 10.78125 22 9 20.21875 9 18 L 9 14 Z" /></symbol><use xlink:href="#svg-microphone" /></svg>`,
	"minus":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-minus" viewBox="0 0 32 32"><path class="svg-fill" d="M 5 15 L 5 17 L 27 17 L 27 15 Z" /></symbol><use xlink:href="#svg-minus" /></svg>`,
	"mobile":      `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-mobile" viewBox="0 0 32 32"><path class="svg-fill" d="M 11 4 C 9.355469 4 8 5.355469 8 7 L 8 25 C 8 26.644531 9.355469 28 11 28 L 21 28 C 22.644531 28 24 26.644531 24 25 L 24 7 C 24 5.355469 22.644531 4 21 4 Z M 11 6 L 21 6 C 21.554688 6 22 6.445313 22 7 L 22 25 C 22 25.554688 21.554688 26 21 26 L 11 26 C 10.445313 26 10 25.554688 10 25 L 10 7 C 10 6.445313 10.445313 6 11 6 Z M 16 23 C 15.449219 23 15 23.449219 15 24 C 15 24.550781 15.449219 25 16 25 C 16.550781 25 17 24.550781 17 24 C 17 23.449219 16.550781 23 16 23 Z" /></symbol><use xlink:href="#svg-mobile" /></svg>`,
	"pencil":      `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-pencil" viewBox="0 0 32 32"><path class="svg-fill" d="M 23.90625 3.96875 C 22.859375 3.96875 21.8125 4.375 21 5.1875 L 5.1875 21 L 5.125 21.3125 L 4.03125 26.8125 L 3.71875 28.28125 L 5.1875 27.96875 L 10.6875 26.875 L 11 26.8125 L 26.8125 11 C 28.4375 9.375 28.4375 6.8125 26.8125 5.1875 C 26 4.375 24.953125 3.96875 23.90625 3.96875 Z M 23.90625 5.875 C 24.410156 5.875 24.917969 6.105469 25.40625 6.59375 C 26.378906 7.566406 26.378906 8.621094 25.40625 9.59375 L 24.6875 10.28125 L 21.71875 7.3125 L 22.40625 6.59375 C 22.894531 6.105469 23.402344 5.875 23.90625 5.875 Z M 20.3125 8.71875 L 23.28125 11.6875 L 11.1875 23.78125 C 10.53125 22.5 9.5 21.46875 8.21875 20.8125 Z M 6.9375 22.4375 C 8.136719 22.921875 9.078125 23.863281 9.5625 25.0625 L 6.28125 25.71875 Z" /></symbol><use xlink:href="#svg-pencil" /></svg>`,
	"play":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-play" viewBox="0 0 32 32"><path class="svg-fill" d="M 9 5.15625 L 9 26.84375 L 10.53125 25.84375 L 25.84375 16 L 10.53125 6.15625 Z M 11 8.8125 L 22.15625 16 L 11 23.1875 Z" /></symbol><use xlink:href="#svg-play" /></svg>`,
	"plus":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-plus" viewBox="0 0 32 32"><path class="svg-fill" d="M 15 5 L 15 15 L 5 15 L 5 17 L 15 17 L 15 27 L 17 27 L 17 17 L 27 17 L 27 15 L 17 15 L 17 5 Z" /></symbol><use xlink:href="#svg-plus" /></svg>`,
	"poo":         `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-poo" viewBox="0 0 32 32"><path class="svg-fill" d="M 17 6 C 14.162 6 11 8.6132812 11 12.363281 L 11 13 L 10 13 C 7.794 13 6 14.794 6 17 C 6 17.408 6.0645 17.811312 6.1875 18.195312 C 4.3455 18.758312 3 20.475 3 22.5 C 3 24.981 5.019 27 7.5 27 L 24.5 27 C 26.981 27 29 24.981 29 22.5 C 29 20.475 27.6555 18.757359 25.8125 18.193359 C 25.9365 17.809359 26 17.406047 26 16.998047 C 26 14.792047 24.206 12.998047 22 12.998047 L 20.931641 12.998047 C 20.674641 11.225047 19.738391 10.531906 19.025391 10.003906 C 18.278391 9.4499062 17.785141 9.0824688 17.994141 7.1054688 L 18.111328 6 L 17 6 z M 15.953125 8.1875 C 16.026125 10.0915 16.852937 10.880375 17.835938 11.609375 C 18.536938 12.130375 19 12.474 19 14 L 19 15 L 22 15 C 23.103 15 24 15.897 24 17 C 24 17.483 23.813562 17.954125 23.476562 18.328125 L 21.964844 20 L 24.5 20 C 25.879 20 27 21.121 27 22.5 C 27 23.879 25.879 25 24.5 25 L 7.5 25 C 6.121 25 5 23.879 5 22.5 C 5 21.121 6.121 20 7.5 20 L 10.035156 20 L 8.5234375 18.328125 C 8.1864375 17.954125 8 17.483 8 17 C 8 15.897 8.897 15 10 15 L 13 15 L 13 12.363281 C 13 10.362281 14.426125 8.7275 15.953125 8.1875 z M 12 17 A 1 1 0 0 0 12 19 A 1 1 0 0 0 12 17 z M 20 17 A 1 1 0 0 0 20 19 A 1 1 0 0 0 20 17 z M 14 20 C 14 21.105 14.895 22 16 22 C 17.105 22 18 21.105 18 20 L 14 20 z" /></symbol><use xlink:href="#svg-poo" /></svg>`,
	"print":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-print" viewBox="0 0 32 32"><path class="svg-fill" d="M 9 4 L 9 11 L 7 11 C 5.355469 11 4 12.355469 4 14 L 4 24 L 9 24 L 9 28 L 23 28 L 23 24 L 28 24 L 28 14 C 28 12.355469 26.644531 11 25 11 L 23 11 L 23 4 Z M 11 6 L 21 6 L 21 11 L 11 11 Z M 7 13 L 25 13 C 25.566406 13 26 13.433594 26 14 L 26 22 L 23 22 L 23 18 L 9 18 L 9 22 L 6 22 L 6 14 C 6 13.433594 6.433594 13 7 13 Z M 8 14 C 7.449219 14 7 14.449219 7 15 C 7 15.550781 7.449219 16 8 16 C 8.550781 16 9 15.550781 9 15 C 9 14.449219 8.550781 14 8 14 Z M 11 20 L 21 20 L 21 26 L 11 26 Z" /></symbol><use xlink:href="#svg-print" /></svg>`,
	"profile":     `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-profile" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 5 C 12.144531 5 9 8.144531 9 12 C 9 14.410156 10.230469 16.550781 12.09375 17.8125 C 8.527344 19.34375 6 22.882813 6 27 L 8 27 C 8 22.570313 11.570313 19 16 19 C 20.429688 19 24 22.570313 24 27 L 26 27 C 26 22.882813 23.472656 19.34375 19.90625 17.8125 C 21.769531 16.550781 23 14.410156 23 12 C 23 8.144531 19.855469 5 16 5 Z M 16 7 C 18.773438 7 21 9.226563 21 12 C 21 14.773438 18.773438 17 16 17 C 13.226563 17 11 14.773438 11 12 C 11 9.226563 13.226563 7 16 7 Z" /></symbol><use xlink:href="#svg-profile" /></svg>`,
	"question":    `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-question" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 4 C 9.382813 4 4 9.382813 4 16 C 4 22.617188 9.382813 28 16 28 C 22.617188 28 28 22.617188 28 16 C 28 9.382813 22.617188 4 16 4 Z M 16 6 C 21.535156 6 26 10.464844 26 16 C 26 21.535156 21.535156 26 16 26 C 10.464844 26 6 21.535156 6 16 C 6 10.464844 10.464844 6 16 6 Z M 16 10 C 13.800781 10 12 11.800781 12 14 L 14 14 C 14 12.882813 14.882813 12 16 12 C 17.117188 12 18 12.882813 18 14 C 18 14.765625 17.507813 15.445313 16.78125 15.6875 L 16.375 15.8125 C 15.558594 16.082031 15 16.863281 15 17.71875 L 15 19 L 17 19 L 17 17.71875 L 17.40625 17.59375 C 18.945313 17.082031 20 15.621094 20 14 C 20 11.800781 18.199219 10 16 10 Z M 15 20 L 15 22 L 17 22 L 17 20 Z" /></symbol><use xlink:href="#svg-question" /></svg>`,
	"refresh":     `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-refresh" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 4 C 10.886719 4 6.617188 7.160156 4.875 11.625 L 6.71875 12.375 C 8.175781 8.640625 11.710938 6 16 6 C 19.242188 6 22.132813 7.589844 23.9375 10 L 20 10 L 20 12 L 27 12 L 27 5 L 25 5 L 25 8.09375 C 22.808594 5.582031 19.570313 4 16 4 Z M 25.28125 19.625 C 23.824219 23.359375 20.289063 26 16 26 C 12.722656 26 9.84375 24.386719 8.03125 22 L 12 22 L 12 20 L 5 20 L 5 27 L 7 27 L 7 23.90625 C 9.1875 26.386719 12.394531 28 16 28 C 21.113281 28 25.382813 24.839844 27.125 20.375 Z" /></symbol><use xlink:href="#svg-refresh" /></svg>`,
	"reply":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-reply" viewBox="0 0 32 32"><path class="svg-fill" d="M 12.28125 5.28125 L 4.28125 13.28125 L 3.59375 14 L 4.28125 14.71875 L 12.28125 22.71875 L 13.71875 21.28125 L 7.4375 15 L 21 15 C 23.773438 15 26 17.226563 26 20 C 26 22.773438 23.773438 25 21 25 L 21 27 C 24.855469 27 28 23.855469 28 20 C 28 16.144531 24.855469 13 21 13 L 7.4375 13 L 13.71875 6.71875 Z" /></symbol><use xlink:href="#svg-reply" /></svg>`,
	"right":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-right" viewBox="0 0 32 32"><path class="svg-fill" d="M 12.96875 4.28125 L 11.53125 5.71875 L 21.8125 16 L 11.53125 26.28125 L 12.96875 27.71875 L 23.96875 16.71875 L 24.65625 16 L 23.96875 15.28125 Z" /></symbol><use xlink:href="#svg-right" /></svg>`,
	"robot":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-robot" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 1 C 14.894531 1 14 1.894531 14 3 C 14 3.738281 14.402344 4.371094 15 4.71875 L 15 7 L 10 7 C 7.25 7 5 9.25 5 12 L 5 14 L 2 14 L 2 22 L 5 22 L 5 27 L 27 27 L 27 22 L 30 22 L 30 14 L 27 14 L 27 12 C 27 9.25 24.75 7 22 7 L 17 7 L 17 4.71875 C 17.597656 4.371094 18 3.738281 18 3 C 18 1.894531 17.105469 1 16 1 Z M 10 9 L 22 9 C 23.667969 9 25 10.332031 25 12 L 25 25 L 23 25 L 23 20 L 9 20 L 9 25 L 7 25 L 7 12 C 7 10.332031 8.332031 9 10 9 Z M 12 13 C 10.894531 13 10 13.894531 10 15 C 10 16.105469 10.894531 17 12 17 C 13.105469 17 14 16.105469 14 15 C 14 13.894531 13.105469 13 12 13 Z M 20 13 C 18.894531 13 18 13.894531 18 15 C 18 16.105469 18.894531 17 20 17 C 21.105469 17 22 16.105469 22 15 C 22 13.894531 21.105469 13 20 13 Z M 4 16 L 5 16 L 5 20 L 4 20 Z M 27 16 L 28 16 L 28 20 L 27 20 Z M 11 22 L 13 22 L 13 25 L 11 25 Z M 15 22 L 17 22 L 17 25 L 15 25 Z M 19 22 L 21 22 L 21 25 L 19 25 Z" /></symbol><use xlink:href="#svg-robot" /></svg>`,
	"sad":         `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-sad" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 4 C 9.382813 4 4 9.382813 4 16 C 4 22.617188 9.382813 28 16 28 C 22.617188 28 28 22.617188 28 16 C 28 9.382813 22.617188 4 16 4 Z M 16 6 C 21.535156 6 26 10.464844 26 16 C 26 21.535156 21.535156 26 16 26 C 10.464844 26 6 21.535156 6 16 C 6 10.464844 10.464844 6 16 6 Z M 11.5 12 C 10.671875 12 10 12.671875 10 13.5 C 10 14.328125 10.671875 15 11.5 15 C 12.328125 15 13 14.328125 13 13.5 C 13 12.671875 12.328125 12 11.5 12 Z M 20.5 12 C 19.671875 12 19 12.671875 19 13.5 C 19 14.328125 19.671875 15 20.5 15 C 21.328125 15 22 14.328125 22 13.5 C 22 12.671875 21.328125 12 20.5 12 Z M 16 18 C 13.332031 18 10.980469 19.335938 9.53125 21.34375 L 11.15625 22.5 C 12.246094 20.984375 13.992188 20 16 20 C 18.007813 20 19.753906 20.984375 20.84375 22.5 L 22.46875 21.34375 C 21.019531 19.335938 18.667969 18 16 18 Z" /></symbol><use xlink:href="#svg-sad" /></svg>`,
	"search":      `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-search" viewBox="0 0 32 32"><path class="svg-fill" d="M 19 3 C 13.488281 3 9 7.488281 9 13 C 9 15.394531 9.839844 17.589844 11.25 19.3125 L 3.28125 27.28125 L 4.71875 28.71875 L 12.6875 20.75 C 14.410156 22.160156 16.605469 23 19 23 C 24.511719 23 29 18.511719 29 13 C 29 7.488281 24.511719 3 19 3 Z M 19 5 C 23.429688 5 27 8.570313 27 13 C 27 17.429688 23.429688 21 19 21 C 14.570313 21 11 17.429688 11 13 C 11 8.570313 14.570313 5 19 5 Z" /></symbol><use xlink:href="#svg-search" /></svg>`,
	"searchbox":   `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><symbol id="svg-searchbox" viewBox="0 0 160 28"><path d="M32.9418651,-20.6880772 C37.9418651,-20.6880772 40.9418651,-16.6880772 40.9418651,-12.6880772 C40.9418651,-8.68807717 37.9418651,-4.68807717 32.9418651,-4.68807717 C27.9418651,-4.68807717 24.9418651,-8.68807717 24.9418651,-12.6880772 C24.9418651,-16.6880772 27.9418651,-20.6880772 32.9418651,-20.6880772 L32.9418651,-29.870624 C32.9418651,-30.3676803 33.3448089,-30.770624 33.8418651,-30.770624 C34.08056,-30.770624 34.3094785,-30.6758029 34.4782612,-30.5070201 L141.371843,76.386562" transform="translate(83.156854, 22.171573) rotate(-225.000000) translate(-83.156854, -22.171573)" /></symbol><use xlink:href="#svg-searchbox" /></svg>`,
	"server":      `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-server" viewBox="0 0 32 32"><path class="svg-fill" d="M 3 6 L 3 26 L 29 26 L 29 6 Z M 5 8 L 27 8 L 27 12 L 5 12 Z M 7 9 L 7 11 L 15 11 L 15 9 Z M 24 9 C 23.449219 9 23 9.449219 23 10 C 23 10.550781 23.449219 11 24 11 C 24.550781 11 25 10.550781 25 10 C 25 9.449219 24.550781 9 24 9 Z M 5 14 L 27 14 L 27 18 L 5 18 Z M 7 15 L 7 17 L 15 17 L 15 15 Z M 24 15 C 23.449219 15 23 15.449219 23 16 C 23 16.550781 23.449219 17 24 17 C 24.550781 17 25 16.550781 25 16 C 25 15.449219 24.550781 15 24 15 Z M 5 20 L 27 20 L 27 24 L 5 24 Z M 7 21 L 7 23 L 15 23 L 15 21 Z M 24 21 C 23.449219 21 23 21.449219 23 22 C 23 22.550781 23.449219 23 24 23 C 24.550781 23 25 22.550781 25 22 C 25 21.449219 24.550781 21 24 21 Z" /></symbol><use xlink:href="#svg-server" /></svg>`,
	"settings":    `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-settings" viewBox="0 0 32 32"><path class="svg-fill" d="M 15 5 C 13.707031 5 12.605469 5.84375 12.1875 7 L 4 7 L 4 9 L 12.1875 9 C 12.605469 10.15625 13.707031 11 15 11 C 16.292969 11 17.394531 10.15625 17.8125 9 L 28 9 L 28 7 L 17.8125 7 C 17.394531 5.84375 16.292969 5 15 5 Z M 15 7 C 15.5625 7 16 7.4375 16 8 C 16 8.5625 15.5625 9 15 9 C 14.4375 9 14 8.5625 14 8 C 14 7.4375 14.4375 7 15 7 Z M 22 13 C 20.707031 13 19.605469 13.84375 19.1875 15 L 4 15 L 4 17 L 19.1875 17 C 19.605469 18.15625 20.707031 19 22 19 C 23.292969 19 24.394531 18.15625 24.8125 17 L 28 17 L 28 15 L 24.8125 15 C 24.394531 13.84375 23.292969 13 22 13 Z M 22 15 C 22.5625 15 23 15.4375 23 16 C 23 16.5625 22.5625 17 22 17 C 21.4375 17 21 16.5625 21 16 C 21 15.4375 21.4375 15 22 15 Z M 11 21 C 9.707031 21 8.605469 21.84375 8.1875 23 L 4 23 L 4 25 L 8.1875 25 C 8.605469 26.15625 9.707031 27 11 27 C 12.292969 27 13.394531 26.15625 13.8125 25 L 28 25 L 28 23 L 13.8125 23 C 13.394531 21.84375 12.292969 21 11 21 Z M 11 23 C 11.5625 23 12 23.4375 12 24 C 12 24.5625 11.5625 25 11 25 C 10.4375 25 10 24.5625 10 24 C 10 23.4375 10.4375 23 11 23 Z" /></symbol><use xlink:href="#svg-settings" /></svg>`,
	"share":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-share" viewBox="0 0 32 32"><path class="svg-fill" d="M 19.71875 5.28125 L 18.28125 6.71875 L 24.5625 13 L 11 13 C 7.144531 13 4 16.144531 4 20 C 4 23.855469 7.144531 27 11 27 L 11 25 C 8.226563 25 6 22.773438 6 20 C 6 17.226563 8.226563 15 11 15 L 24.5625 15 L 18.28125 21.28125 L 19.71875 22.71875 L 27.71875 14.71875 L 28.40625 14 L 27.71875 13.28125 Z" /></symbol><use xlink:href="#svg-share" /></svg>`,
	"social":      `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-social" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 4 C 13.855469 4 12.117188 5.71875 12.03125 7.84375 C 8.425781 9.375 6 12.941406 6 17 C 6 17.171875 5.992188 17.359375 6 17.5625 C 4.816406 18.257813 4 19.535156 4 21 C 4 23.199219 5.800781 25 8 25 C 8.574219 25 9.128906 24.878906 9.625 24.65625 C 11.359375 26.113281 13.617188 27 16 27 C 18.382813 27 20.640625 26.113281 22.375 24.65625 C 22.871094 24.878906 23.425781 25 24 25 C 26.199219 25 28 23.199219 28 21 C 28 19.519531 27.175781 18.222656 25.96875 17.53125 C 25.984375 17.371094 26 17.207031 26 17 C 26 12.941406 23.574219 9.375 19.96875 7.84375 C 19.882813 5.71875 18.144531 4 16 4 Z M 16 6 C 17.117188 6 18 6.882813 18 8 C 18 9.117188 17.117188 10 16 10 C 14.882813 10 14 9.117188 14 8 C 14 6.882813 14.882813 6 16 6 Z M 12.46875 9.84375 C 13.140625 11.117188 14.46875 12 16 12 C 17.53125 12 18.859375 11.117188 19.53125 9.84375 C 22.210938 11.144531 24 13.878906 24 17 C 21.800781 17 20 18.800781 20 21 C 20 21.894531 20.308594 22.707031 20.8125 23.375 C 19.476563 24.386719 17.757813 25 16 25 C 14.242188 25 12.523438 24.386719 11.1875 23.375 C 11.691406 22.707031 12 21.894531 12 21 C 12 18.800781 10.199219 17 8 17 C 8 13.878906 9.789063 11.144531 12.46875 9.84375 Z M 8 19 C 9.117188 19 10 19.882813 10 21 C 10 22.117188 9.117188 23 8 23 C 6.882813 23 6 22.117188 6 21 C 6 19.882813 6.882813 19 8 19 Z M 24 19 C 25.117188 19 26 19.882813 26 21 C 26 22.117188 25.117188 23 24 23 C 22.882813 23 22 22.117188 22 21 C 22 19.882813 22.882813 19 24 19 Z" /></symbol><use xlink:href="#svg-social" /></svg>`,
	"sort":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-sort" viewBox="0 0 32 32"><path class="svg-fill" d="M 4 5 L 4 7 L 16 7 L 16 5 Z M 21 5 L 21 23.6875 L 18.40625 21.09375 L 17 22.5 L 21.28125 26.8125 L 22 27.5 L 22.71875 26.8125 L 27 22.5 L 25.59375 21.09375 L 23 23.6875 L 23 5 Z M 4 9 L 4 11 L 14 11 L 14 9 Z M 4 13 L 4 15 L 12 15 L 12 13 Z M 4 17 L 4 19 L 10 19 L 10 17 Z M 4 21 L 4 23 L 8 23 L 8 21 Z M 4 25 L 4 27 L 6 27 L 6 25 Z" /></symbol><use xlink:href="#svg-sort" /></svg>`,
	"star":        `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-star" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 2.125 L 15.09375 4.1875 L 11.84375 11.46875 L 3.90625 12.3125 L 1.65625 12.5625 L 3.34375 14.0625 L 9.25 19.40625 L 7.59375 27.21875 L 7.125 29.40625 L 9.09375 28.28125 L 16 24.28125 L 22.90625 28.28125 L 24.875 29.40625 L 24.40625 27.21875 L 22.75 19.40625 L 28.65625 14.0625 L 30.34375 12.5625 L 28.09375 12.3125 L 20.15625 11.46875 L 16.90625 4.1875 Z M 16 7.03125 L 18.5625 12.8125 L 18.8125 13.34375 L 19.375 13.40625 L 25.65625 14.0625 L 20.96875 18.28125 L 20.53125 18.6875 L 20.65625 19.25 L 21.96875 25.40625 L 16.5 22.28125 L 16 21.96875 L 15.5 22.28125 L 10.03125 25.40625 L 11.34375 19.25 L 11.46875 18.6875 L 11.03125 18.28125 L 6.34375 14.0625 L 12.625 13.40625 L 13.1875 13.34375 L 13.4375 12.8125 Z" /></symbol><use xlink:href="#svg-star" /></svg>`,
	"struct":      `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-struct" viewBox="0 0 32 32"><path class="svg-fill" d="M 3 5 L 3 23 C 3 25.210938 4.789063 27 7 27 L 25 27 C 27.210938 27 29 25.210938 29 23 L 29 12 L 23 12 L 23 5 Z M 5 7 L 21 7 L 21 23 C 21 23.730469 21.222656 24.410156 21.5625 25 L 7 25 C 5.808594 25 5 24.191406 5 23 Z M 7 9 L 7 14 L 19 14 L 19 9 Z M 9 11 L 17 11 L 17 12 L 9 12 Z M 23 14 L 27 14 L 27 23 C 27 24.191406 26.191406 25 25 25 C 23.808594 25 23 24.191406 23 23 Z M 7 15 L 7 17 L 12 17 L 12 15 Z M 14 15 L 14 17 L 19 17 L 19 15 Z M 7 18 L 7 20 L 12 20 L 12 18 Z M 14 18 L 14 20 L 19 20 L 19 18 Z M 7 21 L 7 23 L 12 23 L 12 21 Z M 14 21 L 14 23 L 19 23 L 19 21 Z" /></symbol><use xlink:href="#svg-struct" /></svg>`,
	"tag":         `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-tag" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 5 L 15.6875 5.28125 L 4.28125 16.8125 L 3.59375 17.5 L 4.28125 18.21875 L 13.78125 27.71875 L 14.5 28.40625 L 15.1875 27.71875 L 26.71875 16.3125 L 27 16 L 27 5 Z M 16.84375 7 L 25 7 L 25 15.15625 L 14.5 25.59375 L 6.40625 17.5 Z M 22 9 C 21.449219 9 21 9.449219 21 10 C 21 10.550781 21.449219 11 22 11 C 22.550781 11 23 10.550781 23 10 C 23 9.449219 22.550781 9 22 9 Z" /></symbol><use xlink:href="#svg-tag" /></svg>`,
	"thumbs-down": `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-thumbs-down" viewBox="0 0 32 32"><path class="svg-fill" d="M 10.15625 6 C 8.746094 6 7.515625 6.996094 7.21875 8.375 L 5.0625 18.375 C 4.667969 20.222656 6.113281 22 8 22 L 13.75 22 L 13.5625 22.75 C 13.359375 22.90625 13.230469 22.972656 12.9375 23.375 C 12.46875 24.015625 12 25.007813 12 26.34375 C 12 27.769531 13.289063 29 14.90625 29 L 15.3125 29 L 15.625 28.71875 L 22.40625 22 L 27 22 L 27 6 Z M 10.15625 8 L 21 8 L 21 20.59375 L 14.59375 26.90625 C 14.171875 26.824219 14 26.652344 14 26.34375 C 14 25.441406 14.273438 24.882813 14.53125 24.53125 C 14.789063 24.179688 14.96875 24.09375 14.96875 24.09375 L 15.3125 23.90625 L 15.4375 23.5 L 16.03125 21.25 L 16.34375 20 L 8 20 C 7.339844 20 6.894531 19.425781 7.03125 18.78125 L 9.15625 8.78125 C 9.257813 8.3125 9.679688 8 10.15625 8 Z M 23 8 L 25 8 L 25 20 L 23 20 Z" /></symbol><use xlink:href="#svg-thumbs-down" /></svg>`,
	"thumbs-up":   `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-thumbs-up" viewBox="0 0 32 32"><path class="svg-fill" d="M 16.6875 3 L 16.375 3.28125 L 9.59375 10 L 5 10 L 5 26 L 21.84375 26 C 23.253906 26 24.484375 25.003906 24.78125 23.625 L 26.9375 13.625 C 27.332031 11.777344 25.886719 10 24 10 L 18.25 10 L 18.4375 9.25 C 18.640625 9.09375 18.769531 9.027344 19.0625 8.625 C 19.53125 7.984375 20 6.992188 20 5.65625 C 20 4.230469 18.710938 3 17.09375 3 Z M 17.40625 5.09375 C 17.828125 5.175781 18 5.347656 18 5.65625 C 18 6.558594 17.726563 7.117188 17.46875 7.46875 C 17.210938 7.820313 17.03125 7.90625 17.03125 7.90625 L 16.6875 8.09375 L 16.5625 8.5 L 15.96875 10.75 L 15.65625 12 L 24 12 C 24.660156 12 25.105469 12.574219 24.96875 13.21875 L 22.84375 23.21875 C 22.742188 23.6875 22.320313 24 21.84375 24 L 11 24 L 11 11.40625 Z M 7 12 L 9 12 L 9 24 L 7 24 Z" /></symbol><use xlink:href="#svg-thumbs-up" /></svg>`,
	"times":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-times" viewBox="0 0 32 32"><path class="svg-fill" d="M 7.21875 5.78125 L 5.78125 7.21875 L 14.5625 16 L 5.78125 24.78125 L 7.21875 26.21875 L 16 17.4375 L 24.78125 26.21875 L 26.21875 24.78125 L 17.4375 16 L 26.21875 7.21875 L 24.78125 5.78125 L 16 14.5625 Z" /></symbol><use xlink:href="#svg-times" /></svg>`,
	"tools":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-tools" viewBox="0 0 32 32"><path class="svg-fill" d="M 5.25 2.75 L 4.6875 3.28125 L 3.28125 4.6875 L 2.75 5.25 L 3.15625 5.90625 L 5.25 9.40625 L 5.53125 9.90625 L 8.46875 9.90625 L 12.46875 13.875 C 8.894531 17.464844 4.347656 22.027344 4.1875 22.1875 C 2.621094 23.753906 2.617188 26.320313 4.21875 27.8125 C 5.78125 29.355469 8.328125 29.394531 9.8125 27.8125 C 9.824219 27.800781 9.832031 27.792969 9.84375 27.78125 L 16 21.59375 L 22.1875 27.8125 L 22.28125 27.875 C 23.851563 29.355469 26.347656 29.375 27.8125 27.8125 L 27.8125 27.78125 L 27.84375 27.78125 C 29.375 26.214844 29.390625 23.667969 27.8125 22.1875 L 27.78125 22.15625 L 22.5625 16.96875 C 26.074219 16.640625 28.824219 13.675781 28.875 10.09375 L 28.90625 10.09375 C 28.910156 10.074219 28.90625 10.050781 28.90625 10.03125 C 28.90625 10.019531 28.90625 10.011719 28.90625 10 C 29.003906 8.84375 28.753906 7.738281 28.15625 6.78125 L 27.46875 5.71875 L 22.8125 10.375 L 21.40625 8.90625 L 26.15625 4.15625 L 24.78125 3.59375 C 23.976563 3.25 23.046875 3 22 3 C 18.15625 3 15 6.15625 15 10 C 15 10.417969 15.089844 10.78125 15.15625 11.15625 C 14.71875 11.59375 14.390625 11.953125 13.875 12.46875 L 9.90625 8.5 L 9.90625 5.53125 L 9.40625 5.25 L 5.90625 3.15625 Z M 22 5 C 22.140625 5 22.238281 5.082031 22.375 5.09375 L 18.59375 8.875 L 19.28125 9.59375 L 22.09375 12.5 L 22.78125 13.21875 L 26.75 9.25 C 26.769531 9.480469 26.933594 9.648438 26.90625 9.90625 L 26.90625 10 C 26.90625 12.753906 24.660156 15 21.90625 15 C 21.539063 15 21.09375 14.914063 20.59375 14.8125 L 20.0625 14.71875 L 19.6875 15.09375 L 8.40625 26.40625 L 8.375 26.40625 L 8.375 26.4375 C 7.664063 27.214844 6.421875 27.234375 5.59375 26.40625 L 5.59375 26.375 L 5.5625 26.375 C 4.785156 25.664063 4.765625 24.421875 5.59375 23.59375 C 5.972656 23.214844 13.3125 15.8125 16.90625 12.21875 L 17.3125 11.8125 L 17.15625 11.25 C 17.074219 10.925781 17 10.367188 17 10 C 17 7.246094 19.246094 5 22 5 Z M 5.5625 5.25 L 7.90625 6.6875 L 7.90625 7.6875 L 7.6875 7.90625 L 6.6875 7.90625 L 5.25 5.5625 Z M 20.1875 17.40625 L 26.40625 23.59375 L 26.40625 23.625 L 26.4375 23.625 C 27.214844 24.335938 27.234375 25.578125 26.40625 26.40625 L 26.375 26.40625 L 26.375 26.4375 C 25.664063 27.214844 24.421875 27.234375 23.59375 26.40625 L 17.40625 20.1875 Z" /></symbol><use xlink:href="#svg-tools" /></svg>`,
	"trash":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-trash" viewBox="0 0 32 32"><path class="svg-fill" d="M 14 4 C 13.476563 4 12.941406 4.183594 12.5625 4.5625 C 12.183594 4.941406 12 5.476563 12 6 L 12 7 L 5 7 L 5 9 L 6.09375 9 L 8 27.09375 L 8.09375 28 L 23.90625 28 L 24 27.09375 L 25.90625 9 L 27 9 L 27 7 L 20 7 L 20 6 C 20 5.476563 19.816406 4.941406 19.4375 4.5625 C 19.058594 4.183594 18.523438 4 18 4 Z M 14 6 L 18 6 L 18 7 L 14 7 Z M 8.125 9 L 23.875 9 L 22.09375 26 L 9.90625 26 Z M 12 12 L 12 23 L 14 23 L 14 12 Z M 15 12 L 15 23 L 17 23 L 17 12 Z M 18 12 L 18 23 L 20 23 L 20 12 Z" /></symbol><use xlink:href="#svg-trash" /></svg>`,
	"trophy":      `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-trophy" viewBox="0 0 32 32"><path class="svg-fill" d="M 7 4 C 6.058594 4 5.085938 4.355469 4.3125 5.03125 C 3.539063 5.707031 3 6.746094 3 8 C 3 9.0625 3.445313 9.96875 4 10.6875 C 4.554688 11.40625 5.226563 11.972656 5.84375 12.53125 C 7.078125 13.648438 8 14.566406 8 16 C 8 16.152344 7.851563 16.519531 7.65625 16.8125 C 7.460938 17.105469 7.28125 17.28125 7.28125 17.28125 L 8.71875 18.6875 C 8.71875 18.6875 9.039063 18.367188 9.34375 17.90625 C 9.605469 17.511719 9.890625 17.003906 9.96875 16.34375 C 10.082031 16.667969 10.191406 17 10.3125 17.3125 C 11 19.085938 11.792969 20.675781 12.6875 21.875 C 13.011719 22.3125 13.347656 22.699219 13.71875 23.03125 C 11.652344 23.179688 10 24.898438 10 27 L 10 28 L 22 28 L 22 27 C 22 24.875 20.316406 23.148438 18.21875 23.03125 C 18.59375 22.699219 18.953125 22.308594 19.28125 21.875 C 20.179688 20.679688 20.960938 19.085938 21.65625 17.3125 C 21.785156 16.980469 21.910156 16.625 22.03125 16.28125 C 22.097656 16.96875 22.386719 17.5 22.65625 17.90625 C 22.960938 18.367188 23.28125 18.6875 23.28125 18.6875 L 24.71875 17.28125 C 24.71875 17.28125 24.539063 17.105469 24.34375 16.8125 C 24.148438 16.519531 24 16.152344 24 16 C 24 14.566406 24.921875 13.648438 26.15625 12.53125 C 26.773438 11.972656 27.445313 11.40625 28 10.6875 C 28.554688 9.96875 29 9.0625 29 8 C 29 6.746094 28.460938 5.707031 27.6875 5.03125 C 26.914063 4.355469 25.941406 4 25 4 C 23.722656 4 22.847656 4.582031 22.375 5 L 9.625 5 C 9.152344 4.582031 8.277344 4 7 4 Z M 7 6 C 7.472656 6 7.777344 6.148438 8 6.28125 C 8.027344 8.320313 8.378906 10.632813 8.9375 12.90625 C 8.40625 12.1875 7.742188 11.589844 7.15625 11.0625 C 6.523438 10.492188 5.945313 9.964844 5.5625 9.46875 C 5.179688 8.972656 5 8.542969 5 8 C 5 7.300781 5.273438 6.867188 5.65625 6.53125 C 6.039063 6.195313 6.566406 6 7 6 Z M 25 6 C 25.433594 6 25.960938 6.195313 26.34375 6.53125 C 26.726563 6.867188 27 7.300781 27 8 C 27 8.542969 26.820313 8.972656 26.4375 9.46875 C 26.054688 9.964844 25.476563 10.492188 24.84375 11.0625 C 24.246094 11.601563 23.570313 12.222656 23.03125 12.96875 C 23.605469 10.679688 23.972656 8.347656 24 6.28125 C 24.222656 6.148438 24.527344 6 25 6 Z M 10.125 7 L 21.875 7 C 21.722656 9.972656 20.953125 13.597656 19.78125 16.59375 C 19.132813 18.25 18.382813 19.6875 17.65625 20.65625 C 16.929688 21.625 16.265625 22 15.96875 22 C 15.675781 22 15.035156 21.625 14.3125 20.65625 C 13.589844 19.6875 12.832031 18.253906 12.1875 16.59375 C 11.023438 13.59375 10.277344 9.957031 10.125 7 Z M 15 10 L 15 15 L 17 15 L 17 10 Z M 14 25 L 18 25 C 18.71875 25 19.210938 25.441406 19.5625 26 L 12.4375 26 C 12.789063 25.441406 13.28125 25 14 25 Z" /></symbol><use xlink:href="#svg-trophy" /></svg>`,
	"unlock":      `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-unlock" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 3 C 12.964844 3 10.414063 4.964844 9.375 7.625 L 11.21875 8.375 C 11.976563 6.433594 13.835938 5 16 5 C 18.753906 5 21 7.246094 21 10 L 21 13 L 6 13 L 6 29 L 26 29 L 26 13 L 23 13 L 23 10 C 23 6.15625 19.84375 3 16 3 Z M 8 15 L 24 15 L 24 27 L 8 27 Z" /></symbol><use xlink:href="#svg-unlock" /></svg>`,
	"up":          `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-up" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 6.59375 L 15.28125 7.28125 L 2.78125 19.78125 L 4.21875 21.21875 L 16 9.4375 L 27.78125 21.21875 L 29.21875 19.78125 L 16.71875 7.28125 Z" /></symbol><use xlink:href="#svg-up" /></svg>`,
	"upload":      `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-upload" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 3.59375 L 15.28125 4.28125 L 8.28125 11.28125 L 9.71875 12.71875 L 15 7.4375 L 15 24 L 17 24 L 17 7.4375 L 22.28125 12.71875 L 23.71875 11.28125 L 16.71875 4.28125 Z M 7 26 L 7 28 L 25 28 L 25 26 Z" /></symbol><use xlink:href="#svg-upload" /></svg>`,
	"users":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-users" viewBox="0 0 32 32"><path class="svg-fill" d="M 11.5 6 C 9.578125 6 8 7.578125 8 9.5 C 8 11.421875 9.578125 13 11.5 13 C 13.421875 13 15 11.421875 15 9.5 C 15 7.578125 13.421875 6 11.5 6 Z M 20.5 6 C 18.578125 6 17 7.578125 17 9.5 C 17 11.421875 18.578125 13 20.5 13 C 22.421875 13 24 11.421875 24 9.5 C 24 7.578125 22.421875 6 20.5 6 Z M 11.5 8 C 12.339844 8 13 8.660156 13 9.5 C 13 10.339844 12.339844 11 11.5 11 C 10.660156 11 10 10.339844 10 9.5 C 10 8.660156 10.660156 8 11.5 8 Z M 20.5 8 C 21.339844 8 22 8.660156 22 9.5 C 22 10.339844 21.339844 11 20.5 11 C 19.660156 11 19 10.339844 19 9.5 C 19 8.660156 19.660156 8 20.5 8 Z M 7 12 C 4.800781 12 3 13.800781 3 16 C 3 17.113281 3.476563 18.117188 4.21875 18.84375 C 2.886719 19.746094 2 21.28125 2 23 L 4 23 C 4 21.332031 5.332031 20 7 20 C 8.667969 20 10 21.332031 10 23 L 12 23 C 12 21.28125 11.113281 19.746094 9.78125 18.84375 C 10.523438 18.117188 11 17.113281 11 16 C 11 13.800781 9.199219 12 7 12 Z M 12 23 C 11.375 23.835938 11 24.886719 11 26 L 13 26 C 13 24.332031 14.332031 23 16 23 C 17.667969 23 19 24.332031 19 26 L 21 26 C 21 24.886719 20.625 23.835938 20 23 C 19.660156 22.546875 19.25 22.160156 18.78125 21.84375 C 19.523438 21.117188 20 20.113281 20 19 C 20 16.800781 18.199219 15 16 15 C 13.800781 15 12 16.800781 12 19 C 12 20.113281 12.476563 21.117188 13.21875 21.84375 C 12.75 22.160156 12.339844 22.546875 12 23 Z M 20 23 L 22 23 C 22 21.332031 23.332031 20 25 20 C 26.667969 20 28 21.332031 28 23 L 30 23 C 30 21.28125 29.113281 19.746094 27.78125 18.84375 C 28.523438 18.117188 29 17.113281 29 16 C 29 13.800781 27.199219 12 25 12 C 22.800781 12 21 13.800781 21 16 C 21 17.113281 21.476563 18.117188 22.21875 18.84375 C 20.886719 19.746094 20 21.28125 20 23 Z M 7 14 C 8.117188 14 9 14.882813 9 16 C 9 17.117188 8.117188 18 7 18 C 5.882813 18 5 17.117188 5 16 C 5 14.882813 5.882813 14 7 14 Z M 25 14 C 26.117188 14 27 14.882813 27 16 C 27 17.117188 26.117188 18 25 18 C 23.882813 18 23 17.117188 23 16 C 23 14.882813 23.882813 14 25 14 Z M 16 17 C 17.117188 17 18 17.882813 18 19 C 18 20.117188 17.117188 21 16 21 C 14.882813 21 14 20.117188 14 19 C 14 17.882813 14.882813 17 16 17 Z" /></symbol><use xlink:href="#svg-users" /></svg>`,
	"warning":     `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-warning" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 3.21875 L 15.125 4.71875 L 3.125 25.5 L 2.28125 27 L 29.71875 27 L 28.875 25.5 L 16.875 4.71875 Z M 16 7.21875 L 26.25 25 L 5.75 25 Z M 15 14 L 15 20 L 17 20 L 17 14 Z M 15 21 L 15 23 L 17 23 L 17 21 Z" /></symbol><use xlink:href="#svg-warning" /></svg>`,
	"windows":     `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-windows" viewBox="0 0 32 32"><path class="svg-fill" d="M 27 5 L 5 7.9921875 L 5 24.007812 L 27 27 L 27 5 z M 25 7.2890625 L 25 15 L 15 15 L 15 8.6503906 L 25 7.2890625 z M 13 8.921875 L 13 15 L 7 15 L 7 9.7382812 L 13 8.921875 z M 7 17 L 13 17 L 13 23.078125 L 7 22.261719 L 7 17 z M 15 17 L 25 17 L 25 24.710938 L 15 23.349609 L 15 17 z" /></symbol><use xlink:href="#svg-windows" /></svg>`,
	"world":       `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-world" viewBox="0 0 32 32"><path class="svg-fill" d="M 16 4 C 9.382813 4 4 9.382813 4 16 C 4 22.617188 9.382813 28 16 28 C 22.617188 28 28 22.617188 28 16 C 28 9.382813 22.617188 4 16 4 Z M 16 6 C 17.96875 6 19.796875 6.585938 21.34375 7.5625 L 20.53125 7.65625 L 20.71875 9.65625 L 19.65625 9.1875 L 18.78125 9.9375 L 18.9375 12 L 21.09375 11.3125 L 23.78125 12.1875 L 23.09375 13.4375 L 21.46875 12.4375 L 19.71875 12.6875 L 18 13.96875 L 17.03125 16.96875 L 18.96875 18.5625 C 18.96875 18.5625 20.957031 18.21875 21.0625 18.21875 C 21.167969 18.21875 21.90625 20.03125 21.90625 20.03125 L 20.3125 25.03125 C 19.011719 25.652344 17.542969 26 16 26 C 15.683594 26 15.371094 25.964844 15.0625 25.9375 L 13.96875 24.03125 L 15.03125 20.03125 L 11 17 L 7.28125 17 L 6.3125 15.03125 L 9 12.90625 L 13 11 L 12.40625 8.34375 L 14.125 7.96875 L 14.9375 9.09375 L 17.9375 8.53125 L 17.40625 6.21875 L 15.1875 6.0625 C 15.453125 6.042969 15.726563 6 16 6 Z M 14.875 6.0625 L 13.3125 6.71875 L 12.5625 6.59375 C 13.300781 6.324219 14.066406 6.152344 14.875 6.0625 Z M 6.0625 16.78125 L 7.03125 17.90625 L 7.03125 19.96875 L 8.90625 22.03125 L 10.0625 22.03125 L 12.90625 25.53125 C 9.132813 24.308594 6.378906 20.890625 6.0625 16.78125 Z" /></symbol><use xlink:href="#svg-world" /></svg>`,
	"wrench":      `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><symbol id="svg-wrench" viewBox="0 0 32 32"><path class="svg-fill" d="M 21 4 C 17.144531 4 14 7.144531 14 11 C 14 11.714844 14.214844 12.363281 14.414063 13.015625 L 4.945313 22.484375 C 3.6875 23.738281 3.6875 25.800781 4.945313 27.058594 C 6.199219 28.3125 8.261719 28.3125 9.515625 27.058594 L 18.984375 17.589844 C 19.632813 17.789063 20.285156 18 21 18 C 24.855469 18 28 14.855469 28 11 C 28 9.972656 27.773438 9 27.375 8.125 L 26.78125 6.804688 L 25.761719 7.828125 L 22.585938 11 L 21 11 L 21 9.414063 L 25.195313 5.21875 L 23.875 4.625 C 23 4.226563 22.027344 4 21 4 Z M 21 6 C 21.171875 6 21.316406 6.085938 21.484375 6.101563 L 19 8.585938 L 19 13 L 23.414063 13 L 25.894531 10.515625 C 25.914063 10.683594 26 10.828125 26 11 C 26 13.773438 23.773438 16 21 16 C 20.300781 16 19.636719 15.855469 19.03125 15.597656 L 18.410156 15.332031 L 8.101563 25.640625 C 7.621094 26.125 6.839844 26.125 6.359375 25.640625 C 5.875 25.160156 5.875 24.378906 6.359375 23.894531 L 16.667969 13.589844 L 16.402344 12.964844 C 16.144531 12.359375 16 11.699219 16 11 C 16 8.226563 18.226563 6 21 6 Z" /></symbol><use xlink:href="#svg-wrench" /></svg>`,
}
View Source
var StringDefaultLinebreak = func() string {
	if runtime.GOOS == "windows" {
		return winLB
	}
	return saneLB
}()
View Source
var UUIDDefault = uuid.UUID{}

Functions

func ArrayDereference added in v0.2.12

func ArrayDereference[T any](x []*T) []T

func ArrayFirstN added in v0.2.12

func ArrayFirstN[V any](items []V, n int) []V

func ArrayFlatten added in v0.2.12

func ArrayFlatten[T any](arrs ...[]T) []T

func ArrayFromAny added in v0.2.3

func ArrayFromAny[T any](dest any) []T

func ArrayLastN added in v0.2.12

func ArrayLastN[V any](items []V, n int) []V

func ArrayLimit added in v0.4.13

func ArrayLimit[T cmp.Ordered](x []T, limit int) ([]T, int)

func ArrayRemoveDuplicates added in v0.2.4

func ArrayRemoveDuplicates[T comparable](x []T) []T

func ArrayRemoveNil added in v0.2.12

func ArrayRemoveNil[T any](x []*T) []*T

func ArraySorted added in v0.2.12

func ArraySorted[T cmp.Ordered](x []T) []T

func ArraySplit added in v0.4.10

func ArraySplit[T any](xs []T, fn func(T) bool) ([]T, []T)

func ArrayTest added in v0.4.4

func ArrayTest(dest any) bool

func ArrayToStringArray added in v0.3.9

func ArrayToStringArray[T any](a []T) []string

func ArrayTransform added in v0.3.8

func ArrayTransform[T any, U any](x []T, f func(T) U) []U

func AsyncCollect added in v0.2.1

func AsyncCollect[T any, R any](items []T, f func(x T) (R, error)) ([]R, []error)

func AsyncCollectMap added in v0.2.12

func AsyncCollectMap[T any, K comparable, R any](items []T, k func(x T) K, f func(x T) (R, error)) (map[K]R, map[K]error)

func AsyncRateLimit added in v0.2.11

func AsyncRateLimit[T any, R any](items []T, f func(x T) (R, error), maxConcurrent int, timeout time.Duration) ([]R, []error)

func ByteSizeIEC added in v0.2.14

func ByteSizeIEC(b int64) string

func ByteSizeSI added in v0.2.14

func ByteSizeSI(b int64) string

func Choose added in v0.4.0

func Choose[T any](b bool, ifTrue T, ifFalse T) T

func ConfigureAcronym added in v0.4.10

func ConfigureAcronym(key, val string)

func CountryFlag added in v0.2.11

func CountryFlag(code string) string

func CycleJSON

func CycleJSON(src any, tgt any) error

func CycleXML added in v0.4.0

func CycleXML(src any, tgt any) error

func DebugBuildInfo added in v0.2.18

func DebugBuildInfo() *debug.BuildInfo

func DebugMemStats added in v0.2.18

func DebugMemStats() *runtime.MemStats

func DebugStartCPUProfile added in v0.2.18

func DebugStartCPUProfile() error

func DebugTakeHeapProfile added in v0.2.18

func DebugTakeHeapProfile() error

func DecryptMessage

func DecryptMessage(key []byte, message string, logger Logger) (string, error)

func DefaultIfNil added in v0.2.12

func DefaultIfNil[T any](ptr *T, d T) T

func DefaultValue added in v0.4.10

func DefaultValue[T any]() T

func EncryptMessage

func EncryptMessage(key []byte, message string, logger Logger) (string, error)

func ErrorMerge added in v0.2.5

func ErrorMerge(errs ...error) error

func Filename added in v0.3.8

func Filename(s string) string

func FormatSeconds added in v0.4.4

func FormatSeconds(x float64) string

func FormatSecondsFull added in v0.4.4

func FormatSecondsFull(x float64) string

func FromJSON

func FromJSON(msg json.RawMessage, tgt any) error

func FromJSONAny added in v0.4.0

func FromJSONAny(msg json.RawMessage) (any, error)

func FromJSONObj added in v0.4.4

func FromJSONObj[T any](msg json.RawMessage) (T, error)

func FromJSONReader

func FromJSONReader(r io.Reader, tgt any) error

func FromJSONStrict

func FromJSONStrict(msg json.RawMessage, tgt any) error

func FromJSONString added in v0.2.27

func FromJSONString(msg json.RawMessage) (string, error)

func FromTOML added in v0.4.4

func FromTOML(msg []byte, tgt any) error

func FromTOMLAny added in v0.4.4

func FromTOMLAny(msg []byte) (any, error)

func FromTOMLReader added in v0.4.4

func FromTOMLReader(r io.Reader, tgt any) error

func FromTOMLStrict added in v0.4.4

func FromTOMLStrict(msg []byte, tgt any) error

func FromTOMLString added in v0.4.4

func FromTOMLString(msg []byte) (string, error)

func FromXML added in v0.4.0

func FromXML(msg []byte, tgt any) error

func FromXMLAny added in v0.4.0

func FromXMLAny(msg []byte) (any, error)

func FromXMLReader added in v0.4.0

func FromXMLReader(r io.Reader, tgt any) error

func FromXMLStrict added in v0.4.0

func FromXMLStrict(msg []byte, tgt any) error

func FromXMLString added in v0.4.0

func FromXMLString(msg []byte) (string, error)

func GetEnv added in v0.1.42

func GetEnv(name string, defaultValue ...string) string

func GetEnvBool added in v0.2.1

func GetEnvBool(name string, defaultValue bool) bool

func GetEnvDuration added in v0.2.5

func GetEnvDuration(name string, defaultValue time.Duration) time.Duration

func GetEnvInt added in v0.2.5

func GetEnvInt(name string, defaultValue int) int

func HashFNV128UUID added in v0.3.10

func HashFNV128UUID(s string) uuid.UUID

func HashFNV32

func HashFNV32(s string) uint32

func HashSHA256

func HashSHA256(s string) string

HashSHA256 returns a Base64-encoded string representing the SHA-256 hash of the argument.

func InitAcronyms added in v0.3.8

func InitAcronyms(extras ...string) error

func JSONToMap

func JSONToMap(i any) map[string]any

func LengthAny added in v0.2.3

func LengthAny(dest any) int

func MapError added in v0.3.9

func MapError[T any, U any](xa []T, f func(el T, idx int) (U, error)) ([]U, error)

func MapGetOrElse added in v0.4.8

func MapGetOrElse[K comparable, V any](mp map[K]V, k K, dflt V) V

func MarkdownTable added in v0.4.0

func MarkdownTable(header []string, rows [][]string, linebreak string) (string, error)

func MarkdownTableParse added in v0.4.0

func MarkdownTableParse(md string) ([]string, [][]string)

func MicrosToMillis

func MicrosToMillis(i int) string

func OrDefault added in v0.4.10

func OrDefault[T comparable](x T, dflt T) T

func ParseArray added in v0.4.8

func ParseArray(r any, path string, allowEmpty bool, coerce bool) ([]any, error)

func ParseArrayFloat added in v0.4.8

func ParseArrayFloat(r any, path string, allowEmpty bool) ([]float64, error)

func ParseArrayInt added in v0.4.8

func ParseArrayInt(r any, path string, allowEmpty bool) ([]int, error)

func ParseArrayString added in v0.4.8

func ParseArrayString(r any, path string, allowEmpty bool) ([]string, error)

func ParseBool added in v0.4.8

func ParseBool(r any, path string, allowEmpty bool) (bool, error)

func ParseFloat added in v0.4.8

func ParseFloat(r any, path string, allowEmpty bool) (float64, error)

func ParseInt added in v0.4.8

func ParseInt(r any, path string, allowEmpty bool) (int, error)

func ParseJSON added in v0.4.25

func ParseJSON(r any, path string, allowEmpty bool) (any, error)

func ParseString added in v0.4.8

func ParseString(r any, path string, allowEmpty bool) (string, error)

func ParseTime added in v0.4.8

func ParseTime(r any, path string, allowEmpty bool) (*time.Time, error)

func ParseUUID added in v0.4.8

func ParseUUID(r any, path string, allowEmpty bool) (*uuid.UUID, error)

func RandomBool

func RandomBool() bool

func RandomBytes

func RandomBytes(size int) []byte

func RandomDate

func RandomDate() time.Time

func RandomElement added in v0.4.12

func RandomElement[T any](slice []T) T

func RandomElements added in v0.3.10

func RandomElements[T any](slice []T, idx int) []T

func RandomFloat added in v0.2.9

func RandomFloat(maxExclusive int) float64

func RandomIcon added in v0.4.4

func RandomIcon() string

func RandomInt

func RandomInt(maxExclusive int) int

func RandomString

func RandomString(length int) string

func RandomURL added in v0.4.4

func RandomURL() *url.URL

func ReplaceEnvVars

func ReplaceEnvVars(s string, logger Logger) string

func RunProcess

func RunProcess(cmd string, path string, in io.Reader, out io.Writer, er io.Writer, env ...string) (int, error)

func RunProcessSimple

func RunProcessSimple(cmd string, path string) (int, string, error)

func StartProcess added in v0.2.12

func StartProcess(cmd string, path string, in io.Reader, out io.Writer, er io.Writer, env ...string) (*exec.Cmd, error)

func StringArrayFromAny added in v0.4.0

func StringArrayFromAny(a []any, maxLength int) []string

func StringArrayMaxLength

func StringArrayMaxLength(a []string) int

func StringArrayOxfordComma

func StringArrayOxfordComma(names []string, separator string) string

func StringArrayQuoted

func StringArrayQuoted(a []string) []string

func StringDetectLinebreak added in v0.2.12

func StringDetectLinebreak(s string) string

func StringForms

func StringForms(s string) (string, string)

func StringNullable added in v0.4.0

func StringNullable(s fmt.Stringer) string

func StringPad

func StringPad(s string, size int) string

func StringPadLeft added in v0.2.12

func StringPadLeft(s string, size int, chr rune) string

func StringPadRight added in v0.2.12

func StringPadRight(s string, size int, chr rune) string

func StringPlural

func StringPlural(count int, s string) string

func StringRepeat

func StringRepeat(s string, n int) string

func StringReplaceBetween added in v0.2.12

func StringReplaceBetween(s string, l string, r string, replacement string) (string, error)

func StringSplit

func StringSplit(s string, sep byte, cutc bool) (string, string)

func StringSplitAndTrim

func StringSplitAndTrim(s string, delim string) []string

func StringSplitLast

func StringSplitLast(s string, sep byte, cutc bool) (string, string)

func StringSplitLastOnly added in v0.2.12

func StringSplitLastOnly(s string, sep byte, cutc bool) string

func StringSplitLines added in v0.2.12

func StringSplitLines(s string) []string

func StringSplitLinesIndented added in v0.3.1

func StringSplitLinesIndented(s string, indent int, indentFirstLine bool, includeEmptyLines bool) []string

func StringSplitPath added in v0.2.12

func StringSplitPath(s string) (string, string)

func StringSplitPathAndTrim added in v0.2.12

func StringSplitPathAndTrim(s string) []string

func StringSubstringBetween added in v0.2.12

func StringSubstringBetween(s string, l string, r string) string

func StringToCamel

func StringToCamel(s string, extraAcronyms ...string) string

func StringToLowerCamel

func StringToLowerCamel(s string, extraAcronyms ...string) string

func StringToPlural

func StringToPlural(s string) string

func StringToSingular

func StringToSingular(s string) string

func StringToSnake added in v0.2.5

func StringToSnake(s string, extraAcronyms ...string) string

func StringToTitle

func StringToTitle(s string, extraAcronyms ...string) string

func StringTruncate

func StringTruncate(s string, max int) string

func TimeCurrent added in v0.2.12

func TimeCurrent() time.Time

func TimeCurrentMillis

func TimeCurrentMillis() int64

func TimeCurrentNanos added in v0.2.12

func TimeCurrentNanos() int64

func TimeCurrentP added in v0.2.12

func TimeCurrentP() *time.Time

func TimeCurrentUnix added in v0.2.12

func TimeCurrentUnix() int64

func TimeFromFull

func TimeFromFull(s string) (*time.Time, error)

func TimeFromFullMS added in v0.4.0

func TimeFromFullMS(s string) (*time.Time, error)

func TimeFromHTML

func TimeFromHTML(s string) (*time.Time, error)

func TimeFromJS

func TimeFromJS(s string) (*time.Time, error)

func TimeFromRFC3339 added in v0.4.0

func TimeFromRFC3339(s string) (*time.Time, error)

func TimeFromString

func TimeFromString(s string) (*time.Time, error)

func TimeFromStringFmt

func TimeFromStringFmt(s string, fmt string) (*time.Time, error)

func TimeFromStringSimple added in v0.3.10

func TimeFromStringSimple(s string) *time.Time

func TimeFromVerbose added in v0.2.12

func TimeFromVerbose(s string) (*time.Time, error)

func TimeFromYMD

func TimeFromYMD(s string) (*time.Time, error)

func TimeMax added in v0.4.8

func TimeMax(ts ...*time.Time) *time.Time

func TimeMin added in v0.4.8

func TimeMin(ts ...*time.Time) *time.Time

func TimeRelative

func TimeRelative(t *time.Time) string

func TimeToFull

func TimeToFull(d *time.Time) string

func TimeToFullMS added in v0.4.0

func TimeToFullMS(d *time.Time) string

func TimeToHTML

func TimeToHTML(d *time.Time) string

func TimeToHours added in v0.4.0

func TimeToHours(d *time.Time) string

func TimeToJS

func TimeToJS(d *time.Time) string

func TimeToJSFull added in v0.4.4

func TimeToJSFull(d *time.Time) string

func TimeToMap added in v0.2.11

func TimeToMap(t time.Time) map[string]any

func TimeToRFC3339 added in v0.4.0

func TimeToRFC3339(d *time.Time) string

func TimeToString

func TimeToString(d *time.Time, fmt string) string

func TimeToVerbose added in v0.2.12

func TimeToVerbose(d *time.Time) string

func TimeToYMD

func TimeToYMD(d *time.Time) string

func TimeToday added in v0.2.12

func TimeToday() *time.Time

func TimeTruncate added in v0.2.12

func TimeTruncate(t *time.Time) *time.Time

func ToCSV added in v0.4.0

func ToCSV(data any) ([]string, [][]string, error)

func ToCSVBytes added in v0.4.0

func ToCSVBytes(data any) ([]byte, error)

func ToJSON

func ToJSON(x any) string

func ToJSONBytes

func ToJSONBytes(x any, indent bool) []byte

func ToJSONCompact

func ToJSONCompact(x any) string

func ToTOML added in v0.4.4

func ToTOML(x any) string

func ToTOMLBytes added in v0.4.4

func ToTOMLBytes(x any) []byte

func ToXML added in v0.4.0

func ToXML(x any) (string, error)

func ToXMLBytes added in v0.4.0

func ToXMLBytes(x any, indent bool) ([]byte, error)

func ToXMLCompact added in v0.4.0

func ToXMLCompact(x any) (string, error)

func UUID

func UUID() uuid.UUID

func UUIDFromString

func UUIDFromString(s string) *uuid.UUID

func UUIDFromStringOK added in v0.2.12

func UUIDFromStringOK(s string) uuid.UUID

func UUIDP

func UUIDP() *uuid.UUID

func UUIDString added in v0.2.12

func UUIDString(u *uuid.UUID) string

func UUIDV7 added in v0.4.19

func UUIDV7() uuid.UUID

func UUIDV7P added in v0.4.19

func UUIDV7P() *uuid.UUID

func ValueMapGet added in v0.4.10

func ValueMapGet[T any](m ValueMap, pth string) (T, error)

Types

type DebugInfo

type DebugInfo struct {
	ServerTags  *OrderedMap[string]
	AppTags     *OrderedMap[string]
	RuntimeTags *OrderedMap[string]
	Mods        []*debug.Module
}

func DebugGetInfo added in v0.2.18

func DebugGetInfo(version string, started time.Time) *DebugInfo

type Diff

type Diff struct {
	Path string `json:"path"`
	Old  string `json:"o,omitempty"`
	New  string `json:"n"`
}

func NewDiff

func NewDiff(p string, o string, n string) *Diff

func (Diff) String

func (d Diff) String() string

func (Diff) StringVerbose added in v0.2.11

func (d Diff) StringVerbose() string

type Diffs

type Diffs []*Diff

func DiffObjects

func DiffObjects(l any, r any, path ...string) Diffs

func DiffObjectsIgnoring

func DiffObjectsIgnoring(l any, r any, ignored []string, path ...string) Diffs

func RandomDiffs

func RandomDiffs(size int) Diffs

func (Diffs) Sorted added in v0.4.4

func (d Diffs) Sorted() Diffs

func (Diffs) String

func (d Diffs) String() string

func (Diffs) StringVerbose added in v0.2.11

func (d Diffs) StringVerbose() string

type DiffsSet added in v0.3.10

type DiffsSet map[string]Diffs

type ErrorDetail

type ErrorDetail struct {
	Type       string            `json:"type" xml:"type"`
	Message    string            `json:"message" xml:"message"`
	Stack      []ErrorFrame      `json:"stack,omitempty" xml:"stack,omitempty"`
	StackTrace errors.StackTrace `json:"-" xml:"-"`
	Cause      *ErrorDetail      `json:"cause,omitempty" xml:"cause,omitempty"`
}

func GetErrorDetail

func GetErrorDetail(e error, includeStack bool) *ErrorDetail

type ErrorFrame

type ErrorFrame struct {
	Key string `json:"key" xml:"key"`
	Loc string `json:"loc" xml:"loc"`
}

func TraceDetail

func TraceDetail(trace errors.StackTrace) []ErrorFrame

type FieldDesc added in v0.3.0

type FieldDesc struct {
	Key         string   `json:"key"`
	Title       string   `json:"title"`
	Description string   `json:"description,omitempty"`
	Type        string   `json:"type,omitempty"`
	Default     string   `json:"default,omitempty"`
	Choices     []string `json:"choices,omitempty"`
}

func (FieldDesc) Parse added in v0.4.4

func (d FieldDesc) Parse(q any) (any, error)

type FieldDescResults added in v0.4.19

type FieldDescResults struct {
	FieldDescs FieldDescs `json:"fieldDescs"`
	Values     ValueMap   `json:"values"`
	Missing    []string   `json:"missing,omitempty"`
}

func FieldDescsCollect added in v0.4.19

func FieldDescsCollect(r *http.Request, args FieldDescs) *FieldDescResults

func (*FieldDescResults) HasMissing added in v0.4.19

func (a *FieldDescResults) HasMissing() bool

type FieldDescs added in v0.3.0

type FieldDescs []*FieldDesc

func (FieldDescs) Get added in v0.4.4

func (d FieldDescs) Get(key string) *FieldDesc

func (FieldDescs) Keys added in v0.4.0

func (d FieldDescs) Keys() []string

type HTTPRequest added in v0.4.10

type HTTPRequest struct {
	*http.Request
	// contains filtered or unexported fields
}

func NewHTTPRequest added in v0.4.10

func NewHTTPRequest(ctx context.Context, method string, url string, bodies ...io.Reader) *HTTPRequest

func (*HTTPRequest) Run added in v0.4.15

func (r *HTTPRequest) Run() (*http.Response, error)

func (*HTTPRequest) RunSimple added in v0.4.10

func (r *HTTPRequest) RunSimple() (*http.Response, []byte, error)

func (*HTTPRequest) WithClient added in v0.4.10

func (r *HTTPRequest) WithClient(c *http.Client) *HTTPRequest

func (*HTTPRequest) WithHeader added in v0.4.10

func (r *HTTPRequest) WithHeader(k string, v string) *HTTPRequest

type KeyTypeDesc added in v0.1.42

type KeyTypeDesc struct {
	Key         string `json:"key"`
	Type        string `json:"type"`
	Description string `json:"description"`
}

func (*KeyTypeDesc) Array added in v0.1.42

func (k *KeyTypeDesc) Array(key string) []string

func (*KeyTypeDesc) Matches added in v0.4.4

func (k *KeyTypeDesc) Matches(x *KeyTypeDesc) bool

func (*KeyTypeDesc) String added in v0.4.24

func (k *KeyTypeDesc) String() string

type KeyTypeDescs added in v0.1.42

type KeyTypeDescs []*KeyTypeDesc

func (KeyTypeDescs) Array added in v0.1.42

func (k KeyTypeDescs) Array(key string) [][]string

func (KeyTypeDescs) Sort added in v0.1.42

func (k KeyTypeDescs) Sort() KeyTypeDescs

func (KeyTypeDescs) Strings added in v0.4.24

func (k KeyTypeDescs) Strings() []string

type KeyVal added in v0.2.12

type KeyVal[T any] struct {
	Key string `json:"key" db:"key"`
	Val T      `json:"val" db:"val"`
}

func (KeyVal[T]) String added in v0.2.12

func (k KeyVal[T]) String() string

type KeyVals added in v0.2.12

type KeyVals[T any] []*KeyVal[T]

func (KeyVals[T]) String added in v0.2.12

func (k KeyVals[T]) String() string

func (KeyVals[T]) ToMap added in v0.2.12

func (k KeyVals[T]) ToMap() map[string]T

func (KeyVals[T]) Values added in v0.2.12

func (k KeyVals[T]) Values() []T

type Logger added in v0.2.4

type Logger = *zap.SugaredLogger
var RootLogger Logger

type NilBool added in v0.4.0

type NilBool struct {
	sql.NullBool
}

func (NilBool) MarshalJSON added in v0.4.0

func (n NilBool) MarshalJSON() ([]byte, error)

func (*NilBool) UnmarshalJSON added in v0.4.0

func (n *NilBool) UnmarshalJSON(data []byte) error

type NilFloat64 added in v0.4.0

type NilFloat64 struct {
	sql.NullFloat64
}

func (NilFloat64) MarshalJSON added in v0.4.0

func (n NilFloat64) MarshalJSON() ([]byte, error)

func (*NilFloat64) UnmarshalJSON added in v0.4.0

func (n *NilFloat64) UnmarshalJSON(data []byte) error

type NilInt32 added in v0.4.0

type NilInt32 struct {
	sql.NullInt32
}

func (NilInt32) MarshalJSON added in v0.4.0

func (n NilInt32) MarshalJSON() ([]byte, error)

func (*NilInt32) UnmarshalJSON added in v0.4.0

func (n *NilInt32) UnmarshalJSON(data []byte) error

type NilInt64 added in v0.4.0

type NilInt64 struct {
	sql.NullInt64
}

func (NilInt64) MarshalJSON added in v0.4.0

func (n NilInt64) MarshalJSON() ([]byte, error)

func (*NilInt64) UnmarshalJSON added in v0.4.0

func (n *NilInt64) UnmarshalJSON(data []byte) error

type NilString added in v0.4.0

type NilString struct {
	sql.NullString
}

func (NilString) MarshalJSON added in v0.4.0

func (n NilString) MarshalJSON() ([]byte, error)

func (*NilString) UnmarshalJSON added in v0.4.0

func (n *NilString) UnmarshalJSON(data []byte) error

type NilTime added in v0.4.0

type NilTime struct {
	sql.NullTime
}

func (NilTime) MarshalJSON added in v0.4.0

func (n NilTime) MarshalJSON() ([]byte, error)

func (*NilTime) UnmarshalJSON added in v0.4.0

func (n *NilTime) UnmarshalJSON(data []byte) error

type Node added in v0.4.0

type Node[T any] struct {
	Name     string   `json:"name"`
	Children Nodes[T] `json:"children,omitempty"`
	Tags     []string `json:"tags,omitempty"`
}

func (*Node[T]) Flatten added in v0.4.0

func (n *Node[T]) Flatten(curr string) []string

func (*Node[T]) Get added in v0.4.0

func (n *Node[T]) Get(pth ...string) *Node[T]

type Nodes added in v0.4.0

type Nodes[T any] []*Node[T]

func (Nodes[T]) Flatten added in v0.4.0

func (n Nodes[T]) Flatten(curr string) []string

func (Nodes[T]) Get added in v0.4.0

func (n Nodes[T]) Get(pth ...string) *Node[T]

func (Nodes[T]) Merge added in v0.4.0

func (n Nodes[T]) Merge(x Nodes[T]) Nodes[T]

func (Nodes[T]) Sort added in v0.4.0

func (n Nodes[T]) Sort() Nodes[T]

type OrderedMap

type OrderedMap[V any] struct {
	Lexical bool
	Order   []string
	Map     map[string]V
}

func NewOMap added in v0.4.4

func NewOMap[V any]() *OrderedMap[V]

func NewOrderedMap

func NewOrderedMap[V any](lexical bool, capacity int) *OrderedMap[V]

func (*OrderedMap[V]) Append

func (o *OrderedMap[V]) Append(k string, v V)

func (*OrderedMap[V]) Clone added in v0.4.25

func (o *OrderedMap[V]) Clone() *OrderedMap[V]

func (*OrderedMap[V]) Get

func (o *OrderedMap[V]) Get(k string) (V, bool)

func (*OrderedMap[V]) GetSimple

func (o *OrderedMap[V]) GetSimple(k string) V

func (*OrderedMap[V]) HasKey added in v0.4.4

func (o *OrderedMap[V]) HasKey(k string) bool

func (*OrderedMap[V]) IndexOf added in v0.4.4

func (o *OrderedMap[V]) IndexOf(k string) int

func (OrderedMap[V]) MarshalJSON

func (o OrderedMap[V]) MarshalJSON() ([]byte, error)

func (OrderedMap[V]) MarshalXML

func (o OrderedMap[V]) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (OrderedMap[V]) MarshalYAML

func (o OrderedMap[V]) MarshalYAML() (any, error)

func (*OrderedMap[V]) Pairs added in v0.4.4

func (o *OrderedMap[V]) Pairs() []*OrderedPair[V]

func (*OrderedMap[V]) Remove added in v0.4.4

func (o *OrderedMap[V]) Remove(k string)

func (*OrderedMap[V]) Set added in v0.4.4

func (o *OrderedMap[V]) Set(k string, v V)

func (*OrderedMap[V]) UnmarshalJSON

func (o *OrderedMap[V]) UnmarshalJSON(b []byte) error

type OrderedPair added in v0.4.4

type OrderedPair[V any] struct {
	K string `json:"k"`
	V V      `json:"v"`
}

type Pkg

type Pkg []string

func (Pkg) Drop

func (p Pkg) Drop(n int) Pkg

func (Pkg) Equals

func (p Pkg) Equals(other Pkg) bool

func (Pkg) Last

func (p Pkg) Last() string

func (Pkg) Push

func (p Pkg) Push(name string) Pkg

func (Pkg) Quoted

func (p Pkg) Quoted(quote string) string

func (Pkg) Shift

func (p Pkg) Shift() Pkg

func (Pkg) StartsWith

func (p Pkg) StartsWith(t Pkg) bool

func (Pkg) String

func (p Pkg) String() string

func (Pkg) StringWith

func (p Pkg) StringWith(extra ...string) string

func (Pkg) ToPath

func (p Pkg) ToPath(extra ...string) string

func (Pkg) Trim

func (p Pkg) Trim(src Pkg) Pkg

func (Pkg) With

func (p Pkg) With(key string) Pkg

type Progress added in v0.4.8

type Progress struct {
	Key       string `json:"key,omitempty"`
	Total     int    `json:"total,omitempty"`
	Completed int    `json:"completed,omitempty"`
	// contains filtered or unexported fields
}

func NewProgress added in v0.4.8

func NewProgress(key string, total int, fns ...func(p *Progress, delta int)) *Progress

func (*Progress) Increment added in v0.4.8

func (p *Progress) Increment(i int, logger Logger)

func (*Progress) String added in v0.4.8

func (p *Progress) String() string

type StringSlice added in v0.4.0

type StringSlice struct {
	Slice []string
}

func NewStringSlice added in v0.4.0

func NewStringSlice(a []string) *StringSlice

func (*StringSlice) Empty added in v0.4.0

func (s *StringSlice) Empty() bool

func (*StringSlice) Join added in v0.4.0

func (s *StringSlice) Join(x string) string

func (*StringSlice) Push added in v0.4.0

func (s *StringSlice) Push(strs ...string)

func (*StringSlice) Pushf added in v0.4.0

func (s *StringSlice) Pushf(msg string, args ...any)

func (*StringSlice) Sort added in v0.4.0

func (s *StringSlice) Sort()

func (*StringSlice) String added in v0.4.4

func (s *StringSlice) String() string

type Timer added in v0.1.43

type Timer struct {
	Started   int64 `json:"started"`
	Completed int64 `json:"complete"`
}

func TimerStart

func TimerStart() *Timer

func (*Timer) Elapsed added in v0.1.43

func (t *Timer) Elapsed() int

func (*Timer) End added in v0.1.43

func (t *Timer) End() int

func (*Timer) EndString added in v0.1.43

func (t *Timer) EndString() string

func (*Timer) String added in v0.1.43

func (t *Timer) String() string

type Tree added in v0.4.0

type Tree[T any] struct {
	Nodes  Nodes[T] `json:"nodes,omitempty"`
	Config ValueMap `json:"config,omitempty"`
}

func (Tree[T]) Flatten added in v0.4.0

func (t Tree[T]) Flatten() []string

func (Tree[T]) Merge added in v0.4.0

func (t Tree[T]) Merge(x *Tree[T]) *Tree[T]

type ValueMap

type ValueMap map[string]any

func FromJSONMap added in v0.2.27

func FromJSONMap(msg json.RawMessage) (ValueMap, error)

func FromTOMLMap added in v0.4.4

func FromTOMLMap(msg []byte) (ValueMap, error)

func FromXMLMap added in v0.4.0

func FromXMLMap(msg []byte) (ValueMap, error)

func ParseArrayMap added in v0.4.8

func ParseArrayMap(r any, path string, allowEmpty bool) ([]ValueMap, error)

func ParseMap added in v0.4.8

func ParseMap(r any, path string, allowEmpty bool) (ValueMap, error)

func RandomValueMap

func RandomValueMap(keys int) ValueMap

func ValueMapFor

func ValueMapFor(kvs ...any) ValueMap

func (ValueMap) Add

func (m ValueMap) Add(kvs ...any)

func (ValueMap) AsChanges

func (m ValueMap) AsChanges() (ValueMap, error)

func (ValueMap) Clone

func (m ValueMap) Clone() ValueMap

func (ValueMap) Filter added in v0.2.12

func (m ValueMap) Filter(keys []string) ValueMap

func (ValueMap) GetArray

func (m ValueMap) GetArray(key string, allowEmpty bool) ([]any, error)

func (ValueMap) GetArrayOpt added in v0.3.9

func (m ValueMap) GetArrayOpt(key string) []any

func (ValueMap) GetBool

func (m ValueMap) GetBool(key string, allowEmpty bool) (bool, error)

func (ValueMap) GetBoolOpt added in v0.2.4

func (m ValueMap) GetBoolOpt(key string) bool

func (ValueMap) GetFloat

func (m ValueMap) GetFloat(key string, allowEmpty bool) (float64, error)

func (ValueMap) GetFloatArray added in v0.3.9

func (m ValueMap) GetFloatArray(key string, allowEmpty bool) ([]float64, error)

func (ValueMap) GetFloatOpt added in v0.3.9

func (m ValueMap) GetFloatOpt(key string) float64

func (ValueMap) GetInt

func (m ValueMap) GetInt(key string, allowEmpty bool) (int, error)

func (ValueMap) GetInt64

func (m ValueMap) GetInt64(key string, allowEmpty bool) (int64, error)

func (ValueMap) GetIntArray added in v0.3.9

func (m ValueMap) GetIntArray(key string, allowEmpty bool) ([]int, error)

func (ValueMap) GetIntOpt added in v0.2.11

func (m ValueMap) GetIntOpt(key string) int

func (ValueMap) GetMap

func (m ValueMap) GetMap(key string, allowEmpty bool) (ValueMap, error)

func (ValueMap) GetMapArray added in v0.3.9

func (m ValueMap) GetMapArray(key string, allowEmpty bool) ([]ValueMap, error)

func (ValueMap) GetMapOpt added in v0.3.9

func (m ValueMap) GetMapOpt(key string) ValueMap

func (ValueMap) GetPath

func (m ValueMap) GetPath(path string, allowMissing bool) (any, error)

func (ValueMap) GetRequired

func (m ValueMap) GetRequired(k string) (any, error)

func (ValueMap) GetString

func (m ValueMap) GetString(key string, allowEmpty bool) (string, error)

func (ValueMap) GetStringArray

func (m ValueMap) GetStringArray(key string, allowEmpty bool) ([]string, error)

func (ValueMap) GetStringArrayOpt added in v0.3.9

func (m ValueMap) GetStringArrayOpt(key string) []string

func (ValueMap) GetStringOpt

func (m ValueMap) GetStringOpt(key string) string

func (ValueMap) GetStringPtr added in v0.2.12

func (m ValueMap) GetStringPtr(key string) *string

func (ValueMap) GetTime

func (m ValueMap) GetTime(key string, allowEmpty bool) (*time.Time, error)

func (ValueMap) GetTimeOpt added in v0.3.9

func (m ValueMap) GetTimeOpt(key string) time.Time

func (ValueMap) GetType

func (m ValueMap) GetType(key string, ret any) error

func (ValueMap) GetUUID

func (m ValueMap) GetUUID(key string, allowEmpty bool) (*uuid.UUID, error)

func (ValueMap) GetUUIDOpt added in v0.3.9

func (m ValueMap) GetUUIDOpt(key string) uuid.UUID

func (ValueMap) HasKey added in v0.3.10

func (m ValueMap) HasKey(key string) bool

func (ValueMap) JSON added in v0.4.9

func (m ValueMap) JSON() string

func (ValueMap) Keys

func (m ValueMap) Keys() []string

func (ValueMap) KeysAndValues

func (m ValueMap) KeysAndValues() ([]string, []any)

func (ValueMap) MarshalXML

func (m ValueMap) MarshalXML(e *xml.Encoder, _ xml.StartElement) error

func (ValueMap) Merge

func (m ValueMap) Merge(args ...ValueMap) ValueMap

func (ValueMap) Overwrite added in v0.2.12

func (m ValueMap) Overwrite(sourceMap ValueMap) ValueMap

func (ValueMap) ParseArray

func (m ValueMap) ParseArray(path string, allowMissing bool, allowEmpty bool, coerce bool) ([]any, error)

func (ValueMap) ParseArrayFloat added in v0.3.9

func (m ValueMap) ParseArrayFloat(path string, allowMissing bool, allowEmpty bool) ([]float64, error)

func (ValueMap) ParseArrayInt added in v0.2.5

func (m ValueMap) ParseArrayInt(path string, allowMissing bool, allowEmpty bool) ([]int, error)

func (ValueMap) ParseArrayMap added in v0.3.9

func (m ValueMap) ParseArrayMap(path string, allowMissing bool, allowEmpty bool) ([]ValueMap, error)

func (ValueMap) ParseArrayString added in v0.2.5

func (m ValueMap) ParseArrayString(path string, allowMissing bool, allowEmpty bool) ([]string, error)

func (ValueMap) ParseBool

func (m ValueMap) ParseBool(path string, allowMissing bool, allowEmpty bool) (bool, error)

func (ValueMap) ParseFloat

func (m ValueMap) ParseFloat(path string, allowMissing bool, allowEmpty bool) (float64, error)

func (ValueMap) ParseInt

func (m ValueMap) ParseInt(path string, allowMissing bool, allowEmpty bool) (int, error)

func (ValueMap) ParseJSON added in v0.4.25

func (m ValueMap) ParseJSON(path string, allowMissing bool, allowEmpty bool) (any, error)

func (ValueMap) ParseMap

func (m ValueMap) ParseMap(path string, allowMissing bool, allowEmpty bool) (ValueMap, error)

func (ValueMap) ParseString

func (m ValueMap) ParseString(path string, allowMissing bool, allowEmpty bool) (string, error)

func (ValueMap) ParseTime

func (m ValueMap) ParseTime(path string, allowMissing bool, allowEmpty bool) (*time.Time, error)

func (ValueMap) ParseUUID

func (m ValueMap) ParseUUID(path string, allowMissing bool, allowEmpty bool) (*uuid.UUID, error)

func (ValueMap) SetPath

func (m ValueMap) SetPath(path string, val any) error

func (ValueMap) String added in v0.4.0

func (m ValueMap) String() string

func (ValueMap) ToQueryString

func (m ValueMap) ToQueryString() string

func (ValueMap) ToStringMap added in v0.2.20

func (m ValueMap) ToStringMap() map[string]string

func (ValueMap) WithoutKeys added in v0.4.1

func (m ValueMap) WithoutKeys(keys ...string) ValueMap

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL