diff --git a/Cargo.lock b/Cargo.lock index a69bd2b..1c04e94 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,6 +8,41 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "aead" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" +dependencies = [ + "generic-array 0.14.5", +] + +[[package]] +name = "aes" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +dependencies = [ + "cfg-if 1.0.0", + "cipher", + "cpufeatures", + "opaque-debug 0.3.0", +] + +[[package]] +name = "aes-gcm" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + [[package]] name = "ahash" version = "0.7.6" @@ -28,6 +63,36 @@ dependencies = [ "memchr", ] +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "async-stream" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "171374e7e3b2504e0e5236e3b59260560f9fe94bfe9ac39ba5e4e929c5590625" +dependencies = [ + "async-stream-impl", + "futures-core", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "648ed8c8d2ce5409ccd57453d9d1b214b342a0d69376a6feda1fd6cae3299308" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "async-trait" version = "0.1.52" @@ -64,6 +129,15 @@ dependencies = [ "num-traits", ] +[[package]] +name = "atomic" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b88d82667eca772c4aa12f0f1348b3ae643424c8876448f3f7bd5787032e234c" +dependencies = [ + "autocfg 1.0.1", +] + [[package]] name = "atty" version = "0.2.14" @@ -72,7 +146,7 @@ checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ "hermit-abi", "libc", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -110,19 +184,64 @@ dependencies = [ "num-traits", ] +[[package]] +name = "binascii" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "383d29d513d8764dcdc42ea295d979eb99c3c9f00607b3692cf68a431f7dca72" + [[package]] name = "bitflags" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "block-buffer" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +dependencies = [ + "block-padding", + "byte-tools", + "byteorder", + "generic-array 0.12.4", +] + [[package]] name = "block-buffer" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ - "generic-array", + "generic-array 0.14.5", +] + +[[package]] +name = "block-buffer" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +dependencies = [ + "generic-array 0.14.5", +] + +[[package]] +name = "block-padding" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" +dependencies = [ + "byte-tools", +] + +[[package]] +name = "bstr" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" +dependencies = [ + "memchr", ] [[package]] @@ -131,6 +250,12 @@ version = "3.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" +[[package]] +name = "byte-tools" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" + [[package]] name = "byteorder" version = "1.4.3" @@ -149,6 +274,12 @@ version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + [[package]] name = "cfg-if" version = "1.0.0" @@ -165,8 +296,8 @@ dependencies = [ "num-integer", "num-traits", "serde", - "time", - "winapi", + "time 0.1.43", + "winapi 0.3.9", ] [[package]] @@ -180,12 +311,60 @@ dependencies = [ "serde", ] +[[package]] +name = "chrono-tz" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58549f1842da3080ce63002102d5bc954c7bc843d4f47818e642abdc36253552" +dependencies = [ + "chrono", + "chrono-tz-build", + "phf", +] + +[[package]] +name = "chrono-tz-build" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db058d493fb2f65f41861bfed7e3fe6335264a9f0f92710cab5bdf01fef09069" +dependencies = [ + "parse-zoneinfo", + "phf", + "phf_codegen", +] + +[[package]] +name = "cipher" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +dependencies = [ + "generic-array 0.14.5", +] + [[package]] name = "const-oid" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d6f2aa4d0537bcc1c74df8755072bd31c1ef1a3a1b85a68e8404a8c353b7b8b" +[[package]] +name = "cookie" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94d4706de1b0fa5b132270cddffa8585166037822e260a944fe161acd137ca05" +dependencies = [ + "aes-gcm", + "base64", + "hkdf", + "percent-encoding", + "rand 0.8.4", + "sha2 0.10.1", + "subtle", + "time 0.3.7", + "version_check", +] + [[package]] name = "core-foundation" version = "0.9.2" @@ -232,7 +411,7 @@ version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2209c310e29876f7f0b2721e7e26b84aff178aa3da5d091f9bfbf47669e60e3" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -241,7 +420,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e54ea8bc3fb1ee042f5aace6e3c6e025d3874866da222930f70ce62aceba0bfa" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "crossbeam-utils", ] @@ -251,7 +430,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b979d76c9fcb84dffc80a73f7290da0f83e4c95773494674cb44b76d13a7a110" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "crossbeam-utils", ] @@ -261,7 +440,7 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcae03edb34f947e64acdb1c33ec169824e20657e9ecb61cef6c8c74dcb8120" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "lazy_static", ] @@ -271,18 +450,36 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f83bd3bb4314701c568e340cd8cf78c975aa0ca79e03d3f6d1677d5b0c9c0c03" dependencies = [ - "generic-array", + "generic-array 0.14.5", "rand_core 0.6.3", "subtle", ] +[[package]] +name = "crypto-common" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4600d695eb3f6ce1cd44e6e291adceb2cc3ab12f20a33777ecd0bf6eba34e06" +dependencies = [ + "generic-array 0.14.5", +] + +[[package]] +name = "ctr" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +dependencies = [ + "cipher", +] + [[package]] name = "dashmap" version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b799062aaf67eb976af3bdca031ee6f846d2f0a5710ddbb0d2efee33f3cc4760" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "num_cpus", "parking_lot", "serde", @@ -298,13 +495,72 @@ dependencies = [ "crypto-bigint", ] +[[package]] +name = "deunicode" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "850878694b7933ca4c9569d30a34b55031b9b139ee1fc7b94a527c4ef960d690" + +[[package]] +name = "devise" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50c7580b072f1c8476148f16e0a0d5dedddab787da98d86c5082c5e9ed8ab595" +dependencies = [ + "devise_codegen", + "devise_core", +] + +[[package]] +name = "devise_codegen" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "123c73e7a6e51b05c75fe1a1b2f4e241399ea5740ed810b0e3e6cacd9db5e7b2" +dependencies = [ + "devise_core", + "quote", +] + +[[package]] +name = "devise_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841ef46f4787d9097405cac4e70fb8644fc037b526e8c14054247c0263c400d0" +dependencies = [ + "bitflags", + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn", +] + +[[package]] +name = "digest" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +dependencies = [ + "generic-array 0.12.4", +] + [[package]] name = "digest" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array", + "generic-array 0.14.5", +] + +[[package]] +name = "digest" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cb780dce4f9a8f5c087362b3a4595936b2019e7c8b30f2c3e9a7e94e6ae9837" +dependencies = [ + "block-buffer 0.10.2", + "crypto-common", + "subtle", ] [[package]] @@ -325,7 +581,7 @@ version = "0.8.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7896dc8abb250ffdda33912550faa54c88ec8b998dec0b2c55ab224921ce11df" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -341,6 +597,12 @@ dependencies = [ "termcolor", ] +[[package]] +name = "fake-simd" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" + [[package]] name = "fastrand" version = "1.7.0" @@ -350,13 +612,39 @@ dependencies = [ "instant", ] +[[package]] +name = "figment" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790b4292c72618abbab50f787a477014fe15634f96291de45672ce46afe122df" +dependencies = [ + "atomic", + "pear", + "serde", + "toml", + "uncased", + "version_check", +] + +[[package]] +name = "filetime" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "winapi 0.3.9", +] + [[package]] name = "flate2" version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "crc32fast", "libc", "miniz_oxide", @@ -393,6 +681,41 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fsevent" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ab7d1bd1bd33cc98b0889831b72da23c0aa4df9cec7e0702f46ecea04b35db6" +dependencies = [ + "bitflags", + "fsevent-sys", +] + +[[package]] +name = "fsevent-sys" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f41b048a94555da0f42f1d632e2e19510084fb8e303b0daa2816e733fb3644a0" +dependencies = [ + "libc", +] + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +dependencies = [ + "bitflags", + "fuchsia-zircon-sys", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" + [[package]] name = "futures" version = "0.3.19" @@ -469,6 +792,28 @@ dependencies = [ "slab", ] +[[package]] +name = "generator" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1d9279ca822891c1a4dae06d185612cf8fc6acfe5dff37781b41297811b12ee" +dependencies = [ + "cc", + "libc", + "log", + "rustversion", + "winapi 0.3.9", +] + +[[package]] +name = "generic-array" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" +dependencies = [ + "typenum", +] + [[package]] name = "generic-array" version = "0.14.5" @@ -485,7 +830,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "wasi 0.9.0+wasi-snapshot-preview1", ] @@ -496,9 +841,51 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "418d37c8b1d42553c93648be529cb70f920d3baf8ef469b74b9638df426e0b4c" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", + "js-sys", "libc", "wasi 0.10.2+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "ghash" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" +dependencies = [ + "opaque-debug 0.3.0", + "polyval", +] + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + +[[package]] +name = "globset" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10463d9ff00a2a068db14231982f5132edebad0d7660cd956a1c30292dbcbfbd" +dependencies = [ + "aho-corasick", + "bstr", + "fnv", + "log", + "regex", +] + +[[package]] +name = "globwalk" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93e3af942408868f6934a7b85134a3230832b9977cf66125df2f9edcfce4ddcc" +dependencies = [ + "bitflags", + "ignore", + "walkdir", ] [[package]] @@ -562,6 +949,24 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hkdf" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "158bc31e00a68e380286904cc598715f861f2b0ccf7aa6fe20c6d0c49ca5d0f6" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddca131f3e7f2ce2df364b57949a9d47915cfbd35e46cfee355ccebbf794d6a2" +dependencies = [ + "digest 0.10.2", +] + [[package]] name = "http" version = "0.2.6" @@ -596,6 +1001,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +[[package]] +name = "humansize" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02296996cb8796d7c6e3bc2d9211b7802812d36999a51bb754123ead7d37d026" + [[package]] name = "humantime" version = "2.1.0" @@ -663,6 +1074,24 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "ignore" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d" +dependencies = [ + "crossbeam-utils", + "globset", + "lazy_static", + "log", + "memchr", + "regex", + "same-file", + "thread_local", + "walkdir", + "winapi-util", +] + [[package]] name = "indexmap" version = "1.8.0" @@ -671,6 +1100,33 @@ checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" dependencies = [ "autocfg 1.0.1", "hashbrown", + "serde", +] + +[[package]] +name = "inlinable_string" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb" + +[[package]] +name = "inotify" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4816c66d2c8ae673df83366c18341538f234a26d65a9ecea5c348b453ac1d02f" +dependencies = [ + "bitflags", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", ] [[package]] @@ -679,7 +1135,16 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", ] [[package]] @@ -718,15 +1183,31 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" dependencies = [ - "spin", + "spin 0.5.2", ] +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + [[package]] name = "levenshtein" version = "1.0.5" @@ -760,7 +1241,37 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", +] + +[[package]] +name = "loom" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edc5c7d328e32cc4954e8e01193d7f0ef5ab257b5090b70a964e099a36034309" +dependencies = [ + "cfg-if 1.0.0", + "generator", + "scoped-tls", + "serde", + "serde_json", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata", ] [[package]] @@ -807,6 +1318,25 @@ dependencies = [ "autocfg 1.0.1", ] +[[package]] +name = "mio" +version = "0.6.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" +dependencies = [ + "cfg-if 0.1.10", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log", + "miow 0.2.2", + "net2", + "slab", + "winapi 0.2.8", +] + [[package]] name = "mio" version = "0.7.14" @@ -815,9 +1345,33 @@ checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" dependencies = [ "libc", "log", - "miow", + "miow 0.3.7", "ntapi", - "winapi", + "winapi 0.3.9", +] + +[[package]] +name = "mio-extras" +version = "2.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" +dependencies = [ + "lazycell", + "log", + "mio 0.6.23", + "slab", +] + +[[package]] +name = "miow" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" +dependencies = [ + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", ] [[package]] @@ -826,7 +1380,27 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" dependencies = [ - "winapi", + "winapi 0.3.9", +] + +[[package]] +name = "multer" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f8f35e687561d5c1667590911e6698a8cb714a134a7505718a182e7bc9d3836" +dependencies = [ + "bytes", + "encoding_rs", + "futures-util", + "http", + "httparse", + "log", + "memchr", + "mime", + "spin 0.9.2", + "tokio", + "tokio-util", + "version_check", ] [[package]] @@ -847,6 +1421,17 @@ dependencies = [ "tempfile", ] +[[package]] +name = "net2" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "winapi 0.3.9", +] + [[package]] name = "nom" version = "7.1.0" @@ -858,13 +1443,40 @@ dependencies = [ "version_check", ] +[[package]] +name = "normpath" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04aaf5e9cb0fbf883cc0423159eacdf96a9878022084b35c462c428cab73bcaf" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "notify" +version = "4.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae03c8c853dba7bfd23e571ff0cff7bc9dceb40a4cd684cd1681824183f45257" +dependencies = [ + "bitflags", + "filetime", + "fsevent", + "fsevent-sys", + "inotify", + "libc", + "mio 0.6.23", + "mio-extras", + "walkdir", + "winapi 0.3.9", +] + [[package]] name = "ntapi" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] @@ -937,12 +1549,47 @@ dependencies = [ "libc", ] +[[package]] +name = "num_threads" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ba99ba6393e2c3734791401b66902d981cb03bf190af674ca69949b6d5fb15" +dependencies = [ + "libc", +] + +[[package]] +name = "oauth2" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e47cfc4c0a1a519d9a025ebfbac3a2439d1b5cdf397d72dcb79b11d9920dab" +dependencies = [ + "base64", + "chrono", + "getrandom 0.2.4", + "http", + "rand 0.8.4", + "reqwest", + "serde", + "serde_json", + "serde_path_to_error", + "sha2 0.9.9", + "thiserror", + "url", +] + [[package]] name = "once_cell" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" +[[package]] +name = "opaque-debug" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" + [[package]] name = "opaque-debug" version = "0.3.0" @@ -956,7 +1603,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95" dependencies = [ "bitflags", - "cfg-if", + "cfg-if 1.0.0", "foreign-types", "libc", "once_cell", @@ -999,12 +1646,12 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "instant", "libc", "redox_syscall", "smallvec", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -1016,6 +1663,29 @@ dependencies = [ "regex", ] +[[package]] +name = "pear" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15e44241c5e4c868e3eaa78b7c1848cadd6344ed4f54d029832d32b415a58702" +dependencies = [ + "inlinable_string", + "pear_codegen", + "yansi", +] + +[[package]] +name = "pear_codegen" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82a5ca643c2303ecb740d506539deba189e16f2754040a42901cd8105d0282d0" +dependencies = [ + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn", +] + [[package]] name = "pem-rfc7468" version = "0.2.4" @@ -1031,6 +1701,88 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +[[package]] +name = "pest" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" +dependencies = [ + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pest_meta" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d" +dependencies = [ + "maplit", + "pest", + "sha-1 0.8.2", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_codegen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared", + "rand 0.8.4", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", + "uncased", +] + [[package]] name = "pin-project-lite" version = "0.2.8" @@ -1073,12 +1825,24 @@ version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" +[[package]] +name = "polyval" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "opaque-debug 0.3.0", + "universal-hash", +] + [[package]] name = "postman" version = "0.1.0" dependencies = [ "chrono", - "chrono-tz", + "chrono-tz 0.5.3", "env_logger", "lazy_static", "log", @@ -1104,6 +1868,19 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "proc-macro2-diagnostics" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bf29726d67464d49fa6224a1d07936a8c08bb3fba727c7493f6cf1616fdaada" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "version_check", + "yansi", +] + [[package]] name = "quote" version = "1.0.15" @@ -1203,6 +1980,26 @@ dependencies = [ "bitflags", ] +[[package]] +name = "ref-cast" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300f2a835d808734ee295d45007adacb9ebb29dd3ae2424acfa17930cae541da" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c38e3aecd2b21cb3959637b883bb3714bc7e43f0268b9a29d3743ee3e55cdd2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "regex" version = "1.5.4" @@ -1214,6 +2011,15 @@ dependencies = [ "regex-syntax", ] +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax", +] + [[package]] name = "regex-syntax" version = "0.6.25" @@ -1236,7 +2042,7 @@ version = "1.6.0-beta3" dependencies = [ "base64", "chrono", - "chrono-tz", + "chrono-tz 0.5.3", "dotenv", "env_logger", "humantime", @@ -1248,6 +2054,7 @@ dependencies = [ "rand 0.7.3", "regex", "regex_command_attr", + "reminder_web", "reqwest", "rmp-serde", "serde", @@ -1258,13 +2065,29 @@ dependencies = [ "tokio", ] +[[package]] +name = "reminder_web" +version = "0.1.0" +dependencies = [ + "chrono", + "chrono-tz 0.5.3", + "log", + "oauth2", + "reqwest", + "rocket", + "rocket_dyn_templates", + "serde", + "serenity", + "sqlx", +] + [[package]] name = "remove_dir_all" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] @@ -1319,10 +2142,10 @@ dependencies = [ "cc", "libc", "once_cell", - "spin", + "spin 0.5.2", "untrusted", "web-sys", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -1346,6 +2169,98 @@ dependencies = [ "serde", ] +[[package]] +name = "rocket" +version = "0.5.0-rc.1" +source = "git+https://github.com/SergioBenitez/Rocket?branch=master#8cae077ba1d54b92cdef3e171a730b819d5eeb8e" +dependencies = [ + "async-stream", + "async-trait", + "atomic", + "atty", + "binascii", + "bytes", + "either", + "figment", + "futures", + "indexmap", + "log", + "memchr", + "multer", + "num_cpus", + "parking_lot", + "pin-project-lite", + "rand 0.8.4", + "ref-cast", + "rocket_codegen", + "rocket_http", + "serde", + "serde_json", + "state", + "tempfile", + "time 0.3.7", + "tokio", + "tokio-stream", + "tokio-util", + "ubyte", + "version_check", + "yansi", +] + +[[package]] +name = "rocket_codegen" +version = "0.5.0-rc.1" +source = "git+https://github.com/SergioBenitez/Rocket?branch=master#8cae077ba1d54b92cdef3e171a730b819d5eeb8e" +dependencies = [ + "devise", + "glob", + "indexmap", + "proc-macro2", + "quote", + "rocket_http", + "syn", + "unicode-xid", +] + +[[package]] +name = "rocket_dyn_templates" +version = "0.1.0-rc.1" +source = "git+https://github.com/SergioBenitez/Rocket?branch=master#8cae077ba1d54b92cdef3e171a730b819d5eeb8e" +dependencies = [ + "glob", + "normpath", + "notify", + "rocket", + "tera", +] + +[[package]] +name = "rocket_http" +version = "0.5.0-rc.1" +source = "git+https://github.com/SergioBenitez/Rocket?branch=master#8cae077ba1d54b92cdef3e171a730b819d5eeb8e" +dependencies = [ + "cookie", + "either", + "http", + "hyper", + "indexmap", + "log", + "memchr", + "pear", + "percent-encoding", + "pin-project-lite", + "ref-cast", + "rustls 0.19.1", + "serde", + "smallvec", + "stable-pattern", + "state", + "time 0.3.7", + "tokio", + "tokio-rustls 0.22.0", + "uncased", +] + [[package]] name = "rsa" version = "0.5.0" @@ -1353,7 +2268,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e05c2603e2823634ab331437001b411b9ed11660fbc4066f3908c84a9439260d" dependencies = [ "byteorder", - "digest", + "digest 0.9.0", "lazy_static", "num-bigint-dig", "num-integer", @@ -1400,12 +2315,27 @@ dependencies = [ "base64", ] +[[package]] +name = "rustversion" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f" + [[package]] name = "ryu" version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + [[package]] name = "schannel" version = "0.1.19" @@ -1413,9 +2343,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" dependencies = [ "lazy_static", - "winapi", + "winapi 0.3.9", ] +[[package]] +name = "scoped-tls" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" + [[package]] name = "scopeguard" version = "1.1.0" @@ -1496,6 +2432,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_path_to_error" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7868ad3b8196a8a0aea99a8220b124278ee5320a55e4fde97794b6f85b1a377" +dependencies = [ + "serde", +] + [[package]] name = "serde_repr" version = "0.1.7" @@ -1546,17 +2491,29 @@ dependencies = [ "url", ] +[[package]] +name = "sha-1" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" +dependencies = [ + "block-buffer 0.7.3", + "digest 0.8.1", + "fake-simd", + "opaque-debug 0.2.3", +] + [[package]] name = "sha-1" version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" dependencies = [ - "block-buffer", - "cfg-if", + "block-buffer 0.9.0", + "cfg-if 1.0.0", "cpufeatures", - "digest", - "opaque-debug", + "digest 0.9.0", + "opaque-debug 0.3.0", ] [[package]] @@ -1565,11 +2522,31 @@ version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ - "block-buffer", - "cfg-if", + "block-buffer 0.9.0", + "cfg-if 1.0.0", "cpufeatures", - "digest", - "opaque-debug", + "digest 0.9.0", + "opaque-debug 0.3.0", +] + +[[package]] +name = "sha2" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99c3bd8169c58782adad9290a9af5939994036b76187f7b4f0e6de91dbbfc0ec" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.2", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", ] [[package]] @@ -1581,12 +2558,27 @@ dependencies = [ "libc", ] +[[package]] +name = "siphasher" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a86232ab60fa71287d7f2ddae4a7073f6b7aac33631c3015abb556f08c6d0a3e" + [[package]] name = "slab" version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" +[[package]] +name = "slug" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3bc762e6a4b6c6fcaade73e77f9ebc6991b676f88bb2358bddb56560f073373" +dependencies = [ + "deunicode", +] + [[package]] name = "smallvec" version = "1.8.0" @@ -1600,7 +2592,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" dependencies = [ "libc", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -1609,6 +2601,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +[[package]] +name = "spin" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "511254be0c5bcf062b019a6c89c01a664aa359ded62f78aa72c6fc137c0590e5" + [[package]] name = "spki" version = "0.4.1" @@ -1656,13 +2654,13 @@ dependencies = [ "crossbeam-channel", "crossbeam-queue", "crossbeam-utils", - "digest", + "digest 0.9.0", "either", "futures-channel", "futures-core", "futures-intrusive", "futures-util", - "generic-array", + "generic-array 0.14.5", "hashlink", "hex", "indexmap", @@ -1677,8 +2675,8 @@ dependencies = [ "rand 0.8.4", "rsa", "rustls 0.19.1", - "sha-1", - "sha2", + "sha-1 0.9.8", + "sha2 0.9.9", "smallvec", "sqlformat", "sqlx-rt", @@ -1702,7 +2700,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "sha2", + "sha2 0.9.9", "sqlx-core", "sqlx-rt", "syn", @@ -1720,6 +2718,24 @@ dependencies = [ "tokio-rustls 0.22.0", ] +[[package]] +name = "stable-pattern" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4564168c00635f88eaed410d5efa8131afa8d8699a612c80c455a0ba05c21045" +dependencies = [ + "memchr", +] + +[[package]] +name = "state" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cf4f5369e6d3044b5e365c9690f451516ac8f0954084622b49ea3fde2f6de5" +dependencies = [ + "loom", +] + [[package]] name = "stringprep" version = "0.1.2" @@ -1765,12 +2781,34 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "fastrand", "libc", "redox_syscall", "remove_dir_all", - "winapi", + "winapi 0.3.9", +] + +[[package]] +name = "tera" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3cac831b615c25bcef632d1cabf864fa05813baad3d526829db18eb70e8b58d" +dependencies = [ + "chrono", + "chrono-tz 0.6.1", + "globwalk", + "humansize", + "lazy_static", + "percent-encoding", + "pest", + "pest_derive", + "rand 0.8.4", + "regex", + "serde", + "serde_json", + "slug", + "unic-segment", ] [[package]] @@ -1802,6 +2840,15 @@ dependencies = [ "syn", ] +[[package]] +name = "thread_local" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +dependencies = [ + "once_cell", +] + [[package]] name = "time" version = "0.1.43" @@ -1809,9 +2856,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" dependencies = [ "libc", - "winapi", + "winapi 0.3.9", ] +[[package]] +name = "time" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "004cbc98f30fa233c61a38bc77e96a9106e65c88f2d3bef182ae952027e5753d" +dependencies = [ + "itoa 1.0.1", + "libc", + "num_threads", + "time-macros", +] + +[[package]] +name = "time-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25eb0ca3468fc0acc11828786797f6ef9aa1555e4a211a60d64cc8e4d1be47d6" + [[package]] name = "tinyvec" version = "1.5.1" @@ -1836,14 +2901,14 @@ dependencies = [ "bytes", "libc", "memchr", - "mio", + "mio 0.7.14", "num_cpus", "once_cell", "parking_lot", "pin-project-lite", "signal-hook-registry", "tokio-macros", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -1914,6 +2979,15 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +dependencies = [ + "serde", +] + [[package]] name = "tower-service" version = "0.3.1" @@ -1926,7 +3000,7 @@ version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "log", "pin-project-lite", "tracing-attributes", @@ -1953,6 +3027,35 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "tracing-log" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6923477a48e41c1951f1999ef8bb5a3023eb723ceadafe78ffb65dc366761e3" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5312f325fe3588e277415f5a6cca1f4ccad0f248c4cd5a4bd33032d7286abc22" +dependencies = [ + "ansi_term", + "lazy_static", + "matchers", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + [[package]] name = "try-lock" version = "0.2.3" @@ -1973,7 +3076,7 @@ dependencies = [ "log", "rand 0.8.4", "rustls 0.20.2", - "sha-1", + "sha-1 0.9.8", "thiserror", "url", "utf-8", @@ -1992,6 +3095,81 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" +[[package]] +name = "ubyte" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42756bb9e708855de2f8a98195643dff31a97f0485d90d8467b39dc24be9e8fe" +dependencies = [ + "serde", +] + +[[package]] +name = "ucd-trie" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" + +[[package]] +name = "uncased" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baeed7327e25054889b9bd4f975f32e5f4c5d434042d59ab6cd4142c0a76ed0" +dependencies = [ + "serde", + "version_check", +] + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-segment" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ed5d26be57f84f176157270c112ef57b86debac9cd21daaabbe56db0f88f23" +dependencies = [ + "unic-ucd-segment", +] + +[[package]] +name = "unic-ucd-segment" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2079c122a62205b421f499da10f3ee0f7697f012f55b675e002483c73ea34700" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + [[package]] name = "unicase" version = "2.6.0" @@ -2034,6 +3212,16 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" +[[package]] +name = "universal-hash" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" +dependencies = [ + "generic-array 0.14.5", + "subtle", +] + [[package]] name = "untrusted" version = "0.7.1" @@ -2080,6 +3268,17 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "walkdir" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +dependencies = [ + "same-file", + "winapi 0.3.9", + "winapi-util", +] + [[package]] name = "want" version = "0.3.0" @@ -2108,7 +3307,7 @@ version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "wasm-bindgen-macro", ] @@ -2133,7 +3332,7 @@ version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "js-sys", "wasm-bindgen", "web-sys", @@ -2216,6 +3415,12 @@ dependencies = [ "webpki 0.22.0", ] +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + [[package]] name = "winapi" version = "0.3.9" @@ -2226,6 +3431,12 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu", ] +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -2238,7 +3449,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] @@ -2253,9 +3464,25 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" dependencies = [ - "winapi", + "winapi 0.3.9", ] +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "yansi" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc79f4a1e39857fc00c3f662cbf2651c771f00e9c15fe2abc341806bd46bd71" + [[package]] name = "zeroize" version = "1.4.3" diff --git a/Cargo.toml b/Cargo.toml index 6db8316..4ade220 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,6 +31,9 @@ path = "command_attributes" [dependencies.postman] path = "postman" +[dependencies.reminder_web] +path = "web" + [dependencies.serenity] git = "https://github.com/serenity-rs/serenity" branch = "next" diff --git a/Rocket.toml b/Rocket.toml new file mode 100644 index 0000000..666f089 --- /dev/null +++ b/Rocket.toml @@ -0,0 +1,27 @@ +[default] +address = "0.0.0.0" +port = 5000 +template_dir = "web/templates" + +[debug] +secret_key = "tR8krio5FXTnnyIZNiJDXPondz0kI1v6X6BXZcBGIRY=" + +[default.tls] +certs = "web/private/rsa_sha256_cert.pem" +key = "web/private/rsa_sha256_key.pem" + +[rsa_sha256.tls] +certs = "web/private/rsa_sha256_cert.pem" +key = "web/private/rsa_sha256_key.pem" + +[ecdsa_nistp256_sha256.tls] +certs = "web/private/ecdsa_nistp256_sha256_cert.pem" +key = "web/private/ecdsa_nistp256_sha256_key_pkcs8.pem" + +[ecdsa_nistp384_sha384.tls] +certs = "web/private/ecdsa_nistp384_sha384_cert.pem" +key = "web/private/ecdsa_nistp384_sha384_key_pkcs8.pem" + +[ed25519.tls] +certs = "web/private/ed25519_cert.pem" +key = "eb/private/ed25519_key.pem" diff --git a/src/main.rs b/src/main.rs index 6c8fcf6..fbff421 100644 --- a/src/main.rs +++ b/src/main.rs @@ -22,7 +22,6 @@ use std::{ use chrono_tz::Tz; use dotenv::dotenv; use log::info; -use postman::initialize; use serenity::{ async_trait, client::Client, @@ -83,11 +82,18 @@ impl EventHandler for Handler { info!("Preparing to send reminders"); if !self.is_loop_running.load(Ordering::Relaxed) { - let ctx = ctx_base.clone(); - let pool = ctx.data.read().await.get::().cloned().unwrap(); + let ctx1 = ctx_base.clone(); + let ctx2 = ctx_base.clone(); + + let pool1 = ctx1.data.read().await.get::().cloned().unwrap(); + let pool2 = ctx2.data.read().await.get::().cloned().unwrap(); tokio::spawn(async move { - initialize(ctx, &pool).await; + postman::initialize(ctx1, &pool1).await; + }); + + tokio::spawn(async move { + reminder_web::initialize(ctx2, pool2).await.unwrap(); }); self.is_loop_running.swap(true, Ordering::Relaxed); diff --git a/web/Cargo.toml b/web/Cargo.toml index b018c1e..0d0742f 100644 --- a/web/Cargo.toml +++ b/web/Cargo.toml @@ -1,8 +1,17 @@ [package] -name = "web" +name = "reminder_web" version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +authors = ["jellywx "] +edition = "2018" [dependencies] +rocket = { git = "https://github.com/SergioBenitez/Rocket", branch = "master", features = ["tls", "secrets", "json"] } +rocket_dyn_templates = { git = "https://github.com/SergioBenitez/Rocket", branch = "master", features = ["tera"] } +serenity = { git = "https://github.com/serenity-rs/serenity", branch = "next", default-features = false, features = ["builder", "cache", "client", "gateway", "http", "model", "utils", "rustls_backend"] } +oauth2 = "4" +log = "0.4" +reqwest = "0.11" +serde = { version = "1.0", features = ["derive"] } +sqlx = { version = "0.5", features = ["runtime-tokio-rustls", "macros", "mysql", "chrono"] } +chrono = "0.4" +chrono-tz = "0.5" diff --git a/web/private/ca_cert.pem b/web/private/ca_cert.pem new file mode 100644 index 0000000..550a5ca --- /dev/null +++ b/web/private/ca_cert.pem @@ -0,0 +1,32 @@ +-----BEGIN CERTIFICATE----- +MIIFbzCCA1egAwIBAgIUUY2fYP5h41dtqcuNLVUS99N7+jAwDQYJKoZIhvcNAQEL +BQAwRzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYDVQQKDAlSb2NrZXQg +Q0ExFzAVBgNVBAMMDlJvY2tldCBSb290IENBMB4XDTIxMDUxNzE5MDIyNFoXDTMx +MDUxNTE5MDIyNFowRzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYDVQQK +DAlSb2NrZXQgQ0ExFzAVBgNVBAMMDlJvY2tldCBSb290IENBMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEA3MmVOUxbZ0rtBBbXjWkkM2n2IoPuqfiENdrM +NH9IcIbEgFb7AQ/c2vGBLWWw2RFtXxe2ubbgcHyAySQ+ENGEf+W2yox5JpcOOBP+ +/KrUQ4ROqxLBWOD6+fA/q5m9/CXXJosWXly3DFE9nUEUlNXcaSxJm/bxIqnxwEMQ +NESWdG1qlsGVhHLi5sflgwAcYH+nZzdtINLyvQ5AGIs8s6LpmvUVbC3I+5oNNSwW +rRsIfCFaYLuUx7jZMaOk8Dfz8MbFL68+7OCGwmhduSHoGW8jVzDXwXv/crAmFtau +zmu43/vPDwKa4w/kQJLNr1QmiGz9FBt8DXVJ0s5bokOIlodEgAvjsL3xwnrKak0F +8ak74IBetfDdVvuC9WWmJ9/dj3z91KvCWLdZGm8ijlYZ2OuaiiJ/oC6iebaPFHEY +IQmF5wzT/nZLIbQsti9wFnOpptgkhDAcKIAk3+pncuMwZ9WRvWO2IFt+ZCqKCCDU +JliDZmm3ow/zob8DD6Txex5OkJGUF6iu8o7fjI9BxsjSc76bLrxIhvR43UXjzoHl +t3lvDH8SzSN/kxzQMXVl48h3xydJ3+ZyDOLle1bqMga8Kcin9GcEUqmL1JcyFafe +CUE/Nk1pHyrlnhpMCYIDVI3pmNLB0/m/IEWLckSr9+hXyUPJQyWiyrixwC86SPxZ +AonU2aUCAwEAAaNTMFEwHQYDVR0OBBYEFJ5uQa9kD5fioNeS/Ff/mxDcMAzhMB8G +A1UdIwQYMBaAFJ5uQa9kD5fioNeS/Ff/mxDcMAzhMA8GA1UdEwEB/wQFMAMBAf8w +DQYJKoZIhvcNAQELBQADggIBABf7adF1J40/8EjfSJ5XdG7OBUrZTas3+nuULh8B +6h1igAq0BgX9v3awmPCaxqDLqwJCsFZCk0s9Vgd62McKVKasyW1TQchWbdvlqeAB +QQfZpJtAZK12dcMl6iznC/JBTPvYl9q1FKS8kYtg19in/xlhxiiEJaL5z+slpTgT +cN12650W2FqjT9sD9jshZI/a8o53d2yUBXBBecCZ49djceBGLbxbteEi/sb9qM4f +IUxeSrvK6owxKMZ5okUqZWaFseFCkdMKpMg9eecyfSTweac8yLlZmeqX5D/H85Hr +hnWHjI5NeVZAoDkdmNeaDbAIv4f3prqC8uFP3ub8D0rG/WiPdOAd79KNgqbUUFyp +NbjSiAesx4Rm1WIgjHljFQKXJdtnxt+v1VkKV9entXJX2tye7+Z1+zurNYyUyM1J +COdXeV4jpq2mP8cLpAqX7ip1tNx9YMy5ctbAE1WsUw7lPyO91+VN2Q6MN5OyemY3 +4nBzRJU8X1nsDgeNQWjzb/ZC7eoS916Gywk8Hu6GoIwvYMm3zea25n6mAAOX17vE +1YdvSzUlnVbwnbgd4BgFRGUfBVjO7qvFC7ZWLngWhBzIIYIGUJfO2rippgkxAoHH +dgWYk1MNnk2yM8WSo0VKoe4yuF9NwPlfPqeCE683JHdwGEJKZWMocszzHrGZ2KX2 +I4/u +-----END CERTIFICATE----- diff --git a/web/private/ca_key.pem b/web/private/ca_key.pem new file mode 100644 index 0000000..1abc7c7 --- /dev/null +++ b/web/private/ca_key.pem @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIJKAIBAAKCAgEA3MmVOUxbZ0rtBBbXjWkkM2n2IoPuqfiENdrMNH9IcIbEgFb7 +AQ/c2vGBLWWw2RFtXxe2ubbgcHyAySQ+ENGEf+W2yox5JpcOOBP+/KrUQ4ROqxLB +WOD6+fA/q5m9/CXXJosWXly3DFE9nUEUlNXcaSxJm/bxIqnxwEMQNESWdG1qlsGV +hHLi5sflgwAcYH+nZzdtINLyvQ5AGIs8s6LpmvUVbC3I+5oNNSwWrRsIfCFaYLuU +x7jZMaOk8Dfz8MbFL68+7OCGwmhduSHoGW8jVzDXwXv/crAmFtauzmu43/vPDwKa +4w/kQJLNr1QmiGz9FBt8DXVJ0s5bokOIlodEgAvjsL3xwnrKak0F8ak74IBetfDd +VvuC9WWmJ9/dj3z91KvCWLdZGm8ijlYZ2OuaiiJ/oC6iebaPFHEYIQmF5wzT/nZL +IbQsti9wFnOpptgkhDAcKIAk3+pncuMwZ9WRvWO2IFt+ZCqKCCDUJliDZmm3ow/z +ob8DD6Txex5OkJGUF6iu8o7fjI9BxsjSc76bLrxIhvR43UXjzoHlt3lvDH8SzSN/ +kxzQMXVl48h3xydJ3+ZyDOLle1bqMga8Kcin9GcEUqmL1JcyFafeCUE/Nk1pHyrl +nhpMCYIDVI3pmNLB0/m/IEWLckSr9+hXyUPJQyWiyrixwC86SPxZAonU2aUCAwEA +AQKCAgBVSXlfXOOiDwtnnPs/IPJe+fuecaBsABfyRcbEMLbm4OhfOzpSurHx0YC4 +7KNX9qdtKFfpfX9NdIq7KEjhbk3kqfPmYkUaZxeTCgZhzAua2S0aYHBXyPCqQ+gU +fZsqH+Pwe6H0aZQ8KdXHPTCaHdK6veThXo7feQ5t2noT9rq31txpx/Xd6BNGWsmJ +xS0xCZ68/GgnWdVyumKAGKkmKzRaK3pPA5CzwFqBw7ouvFaWvLuQymU6kWk1B6Xb +NYIB7IaXWPbRwhnMV0x9C2ABEzFvqOpvT1rqDqloAR4dlvcfbsIZZkQ2mhjt6MeT +hsorwQ4yCjvtZvVRfW1gTP4iR7ZpmHgHIYQDJy7raZqRVNe9WgMxKTS/IYsHvEvH +MUBOfQEclAQ8FTUOgTg9+Hf9VXJOtjZRxY08gb+OgKxoAQKxRZmLDUZli9SNWzGe +R3UECh0gImm/CzWnV3fercLX+qHLTcyJFcb2gclAfG8v8cOT2qu8RtsJAQM2ZSn7 +L8FaWXewjAwkZwCl8Zl5ky1RbBXUkcuLIkAeLAl0+ffM9xiwLhiIj8gRJoq0/jSr +K1pA8CQ/rZC+9RsI8hP4x2Fn1CU8bOyEBPeNFEIDJHBiCrs/Rl6EAzDMJHlhL/HT +f7bqssuRjnSbRCKaAdtfGTxQUEjefvqJ11xE3BfHGnKPqoasMQKCAQEA8nY+3MAB +eBPlE/H4JeVpj7/9/q+JWLFFH9E3Re25LbObzRzIQOd5bTCJkOPQXYRbRIZ1pMt9 ++nZzeLKvWn5nuUFgG2S4n+BEJkBDV78LOkUuGIAPdztF2mwVumygEGJFFfZHbYrh +XtaGUKdNxn1R3Z4B8W5jWpNNkU+dvoq4Zt0LrL28HB4Sa2yrtHeXbhqSb0BA15+N +vO9mlfX2I6Yr8F+L/OBfxB0gaNLISJJsj5NSm302je/QrfoMAwbePoNPjEX1/qd2 +rgj9JfM+NE2FsVnFhrV+q4DywRUdX4VBFP4+x7fPm8LxvtVUmLVA3/NtGwPdnC6U +mQh/+kKVhU2AQwKCAQEA6R2FrxZIUdmk45b/tSjlq7r1ycBYeSztjzXw6hx+w/K3 +Lf+5OGyoGoKr5bZHMhHFxqoWzP6kiZ2Uyvu+pLAGLfenJPec89ZncN4FvW9yU8yL +nE2Sc8Vf2GnOw2KGJcJR11Ew4dDspHfnM3rof2G4gPC/EMZeGojXoc5GHmT4iasD +Xwje4qqx5WKvRu1Rw2y+XM5h4gDn3QLLojDOvBpt22yaqSTAupY7OliGFO9h2WPL +r9TL6va87nXNepCdtzuSlxqTVtgMu2wVu3CnQyw9RiD2M31YnUtBDLNy/UNFj/5Z +6uXYuakh8vSFFvjgCUyQwR1xCTJur/6LdpAnt9Bz9wKCAQAUqoN9KVh2tatm4c72 +2/D9ca3ikW+xgZqUta5yZWrNPGvhNbzT22b8KZDwKprN/cQRuSw52aZpPMNm3EQa +AIAyyCG69ADQj7r/T6btybjZRKBDMlcfIIw5q9DGTQ/vlZCx6IX6DkZbYQmdwkTc +0D20GA2uWGxbggawhgq5/PTuv5SJKrrn4qBLS73u6eqcVeN5XA6q0kywd+9UhNxv ++W/xUxOJgE5pVto2VREBLonWSwZVfnyx6GjvC0sOzv0Ocv7KxAPNqtRwzQ9Wtr7s +klb84Nv3OW0MjTcjwfr481Cyy2DqgP5PFnSogWJuibR34jXAgbnX4BiGWrUdzaMU +86AlAoIBABnw9Bh41VFuc9/zxL7nLy++HW33HqFVc5Y1PXr/8sdhcisHQxhZVxek +JPbqIuAahDTIZsMnLy41QAKaoyt2fymMXqhJecjUuiwgOOlMxp82qu6Y30xM0Y6m +r6CkjSMUjcD1QwhOFJd01GCxM8BBIqQOpmR6fqxbQAu8hacKO3IuerCPryXwMt3A +7ppo/GlP55sySEg7K5I3pmuFHOxn0IPTgR6DfYMGBs9GXJ1lyjDD3z3Q42RhUsMC +jvwtra9fTL/N8EmAv2H39C8oqSRbfvIX5u3x6/ONFU8RhSFT5CDTADSYoVZ/0MxV +k53r0hqWz6D94r9QQmsJW4G1JwZYhx8CggEBANUybXsJRgDC5ZOlwbaq0FeTOpZ4 +pSKx1RkVV+G93hK5XdXIVu365pSt3T68MgF+4wWlbC4MuKuzJltFnJBapzz5ygcU +jw+Q+l/jq+mJj8uvUfo5TAy9thuggj1a7SCs/dm5DBwYA7bfmamLbbBpA0qywMsF +/vL1bpePIFhbGMhBK7uiEzOAOZVuceZWqcUByjUYy925K/an0ANsQAch5PVeAsEv +wXC3soaCzfzUyv+eAYBy7LOcz+hpdRj1l4c9Zx6hZeBxMc5LSRoTs+HfE6GgTuI2 +cCfCZNFw7DhDy1TBd3XjQ0AFykeaesImZVR6gp0NYH1kionsMtR5rl4C2tw= +-----END RSA PRIVATE KEY----- diff --git a/web/private/ecdsa_nistp256_sha256_cert.pem b/web/private/ecdsa_nistp256_sha256_cert.pem new file mode 100644 index 0000000..c9ba825 --- /dev/null +++ b/web/private/ecdsa_nistp256_sha256_cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDYTCCAUmgAwIBAgIUA/EaCcXKgOxBiuaMNTackeF9DgcwDQYJKoZIhvcNAQEL +BQAwRzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYDVQQKDAlSb2NrZXQg +Q0ExFzAVBgNVBAMMDlJvY2tldCBSb290IENBMB4XDTIxMDUxNzE5MDIyNFoXDTMx +MDUxNTE5MDIyNFowPzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQ8wDQYDVQQK +DAZSb2NrZXQxEjAQBgNVBAMMCWxvY2FsaG9zdDBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABOEVdmVd218y3Yy+ocjtt5siaFsNR7tknvS21pzKzxsFc05UrF74YqRx +Ic6/AQq56C48x6gDhUCdf+nMzD0NWTijGDAWMBQGA1UdEQQNMAuCCWxvY2FsaG9z +dDANBgkqhkiG9w0BAQsFAAOCAgEAW32kadHWEIsN5WXacjtgE9jbFii/rWJjrAO/ +GWuARwLvjWeEFM5xSTny1cTDEz/7Bmfd9GRRpfgxKCFBGaU7zTmOV/AokrjUay+s +KPj0EV9ZE/84KVfr+MOuhwXhSSv+NvxduFw1sdhTUHs+Wopwjte+bnOUBXmnQH97 +ITSQuUvEamPUS4tJD/kQ0qSGJKNv3CShhbe3XkjUd0UKK7lZzn6hY2fy3CrkkJDT +GyzFCRf3ZDfjW5/fGXN/TNoEK65pPQVr5taK/bovDesEO7rR4Y4YgtnGlJ7YToWh +E6I77CbsJCJdmgpjPNwRlwQ8upoWAfxOHqwg32s6uWq20v4TXZTOnEKOPEJG74bh +JHtwqsy2fIdGz4kZksKGerzJffyQPhX4f3qxxrijT9Hj2EoFIQ4u/jTRpK31IW3R +gEeNB8O4iyg3crx0oHRwc6zX63O6wBJCZ+0uxLoyjwtjKCxVYbJpccjoQh6zO3UO +pqAO+NKxQ469QDBV3uRyyQ7DRPu6p67/8gn1E/o8kyU1P7eLFIhBp4T4wCaMQBG6 +IpL5W7eCyuOcqfdm471N07Z4KAqiV8eBJcKaAE+WzNIvrFvCZ/zq7Gj8p07nkjK8 ++ZGDUieiY0mQEpiXLQZt1xNtT/MmlAzFYrK7t6gSygykQKjO1o4GG4g+eXu3h1YK +avsOwtc= +-----END CERTIFICATE----- diff --git a/web/private/ecdsa_nistp256_sha256_key_pkcs8.pem b/web/private/ecdsa_nistp256_sha256_key_pkcs8.pem new file mode 100644 index 0000000..7003d54 --- /dev/null +++ b/web/private/ecdsa_nistp256_sha256_key_pkcs8.pem @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgeo/7wBIYVax9bj4m +1UEe2H+H4YLsbApDCZMslZbubRuhRANCAAThFXZlXdtfMt2MvqHI7bebImhbDUe7 +ZJ70ttacys8bBXNOVKxe+GKkcSHOvwEKueguPMeoA4VAnX/pzMw9DVk4 +-----END PRIVATE KEY----- diff --git a/web/private/ecdsa_nistp384_sha384_cert.pem b/web/private/ecdsa_nistp384_sha384_cert.pem new file mode 100644 index 0000000..0b0914a --- /dev/null +++ b/web/private/ecdsa_nistp384_sha384_cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDfjCCAWagAwIBAgIUfmkM99JpQUsQsh8TVILPQDBGOhowDQYJKoZIhvcNAQEM +BQAwRzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYDVQQKDAlSb2NrZXQg +Q0ExFzAVBgNVBAMMDlJvY2tldCBSb290IENBMB4XDTIxMDUxNzE5MDIyNFoXDTMx +MDUxNTE5MDIyNFowPzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQ8wDQYDVQQK +DAZSb2NrZXQxEjAQBgNVBAMMCWxvY2FsaG9zdDB2MBAGByqGSM49AgEGBSuBBAAi +A2IABM5rQQNZEGWeDyrg2dVQS15c+JsX/ginN9/ArHpTgGO6xaLfkbekIj7gewUR +VQcQrYulwu02HTFDzGVvf1DdCZzIJLJUpl+jagdI05yMPFg2s5lThzGB6HENyw1I +hU1dMaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBDAUAA4IC +AQAzpXFEeCMvTBG+kzmHN/+esjCK8MO/Grrw3Qoa1stX0yjNWzfhlGHfWk9Mgwnp +DnIEFT9lB+nT9uTkKL81Opu2bkWXuL0MyjyYmcCfEgJeDblUbD4HYzPO/s2P7QZu +Oa1pNKBiSWe1xq+F/gkn0+nDfICq3QQOOQMzaAmlFmszN3v7pryz+x21MqTFsfuW +ymycRcwZ3VyYeceZuBxjOhR2l8I5yZbR+KPj8VS7A3vgqvkS8ixTK0LrxcLwrTIz +W9Z1skzVpux4K7iwn3qlWIJ7EbERi9Ydz0MzpjD+CHxGlgHTzT552DGZhPO8D7BE ++4IoS0YeXEGLeC2a9Hmiy3FXbM4nt3aIWMiWyhjslXIbvWOJL1Vi5GNpdQCG+rB7 +lvA0IISp/tAi9duufdONjgRceRDsqf7o6TOBQdB3QxHRt9gCB2QquRh5llMUY8YH +PxFJAEzF4X5b0q0k4b50HRVNfDY0SC/XIR7S2xnLDGuoUqrOpUligBzfXV4JHrPv +YKHsWSOiVxU9eY1SYKuKqnOsGvXSSQlYqSK1ol94eOKDjNy8wekaVYAQNsdNL7o5 +QSWZUcbZLkaNMFdD9twWGduAs0eTichVgyvRgPdevjTGDPBHKNSUURZRTYeW4aIJ +QzSQUQXwOXsQOmfCkaaTISsDwZAJ0wFqqST1AOhlCWD1OQ== +-----END CERTIFICATE----- diff --git a/web/private/ecdsa_nistp384_sha384_key_pkcs8.pem b/web/private/ecdsa_nistp384_sha384_key_pkcs8.pem new file mode 100644 index 0000000..c834861 --- /dev/null +++ b/web/private/ecdsa_nistp384_sha384_key_pkcs8.pem @@ -0,0 +1,6 @@ +-----BEGIN PRIVATE KEY----- +MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDCRBt7MeJXyJRq7grGQ +jEdBHE31hG5LuKQ5iL8yTVGk75Kc8ISll2LewbvQ3NhR6E+hZANiAATOa0EDWRBl +ng8q4NnVUEteXPibF/4IpzffwKx6U4BjusWi35G3pCI+4HsFEVUHEK2LpcLtNh0x +Q8xlb39Q3QmcyCSyVKZfo2oHSNOcjDxYNrOZU4cxgehxDcsNSIVNXTE= +-----END PRIVATE KEY----- diff --git a/web/private/ed25519_cert.pem b/web/private/ed25519_cert.pem new file mode 100644 index 0000000..ca3c246 --- /dev/null +++ b/web/private/ed25519_cert.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDMjCCARqgAwIBAgIUSu1CGfaWlNPjjLG7SaEEgxI+AsAwDQYJKoZIhvcNAQEL +BQAwRzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYDVQQKDAlSb2NrZXQg +Q0ExFzAVBgNVBAMMDlJvY2tldCBSb290IENBMB4XDTIxMDUxNzE5MDIyNFoXDTMx +MDUxNTE5MDIyNFowPzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQ8wDQYDVQQK +DAZSb2NrZXQxEjAQBgNVBAMMCWxvY2FsaG9zdDAqMAUGAytlcAMhAKNv1fkv5rxY +xGT84C98g2xPpain+jsliHvYrqNkS1zhoxgwFjAUBgNVHREEDTALgglsb2NhbGhv +c3QwDQYJKoZIhvcNAQELBQADggIBAMgWZhr3whYbFPNYm5RZxjgEonMY7cH/Rza1 +UrBkyoMRL9v00YKJTEvjl5Xl4ku7jqxY2qjValacDroD8hYTLhhkkbHxH6u+kJSC +cKRQ8QVBZMmoor8qD2Y2BuXZYGWEtgeoXh+DLHWOim7gXDD6GyFPnYFGHnRhNmkE +6fPcfw1FZmBrMM9rk31EeK9nLVRabL+vuLDEddX1LH4LwK4OuV51wQMZGYiC3M2b +JpmuPAUAUyiyN53Utuw/ubeih3cEglOwCyDPFt6XISYHO0UaQdw25uhpjxs8KTZB +qOPJAI4cvGaN3GARXvz2P/QHUiTzsf2XOXXtrO0g+F9P7t6x2xL35c0A8yxKkfsa +RKdCveRuVlsLXVLVBikqLE/OgPC6SIhIFvTYzXTaZyNfge6dRy2Wg6qWPcGwseeA +QpFKgWiY3cuy7nJm6uybR6zOEMj5GgNWIbICGguQ5161MLnv0bEmKh2d9/jQ/XN5 +M+nixtGla/G4hL3FQIy9rhHVZzPWwSxl+/eE4qgnInEhmlQ2KrcpgneCt38t0vjJ +dwHZSzVv8yX7fE0OSq/DWQXJraWUcT7Ds0g7T7jWkWfS0qStVd9VJ+rYQ8dBbE9Y +gcmkm1DMUd+y9xDRDjxby7gMDWFiN2Au9FQgaIpIctTNCj0+agFBPnfXPVSIH6gX +10kA2ZVX +-----END CERTIFICATE----- diff --git a/web/private/ed25519_key.pem b/web/private/ed25519_key.pem new file mode 100644 index 0000000..fc00c23 --- /dev/null +++ b/web/private/ed25519_key.pem @@ -0,0 +1,3 @@ +-----BEGIN PRIVATE KEY----- +MC4CAQAwBQYDK2VwBCIEIGtLkaYE4D+P5HLkoc3a/tNhPP+gnhPLF3jEtdYcAtpd +-----END PRIVATE KEY----- diff --git a/web/private/gen_certs.sh b/web/private/gen_certs.sh new file mode 100644 index 0000000..edd9c2a --- /dev/null +++ b/web/private/gen_certs.sh @@ -0,0 +1,114 @@ +#! /bin/bash + +# Usage: +# ./gen_certs.sh [cert-kind] +# +# [cert-kind]: +# ed25519 +# rsa_sha256 +# ecdsa_nistp256_sha256 +# ecdsa_nistp384_sha384 +# +# Generate a certificate of the [cert-kind] key type, or if no cert-kind is +# specified, all of the certificates. +# +# Examples: +# ./gen_certs.sh ed25519 +# ./gen_certs.sh rsa_sha256 + +# TODO: `rustls` (really, `webpki`) doesn't currently use the CN in the subject +# to check if a certificate is valid for a server name sent via SNI. It's not +# clear if this is intended, since certificates _should_ have a `subjectAltName` +# with a DNS name, or if it simply hasn't been implemented yet. See +# https://bugzilla.mozilla.org/show_bug.cgi?id=552346 for a bit more info. + +CA_SUBJECT="/C=US/ST=CA/O=Rocket CA/CN=Rocket Root CA" +SUBJECT="/C=US/ST=CA/O=Rocket/CN=localhost" +ALT="DNS:localhost" + +function gen_ca() { + openssl genrsa -out ca_key.pem 4096 + openssl req -new -x509 -days 3650 -key ca_key.pem \ + -subj "${CA_SUBJECT}" -out ca_cert.pem +} + +function gen_ca_if_non_existent() { + if ! [ -f ./ca_cert.pem ]; then gen_ca; fi +} + +function gen_rsa_sha256() { + gen_ca_if_non_existent + + openssl req -newkey rsa:4096 -nodes -sha256 -keyout rsa_sha256_key.pem \ + -subj "${SUBJECT}" -out server.csr + + openssl x509 -req -sha256 -extfile <(printf "subjectAltName=${ALT}") -days 3650 \ + -CA ca_cert.pem -CAkey ca_key.pem -CAcreateserial \ + -in server.csr -out rsa_sha256_cert.pem + + rm ca_cert.srl server.csr +} + +function gen_ed25519() { + gen_ca_if_non_existent + + openssl genpkey -algorithm ED25519 > ed25519_key.pem + + openssl req -new -key ed25519_key.pem -subj "${SUBJECT}" -out server.csr + openssl x509 -req -extfile <(printf "subjectAltName=${ALT}") -days 3650 \ + -CA ca_cert.pem -CAkey ca_key.pem -CAcreateserial \ + -in server.csr -out ed25519_cert.pem + + rm ca_cert.srl server.csr +} + +function gen_ecdsa_nistp256_sha256() { + gen_ca_if_non_existent + + openssl ecparam -out ecdsa_nistp256_sha256_key.pem -name prime256v1 -genkey + + # Convert to pkcs8 format supported by rustls + openssl pkcs8 -topk8 -nocrypt -in ecdsa_nistp256_sha256_key.pem \ + -out ecdsa_nistp256_sha256_key_pkcs8.pem + + openssl req -new -nodes -sha256 -key ecdsa_nistp256_sha256_key_pkcs8.pem \ + -subj "${SUBJECT}" -out server.csr + + openssl x509 -req -sha256 -extfile <(printf "subjectAltName=${ALT}") -days 3650 \ + -CA ca_cert.pem -CAkey ca_key.pem -CAcreateserial \ + -in server.csr -out ecdsa_nistp256_sha256_cert.pem + + rm ca_cert.srl server.csr ecdsa_nistp256_sha256_key.pem +} + +function gen_ecdsa_nistp384_sha384() { + gen_ca_if_non_existent + + openssl ecparam -out ecdsa_nistp384_sha384_key.pem -name secp384r1 -genkey + + # Convert to pkcs8 format supported by rustls + openssl pkcs8 -topk8 -nocrypt -in ecdsa_nistp384_sha384_key.pem \ + -out ecdsa_nistp384_sha384_key_pkcs8.pem + + openssl req -new -nodes -sha384 -key ecdsa_nistp384_sha384_key_pkcs8.pem \ + -subj "${SUBJECT}" -out server.csr + + openssl x509 -req -sha384 -extfile <(printf "subjectAltName=${ALT}") -days 3650 \ + -CA ca_cert.pem -CAkey ca_key.pem -CAcreateserial \ + -in server.csr -out ecdsa_nistp384_sha384_cert.pem + + rm ca_cert.srl server.csr ecdsa_nistp384_sha384_key.pem +} + +case $1 in + ed25519) gen_ed25519 ;; + rsa_sha256) gen_rsa_sha256 ;; + ecdsa_nistp256_sha256) gen_ecdsa_nistp256_sha256 ;; + ecdsa_nistp384_sha384) gen_ecdsa_nistp384_sha384 ;; + *) + gen_ed25519 + gen_rsa_sha256 + gen_ecdsa_nistp256_sha256 + gen_ecdsa_nistp384_sha384 + ;; +esac diff --git a/web/private/rsa_sha256_cert.pem b/web/private/rsa_sha256_cert.pem new file mode 100644 index 0000000..2a07534 --- /dev/null +++ b/web/private/rsa_sha256_cert.pem @@ -0,0 +1,30 @@ +-----BEGIN CERTIFICATE----- +MIIFLDCCAxSgAwIBAgIUZ461KXDgTT25LP1S6PK6i9ZKtOYwDQYJKoZIhvcNAQEL +BQAwRzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYDVQQKDAlSb2NrZXQg +Q0ExFzAVBgNVBAMMDlJvY2tldCBSb290IENBMB4XDTIxMDUxNzE5MDIyNFoXDTMx +MDUxNTE5MDIyNFowPzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQ8wDQYDVQQK +DAZSb2NrZXQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAKl8Re1dneFB2obYPOuZf3d6BR2xGcMhr2vmHpnVgkeg/xGI +cwHhhB04mEg4TqbZ0Q1wdKN4ruNigdrQAXDqnm4y2IB1q/uTdoXVWNsvAZmDq4N4 +rPUDWagpkilV4HOHDQOI27Lo/+30wJX6H8i3J6Nag1y9spuySkL1F1SgQng9uzvP +3SwbsO9R/jS7qTZNEtirnJv3qJlxmT4BCvBuWNALShFlSZYnZk/2csYXEaVkWMUE +rnWGmTmzMZEzDOdQdPC3sJDCPQbbgD4SnQANqhOVjPSdJ6Y6joN6XYtB2EP+6LJ8 +UBTICETnUROWeKqMm215Gsen32cyWkaCwEWtTFn7rJHbPvUY4vPYQZAB2/h07lYq +v67W3r5lTq1KuoStD8M/7nCIYIuNhmJLMzzWrSfJrQpYexoMII6kjOxv2kiUgb1y +bYKnFlVf4up3pTpi2/0We4SHRgc7xTcEPNvU5z5hc5JwHZIFjmi5dx50ZoAULrXl +OUhfdUPut7H38UQg3riJiNAzedUiTubek26po8qH1iS/EMgAi5RboaBovjWhgjwq +P/RP0vzpln6OdQIRaRlY9vZiik9HbFybafuA2zEkyc+zc4HqJk3vqX/0hgd9qWeL +zgsHr6A86tNUXsUaoInQbzznjpbFE85klxd6HeqasOyVDCeDUs4lWoDNp0DbAgMB +AAGjGDAWMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDANBgkqhkiG9w0BAQsFAAOCAgEA +sS2TUKKYtNYC68TEQb5KAa8/zi6Lhz9lyn9rpBXAcAVeBdxCqrBU0nRN8EjXEff1 +oBeau9Wi9PwdK6J+4xFuer9YrZZWuWLKUBXJL9ZXEfI+USo5WVz7v/puoKZSUSu2 ++Ee4+v1eoAsCtaA8IR0Sh1KTc9kg1QZW1nIdBV0zgAERWTzm1iy2Ff+euowM/lUR +FczMAJsNq83O2kaH541fRx3gC2iMN/QLwRalBR2y8hTI5wQa0Yr8moC4IsTfRrKQ +/SZDjFT1XoA9TnrByIvGQNlxK1Rm2hvK1OQn4OL6sdYK6F+MxfUn/atQNyBQ6CF+ +oKuvOnE2jces8GGZIU1jYJ2271SQkzp0CW3N1ZKjClSQFAYED+5ERTGyeEL4o3Vr +V/BUd0KC7HhbWBlFc2EDmPOoOTp/ID901Kf499M68pe2Fr/63/nCAON6WFk1NPYA ++sWMfS25hikU5rOHGQgXxXAz90pwpvpoLQvaq0/azsbHvq9B4ubdcLE0xcoK+DGq ++/aOeWlYkalWp93akPYpWN3UJXzDXzzagRID/1LEGS+Ssbh1WVhAhLKVoxzBvkgm +ozVAhR3zHXI2QpQ2FEbOmkcRtpxv2CiaTsgHg2MK8cdmPx3G+ufCZjRbQx/VXVdN +vaFRdmzr/5EQ7DT5Uy8w32h1to4Fm2sAtbAFYaFLXaM= +-----END CERTIFICATE----- diff --git a/web/private/rsa_sha256_key.pem b/web/private/rsa_sha256_key.pem new file mode 100644 index 0000000..4125d16 --- /dev/null +++ b/web/private/rsa_sha256_key.pem @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQCpfEXtXZ3hQdqG +2DzrmX93egUdsRnDIa9r5h6Z1YJHoP8RiHMB4YQdOJhIOE6m2dENcHSjeK7jYoHa +0AFw6p5uMtiAdav7k3aF1VjbLwGZg6uDeKz1A1moKZIpVeBzhw0DiNuy6P/t9MCV ++h/ItyejWoNcvbKbskpC9RdUoEJ4Pbs7z90sG7DvUf40u6k2TRLYq5yb96iZcZk+ +AQrwbljQC0oRZUmWJ2ZP9nLGFxGlZFjFBK51hpk5szGRMwznUHTwt7CQwj0G24A+ +Ep0ADaoTlYz0nSemOo6Del2LQdhD/uiyfFAUyAhE51ETlniqjJtteRrHp99nMlpG +gsBFrUxZ+6yR2z71GOLz2EGQAdv4dO5WKr+u1t6+ZU6tSrqErQ/DP+5wiGCLjYZi +SzM81q0nya0KWHsaDCCOpIzsb9pIlIG9cm2CpxZVX+Lqd6U6Ytv9FnuEh0YHO8U3 +BDzb1Oc+YXOScB2SBY5ouXcedGaAFC615TlIX3VD7rex9/FEIN64iYjQM3nVIk7m +3pNuqaPKh9YkvxDIAIuUW6GgaL41oYI8Kj/0T9L86ZZ+jnUCEWkZWPb2YopPR2xc +m2n7gNsxJMnPs3OB6iZN76l/9IYHfalni84LB6+gPOrTVF7FGqCJ0G88546WxRPO +ZJcXeh3qmrDslQwng1LOJVqAzadA2wIDAQABAoICABT4gHp/Q+K0UEKxDNCl/ISe +/3UODb78MwVpws2MAoO0YvsbZAeOjNdEwmrlNK4mc1xzVqtHanROIv0dEaCUFyhR +eEJkzPPi6h5jKIxuQ4doKFerHdNvJ6/L/P7KVmxVAII4c96uP8SErTOhcD9Ykjn/ +IBPgkPH83H1ucAWTksXn9XvQG3CyuHDUN1z0/1ntrXBLw6P0v9LEoI5weJcJQEn1 +q6N9Yd6HX3xzZP4nqpJJWUZ/bsqx7dGa3340z9rrNJz4TYuLzRtFG5gSm4R/LFUi +Av/dViOWST3xbROnAQhgyRAUm6AGpCdKa9i9nI6VuUGRY4PivJy7OTpSQVIdwD2K +VFbFauCmsTY7B+Z+DXe9JJV+Tlazvlwop1DApxCgLMNr2pVB/1yPzMrNYDB4Sg1c +T3stu4A8PtljTykla2C2LPFrdIijvYv9n6PSPWV4vf1ix9uYs99FhZPQJMgm+CDr +n3cFfuofIWIRJpCuu3hn4woGgW2bXor4pyMNg1yCp1T2c8g6eJUYAAIRpse0HDbT +ZUifxlNBx819bf9aqv+lhwMU4UFlmWMv3NETcCBqgUn+z4scNJ3kZwO9ZodLRblK +SpalZ6SNejTnVukg3zbwJG8w5vIrJvfjBkikAL1O5X6Kn3YqfrXAl38bIvA50ZBe +eOFcgDPClLPGlNKxQXiZAoIBAQDh0aArTjWi8Kxt2Ga3Hu4jQ7IXklL9osGAlFCB +wZs831/ktLY0c7vY+mbwrY4AtqK21A00MrNSTsp/McHwAUi410DdcTqzkGnm9BBZ +FKVO1H9KGg2t344tOXcPsFTl6SR5a0aPqagyvgdH+YWC4ccfYZWMcLELn3sOGoEp +a7VBxjLZZ+/b+/oIzhwxEaBi8N0U3IZ3SsC9Lmojnb9+LMwGs14TFfahD3uM1hnU +vww1elwPwXafWc+7Ej1bXijWBXbyzkCITzHafmDsAatEZnemHL8zKKtTn2aSTUSj +Fl/y94WR7/V4nVEQ0R3fjGC0rKh08BtKzxPjYBqjT5aI7+yfAoIBAQDAIzROr00o +65auD5TB2k/pSVKQpB/U6ESGafDxg4a+R9Ng2ESmDN5hUUZDefm0Uxf9AZqS6eno +GSAqxNDixWPy2WFzbZ0mUCoyQn+Eh09WBvt0IqDZ2+ngBEXiKA/8dsvXinBHLuHV +u+rJdLMzPfhWVo1/iXq7SOjBvDuthKROku5BEt6Q3Cs0nk6uneRIqKtaqa7KIInF +BPtUifZtCP09h6iFFGNv2g2OYRYDg8TXvjt3scKy0DUC3kTeTCPvNvHaOObGbMRU +Q85HkXburxWfsMto5m/lRsbY3COxddB47WIQ6QNewESfCab/R2lOdlXQeaH8fuxT +wWC5DMz4F0ZFAoIBAFm+EjZDnaNEnHIHB0MNIryXAabGev7beKUdzCTVCVmWuChO +/P45ZFTlppVNk9qKun2IJjsxTvyN3YHRB27XQ8xZlyiqABcudDfZlMmiH9QFNRUA +56DK8Fjetodgn0zDa8BpNqCPXw3TYVdkPX/3NEgvYtxuSJ4C4keHlv8cE+uw1bJ6 +0OMO754iMyf5BlFrwaCxxyqPZauJT5sZ7Ok66lZbYC6bkukNGx+sUpWu2y5Bk2ab +jwXjDmAc7o9qCzaK82upNhI1zu0zPldsjmDfi/tS/1VYe0X/WicYWAesM7N+VPHb +eCVX98iEIqgdxKzo1QWsClyfkRrSraNrVLrVBqcCggEAaLIGK6YMNnMBPUGSPnt2 +NdlVWymDiuExjcimmQOhZYf/33KZHZ4/gunljpklfqQUmzHHh6xcX7NpOsTaSedj +Sg43ss0U566g/5gKoi2VBnxxglvoKC5T51SMu+o2o8wb0QxHmBIszulBy5qClzZ6 +Xpl1Kvy/2tOkuQSXxDpVydb4ao8cpfTCuj5VA4NXxFvcW1/AtbU7PRc02GEA3XMb +gu6r3jA46tb3shCnDS09Eo4/Gz7Kp+MaL8Dr5/G3Vv8qlE2TOqZD6OK1wXu7Qd43 +uzd772I5sMZ7TenOrUFUYsB/QlWmF3hPLBX3YH0KHc4PfrT4lnyWzCDAUrVt7vXH +vQKCAQEAz1Q+jW+NG7CAqkOJ19n+KmGn+zddvy8x4txKx8kV0+3XIVNkseS6IT65 +uemD85Gn7MYwHxcKUHghHSKyJsvCb1vSmB3JtCnrsodmQNMb6Lsq89VlM8Ylc/s3 +F4AraiOlylqcEwLkanD3XSfPdQZhExZHEtpAW/Rr6zYT9J94VO1nK3+RkFI4a8kl +pEbY+tqJj3LGTuaQkshB9rDtcBT5/JsaxlMk783qkKziCPZF47BWqrJb+t7tm3qg +5gf+QUInEjdW3k3uZBL4316RP/TJlLvo29PkEwoC8X4R2EgDeHQhhRC2Fi2Wpy4O +ce4G+zZOOYXwvWGJLwNhgsve8C3oqg== +-----END PRIVATE KEY----- diff --git a/web/src/consts.rs b/web/src/consts.rs new file mode 100644 index 0000000..8a529bb --- /dev/null +++ b/web/src/consts.rs @@ -0,0 +1,4 @@ +pub const DISCORD_OAUTH_TOKEN: &'static str = "https://discord.com/api/oauth2/token"; +pub const DISCORD_OAUTH_AUTHORIZE: &'static str = "https://discord.com/api/oauth2/authorize"; +pub const DISCORD_API: &'static str = "https://discord.com/api"; +pub const DISCORD_CDN: &'static str = "https://cdn.discordapp.com/avatars"; diff --git a/web/src/lib.rs b/web/src/lib.rs index 1b4a90c..21c6530 100644 --- a/web/src/lib.rs +++ b/web/src/lib.rs @@ -1,8 +1,102 @@ -#[cfg(test)] -mod tests { - #[test] - fn it_works() { - let result = 2 + 2; - assert_eq!(result, 4); - } +#[macro_use] +extern crate rocket; + +mod consts; +mod routes; + +use rocket::fs::{relative, FileServer}; +use std::collections::HashMap; + +use oauth2::basic::BasicClient; +use oauth2::{AuthUrl, ClientId, ClientSecret, RedirectUrl, TokenUrl}; + +use crate::consts::{DISCORD_OAUTH_AUTHORIZE, DISCORD_OAUTH_TOKEN}; +use rocket_dyn_templates::Template; +use serenity::client::Context; +use sqlx::{MySql, Pool}; +use std::env; + +type Database = MySql; + +#[catch(401)] +async fn not_authorized() -> Template { + let map: HashMap = HashMap::new(); + Template::render("errors/401", &map) +} + +#[catch(403)] +async fn forbidden() -> Template { + let map: HashMap = HashMap::new(); + Template::render("errors/403", &map) +} + +#[catch(404)] +async fn not_found() -> Template { + let map: HashMap = HashMap::new(); + Template::render("errors/404", &map) +} + +#[catch(500)] +async fn internal_server_error() -> Template { + let map: HashMap = HashMap::new(); + Template::render("errors/500", &map) +} + +pub async fn initialize( + serenity_context: Context, + db_pool: Pool, +) -> Result<(), Box> { + let oauth2_client = BasicClient::new( + ClientId::new(env::var("OAUTH2_CLIENT_ID")?), + Some(ClientSecret::new(env::var("OAUTH2_CLIENT_SECRET")?)), + AuthUrl::new(DISCORD_OAUTH_AUTHORIZE.to_string())?, + Some(TokenUrl::new(DISCORD_OAUTH_TOKEN.to_string())?), + ) + .set_redirect_uri(RedirectUrl::new(env::var("OAUTH2_DISCORD_CALLBACK")?)?); + + let reqwest_client = reqwest::Client::new(); + + rocket::build() + .attach(Template::fairing()) + .register("/", catchers![not_authorized, forbidden, not_found, internal_server_error]) + .manage(oauth2_client) + .manage(reqwest_client) + .manage(serenity_context) + .manage(db_pool) + .mount("/static", FileServer::from(concat!(env!("CARGO_MANIFEST_DIR"), "/static"))) + .mount( + "/", + routes![ + routes::index, + routes::cookies, + routes::privacy, + routes::terms, + routes::help, + routes::return_to_same_site + ], + ) + .mount("/login", routes![routes::login::discord_login, routes::login::discord_callback]) + .mount( + "/dashboard", + routes![ + routes::dashboard::dashboard_home, + routes::dashboard::user::get_user_info, + routes::dashboard::user::update_user_info, + routes::dashboard::user::get_user_guilds, + routes::dashboard::user::create_reminder, + routes::dashboard::user::get_reminders, + routes::dashboard::user::overwrite_reminder, + routes::dashboard::user::delete_reminder, + routes::dashboard::guild::get_guild_channels, + routes::dashboard::guild::get_guild_roles, + routes::dashboard::guild::create_reminder, + routes::dashboard::guild::get_reminders, + routes::dashboard::guild::edit_reminder, + routes::dashboard::guild::delete_reminder, + ], + ) + .launch() + .await?; + + Ok(()) } diff --git a/web/src/routes/dashboard/guild.rs b/web/src/routes/dashboard/guild.rs new file mode 100644 index 0000000..81fc9ca --- /dev/null +++ b/web/src/routes/dashboard/guild.rs @@ -0,0 +1,205 @@ +use rocket::State; + +use crate::consts::DISCORD_CDN; +use serde::Serialize; +use sqlx::{MySql, Pool}; + +use super::Reminder; +use rocket::serde::json::{json, Json, Value as JsonValue}; +use serenity::client::Context; +use serenity::http::CacheHttp; +use serenity::model::id::GuildId; + +#[derive(Serialize)] +struct ChannelInfo { + id: String, + name: String, + webhook_avatar: Option, + webhook_name: Option, +} + +// todo check the user can access this guild +#[get("/api/guild//channels")] +pub async fn get_guild_channels( + id: u64, + ctx: &State, + pool: &State>, +) -> JsonValue { + let channels_res = GuildId(id).channels(ctx.inner()).await; + + match channels_res { + Ok(channels) => { + let mut channel_info = vec![]; + + for (channel_id, channel) in + channels.iter().filter(|(_, channel)| channel.is_text_based()) + { + let mut ch = ChannelInfo { + name: channel.name.to_string(), + id: channel_id.to_string(), + webhook_avatar: None, + webhook_name: None, + }; + + if let Ok(webhook_details) = sqlx::query!( + "SELECT webhook_id, webhook_token FROM channels WHERE channel = ?", + channel.id.as_u64() + ) + .fetch_one(pool.inner()) + .await + { + if let (Some(webhook_id), Some(webhook_token)) = + (webhook_details.webhook_id, webhook_details.webhook_token) + { + let webhook_res = + ctx.http.get_webhook_with_token(webhook_id, &webhook_token).await; + + if let Ok(webhook) = webhook_res { + ch.webhook_avatar = webhook.avatar.map(|a| { + format!("{}/{}/{}.webp?size=128", DISCORD_CDN, webhook_id, a) + }); + + ch.webhook_name = webhook.name; + } + } + } + + channel_info.push(ch); + } + + json!(channel_info) + } + Err(e) => { + warn!("Could not fetch channels from {}: {:?}", id, e); + + json!({"error": "Could not get channels"}) + } + } +} + +#[derive(Serialize)] +struct RoleInfo { + id: String, + name: String, +} + +// todo check the user can access this guild +#[get("/api/guild//roles")] +pub async fn get_guild_roles(id: u64, ctx: &State) -> JsonValue { + let roles_res = ctx.cache.guild_roles(id); + + match roles_res { + Some(roles) => { + let roles = roles + .iter() + .map(|(_, r)| RoleInfo { id: r.id.to_string(), name: r.name.to_string() }) + .collect::>(); + + json!(roles) + } + None => { + warn!("Could not fetch roles from {}", id); + + json!({"error": "Could not get roles"}) + } + } +} + +#[post("/api/guild//reminders", data = "")] +pub async fn create_reminder( + id: u64, + reminder: Json, + serenity_context: &State, + pool: &State>, +) -> JsonValue { + json!({"error": "Not implemented"}) +} + +#[get("/api/guild//reminders")] +pub async fn get_reminders(id: u64, ctx: &State, pool: &State>) -> JsonValue { + let channels_res = GuildId(id).channels(&ctx.inner()).await; + + match channels_res { + Ok(channels) => { + let channels = channels + .keys() + .into_iter() + .map(|k| k.as_u64().to_string()) + .collect::>() + .join(","); + + sqlx::query_as_unchecked!( + Reminder, + " +SELECT + reminders.attachment, + reminders.attachment_name, + reminders.avatar, + channels.channel, + reminders.content, + reminders.embed_author, + reminders.embed_author_url, + reminders.embed_color, + reminders.embed_description, + reminders.embed_footer, + reminders.embed_footer_url, + reminders.embed_image_url, + reminders.embed_thumbnail_url, + reminders.embed_title, + reminders.enabled, + reminders.expires, + reminders.interval_seconds, + reminders.interval_months, + reminders.name, + reminders.pin, + reminders.restartable, + reminders.tts, + reminders.uid, + reminders.username, + reminders.utc_time +FROM + reminders +LEFT JOIN + channels +ON + channels.id = reminders.channel_id +WHERE + FIND_IN_SET(channels.channel, ?) + ", + channels + ) + .fetch_all(pool.inner()) + .await + .map(|r| json!(r)) + .unwrap_or_else(|e| { + warn!("Failed to complete SQL query: {:?}", e); + + json!({"error": "Could not load reminders"}) + }) + } + Err(e) => { + warn!("Could not fetch channels from {}: {:?}", id, e); + + json!([]) + } + } +} + +#[patch("/api/guild//reminders", data = "")] +pub async fn edit_reminder( + id: u64, + reminder: Json, + serenity_context: &State, + pool: &State>, +) -> JsonValue { + json!({"error": "Not implemented"}) +} + +#[delete("/api/guild//reminders", data = "")] +pub async fn delete_reminder( + id: u64, + reminder: Json, + pool: &State>, +) -> JsonValue { + json!({"error": "Not implemented"}) +} diff --git a/web/src/routes/dashboard/mod.rs b/web/src/routes/dashboard/mod.rs new file mode 100644 index 0000000..7801d38 --- /dev/null +++ b/web/src/routes/dashboard/mod.rs @@ -0,0 +1,59 @@ +use chrono::naive::NaiveDateTime; +use rocket::http::CookieJar; +use rocket::response::Redirect; +use rocket_dyn_templates::Template; +use serde::{Deserialize, Serialize}; +use std::collections::HashMap; + +pub mod guild; +pub mod user; + +fn name_default() -> String { + "Reminder".to_string() +} + +#[derive(Serialize, Deserialize)] +pub struct Reminder { + attachment: Option>, + attachment_name: Option, + avatar: Option, + channel: u64, + content: String, + embed_author: String, + embed_author_url: Option, + embed_color: u32, + embed_description: String, + embed_footer: String, + embed_footer_url: Option, + embed_image_url: Option, + embed_thumbnail_url: Option, + embed_title: String, + enabled: i8, + expires: Option, + interval_seconds: Option, + interval_months: Option, + #[serde(default = "name_default")] + name: String, + pin: i8, + restartable: i8, + tts: i8, + #[serde(default)] + uid: String, + username: Option, + utc_time: NaiveDateTime, +} + +#[derive(Deserialize)] +pub struct DeleteReminder { + uid: String, +} + +#[get("/")] +pub async fn dashboard_home(cookies: &CookieJar<'_>) -> Result { + if cookies.get_private("userid").is_some() { + let map: HashMap<&str, String> = HashMap::new(); + Ok(Template::render("dashboard", &map)) + } else { + Err(Redirect::to("/login/discord")) + } +} diff --git a/web/src/routes/dashboard/user.rs b/web/src/routes/dashboard/user.rs new file mode 100644 index 0000000..a6521a4 --- /dev/null +++ b/web/src/routes/dashboard/user.rs @@ -0,0 +1,402 @@ +use rocket::serde::json::{json, Json, Value as JsonValue}; +use rocket::{http::CookieJar, State}; + +use reqwest::Client; + +use serde::{Deserialize, Serialize}; +use serenity::model::{ + id::{GuildId, RoleId}, + permissions::Permissions, +}; +use sqlx::{MySql, Pool}; +use std::env; + +use super::Reminder; +use crate::consts::DISCORD_API; +use crate::routes::dashboard::DeleteReminder; +use chrono_tz::Tz; +use serenity::client::Context; +use serenity::model::id::UserId; + +#[derive(Serialize)] +struct UserInfo { + name: String, + patreon: bool, + timezone: Option, +} + +#[derive(Deserialize)] +pub struct UpdateUser { + timezone: String, +} + +#[derive(Serialize)] +struct GuildInfo { + id: String, + name: String, +} + +#[derive(Deserialize)] +pub struct PartialGuild { + pub id: GuildId, + pub icon: Option, + pub name: String, + #[serde(default)] + pub owner: bool, + #[serde(rename = "permissions_new")] + pub permissions: Option, +} + +#[get("/api/user")] +pub async fn get_user_info( + cookies: &CookieJar<'_>, + ctx: &State, + pool: &State>, +) -> JsonValue { + if let Some(user_id) = + cookies.get_private("userid").map(|u| u.value().parse::().ok()).flatten() + { + let member_res = GuildId(env::var("PATREON_GUILD_ID").unwrap().parse().unwrap()) + .member(&ctx.inner(), user_id) + .await; + + let timezone = sqlx::query!("SELECT timezone FROM users WHERE user = ?", user_id) + .fetch_one(pool.inner()) + .await + .map_or(None, |q| Some(q.timezone)); + + let user_info = UserInfo { + name: cookies + .get_private("username") + .map_or("DiscordUser#0000".to_string(), |c| c.value().to_string()), + patreon: member_res.map_or(false, |member| { + member + .roles + .contains(&RoleId(env::var("PATREON_ROLE_ID").unwrap().parse().unwrap())) + }), + timezone, + }; + + json!(user_info) + } else { + json!({"error": "Not authorized"}) + } +} + +#[patch("/api/user", data = "")] +pub async fn update_user_info( + cookies: &CookieJar<'_>, + user: Json, + pool: &State>, +) -> JsonValue { + if let Some(user_id) = + cookies.get_private("userid").map(|u| u.value().parse::().ok()).flatten() + { + if user.timezone.parse::().is_ok() { + let _ = sqlx::query!( + "UPDATE users SET timezone = ? WHERE user = ?", + user.timezone, + user_id, + ) + .execute(pool.inner()) + .await; + + json!({}) + } else { + json!({"error": "Timezone not recognized"}) + } + } else { + json!({"error": "Not authorized"}) + } +} + +#[get("/api/user/guilds")] +pub async fn get_user_guilds(cookies: &CookieJar<'_>, reqwest_client: &State) -> JsonValue { + if let Some(access_token) = cookies.get_private("access_token") { + let request_res = reqwest_client + .get(format!("{}/users/@me/guilds", DISCORD_API)) + .bearer_auth(access_token.value()) + .send() + .await; + + match request_res { + Ok(response) => { + let guilds_res = response.json::>().await; + + match guilds_res { + Ok(guilds) => { + let reduced_guilds = guilds + .iter() + .filter(|g| { + g.owner + || g.permissions.as_ref().map_or(false, |p| { + let permissions = + Permissions::from_bits_truncate(p.parse().unwrap()); + + permissions.manage_messages() + || permissions.manage_guild() + || permissions.administrator() + }) + }) + .map(|g| GuildInfo { id: g.id.to_string(), name: g.name.to_string() }) + .collect::>(); + + json!(reduced_guilds) + } + + Err(e) => { + warn!("Error constructing user from request: {:?}", e); + + json!({"error": "Could not get user details"}) + } + } + } + + Err(e) => { + warn!("Error getting user guilds: {:?}", e); + + json!({"error": "Could not reach Discord"}) + } + } + } else { + json!({"error": "Not authorized"}) + } +} + +#[post("/api/user/reminders", data = "")] +pub async fn create_reminder( + reminder: Json, + ctx: &State, + pool: &State>, +) -> JsonValue { + match sqlx::query!( + "INSERT INTO reminders ( + avatar, + content, + embed_author, + embed_author_url, + embed_color, + embed_description, + embed_footer, + embed_footer_url, + embed_image_url, + embed_thumbnail_url, + embed_title, + enabled, + expires, + interval_seconds, + interval_months, + name, + pin, + restartable, + tts, + username, + `utc_time` + ) VALUES ( + avatar = ?, + content = ?, + embed_author = ?, + embed_author_url = ?, + embed_color = ?, + embed_description = ?, + embed_footer = ?, + embed_footer_url = ?, + embed_image_url = ?, + embed_thumbnail_url = ?, + embed_title = ?, + enabled = ?, + expires = ?, + interval_seconds = ?, + interval_months = ?, + name = ?, + pin = ?, + restartable = ?, + tts = ?, + username = ?, + `utc_time` = ? + )", + reminder.avatar, + reminder.content, + reminder.embed_author, + reminder.embed_author_url, + reminder.embed_color, + reminder.embed_description, + reminder.embed_footer, + reminder.embed_footer_url, + reminder.embed_image_url, + reminder.embed_thumbnail_url, + reminder.embed_title, + reminder.enabled, + reminder.expires, + reminder.interval_seconds, + reminder.interval_months, + reminder.name, + reminder.pin, + reminder.restartable, + reminder.tts, + reminder.username, + reminder.utc_time, + ) + .execute(pool.inner()) + .await + { + Ok(_) => { + json!({}) + } + Err(e) => { + warn!("Error in `create_reminder`: {:?}", e); + + json!({"error": "Could not create reminder"}) + } + } +} + +#[get("/api/user/reminders")] +pub async fn get_reminders( + pool: &State>, + cookies: &CookieJar<'_>, + ctx: &State, +) -> JsonValue { + if let Some(user_id) = + cookies.get_private("userid").map(|c| c.value().parse::().ok()).flatten() + { + let query_res = sqlx::query!( + "SELECT channel FROM channels INNER JOIN users ON users.dm_channel = channels.id WHERE users.user = ?", + user_id + ) + .fetch_one(pool.inner()) + .await; + + let dm_channel = if let Ok(query) = query_res { + Some(query.channel) + } else { + if let Ok(dm_channel) = UserId(user_id).create_dm_channel(&ctx.inner()).await { + Some(dm_channel.id.as_u64().to_owned()) + } else { + None + } + }; + + if let Some(channel_id) = dm_channel { + let reminders = sqlx::query_as!( + Reminder, + "SELECT + reminders.attachment, + reminders.attachment_name, + reminders.avatar, + channels.channel, + reminders.content, + reminders.embed_author, + reminders.embed_author_url, + reminders.embed_color, + reminders.embed_description, + reminders.embed_footer, + reminders.embed_footer_url, + reminders.embed_image_url, + reminders.embed_thumbnail_url, + reminders.embed_title, + reminders.enabled, + reminders.expires, + reminders.interval_seconds, + reminders.interval_months, + reminders.name, + reminders.pin, + reminders.restartable, + reminders.tts, + reminders.uid, + reminders.username, + reminders.utc_time + FROM reminders INNER JOIN channels ON channels.id = reminders.channel_id WHERE channels.channel = ?", + channel_id + ) + .fetch_all(pool.inner()) + .await + .unwrap_or(vec![]); + + json!(reminders) + } else { + json!({"error": "User's DM channel could not be determined"}) + } + } else { + json!({"error": "Not authorized"}) + } +} + +#[put("/api/user/reminders", data = "")] +pub async fn overwrite_reminder(reminder: Json, pool: &State>) -> JsonValue { + match sqlx::query!( + "UPDATE reminders SET + avatar = ?, + content = ?, + embed_author = ?, + embed_author_url = ?, + embed_color = ?, + embed_description = ?, + embed_footer = ?, + embed_footer_url = ?, + embed_image_url = ?, + embed_thumbnail_url = ?, + embed_title = ?, + enabled = ?, + expires = ?, + interval_seconds = ?, + interval_months = ?, + name = ?, + pin = ?, + restartable = ?, + tts = ?, + username = ?, + `utc_time` = ? + WHERE uid = ?", + reminder.avatar, + reminder.content, + reminder.embed_author, + reminder.embed_author_url, + reminder.embed_color, + reminder.embed_description, + reminder.embed_footer, + reminder.embed_footer_url, + reminder.embed_image_url, + reminder.embed_thumbnail_url, + reminder.embed_title, + reminder.enabled, + reminder.expires, + reminder.interval_seconds, + reminder.interval_months, + reminder.name, + reminder.pin, + reminder.restartable, + reminder.tts, + reminder.username, + reminder.utc_time, + reminder.uid + ) + .execute(pool.inner()) + .await + { + Ok(_) => { + json!({}) + } + Err(e) => { + warn!("Error in `overwrite_reminder`: {:?}", e); + + json!({"error": "Could not modify reminder"}) + } + } +} + +#[delete("/api/user/reminders", data = "")] +pub async fn delete_reminder( + reminder: Json, + pool: &State>, +) -> JsonValue { + if sqlx::query!("DELETE FROM reminders WHERE uid = ?", reminder.uid) + .execute(pool.inner()) + .await + .is_ok() + { + json!({}) + } else { + json!({"error": "Could not delete reminder"}) + } +} diff --git a/web/src/routes/login.rs b/web/src/routes/login.rs new file mode 100644 index 0000000..c7a3d95 --- /dev/null +++ b/web/src/routes/login.rs @@ -0,0 +1,149 @@ +use crate::consts::DISCORD_API; +use log::warn; +use oauth2::basic::BasicClient; +use oauth2::reqwest::async_http_client; +use oauth2::{ + AuthorizationCode, CsrfToken, PkceCodeChallenge, PkceCodeVerifier, Scope, TokenResponse, +}; +use reqwest::Client; +use rocket::http::private::cookie::Expiration; +use rocket::http::{Cookie, CookieJar, SameSite}; +use rocket::response::{Flash, Redirect}; +use rocket::uri; +use rocket::State; +use serenity::model::user::User; + +#[get("/discord")] +pub async fn discord_login( + oauth2_client: &State, + cookies: &CookieJar<'_>, +) -> Redirect { + let (pkce_challenge, pkce_verifier) = PkceCodeChallenge::new_random_sha256(); + + let (auth_url, csrf_token) = oauth2_client + .authorize_url(CsrfToken::new_random) + // Set the desired scopes. + .add_scope(Scope::new("identify".to_string())) + .add_scope(Scope::new("guilds".to_string())) + .add_scope(Scope::new("email".to_string())) + // Set the PKCE code challenge. + .set_pkce_challenge(pkce_challenge) + .url(); + + // store the pkce secret to verify the authorization later + cookies.add_private( + Cookie::build("verify", pkce_verifier.secret().to_string()) + .http_only(true) + .path("/login") + .same_site(SameSite::Lax) + .expires(Expiration::Session) + .finish(), + ); + + // store the csrf token to verify no interference + cookies.add_private( + Cookie::build("csrf", csrf_token.secret().to_string()) + .http_only(true) + .path("/login") + .same_site(SameSite::Lax) + .expires(Expiration::Session) + .finish(), + ); + + Redirect::to(auth_url.to_string()) +} + +#[get("/discord/authorized?&")] +pub async fn discord_callback( + code: &str, + state: &str, + cookies: &CookieJar<'_>, + oauth2_client: &State, + reqwest_client: &State, +) -> Result> { + if let (Some(pkce_secret), Some(csrf_token)) = + (cookies.get_private("verify"), cookies.get_private("csrf")) + { + if state == csrf_token.value() { + let token_result = oauth2_client + .exchange_code(AuthorizationCode::new(code.to_string())) + // Set the PKCE code verifier. + .set_pkce_verifier(PkceCodeVerifier::new(pkce_secret.value().to_string())) + .request_async(async_http_client) + .await; + + cookies.remove_private(Cookie::named("verify")); + cookies.remove_private(Cookie::named("csrf")); + + match token_result { + Ok(token) => { + cookies.add_private( + Cookie::build("access_token", token.access_token().secret().to_string()) + .secure(true) + .http_only(true) + .path("/dashboard") + .finish(), + ); + + let request_res = reqwest_client + .get(format!("{}/users/@me", DISCORD_API)) + .bearer_auth(token.access_token().secret()) + .send() + .await; + + match request_res { + Ok(response) => { + let user_res = response.json::().await; + + match user_res { + Ok(user) => { + let user_name = format!("{}#{}", user.name, user.discriminator); + let user_id = user.id.as_u64().to_string(); + + cookies.add_private(Cookie::new("username", user_name)); + cookies.add_private(Cookie::new("userid", user_id)); + + Ok(Redirect::to(uri!(super::return_to_same_site("dashboard")))) + } + + Err(e) => { + warn!("Error constructing user from request: {:?}", e); + + Err(Flash::new( + Redirect::to(uri!(super::return_to_same_site(""))), + "danger", + "Failed to contact Discord", + )) + } + } + } + + Err(e) => { + warn!("Error getting user info: {:?}", e); + + Err(Flash::new( + Redirect::to(uri!(super::return_to_same_site(""))), + "danger", + "Failed to contact Discord", + )) + } + } + } + + Err(e) => { + warn!("Error in discord callback: {:?}", e); + + Err(Flash::new( + Redirect::to(uri!(super::return_to_same_site(""))), + "warning", + "Your login request was rejected", + )) + } + } + } else { + Err(Flash::new(Redirect::to(uri!(super::return_to_same_site(""))), "danger", "Your request failed to validate, and so has been rejected (error: CSRF Validation Failure)")) + } + } else { + Err(Flash::new(Redirect::to(uri!(super::return_to_same_site(""))), "warning", "Your request was missing information, and so has been rejected (error: CSRF Validation Tokens Missing)")) + } +} diff --git a/web/src/routes/mod.rs b/web/src/routes/mod.rs new file mode 100644 index 0000000..c1560e8 --- /dev/null +++ b/web/src/routes/mod.rs @@ -0,0 +1,51 @@ +pub mod dashboard; +pub mod login; + +use rocket::request::FlashMessage; +use rocket_dyn_templates::Template; +use std::collections::HashMap; + +#[get("/")] +pub async fn index(flash: Option>) -> Template { + let mut map: HashMap<&str, String> = HashMap::new(); + + if let Some(message) = flash { + map.insert("flashed_message", message.message().to_string()); + map.insert("flashed_grade", message.kind().to_string()); + } + + Template::render("index", &map) +} + +#[get("/ret?")] +pub async fn return_to_same_site(to: &str) -> Template { + let mut map: HashMap<&str, String> = HashMap::new(); + + map.insert("to", to.to_string()); + + Template::render("return", &map) +} + +#[get("/cookies")] +pub async fn cookies() -> Template { + let map: HashMap<&str, String> = HashMap::new(); + Template::render("cookies", &map) +} + +#[get("/privacy")] +pub async fn privacy() -> Template { + let map: HashMap<&str, String> = HashMap::new(); + Template::render("privacy", &map) +} + +#[get("/terms")] +pub async fn terms() -> Template { + let map: HashMap<&str, String> = HashMap::new(); + Template::render("terms", &map) +} + +#[get("/help")] +pub async fn help() -> Template { + let map: HashMap<&str, String> = HashMap::new(); + Template::render("help", &map) +} diff --git a/web/static/css/bulma.min.css b/web/static/css/bulma.min.css new file mode 100644 index 0000000..078d385 --- /dev/null +++ b/web/static/css/bulma.min.css @@ -0,0 +1 @@ +/*! bulma.io v0.9.2 | MIT License | github.com/jgthms/bulma */.button,.file-cta,.file-name,.input,.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous,.select select,.textarea{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(.5em - 1px);padding-left:calc(.75em - 1px);padding-right:calc(.75em - 1px);padding-top:calc(.5em - 1px);position:relative;vertical-align:top}.button:active,.button:focus,.file-cta:active,.file-cta:focus,.file-name:active,.file-name:focus,.input:active,.input:focus,.is-active.button,.is-active.file-cta,.is-active.file-name,.is-active.input,.is-active.pagination-ellipsis,.is-active.pagination-link,.is-active.pagination-next,.is-active.pagination-previous,.is-active.textarea,.is-focused.button,.is-focused.file-cta,.is-focused.file-name,.is-focused.input,.is-focused.pagination-ellipsis,.is-focused.pagination-link,.is-focused.pagination-next,.is-focused.pagination-previous,.is-focused.textarea,.pagination-ellipsis:active,.pagination-ellipsis:focus,.pagination-link:active,.pagination-link:focus,.pagination-next:active,.pagination-next:focus,.pagination-previous:active,.pagination-previous:focus,.select select.is-active,.select select.is-focused,.select select:active,.select select:focus,.textarea:active,.textarea:focus{outline:0}.button[disabled],.file-cta[disabled],.file-name[disabled],.input[disabled],.pagination-ellipsis[disabled],.pagination-link[disabled],.pagination-next[disabled],.pagination-previous[disabled],.select fieldset[disabled] select,.select select[disabled],.textarea[disabled],fieldset[disabled] .button,fieldset[disabled] .file-cta,fieldset[disabled] .file-name,fieldset[disabled] .input,fieldset[disabled] .pagination-ellipsis,fieldset[disabled] .pagination-link,fieldset[disabled] .pagination-next,fieldset[disabled] .pagination-previous,fieldset[disabled] .select select,fieldset[disabled] .textarea{cursor:not-allowed}.breadcrumb,.button,.file,.is-unselectable,.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous,.tabs{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless)::after,.select:not(.is-multiple):not(.is-loading)::after{border:3px solid transparent;border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:.625em;margin-top:-.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:.625em}.block:not(:last-child),.box:not(:last-child),.breadcrumb:not(:last-child),.content:not(:last-child),.highlight:not(:last-child),.level:not(:last-child),.message:not(:last-child),.notification:not(:last-child),.pagination:not(:last-child),.progress:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.tabs:not(:last-child),.title:not(:last-child){margin-bottom:1.5rem}.delete,.modal-close{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,.2);border:none;border-radius:290486px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:0;position:relative;vertical-align:top;width:20px}.delete::after,.delete::before,.modal-close::after,.modal-close::before{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.delete::before,.modal-close::before{height:2px;width:50%}.delete::after,.modal-close::after{height:50%;width:2px}.delete:focus,.delete:hover,.modal-close:focus,.modal-close:hover{background-color:rgba(10,10,10,.3)}.delete:active,.modal-close:active{background-color:rgba(10,10,10,.4)}.is-small.delete,.is-small.modal-close{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.delete,.is-medium.modal-close{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.delete,.is-large.modal-close{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.button.is-loading::after,.control.is-loading::after,.loader,.select.is-loading::after{-webkit-animation:spinAround .5s infinite linear;animation:spinAround .5s infinite linear;border:2px solid #dbdbdb;border-radius:290486px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.hero-video,.image.is-16by9 .has-ratio,.image.is-16by9 img,.image.is-1by1 .has-ratio,.image.is-1by1 img,.image.is-1by2 .has-ratio,.image.is-1by2 img,.image.is-1by3 .has-ratio,.image.is-1by3 img,.image.is-2by1 .has-ratio,.image.is-2by1 img,.image.is-2by3 .has-ratio,.image.is-2by3 img,.image.is-3by1 .has-ratio,.image.is-3by1 img,.image.is-3by2 .has-ratio,.image.is-3by2 img,.image.is-3by4 .has-ratio,.image.is-3by4 img,.image.is-3by5 .has-ratio,.image.is-3by5 img,.image.is-4by3 .has-ratio,.image.is-4by3 img,.image.is-4by5 .has-ratio,.image.is-4by5 img,.image.is-5by3 .has-ratio,.image.is-5by3 img,.image.is-5by4 .has-ratio,.image.is-5by4 img,.image.is-9by16 .has-ratio,.image.is-9by16 img,.image.is-square .has-ratio,.image.is-square img,.is-overlay,.modal,.modal-background{bottom:0;left:0;position:absolute;right:0;top:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */blockquote,body,dd,dl,dt,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,html,iframe,legend,li,ol,p,pre,textarea,ul{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,::after,::before{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}html{background-color:#fff;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,optgroup,select,textarea{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:monospace}body{color:#4a4a4a;font-size:1em;font-weight:400;line-height:1.5}a{color:#3273dc;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#363636}code{background-color:#f5f5f5;color:#da1039;font-size:.875em;font-weight:400;padding:.25em .5em .25em}hr{background-color:#f5f5f5;border:none;display:block;height:2px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type=checkbox],input[type=radio]{vertical-align:baseline}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#363636;font-weight:700}fieldset{border:none}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#4a4a4a;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}table th{color:#363636}@-webkit-keyframes spinAround{from{transform:rotate(0)}to{transform:rotate(359deg)}}@keyframes spinAround{from{transform:rotate(0)}to{transform:rotate(359deg)}}.box{background-color:#fff;border-radius:6px;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);color:#4a4a4a;display:block;padding:1.25rem}a.box:focus,a.box:hover{box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px #3273dc}a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2),0 0 0 1px #3273dc}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#363636;cursor:pointer;justify-content:center;padding-bottom:calc(.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(.5em - 1px);text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-large,.button .icon.is-medium,.button .icon.is-small{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-.5em - 1px);margin-right:calc(-.5em - 1px)}.button.is-hovered,.button:hover{border-color:#b5b5b5;color:#363636}.button.is-focused,.button:focus{border-color:#3273dc;color:#363636}.button.is-focused:not(:active),.button:focus:not(:active){box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.button.is-active,.button:active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#4a4a4a;text-decoration:underline}.button.is-text.is-focused,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text:hover{background-color:#f5f5f5;color:#363636}.button.is-text.is-active,.button.is-text:active{background-color:#e8e8e8;color:#363636}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-ghost{background:0 0;border-color:transparent;color:#3273dc;text-decoration:none}.button.is-ghost.is-hovered,.button.is-ghost:hover{color:#3273dc;text-decoration:underline}.button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}.button.is-white.is-hovered,.button.is-white:hover{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white.is-focused,.button.is-white:focus{border-color:transparent;color:#0a0a0a}.button.is-white.is-focused:not(:active),.button.is-white:focus:not(:active){box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.button.is-white.is-active,.button.is-white:active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:#fff;border-color:transparent;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-hovered,.button.is-white.is-inverted:hover{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a!important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined.is-focused,.button.is-white.is-outlined.is-hovered,.button.is-white.is-outlined:focus,.button.is-white.is-outlined:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-white.is-outlined.is-loading.is-focused::after,.button.is-white.is-outlined.is-loading.is-hovered::after,.button.is-white.is-outlined.is-loading:focus::after,.button.is-white.is-outlined.is-loading:hover::after{border-color:transparent transparent #0a0a0a #0a0a0a!important}.button.is-white.is-outlined[disabled],fieldset[disabled] .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined.is-focused,.button.is-white.is-inverted.is-outlined.is-hovered,.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined:hover{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-white.is-inverted.is-outlined.is-loading:focus::after,.button.is-white.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}.button.is-black.is-hovered,.button.is-black:hover{background-color:#040404;border-color:transparent;color:#fff}.button.is-black.is-focused,.button.is-black:focus{border-color:transparent;color:#fff}.button.is-black.is-focused:not(:active),.button.is-black:focus:not(:active){box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.button.is-black.is-active,.button.is-black:active{background-color:#000;border-color:transparent;color:#fff}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:#0a0a0a;border-color:transparent;box-shadow:none}.button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-hovered,.button.is-black.is-inverted:hover{background-color:#f2f2f2}.button.is-black.is-inverted[disabled],fieldset[disabled] .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined.is-focused,.button.is-black.is-outlined.is-hovered,.button.is-black.is-outlined:focus,.button.is-black.is-outlined:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a!important}.button.is-black.is-outlined.is-loading.is-focused::after,.button.is-black.is-outlined.is-loading.is-hovered::after,.button.is-black.is-outlined.is-loading:focus::after,.button.is-black.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-black.is-outlined[disabled],fieldset[disabled] .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined.is-focused,.button.is-black.is-inverted.is-outlined.is-hovered,.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined:hover{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-black.is-inverted.is-outlined.is-loading:focus::after,.button.is-black.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #0a0a0a #0a0a0a!important}.button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light.is-hovered,.button.is-light:hover{background-color:#eee;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light.is-focused,.button.is-light:focus{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light.is-focused:not(:active),.button.is-light:focus:not(:active){box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.button.is-light.is-active,.button.is-light:active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#f5f5f5;border-color:transparent;box-shadow:none}.button.is-light.is-inverted{background-color:rgba(0,0,0,.7);color:#f5f5f5}.button.is-light.is-inverted.is-hovered,.button.is-light.is-inverted:hover{background-color:rgba(0,0,0,.7)}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:rgba(0,0,0,.7);border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined.is-focused,.button.is-light.is-outlined.is-hovered,.button.is-light.is-outlined:focus,.button.is-light.is-outlined:hover{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5!important}.button.is-light.is-outlined.is-loading.is-focused::after,.button.is-light.is-outlined.is-loading.is-hovered::after,.button.is-light.is-outlined.is-loading:focus::after,.button.is-light.is-outlined.is-loading:hover::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);color:rgba(0,0,0,.7)}.button.is-light.is-inverted.is-outlined.is-focused,.button.is-light.is-inverted.is-outlined.is-hovered,.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined:hover{background-color:rgba(0,0,0,.7);color:#f5f5f5}.button.is-light.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-light.is-inverted.is-outlined.is-loading:focus::after,.button.is-light.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #f5f5f5 #f5f5f5!important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);box-shadow:none;color:rgba(0,0,0,.7)}.button.is-dark{background-color:#363636;border-color:transparent;color:#fff}.button.is-dark.is-hovered,.button.is-dark:hover{background-color:#2f2f2f;border-color:transparent;color:#fff}.button.is-dark.is-focused,.button.is-dark:focus{border-color:transparent;color:#fff}.button.is-dark.is-focused:not(:active),.button.is-dark:focus:not(:active){box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.button.is-dark.is-active,.button.is-dark:active{background-color:#292929;border-color:transparent;color:#fff}.button.is-dark[disabled],fieldset[disabled] .button.is-dark{background-color:#363636;border-color:transparent;box-shadow:none}.button.is-dark.is-inverted{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-hovered,.button.is-dark.is-inverted:hover{background-color:#f2f2f2}.button.is-dark.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-dark.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined.is-focused,.button.is-dark.is-outlined.is-hovered,.button.is-dark.is-outlined:focus,.button.is-dark.is-outlined:hover{background-color:#363636;border-color:#363636;color:#fff}.button.is-dark.is-outlined.is-loading::after{border-color:transparent transparent #363636 #363636!important}.button.is-dark.is-outlined.is-loading.is-focused::after,.button.is-dark.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-outlined.is-loading:focus::after,.button.is-dark.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-dark.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-dark.is-inverted.is-outlined.is-focused,.button.is-dark.is-inverted.is-outlined.is-hovered,.button.is-dark.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined:hover{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-inverted.is-outlined.is-loading:focus::after,.button.is-dark.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #363636 #363636!important}.button.is-dark.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary{background-color:#00d1b2;border-color:transparent;color:#fff}.button.is-primary.is-hovered,.button.is-primary:hover{background-color:#00c4a7;border-color:transparent;color:#fff}.button.is-primary.is-focused,.button.is-primary:focus{border-color:transparent;color:#fff}.button.is-primary.is-focused:not(:active),.button.is-primary:focus:not(:active){box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.button.is-primary.is-active,.button.is-primary:active{background-color:#00b89c;border-color:transparent;color:#fff}.button.is-primary[disabled],fieldset[disabled] .button.is-primary{background-color:#00d1b2;border-color:transparent;box-shadow:none}.button.is-primary.is-inverted{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted.is-hovered,.button.is-primary.is-inverted:hover{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled],fieldset[disabled] .button.is-primary.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#00d1b2}.button.is-primary.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;color:#00d1b2}.button.is-primary.is-outlined.is-focused,.button.is-primary.is-outlined.is-hovered,.button.is-primary.is-outlined:focus,.button.is-primary.is-outlined:hover{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.button.is-primary.is-outlined.is-loading::after{border-color:transparent transparent #00d1b2 #00d1b2!important}.button.is-primary.is-outlined.is-loading.is-focused::after,.button.is-primary.is-outlined.is-loading.is-hovered::after,.button.is-primary.is-outlined.is-loading:focus::after,.button.is-primary.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-primary.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;box-shadow:none;color:#00d1b2}.button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined.is-focused,.button.is-primary.is-inverted.is-outlined.is-hovered,.button.is-primary.is-inverted.is-outlined:focus,.button.is-primary.is-inverted.is-outlined:hover{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-primary.is-inverted.is-outlined.is-loading:focus::after,.button.is-primary.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #00d1b2 #00d1b2!important}.button.is-primary.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary.is-light{background-color:#ebfffc;color:#00947e}.button.is-primary.is-light.is-hovered,.button.is-primary.is-light:hover{background-color:#defffa;border-color:transparent;color:#00947e}.button.is-primary.is-light.is-active,.button.is-primary.is-light:active{background-color:#d1fff8;border-color:transparent;color:#00947e}.button.is-link{background-color:#3273dc;border-color:transparent;color:#fff}.button.is-link.is-hovered,.button.is-link:hover{background-color:#276cda;border-color:transparent;color:#fff}.button.is-link.is-focused,.button.is-link:focus{border-color:transparent;color:#fff}.button.is-link.is-focused:not(:active),.button.is-link:focus:not(:active){box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.button.is-link.is-active,.button.is-link:active{background-color:#2366d1;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#3273dc;border-color:transparent;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#3273dc}.button.is-link.is-inverted.is-hovered,.button.is-link.is-inverted:hover{background-color:#f2f2f2}.button.is-link.is-inverted[disabled],fieldset[disabled] .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#3273dc}.button.is-link.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-link.is-outlined{background-color:transparent;border-color:#3273dc;color:#3273dc}.button.is-link.is-outlined.is-focused,.button.is-link.is-outlined.is-hovered,.button.is-link.is-outlined:focus,.button.is-link.is-outlined:hover{background-color:#3273dc;border-color:#3273dc;color:#fff}.button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #3273dc #3273dc!important}.button.is-link.is-outlined.is-loading.is-focused::after,.button.is-link.is-outlined.is-loading.is-hovered::after,.button.is-link.is-outlined.is-loading:focus::after,.button.is-link.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-link.is-outlined[disabled],fieldset[disabled] .button.is-link.is-outlined{background-color:transparent;border-color:#3273dc;box-shadow:none;color:#3273dc}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined.is-focused,.button.is-link.is-inverted.is-outlined.is-hovered,.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined:hover{background-color:#fff;color:#3273dc}.button.is-link.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-link.is-inverted.is-outlined.is-loading:focus::after,.button.is-link.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #3273dc #3273dc!important}.button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-link.is-light{background-color:#eef3fc;color:#2160c4}.button.is-link.is-light.is-hovered,.button.is-link.is-light:hover{background-color:#e3ecfa;border-color:transparent;color:#2160c4}.button.is-link.is-light.is-active,.button.is-link.is-light:active{background-color:#d8e4f8;border-color:transparent;color:#2160c4}.button.is-info{background-color:#3298dc;border-color:transparent;color:#fff}.button.is-info.is-hovered,.button.is-info:hover{background-color:#2793da;border-color:transparent;color:#fff}.button.is-info.is-focused,.button.is-info:focus{border-color:transparent;color:#fff}.button.is-info.is-focused:not(:active),.button.is-info:focus:not(:active){box-shadow:0 0 0 .125em rgba(50,152,220,.25)}.button.is-info.is-active,.button.is-info:active{background-color:#238cd1;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#3298dc;border-color:transparent;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#3298dc}.button.is-info.is-inverted.is-hovered,.button.is-info.is-inverted:hover{background-color:#f2f2f2}.button.is-info.is-inverted[disabled],fieldset[disabled] .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#3298dc}.button.is-info.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-info.is-outlined{background-color:transparent;border-color:#3298dc;color:#3298dc}.button.is-info.is-outlined.is-focused,.button.is-info.is-outlined.is-hovered,.button.is-info.is-outlined:focus,.button.is-info.is-outlined:hover{background-color:#3298dc;border-color:#3298dc;color:#fff}.button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #3298dc #3298dc!important}.button.is-info.is-outlined.is-loading.is-focused::after,.button.is-info.is-outlined.is-loading.is-hovered::after,.button.is-info.is-outlined.is-loading:focus::after,.button.is-info.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-info.is-outlined[disabled],fieldset[disabled] .button.is-info.is-outlined{background-color:transparent;border-color:#3298dc;box-shadow:none;color:#3298dc}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined.is-focused,.button.is-info.is-inverted.is-outlined.is-hovered,.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined:hover{background-color:#fff;color:#3298dc}.button.is-info.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-info.is-inverted.is-outlined.is-loading:focus::after,.button.is-info.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #3298dc #3298dc!important}.button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-info.is-light{background-color:#eef6fc;color:#1d72aa}.button.is-info.is-light.is-hovered,.button.is-info.is-light:hover{background-color:#e3f1fa;border-color:transparent;color:#1d72aa}.button.is-info.is-light.is-active,.button.is-info.is-light:active{background-color:#d8ebf8;border-color:transparent;color:#1d72aa}.button.is-success{background-color:#48c774;border-color:transparent;color:#fff}.button.is-success.is-hovered,.button.is-success:hover{background-color:#3ec46d;border-color:transparent;color:#fff}.button.is-success.is-focused,.button.is-success:focus{border-color:transparent;color:#fff}.button.is-success.is-focused:not(:active),.button.is-success:focus:not(:active){box-shadow:0 0 0 .125em rgba(72,199,116,.25)}.button.is-success.is-active,.button.is-success:active{background-color:#3abb67;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#48c774;border-color:transparent;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#48c774}.button.is-success.is-inverted.is-hovered,.button.is-success.is-inverted:hover{background-color:#f2f2f2}.button.is-success.is-inverted[disabled],fieldset[disabled] .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#48c774}.button.is-success.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-success.is-outlined{background-color:transparent;border-color:#48c774;color:#48c774}.button.is-success.is-outlined.is-focused,.button.is-success.is-outlined.is-hovered,.button.is-success.is-outlined:focus,.button.is-success.is-outlined:hover{background-color:#48c774;border-color:#48c774;color:#fff}.button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #48c774 #48c774!important}.button.is-success.is-outlined.is-loading.is-focused::after,.button.is-success.is-outlined.is-loading.is-hovered::after,.button.is-success.is-outlined.is-loading:focus::after,.button.is-success.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-success.is-outlined[disabled],fieldset[disabled] .button.is-success.is-outlined{background-color:transparent;border-color:#48c774;box-shadow:none;color:#48c774}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined.is-focused,.button.is-success.is-inverted.is-outlined.is-hovered,.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined:hover{background-color:#fff;color:#48c774}.button.is-success.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-success.is-inverted.is-outlined.is-loading:focus::after,.button.is-success.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #48c774 #48c774!important}.button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-success.is-light{background-color:#effaf3;color:#257942}.button.is-success.is-light.is-hovered,.button.is-success.is-light:hover{background-color:#e6f7ec;border-color:transparent;color:#257942}.button.is-success.is-light.is-active,.button.is-success.is-light:active{background-color:#dcf4e4;border-color:transparent;color:#257942}.button.is-warning{background-color:#ffdd57;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning.is-hovered,.button.is-warning:hover{background-color:#ffdb4a;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning.is-focused,.button.is-warning:focus{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning.is-focused:not(:active),.button.is-warning:focus:not(:active){box-shadow:0 0 0 .125em rgba(255,221,87,.25)}.button.is-warning.is-active,.button.is-warning:active{background-color:#ffd83d;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#ffdd57;border-color:transparent;box-shadow:none}.button.is-warning.is-inverted{background-color:rgba(0,0,0,.7);color:#ffdd57}.button.is-warning.is-inverted.is-hovered,.button.is-warning.is-inverted:hover{background-color:rgba(0,0,0,.7)}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:rgba(0,0,0,.7);border-color:transparent;box-shadow:none;color:#ffdd57}.button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;color:#ffdd57}.button.is-warning.is-outlined.is-focused,.button.is-warning.is-outlined.is-hovered,.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined:hover{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,.7)}.button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #ffdd57 #ffdd57!important}.button.is-warning.is-outlined.is-loading.is-focused::after,.button.is-warning.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-outlined.is-loading:focus::after,.button.is-warning.is-outlined.is-loading:hover::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;box-shadow:none;color:#ffdd57}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);color:rgba(0,0,0,.7)}.button.is-warning.is-inverted.is-outlined.is-focused,.button.is-warning.is-inverted.is-outlined.is-hovered,.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined:hover{background-color:rgba(0,0,0,.7);color:#ffdd57}.button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-inverted.is-outlined.is-loading:focus::after,.button.is-warning.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #ffdd57 #ffdd57!important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);box-shadow:none;color:rgba(0,0,0,.7)}.button.is-warning.is-light{background-color:#fffbeb;color:#947600}.button.is-warning.is-light.is-hovered,.button.is-warning.is-light:hover{background-color:#fff8de;border-color:transparent;color:#947600}.button.is-warning.is-light.is-active,.button.is-warning.is-light:active{background-color:#fff6d1;border-color:transparent;color:#947600}.button.is-danger{background-color:#f14668;border-color:transparent;color:#fff}.button.is-danger.is-hovered,.button.is-danger:hover{background-color:#f03a5f;border-color:transparent;color:#fff}.button.is-danger.is-focused,.button.is-danger:focus{border-color:transparent;color:#fff}.button.is-danger.is-focused:not(:active),.button.is-danger:focus:not(:active){box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.button.is-danger.is-active,.button.is-danger:active{background-color:#ef2e55;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#f14668;border-color:transparent;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#f14668}.button.is-danger.is-inverted.is-hovered,.button.is-danger.is-inverted:hover{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled],fieldset[disabled] .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#f14668}.button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;color:#f14668}.button.is-danger.is-outlined.is-focused,.button.is-danger.is-outlined.is-hovered,.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined:hover{background-color:#f14668;border-color:#f14668;color:#fff}.button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #f14668 #f14668!important}.button.is-danger.is-outlined.is-loading.is-focused::after,.button.is-danger.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-outlined.is-loading:focus::after,.button.is-danger.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-danger.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;box-shadow:none;color:#f14668}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined.is-focused,.button.is-danger.is-inverted.is-outlined.is-hovered,.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined:hover{background-color:#fff;color:#f14668}.button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-inverted.is-outlined.is-loading:focus::after,.button.is-danger.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #f14668 #f14668!important}.button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.button.is-danger.is-light.is-hovered,.button.is-danger.is-light:hover{background-color:#fde0e6;border-color:transparent;color:#cc0f35}.button.is-danger.is-light.is-active,.button.is-danger.is-light:active{background-color:#fcd4dc;border-color:transparent;color:#cc0f35}.button.is-small{font-size:.75rem}.button.is-small:not(.is-rounded){border-radius:2px}.button.is-normal{font-size:1rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{color:transparent!important;pointer-events:none}.button.is-loading::after{position:absolute;left:calc(50% - (1em / 2));top:calc(50% - (1em / 2));position:absolute!important}.button.is-static{background-color:#f5f5f5;border-color:#dbdbdb;color:#7a7a7a;box-shadow:none;pointer-events:none}.button.is-rounded{border-radius:290486px;padding-left:calc(1em + .25em);padding-right:calc(1em + .25em)}.buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.buttons .button{margin-bottom:.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}.buttons:last-child{margin-bottom:-.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:2px}.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button.is-hovered,.buttons.has-addons .button:hover{z-index:2}.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-focused,.buttons.has-addons .button.is-selected,.buttons.has-addons .button:active,.buttons.has-addons .button:focus{z-index:3}.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button.is-selected:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button:focus:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.buttons.is-right{justify-content:flex-end}.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}.container.is-fluid{max-width:none!important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width:1024px){.container{max-width:960px}}@media screen and (max-width:1215px){.container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width:1407px){.container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width:1216px){.container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width:1408px){.container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.content li+li{margin-top:.25em}.content blockquote:not(:last-child),.content dl:not(:last-child),.content ol:not(:last-child),.content p:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child),.content ul:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:#363636;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:.8em}.content h5{font-size:1.125em;margin-bottom:.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style-position:outside;margin-left:2em;margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ol:not([type]).is-lower-alpha{list-style-type:lower-alpha}.content ol:not([type]).is-lower-roman{list-style-type:lower-roman}.content ol:not([type]).is-upper-alpha{list-style-type:upper-alpha}.content ol:not([type]).is-upper-roman{list-style-type:upper-roman}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content figure figcaption{font-style:italic}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:1.25em 1.5em;white-space:pre;word-wrap:normal}.content sub,.content sup{font-size:75%}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.content table th{color:#363636}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:0 0 2px;color:#363636}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#363636}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small{font-size:.75rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}.icon-text .icon{flex-grow:0;flex-shrink:0}.icon-text .icon:not(:last-child){margin-right:.25em}.icon-text .icon:not(:first-child){margin-left:.25em}div.icon-text{display:flex}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:290486px}.image.is-fullwidth{width:100%}.image.is-16by9 .has-ratio,.image.is-16by9 img,.image.is-1by1 .has-ratio,.image.is-1by1 img,.image.is-1by2 .has-ratio,.image.is-1by2 img,.image.is-1by3 .has-ratio,.image.is-1by3 img,.image.is-2by1 .has-ratio,.image.is-2by1 img,.image.is-2by3 .has-ratio,.image.is-2by3 img,.image.is-3by1 .has-ratio,.image.is-3by1 img,.image.is-3by2 .has-ratio,.image.is-3by2 img,.image.is-3by4 .has-ratio,.image.is-3by4 img,.image.is-3by5 .has-ratio,.image.is-3by5 img,.image.is-4by3 .has-ratio,.image.is-4by3 img,.image.is-4by5 .has-ratio,.image.is-4by5 img,.image.is-5by3 .has-ratio,.image.is-5by3 img,.image.is-5by4 .has-ratio,.image.is-5by4 img,.image.is-9by16 .has-ratio,.image.is-9by16 img,.image.is-square .has-ratio,.image.is-square img{height:100%;width:100%}.image.is-1by1,.image.is-square{padding-top:100%}.image.is-5by4{padding-top:80%}.image.is-4by3{padding-top:75%}.image.is-3by2{padding-top:66.6666%}.image.is-5by3{padding-top:60%}.image.is-16by9{padding-top:56.25%}.image.is-2by1{padding-top:50%}.image.is-3by1{padding-top:33.3333%}.image.is-4by5{padding-top:125%}.image.is-3by4{padding-top:133.3333%}.image.is-2by3{padding-top:150%}.image.is-3by5{padding-top:166.6666%}.image.is-9by16{padding-top:177.7777%}.image.is-1by2{padding-top:200%}.image.is-1by3{padding-top:300%}.image.is-16x16{height:16px;width:16px}.image.is-24x24{height:24px;width:24px}.image.is-32x32{height:32px;width:32px}.image.is-48x48{height:48px;width:48px}.image.is-64x64{height:64px;width:64px}.image.is-96x96{height:96px;width:96px}.image.is-128x128{height:128px;width:128px}.notification{background-color:#f5f5f5;border-radius:4px;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#fff}.notification pre code{background:0 0}.notification>.delete{right:.5rem;position:absolute;top:.5rem}.notification .content,.notification .subtitle,.notification .title{color:currentColor}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.notification.is-dark{background-color:#363636;color:#fff}.notification.is-primary{background-color:#00d1b2;color:#fff}.notification.is-primary.is-light{background-color:#ebfffc;color:#00947e}.notification.is-link{background-color:#3273dc;color:#fff}.notification.is-link.is-light{background-color:#eef3fc;color:#2160c4}.notification.is-info{background-color:#3298dc;color:#fff}.notification.is-info.is-light{background-color:#eef6fc;color:#1d72aa}.notification.is-success{background-color:#48c774;color:#fff}.notification.is-success.is-light{background-color:#effaf3;color:#257942}.notification.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.notification.is-warning.is-light{background-color:#fffbeb;color:#947600}.notification.is-danger{background-color:#f14668;color:#fff}.notification.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:290486px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#ededed}.progress::-webkit-progress-value{background-color:#4a4a4a}.progress::-moz-progress-bar{background-color:#4a4a4a}.progress::-ms-fill{background-color:#4a4a4a;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-white:indeterminate{background-image:linear-gradient(to right,#fff 30%,#ededed 30%)}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-black::-ms-fill{background-color:#0a0a0a}.progress.is-black:indeterminate{background-image:linear-gradient(to right,#0a0a0a 30%,#ededed 30%)}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(to right,#f5f5f5 30%,#ededed 30%)}.progress.is-dark::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill{background-color:#363636}.progress.is-dark:indeterminate{background-image:linear-gradient(to right,#363636 30%,#ededed 30%)}.progress.is-primary::-webkit-progress-value{background-color:#00d1b2}.progress.is-primary::-moz-progress-bar{background-color:#00d1b2}.progress.is-primary::-ms-fill{background-color:#00d1b2}.progress.is-primary:indeterminate{background-image:linear-gradient(to right,#00d1b2 30%,#ededed 30%)}.progress.is-link::-webkit-progress-value{background-color:#3273dc}.progress.is-link::-moz-progress-bar{background-color:#3273dc}.progress.is-link::-ms-fill{background-color:#3273dc}.progress.is-link:indeterminate{background-image:linear-gradient(to right,#3273dc 30%,#ededed 30%)}.progress.is-info::-webkit-progress-value{background-color:#3298dc}.progress.is-info::-moz-progress-bar{background-color:#3298dc}.progress.is-info::-ms-fill{background-color:#3298dc}.progress.is-info:indeterminate{background-image:linear-gradient(to right,#3298dc 30%,#ededed 30%)}.progress.is-success::-webkit-progress-value{background-color:#48c774}.progress.is-success::-moz-progress-bar{background-color:#48c774}.progress.is-success::-ms-fill{background-color:#48c774}.progress.is-success:indeterminate{background-image:linear-gradient(to right,#48c774 30%,#ededed 30%)}.progress.is-warning::-webkit-progress-value{background-color:#ffdd57}.progress.is-warning::-moz-progress-bar{background-color:#ffdd57}.progress.is-warning::-ms-fill{background-color:#ffdd57}.progress.is-warning:indeterminate{background-image:linear-gradient(to right,#ffdd57 30%,#ededed 30%)}.progress.is-danger::-webkit-progress-value{background-color:#f14668}.progress.is-danger::-moz-progress-bar{background-color:#f14668}.progress.is-danger::-ms-fill{background-color:#f14668}.progress.is-danger:indeterminate{background-image:linear-gradient(to right,#f14668 30%,#ededed 30%)}.progress:indeterminate{-webkit-animation-duration:1.5s;animation-duration:1.5s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:moveIndeterminate;animation-name:moveIndeterminate;-webkit-animation-timing-function:linear;animation-timing-function:linear;background-color:#ededed;background-image:linear-gradient(to right,#4a4a4a 30%,#ededed 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@-webkit-keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}.table{background-color:#fff;color:#363636}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#fff}.table td.is-primary,.table th.is-primary{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.table td.is-link,.table th.is-link{background-color:#3273dc;border-color:#3273dc;color:#fff}.table td.is-info,.table th.is-info{background-color:#3298dc;border-color:#3298dc;color:#fff}.table td.is-success,.table th.is-success{background-color:#48c774;border-color:#48c774;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,.7)}.table td.is-danger,.table th.is-danger{background-color:#f14668;border-color:#f14668;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#00d1b2;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table td.is-vcentered,.table th.is-vcentered{vertical-align:middle}.table th{color:#363636}.table th:not([align]){text-align:inherit}.table tr.is-selected{background-color:#00d1b2;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead{background-color:transparent}.table thead td,.table thead th{border-width:0 0 2px;color:#363636}.table tfoot{background-color:transparent}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#363636}.table tbody{background-color:transparent}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#f5f5f5}.table.is-narrow td,.table.is-narrow th{padding:.25em .5em}.table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#fafafa}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.tags .tag{margin-bottom:.5rem}.tags .tag:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.are-medium .tag:not(.is-normal):not(.is-large){font-size:1rem}.tags.are-large .tag:not(.is-normal):not(.is-medium){font-size:1.25rem}.tags.is-centered{justify-content:center}.tags.is-centered .tag{margin-right:.25rem;margin-left:.25rem}.tags.is-right{justify-content:flex-end}.tags.is-right .tag:not(:first-child){margin-left:.5rem}.tags.is-right .tag:not(:last-child){margin-right:0}.tags.has-addons .tag{margin-right:0}.tags.has-addons .tag:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.tags.has-addons .tag:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tag:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#4a4a4a;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:.75em;padding-right:.75em;white-space:nowrap}.tag:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}.tag:not(body).is-white{background-color:#fff;color:#0a0a0a}.tag:not(body).is-black{background-color:#0a0a0a;color:#fff}.tag:not(body).is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.tag:not(body).is-dark{background-color:#363636;color:#fff}.tag:not(body).is-primary{background-color:#00d1b2;color:#fff}.tag:not(body).is-primary.is-light{background-color:#ebfffc;color:#00947e}.tag:not(body).is-link{background-color:#3273dc;color:#fff}.tag:not(body).is-link.is-light{background-color:#eef3fc;color:#2160c4}.tag:not(body).is-info{background-color:#3298dc;color:#fff}.tag:not(body).is-info.is-light{background-color:#eef6fc;color:#1d72aa}.tag:not(body).is-success{background-color:#48c774;color:#fff}.tag:not(body).is-success.is-light{background-color:#effaf3;color:#257942}.tag:not(body).is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.tag:not(body).is-warning.is-light{background-color:#fffbeb;color:#947600}.tag:not(body).is-danger{background-color:#f14668;color:#fff}.tag:not(body).is-danger.is-light{background-color:#feecf0;color:#cc0f35}.tag:not(body).is-normal{font-size:.75rem}.tag:not(body).is-medium{font-size:1rem}.tag:not(body).is-large{font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}.tag:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}.tag:not(body).is-delete{margin-left:1px;padding:0;position:relative;width:2em}.tag:not(body).is-delete::after,.tag:not(body).is-delete::before{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.tag:not(body).is-delete::before{height:1px;width:50%}.tag:not(body).is-delete::after{height:50%;width:1px}.tag:not(body).is-delete:focus,.tag:not(body).is-delete:hover{background-color:#e8e8e8}.tag:not(body).is-delete:active{background-color:#dbdbdb}.tag:not(body).is-rounded{border-radius:290486px}a.tag:hover{text-decoration:underline}.subtitle,.title{word-break:break-word}.subtitle em,.subtitle span,.title em,.title span{font-weight:inherit}.subtitle sub,.title sub{font-size:.75em}.subtitle sup,.title sup{font-size:.75em}.subtitle .tag,.title .tag{vertical-align:middle}.title{color:#363636;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title+.highlight{margin-top:-.75rem}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#363636;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.highlight{font-weight:400;max-width:100%;overflow:hidden;padding:0}.highlight pre{overflow:auto;max-width:100%}.number{align-items:center;background-color:#f5f5f5;border-radius:290486px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:.25rem .5rem;text-align:center;vertical-align:top}.input,.select select,.textarea{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#363636}.input::-moz-placeholder,.select select::-moz-placeholder,.textarea::-moz-placeholder{color:rgba(54,54,54,.3)}.input::-webkit-input-placeholder,.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:rgba(54,54,54,.3)}.input:-moz-placeholder,.select select:-moz-placeholder,.textarea:-moz-placeholder{color:rgba(54,54,54,.3)}.input:-ms-input-placeholder,.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:rgba(54,54,54,.3)}.input:hover,.is-hovered.input,.is-hovered.textarea,.select select.is-hovered,.select select:hover,.textarea:hover{border-color:#b5b5b5}.input:active,.input:focus,.is-active.input,.is-active.textarea,.is-focused.input,.is-focused.textarea,.select select.is-active,.select select.is-focused,.select select:active,.select select:focus,.textarea:active,.textarea:focus{border-color:#3273dc;box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.input[disabled],.select fieldset[disabled] select,.select select[disabled],.textarea[disabled],fieldset[disabled] .input,fieldset[disabled] .select select,fieldset[disabled] .textarea{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#7a7a7a}.input[disabled]::-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,.select select[disabled]::-moz-placeholder,.textarea[disabled]::-moz-placeholder,fieldset[disabled] .input::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder{color:rgba(122,122,122,.3)}.input[disabled]::-webkit-input-placeholder,.select fieldset[disabled] select::-webkit-input-placeholder,.select select[disabled]::-webkit-input-placeholder,.textarea[disabled]::-webkit-input-placeholder,fieldset[disabled] .input::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,fieldset[disabled] .textarea::-webkit-input-placeholder{color:rgba(122,122,122,.3)}.input[disabled]:-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,.select select[disabled]:-moz-placeholder,.textarea[disabled]:-moz-placeholder,fieldset[disabled] .input:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder{color:rgba(122,122,122,.3)}.input[disabled]:-ms-input-placeholder,.select fieldset[disabled] select:-ms-input-placeholder,.select select[disabled]:-ms-input-placeholder,.textarea[disabled]:-ms-input-placeholder,fieldset[disabled] .input:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,fieldset[disabled] .textarea:-ms-input-placeholder{color:rgba(122,122,122,.3)}.input,.textarea{box-shadow:inset 0 .0625em .125em rgba(10,10,10,.05);max-width:100%;width:100%}.input[readonly],.textarea[readonly]{box-shadow:none}.is-white.input,.is-white.textarea{border-color:#fff}.is-white.input:active,.is-white.input:focus,.is-white.is-active.input,.is-white.is-active.textarea,.is-white.is-focused.input,.is-white.is-focused.textarea,.is-white.textarea:active,.is-white.textarea:focus{box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.is-black.input,.is-black.textarea{border-color:#0a0a0a}.is-black.input:active,.is-black.input:focus,.is-black.is-active.input,.is-black.is-active.textarea,.is-black.is-focused.input,.is-black.is-focused.textarea,.is-black.textarea:active,.is-black.textarea:focus{box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.is-light.input,.is-light.textarea{border-color:#f5f5f5}.is-light.input:active,.is-light.input:focus,.is-light.is-active.input,.is-light.is-active.textarea,.is-light.is-focused.input,.is-light.is-focused.textarea,.is-light.textarea:active,.is-light.textarea:focus{box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.is-dark.input,.is-dark.textarea{border-color:#363636}.is-dark.input:active,.is-dark.input:focus,.is-dark.is-active.input,.is-dark.is-active.textarea,.is-dark.is-focused.input,.is-dark.is-focused.textarea,.is-dark.textarea:active,.is-dark.textarea:focus{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.is-primary.input,.is-primary.textarea{border-color:#00d1b2}.is-primary.input:active,.is-primary.input:focus,.is-primary.is-active.input,.is-primary.is-active.textarea,.is-primary.is-focused.input,.is-primary.is-focused.textarea,.is-primary.textarea:active,.is-primary.textarea:focus{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.is-link.input,.is-link.textarea{border-color:#3273dc}.is-link.input:active,.is-link.input:focus,.is-link.is-active.input,.is-link.is-active.textarea,.is-link.is-focused.input,.is-link.is-focused.textarea,.is-link.textarea:active,.is-link.textarea:focus{box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.is-info.input,.is-info.textarea{border-color:#3298dc}.is-info.input:active,.is-info.input:focus,.is-info.is-active.input,.is-info.is-active.textarea,.is-info.is-focused.input,.is-info.is-focused.textarea,.is-info.textarea:active,.is-info.textarea:focus{box-shadow:0 0 0 .125em rgba(50,152,220,.25)}.is-success.input,.is-success.textarea{border-color:#48c774}.is-success.input:active,.is-success.input:focus,.is-success.is-active.input,.is-success.is-active.textarea,.is-success.is-focused.input,.is-success.is-focused.textarea,.is-success.textarea:active,.is-success.textarea:focus{box-shadow:0 0 0 .125em rgba(72,199,116,.25)}.is-warning.input,.is-warning.textarea{border-color:#ffdd57}.is-warning.input:active,.is-warning.input:focus,.is-warning.is-active.input,.is-warning.is-active.textarea,.is-warning.is-focused.input,.is-warning.is-focused.textarea,.is-warning.textarea:active,.is-warning.textarea:focus{box-shadow:0 0 0 .125em rgba(255,221,87,.25)}.is-danger.input,.is-danger.textarea{border-color:#f14668}.is-danger.input:active,.is-danger.input:focus,.is-danger.is-active.input,.is-danger.is-active.textarea,.is-danger.is-focused.input,.is-danger.is-focused.textarea,.is-danger.textarea:active,.is-danger.textarea:focus{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.is-small.input,.is-small.textarea{border-radius:2px;font-size:.75rem}.is-medium.input,.is-medium.textarea{font-size:1.25rem}.is-large.input,.is-large.textarea{font-size:1.5rem}.is-fullwidth.input,.is-fullwidth.textarea{display:block;width:100%}.is-inline.input,.is-inline.textarea{display:inline;width:auto}.input.is-rounded{border-radius:290486px;padding-left:calc(calc(.75em - 1px) + .375em);padding-right:calc(calc(.75em - 1px) + .375em)}.input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.textarea[rows]{height:initial}.textarea.has-fixed-size{resize:none}.checkbox,.radio{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.checkbox input,.radio input{cursor:pointer}.checkbox:hover,.radio:hover{color:#363636}.checkbox input[disabled],.checkbox[disabled],.radio input[disabled],.radio[disabled],fieldset[disabled] .checkbox,fieldset[disabled] .radio{color:#7a7a7a;cursor:not-allowed}.radio+.radio{margin-left:.5em}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.5em}.select:not(.is-multiple):not(.is-loading)::after{border-color:#3273dc;right:1.125em;z-index:4}.select.is-rounded select{border-radius:290486px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:0}.select select::-ms-expand{display:none}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#f5f5f5}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:.5em 1em}.select:not(.is-multiple):not(.is-loading):hover::after{border-color:#363636}.select.is-white:not(:hover)::after{border-color:#fff}.select.is-white select{border-color:#fff}.select.is-white select.is-hovered,.select.is-white select:hover{border-color:#f2f2f2}.select.is-white select.is-active,.select.is-white select.is-focused,.select.is-white select:active,.select.is-white select:focus{box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.select.is-black:not(:hover)::after{border-color:#0a0a0a}.select.is-black select{border-color:#0a0a0a}.select.is-black select.is-hovered,.select.is-black select:hover{border-color:#000}.select.is-black select.is-active,.select.is-black select.is-focused,.select.is-black select:active,.select.is-black select:focus{box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.select.is-light:not(:hover)::after{border-color:#f5f5f5}.select.is-light select{border-color:#f5f5f5}.select.is-light select.is-hovered,.select.is-light select:hover{border-color:#e8e8e8}.select.is-light select.is-active,.select.is-light select.is-focused,.select.is-light select:active,.select.is-light select:focus{box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.select.is-dark:not(:hover)::after{border-color:#363636}.select.is-dark select{border-color:#363636}.select.is-dark select.is-hovered,.select.is-dark select:hover{border-color:#292929}.select.is-dark select.is-active,.select.is-dark select.is-focused,.select.is-dark select:active,.select.is-dark select:focus{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.select.is-primary:not(:hover)::after{border-color:#00d1b2}.select.is-primary select{border-color:#00d1b2}.select.is-primary select.is-hovered,.select.is-primary select:hover{border-color:#00b89c}.select.is-primary select.is-active,.select.is-primary select.is-focused,.select.is-primary select:active,.select.is-primary select:focus{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.select.is-link:not(:hover)::after{border-color:#3273dc}.select.is-link select{border-color:#3273dc}.select.is-link select.is-hovered,.select.is-link select:hover{border-color:#2366d1}.select.is-link select.is-active,.select.is-link select.is-focused,.select.is-link select:active,.select.is-link select:focus{box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.select.is-info:not(:hover)::after{border-color:#3298dc}.select.is-info select{border-color:#3298dc}.select.is-info select.is-hovered,.select.is-info select:hover{border-color:#238cd1}.select.is-info select.is-active,.select.is-info select.is-focused,.select.is-info select:active,.select.is-info select:focus{box-shadow:0 0 0 .125em rgba(50,152,220,.25)}.select.is-success:not(:hover)::after{border-color:#48c774}.select.is-success select{border-color:#48c774}.select.is-success select.is-hovered,.select.is-success select:hover{border-color:#3abb67}.select.is-success select.is-active,.select.is-success select.is-focused,.select.is-success select:active,.select.is-success select:focus{box-shadow:0 0 0 .125em rgba(72,199,116,.25)}.select.is-warning:not(:hover)::after{border-color:#ffdd57}.select.is-warning select{border-color:#ffdd57}.select.is-warning select.is-hovered,.select.is-warning select:hover{border-color:#ffd83d}.select.is-warning select.is-active,.select.is-warning select.is-focused,.select.is-warning select:active,.select.is-warning select:focus{box-shadow:0 0 0 .125em rgba(255,221,87,.25)}.select.is-danger:not(:hover)::after{border-color:#f14668}.select.is-danger select{border-color:#f14668}.select.is-danger select.is-hovered,.select.is-danger select:hover{border-color:#ef2e55}.select.is-danger select.is-active,.select.is-danger select.is-focused,.select.is-danger select:active,.select.is-danger select:focus{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.select.is-small{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled::after{border-color:#7a7a7a}.select.is-fullwidth{width:100%}.select.is-fullwidth select{width:100%}.select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:.625em;transform:none}.select.is-loading.is-small:after{font-size:.75rem}.select.is-loading.is-medium:after{font-size:1.25rem}.select.is-loading.is-large:after{font-size:1.5rem}.file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}.file.is-white.is-hovered .file-cta,.file.is-white:hover .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.file.is-white.is-focused .file-cta,.file.is-white:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,255,255,.25);color:#0a0a0a}.file.is-white.is-active .file-cta,.file.is-white:active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}.file.is-black.is-hovered .file-cta,.file.is-black:hover .file-cta{background-color:#040404;border-color:transparent;color:#fff}.file.is-black.is-focused .file-cta,.file.is-black:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(10,10,10,.25);color:#fff}.file.is-black.is-active .file-cta,.file.is-black:active .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light.is-hovered .file-cta,.file.is-light:hover .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light.is-focused .file-cta,.file.is-light:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(245,245,245,.25);color:rgba(0,0,0,.7)}.file.is-light.is-active .file-cta,.file.is-light:active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-dark .file-cta{background-color:#363636;border-color:transparent;color:#fff}.file.is-dark.is-hovered .file-cta,.file.is-dark:hover .file-cta{background-color:#2f2f2f;border-color:transparent;color:#fff}.file.is-dark.is-focused .file-cta,.file.is-dark:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(54,54,54,.25);color:#fff}.file.is-dark.is-active .file-cta,.file.is-dark:active .file-cta{background-color:#292929;border-color:transparent;color:#fff}.file.is-primary .file-cta{background-color:#00d1b2;border-color:transparent;color:#fff}.file.is-primary.is-hovered .file-cta,.file.is-primary:hover .file-cta{background-color:#00c4a7;border-color:transparent;color:#fff}.file.is-primary.is-focused .file-cta,.file.is-primary:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(0,209,178,.25);color:#fff}.file.is-primary.is-active .file-cta,.file.is-primary:active .file-cta{background-color:#00b89c;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#3273dc;border-color:transparent;color:#fff}.file.is-link.is-hovered .file-cta,.file.is-link:hover .file-cta{background-color:#276cda;border-color:transparent;color:#fff}.file.is-link.is-focused .file-cta,.file.is-link:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(50,115,220,.25);color:#fff}.file.is-link.is-active .file-cta,.file.is-link:active .file-cta{background-color:#2366d1;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#3298dc;border-color:transparent;color:#fff}.file.is-info.is-hovered .file-cta,.file.is-info:hover .file-cta{background-color:#2793da;border-color:transparent;color:#fff}.file.is-info.is-focused .file-cta,.file.is-info:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(50,152,220,.25);color:#fff}.file.is-info.is-active .file-cta,.file.is-info:active .file-cta{background-color:#238cd1;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#48c774;border-color:transparent;color:#fff}.file.is-success.is-hovered .file-cta,.file.is-success:hover .file-cta{background-color:#3ec46d;border-color:transparent;color:#fff}.file.is-success.is-focused .file-cta,.file.is-success:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(72,199,116,.25);color:#fff}.file.is-success.is-active .file-cta,.file.is-success:active .file-cta{background-color:#3abb67;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#ffdd57;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning.is-hovered .file-cta,.file.is-warning:hover .file-cta{background-color:#ffdb4a;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning.is-focused .file-cta,.file.is-warning:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,221,87,.25);color:rgba(0,0,0,.7)}.file.is-warning.is-active .file-cta,.file.is-warning:active .file-cta{background-color:#ffd83d;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-danger .file-cta{background-color:#f14668;border-color:transparent;color:#fff}.file.is-danger.is-hovered .file-cta,.file.is-danger:hover .file-cta{background-color:#f03a5f;border-color:transparent;color:#fff}.file.is-danger.is-focused .file-cta,.file.is-danger:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(241,70,104,.25);color:#fff}.file.is-danger.is-active .file-cta,.file.is-danger:active .file-cta{background-color:#ef2e55;border-color:transparent;color:#fff}.file.is-small{font-size:.75rem}.file.is-medium{font-size:1.25rem}.file.is-medium .file-icon .fa{font-size:21px}.file.is-large{font-size:1.5rem}.file.is-large .file-icon .fa{font-size:28px}.file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}.file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}.file.has-name.is-empty .file-cta{border-radius:4px}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{flex-direction:column}.file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:21px}.file.is-boxed.is-small .file-icon .fa{font-size:14px}.file.is-boxed.is-medium .file-icon .fa{font-size:28px}.file.is-boxed.is-large .file-icon .fa{font-size:35px}.file.is-boxed.has-name .file-cta{border-radius:4px 4px 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 4px 4px;border-width:0 1px 1px}.file.is-centered{justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{flex-grow:1;max-width:none}.file.is-right{justify-content:flex-end}.file.is-right .file-cta{border-radius:0 4px 4px 0}.file.is-right .file-name{border-radius:4px 0 0 4px;border-width:1px 0 1px 1px;order:-1}.file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover .file-cta{background-color:#eee;color:#363636}.file-label:hover .file-name{border-color:#d5d5d5}.file-label:active .file-cta{background-color:#e8e8e8;color:#363636}.file-label:active .file-name{border-color:#cfcfcf}.file-input{height:100%;left:0;opacity:0;outline:0;position:absolute;top:0;width:100%}.file-cta,.file-name{border-color:#dbdbdb;border-radius:4px;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:#f5f5f5;color:#4a4a4a}.file-name{border-color:#dbdbdb;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}.file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}.file-icon .fa{font-size:14px}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:.5em}.label.is-small{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#f5f5f5}.help.is-dark{color:#363636}.help.is-primary{color:#00d1b2}.help.is-link{color:#3273dc}.help.is-info{color:#3298dc}.help.is-success{color:#48c774}.help.is-warning{color:#ffdd57}.help.is-danger{color:#f14668}.field:not(:last-child){margin-bottom:.75rem}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]).is-hovered,.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .input:not([disabled]).is-hovered,.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]).is-hovered,.field.has-addons .control .select select:not([disabled]):hover{z-index:2}.field.has-addons .control .button:not([disabled]).is-active,.field.has-addons .control .button:not([disabled]).is-focused,.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .input:not([disabled]).is-active,.field.has-addons .control .input:not([disabled]).is-focused,.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control .select select:not([disabled]).is-active,.field.has-addons .control .select select:not([disabled]).is-focused,.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select:not([disabled]):focus{z-index:3}.field.has-addons .control .button:not([disabled]).is-active:hover,.field.has-addons .control .button:not([disabled]).is-focused:hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .input:not([disabled]).is-active:hover,.field.has-addons .control .input:not([disabled]).is-focused:hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control .select select:not([disabled]).is-active:hover,.field.has-addons .control .select select:not([disabled]).is-focused:hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select:not([disabled]):focus:hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.has-addons.has-addons-centered{justify-content:center}.field.has-addons.has-addons-right{justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}.field.is-grouped{display:flex;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{justify-content:center}.field.is-grouped.is-grouped-right{justify-content:flex-end}.field.is-grouped.is-grouped-multiline{flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width:769px),print{.field.is-horizontal{display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width:768px){.field-label{margin-bottom:.5rem}}@media screen and (min-width:769px),print{.field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small{font-size:.75rem;padding-top:.375em}.field-label.is-normal{padding-top:.375em}.field-label.is-medium{font-size:1.25rem;padding-top:.375em}.field-label.is-large{font-size:1.5rem;padding-top:.375em}}.field-body .field .field{margin-bottom:0}@media screen and (min-width:769px),print{.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-right:.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}.control.has-icons-left .input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:#4a4a4a}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:2.5em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right .select select{padding-right:2.5em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{position:absolute!important;right:.625em;top:.625em;z-index:4}.control.is-loading.is-small:after{font-size:.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{align-items:center;color:#3273dc;display:flex;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#363636;cursor:default;pointer-events:none}.breadcrumb li+li::before{color:#b5b5b5;content:"\0002f"}.breadcrumb ol,.breadcrumb ul{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:.5em}.breadcrumb .icon:last-child{margin-left:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{justify-content:flex-end}.breadcrumb.is-small{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li+li::before{content:"\02192"}.breadcrumb.has-bullet-separator li+li::before{content:"\02022"}.breadcrumb.has-dot-separator li+li::before{content:"\000b7"}.breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}.card{background-color:#fff;border-radius:.25rem;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);color:#4a4a4a;max-width:100%;position:relative}.card-content:first-child,.card-footer:first-child,.card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-content:last-child,.card-footer:last-child,.card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-header{background-color:transparent;align-items:stretch;box-shadow:0 .125em .25em rgba(10,10,10,.1);display:flex}.card-header-title{align-items:center;color:#363636;display:flex;flex-grow:1;font-weight:700;padding:.75rem 1rem}.card-header-title.is-centered{justify-content:center}.card-header-icon{align-items:center;cursor:pointer;display:flex;justify-content:center;padding:.75rem 1rem}.card-image{display:block;position:relative}.card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-content{background-color:transparent;padding:1.5rem}.card-footer{background-color:transparent;border-top:1px solid #ededed;align-items:stretch;display:flex}.card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}.card-footer-item:not(:last-child){border-right:1px solid #ededed}.card .media:not(:last-child){margin-bottom:1.5rem}.dropdown{display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}.dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}.dropdown-content{background-color:#fff;border-radius:4px;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);padding-bottom:.5rem;padding-top:.5rem}.dropdown-item{color:#4a4a4a;display:block;font-size:.875rem;line-height:1.5;padding:.375rem 1rem;position:relative}a.dropdown-item,button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}a.dropdown-item:hover,button.dropdown-item:hover{background-color:#f5f5f5;color:#0a0a0a}a.dropdown-item.is-active,button.dropdown-item.is-active{background-color:#3273dc;color:#fff}.dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:.5rem 0}.level{align-items:center;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}.level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width:769px),print{.level{display:flex}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .subtitle,.level-item .title{margin-bottom:0}@media screen and (max-width:768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width:769px),print{.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{align-items:center;justify-content:flex-start}@media screen and (max-width:768px){.level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width:769px),print{.level-left{display:flex}}.level-right{align-items:center;justify-content:flex-end}@media screen and (min-width:769px),print{.level-right{display:flex}}.media{align-items:flex-start;display:flex;text-align:inherit}.media .content:not(:last-child){margin-bottom:.75rem}.media .media{border-top:1px solid rgba(219,219,219,.5);display:flex;padding-top:.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:.5rem}.media .media .media{padding-top:.5rem}.media .media .media+.media{margin-top:.5rem}.media+.media{border-top:1px solid rgba(219,219,219,.5);margin-top:1rem;padding-top:1rem}.media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}.media-left,.media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width:768px){.media-content{overflow-x:auto}}.menu{font-size:1rem}.menu.is-small{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#4a4a4a;display:block;padding:.5em .75em}.menu-list a:hover{background-color:#f5f5f5;color:#363636}.menu-list a.is-active{background-color:#3273dc;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#7a7a7a;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.message.is-light .message-body{border-color:#f5f5f5}.message.is-dark{background-color:#fafafa}.message.is-dark .message-header{background-color:#363636;color:#fff}.message.is-dark .message-body{border-color:#363636}.message.is-primary{background-color:#ebfffc}.message.is-primary .message-header{background-color:#00d1b2;color:#fff}.message.is-primary .message-body{border-color:#00d1b2;color:#00947e}.message.is-link{background-color:#eef3fc}.message.is-link .message-header{background-color:#3273dc;color:#fff}.message.is-link .message-body{border-color:#3273dc;color:#2160c4}.message.is-info{background-color:#eef6fc}.message.is-info .message-header{background-color:#3298dc;color:#fff}.message.is-info .message-body{border-color:#3298dc;color:#1d72aa}.message.is-success{background-color:#effaf3}.message.is-success .message-header{background-color:#48c774;color:#fff}.message.is-success .message-body{border-color:#48c774;color:#257942}.message.is-warning{background-color:#fffbeb}.message.is-warning .message-header{background-color:#ffdd57;color:rgba(0,0,0,.7)}.message.is-warning .message-body{border-color:#ffdd57;color:#947600}.message.is-danger{background-color:#feecf0}.message.is-danger .message-header{background-color:#f14668;color:#fff}.message.is-danger .message-body{border-color:#f14668;color:#cc0f35}.message-header{align-items:center;background-color:#4a4a4a;border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:.75em 1em;position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:#dbdbdb;border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:#4a4a4a;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:transparent}.modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}.modal.is-active{display:flex}.modal-background{background-color:rgba(10,10,10,.86)}.modal-card,.modal-content{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width:769px){.modal-card,.modal-content{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{background:0 0;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}.modal-card-foot,.modal-card-head{align-items:center;background-color:#f5f5f5;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:6px;border-top-right-radius:6px}.modal-card-title{color:#363636;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:.5em}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link,.navbar.is-white .navbar-brand>.navbar-item{color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link.is-active,.navbar.is-white .navbar-brand .navbar-link:focus,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand>a.navbar-item:focus,.navbar.is-white .navbar-brand>a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width:1024px){.navbar.is-white .navbar-end .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-start>.navbar-item{color:#0a0a0a}.navbar.is-white .navbar-end .navbar-link.is-active,.navbar.is-white .navbar-end .navbar-link:focus,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end>a.navbar-item:focus,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-start .navbar-link:focus,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start>a.navbar-item:focus,.navbar.is-white .navbar-start>a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-end .navbar-link::after,.navbar.is-white .navbar-start .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand .navbar-link,.navbar.is-black .navbar-brand>.navbar-item{color:#fff}.navbar.is-black .navbar-brand .navbar-link.is-active,.navbar.is-black .navbar-brand .navbar-link:focus,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand>a.navbar-item:focus,.navbar.is-black .navbar-brand>a.navbar-item:hover{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-black .navbar-end .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-start>.navbar-item{color:#fff}.navbar.is-black .navbar-end .navbar-link.is-active,.navbar.is-black .navbar-end .navbar-link:focus,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end>a.navbar-item:focus,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-start .navbar-link:focus,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start>a.navbar-item:focus,.navbar.is-black .navbar-start>a.navbar-item:hover{background-color:#000;color:#fff}.navbar.is-black .navbar-end .navbar-link::after,.navbar.is-black .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link,.navbar.is-light .navbar-brand>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width:1024px){.navbar.is-light .navbar-end .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-start>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-end .navbar-link.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-end .navbar-link::after,.navbar.is-light .navbar-start .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,.7)}}.navbar.is-dark{background-color:#363636;color:#fff}.navbar.is-dark .navbar-brand .navbar-link,.navbar.is-dark .navbar-brand>.navbar-item{color:#fff}.navbar.is-dark .navbar-brand .navbar-link.is-active,.navbar.is-dark .navbar-brand .navbar-link:focus,.navbar.is-dark .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand>a.navbar-item:focus,.navbar.is-dark .navbar-brand>a.navbar-item:hover{background-color:#292929;color:#fff}.navbar.is-dark .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-dark .navbar-end .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.navbar.is-dark .navbar-start>.navbar-item{color:#fff}.navbar.is-dark .navbar-end .navbar-link.is-active,.navbar.is-dark .navbar-end .navbar-link:focus,.navbar.is-dark .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end>a.navbar-item:focus,.navbar.is-dark .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-start .navbar-link:focus,.navbar.is-dark .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start>a.navbar-item:focus,.navbar.is-dark .navbar-start>a.navbar-item:hover{background-color:#292929;color:#fff}.navbar.is-dark .navbar-end .navbar-link::after,.navbar.is-dark .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link{background-color:#292929;color:#fff}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#fff}}.navbar.is-primary{background-color:#00d1b2;color:#fff}.navbar.is-primary .navbar-brand .navbar-link,.navbar.is-primary .navbar-brand>.navbar-item{color:#fff}.navbar.is-primary .navbar-brand .navbar-link.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-primary .navbar-end .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.navbar.is-primary .navbar-start>.navbar-item{color:#fff}.navbar.is-primary .navbar-end .navbar-link.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-end .navbar-link::after,.navbar.is-primary .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active{background-color:#00d1b2;color:#fff}}.navbar.is-link{background-color:#3273dc;color:#fff}.navbar.is-link .navbar-brand .navbar-link,.navbar.is-link .navbar-brand>.navbar-item{color:#fff}.navbar.is-link .navbar-brand .navbar-link.is-active,.navbar.is-link .navbar-brand .navbar-link:focus,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover{background-color:#2366d1;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-link .navbar-end .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-start>.navbar-item{color:#fff}.navbar.is-link .navbar-end .navbar-link.is-active,.navbar.is-link .navbar-end .navbar-link:focus,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-start .navbar-link:focus,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover{background-color:#2366d1;color:#fff}.navbar.is-link .navbar-end .navbar-link::after,.navbar.is-link .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link{background-color:#2366d1;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#3273dc;color:#fff}}.navbar.is-info{background-color:#3298dc;color:#fff}.navbar.is-info .navbar-brand .navbar-link,.navbar.is-info .navbar-brand>.navbar-item{color:#fff}.navbar.is-info .navbar-brand .navbar-link.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover{background-color:#238cd1;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-info .navbar-end .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-start>.navbar-item{color:#fff}.navbar.is-info .navbar-end .navbar-link.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover{background-color:#238cd1;color:#fff}.navbar.is-info .navbar-end .navbar-link::after,.navbar.is-info .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link{background-color:#238cd1;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#3298dc;color:#fff}}.navbar.is-success{background-color:#48c774;color:#fff}.navbar.is-success .navbar-brand .navbar-link,.navbar.is-success .navbar-brand>.navbar-item{color:#fff}.navbar.is-success .navbar-brand .navbar-link.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover{background-color:#3abb67;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-success .navbar-end .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-start>.navbar-item{color:#fff}.navbar.is-success .navbar-end .navbar-link.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover{background-color:#3abb67;color:#fff}.navbar.is-success .navbar-end .navbar-link::after,.navbar.is-success .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link{background-color:#3abb67;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#48c774;color:#fff}}.navbar.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link,.navbar.is-warning .navbar-brand>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover{background-color:#ffd83d;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width:1024px){.navbar.is-warning .navbar-end .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-start>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-end .navbar-link.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover{background-color:#ffd83d;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-end .navbar-link::after,.navbar.is-warning .navbar-start .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link{background-color:#ffd83d;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffdd57;color:rgba(0,0,0,.7)}}.navbar.is-danger{background-color:#f14668;color:#fff}.navbar.is-danger .navbar-brand .navbar-link,.navbar.is-danger .navbar-brand>.navbar-item{color:#fff}.navbar.is-danger .navbar-brand .navbar-link.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-danger .navbar-end .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-start>.navbar-item{color:#fff}.navbar.is-danger .navbar-end .navbar-link.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-end .navbar-link::after,.navbar.is-danger .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#f14668;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #f5f5f5}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #f5f5f5}.navbar.is-fixed-top{top:0}body.has-navbar-fixed-top,html.has-navbar-fixed-top{padding-top:3.25rem}body.has-navbar-fixed-bottom,html.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{color:#4a4a4a;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color,opacity,transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:nth-child(1){top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,.05)}.navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#4a4a4a;display:block;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-.25rem;margin-right:-.25rem}.navbar-link,a.navbar-item{cursor:pointer}.navbar-link.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,a.navbar-item.is-active,a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover{background-color:#fafafa;color:#3273dc}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:transparent;border-bottom-color:#3273dc}.navbar-item.is-tab.is-active{background-color:transparent;border-bottom-color:#3273dc;border-bottom-style:solid;border-bottom-width:3px;color:#3273dc;padding-bottom:calc(.5rem - 3px)}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless)::after{border-color:#3273dc;margin-top:-.375em;right:1.125em}.navbar-dropdown{font-size:.875rem;padding-bottom:.5rem;padding-top:.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#f5f5f5;border:none;display:none;height:2px;margin:.5rem 0}@media screen and (max-width:1023px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link::after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px rgba(10,10,10,.1);padding:.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}body.has-navbar-fixed-top-touch,html.has-navbar-fixed-top-touch{padding-top:3.25rem}body.has-navbar-fixed-bottom-touch,html.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width:1024px){.navbar,.navbar-end,.navbar-menu,.navbar-start{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-spaced{padding:1rem 2rem}.navbar.is-spaced .navbar-end,.navbar.is-spaced .navbar-start{align-items:center}.navbar.is-spaced .navbar-link,.navbar.is-spaced a.navbar-item{border-radius:4px}.navbar.is-transparent .navbar-link.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover{background-color:transparent!important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent!important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#3273dc}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(.25em,-.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:2px solid #dbdbdb;border-radius:6px 6px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid #dbdbdb;box-shadow:0 8px 8px rgba(10,10,10,.1);display:none;font-size:.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#3273dc}.navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-dropdown{border-radius:6px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity,transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.container>.navbar .navbar-brand,.navbar>.container .navbar-brand{margin-left:-.75rem}.container>.navbar .navbar-menu,.navbar>.container .navbar-menu{margin-right:-.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-desktop{top:0}body.has-navbar-fixed-top-desktop,html.has-navbar-fixed-top-desktop{padding-top:3.25rem}body.has-navbar-fixed-bottom-desktop,html.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}body.has-spaced-navbar-fixed-top,html.has-spaced-navbar-fixed-top{padding-top:5.25rem}body.has-spaced-navbar-fixed-bottom,html.has-spaced-navbar-fixed-bottom{padding-bottom:5.25rem}.navbar-link.is-active,a.navbar-item.is-active{color:#0a0a0a}.navbar-link.is-active:not(:focus):not(:hover),a.navbar-item.is-active:not(:focus):not(:hover){background-color:transparent}.navbar-item.has-dropdown.is-active .navbar-link,.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link{background-color:#fafafa}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 3.25rem)}.pagination{font-size:1rem;margin:-.25rem}.pagination.is-small{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-next,.pagination.is-rounded .pagination-previous{padding-left:1em;padding-right:1em;border-radius:290486px}.pagination.is-rounded .pagination-link{border-radius:290486px}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}.pagination-link,.pagination-next,.pagination-previous{border-color:#dbdbdb;color:#363636;min-width:2.5em}.pagination-link:hover,.pagination-next:hover,.pagination-previous:hover{border-color:#b5b5b5;color:#363636}.pagination-link:focus,.pagination-next:focus,.pagination-previous:focus{border-color:#3273dc}.pagination-link:active,.pagination-next:active,.pagination-previous:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2)}.pagination-link[disabled],.pagination-next[disabled],.pagination-previous[disabled]{background-color:#dbdbdb;border-color:#dbdbdb;box-shadow:none;color:#7a7a7a;opacity:.5}.pagination-next,.pagination-previous{padding-left:.75em;padding-right:.75em;white-space:nowrap}.pagination-link.is-current{background-color:#3273dc;border-color:#3273dc;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{flex-wrap:wrap}.pagination-list li{list-style:none}@media screen and (max-width:768px){.pagination{flex-wrap:wrap}.pagination-next,.pagination-previous{flex-grow:1;flex-shrink:1}.pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width:769px),print{.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-previous{order:2}.pagination-next{order:3}.pagination{justify-content:space-between}.pagination.is-centered .pagination-previous{order:1}.pagination.is-centered .pagination-list{justify-content:center;order:2}.pagination.is-centered .pagination-next{order:3}.pagination.is-right .pagination-previous{order:1}.pagination.is-right .pagination-next{order:2}.pagination.is-right .pagination-list{justify-content:flex-end;order:3}}.panel{border-radius:6px;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}.panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}.panel.is-white .panel-block.is-active .panel-icon{color:#fff}.panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}.panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}.panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}.panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}.panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}.panel.is-dark .panel-heading{background-color:#363636;color:#fff}.panel.is-dark .panel-tabs a.is-active{border-bottom-color:#363636}.panel.is-dark .panel-block.is-active .panel-icon{color:#363636}.panel.is-primary .panel-heading{background-color:#00d1b2;color:#fff}.panel.is-primary .panel-tabs a.is-active{border-bottom-color:#00d1b2}.panel.is-primary .panel-block.is-active .panel-icon{color:#00d1b2}.panel.is-link .panel-heading{background-color:#3273dc;color:#fff}.panel.is-link .panel-tabs a.is-active{border-bottom-color:#3273dc}.panel.is-link .panel-block.is-active .panel-icon{color:#3273dc}.panel.is-info .panel-heading{background-color:#3298dc;color:#fff}.panel.is-info .panel-tabs a.is-active{border-bottom-color:#3298dc}.panel.is-info .panel-block.is-active .panel-icon{color:#3298dc}.panel.is-success .panel-heading{background-color:#48c774;color:#fff}.panel.is-success .panel-tabs a.is-active{border-bottom-color:#48c774}.panel.is-success .panel-block.is-active .panel-icon{color:#48c774}.panel.is-warning .panel-heading{background-color:#ffdd57;color:rgba(0,0,0,.7)}.panel.is-warning .panel-tabs a.is-active{border-bottom-color:#ffdd57}.panel.is-warning .panel-block.is-active .panel-icon{color:#ffdd57}.panel.is-danger .panel-heading{background-color:#f14668;color:#fff}.panel.is-danger .panel-tabs a.is-active{border-bottom-color:#f14668}.panel.is-danger .panel-block.is-active .panel-icon{color:#f14668}.panel-block:not(:last-child),.panel-tabs:not(:last-child){border-bottom:1px solid #ededed}.panel-heading{background-color:#ededed;border-radius:6px 6px 0 0;color:#363636;font-size:1.25em;font-weight:700;line-height:1.25;padding:.75em 1em}.panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#4a4a4a}.panel-list a:hover{color:#3273dc}.panel-block{align-items:center;color:#363636;display:flex;justify-content:flex-start;padding:.5em .75em}.panel-block input[type=checkbox]{margin-right:.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{flex-wrap:wrap}.panel-block.is-active{border-left-color:#3273dc;color:#363636}.panel-block.is-active .panel-icon{color:#3273dc}.panel-block:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#7a7a7a;margin-right:.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;color:#4a4a4a;display:flex;justify-content:center;margin-bottom:-1px;padding:.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#363636;color:#363636}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#3273dc;color:#3273dc}.tabs ul{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-left{padding-right:.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:.75em;padding-right:.75em}.tabs ul.is-right{justify-content:flex-end;padding-left:.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-right ul{justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:transparent!important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-toggle a{border-color:#dbdbdb;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabs.is-toggle li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.tabs.is-toggle li.is-active a{background-color:#3273dc;border-color:#3273dc;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:290486px;border-top-left-radius:290486px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:290486px;border-top-right-radius:290486px;padding-right:1.25em}.tabs.is-small{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{flex:none;width:unset}.columns.is-mobile>.column.is-full{flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{flex:none;width:50%}.columns.is-mobile>.column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>.column.is-0{flex:none;width:0%}.columns.is-mobile>.column.is-offset-0{margin-left:0}.columns.is-mobile>.column.is-1{flex:none;width:8.33333%}.columns.is-mobile>.column.is-offset-1{margin-left:8.33333%}.columns.is-mobile>.column.is-2{flex:none;width:16.66667%}.columns.is-mobile>.column.is-offset-2{margin-left:16.66667%}.columns.is-mobile>.column.is-3{flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{flex:none;width:33.33333%}.columns.is-mobile>.column.is-offset-4{margin-left:33.33333%}.columns.is-mobile>.column.is-5{flex:none;width:41.66667%}.columns.is-mobile>.column.is-offset-5{margin-left:41.66667%}.columns.is-mobile>.column.is-6{flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{flex:none;width:58.33333%}.columns.is-mobile>.column.is-offset-7{margin-left:58.33333%}.columns.is-mobile>.column.is-8{flex:none;width:66.66667%}.columns.is-mobile>.column.is-offset-8{margin-left:66.66667%}.columns.is-mobile>.column.is-9{flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{flex:none;width:83.33333%}.columns.is-mobile>.column.is-offset-10{margin-left:83.33333%}.columns.is-mobile>.column.is-11{flex:none;width:91.66667%}.columns.is-mobile>.column.is-offset-11{margin-left:91.66667%}.columns.is-mobile>.column.is-12{flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width:768px){.column.is-narrow-mobile{flex:none;width:unset}.column.is-full-mobile{flex:none;width:100%}.column.is-three-quarters-mobile{flex:none;width:75%}.column.is-two-thirds-mobile{flex:none;width:66.6666%}.column.is-half-mobile{flex:none;width:50%}.column.is-one-third-mobile{flex:none;width:33.3333%}.column.is-one-quarter-mobile{flex:none;width:25%}.column.is-one-fifth-mobile{flex:none;width:20%}.column.is-two-fifths-mobile{flex:none;width:40%}.column.is-three-fifths-mobile{flex:none;width:60%}.column.is-four-fifths-mobile{flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-0-mobile{flex:none;width:0%}.column.is-offset-0-mobile{margin-left:0}.column.is-1-mobile{flex:none;width:8.33333%}.column.is-offset-1-mobile{margin-left:8.33333%}.column.is-2-mobile{flex:none;width:16.66667%}.column.is-offset-2-mobile{margin-left:16.66667%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{flex:none;width:33.33333%}.column.is-offset-4-mobile{margin-left:33.33333%}.column.is-5-mobile{flex:none;width:41.66667%}.column.is-offset-5-mobile{margin-left:41.66667%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{flex:none;width:58.33333%}.column.is-offset-7-mobile{margin-left:58.33333%}.column.is-8-mobile{flex:none;width:66.66667%}.column.is-offset-8-mobile{margin-left:66.66667%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{flex:none;width:83.33333%}.column.is-offset-10-mobile{margin-left:83.33333%}.column.is-11-mobile{flex:none;width:91.66667%}.column.is-offset-11-mobile{margin-left:91.66667%}.column.is-12-mobile{flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width:769px),print{.column.is-narrow,.column.is-narrow-tablet{flex:none;width:unset}.column.is-full,.column.is-full-tablet{flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-0,.column.is-0-tablet{flex:none;width:0%}.column.is-offset-0,.column.is-offset-0-tablet{margin-left:0}.column.is-1,.column.is-1-tablet{flex:none;width:8.33333%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.33333%}.column.is-2,.column.is-2-tablet{flex:none;width:16.66667%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.66667%}.column.is-3,.column.is-3-tablet{flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{flex:none;width:33.33333%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.33333%}.column.is-5,.column.is-5-tablet{flex:none;width:41.66667%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.66667%}.column.is-6,.column.is-6-tablet{flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{flex:none;width:58.33333%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.33333%}.column.is-8,.column.is-8-tablet{flex:none;width:66.66667%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.66667%}.column.is-9,.column.is-9-tablet{flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{flex:none;width:83.33333%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.33333%}.column.is-11,.column.is-11-tablet{flex:none;width:91.66667%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.66667%}.column.is-12,.column.is-12-tablet{flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width:1023px){.column.is-narrow-touch{flex:none;width:unset}.column.is-full-touch{flex:none;width:100%}.column.is-three-quarters-touch{flex:none;width:75%}.column.is-two-thirds-touch{flex:none;width:66.6666%}.column.is-half-touch{flex:none;width:50%}.column.is-one-third-touch{flex:none;width:33.3333%}.column.is-one-quarter-touch{flex:none;width:25%}.column.is-one-fifth-touch{flex:none;width:20%}.column.is-two-fifths-touch{flex:none;width:40%}.column.is-three-fifths-touch{flex:none;width:60%}.column.is-four-fifths-touch{flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-0-touch{flex:none;width:0%}.column.is-offset-0-touch{margin-left:0}.column.is-1-touch{flex:none;width:8.33333%}.column.is-offset-1-touch{margin-left:8.33333%}.column.is-2-touch{flex:none;width:16.66667%}.column.is-offset-2-touch{margin-left:16.66667%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{flex:none;width:33.33333%}.column.is-offset-4-touch{margin-left:33.33333%}.column.is-5-touch{flex:none;width:41.66667%}.column.is-offset-5-touch{margin-left:41.66667%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{flex:none;width:58.33333%}.column.is-offset-7-touch{margin-left:58.33333%}.column.is-8-touch{flex:none;width:66.66667%}.column.is-offset-8-touch{margin-left:66.66667%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{flex:none;width:83.33333%}.column.is-offset-10-touch{margin-left:83.33333%}.column.is-11-touch{flex:none;width:91.66667%}.column.is-offset-11-touch{margin-left:91.66667%}.column.is-12-touch{flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width:1024px){.column.is-narrow-desktop{flex:none;width:unset}.column.is-full-desktop{flex:none;width:100%}.column.is-three-quarters-desktop{flex:none;width:75%}.column.is-two-thirds-desktop{flex:none;width:66.6666%}.column.is-half-desktop{flex:none;width:50%}.column.is-one-third-desktop{flex:none;width:33.3333%}.column.is-one-quarter-desktop{flex:none;width:25%}.column.is-one-fifth-desktop{flex:none;width:20%}.column.is-two-fifths-desktop{flex:none;width:40%}.column.is-three-fifths-desktop{flex:none;width:60%}.column.is-four-fifths-desktop{flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-0-desktop{flex:none;width:0%}.column.is-offset-0-desktop{margin-left:0}.column.is-1-desktop{flex:none;width:8.33333%}.column.is-offset-1-desktop{margin-left:8.33333%}.column.is-2-desktop{flex:none;width:16.66667%}.column.is-offset-2-desktop{margin-left:16.66667%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{flex:none;width:33.33333%}.column.is-offset-4-desktop{margin-left:33.33333%}.column.is-5-desktop{flex:none;width:41.66667%}.column.is-offset-5-desktop{margin-left:41.66667%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{flex:none;width:58.33333%}.column.is-offset-7-desktop{margin-left:58.33333%}.column.is-8-desktop{flex:none;width:66.66667%}.column.is-offset-8-desktop{margin-left:66.66667%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{flex:none;width:83.33333%}.column.is-offset-10-desktop{margin-left:83.33333%}.column.is-11-desktop{flex:none;width:91.66667%}.column.is-offset-11-desktop{margin-left:91.66667%}.column.is-12-desktop{flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width:1216px){.column.is-narrow-widescreen{flex:none;width:unset}.column.is-full-widescreen{flex:none;width:100%}.column.is-three-quarters-widescreen{flex:none;width:75%}.column.is-two-thirds-widescreen{flex:none;width:66.6666%}.column.is-half-widescreen{flex:none;width:50%}.column.is-one-third-widescreen{flex:none;width:33.3333%}.column.is-one-quarter-widescreen{flex:none;width:25%}.column.is-one-fifth-widescreen{flex:none;width:20%}.column.is-two-fifths-widescreen{flex:none;width:40%}.column.is-three-fifths-widescreen{flex:none;width:60%}.column.is-four-fifths-widescreen{flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-0-widescreen{flex:none;width:0%}.column.is-offset-0-widescreen{margin-left:0}.column.is-1-widescreen{flex:none;width:8.33333%}.column.is-offset-1-widescreen{margin-left:8.33333%}.column.is-2-widescreen{flex:none;width:16.66667%}.column.is-offset-2-widescreen{margin-left:16.66667%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{flex:none;width:33.33333%}.column.is-offset-4-widescreen{margin-left:33.33333%}.column.is-5-widescreen{flex:none;width:41.66667%}.column.is-offset-5-widescreen{margin-left:41.66667%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{flex:none;width:58.33333%}.column.is-offset-7-widescreen{margin-left:58.33333%}.column.is-8-widescreen{flex:none;width:66.66667%}.column.is-offset-8-widescreen{margin-left:66.66667%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{flex:none;width:83.33333%}.column.is-offset-10-widescreen{margin-left:83.33333%}.column.is-11-widescreen{flex:none;width:91.66667%}.column.is-offset-11-widescreen{margin-left:91.66667%}.column.is-12-widescreen{flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width:1408px){.column.is-narrow-fullhd{flex:none;width:unset}.column.is-full-fullhd{flex:none;width:100%}.column.is-three-quarters-fullhd{flex:none;width:75%}.column.is-two-thirds-fullhd{flex:none;width:66.6666%}.column.is-half-fullhd{flex:none;width:50%}.column.is-one-third-fullhd{flex:none;width:33.3333%}.column.is-one-quarter-fullhd{flex:none;width:25%}.column.is-one-fifth-fullhd{flex:none;width:20%}.column.is-two-fifths-fullhd{flex:none;width:40%}.column.is-three-fifths-fullhd{flex:none;width:60%}.column.is-four-fifths-fullhd{flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-0-fullhd{flex:none;width:0%}.column.is-offset-0-fullhd{margin-left:0}.column.is-1-fullhd{flex:none;width:8.33333%}.column.is-offset-1-fullhd{margin-left:8.33333%}.column.is-2-fullhd{flex:none;width:16.66667%}.column.is-offset-2-fullhd{margin-left:16.66667%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{flex:none;width:33.33333%}.column.is-offset-4-fullhd{margin-left:33.33333%}.column.is-5-fullhd{flex:none;width:41.66667%}.column.is-offset-5-fullhd{margin-left:41.66667%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{flex:none;width:58.33333%}.column.is-offset-7-fullhd{margin-left:58.33333%}.column.is-8-fullhd{flex:none;width:66.66667%}.column.is-offset-8-fullhd{margin-left:66.66667%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{flex:none;width:83.33333%}.column.is-offset-10-fullhd{margin-left:83.33333%}.column.is-11-fullhd{flex:none;width:91.66667%}.column.is-offset-11-fullhd{margin-left:91.66667%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}.columns.is-centered{justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0!important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:flex}.columns.is-multiline{flex-wrap:wrap}.columns.is-vcentered{align-items:center}@media screen and (min-width:769px),print{.columns:not(.is-desktop){display:flex}}@media screen and (min-width:1024px){.columns.is-desktop{display:flex}}.columns.is-variable{--columnGap:0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}.columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap:0rem}@media screen and (max-width:768px){.columns.is-variable.is-0-mobile{--columnGap:0rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-0-tablet{--columnGap:0rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-0-tablet-only{--columnGap:0rem}}@media screen and (max-width:1023px){.columns.is-variable.is-0-touch{--columnGap:0rem}}@media screen and (min-width:1024px){.columns.is-variable.is-0-desktop{--columnGap:0rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-0-desktop-only{--columnGap:0rem}}@media screen and (min-width:1216px){.columns.is-variable.is-0-widescreen{--columnGap:0rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-0-widescreen-only{--columnGap:0rem}}@media screen and (min-width:1408px){.columns.is-variable.is-0-fullhd{--columnGap:0rem}}.columns.is-variable.is-1{--columnGap:0.25rem}@media screen and (max-width:768px){.columns.is-variable.is-1-mobile{--columnGap:0.25rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-1-tablet{--columnGap:0.25rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-1-tablet-only{--columnGap:0.25rem}}@media screen and (max-width:1023px){.columns.is-variable.is-1-touch{--columnGap:0.25rem}}@media screen and (min-width:1024px){.columns.is-variable.is-1-desktop{--columnGap:0.25rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-1-desktop-only{--columnGap:0.25rem}}@media screen and (min-width:1216px){.columns.is-variable.is-1-widescreen{--columnGap:0.25rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-1-widescreen-only{--columnGap:0.25rem}}@media screen and (min-width:1408px){.columns.is-variable.is-1-fullhd{--columnGap:0.25rem}}.columns.is-variable.is-2{--columnGap:0.5rem}@media screen and (max-width:768px){.columns.is-variable.is-2-mobile{--columnGap:0.5rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-2-tablet{--columnGap:0.5rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-2-tablet-only{--columnGap:0.5rem}}@media screen and (max-width:1023px){.columns.is-variable.is-2-touch{--columnGap:0.5rem}}@media screen and (min-width:1024px){.columns.is-variable.is-2-desktop{--columnGap:0.5rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-2-desktop-only{--columnGap:0.5rem}}@media screen and (min-width:1216px){.columns.is-variable.is-2-widescreen{--columnGap:0.5rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-2-widescreen-only{--columnGap:0.5rem}}@media screen and (min-width:1408px){.columns.is-variable.is-2-fullhd{--columnGap:0.5rem}}.columns.is-variable.is-3{--columnGap:0.75rem}@media screen and (max-width:768px){.columns.is-variable.is-3-mobile{--columnGap:0.75rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-3-tablet{--columnGap:0.75rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-3-tablet-only{--columnGap:0.75rem}}@media screen and (max-width:1023px){.columns.is-variable.is-3-touch{--columnGap:0.75rem}}@media screen and (min-width:1024px){.columns.is-variable.is-3-desktop{--columnGap:0.75rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-3-desktop-only{--columnGap:0.75rem}}@media screen and (min-width:1216px){.columns.is-variable.is-3-widescreen{--columnGap:0.75rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-3-widescreen-only{--columnGap:0.75rem}}@media screen and (min-width:1408px){.columns.is-variable.is-3-fullhd{--columnGap:0.75rem}}.columns.is-variable.is-4{--columnGap:1rem}@media screen and (max-width:768px){.columns.is-variable.is-4-mobile{--columnGap:1rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-4-tablet{--columnGap:1rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-4-tablet-only{--columnGap:1rem}}@media screen and (max-width:1023px){.columns.is-variable.is-4-touch{--columnGap:1rem}}@media screen and (min-width:1024px){.columns.is-variable.is-4-desktop{--columnGap:1rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-4-desktop-only{--columnGap:1rem}}@media screen and (min-width:1216px){.columns.is-variable.is-4-widescreen{--columnGap:1rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-4-widescreen-only{--columnGap:1rem}}@media screen and (min-width:1408px){.columns.is-variable.is-4-fullhd{--columnGap:1rem}}.columns.is-variable.is-5{--columnGap:1.25rem}@media screen and (max-width:768px){.columns.is-variable.is-5-mobile{--columnGap:1.25rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-5-tablet{--columnGap:1.25rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-5-tablet-only{--columnGap:1.25rem}}@media screen and (max-width:1023px){.columns.is-variable.is-5-touch{--columnGap:1.25rem}}@media screen and (min-width:1024px){.columns.is-variable.is-5-desktop{--columnGap:1.25rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-5-desktop-only{--columnGap:1.25rem}}@media screen and (min-width:1216px){.columns.is-variable.is-5-widescreen{--columnGap:1.25rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-5-widescreen-only{--columnGap:1.25rem}}@media screen and (min-width:1408px){.columns.is-variable.is-5-fullhd{--columnGap:1.25rem}}.columns.is-variable.is-6{--columnGap:1.5rem}@media screen and (max-width:768px){.columns.is-variable.is-6-mobile{--columnGap:1.5rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-6-tablet{--columnGap:1.5rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-6-tablet-only{--columnGap:1.5rem}}@media screen and (max-width:1023px){.columns.is-variable.is-6-touch{--columnGap:1.5rem}}@media screen and (min-width:1024px){.columns.is-variable.is-6-desktop{--columnGap:1.5rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-6-desktop-only{--columnGap:1.5rem}}@media screen and (min-width:1216px){.columns.is-variable.is-6-widescreen{--columnGap:1.5rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-6-widescreen-only{--columnGap:1.5rem}}@media screen and (min-width:1408px){.columns.is-variable.is-6-fullhd{--columnGap:1.5rem}}.columns.is-variable.is-7{--columnGap:1.75rem}@media screen and (max-width:768px){.columns.is-variable.is-7-mobile{--columnGap:1.75rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-7-tablet{--columnGap:1.75rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-7-tablet-only{--columnGap:1.75rem}}@media screen and (max-width:1023px){.columns.is-variable.is-7-touch{--columnGap:1.75rem}}@media screen and (min-width:1024px){.columns.is-variable.is-7-desktop{--columnGap:1.75rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-7-desktop-only{--columnGap:1.75rem}}@media screen and (min-width:1216px){.columns.is-variable.is-7-widescreen{--columnGap:1.75rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-7-widescreen-only{--columnGap:1.75rem}}@media screen and (min-width:1408px){.columns.is-variable.is-7-fullhd{--columnGap:1.75rem}}.columns.is-variable.is-8{--columnGap:2rem}@media screen and (max-width:768px){.columns.is-variable.is-8-mobile{--columnGap:2rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-8-tablet{--columnGap:2rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-8-tablet-only{--columnGap:2rem}}@media screen and (max-width:1023px){.columns.is-variable.is-8-touch{--columnGap:2rem}}@media screen and (min-width:1024px){.columns.is-variable.is-8-desktop{--columnGap:2rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-8-desktop-only{--columnGap:2rem}}@media screen and (min-width:1216px){.columns.is-variable.is-8-widescreen{--columnGap:2rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-8-widescreen-only{--columnGap:2rem}}@media screen and (min-width:1408px){.columns.is-variable.is-8-fullhd{--columnGap:2rem}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:-webkit-min-content;min-height:-moz-min-content;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0!important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem!important}@media screen and (min-width:769px),print{.tile:not(.is-child){display:flex}.tile.is-1{flex:none;width:8.33333%}.tile.is-2{flex:none;width:16.66667%}.tile.is-3{flex:none;width:25%}.tile.is-4{flex:none;width:33.33333%}.tile.is-5{flex:none;width:41.66667%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.33333%}.tile.is-8{flex:none;width:66.66667%}.tile.is-9{flex:none;width:75%}.tile.is-10{flex:none;width:83.33333%}.tile.is-11{flex:none;width:91.66667%}.tile.is-12{flex:none;width:100%}}.has-text-white{color:#fff!important}a.has-text-white:focus,a.has-text-white:hover{color:#e6e6e6!important}.has-background-white{background-color:#fff!important}.has-text-black{color:#0a0a0a!important}a.has-text-black:focus,a.has-text-black:hover{color:#000!important}.has-background-black{background-color:#0a0a0a!important}.has-text-light{color:#f5f5f5!important}a.has-text-light:focus,a.has-text-light:hover{color:#dbdbdb!important}.has-background-light{background-color:#f5f5f5!important}.has-text-dark{color:#363636!important}a.has-text-dark:focus,a.has-text-dark:hover{color:#1c1c1c!important}.has-background-dark{background-color:#363636!important}.has-text-primary{color:#00d1b2!important}a.has-text-primary:focus,a.has-text-primary:hover{color:#009e86!important}.has-background-primary{background-color:#00d1b2!important}.has-text-primary-light{color:#ebfffc!important}a.has-text-primary-light:focus,a.has-text-primary-light:hover{color:#b8fff4!important}.has-background-primary-light{background-color:#ebfffc!important}.has-text-primary-dark{color:#00947e!important}a.has-text-primary-dark:focus,a.has-text-primary-dark:hover{color:#00c7a9!important}.has-background-primary-dark{background-color:#00947e!important}.has-text-link{color:#3273dc!important}a.has-text-link:focus,a.has-text-link:hover{color:#205bbc!important}.has-background-link{background-color:#3273dc!important}.has-text-link-light{color:#eef3fc!important}a.has-text-link-light:focus,a.has-text-link-light:hover{color:#c2d5f5!important}.has-background-link-light{background-color:#eef3fc!important}.has-text-link-dark{color:#2160c4!important}a.has-text-link-dark:focus,a.has-text-link-dark:hover{color:#3b79de!important}.has-background-link-dark{background-color:#2160c4!important}.has-text-info{color:#3298dc!important}a.has-text-info:focus,a.has-text-info:hover{color:#207dbc!important}.has-background-info{background-color:#3298dc!important}.has-text-info-light{color:#eef6fc!important}a.has-text-info-light:focus,a.has-text-info-light:hover{color:#c2e0f5!important}.has-background-info-light{background-color:#eef6fc!important}.has-text-info-dark{color:#1d72aa!important}a.has-text-info-dark:focus,a.has-text-info-dark:hover{color:#248fd6!important}.has-background-info-dark{background-color:#1d72aa!important}.has-text-success{color:#48c774!important}a.has-text-success:focus,a.has-text-success:hover{color:#34a85c!important}.has-background-success{background-color:#48c774!important}.has-text-success-light{color:#effaf3!important}a.has-text-success-light:focus,a.has-text-success-light:hover{color:#c8eed6!important}.has-background-success-light{background-color:#effaf3!important}.has-text-success-dark{color:#257942!important}a.has-text-success-dark:focus,a.has-text-success-dark:hover{color:#31a058!important}.has-background-success-dark{background-color:#257942!important}.has-text-warning{color:#ffdd57!important}a.has-text-warning:focus,a.has-text-warning:hover{color:#ffd324!important}.has-background-warning{background-color:#ffdd57!important}.has-text-warning-light{color:#fffbeb!important}a.has-text-warning-light:focus,a.has-text-warning-light:hover{color:#fff1b8!important}.has-background-warning-light{background-color:#fffbeb!important}.has-text-warning-dark{color:#947600!important}a.has-text-warning-dark:focus,a.has-text-warning-dark:hover{color:#c79f00!important}.has-background-warning-dark{background-color:#947600!important}.has-text-danger{color:#f14668!important}a.has-text-danger:focus,a.has-text-danger:hover{color:#ee1742!important}.has-background-danger{background-color:#f14668!important}.has-text-danger-light{color:#feecf0!important}a.has-text-danger-light:focus,a.has-text-danger-light:hover{color:#fabdc9!important}.has-background-danger-light{background-color:#feecf0!important}.has-text-danger-dark{color:#cc0f35!important}a.has-text-danger-dark:focus,a.has-text-danger-dark:hover{color:#ee2049!important}.has-background-danger-dark{background-color:#cc0f35!important}.has-text-black-bis{color:#121212!important}.has-background-black-bis{background-color:#121212!important}.has-text-black-ter{color:#242424!important}.has-background-black-ter{background-color:#242424!important}.has-text-grey-darker{color:#363636!important}.has-background-grey-darker{background-color:#363636!important}.has-text-grey-dark{color:#4a4a4a!important}.has-background-grey-dark{background-color:#4a4a4a!important}.has-text-grey{color:#7a7a7a!important}.has-background-grey{background-color:#7a7a7a!important}.has-text-grey-light{color:#b5b5b5!important}.has-background-grey-light{background-color:#b5b5b5!important}.has-text-grey-lighter{color:#dbdbdb!important}.has-background-grey-lighter{background-color:#dbdbdb!important}.has-text-white-ter{color:#f5f5f5!important}.has-background-white-ter{background-color:#f5f5f5!important}.has-text-white-bis{color:#fafafa!important}.has-background-white-bis{background-color:#fafafa!important}.is-flex-direction-row{flex-direction:row!important}.is-flex-direction-row-reverse{flex-direction:row-reverse!important}.is-flex-direction-column{flex-direction:column!important}.is-flex-direction-column-reverse{flex-direction:column-reverse!important}.is-flex-wrap-nowrap{flex-wrap:nowrap!important}.is-flex-wrap-wrap{flex-wrap:wrap!important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse!important}.is-justify-content-flex-start{justify-content:flex-start!important}.is-justify-content-flex-end{justify-content:flex-end!important}.is-justify-content-center{justify-content:center!important}.is-justify-content-space-between{justify-content:space-between!important}.is-justify-content-space-around{justify-content:space-around!important}.is-justify-content-space-evenly{justify-content:space-evenly!important}.is-justify-content-start{justify-content:start!important}.is-justify-content-end{justify-content:end!important}.is-justify-content-left{justify-content:left!important}.is-justify-content-right{justify-content:right!important}.is-align-content-flex-start{align-content:flex-start!important}.is-align-content-flex-end{align-content:flex-end!important}.is-align-content-center{align-content:center!important}.is-align-content-space-between{align-content:space-between!important}.is-align-content-space-around{align-content:space-around!important}.is-align-content-space-evenly{align-content:space-evenly!important}.is-align-content-stretch{align-content:stretch!important}.is-align-content-start{align-content:start!important}.is-align-content-end{align-content:end!important}.is-align-content-baseline{align-content:baseline!important}.is-align-items-stretch{align-items:stretch!important}.is-align-items-flex-start{align-items:flex-start!important}.is-align-items-flex-end{align-items:flex-end!important}.is-align-items-center{align-items:center!important}.is-align-items-baseline{align-items:baseline!important}.is-align-items-start{align-items:start!important}.is-align-items-end{align-items:end!important}.is-align-items-self-start{align-items:self-start!important}.is-align-items-self-end{align-items:self-end!important}.is-align-self-auto{align-self:auto!important}.is-align-self-flex-start{align-self:flex-start!important}.is-align-self-flex-end{align-self:flex-end!important}.is-align-self-center{align-self:center!important}.is-align-self-baseline{align-self:baseline!important}.is-align-self-stretch{align-self:stretch!important}.is-flex-grow-0{flex-grow:0!important}.is-flex-grow-1{flex-grow:1!important}.is-flex-grow-2{flex-grow:2!important}.is-flex-grow-3{flex-grow:3!important}.is-flex-grow-4{flex-grow:4!important}.is-flex-grow-5{flex-grow:5!important}.is-flex-shrink-0{flex-shrink:0!important}.is-flex-shrink-1{flex-shrink:1!important}.is-flex-shrink-2{flex-shrink:2!important}.is-flex-shrink-3{flex-shrink:3!important}.is-flex-shrink-4{flex-shrink:4!important}.is-flex-shrink-5{flex-shrink:5!important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left!important}.is-pulled-right{float:right!important}.is-radiusless{border-radius:0!important}.is-shadowless{box-shadow:none!important}.is-clickable{cursor:pointer!important;pointer-events:all!important}.is-clipped{overflow:hidden!important}.is-relative{position:relative!important}.is-marginless{margin:0!important}.is-paddingless{padding:0!important}.m-0{margin:0!important}.mt-0{margin-top:0!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mx-0{margin-left:0!important;margin-right:0!important}.my-0{margin-top:0!important;margin-bottom:0!important}.m-1{margin:.25rem!important}.mt-1{margin-top:.25rem!important}.mr-1{margin-right:.25rem!important}.mb-1{margin-bottom:.25rem!important}.ml-1{margin-left:.25rem!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-2{margin:.5rem!important}.mt-2{margin-top:.5rem!important}.mr-2{margin-right:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2{margin-left:.5rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-3{margin:.75rem!important}.mt-3{margin-top:.75rem!important}.mr-3{margin-right:.75rem!important}.mb-3{margin-bottom:.75rem!important}.ml-3{margin-left:.75rem!important}.mx-3{margin-left:.75rem!important;margin-right:.75rem!important}.my-3{margin-top:.75rem!important;margin-bottom:.75rem!important}.m-4{margin:1rem!important}.mt-4{margin-top:1rem!important}.mr-4{margin-right:1rem!important}.mb-4{margin-bottom:1rem!important}.ml-4{margin-left:1rem!important}.mx-4{margin-left:1rem!important;margin-right:1rem!important}.my-4{margin-top:1rem!important;margin-bottom:1rem!important}.m-5{margin:1.5rem!important}.mt-5{margin-top:1.5rem!important}.mr-5{margin-right:1.5rem!important}.mb-5{margin-bottom:1.5rem!important}.ml-5{margin-left:1.5rem!important}.mx-5{margin-left:1.5rem!important;margin-right:1.5rem!important}.my-5{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-6{margin:3rem!important}.mt-6{margin-top:3rem!important}.mr-6{margin-right:3rem!important}.mb-6{margin-bottom:3rem!important}.ml-6{margin-left:3rem!important}.mx-6{margin-left:3rem!important;margin-right:3rem!important}.my-6{margin-top:3rem!important;margin-bottom:3rem!important}.p-0{padding:0!important}.pt-0{padding-top:0!important}.pr-0{padding-right:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.px-0{padding-left:0!important;padding-right:0!important}.py-0{padding-top:0!important;padding-bottom:0!important}.p-1{padding:.25rem!important}.pt-1{padding-top:.25rem!important}.pr-1{padding-right:.25rem!important}.pb-1{padding-bottom:.25rem!important}.pl-1{padding-left:.25rem!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-2{padding:.5rem!important}.pt-2{padding-top:.5rem!important}.pr-2{padding-right:.5rem!important}.pb-2{padding-bottom:.5rem!important}.pl-2{padding-left:.5rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-3{padding:.75rem!important}.pt-3{padding-top:.75rem!important}.pr-3{padding-right:.75rem!important}.pb-3{padding-bottom:.75rem!important}.pl-3{padding-left:.75rem!important}.px-3{padding-left:.75rem!important;padding-right:.75rem!important}.py-3{padding-top:.75rem!important;padding-bottom:.75rem!important}.p-4{padding:1rem!important}.pt-4{padding-top:1rem!important}.pr-4{padding-right:1rem!important}.pb-4{padding-bottom:1rem!important}.pl-4{padding-left:1rem!important}.px-4{padding-left:1rem!important;padding-right:1rem!important}.py-4{padding-top:1rem!important;padding-bottom:1rem!important}.p-5{padding:1.5rem!important}.pt-5{padding-top:1.5rem!important}.pr-5{padding-right:1.5rem!important}.pb-5{padding-bottom:1.5rem!important}.pl-5{padding-left:1.5rem!important}.px-5{padding-left:1.5rem!important;padding-right:1.5rem!important}.py-5{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-6{padding:3rem!important}.pt-6{padding-top:3rem!important}.pr-6{padding-right:3rem!important}.pb-6{padding-bottom:3rem!important}.pl-6{padding-left:3rem!important}.px-6{padding-left:3rem!important;padding-right:3rem!important}.py-6{padding-top:3rem!important;padding-bottom:3rem!important}.is-size-1{font-size:3rem!important}.is-size-2{font-size:2.5rem!important}.is-size-3{font-size:2rem!important}.is-size-4{font-size:1.5rem!important}.is-size-5{font-size:1.25rem!important}.is-size-6{font-size:1rem!important}.is-size-7{font-size:.75rem!important}@media screen and (max-width:768px){.is-size-1-mobile{font-size:3rem!important}.is-size-2-mobile{font-size:2.5rem!important}.is-size-3-mobile{font-size:2rem!important}.is-size-4-mobile{font-size:1.5rem!important}.is-size-5-mobile{font-size:1.25rem!important}.is-size-6-mobile{font-size:1rem!important}.is-size-7-mobile{font-size:.75rem!important}}@media screen and (min-width:769px),print{.is-size-1-tablet{font-size:3rem!important}.is-size-2-tablet{font-size:2.5rem!important}.is-size-3-tablet{font-size:2rem!important}.is-size-4-tablet{font-size:1.5rem!important}.is-size-5-tablet{font-size:1.25rem!important}.is-size-6-tablet{font-size:1rem!important}.is-size-7-tablet{font-size:.75rem!important}}@media screen and (max-width:1023px){.is-size-1-touch{font-size:3rem!important}.is-size-2-touch{font-size:2.5rem!important}.is-size-3-touch{font-size:2rem!important}.is-size-4-touch{font-size:1.5rem!important}.is-size-5-touch{font-size:1.25rem!important}.is-size-6-touch{font-size:1rem!important}.is-size-7-touch{font-size:.75rem!important}}@media screen and (min-width:1024px){.is-size-1-desktop{font-size:3rem!important}.is-size-2-desktop{font-size:2.5rem!important}.is-size-3-desktop{font-size:2rem!important}.is-size-4-desktop{font-size:1.5rem!important}.is-size-5-desktop{font-size:1.25rem!important}.is-size-6-desktop{font-size:1rem!important}.is-size-7-desktop{font-size:.75rem!important}}@media screen and (min-width:1216px){.is-size-1-widescreen{font-size:3rem!important}.is-size-2-widescreen{font-size:2.5rem!important}.is-size-3-widescreen{font-size:2rem!important}.is-size-4-widescreen{font-size:1.5rem!important}.is-size-5-widescreen{font-size:1.25rem!important}.is-size-6-widescreen{font-size:1rem!important}.is-size-7-widescreen{font-size:.75rem!important}}@media screen and (min-width:1408px){.is-size-1-fullhd{font-size:3rem!important}.is-size-2-fullhd{font-size:2.5rem!important}.is-size-3-fullhd{font-size:2rem!important}.is-size-4-fullhd{font-size:1.5rem!important}.is-size-5-fullhd{font-size:1.25rem!important}.is-size-6-fullhd{font-size:1rem!important}.is-size-7-fullhd{font-size:.75rem!important}}.has-text-centered{text-align:center!important}.has-text-justified{text-align:justify!important}.has-text-left{text-align:left!important}.has-text-right{text-align:right!important}@media screen and (max-width:768px){.has-text-centered-mobile{text-align:center!important}}@media screen and (min-width:769px),print{.has-text-centered-tablet{text-align:center!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-centered-tablet-only{text-align:center!important}}@media screen and (max-width:1023px){.has-text-centered-touch{text-align:center!important}}@media screen and (min-width:1024px){.has-text-centered-desktop{text-align:center!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-centered-desktop-only{text-align:center!important}}@media screen and (min-width:1216px){.has-text-centered-widescreen{text-align:center!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-centered-widescreen-only{text-align:center!important}}@media screen and (min-width:1408px){.has-text-centered-fullhd{text-align:center!important}}@media screen and (max-width:768px){.has-text-justified-mobile{text-align:justify!important}}@media screen and (min-width:769px),print{.has-text-justified-tablet{text-align:justify!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-justified-tablet-only{text-align:justify!important}}@media screen and (max-width:1023px){.has-text-justified-touch{text-align:justify!important}}@media screen and (min-width:1024px){.has-text-justified-desktop{text-align:justify!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-justified-desktop-only{text-align:justify!important}}@media screen and (min-width:1216px){.has-text-justified-widescreen{text-align:justify!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-justified-widescreen-only{text-align:justify!important}}@media screen and (min-width:1408px){.has-text-justified-fullhd{text-align:justify!important}}@media screen and (max-width:768px){.has-text-left-mobile{text-align:left!important}}@media screen and (min-width:769px),print{.has-text-left-tablet{text-align:left!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-left-tablet-only{text-align:left!important}}@media screen and (max-width:1023px){.has-text-left-touch{text-align:left!important}}@media screen and (min-width:1024px){.has-text-left-desktop{text-align:left!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-left-desktop-only{text-align:left!important}}@media screen and (min-width:1216px){.has-text-left-widescreen{text-align:left!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-left-widescreen-only{text-align:left!important}}@media screen and (min-width:1408px){.has-text-left-fullhd{text-align:left!important}}@media screen and (max-width:768px){.has-text-right-mobile{text-align:right!important}}@media screen and (min-width:769px),print{.has-text-right-tablet{text-align:right!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-right-tablet-only{text-align:right!important}}@media screen and (max-width:1023px){.has-text-right-touch{text-align:right!important}}@media screen and (min-width:1024px){.has-text-right-desktop{text-align:right!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-right-desktop-only{text-align:right!important}}@media screen and (min-width:1216px){.has-text-right-widescreen{text-align:right!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-right-widescreen-only{text-align:right!important}}@media screen and (min-width:1408px){.has-text-right-fullhd{text-align:right!important}}.is-capitalized{text-transform:capitalize!important}.is-lowercase{text-transform:lowercase!important}.is-uppercase{text-transform:uppercase!important}.is-italic{font-style:italic!important}.has-text-weight-light{font-weight:300!important}.has-text-weight-normal{font-weight:400!important}.has-text-weight-medium{font-weight:500!important}.has-text-weight-semibold{font-weight:600!important}.has-text-weight-bold{font-weight:700!important}.is-family-primary{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif!important}.is-family-secondary{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif!important}.is-family-sans-serif{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif!important}.is-family-monospace{font-family:monospace!important}.is-family-code{font-family:monospace!important}.is-block{display:block!important}@media screen and (max-width:768px){.is-block-mobile{display:block!important}}@media screen and (min-width:769px),print{.is-block-tablet{display:block!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-block-tablet-only{display:block!important}}@media screen and (max-width:1023px){.is-block-touch{display:block!important}}@media screen and (min-width:1024px){.is-block-desktop{display:block!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-block-desktop-only{display:block!important}}@media screen and (min-width:1216px){.is-block-widescreen{display:block!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-block-widescreen-only{display:block!important}}@media screen and (min-width:1408px){.is-block-fullhd{display:block!important}}.is-flex{display:flex!important}@media screen and (max-width:768px){.is-flex-mobile{display:flex!important}}@media screen and (min-width:769px),print{.is-flex-tablet{display:flex!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-flex-tablet-only{display:flex!important}}@media screen and (max-width:1023px){.is-flex-touch{display:flex!important}}@media screen and (min-width:1024px){.is-flex-desktop{display:flex!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-flex-desktop-only{display:flex!important}}@media screen and (min-width:1216px){.is-flex-widescreen{display:flex!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-flex-widescreen-only{display:flex!important}}@media screen and (min-width:1408px){.is-flex-fullhd{display:flex!important}}.is-inline{display:inline!important}@media screen and (max-width:768px){.is-inline-mobile{display:inline!important}}@media screen and (min-width:769px),print{.is-inline-tablet{display:inline!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-tablet-only{display:inline!important}}@media screen and (max-width:1023px){.is-inline-touch{display:inline!important}}@media screen and (min-width:1024px){.is-inline-desktop{display:inline!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-desktop-only{display:inline!important}}@media screen and (min-width:1216px){.is-inline-widescreen{display:inline!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-widescreen-only{display:inline!important}}@media screen and (min-width:1408px){.is-inline-fullhd{display:inline!important}}.is-inline-block{display:inline-block!important}@media screen and (max-width:768px){.is-inline-block-mobile{display:inline-block!important}}@media screen and (min-width:769px),print{.is-inline-block-tablet{display:inline-block!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-block-tablet-only{display:inline-block!important}}@media screen and (max-width:1023px){.is-inline-block-touch{display:inline-block!important}}@media screen and (min-width:1024px){.is-inline-block-desktop{display:inline-block!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-block-desktop-only{display:inline-block!important}}@media screen and (min-width:1216px){.is-inline-block-widescreen{display:inline-block!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-block-widescreen-only{display:inline-block!important}}@media screen and (min-width:1408px){.is-inline-block-fullhd{display:inline-block!important}}.is-inline-flex{display:inline-flex!important}@media screen and (max-width:768px){.is-inline-flex-mobile{display:inline-flex!important}}@media screen and (min-width:769px),print{.is-inline-flex-tablet{display:inline-flex!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-flex-tablet-only{display:inline-flex!important}}@media screen and (max-width:1023px){.is-inline-flex-touch{display:inline-flex!important}}@media screen and (min-width:1024px){.is-inline-flex-desktop{display:inline-flex!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-flex-desktop-only{display:inline-flex!important}}@media screen and (min-width:1216px){.is-inline-flex-widescreen{display:inline-flex!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-flex-widescreen-only{display:inline-flex!important}}@media screen and (min-width:1408px){.is-inline-flex-fullhd{display:inline-flex!important}}.is-hidden{display:none!important}.is-sr-only{border:none!important;clip:rect(0,0,0,0)!important;height:.01em!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:.01em!important}@media screen and (max-width:768px){.is-hidden-mobile{display:none!important}}@media screen and (min-width:769px),print{.is-hidden-tablet{display:none!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-hidden-tablet-only{display:none!important}}@media screen and (max-width:1023px){.is-hidden-touch{display:none!important}}@media screen and (min-width:1024px){.is-hidden-desktop{display:none!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-hidden-desktop-only{display:none!important}}@media screen and (min-width:1216px){.is-hidden-widescreen{display:none!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-hidden-widescreen-only{display:none!important}}@media screen and (min-width:1408px){.is-hidden-fullhd{display:none!important}}.is-invisible{visibility:hidden!important}@media screen and (max-width:768px){.is-invisible-mobile{visibility:hidden!important}}@media screen and (min-width:769px),print{.is-invisible-tablet{visibility:hidden!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-invisible-tablet-only{visibility:hidden!important}}@media screen and (max-width:1023px){.is-invisible-touch{visibility:hidden!important}}@media screen and (min-width:1024px){.is-invisible-desktop{visibility:hidden!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-invisible-desktop-only{visibility:hidden!important}}@media screen and (min-width:1216px){.is-invisible-widescreen{visibility:hidden!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-invisible-widescreen-only{visibility:hidden!important}}@media screen and (min-width:1408px){.is-invisible-fullhd{visibility:hidden!important}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:0 0}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10,10,10,.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width:1023px){.hero.is-white .navbar-menu{background-color:#fff}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(10,10,10,.7)}.hero.is-white .navbar-link.is-active,.hero.is-white .navbar-link:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg,#e6e6e6 0,#fff 71%,#fff 100%)}@media screen and (max-width:768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg,#e6e6e6 0,#fff 71%,#fff 100%)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-black .navbar-menu{background-color:#0a0a0a}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:rgba(255,255,255,.7)}.hero.is-black .navbar-link.is-active,.hero.is-black .navbar-link:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black a.navbar-item:hover{background-color:#000;color:#fff}.hero.is-black .tabs a{color:#fff;opacity:.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg,#000 0,#0a0a0a 71%,#181616 100%)}@media screen and (max-width:768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg,#000 0,#0a0a0a 71%,#181616 100%)}}.hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-light strong{color:inherit}.hero.is-light .title{color:rgba(0,0,0,.7)}.hero.is-light .subtitle{color:rgba(0,0,0,.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width:1023px){.hero.is-light .navbar-menu{background-color:#f5f5f5}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(0,0,0,.7)}.hero.is-light .navbar-link.is-active,.hero.is-light .navbar-link:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.hero.is-light .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg,#dfd8d9 0,#f5f5f5 71%,#fff 100%)}@media screen and (max-width:768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg,#dfd8d9 0,#f5f5f5 71%,#fff 100%)}}.hero.is-dark{background-color:#363636;color:#fff}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-dark strong{color:inherit}.hero.is-dark .title{color:#fff}.hero.is-dark .subtitle{color:rgba(255,255,255,.9)}.hero.is-dark .subtitle a:not(.button),.hero.is-dark .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-dark .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.hero.is-dark .navbar-link{color:rgba(255,255,255,.7)}.hero.is-dark .navbar-link.is-active,.hero.is-dark .navbar-link:hover,.hero.is-dark a.navbar-item.is-active,.hero.is-dark a.navbar-item:hover{background-color:#292929;color:#fff}.hero.is-dark .tabs a{color:#fff;opacity:.9}.hero.is-dark .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a{opacity:1}.hero.is-dark .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a{color:#fff}.hero.is-dark .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#363636}.hero.is-dark.is-bold{background-image:linear-gradient(141deg,#1f191a 0,#363636 71%,#46403f 100%)}@media screen and (max-width:768px){.hero.is-dark.is-bold .navbar-menu{background-image:linear-gradient(141deg,#1f191a 0,#363636 71%,#46403f 100%)}}.hero.is-primary{background-color:#00d1b2;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong{color:inherit}.hero.is-primary .title{color:#fff}.hero.is-primary .subtitle{color:rgba(255,255,255,.9)}.hero.is-primary .subtitle a:not(.button),.hero.is-primary .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-primary .navbar-menu{background-color:#00d1b2}}.hero.is-primary .navbar-item,.hero.is-primary .navbar-link{color:rgba(255,255,255,.7)}.hero.is-primary .navbar-link.is-active,.hero.is-primary .navbar-link:hover,.hero.is-primary a.navbar-item.is-active,.hero.is-primary a.navbar-item:hover{background-color:#00b89c;color:#fff}.hero.is-primary .tabs a{color:#fff;opacity:.9}.hero.is-primary .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a{opacity:1}.hero.is-primary .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#00d1b2}.hero.is-primary.is-bold{background-image:linear-gradient(141deg,#009e6c 0,#00d1b2 71%,#00e7eb 100%)}@media screen and (max-width:768px){.hero.is-primary.is-bold .navbar-menu{background-image:linear-gradient(141deg,#009e6c 0,#00d1b2 71%,#00e7eb 100%)}}.hero.is-link{background-color:#3273dc;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:rgba(255,255,255,.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-link .navbar-menu{background-color:#3273dc}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:rgba(255,255,255,.7)}.hero.is-link .navbar-link.is-active,.hero.is-link .navbar-link:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link a.navbar-item:hover{background-color:#2366d1;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:.9}.hero.is-link .tabs a:hover{opacity:1}.hero.is-link .tabs li.is-active a{opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3273dc}.hero.is-link.is-bold{background-image:linear-gradient(141deg,#1577c6 0,#3273dc 71%,#4366e5 100%)}@media screen and (max-width:768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg,#1577c6 0,#3273dc 71%,#4366e5 100%)}}.hero.is-info{background-color:#3298dc;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255,255,255,.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-info .navbar-menu{background-color:#3298dc}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:rgba(255,255,255,.7)}.hero.is-info .navbar-link.is-active,.hero.is-info .navbar-link:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info a.navbar-item:hover{background-color:#238cd1;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3298dc}.hero.is-info.is-bold{background-image:linear-gradient(141deg,#159dc6 0,#3298dc 71%,#4389e5 100%)}@media screen and (max-width:768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg,#159dc6 0,#3298dc 71%,#4389e5 100%)}}.hero.is-success{background-color:#48c774;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255,255,255,.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-success .navbar-menu{background-color:#48c774}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:rgba(255,255,255,.7)}.hero.is-success .navbar-link.is-active,.hero.is-success .navbar-link:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success a.navbar-item:hover{background-color:#3abb67;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#48c774}.hero.is-success.is-bold{background-image:linear-gradient(141deg,#29b342 0,#48c774 71%,#56d296 100%)}@media screen and (max-width:768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg,#29b342 0,#48c774 71%,#56d296 100%)}}.hero.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:rgba(0,0,0,.7)}.hero.is-warning .subtitle{color:rgba(0,0,0,.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width:1023px){.hero.is-warning .navbar-menu{background-color:#ffdd57}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(0,0,0,.7)}.hero.is-warning .navbar-link.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning a.navbar-item:hover{background-color:#ffd83d;color:rgba(0,0,0,.7)}.hero.is-warning .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#ffdd57}.hero.is-warning.is-bold{background-image:linear-gradient(141deg,#ffaf24 0,#ffdd57 71%,#fffa70 100%)}@media screen and (max-width:768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg,#ffaf24 0,#ffdd57 71%,#fffa70 100%)}}.hero.is-danger{background-color:#f14668;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255,255,255,.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-danger .navbar-menu{background-color:#f14668}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:rgba(255,255,255,.7)}.hero.is-danger .navbar-link.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger a.navbar-item:hover{background-color:#ef2e55;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#f14668}.hero.is-danger.is-bold{background-image:linear-gradient(141deg,#fa0a62 0,#f14668 71%,#f7595f 100%)}@media screen and (max-width:768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg,#fa0a62 0,#f14668 71%,#f7595f 100%)}}.hero.is-small .hero-body{padding:1.5rem}@media screen and (min-width:769px),print{.hero.is-medium .hero-body{padding:9rem 1.5rem}}@media screen and (min-width:769px),print{.hero.is-large .hero-body{padding:18rem 1.5rem}}.hero.is-fullheight .hero-body,.hero.is-fullheight-with-navbar .hero-body,.hero.is-halfheight .hero-body{align-items:center;display:flex}.hero.is-fullheight .hero-body>.container,.hero.is-fullheight-with-navbar .hero-body>.container,.hero.is-halfheight .hero-body>.container{flex-grow:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0)}.hero-video.is-transparent{opacity:.3}@media screen and (max-width:768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width:768px){.hero-buttons .button{display:flex}.hero-buttons .button:not(:last-child){margin-bottom:.75rem}}@media screen and (min-width:769px),print{.hero-buttons{display:flex;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-foot,.hero-head{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}.section{padding:3rem 1.5rem}@media screen and (min-width:1024px){.section.is-medium{padding:9rem 1.5rem}.section.is-large{padding:18rem 1.5rem}}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem} \ No newline at end of file diff --git a/web/static/css/dtsel.css b/web/static/css/dtsel.css new file mode 100644 index 0000000..bba3b32 --- /dev/null +++ b/web/static/css/dtsel.css @@ -0,0 +1,91 @@ +.date-selector-wrapper { + width: 200px; + padding: 3px; + background-color: #fff; + box-shadow: 1px 1px 10px 1px #5c5c5c; + position: absolute; + font-size: 12px; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + /* user-select: none; */ +} +.cal-header, .cal-row { + display: flex; + width: 100%; + height: 30px; + line-height: 30px; + text-align: center; +} +.cal-cell, .cal-nav { + cursor: pointer; +} +.cal-day-names { + height: 25px; + line-height: 25px; +} +.cal-day-names .cal-cell { + cursor: default; + font-weight: bold; +} +.cal-cell-prev, .cal-cell-next { + color: #777; +} +.cal-months .cal-row, .cal-years .cal-row { + height: 60px; + line-height: 60px; +} +.cal-nav-prev, .cal-nav-next { + flex: 0.15; +} +.cal-nav-current { + flex: 0.75; + font-weight: bold; +} +.cal-months .cal-cell, .cal-years .cal-cell { + flex: 0.25; +} +.cal-days .cal-cell { + flex: 0.143; +} +.cal-value { + color: #fff; + background-color: #286090; +} +.cal-cell:hover, .cal-nav:hover { + background-color: #eee; +} +.cal-value:hover { + background-color: #204d74; +} + +/* time footer */ +.cal-time { + display: flex; + justify-content: flex-start; + height: 27px; + line-height: 27px; +} +.cal-time-label, .cal-time-value { + flex: 0.12; + text-align: center; +} +.cal-time-slider { + flex: 0.77; + background-image: linear-gradient(to right, #d1d8dd, #d1d8dd); + background-repeat: no-repeat; + background-size: 100% 1px; + background-position: left 50%; + height: 100%; +} +.cal-time-slider input { + width: 100%; + -webkit-appearance: none; + background: 0 0; + cursor: pointer; + height: 100%; + outline: 0; + user-select: auto; +} \ No newline at end of file diff --git a/web/static/css/fa.css b/web/static/css/fa.css new file mode 100644 index 0000000..e90cdbe --- /dev/null +++ b/web/static/css/fa.css @@ -0,0 +1,12749 @@ +/*! + * Font Awesome Pro 5.13.1 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Commercial License) + */ +.fa, +.fas, +.far, +.fal, +.fad, +.fab { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; } + +.fa-lg { + font-size: 1.33333em; + line-height: 0.75em; + vertical-align: -.0667em; } + +.fa-xs { + font-size: .75em; } + +.fa-sm { + font-size: .875em; } + +.fa-1x { + font-size: 1em; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-6x { + font-size: 6em; } + +.fa-7x { + font-size: 7em; } + +.fa-8x { + font-size: 8em; } + +.fa-9x { + font-size: 9em; } + +.fa-10x { + font-size: 10em; } + +.fa-fw { + text-align: center; + width: 1.25em; } + +.fa-ul { + list-style-type: none; + margin-left: 2.5em; + padding-left: 0; } + .fa-ul > li { + position: relative; } + +.fa-li { + left: -2em; + position: absolute; + text-align: center; + width: 2em; + line-height: inherit; } + +.fa-border { + border: solid 0.08em #eee; + border-radius: .1em; + padding: .2em .25em .15em; } + +.fa-pull-left { + float: left; } + +.fa-pull-right { + float: right; } + +.fa.fa-pull-left, +.fas.fa-pull-left, +.far.fa-pull-left, +.fal.fa-pull-left, +.fab.fa-pull-left { + margin-right: .3em; } + +.fa.fa-pull-right, +.fas.fa-pull-right, +.far.fa-pull-right, +.fal.fa-pull-right, +.fab.fa-pull-right { + margin-left: .3em; } + +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; } + +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } + +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } + +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } + +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + transform: scale(1, -1); } + +.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } + +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical, +:root .fa-flip-both { + -webkit-filter: none; + filter: none; } + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; } + +.fa-stack-1x, +.fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; } + +.fa-stack-1x { + line-height: inherit; } + +.fa-stack-2x { + font-size: 2em; } + +.fa-inverse { + color: #fff; } + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ +.fa-500px:before { + content: "\f26e"; } + +.fa-abacus:before { + content: "\f640"; } + +.fa-accessible-icon:before { + content: "\f368"; } + +.fa-accusoft:before { + content: "\f369"; } + +.fa-acorn:before { + content: "\f6ae"; } + +.fa-acquisitions-incorporated:before { + content: "\f6af"; } + +.fa-ad:before { + content: "\f641"; } + +.fa-address-book:before { + content: "\f2b9"; } + +.fa-address-card:before { + content: "\f2bb"; } + +.fa-adjust:before { + content: "\f042"; } + +.fa-adn:before { + content: "\f170"; } + +.fa-adobe:before { + content: "\f778"; } + +.fa-adversal:before { + content: "\f36a"; } + +.fa-affiliatetheme:before { + content: "\f36b"; } + +.fa-air-conditioner:before { + content: "\f8f4"; } + +.fa-air-freshener:before { + content: "\f5d0"; } + +.fa-airbnb:before { + content: "\f834"; } + +.fa-alarm-clock:before { + content: "\f34e"; } + +.fa-alarm-exclamation:before { + content: "\f843"; } + +.fa-alarm-plus:before { + content: "\f844"; } + +.fa-alarm-snooze:before { + content: "\f845"; } + +.fa-album:before { + content: "\f89f"; } + +.fa-album-collection:before { + content: "\f8a0"; } + +.fa-algolia:before { + content: "\f36c"; } + +.fa-alicorn:before { + content: "\f6b0"; } + +.fa-alien:before { + content: "\f8f5"; } + +.fa-alien-monster:before { + content: "\f8f6"; } + +.fa-align-center:before { + content: "\f037"; } + +.fa-align-justify:before { + content: "\f039"; } + +.fa-align-left:before { + content: "\f036"; } + +.fa-align-right:before { + content: "\f038"; } + +.fa-align-slash:before { + content: "\f846"; } + +.fa-alipay:before { + content: "\f642"; } + +.fa-allergies:before { + content: "\f461"; } + +.fa-amazon:before { + content: "\f270"; } + +.fa-amazon-pay:before { + content: "\f42c"; } + +.fa-ambulance:before { + content: "\f0f9"; } + +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; } + +.fa-amilia:before { + content: "\f36d"; } + +.fa-amp-guitar:before { + content: "\f8a1"; } + +.fa-analytics:before { + content: "\f643"; } + +.fa-anchor:before { + content: "\f13d"; } + +.fa-android:before { + content: "\f17b"; } + +.fa-angel:before { + content: "\f779"; } + +.fa-angellist:before { + content: "\f209"; } + +.fa-angle-double-down:before { + content: "\f103"; } + +.fa-angle-double-left:before { + content: "\f100"; } + +.fa-angle-double-right:before { + content: "\f101"; } + +.fa-angle-double-up:before { + content: "\f102"; } + +.fa-angle-down:before { + content: "\f107"; } + +.fa-angle-left:before { + content: "\f104"; } + +.fa-angle-right:before { + content: "\f105"; } + +.fa-angle-up:before { + content: "\f106"; } + +.fa-angry:before { + content: "\f556"; } + +.fa-angrycreative:before { + content: "\f36e"; } + +.fa-angular:before { + content: "\f420"; } + +.fa-ankh:before { + content: "\f644"; } + +.fa-app-store:before { + content: "\f36f"; } + +.fa-app-store-ios:before { + content: "\f370"; } + +.fa-apper:before { + content: "\f371"; } + +.fa-apple:before { + content: "\f179"; } + +.fa-apple-alt:before { + content: "\f5d1"; } + +.fa-apple-crate:before { + content: "\f6b1"; } + +.fa-apple-pay:before { + content: "\f415"; } + +.fa-archive:before { + content: "\f187"; } + +.fa-archway:before { + content: "\f557"; } + +.fa-arrow-alt-circle-down:before { + content: "\f358"; } + +.fa-arrow-alt-circle-left:before { + content: "\f359"; } + +.fa-arrow-alt-circle-right:before { + content: "\f35a"; } + +.fa-arrow-alt-circle-up:before { + content: "\f35b"; } + +.fa-arrow-alt-down:before { + content: "\f354"; } + +.fa-arrow-alt-from-bottom:before { + content: "\f346"; } + +.fa-arrow-alt-from-left:before { + content: "\f347"; } + +.fa-arrow-alt-from-right:before { + content: "\f348"; } + +.fa-arrow-alt-from-top:before { + content: "\f349"; } + +.fa-arrow-alt-left:before { + content: "\f355"; } + +.fa-arrow-alt-right:before { + content: "\f356"; } + +.fa-arrow-alt-square-down:before { + content: "\f350"; } + +.fa-arrow-alt-square-left:before { + content: "\f351"; } + +.fa-arrow-alt-square-right:before { + content: "\f352"; } + +.fa-arrow-alt-square-up:before { + content: "\f353"; } + +.fa-arrow-alt-to-bottom:before { + content: "\f34a"; } + +.fa-arrow-alt-to-left:before { + content: "\f34b"; } + +.fa-arrow-alt-to-right:before { + content: "\f34c"; } + +.fa-arrow-alt-to-top:before { + content: "\f34d"; } + +.fa-arrow-alt-up:before { + content: "\f357"; } + +.fa-arrow-circle-down:before { + content: "\f0ab"; } + +.fa-arrow-circle-left:before { + content: "\f0a8"; } + +.fa-arrow-circle-right:before { + content: "\f0a9"; } + +.fa-arrow-circle-up:before { + content: "\f0aa"; } + +.fa-arrow-down:before { + content: "\f063"; } + +.fa-arrow-from-bottom:before { + content: "\f342"; } + +.fa-arrow-from-left:before { + content: "\f343"; } + +.fa-arrow-from-right:before { + content: "\f344"; } + +.fa-arrow-from-top:before { + content: "\f345"; } + +.fa-arrow-left:before { + content: "\f060"; } + +.fa-arrow-right:before { + content: "\f061"; } + +.fa-arrow-square-down:before { + content: "\f339"; } + +.fa-arrow-square-left:before { + content: "\f33a"; } + +.fa-arrow-square-right:before { + content: "\f33b"; } + +.fa-arrow-square-up:before { + content: "\f33c"; } + +.fa-arrow-to-bottom:before { + content: "\f33d"; } + +.fa-arrow-to-left:before { + content: "\f33e"; } + +.fa-arrow-to-right:before { + content: "\f340"; } + +.fa-arrow-to-top:before { + content: "\f341"; } + +.fa-arrow-up:before { + content: "\f062"; } + +.fa-arrows:before { + content: "\f047"; } + +.fa-arrows-alt:before { + content: "\f0b2"; } + +.fa-arrows-alt-h:before { + content: "\f337"; } + +.fa-arrows-alt-v:before { + content: "\f338"; } + +.fa-arrows-h:before { + content: "\f07e"; } + +.fa-arrows-v:before { + content: "\f07d"; } + +.fa-artstation:before { + content: "\f77a"; } + +.fa-assistive-listening-systems:before { + content: "\f2a2"; } + +.fa-asterisk:before { + content: "\f069"; } + +.fa-asymmetrik:before { + content: "\f372"; } + +.fa-at:before { + content: "\f1fa"; } + +.fa-atlas:before { + content: "\f558"; } + +.fa-atlassian:before { + content: "\f77b"; } + +.fa-atom:before { + content: "\f5d2"; } + +.fa-atom-alt:before { + content: "\f5d3"; } + +.fa-audible:before { + content: "\f373"; } + +.fa-audio-description:before { + content: "\f29e"; } + +.fa-autoprefixer:before { + content: "\f41c"; } + +.fa-avianex:before { + content: "\f374"; } + +.fa-aviato:before { + content: "\f421"; } + +.fa-award:before { + content: "\f559"; } + +.fa-aws:before { + content: "\f375"; } + +.fa-axe:before { + content: "\f6b2"; } + +.fa-axe-battle:before { + content: "\f6b3"; } + +.fa-baby:before { + content: "\f77c"; } + +.fa-baby-carriage:before { + content: "\f77d"; } + +.fa-backpack:before { + content: "\f5d4"; } + +.fa-backspace:before { + content: "\f55a"; } + +.fa-backward:before { + content: "\f04a"; } + +.fa-bacon:before { + content: "\f7e5"; } + +.fa-bacteria:before { + content: "\f959"; } + +.fa-bacterium:before { + content: "\f95a"; } + +.fa-badge:before { + content: "\f335"; } + +.fa-badge-check:before { + content: "\f336"; } + +.fa-badge-dollar:before { + content: "\f645"; } + +.fa-badge-percent:before { + content: "\f646"; } + +.fa-badge-sheriff:before { + content: "\f8a2"; } + +.fa-badger-honey:before { + content: "\f6b4"; } + +.fa-bags-shopping:before { + content: "\f847"; } + +.fa-bahai:before { + content: "\f666"; } + +.fa-balance-scale:before { + content: "\f24e"; } + +.fa-balance-scale-left:before { + content: "\f515"; } + +.fa-balance-scale-right:before { + content: "\f516"; } + +.fa-ball-pile:before { + content: "\f77e"; } + +.fa-ballot:before { + content: "\f732"; } + +.fa-ballot-check:before { + content: "\f733"; } + +.fa-ban:before { + content: "\f05e"; } + +.fa-band-aid:before { + content: "\f462"; } + +.fa-bandcamp:before { + content: "\f2d5"; } + +.fa-banjo:before { + content: "\f8a3"; } + +.fa-barcode:before { + content: "\f02a"; } + +.fa-barcode-alt:before { + content: "\f463"; } + +.fa-barcode-read:before { + content: "\f464"; } + +.fa-barcode-scan:before { + content: "\f465"; } + +.fa-bars:before { + content: "\f0c9"; } + +.fa-baseball:before { + content: "\f432"; } + +.fa-baseball-ball:before { + content: "\f433"; } + +.fa-basketball-ball:before { + content: "\f434"; } + +.fa-basketball-hoop:before { + content: "\f435"; } + +.fa-bat:before { + content: "\f6b5"; } + +.fa-bath:before { + content: "\f2cd"; } + +.fa-battery-bolt:before { + content: "\f376"; } + +.fa-battery-empty:before { + content: "\f244"; } + +.fa-battery-full:before { + content: "\f240"; } + +.fa-battery-half:before { + content: "\f242"; } + +.fa-battery-quarter:before { + content: "\f243"; } + +.fa-battery-slash:before { + content: "\f377"; } + +.fa-battery-three-quarters:before { + content: "\f241"; } + +.fa-battle-net:before { + content: "\f835"; } + +.fa-bed:before { + content: "\f236"; } + +.fa-bed-alt:before { + content: "\f8f7"; } + +.fa-bed-bunk:before { + content: "\f8f8"; } + +.fa-bed-empty:before { + content: "\f8f9"; } + +.fa-beer:before { + content: "\f0fc"; } + +.fa-behance:before { + content: "\f1b4"; } + +.fa-behance-square:before { + content: "\f1b5"; } + +.fa-bell:before { + content: "\f0f3"; } + +.fa-bell-exclamation:before { + content: "\f848"; } + +.fa-bell-on:before { + content: "\f8fa"; } + +.fa-bell-plus:before { + content: "\f849"; } + +.fa-bell-school:before { + content: "\f5d5"; } + +.fa-bell-school-slash:before { + content: "\f5d6"; } + +.fa-bell-slash:before { + content: "\f1f6"; } + +.fa-bells:before { + content: "\f77f"; } + +.fa-betamax:before { + content: "\f8a4"; } + +.fa-bezier-curve:before { + content: "\f55b"; } + +.fa-bible:before { + content: "\f647"; } + +.fa-bicycle:before { + content: "\f206"; } + +.fa-biking:before { + content: "\f84a"; } + +.fa-biking-mountain:before { + content: "\f84b"; } + +.fa-bimobject:before { + content: "\f378"; } + +.fa-binoculars:before { + content: "\f1e5"; } + +.fa-biohazard:before { + content: "\f780"; } + +.fa-birthday-cake:before { + content: "\f1fd"; } + +.fa-bitbucket:before { + content: "\f171"; } + +.fa-bitcoin:before { + content: "\f379"; } + +.fa-bity:before { + content: "\f37a"; } + +.fa-black-tie:before { + content: "\f27e"; } + +.fa-blackberry:before { + content: "\f37b"; } + +.fa-blanket:before { + content: "\f498"; } + +.fa-blender:before { + content: "\f517"; } + +.fa-blender-phone:before { + content: "\f6b6"; } + +.fa-blind:before { + content: "\f29d"; } + +.fa-blinds:before { + content: "\f8fb"; } + +.fa-blinds-open:before { + content: "\f8fc"; } + +.fa-blinds-raised:before { + content: "\f8fd"; } + +.fa-blog:before { + content: "\f781"; } + +.fa-blogger:before { + content: "\f37c"; } + +.fa-blogger-b:before { + content: "\f37d"; } + +.fa-bluetooth:before { + content: "\f293"; } + +.fa-bluetooth-b:before { + content: "\f294"; } + +.fa-bold:before { + content: "\f032"; } + +.fa-bolt:before { + content: "\f0e7"; } + +.fa-bomb:before { + content: "\f1e2"; } + +.fa-bone:before { + content: "\f5d7"; } + +.fa-bone-break:before { + content: "\f5d8"; } + +.fa-bong:before { + content: "\f55c"; } + +.fa-book:before { + content: "\f02d"; } + +.fa-book-alt:before { + content: "\f5d9"; } + +.fa-book-dead:before { + content: "\f6b7"; } + +.fa-book-heart:before { + content: "\f499"; } + +.fa-book-medical:before { + content: "\f7e6"; } + +.fa-book-open:before { + content: "\f518"; } + +.fa-book-reader:before { + content: "\f5da"; } + +.fa-book-spells:before { + content: "\f6b8"; } + +.fa-book-user:before { + content: "\f7e7"; } + +.fa-bookmark:before { + content: "\f02e"; } + +.fa-books:before { + content: "\f5db"; } + +.fa-books-medical:before { + content: "\f7e8"; } + +.fa-boombox:before { + content: "\f8a5"; } + +.fa-boot:before { + content: "\f782"; } + +.fa-booth-curtain:before { + content: "\f734"; } + +.fa-bootstrap:before { + content: "\f836"; } + +.fa-border-all:before { + content: "\f84c"; } + +.fa-border-bottom:before { + content: "\f84d"; } + +.fa-border-center-h:before { + content: "\f89c"; } + +.fa-border-center-v:before { + content: "\f89d"; } + +.fa-border-inner:before { + content: "\f84e"; } + +.fa-border-left:before { + content: "\f84f"; } + +.fa-border-none:before { + content: "\f850"; } + +.fa-border-outer:before { + content: "\f851"; } + +.fa-border-right:before { + content: "\f852"; } + +.fa-border-style:before { + content: "\f853"; } + +.fa-border-style-alt:before { + content: "\f854"; } + +.fa-border-top:before { + content: "\f855"; } + +.fa-bow-arrow:before { + content: "\f6b9"; } + +.fa-bowling-ball:before { + content: "\f436"; } + +.fa-bowling-pins:before { + content: "\f437"; } + +.fa-box:before { + content: "\f466"; } + +.fa-box-alt:before { + content: "\f49a"; } + +.fa-box-ballot:before { + content: "\f735"; } + +.fa-box-check:before { + content: "\f467"; } + +.fa-box-fragile:before { + content: "\f49b"; } + +.fa-box-full:before { + content: "\f49c"; } + +.fa-box-heart:before { + content: "\f49d"; } + +.fa-box-open:before { + content: "\f49e"; } + +.fa-box-tissue:before { + content: "\f95b"; } + +.fa-box-up:before { + content: "\f49f"; } + +.fa-box-usd:before { + content: "\f4a0"; } + +.fa-boxes:before { + content: "\f468"; } + +.fa-boxes-alt:before { + content: "\f4a1"; } + +.fa-boxing-glove:before { + content: "\f438"; } + +.fa-brackets:before { + content: "\f7e9"; } + +.fa-brackets-curly:before { + content: "\f7ea"; } + +.fa-braille:before { + content: "\f2a1"; } + +.fa-brain:before { + content: "\f5dc"; } + +.fa-bread-loaf:before { + content: "\f7eb"; } + +.fa-bread-slice:before { + content: "\f7ec"; } + +.fa-briefcase:before { + content: "\f0b1"; } + +.fa-briefcase-medical:before { + content: "\f469"; } + +.fa-bring-forward:before { + content: "\f856"; } + +.fa-bring-front:before { + content: "\f857"; } + +.fa-broadcast-tower:before { + content: "\f519"; } + +.fa-broom:before { + content: "\f51a"; } + +.fa-browser:before { + content: "\f37e"; } + +.fa-brush:before { + content: "\f55d"; } + +.fa-btc:before { + content: "\f15a"; } + +.fa-buffer:before { + content: "\f837"; } + +.fa-bug:before { + content: "\f188"; } + +.fa-building:before { + content: "\f1ad"; } + +.fa-bullhorn:before { + content: "\f0a1"; } + +.fa-bullseye:before { + content: "\f140"; } + +.fa-bullseye-arrow:before { + content: "\f648"; } + +.fa-bullseye-pointer:before { + content: "\f649"; } + +.fa-burger-soda:before { + content: "\f858"; } + +.fa-burn:before { + content: "\f46a"; } + +.fa-buromobelexperte:before { + content: "\f37f"; } + +.fa-burrito:before { + content: "\f7ed"; } + +.fa-bus:before { + content: "\f207"; } + +.fa-bus-alt:before { + content: "\f55e"; } + +.fa-bus-school:before { + content: "\f5dd"; } + +.fa-business-time:before { + content: "\f64a"; } + +.fa-buy-n-large:before { + content: "\f8a6"; } + +.fa-buysellads:before { + content: "\f20d"; } + +.fa-cabinet-filing:before { + content: "\f64b"; } + +.fa-cactus:before { + content: "\f8a7"; } + +.fa-calculator:before { + content: "\f1ec"; } + +.fa-calculator-alt:before { + content: "\f64c"; } + +.fa-calendar:before { + content: "\f133"; } + +.fa-calendar-alt:before { + content: "\f073"; } + +.fa-calendar-check:before { + content: "\f274"; } + +.fa-calendar-day:before { + content: "\f783"; } + +.fa-calendar-edit:before { + content: "\f333"; } + +.fa-calendar-exclamation:before { + content: "\f334"; } + +.fa-calendar-minus:before { + content: "\f272"; } + +.fa-calendar-plus:before { + content: "\f271"; } + +.fa-calendar-star:before { + content: "\f736"; } + +.fa-calendar-times:before { + content: "\f273"; } + +.fa-calendar-week:before { + content: "\f784"; } + +.fa-camcorder:before { + content: "\f8a8"; } + +.fa-camera:before { + content: "\f030"; } + +.fa-camera-alt:before { + content: "\f332"; } + +.fa-camera-home:before { + content: "\f8fe"; } + +.fa-camera-movie:before { + content: "\f8a9"; } + +.fa-camera-polaroid:before { + content: "\f8aa"; } + +.fa-camera-retro:before { + content: "\f083"; } + +.fa-campfire:before { + content: "\f6ba"; } + +.fa-campground:before { + content: "\f6bb"; } + +.fa-canadian-maple-leaf:before { + content: "\f785"; } + +.fa-candle-holder:before { + content: "\f6bc"; } + +.fa-candy-cane:before { + content: "\f786"; } + +.fa-candy-corn:before { + content: "\f6bd"; } + +.fa-cannabis:before { + content: "\f55f"; } + +.fa-capsules:before { + content: "\f46b"; } + +.fa-car:before { + content: "\f1b9"; } + +.fa-car-alt:before { + content: "\f5de"; } + +.fa-car-battery:before { + content: "\f5df"; } + +.fa-car-building:before { + content: "\f859"; } + +.fa-car-bump:before { + content: "\f5e0"; } + +.fa-car-bus:before { + content: "\f85a"; } + +.fa-car-crash:before { + content: "\f5e1"; } + +.fa-car-garage:before { + content: "\f5e2"; } + +.fa-car-mechanic:before { + content: "\f5e3"; } + +.fa-car-side:before { + content: "\f5e4"; } + +.fa-car-tilt:before { + content: "\f5e5"; } + +.fa-car-wash:before { + content: "\f5e6"; } + +.fa-caravan:before { + content: "\f8ff"; } + +.fa-caravan-alt:before { + content: "\f900"; } + +.fa-caret-circle-down:before { + content: "\f32d"; } + +.fa-caret-circle-left:before { + content: "\f32e"; } + +.fa-caret-circle-right:before { + content: "\f330"; } + +.fa-caret-circle-up:before { + content: "\f331"; } + +.fa-caret-down:before { + content: "\f0d7"; } + +.fa-caret-left:before { + content: "\f0d9"; } + +.fa-caret-right:before { + content: "\f0da"; } + +.fa-caret-square-down:before { + content: "\f150"; } + +.fa-caret-square-left:before { + content: "\f191"; } + +.fa-caret-square-right:before { + content: "\f152"; } + +.fa-caret-square-up:before { + content: "\f151"; } + +.fa-caret-up:before { + content: "\f0d8"; } + +.fa-carrot:before { + content: "\f787"; } + +.fa-cars:before { + content: "\f85b"; } + +.fa-cart-arrow-down:before { + content: "\f218"; } + +.fa-cart-plus:before { + content: "\f217"; } + +.fa-cash-register:before { + content: "\f788"; } + +.fa-cassette-tape:before { + content: "\f8ab"; } + +.fa-cat:before { + content: "\f6be"; } + +.fa-cat-space:before { + content: "\f901"; } + +.fa-cauldron:before { + content: "\f6bf"; } + +.fa-cc-amazon-pay:before { + content: "\f42d"; } + +.fa-cc-amex:before { + content: "\f1f3"; } + +.fa-cc-apple-pay:before { + content: "\f416"; } + +.fa-cc-diners-club:before { + content: "\f24c"; } + +.fa-cc-discover:before { + content: "\f1f2"; } + +.fa-cc-jcb:before { + content: "\f24b"; } + +.fa-cc-mastercard:before { + content: "\f1f1"; } + +.fa-cc-paypal:before { + content: "\f1f4"; } + +.fa-cc-stripe:before { + content: "\f1f5"; } + +.fa-cc-visa:before { + content: "\f1f0"; } + +.fa-cctv:before { + content: "\f8ac"; } + +.fa-centercode:before { + content: "\f380"; } + +.fa-centos:before { + content: "\f789"; } + +.fa-certificate:before { + content: "\f0a3"; } + +.fa-chair:before { + content: "\f6c0"; } + +.fa-chair-office:before { + content: "\f6c1"; } + +.fa-chalkboard:before { + content: "\f51b"; } + +.fa-chalkboard-teacher:before { + content: "\f51c"; } + +.fa-charging-station:before { + content: "\f5e7"; } + +.fa-chart-area:before { + content: "\f1fe"; } + +.fa-chart-bar:before { + content: "\f080"; } + +.fa-chart-line:before { + content: "\f201"; } + +.fa-chart-line-down:before { + content: "\f64d"; } + +.fa-chart-network:before { + content: "\f78a"; } + +.fa-chart-pie:before { + content: "\f200"; } + +.fa-chart-pie-alt:before { + content: "\f64e"; } + +.fa-chart-scatter:before { + content: "\f7ee"; } + +.fa-check:before { + content: "\f00c"; } + +.fa-check-circle:before { + content: "\f058"; } + +.fa-check-double:before { + content: "\f560"; } + +.fa-check-square:before { + content: "\f14a"; } + +.fa-cheese:before { + content: "\f7ef"; } + +.fa-cheese-swiss:before { + content: "\f7f0"; } + +.fa-cheeseburger:before { + content: "\f7f1"; } + +.fa-chess:before { + content: "\f439"; } + +.fa-chess-bishop:before { + content: "\f43a"; } + +.fa-chess-bishop-alt:before { + content: "\f43b"; } + +.fa-chess-board:before { + content: "\f43c"; } + +.fa-chess-clock:before { + content: "\f43d"; } + +.fa-chess-clock-alt:before { + content: "\f43e"; } + +.fa-chess-king:before { + content: "\f43f"; } + +.fa-chess-king-alt:before { + content: "\f440"; } + +.fa-chess-knight:before { + content: "\f441"; } + +.fa-chess-knight-alt:before { + content: "\f442"; } + +.fa-chess-pawn:before { + content: "\f443"; } + +.fa-chess-pawn-alt:before { + content: "\f444"; } + +.fa-chess-queen:before { + content: "\f445"; } + +.fa-chess-queen-alt:before { + content: "\f446"; } + +.fa-chess-rook:before { + content: "\f447"; } + +.fa-chess-rook-alt:before { + content: "\f448"; } + +.fa-chevron-circle-down:before { + content: "\f13a"; } + +.fa-chevron-circle-left:before { + content: "\f137"; } + +.fa-chevron-circle-right:before { + content: "\f138"; } + +.fa-chevron-circle-up:before { + content: "\f139"; } + +.fa-chevron-double-down:before { + content: "\f322"; } + +.fa-chevron-double-left:before { + content: "\f323"; } + +.fa-chevron-double-right:before { + content: "\f324"; } + +.fa-chevron-double-up:before { + content: "\f325"; } + +.fa-chevron-down:before { + content: "\f078"; } + +.fa-chevron-left:before { + content: "\f053"; } + +.fa-chevron-right:before { + content: "\f054"; } + +.fa-chevron-square-down:before { + content: "\f329"; } + +.fa-chevron-square-left:before { + content: "\f32a"; } + +.fa-chevron-square-right:before { + content: "\f32b"; } + +.fa-chevron-square-up:before { + content: "\f32c"; } + +.fa-chevron-up:before { + content: "\f077"; } + +.fa-child:before { + content: "\f1ae"; } + +.fa-chimney:before { + content: "\f78b"; } + +.fa-chrome:before { + content: "\f268"; } + +.fa-chromecast:before { + content: "\f838"; } + +.fa-church:before { + content: "\f51d"; } + +.fa-circle:before { + content: "\f111"; } + +.fa-circle-notch:before { + content: "\f1ce"; } + +.fa-city:before { + content: "\f64f"; } + +.fa-clarinet:before { + content: "\f8ad"; } + +.fa-claw-marks:before { + content: "\f6c2"; } + +.fa-clinic-medical:before { + content: "\f7f2"; } + +.fa-clipboard:before { + content: "\f328"; } + +.fa-clipboard-check:before { + content: "\f46c"; } + +.fa-clipboard-list:before { + content: "\f46d"; } + +.fa-clipboard-list-check:before { + content: "\f737"; } + +.fa-clipboard-prescription:before { + content: "\f5e8"; } + +.fa-clipboard-user:before { + content: "\f7f3"; } + +.fa-clock:before { + content: "\f017"; } + +.fa-clone:before { + content: "\f24d"; } + +.fa-closed-captioning:before { + content: "\f20a"; } + +.fa-cloud:before { + content: "\f0c2"; } + +.fa-cloud-download:before { + content: "\f0ed"; } + +.fa-cloud-download-alt:before { + content: "\f381"; } + +.fa-cloud-drizzle:before { + content: "\f738"; } + +.fa-cloud-hail:before { + content: "\f739"; } + +.fa-cloud-hail-mixed:before { + content: "\f73a"; } + +.fa-cloud-meatball:before { + content: "\f73b"; } + +.fa-cloud-moon:before { + content: "\f6c3"; } + +.fa-cloud-moon-rain:before { + content: "\f73c"; } + +.fa-cloud-music:before { + content: "\f8ae"; } + +.fa-cloud-rain:before { + content: "\f73d"; } + +.fa-cloud-rainbow:before { + content: "\f73e"; } + +.fa-cloud-showers:before { + content: "\f73f"; } + +.fa-cloud-showers-heavy:before { + content: "\f740"; } + +.fa-cloud-sleet:before { + content: "\f741"; } + +.fa-cloud-snow:before { + content: "\f742"; } + +.fa-cloud-sun:before { + content: "\f6c4"; } + +.fa-cloud-sun-rain:before { + content: "\f743"; } + +.fa-cloud-upload:before { + content: "\f0ee"; } + +.fa-cloud-upload-alt:before { + content: "\f382"; } + +.fa-clouds:before { + content: "\f744"; } + +.fa-clouds-moon:before { + content: "\f745"; } + +.fa-clouds-sun:before { + content: "\f746"; } + +.fa-cloudscale:before { + content: "\f383"; } + +.fa-cloudsmith:before { + content: "\f384"; } + +.fa-cloudversify:before { + content: "\f385"; } + +.fa-club:before { + content: "\f327"; } + +.fa-cocktail:before { + content: "\f561"; } + +.fa-code:before { + content: "\f121"; } + +.fa-code-branch:before { + content: "\f126"; } + +.fa-code-commit:before { + content: "\f386"; } + +.fa-code-merge:before { + content: "\f387"; } + +.fa-codepen:before { + content: "\f1cb"; } + +.fa-codiepie:before { + content: "\f284"; } + +.fa-coffee:before { + content: "\f0f4"; } + +.fa-coffee-pot:before { + content: "\f902"; } + +.fa-coffee-togo:before { + content: "\f6c5"; } + +.fa-coffin:before { + content: "\f6c6"; } + +.fa-coffin-cross:before { + content: "\f951"; } + +.fa-cog:before { + content: "\f013"; } + +.fa-cogs:before { + content: "\f085"; } + +.fa-coin:before { + content: "\f85c"; } + +.fa-coins:before { + content: "\f51e"; } + +.fa-columns:before { + content: "\f0db"; } + +.fa-comet:before { + content: "\f903"; } + +.fa-comment:before { + content: "\f075"; } + +.fa-comment-alt:before { + content: "\f27a"; } + +.fa-comment-alt-check:before { + content: "\f4a2"; } + +.fa-comment-alt-dollar:before { + content: "\f650"; } + +.fa-comment-alt-dots:before { + content: "\f4a3"; } + +.fa-comment-alt-edit:before { + content: "\f4a4"; } + +.fa-comment-alt-exclamation:before { + content: "\f4a5"; } + +.fa-comment-alt-lines:before { + content: "\f4a6"; } + +.fa-comment-alt-medical:before { + content: "\f7f4"; } + +.fa-comment-alt-minus:before { + content: "\f4a7"; } + +.fa-comment-alt-music:before { + content: "\f8af"; } + +.fa-comment-alt-plus:before { + content: "\f4a8"; } + +.fa-comment-alt-slash:before { + content: "\f4a9"; } + +.fa-comment-alt-smile:before { + content: "\f4aa"; } + +.fa-comment-alt-times:before { + content: "\f4ab"; } + +.fa-comment-check:before { + content: "\f4ac"; } + +.fa-comment-dollar:before { + content: "\f651"; } + +.fa-comment-dots:before { + content: "\f4ad"; } + +.fa-comment-edit:before { + content: "\f4ae"; } + +.fa-comment-exclamation:before { + content: "\f4af"; } + +.fa-comment-lines:before { + content: "\f4b0"; } + +.fa-comment-medical:before { + content: "\f7f5"; } + +.fa-comment-minus:before { + content: "\f4b1"; } + +.fa-comment-music:before { + content: "\f8b0"; } + +.fa-comment-plus:before { + content: "\f4b2"; } + +.fa-comment-slash:before { + content: "\f4b3"; } + +.fa-comment-smile:before { + content: "\f4b4"; } + +.fa-comment-times:before { + content: "\f4b5"; } + +.fa-comments:before { + content: "\f086"; } + +.fa-comments-alt:before { + content: "\f4b6"; } + +.fa-comments-alt-dollar:before { + content: "\f652"; } + +.fa-comments-dollar:before { + content: "\f653"; } + +.fa-compact-disc:before { + content: "\f51f"; } + +.fa-compass:before { + content: "\f14e"; } + +.fa-compass-slash:before { + content: "\f5e9"; } + +.fa-compress:before { + content: "\f066"; } + +.fa-compress-alt:before { + content: "\f422"; } + +.fa-compress-arrows-alt:before { + content: "\f78c"; } + +.fa-compress-wide:before { + content: "\f326"; } + +.fa-computer-classic:before { + content: "\f8b1"; } + +.fa-computer-speaker:before { + content: "\f8b2"; } + +.fa-concierge-bell:before { + content: "\f562"; } + +.fa-confluence:before { + content: "\f78d"; } + +.fa-connectdevelop:before { + content: "\f20e"; } + +.fa-construction:before { + content: "\f85d"; } + +.fa-container-storage:before { + content: "\f4b7"; } + +.fa-contao:before { + content: "\f26d"; } + +.fa-conveyor-belt:before { + content: "\f46e"; } + +.fa-conveyor-belt-alt:before { + content: "\f46f"; } + +.fa-cookie:before { + content: "\f563"; } + +.fa-cookie-bite:before { + content: "\f564"; } + +.fa-copy:before { + content: "\f0c5"; } + +.fa-copyright:before { + content: "\f1f9"; } + +.fa-corn:before { + content: "\f6c7"; } + +.fa-cotton-bureau:before { + content: "\f89e"; } + +.fa-couch:before { + content: "\f4b8"; } + +.fa-cow:before { + content: "\f6c8"; } + +.fa-cowbell:before { + content: "\f8b3"; } + +.fa-cowbell-more:before { + content: "\f8b4"; } + +.fa-cpanel:before { + content: "\f388"; } + +.fa-creative-commons:before { + content: "\f25e"; } + +.fa-creative-commons-by:before { + content: "\f4e7"; } + +.fa-creative-commons-nc:before { + content: "\f4e8"; } + +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; } + +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; } + +.fa-creative-commons-nd:before { + content: "\f4eb"; } + +.fa-creative-commons-pd:before { + content: "\f4ec"; } + +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; } + +.fa-creative-commons-remix:before { + content: "\f4ee"; } + +.fa-creative-commons-sa:before { + content: "\f4ef"; } + +.fa-creative-commons-sampling:before { + content: "\f4f0"; } + +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; } + +.fa-creative-commons-share:before { + content: "\f4f2"; } + +.fa-creative-commons-zero:before { + content: "\f4f3"; } + +.fa-credit-card:before { + content: "\f09d"; } + +.fa-credit-card-blank:before { + content: "\f389"; } + +.fa-credit-card-front:before { + content: "\f38a"; } + +.fa-cricket:before { + content: "\f449"; } + +.fa-critical-role:before { + content: "\f6c9"; } + +.fa-croissant:before { + content: "\f7f6"; } + +.fa-crop:before { + content: "\f125"; } + +.fa-crop-alt:before { + content: "\f565"; } + +.fa-cross:before { + content: "\f654"; } + +.fa-crosshairs:before { + content: "\f05b"; } + +.fa-crow:before { + content: "\f520"; } + +.fa-crown:before { + content: "\f521"; } + +.fa-crutch:before { + content: "\f7f7"; } + +.fa-crutches:before { + content: "\f7f8"; } + +.fa-css3:before { + content: "\f13c"; } + +.fa-css3-alt:before { + content: "\f38b"; } + +.fa-cube:before { + content: "\f1b2"; } + +.fa-cubes:before { + content: "\f1b3"; } + +.fa-curling:before { + content: "\f44a"; } + +.fa-cut:before { + content: "\f0c4"; } + +.fa-cuttlefish:before { + content: "\f38c"; } + +.fa-d-and-d:before { + content: "\f38d"; } + +.fa-d-and-d-beyond:before { + content: "\f6ca"; } + +.fa-dagger:before { + content: "\f6cb"; } + +.fa-dailymotion:before { + content: "\f952"; } + +.fa-dashcube:before { + content: "\f210"; } + +.fa-database:before { + content: "\f1c0"; } + +.fa-deaf:before { + content: "\f2a4"; } + +.fa-debug:before { + content: "\f7f9"; } + +.fa-deer:before { + content: "\f78e"; } + +.fa-deer-rudolph:before { + content: "\f78f"; } + +.fa-deezer:before { + content: "\f977"; } + +.fa-delicious:before { + content: "\f1a5"; } + +.fa-democrat:before { + content: "\f747"; } + +.fa-deploydog:before { + content: "\f38e"; } + +.fa-deskpro:before { + content: "\f38f"; } + +.fa-desktop:before { + content: "\f108"; } + +.fa-desktop-alt:before { + content: "\f390"; } + +.fa-dev:before { + content: "\f6cc"; } + +.fa-deviantart:before { + content: "\f1bd"; } + +.fa-dewpoint:before { + content: "\f748"; } + +.fa-dharmachakra:before { + content: "\f655"; } + +.fa-dhl:before { + content: "\f790"; } + +.fa-diagnoses:before { + content: "\f470"; } + +.fa-diamond:before { + content: "\f219"; } + +.fa-diaspora:before { + content: "\f791"; } + +.fa-dice:before { + content: "\f522"; } + +.fa-dice-d10:before { + content: "\f6cd"; } + +.fa-dice-d12:before { + content: "\f6ce"; } + +.fa-dice-d20:before { + content: "\f6cf"; } + +.fa-dice-d4:before { + content: "\f6d0"; } + +.fa-dice-d6:before { + content: "\f6d1"; } + +.fa-dice-d8:before { + content: "\f6d2"; } + +.fa-dice-five:before { + content: "\f523"; } + +.fa-dice-four:before { + content: "\f524"; } + +.fa-dice-one:before { + content: "\f525"; } + +.fa-dice-six:before { + content: "\f526"; } + +.fa-dice-three:before { + content: "\f527"; } + +.fa-dice-two:before { + content: "\f528"; } + +.fa-digg:before { + content: "\f1a6"; } + +.fa-digging:before { + content: "\f85e"; } + +.fa-digital-ocean:before { + content: "\f391"; } + +.fa-digital-tachograph:before { + content: "\f566"; } + +.fa-diploma:before { + content: "\f5ea"; } + +.fa-directions:before { + content: "\f5eb"; } + +.fa-disc-drive:before { + content: "\f8b5"; } + +.fa-discord:before { + content: "\f392"; } + +.fa-discourse:before { + content: "\f393"; } + +.fa-disease:before { + content: "\f7fa"; } + +.fa-divide:before { + content: "\f529"; } + +.fa-dizzy:before { + content: "\f567"; } + +.fa-dna:before { + content: "\f471"; } + +.fa-do-not-enter:before { + content: "\f5ec"; } + +.fa-dochub:before { + content: "\f394"; } + +.fa-docker:before { + content: "\f395"; } + +.fa-dog:before { + content: "\f6d3"; } + +.fa-dog-leashed:before { + content: "\f6d4"; } + +.fa-dollar-sign:before { + content: "\f155"; } + +.fa-dolly:before { + content: "\f472"; } + +.fa-dolly-empty:before { + content: "\f473"; } + +.fa-dolly-flatbed:before { + content: "\f474"; } + +.fa-dolly-flatbed-alt:before { + content: "\f475"; } + +.fa-dolly-flatbed-empty:before { + content: "\f476"; } + +.fa-donate:before { + content: "\f4b9"; } + +.fa-door-closed:before { + content: "\f52a"; } + +.fa-door-open:before { + content: "\f52b"; } + +.fa-dot-circle:before { + content: "\f192"; } + +.fa-dove:before { + content: "\f4ba"; } + +.fa-download:before { + content: "\f019"; } + +.fa-draft2digital:before { + content: "\f396"; } + +.fa-drafting-compass:before { + content: "\f568"; } + +.fa-dragon:before { + content: "\f6d5"; } + +.fa-draw-circle:before { + content: "\f5ed"; } + +.fa-draw-polygon:before { + content: "\f5ee"; } + +.fa-draw-square:before { + content: "\f5ef"; } + +.fa-dreidel:before { + content: "\f792"; } + +.fa-dribbble:before { + content: "\f17d"; } + +.fa-dribbble-square:before { + content: "\f397"; } + +.fa-drone:before { + content: "\f85f"; } + +.fa-drone-alt:before { + content: "\f860"; } + +.fa-dropbox:before { + content: "\f16b"; } + +.fa-drum:before { + content: "\f569"; } + +.fa-drum-steelpan:before { + content: "\f56a"; } + +.fa-drumstick:before { + content: "\f6d6"; } + +.fa-drumstick-bite:before { + content: "\f6d7"; } + +.fa-drupal:before { + content: "\f1a9"; } + +.fa-dryer:before { + content: "\f861"; } + +.fa-dryer-alt:before { + content: "\f862"; } + +.fa-duck:before { + content: "\f6d8"; } + +.fa-dumbbell:before { + content: "\f44b"; } + +.fa-dumpster:before { + content: "\f793"; } + +.fa-dumpster-fire:before { + content: "\f794"; } + +.fa-dungeon:before { + content: "\f6d9"; } + +.fa-dyalog:before { + content: "\f399"; } + +.fa-ear:before { + content: "\f5f0"; } + +.fa-ear-muffs:before { + content: "\f795"; } + +.fa-earlybirds:before { + content: "\f39a"; } + +.fa-ebay:before { + content: "\f4f4"; } + +.fa-eclipse:before { + content: "\f749"; } + +.fa-eclipse-alt:before { + content: "\f74a"; } + +.fa-edge:before { + content: "\f282"; } + +.fa-edge-legacy:before { + content: "\f978"; } + +.fa-edit:before { + content: "\f044"; } + +.fa-egg:before { + content: "\f7fb"; } + +.fa-egg-fried:before { + content: "\f7fc"; } + +.fa-eject:before { + content: "\f052"; } + +.fa-elementor:before { + content: "\f430"; } + +.fa-elephant:before { + content: "\f6da"; } + +.fa-ellipsis-h:before { + content: "\f141"; } + +.fa-ellipsis-h-alt:before { + content: "\f39b"; } + +.fa-ellipsis-v:before { + content: "\f142"; } + +.fa-ellipsis-v-alt:before { + content: "\f39c"; } + +.fa-ello:before { + content: "\f5f1"; } + +.fa-ember:before { + content: "\f423"; } + +.fa-empire:before { + content: "\f1d1"; } + +.fa-empty-set:before { + content: "\f656"; } + +.fa-engine-warning:before { + content: "\f5f2"; } + +.fa-envelope:before { + content: "\f0e0"; } + +.fa-envelope-open:before { + content: "\f2b6"; } + +.fa-envelope-open-dollar:before { + content: "\f657"; } + +.fa-envelope-open-text:before { + content: "\f658"; } + +.fa-envelope-square:before { + content: "\f199"; } + +.fa-envira:before { + content: "\f299"; } + +.fa-equals:before { + content: "\f52c"; } + +.fa-eraser:before { + content: "\f12d"; } + +.fa-erlang:before { + content: "\f39d"; } + +.fa-ethereum:before { + content: "\f42e"; } + +.fa-ethernet:before { + content: "\f796"; } + +.fa-etsy:before { + content: "\f2d7"; } + +.fa-euro-sign:before { + content: "\f153"; } + +.fa-evernote:before { + content: "\f839"; } + +.fa-exchange:before { + content: "\f0ec"; } + +.fa-exchange-alt:before { + content: "\f362"; } + +.fa-exclamation:before { + content: "\f12a"; } + +.fa-exclamation-circle:before { + content: "\f06a"; } + +.fa-exclamation-square:before { + content: "\f321"; } + +.fa-exclamation-triangle:before { + content: "\f071"; } + +.fa-expand:before { + content: "\f065"; } + +.fa-expand-alt:before { + content: "\f424"; } + +.fa-expand-arrows:before { + content: "\f31d"; } + +.fa-expand-arrows-alt:before { + content: "\f31e"; } + +.fa-expand-wide:before { + content: "\f320"; } + +.fa-expeditedssl:before { + content: "\f23e"; } + +.fa-external-link:before { + content: "\f08e"; } + +.fa-external-link-alt:before { + content: "\f35d"; } + +.fa-external-link-square:before { + content: "\f14c"; } + +.fa-external-link-square-alt:before { + content: "\f360"; } + +.fa-eye:before { + content: "\f06e"; } + +.fa-eye-dropper:before { + content: "\f1fb"; } + +.fa-eye-evil:before { + content: "\f6db"; } + +.fa-eye-slash:before { + content: "\f070"; } + +.fa-facebook:before { + content: "\f09a"; } + +.fa-facebook-f:before { + content: "\f39e"; } + +.fa-facebook-messenger:before { + content: "\f39f"; } + +.fa-facebook-square:before { + content: "\f082"; } + +.fa-fan:before { + content: "\f863"; } + +.fa-fan-table:before { + content: "\f904"; } + +.fa-fantasy-flight-games:before { + content: "\f6dc"; } + +.fa-farm:before { + content: "\f864"; } + +.fa-fast-backward:before { + content: "\f049"; } + +.fa-fast-forward:before { + content: "\f050"; } + +.fa-faucet:before { + content: "\f905"; } + +.fa-faucet-drip:before { + content: "\f906"; } + +.fa-fax:before { + content: "\f1ac"; } + +.fa-feather:before { + content: "\f52d"; } + +.fa-feather-alt:before { + content: "\f56b"; } + +.fa-fedex:before { + content: "\f797"; } + +.fa-fedora:before { + content: "\f798"; } + +.fa-female:before { + content: "\f182"; } + +.fa-field-hockey:before { + content: "\f44c"; } + +.fa-fighter-jet:before { + content: "\f0fb"; } + +.fa-figma:before { + content: "\f799"; } + +.fa-file:before { + content: "\f15b"; } + +.fa-file-alt:before { + content: "\f15c"; } + +.fa-file-archive:before { + content: "\f1c6"; } + +.fa-file-audio:before { + content: "\f1c7"; } + +.fa-file-certificate:before { + content: "\f5f3"; } + +.fa-file-chart-line:before { + content: "\f659"; } + +.fa-file-chart-pie:before { + content: "\f65a"; } + +.fa-file-check:before { + content: "\f316"; } + +.fa-file-code:before { + content: "\f1c9"; } + +.fa-file-contract:before { + content: "\f56c"; } + +.fa-file-csv:before { + content: "\f6dd"; } + +.fa-file-download:before { + content: "\f56d"; } + +.fa-file-edit:before { + content: "\f31c"; } + +.fa-file-excel:before { + content: "\f1c3"; } + +.fa-file-exclamation:before { + content: "\f31a"; } + +.fa-file-export:before { + content: "\f56e"; } + +.fa-file-image:before { + content: "\f1c5"; } + +.fa-file-import:before { + content: "\f56f"; } + +.fa-file-invoice:before { + content: "\f570"; } + +.fa-file-invoice-dollar:before { + content: "\f571"; } + +.fa-file-medical:before { + content: "\f477"; } + +.fa-file-medical-alt:before { + content: "\f478"; } + +.fa-file-minus:before { + content: "\f318"; } + +.fa-file-music:before { + content: "\f8b6"; } + +.fa-file-pdf:before { + content: "\f1c1"; } + +.fa-file-plus:before { + content: "\f319"; } + +.fa-file-powerpoint:before { + content: "\f1c4"; } + +.fa-file-prescription:before { + content: "\f572"; } + +.fa-file-search:before { + content: "\f865"; } + +.fa-file-signature:before { + content: "\f573"; } + +.fa-file-spreadsheet:before { + content: "\f65b"; } + +.fa-file-times:before { + content: "\f317"; } + +.fa-file-upload:before { + content: "\f574"; } + +.fa-file-user:before { + content: "\f65c"; } + +.fa-file-video:before { + content: "\f1c8"; } + +.fa-file-word:before { + content: "\f1c2"; } + +.fa-files-medical:before { + content: "\f7fd"; } + +.fa-fill:before { + content: "\f575"; } + +.fa-fill-drip:before { + content: "\f576"; } + +.fa-film:before { + content: "\f008"; } + +.fa-film-alt:before { + content: "\f3a0"; } + +.fa-film-canister:before { + content: "\f8b7"; } + +.fa-filter:before { + content: "\f0b0"; } + +.fa-fingerprint:before { + content: "\f577"; } + +.fa-fire:before { + content: "\f06d"; } + +.fa-fire-alt:before { + content: "\f7e4"; } + +.fa-fire-extinguisher:before { + content: "\f134"; } + +.fa-fire-smoke:before { + content: "\f74b"; } + +.fa-firefox:before { + content: "\f269"; } + +.fa-firefox-browser:before { + content: "\f907"; } + +.fa-fireplace:before { + content: "\f79a"; } + +.fa-first-aid:before { + content: "\f479"; } + +.fa-first-order:before { + content: "\f2b0"; } + +.fa-first-order-alt:before { + content: "\f50a"; } + +.fa-firstdraft:before { + content: "\f3a1"; } + +.fa-fish:before { + content: "\f578"; } + +.fa-fish-cooked:before { + content: "\f7fe"; } + +.fa-fist-raised:before { + content: "\f6de"; } + +.fa-flag:before { + content: "\f024"; } + +.fa-flag-alt:before { + content: "\f74c"; } + +.fa-flag-checkered:before { + content: "\f11e"; } + +.fa-flag-usa:before { + content: "\f74d"; } + +.fa-flame:before { + content: "\f6df"; } + +.fa-flashlight:before { + content: "\f8b8"; } + +.fa-flask:before { + content: "\f0c3"; } + +.fa-flask-poison:before { + content: "\f6e0"; } + +.fa-flask-potion:before { + content: "\f6e1"; } + +.fa-flickr:before { + content: "\f16e"; } + +.fa-flipboard:before { + content: "\f44d"; } + +.fa-flower:before { + content: "\f7ff"; } + +.fa-flower-daffodil:before { + content: "\f800"; } + +.fa-flower-tulip:before { + content: "\f801"; } + +.fa-flushed:before { + content: "\f579"; } + +.fa-flute:before { + content: "\f8b9"; } + +.fa-flux-capacitor:before { + content: "\f8ba"; } + +.fa-fly:before { + content: "\f417"; } + +.fa-fog:before { + content: "\f74e"; } + +.fa-folder:before { + content: "\f07b"; } + +.fa-folder-download:before { + content: "\f953"; } + +.fa-folder-minus:before { + content: "\f65d"; } + +.fa-folder-open:before { + content: "\f07c"; } + +.fa-folder-plus:before { + content: "\f65e"; } + +.fa-folder-times:before { + content: "\f65f"; } + +.fa-folder-tree:before { + content: "\f802"; } + +.fa-folder-upload:before { + content: "\f954"; } + +.fa-folders:before { + content: "\f660"; } + +.fa-font:before { + content: "\f031"; } + +.fa-font-awesome:before { + content: "\f2b4"; } + +.fa-font-awesome-alt:before { + content: "\f35c"; } + +.fa-font-awesome-flag:before { + content: "\f425"; } + +.fa-font-awesome-logo-full:before { + content: "\f4e6"; } + +.fa-font-case:before { + content: "\f866"; } + +.fa-fonticons:before { + content: "\f280"; } + +.fa-fonticons-fi:before { + content: "\f3a2"; } + +.fa-football-ball:before { + content: "\f44e"; } + +.fa-football-helmet:before { + content: "\f44f"; } + +.fa-forklift:before { + content: "\f47a"; } + +.fa-fort-awesome:before { + content: "\f286"; } + +.fa-fort-awesome-alt:before { + content: "\f3a3"; } + +.fa-forumbee:before { + content: "\f211"; } + +.fa-forward:before { + content: "\f04e"; } + +.fa-foursquare:before { + content: "\f180"; } + +.fa-fragile:before { + content: "\f4bb"; } + +.fa-free-code-camp:before { + content: "\f2c5"; } + +.fa-freebsd:before { + content: "\f3a4"; } + +.fa-french-fries:before { + content: "\f803"; } + +.fa-frog:before { + content: "\f52e"; } + +.fa-frosty-head:before { + content: "\f79b"; } + +.fa-frown:before { + content: "\f119"; } + +.fa-frown-open:before { + content: "\f57a"; } + +.fa-fulcrum:before { + content: "\f50b"; } + +.fa-function:before { + content: "\f661"; } + +.fa-funnel-dollar:before { + content: "\f662"; } + +.fa-futbol:before { + content: "\f1e3"; } + +.fa-galactic-republic:before { + content: "\f50c"; } + +.fa-galactic-senate:before { + content: "\f50d"; } + +.fa-galaxy:before { + content: "\f908"; } + +.fa-game-board:before { + content: "\f867"; } + +.fa-game-board-alt:before { + content: "\f868"; } + +.fa-game-console-handheld:before { + content: "\f8bb"; } + +.fa-gamepad:before { + content: "\f11b"; } + +.fa-gamepad-alt:before { + content: "\f8bc"; } + +.fa-garage:before { + content: "\f909"; } + +.fa-garage-car:before { + content: "\f90a"; } + +.fa-garage-open:before { + content: "\f90b"; } + +.fa-gas-pump:before { + content: "\f52f"; } + +.fa-gas-pump-slash:before { + content: "\f5f4"; } + +.fa-gavel:before { + content: "\f0e3"; } + +.fa-gem:before { + content: "\f3a5"; } + +.fa-genderless:before { + content: "\f22d"; } + +.fa-get-pocket:before { + content: "\f265"; } + +.fa-gg:before { + content: "\f260"; } + +.fa-gg-circle:before { + content: "\f261"; } + +.fa-ghost:before { + content: "\f6e2"; } + +.fa-gift:before { + content: "\f06b"; } + +.fa-gift-card:before { + content: "\f663"; } + +.fa-gifts:before { + content: "\f79c"; } + +.fa-gingerbread-man:before { + content: "\f79d"; } + +.fa-git:before { + content: "\f1d3"; } + +.fa-git-alt:before { + content: "\f841"; } + +.fa-git-square:before { + content: "\f1d2"; } + +.fa-github:before { + content: "\f09b"; } + +.fa-github-alt:before { + content: "\f113"; } + +.fa-github-square:before { + content: "\f092"; } + +.fa-gitkraken:before { + content: "\f3a6"; } + +.fa-gitlab:before { + content: "\f296"; } + +.fa-gitter:before { + content: "\f426"; } + +.fa-glass:before { + content: "\f804"; } + +.fa-glass-champagne:before { + content: "\f79e"; } + +.fa-glass-cheers:before { + content: "\f79f"; } + +.fa-glass-citrus:before { + content: "\f869"; } + +.fa-glass-martini:before { + content: "\f000"; } + +.fa-glass-martini-alt:before { + content: "\f57b"; } + +.fa-glass-whiskey:before { + content: "\f7a0"; } + +.fa-glass-whiskey-rocks:before { + content: "\f7a1"; } + +.fa-glasses:before { + content: "\f530"; } + +.fa-glasses-alt:before { + content: "\f5f5"; } + +.fa-glide:before { + content: "\f2a5"; } + +.fa-glide-g:before { + content: "\f2a6"; } + +.fa-globe:before { + content: "\f0ac"; } + +.fa-globe-africa:before { + content: "\f57c"; } + +.fa-globe-americas:before { + content: "\f57d"; } + +.fa-globe-asia:before { + content: "\f57e"; } + +.fa-globe-europe:before { + content: "\f7a2"; } + +.fa-globe-snow:before { + content: "\f7a3"; } + +.fa-globe-stand:before { + content: "\f5f6"; } + +.fa-gofore:before { + content: "\f3a7"; } + +.fa-golf-ball:before { + content: "\f450"; } + +.fa-golf-club:before { + content: "\f451"; } + +.fa-goodreads:before { + content: "\f3a8"; } + +.fa-goodreads-g:before { + content: "\f3a9"; } + +.fa-google:before { + content: "\f1a0"; } + +.fa-google-drive:before { + content: "\f3aa"; } + +.fa-google-pay:before { + content: "\f979"; } + +.fa-google-play:before { + content: "\f3ab"; } + +.fa-google-plus:before { + content: "\f2b3"; } + +.fa-google-plus-g:before { + content: "\f0d5"; } + +.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa-google-wallet:before { + content: "\f1ee"; } + +.fa-gopuram:before { + content: "\f664"; } + +.fa-graduation-cap:before { + content: "\f19d"; } + +.fa-gramophone:before { + content: "\f8bd"; } + +.fa-gratipay:before { + content: "\f184"; } + +.fa-grav:before { + content: "\f2d6"; } + +.fa-greater-than:before { + content: "\f531"; } + +.fa-greater-than-equal:before { + content: "\f532"; } + +.fa-grimace:before { + content: "\f57f"; } + +.fa-grin:before { + content: "\f580"; } + +.fa-grin-alt:before { + content: "\f581"; } + +.fa-grin-beam:before { + content: "\f582"; } + +.fa-grin-beam-sweat:before { + content: "\f583"; } + +.fa-grin-hearts:before { + content: "\f584"; } + +.fa-grin-squint:before { + content: "\f585"; } + +.fa-grin-squint-tears:before { + content: "\f586"; } + +.fa-grin-stars:before { + content: "\f587"; } + +.fa-grin-tears:before { + content: "\f588"; } + +.fa-grin-tongue:before { + content: "\f589"; } + +.fa-grin-tongue-squint:before { + content: "\f58a"; } + +.fa-grin-tongue-wink:before { + content: "\f58b"; } + +.fa-grin-wink:before { + content: "\f58c"; } + +.fa-grip-horizontal:before { + content: "\f58d"; } + +.fa-grip-lines:before { + content: "\f7a4"; } + +.fa-grip-lines-vertical:before { + content: "\f7a5"; } + +.fa-grip-vertical:before { + content: "\f58e"; } + +.fa-gripfire:before { + content: "\f3ac"; } + +.fa-grunt:before { + content: "\f3ad"; } + +.fa-guitar:before { + content: "\f7a6"; } + +.fa-guitar-electric:before { + content: "\f8be"; } + +.fa-guitars:before { + content: "\f8bf"; } + +.fa-gulp:before { + content: "\f3ae"; } + +.fa-h-square:before { + content: "\f0fd"; } + +.fa-h1:before { + content: "\f313"; } + +.fa-h2:before { + content: "\f314"; } + +.fa-h3:before { + content: "\f315"; } + +.fa-h4:before { + content: "\f86a"; } + +.fa-hacker-news:before { + content: "\f1d4"; } + +.fa-hacker-news-square:before { + content: "\f3af"; } + +.fa-hackerrank:before { + content: "\f5f7"; } + +.fa-hamburger:before { + content: "\f805"; } + +.fa-hammer:before { + content: "\f6e3"; } + +.fa-hammer-war:before { + content: "\f6e4"; } + +.fa-hamsa:before { + content: "\f665"; } + +.fa-hand-heart:before { + content: "\f4bc"; } + +.fa-hand-holding:before { + content: "\f4bd"; } + +.fa-hand-holding-box:before { + content: "\f47b"; } + +.fa-hand-holding-heart:before { + content: "\f4be"; } + +.fa-hand-holding-magic:before { + content: "\f6e5"; } + +.fa-hand-holding-medical:before { + content: "\f95c"; } + +.fa-hand-holding-seedling:before { + content: "\f4bf"; } + +.fa-hand-holding-usd:before { + content: "\f4c0"; } + +.fa-hand-holding-water:before { + content: "\f4c1"; } + +.fa-hand-lizard:before { + content: "\f258"; } + +.fa-hand-middle-finger:before { + content: "\f806"; } + +.fa-hand-paper:before { + content: "\f256"; } + +.fa-hand-peace:before { + content: "\f25b"; } + +.fa-hand-point-down:before { + content: "\f0a7"; } + +.fa-hand-point-left:before { + content: "\f0a5"; } + +.fa-hand-point-right:before { + content: "\f0a4"; } + +.fa-hand-point-up:before { + content: "\f0a6"; } + +.fa-hand-pointer:before { + content: "\f25a"; } + +.fa-hand-receiving:before { + content: "\f47c"; } + +.fa-hand-rock:before { + content: "\f255"; } + +.fa-hand-scissors:before { + content: "\f257"; } + +.fa-hand-sparkles:before { + content: "\f95d"; } + +.fa-hand-spock:before { + content: "\f259"; } + +.fa-hands:before { + content: "\f4c2"; } + +.fa-hands-heart:before { + content: "\f4c3"; } + +.fa-hands-helping:before { + content: "\f4c4"; } + +.fa-hands-usd:before { + content: "\f4c5"; } + +.fa-hands-wash:before { + content: "\f95e"; } + +.fa-handshake:before { + content: "\f2b5"; } + +.fa-handshake-alt:before { + content: "\f4c6"; } + +.fa-handshake-alt-slash:before { + content: "\f95f"; } + +.fa-handshake-slash:before { + content: "\f960"; } + +.fa-hanukiah:before { + content: "\f6e6"; } + +.fa-hard-hat:before { + content: "\f807"; } + +.fa-hashtag:before { + content: "\f292"; } + +.fa-hat-chef:before { + content: "\f86b"; } + +.fa-hat-cowboy:before { + content: "\f8c0"; } + +.fa-hat-cowboy-side:before { + content: "\f8c1"; } + +.fa-hat-santa:before { + content: "\f7a7"; } + +.fa-hat-winter:before { + content: "\f7a8"; } + +.fa-hat-witch:before { + content: "\f6e7"; } + +.fa-hat-wizard:before { + content: "\f6e8"; } + +.fa-hdd:before { + content: "\f0a0"; } + +.fa-head-side:before { + content: "\f6e9"; } + +.fa-head-side-brain:before { + content: "\f808"; } + +.fa-head-side-cough:before { + content: "\f961"; } + +.fa-head-side-cough-slash:before { + content: "\f962"; } + +.fa-head-side-headphones:before { + content: "\f8c2"; } + +.fa-head-side-mask:before { + content: "\f963"; } + +.fa-head-side-medical:before { + content: "\f809"; } + +.fa-head-side-virus:before { + content: "\f964"; } + +.fa-head-vr:before { + content: "\f6ea"; } + +.fa-heading:before { + content: "\f1dc"; } + +.fa-headphones:before { + content: "\f025"; } + +.fa-headphones-alt:before { + content: "\f58f"; } + +.fa-headset:before { + content: "\f590"; } + +.fa-heart:before { + content: "\f004"; } + +.fa-heart-broken:before { + content: "\f7a9"; } + +.fa-heart-circle:before { + content: "\f4c7"; } + +.fa-heart-rate:before { + content: "\f5f8"; } + +.fa-heart-square:before { + content: "\f4c8"; } + +.fa-heartbeat:before { + content: "\f21e"; } + +.fa-heat:before { + content: "\f90c"; } + +.fa-helicopter:before { + content: "\f533"; } + +.fa-helmet-battle:before { + content: "\f6eb"; } + +.fa-hexagon:before { + content: "\f312"; } + +.fa-highlighter:before { + content: "\f591"; } + +.fa-hiking:before { + content: "\f6ec"; } + +.fa-hippo:before { + content: "\f6ed"; } + +.fa-hips:before { + content: "\f452"; } + +.fa-hire-a-helper:before { + content: "\f3b0"; } + +.fa-history:before { + content: "\f1da"; } + +.fa-hockey-mask:before { + content: "\f6ee"; } + +.fa-hockey-puck:before { + content: "\f453"; } + +.fa-hockey-sticks:before { + content: "\f454"; } + +.fa-holly-berry:before { + content: "\f7aa"; } + +.fa-home:before { + content: "\f015"; } + +.fa-home-alt:before { + content: "\f80a"; } + +.fa-home-heart:before { + content: "\f4c9"; } + +.fa-home-lg:before { + content: "\f80b"; } + +.fa-home-lg-alt:before { + content: "\f80c"; } + +.fa-hood-cloak:before { + content: "\f6ef"; } + +.fa-hooli:before { + content: "\f427"; } + +.fa-horizontal-rule:before { + content: "\f86c"; } + +.fa-hornbill:before { + content: "\f592"; } + +.fa-horse:before { + content: "\f6f0"; } + +.fa-horse-head:before { + content: "\f7ab"; } + +.fa-horse-saddle:before { + content: "\f8c3"; } + +.fa-hospital:before { + content: "\f0f8"; } + +.fa-hospital-alt:before { + content: "\f47d"; } + +.fa-hospital-symbol:before { + content: "\f47e"; } + +.fa-hospital-user:before { + content: "\f80d"; } + +.fa-hospitals:before { + content: "\f80e"; } + +.fa-hot-tub:before { + content: "\f593"; } + +.fa-hotdog:before { + content: "\f80f"; } + +.fa-hotel:before { + content: "\f594"; } + +.fa-hotjar:before { + content: "\f3b1"; } + +.fa-hourglass:before { + content: "\f254"; } + +.fa-hourglass-end:before { + content: "\f253"; } + +.fa-hourglass-half:before { + content: "\f252"; } + +.fa-hourglass-start:before { + content: "\f251"; } + +.fa-house:before { + content: "\f90d"; } + +.fa-house-damage:before { + content: "\f6f1"; } + +.fa-house-day:before { + content: "\f90e"; } + +.fa-house-flood:before { + content: "\f74f"; } + +.fa-house-leave:before { + content: "\f90f"; } + +.fa-house-night:before { + content: "\f910"; } + +.fa-house-return:before { + content: "\f911"; } + +.fa-house-signal:before { + content: "\f912"; } + +.fa-house-user:before { + content: "\f965"; } + +.fa-houzz:before { + content: "\f27c"; } + +.fa-hryvnia:before { + content: "\f6f2"; } + +.fa-html5:before { + content: "\f13b"; } + +.fa-hubspot:before { + content: "\f3b2"; } + +.fa-humidity:before { + content: "\f750"; } + +.fa-hurricane:before { + content: "\f751"; } + +.fa-i-cursor:before { + content: "\f246"; } + +.fa-ice-cream:before { + content: "\f810"; } + +.fa-ice-skate:before { + content: "\f7ac"; } + +.fa-icicles:before { + content: "\f7ad"; } + +.fa-icons:before { + content: "\f86d"; } + +.fa-icons-alt:before { + content: "\f86e"; } + +.fa-id-badge:before { + content: "\f2c1"; } + +.fa-id-card:before { + content: "\f2c2"; } + +.fa-id-card-alt:before { + content: "\f47f"; } + +.fa-ideal:before { + content: "\f913"; } + +.fa-igloo:before { + content: "\f7ae"; } + +.fa-image:before { + content: "\f03e"; } + +.fa-image-polaroid:before { + content: "\f8c4"; } + +.fa-images:before { + content: "\f302"; } + +.fa-imdb:before { + content: "\f2d8"; } + +.fa-inbox:before { + content: "\f01c"; } + +.fa-inbox-in:before { + content: "\f310"; } + +.fa-inbox-out:before { + content: "\f311"; } + +.fa-indent:before { + content: "\f03c"; } + +.fa-industry:before { + content: "\f275"; } + +.fa-industry-alt:before { + content: "\f3b3"; } + +.fa-infinity:before { + content: "\f534"; } + +.fa-info:before { + content: "\f129"; } + +.fa-info-circle:before { + content: "\f05a"; } + +.fa-info-square:before { + content: "\f30f"; } + +.fa-inhaler:before { + content: "\f5f9"; } + +.fa-instagram:before { + content: "\f16d"; } + +.fa-instagram-square:before { + content: "\f955"; } + +.fa-integral:before { + content: "\f667"; } + +.fa-intercom:before { + content: "\f7af"; } + +.fa-internet-explorer:before { + content: "\f26b"; } + +.fa-intersection:before { + content: "\f668"; } + +.fa-inventory:before { + content: "\f480"; } + +.fa-invision:before { + content: "\f7b0"; } + +.fa-ioxhost:before { + content: "\f208"; } + +.fa-island-tropical:before { + content: "\f811"; } + +.fa-italic:before { + content: "\f033"; } + +.fa-itch-io:before { + content: "\f83a"; } + +.fa-itunes:before { + content: "\f3b4"; } + +.fa-itunes-note:before { + content: "\f3b5"; } + +.fa-jack-o-lantern:before { + content: "\f30e"; } + +.fa-java:before { + content: "\f4e4"; } + +.fa-jedi:before { + content: "\f669"; } + +.fa-jedi-order:before { + content: "\f50e"; } + +.fa-jenkins:before { + content: "\f3b6"; } + +.fa-jira:before { + content: "\f7b1"; } + +.fa-joget:before { + content: "\f3b7"; } + +.fa-joint:before { + content: "\f595"; } + +.fa-joomla:before { + content: "\f1aa"; } + +.fa-journal-whills:before { + content: "\f66a"; } + +.fa-joystick:before { + content: "\f8c5"; } + +.fa-js:before { + content: "\f3b8"; } + +.fa-js-square:before { + content: "\f3b9"; } + +.fa-jsfiddle:before { + content: "\f1cc"; } + +.fa-jug:before { + content: "\f8c6"; } + +.fa-kaaba:before { + content: "\f66b"; } + +.fa-kaggle:before { + content: "\f5fa"; } + +.fa-kazoo:before { + content: "\f8c7"; } + +.fa-kerning:before { + content: "\f86f"; } + +.fa-key:before { + content: "\f084"; } + +.fa-key-skeleton:before { + content: "\f6f3"; } + +.fa-keybase:before { + content: "\f4f5"; } + +.fa-keyboard:before { + content: "\f11c"; } + +.fa-keycdn:before { + content: "\f3ba"; } + +.fa-keynote:before { + content: "\f66c"; } + +.fa-khanda:before { + content: "\f66d"; } + +.fa-kickstarter:before { + content: "\f3bb"; } + +.fa-kickstarter-k:before { + content: "\f3bc"; } + +.fa-kidneys:before { + content: "\f5fb"; } + +.fa-kiss:before { + content: "\f596"; } + +.fa-kiss-beam:before { + content: "\f597"; } + +.fa-kiss-wink-heart:before { + content: "\f598"; } + +.fa-kite:before { + content: "\f6f4"; } + +.fa-kiwi-bird:before { + content: "\f535"; } + +.fa-knife-kitchen:before { + content: "\f6f5"; } + +.fa-korvue:before { + content: "\f42f"; } + +.fa-lambda:before { + content: "\f66e"; } + +.fa-lamp:before { + content: "\f4ca"; } + +.fa-lamp-desk:before { + content: "\f914"; } + +.fa-lamp-floor:before { + content: "\f915"; } + +.fa-landmark:before { + content: "\f66f"; } + +.fa-landmark-alt:before { + content: "\f752"; } + +.fa-language:before { + content: "\f1ab"; } + +.fa-laptop:before { + content: "\f109"; } + +.fa-laptop-code:before { + content: "\f5fc"; } + +.fa-laptop-house:before { + content: "\f966"; } + +.fa-laptop-medical:before { + content: "\f812"; } + +.fa-laravel:before { + content: "\f3bd"; } + +.fa-lasso:before { + content: "\f8c8"; } + +.fa-lastfm:before { + content: "\f202"; } + +.fa-lastfm-square:before { + content: "\f203"; } + +.fa-laugh:before { + content: "\f599"; } + +.fa-laugh-beam:before { + content: "\f59a"; } + +.fa-laugh-squint:before { + content: "\f59b"; } + +.fa-laugh-wink:before { + content: "\f59c"; } + +.fa-layer-group:before { + content: "\f5fd"; } + +.fa-layer-minus:before { + content: "\f5fe"; } + +.fa-layer-plus:before { + content: "\f5ff"; } + +.fa-leaf:before { + content: "\f06c"; } + +.fa-leaf-heart:before { + content: "\f4cb"; } + +.fa-leaf-maple:before { + content: "\f6f6"; } + +.fa-leaf-oak:before { + content: "\f6f7"; } + +.fa-leanpub:before { + content: "\f212"; } + +.fa-lemon:before { + content: "\f094"; } + +.fa-less:before { + content: "\f41d"; } + +.fa-less-than:before { + content: "\f536"; } + +.fa-less-than-equal:before { + content: "\f537"; } + +.fa-level-down:before { + content: "\f149"; } + +.fa-level-down-alt:before { + content: "\f3be"; } + +.fa-level-up:before { + content: "\f148"; } + +.fa-level-up-alt:before { + content: "\f3bf"; } + +.fa-life-ring:before { + content: "\f1cd"; } + +.fa-light-ceiling:before { + content: "\f916"; } + +.fa-light-switch:before { + content: "\f917"; } + +.fa-light-switch-off:before { + content: "\f918"; } + +.fa-light-switch-on:before { + content: "\f919"; } + +.fa-lightbulb:before { + content: "\f0eb"; } + +.fa-lightbulb-dollar:before { + content: "\f670"; } + +.fa-lightbulb-exclamation:before { + content: "\f671"; } + +.fa-lightbulb-on:before { + content: "\f672"; } + +.fa-lightbulb-slash:before { + content: "\f673"; } + +.fa-lights-holiday:before { + content: "\f7b2"; } + +.fa-line:before { + content: "\f3c0"; } + +.fa-line-columns:before { + content: "\f870"; } + +.fa-line-height:before { + content: "\f871"; } + +.fa-link:before { + content: "\f0c1"; } + +.fa-linkedin:before { + content: "\f08c"; } + +.fa-linkedin-in:before { + content: "\f0e1"; } + +.fa-linode:before { + content: "\f2b8"; } + +.fa-linux:before { + content: "\f17c"; } + +.fa-lips:before { + content: "\f600"; } + +.fa-lira-sign:before { + content: "\f195"; } + +.fa-list:before { + content: "\f03a"; } + +.fa-list-alt:before { + content: "\f022"; } + +.fa-list-music:before { + content: "\f8c9"; } + +.fa-list-ol:before { + content: "\f0cb"; } + +.fa-list-ul:before { + content: "\f0ca"; } + +.fa-location:before { + content: "\f601"; } + +.fa-location-arrow:before { + content: "\f124"; } + +.fa-location-circle:before { + content: "\f602"; } + +.fa-location-slash:before { + content: "\f603"; } + +.fa-lock:before { + content: "\f023"; } + +.fa-lock-alt:before { + content: "\f30d"; } + +.fa-lock-open:before { + content: "\f3c1"; } + +.fa-lock-open-alt:before { + content: "\f3c2"; } + +.fa-long-arrow-alt-down:before { + content: "\f309"; } + +.fa-long-arrow-alt-left:before { + content: "\f30a"; } + +.fa-long-arrow-alt-right:before { + content: "\f30b"; } + +.fa-long-arrow-alt-up:before { + content: "\f30c"; } + +.fa-long-arrow-down:before { + content: "\f175"; } + +.fa-long-arrow-left:before { + content: "\f177"; } + +.fa-long-arrow-right:before { + content: "\f178"; } + +.fa-long-arrow-up:before { + content: "\f176"; } + +.fa-loveseat:before { + content: "\f4cc"; } + +.fa-low-vision:before { + content: "\f2a8"; } + +.fa-luchador:before { + content: "\f455"; } + +.fa-luggage-cart:before { + content: "\f59d"; } + +.fa-lungs:before { + content: "\f604"; } + +.fa-lungs-virus:before { + content: "\f967"; } + +.fa-lyft:before { + content: "\f3c3"; } + +.fa-mace:before { + content: "\f6f8"; } + +.fa-magento:before { + content: "\f3c4"; } + +.fa-magic:before { + content: "\f0d0"; } + +.fa-magnet:before { + content: "\f076"; } + +.fa-mail-bulk:before { + content: "\f674"; } + +.fa-mailbox:before { + content: "\f813"; } + +.fa-mailchimp:before { + content: "\f59e"; } + +.fa-male:before { + content: "\f183"; } + +.fa-mandalorian:before { + content: "\f50f"; } + +.fa-mandolin:before { + content: "\f6f9"; } + +.fa-map:before { + content: "\f279"; } + +.fa-map-marked:before { + content: "\f59f"; } + +.fa-map-marked-alt:before { + content: "\f5a0"; } + +.fa-map-marker:before { + content: "\f041"; } + +.fa-map-marker-alt:before { + content: "\f3c5"; } + +.fa-map-marker-alt-slash:before { + content: "\f605"; } + +.fa-map-marker-check:before { + content: "\f606"; } + +.fa-map-marker-edit:before { + content: "\f607"; } + +.fa-map-marker-exclamation:before { + content: "\f608"; } + +.fa-map-marker-minus:before { + content: "\f609"; } + +.fa-map-marker-plus:before { + content: "\f60a"; } + +.fa-map-marker-question:before { + content: "\f60b"; } + +.fa-map-marker-slash:before { + content: "\f60c"; } + +.fa-map-marker-smile:before { + content: "\f60d"; } + +.fa-map-marker-times:before { + content: "\f60e"; } + +.fa-map-pin:before { + content: "\f276"; } + +.fa-map-signs:before { + content: "\f277"; } + +.fa-markdown:before { + content: "\f60f"; } + +.fa-marker:before { + content: "\f5a1"; } + +.fa-mars:before { + content: "\f222"; } + +.fa-mars-double:before { + content: "\f227"; } + +.fa-mars-stroke:before { + content: "\f229"; } + +.fa-mars-stroke-h:before { + content: "\f22b"; } + +.fa-mars-stroke-v:before { + content: "\f22a"; } + +.fa-mask:before { + content: "\f6fa"; } + +.fa-mastodon:before { + content: "\f4f6"; } + +.fa-maxcdn:before { + content: "\f136"; } + +.fa-mdb:before { + content: "\f8ca"; } + +.fa-meat:before { + content: "\f814"; } + +.fa-medal:before { + content: "\f5a2"; } + +.fa-medapps:before { + content: "\f3c6"; } + +.fa-medium:before { + content: "\f23a"; } + +.fa-medium-m:before { + content: "\f3c7"; } + +.fa-medkit:before { + content: "\f0fa"; } + +.fa-medrt:before { + content: "\f3c8"; } + +.fa-meetup:before { + content: "\f2e0"; } + +.fa-megaphone:before { + content: "\f675"; } + +.fa-megaport:before { + content: "\f5a3"; } + +.fa-meh:before { + content: "\f11a"; } + +.fa-meh-blank:before { + content: "\f5a4"; } + +.fa-meh-rolling-eyes:before { + content: "\f5a5"; } + +.fa-memory:before { + content: "\f538"; } + +.fa-mendeley:before { + content: "\f7b3"; } + +.fa-menorah:before { + content: "\f676"; } + +.fa-mercury:before { + content: "\f223"; } + +.fa-meteor:before { + content: "\f753"; } + +.fa-microblog:before { + content: "\f91a"; } + +.fa-microchip:before { + content: "\f2db"; } + +.fa-microphone:before { + content: "\f130"; } + +.fa-microphone-alt:before { + content: "\f3c9"; } + +.fa-microphone-alt-slash:before { + content: "\f539"; } + +.fa-microphone-slash:before { + content: "\f131"; } + +.fa-microphone-stand:before { + content: "\f8cb"; } + +.fa-microscope:before { + content: "\f610"; } + +.fa-microsoft:before { + content: "\f3ca"; } + +.fa-microwave:before { + content: "\f91b"; } + +.fa-mind-share:before { + content: "\f677"; } + +.fa-minus:before { + content: "\f068"; } + +.fa-minus-circle:before { + content: "\f056"; } + +.fa-minus-hexagon:before { + content: "\f307"; } + +.fa-minus-octagon:before { + content: "\f308"; } + +.fa-minus-square:before { + content: "\f146"; } + +.fa-mistletoe:before { + content: "\f7b4"; } + +.fa-mitten:before { + content: "\f7b5"; } + +.fa-mix:before { + content: "\f3cb"; } + +.fa-mixcloud:before { + content: "\f289"; } + +.fa-mixer:before { + content: "\f956"; } + +.fa-mizuni:before { + content: "\f3cc"; } + +.fa-mobile:before { + content: "\f10b"; } + +.fa-mobile-alt:before { + content: "\f3cd"; } + +.fa-mobile-android:before { + content: "\f3ce"; } + +.fa-mobile-android-alt:before { + content: "\f3cf"; } + +.fa-modx:before { + content: "\f285"; } + +.fa-monero:before { + content: "\f3d0"; } + +.fa-money-bill:before { + content: "\f0d6"; } + +.fa-money-bill-alt:before { + content: "\f3d1"; } + +.fa-money-bill-wave:before { + content: "\f53a"; } + +.fa-money-bill-wave-alt:before { + content: "\f53b"; } + +.fa-money-check:before { + content: "\f53c"; } + +.fa-money-check-alt:before { + content: "\f53d"; } + +.fa-money-check-edit:before { + content: "\f872"; } + +.fa-money-check-edit-alt:before { + content: "\f873"; } + +.fa-monitor-heart-rate:before { + content: "\f611"; } + +.fa-monkey:before { + content: "\f6fb"; } + +.fa-monument:before { + content: "\f5a6"; } + +.fa-moon:before { + content: "\f186"; } + +.fa-moon-cloud:before { + content: "\f754"; } + +.fa-moon-stars:before { + content: "\f755"; } + +.fa-mortar-pestle:before { + content: "\f5a7"; } + +.fa-mosque:before { + content: "\f678"; } + +.fa-motorcycle:before { + content: "\f21c"; } + +.fa-mountain:before { + content: "\f6fc"; } + +.fa-mountains:before { + content: "\f6fd"; } + +.fa-mouse:before { + content: "\f8cc"; } + +.fa-mouse-alt:before { + content: "\f8cd"; } + +.fa-mouse-pointer:before { + content: "\f245"; } + +.fa-mp3-player:before { + content: "\f8ce"; } + +.fa-mug:before { + content: "\f874"; } + +.fa-mug-hot:before { + content: "\f7b6"; } + +.fa-mug-marshmallows:before { + content: "\f7b7"; } + +.fa-mug-tea:before { + content: "\f875"; } + +.fa-music:before { + content: "\f001"; } + +.fa-music-alt:before { + content: "\f8cf"; } + +.fa-music-alt-slash:before { + content: "\f8d0"; } + +.fa-music-slash:before { + content: "\f8d1"; } + +.fa-napster:before { + content: "\f3d2"; } + +.fa-narwhal:before { + content: "\f6fe"; } + +.fa-neos:before { + content: "\f612"; } + +.fa-network-wired:before { + content: "\f6ff"; } + +.fa-neuter:before { + content: "\f22c"; } + +.fa-newspaper:before { + content: "\f1ea"; } + +.fa-nimblr:before { + content: "\f5a8"; } + +.fa-node:before { + content: "\f419"; } + +.fa-node-js:before { + content: "\f3d3"; } + +.fa-not-equal:before { + content: "\f53e"; } + +.fa-notes-medical:before { + content: "\f481"; } + +.fa-npm:before { + content: "\f3d4"; } + +.fa-ns8:before { + content: "\f3d5"; } + +.fa-nutritionix:before { + content: "\f3d6"; } + +.fa-object-group:before { + content: "\f247"; } + +.fa-object-ungroup:before { + content: "\f248"; } + +.fa-octagon:before { + content: "\f306"; } + +.fa-odnoklassniki:before { + content: "\f263"; } + +.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa-oil-can:before { + content: "\f613"; } + +.fa-oil-temp:before { + content: "\f614"; } + +.fa-old-republic:before { + content: "\f510"; } + +.fa-om:before { + content: "\f679"; } + +.fa-omega:before { + content: "\f67a"; } + +.fa-opencart:before { + content: "\f23d"; } + +.fa-openid:before { + content: "\f19b"; } + +.fa-opera:before { + content: "\f26a"; } + +.fa-optin-monster:before { + content: "\f23c"; } + +.fa-orcid:before { + content: "\f8d2"; } + +.fa-ornament:before { + content: "\f7b8"; } + +.fa-osi:before { + content: "\f41a"; } + +.fa-otter:before { + content: "\f700"; } + +.fa-outdent:before { + content: "\f03b"; } + +.fa-outlet:before { + content: "\f91c"; } + +.fa-oven:before { + content: "\f91d"; } + +.fa-overline:before { + content: "\f876"; } + +.fa-page-break:before { + content: "\f877"; } + +.fa-page4:before { + content: "\f3d7"; } + +.fa-pagelines:before { + content: "\f18c"; } + +.fa-pager:before { + content: "\f815"; } + +.fa-paint-brush:before { + content: "\f1fc"; } + +.fa-paint-brush-alt:before { + content: "\f5a9"; } + +.fa-paint-roller:before { + content: "\f5aa"; } + +.fa-palette:before { + content: "\f53f"; } + +.fa-palfed:before { + content: "\f3d8"; } + +.fa-pallet:before { + content: "\f482"; } + +.fa-pallet-alt:before { + content: "\f483"; } + +.fa-paper-plane:before { + content: "\f1d8"; } + +.fa-paperclip:before { + content: "\f0c6"; } + +.fa-parachute-box:before { + content: "\f4cd"; } + +.fa-paragraph:before { + content: "\f1dd"; } + +.fa-paragraph-rtl:before { + content: "\f878"; } + +.fa-parking:before { + content: "\f540"; } + +.fa-parking-circle:before { + content: "\f615"; } + +.fa-parking-circle-slash:before { + content: "\f616"; } + +.fa-parking-slash:before { + content: "\f617"; } + +.fa-passport:before { + content: "\f5ab"; } + +.fa-pastafarianism:before { + content: "\f67b"; } + +.fa-paste:before { + content: "\f0ea"; } + +.fa-patreon:before { + content: "\f3d9"; } + +.fa-pause:before { + content: "\f04c"; } + +.fa-pause-circle:before { + content: "\f28b"; } + +.fa-paw:before { + content: "\f1b0"; } + +.fa-paw-alt:before { + content: "\f701"; } + +.fa-paw-claws:before { + content: "\f702"; } + +.fa-paypal:before { + content: "\f1ed"; } + +.fa-peace:before { + content: "\f67c"; } + +.fa-pegasus:before { + content: "\f703"; } + +.fa-pen:before { + content: "\f304"; } + +.fa-pen-alt:before { + content: "\f305"; } + +.fa-pen-fancy:before { + content: "\f5ac"; } + +.fa-pen-nib:before { + content: "\f5ad"; } + +.fa-pen-square:before { + content: "\f14b"; } + +.fa-pencil:before { + content: "\f040"; } + +.fa-pencil-alt:before { + content: "\f303"; } + +.fa-pencil-paintbrush:before { + content: "\f618"; } + +.fa-pencil-ruler:before { + content: "\f5ae"; } + +.fa-pennant:before { + content: "\f456"; } + +.fa-penny-arcade:before { + content: "\f704"; } + +.fa-people-arrows:before { + content: "\f968"; } + +.fa-people-carry:before { + content: "\f4ce"; } + +.fa-pepper-hot:before { + content: "\f816"; } + +.fa-percent:before { + content: "\f295"; } + +.fa-percentage:before { + content: "\f541"; } + +.fa-periscope:before { + content: "\f3da"; } + +.fa-person-booth:before { + content: "\f756"; } + +.fa-person-carry:before { + content: "\f4cf"; } + +.fa-person-dolly:before { + content: "\f4d0"; } + +.fa-person-dolly-empty:before { + content: "\f4d1"; } + +.fa-person-sign:before { + content: "\f757"; } + +.fa-phabricator:before { + content: "\f3db"; } + +.fa-phoenix-framework:before { + content: "\f3dc"; } + +.fa-phoenix-squadron:before { + content: "\f511"; } + +.fa-phone:before { + content: "\f095"; } + +.fa-phone-alt:before { + content: "\f879"; } + +.fa-phone-laptop:before { + content: "\f87a"; } + +.fa-phone-office:before { + content: "\f67d"; } + +.fa-phone-plus:before { + content: "\f4d2"; } + +.fa-phone-rotary:before { + content: "\f8d3"; } + +.fa-phone-slash:before { + content: "\f3dd"; } + +.fa-phone-square:before { + content: "\f098"; } + +.fa-phone-square-alt:before { + content: "\f87b"; } + +.fa-phone-volume:before { + content: "\f2a0"; } + +.fa-photo-video:before { + content: "\f87c"; } + +.fa-php:before { + content: "\f457"; } + +.fa-pi:before { + content: "\f67e"; } + +.fa-piano:before { + content: "\f8d4"; } + +.fa-piano-keyboard:before { + content: "\f8d5"; } + +.fa-pie:before { + content: "\f705"; } + +.fa-pied-piper:before { + content: "\f2ae"; } + +.fa-pied-piper-alt:before { + content: "\f1a8"; } + +.fa-pied-piper-hat:before { + content: "\f4e5"; } + +.fa-pied-piper-pp:before { + content: "\f1a7"; } + +.fa-pied-piper-square:before { + content: "\f91e"; } + +.fa-pig:before { + content: "\f706"; } + +.fa-piggy-bank:before { + content: "\f4d3"; } + +.fa-pills:before { + content: "\f484"; } + +.fa-pinterest:before { + content: "\f0d2"; } + +.fa-pinterest-p:before { + content: "\f231"; } + +.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa-pizza:before { + content: "\f817"; } + +.fa-pizza-slice:before { + content: "\f818"; } + +.fa-place-of-worship:before { + content: "\f67f"; } + +.fa-plane:before { + content: "\f072"; } + +.fa-plane-alt:before { + content: "\f3de"; } + +.fa-plane-arrival:before { + content: "\f5af"; } + +.fa-plane-departure:before { + content: "\f5b0"; } + +.fa-plane-slash:before { + content: "\f969"; } + +.fa-planet-moon:before { + content: "\f91f"; } + +.fa-planet-ringed:before { + content: "\f920"; } + +.fa-play:before { + content: "\f04b"; } + +.fa-play-circle:before { + content: "\f144"; } + +.fa-playstation:before { + content: "\f3df"; } + +.fa-plug:before { + content: "\f1e6"; } + +.fa-plus:before { + content: "\f067"; } + +.fa-plus-circle:before { + content: "\f055"; } + +.fa-plus-hexagon:before { + content: "\f300"; } + +.fa-plus-octagon:before { + content: "\f301"; } + +.fa-plus-square:before { + content: "\f0fe"; } + +.fa-podcast:before { + content: "\f2ce"; } + +.fa-podium:before { + content: "\f680"; } + +.fa-podium-star:before { + content: "\f758"; } + +.fa-police-box:before { + content: "\f921"; } + +.fa-poll:before { + content: "\f681"; } + +.fa-poll-h:before { + content: "\f682"; } + +.fa-poll-people:before { + content: "\f759"; } + +.fa-poo:before { + content: "\f2fe"; } + +.fa-poo-storm:before { + content: "\f75a"; } + +.fa-poop:before { + content: "\f619"; } + +.fa-popcorn:before { + content: "\f819"; } + +.fa-portal-enter:before { + content: "\f922"; } + +.fa-portal-exit:before { + content: "\f923"; } + +.fa-portrait:before { + content: "\f3e0"; } + +.fa-pound-sign:before { + content: "\f154"; } + +.fa-power-off:before { + content: "\f011"; } + +.fa-pray:before { + content: "\f683"; } + +.fa-praying-hands:before { + content: "\f684"; } + +.fa-prescription:before { + content: "\f5b1"; } + +.fa-prescription-bottle:before { + content: "\f485"; } + +.fa-prescription-bottle-alt:before { + content: "\f486"; } + +.fa-presentation:before { + content: "\f685"; } + +.fa-print:before { + content: "\f02f"; } + +.fa-print-search:before { + content: "\f81a"; } + +.fa-print-slash:before { + content: "\f686"; } + +.fa-procedures:before { + content: "\f487"; } + +.fa-product-hunt:before { + content: "\f288"; } + +.fa-project-diagram:before { + content: "\f542"; } + +.fa-projector:before { + content: "\f8d6"; } + +.fa-pump-medical:before { + content: "\f96a"; } + +.fa-pump-soap:before { + content: "\f96b"; } + +.fa-pumpkin:before { + content: "\f707"; } + +.fa-pushed:before { + content: "\f3e1"; } + +.fa-puzzle-piece:before { + content: "\f12e"; } + +.fa-python:before { + content: "\f3e2"; } + +.fa-qq:before { + content: "\f1d6"; } + +.fa-qrcode:before { + content: "\f029"; } + +.fa-question:before { + content: "\f128"; } + +.fa-question-circle:before { + content: "\f059"; } + +.fa-question-square:before { + content: "\f2fd"; } + +.fa-quidditch:before { + content: "\f458"; } + +.fa-quinscape:before { + content: "\f459"; } + +.fa-quora:before { + content: "\f2c4"; } + +.fa-quote-left:before { + content: "\f10d"; } + +.fa-quote-right:before { + content: "\f10e"; } + +.fa-quran:before { + content: "\f687"; } + +.fa-r-project:before { + content: "\f4f7"; } + +.fa-rabbit:before { + content: "\f708"; } + +.fa-rabbit-fast:before { + content: "\f709"; } + +.fa-racquet:before { + content: "\f45a"; } + +.fa-radar:before { + content: "\f924"; } + +.fa-radiation:before { + content: "\f7b9"; } + +.fa-radiation-alt:before { + content: "\f7ba"; } + +.fa-radio:before { + content: "\f8d7"; } + +.fa-radio-alt:before { + content: "\f8d8"; } + +.fa-rainbow:before { + content: "\f75b"; } + +.fa-raindrops:before { + content: "\f75c"; } + +.fa-ram:before { + content: "\f70a"; } + +.fa-ramp-loading:before { + content: "\f4d4"; } + +.fa-random:before { + content: "\f074"; } + +.fa-raspberry-pi:before { + content: "\f7bb"; } + +.fa-ravelry:before { + content: "\f2d9"; } + +.fa-raygun:before { + content: "\f925"; } + +.fa-react:before { + content: "\f41b"; } + +.fa-reacteurope:before { + content: "\f75d"; } + +.fa-readme:before { + content: "\f4d5"; } + +.fa-rebel:before { + content: "\f1d0"; } + +.fa-receipt:before { + content: "\f543"; } + +.fa-record-vinyl:before { + content: "\f8d9"; } + +.fa-rectangle-landscape:before { + content: "\f2fa"; } + +.fa-rectangle-portrait:before { + content: "\f2fb"; } + +.fa-rectangle-wide:before { + content: "\f2fc"; } + +.fa-recycle:before { + content: "\f1b8"; } + +.fa-red-river:before { + content: "\f3e3"; } + +.fa-reddit:before { + content: "\f1a1"; } + +.fa-reddit-alien:before { + content: "\f281"; } + +.fa-reddit-square:before { + content: "\f1a2"; } + +.fa-redhat:before { + content: "\f7bc"; } + +.fa-redo:before { + content: "\f01e"; } + +.fa-redo-alt:before { + content: "\f2f9"; } + +.fa-refrigerator:before { + content: "\f926"; } + +.fa-registered:before { + content: "\f25d"; } + +.fa-remove-format:before { + content: "\f87d"; } + +.fa-renren:before { + content: "\f18b"; } + +.fa-repeat:before { + content: "\f363"; } + +.fa-repeat-1:before { + content: "\f365"; } + +.fa-repeat-1-alt:before { + content: "\f366"; } + +.fa-repeat-alt:before { + content: "\f364"; } + +.fa-reply:before { + content: "\f3e5"; } + +.fa-reply-all:before { + content: "\f122"; } + +.fa-replyd:before { + content: "\f3e6"; } + +.fa-republican:before { + content: "\f75e"; } + +.fa-researchgate:before { + content: "\f4f8"; } + +.fa-resolving:before { + content: "\f3e7"; } + +.fa-restroom:before { + content: "\f7bd"; } + +.fa-retweet:before { + content: "\f079"; } + +.fa-retweet-alt:before { + content: "\f361"; } + +.fa-rev:before { + content: "\f5b2"; } + +.fa-ribbon:before { + content: "\f4d6"; } + +.fa-ring:before { + content: "\f70b"; } + +.fa-rings-wedding:before { + content: "\f81b"; } + +.fa-road:before { + content: "\f018"; } + +.fa-robot:before { + content: "\f544"; } + +.fa-rocket:before { + content: "\f135"; } + +.fa-rocket-launch:before { + content: "\f927"; } + +.fa-rocketchat:before { + content: "\f3e8"; } + +.fa-rockrms:before { + content: "\f3e9"; } + +.fa-route:before { + content: "\f4d7"; } + +.fa-route-highway:before { + content: "\f61a"; } + +.fa-route-interstate:before { + content: "\f61b"; } + +.fa-router:before { + content: "\f8da"; } + +.fa-rss:before { + content: "\f09e"; } + +.fa-rss-square:before { + content: "\f143"; } + +.fa-ruble-sign:before { + content: "\f158"; } + +.fa-ruler:before { + content: "\f545"; } + +.fa-ruler-combined:before { + content: "\f546"; } + +.fa-ruler-horizontal:before { + content: "\f547"; } + +.fa-ruler-triangle:before { + content: "\f61c"; } + +.fa-ruler-vertical:before { + content: "\f548"; } + +.fa-running:before { + content: "\f70c"; } + +.fa-rupee-sign:before { + content: "\f156"; } + +.fa-rust:before { + content: "\f97a"; } + +.fa-rv:before { + content: "\f7be"; } + +.fa-sack:before { + content: "\f81c"; } + +.fa-sack-dollar:before { + content: "\f81d"; } + +.fa-sad-cry:before { + content: "\f5b3"; } + +.fa-sad-tear:before { + content: "\f5b4"; } + +.fa-safari:before { + content: "\f267"; } + +.fa-salad:before { + content: "\f81e"; } + +.fa-salesforce:before { + content: "\f83b"; } + +.fa-sandwich:before { + content: "\f81f"; } + +.fa-sass:before { + content: "\f41e"; } + +.fa-satellite:before { + content: "\f7bf"; } + +.fa-satellite-dish:before { + content: "\f7c0"; } + +.fa-sausage:before { + content: "\f820"; } + +.fa-save:before { + content: "\f0c7"; } + +.fa-sax-hot:before { + content: "\f8db"; } + +.fa-saxophone:before { + content: "\f8dc"; } + +.fa-scalpel:before { + content: "\f61d"; } + +.fa-scalpel-path:before { + content: "\f61e"; } + +.fa-scanner:before { + content: "\f488"; } + +.fa-scanner-image:before { + content: "\f8f3"; } + +.fa-scanner-keyboard:before { + content: "\f489"; } + +.fa-scanner-touchscreen:before { + content: "\f48a"; } + +.fa-scarecrow:before { + content: "\f70d"; } + +.fa-scarf:before { + content: "\f7c1"; } + +.fa-schlix:before { + content: "\f3ea"; } + +.fa-school:before { + content: "\f549"; } + +.fa-screwdriver:before { + content: "\f54a"; } + +.fa-scribd:before { + content: "\f28a"; } + +.fa-scroll:before { + content: "\f70e"; } + +.fa-scroll-old:before { + content: "\f70f"; } + +.fa-scrubber:before { + content: "\f2f8"; } + +.fa-scythe:before { + content: "\f710"; } + +.fa-sd-card:before { + content: "\f7c2"; } + +.fa-search:before { + content: "\f002"; } + +.fa-search-dollar:before { + content: "\f688"; } + +.fa-search-location:before { + content: "\f689"; } + +.fa-search-minus:before { + content: "\f010"; } + +.fa-search-plus:before { + content: "\f00e"; } + +.fa-searchengin:before { + content: "\f3eb"; } + +.fa-seedling:before { + content: "\f4d8"; } + +.fa-sellcast:before { + content: "\f2da"; } + +.fa-sellsy:before { + content: "\f213"; } + +.fa-send-back:before { + content: "\f87e"; } + +.fa-send-backward:before { + content: "\f87f"; } + +.fa-sensor:before { + content: "\f928"; } + +.fa-sensor-alert:before { + content: "\f929"; } + +.fa-sensor-fire:before { + content: "\f92a"; } + +.fa-sensor-on:before { + content: "\f92b"; } + +.fa-sensor-smoke:before { + content: "\f92c"; } + +.fa-server:before { + content: "\f233"; } + +.fa-servicestack:before { + content: "\f3ec"; } + +.fa-shapes:before { + content: "\f61f"; } + +.fa-share:before { + content: "\f064"; } + +.fa-share-all:before { + content: "\f367"; } + +.fa-share-alt:before { + content: "\f1e0"; } + +.fa-share-alt-square:before { + content: "\f1e1"; } + +.fa-share-square:before { + content: "\f14d"; } + +.fa-sheep:before { + content: "\f711"; } + +.fa-shekel-sign:before { + content: "\f20b"; } + +.fa-shield:before { + content: "\f132"; } + +.fa-shield-alt:before { + content: "\f3ed"; } + +.fa-shield-check:before { + content: "\f2f7"; } + +.fa-shield-cross:before { + content: "\f712"; } + +.fa-shield-virus:before { + content: "\f96c"; } + +.fa-ship:before { + content: "\f21a"; } + +.fa-shipping-fast:before { + content: "\f48b"; } + +.fa-shipping-timed:before { + content: "\f48c"; } + +.fa-shirtsinbulk:before { + content: "\f214"; } + +.fa-shish-kebab:before { + content: "\f821"; } + +.fa-shoe-prints:before { + content: "\f54b"; } + +.fa-shopify:before { + content: "\f957"; } + +.fa-shopping-bag:before { + content: "\f290"; } + +.fa-shopping-basket:before { + content: "\f291"; } + +.fa-shopping-cart:before { + content: "\f07a"; } + +.fa-shopware:before { + content: "\f5b5"; } + +.fa-shovel:before { + content: "\f713"; } + +.fa-shovel-snow:before { + content: "\f7c3"; } + +.fa-shower:before { + content: "\f2cc"; } + +.fa-shredder:before { + content: "\f68a"; } + +.fa-shuttle-van:before { + content: "\f5b6"; } + +.fa-shuttlecock:before { + content: "\f45b"; } + +.fa-sickle:before { + content: "\f822"; } + +.fa-sigma:before { + content: "\f68b"; } + +.fa-sign:before { + content: "\f4d9"; } + +.fa-sign-in:before { + content: "\f090"; } + +.fa-sign-in-alt:before { + content: "\f2f6"; } + +.fa-sign-language:before { + content: "\f2a7"; } + +.fa-sign-out:before { + content: "\f08b"; } + +.fa-sign-out-alt:before { + content: "\f2f5"; } + +.fa-signal:before { + content: "\f012"; } + +.fa-signal-1:before { + content: "\f68c"; } + +.fa-signal-2:before { + content: "\f68d"; } + +.fa-signal-3:before { + content: "\f68e"; } + +.fa-signal-4:before { + content: "\f68f"; } + +.fa-signal-alt:before { + content: "\f690"; } + +.fa-signal-alt-1:before { + content: "\f691"; } + +.fa-signal-alt-2:before { + content: "\f692"; } + +.fa-signal-alt-3:before { + content: "\f693"; } + +.fa-signal-alt-slash:before { + content: "\f694"; } + +.fa-signal-slash:before { + content: "\f695"; } + +.fa-signal-stream:before { + content: "\f8dd"; } + +.fa-signature:before { + content: "\f5b7"; } + +.fa-sim-card:before { + content: "\f7c4"; } + +.fa-simplybuilt:before { + content: "\f215"; } + +.fa-sink:before { + content: "\f96d"; } + +.fa-siren:before { + content: "\f92d"; } + +.fa-siren-on:before { + content: "\f92e"; } + +.fa-sistrix:before { + content: "\f3ee"; } + +.fa-sitemap:before { + content: "\f0e8"; } + +.fa-sith:before { + content: "\f512"; } + +.fa-skating:before { + content: "\f7c5"; } + +.fa-skeleton:before { + content: "\f620"; } + +.fa-sketch:before { + content: "\f7c6"; } + +.fa-ski-jump:before { + content: "\f7c7"; } + +.fa-ski-lift:before { + content: "\f7c8"; } + +.fa-skiing:before { + content: "\f7c9"; } + +.fa-skiing-nordic:before { + content: "\f7ca"; } + +.fa-skull:before { + content: "\f54c"; } + +.fa-skull-cow:before { + content: "\f8de"; } + +.fa-skull-crossbones:before { + content: "\f714"; } + +.fa-skyatlas:before { + content: "\f216"; } + +.fa-skype:before { + content: "\f17e"; } + +.fa-slack:before { + content: "\f198"; } + +.fa-slack-hash:before { + content: "\f3ef"; } + +.fa-slash:before { + content: "\f715"; } + +.fa-sledding:before { + content: "\f7cb"; } + +.fa-sleigh:before { + content: "\f7cc"; } + +.fa-sliders-h:before { + content: "\f1de"; } + +.fa-sliders-h-square:before { + content: "\f3f0"; } + +.fa-sliders-v:before { + content: "\f3f1"; } + +.fa-sliders-v-square:before { + content: "\f3f2"; } + +.fa-slideshare:before { + content: "\f1e7"; } + +.fa-smile:before { + content: "\f118"; } + +.fa-smile-beam:before { + content: "\f5b8"; } + +.fa-smile-plus:before { + content: "\f5b9"; } + +.fa-smile-wink:before { + content: "\f4da"; } + +.fa-smog:before { + content: "\f75f"; } + +.fa-smoke:before { + content: "\f760"; } + +.fa-smoking:before { + content: "\f48d"; } + +.fa-smoking-ban:before { + content: "\f54d"; } + +.fa-sms:before { + content: "\f7cd"; } + +.fa-snake:before { + content: "\f716"; } + +.fa-snapchat:before { + content: "\f2ab"; } + +.fa-snapchat-ghost:before { + content: "\f2ac"; } + +.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa-snooze:before { + content: "\f880"; } + +.fa-snow-blowing:before { + content: "\f761"; } + +.fa-snowboarding:before { + content: "\f7ce"; } + +.fa-snowflake:before { + content: "\f2dc"; } + +.fa-snowflakes:before { + content: "\f7cf"; } + +.fa-snowman:before { + content: "\f7d0"; } + +.fa-snowmobile:before { + content: "\f7d1"; } + +.fa-snowplow:before { + content: "\f7d2"; } + +.fa-soap:before { + content: "\f96e"; } + +.fa-socks:before { + content: "\f696"; } + +.fa-solar-panel:before { + content: "\f5ba"; } + +.fa-solar-system:before { + content: "\f92f"; } + +.fa-sort:before { + content: "\f0dc"; } + +.fa-sort-alpha-down:before { + content: "\f15d"; } + +.fa-sort-alpha-down-alt:before { + content: "\f881"; } + +.fa-sort-alpha-up:before { + content: "\f15e"; } + +.fa-sort-alpha-up-alt:before { + content: "\f882"; } + +.fa-sort-alt:before { + content: "\f883"; } + +.fa-sort-amount-down:before { + content: "\f160"; } + +.fa-sort-amount-down-alt:before { + content: "\f884"; } + +.fa-sort-amount-up:before { + content: "\f161"; } + +.fa-sort-amount-up-alt:before { + content: "\f885"; } + +.fa-sort-circle:before { + content: "\f930"; } + +.fa-sort-circle-down:before { + content: "\f931"; } + +.fa-sort-circle-up:before { + content: "\f932"; } + +.fa-sort-down:before { + content: "\f0dd"; } + +.fa-sort-numeric-down:before { + content: "\f162"; } + +.fa-sort-numeric-down-alt:before { + content: "\f886"; } + +.fa-sort-numeric-up:before { + content: "\f163"; } + +.fa-sort-numeric-up-alt:before { + content: "\f887"; } + +.fa-sort-shapes-down:before { + content: "\f888"; } + +.fa-sort-shapes-down-alt:before { + content: "\f889"; } + +.fa-sort-shapes-up:before { + content: "\f88a"; } + +.fa-sort-shapes-up-alt:before { + content: "\f88b"; } + +.fa-sort-size-down:before { + content: "\f88c"; } + +.fa-sort-size-down-alt:before { + content: "\f88d"; } + +.fa-sort-size-up:before { + content: "\f88e"; } + +.fa-sort-size-up-alt:before { + content: "\f88f"; } + +.fa-sort-up:before { + content: "\f0de"; } + +.fa-soundcloud:before { + content: "\f1be"; } + +.fa-soup:before { + content: "\f823"; } + +.fa-sourcetree:before { + content: "\f7d3"; } + +.fa-spa:before { + content: "\f5bb"; } + +.fa-space-shuttle:before { + content: "\f197"; } + +.fa-space-station-moon:before { + content: "\f933"; } + +.fa-space-station-moon-alt:before { + content: "\f934"; } + +.fa-spade:before { + content: "\f2f4"; } + +.fa-sparkles:before { + content: "\f890"; } + +.fa-speakap:before { + content: "\f3f3"; } + +.fa-speaker:before { + content: "\f8df"; } + +.fa-speaker-deck:before { + content: "\f83c"; } + +.fa-speakers:before { + content: "\f8e0"; } + +.fa-spell-check:before { + content: "\f891"; } + +.fa-spider:before { + content: "\f717"; } + +.fa-spider-black-widow:before { + content: "\f718"; } + +.fa-spider-web:before { + content: "\f719"; } + +.fa-spinner:before { + content: "\f110"; } + +.fa-spinner-third:before { + content: "\f3f4"; } + +.fa-splotch:before { + content: "\f5bc"; } + +.fa-spotify:before { + content: "\f1bc"; } + +.fa-spray-can:before { + content: "\f5bd"; } + +.fa-sprinkler:before { + content: "\f935"; } + +.fa-square:before { + content: "\f0c8"; } + +.fa-square-full:before { + content: "\f45c"; } + +.fa-square-root:before { + content: "\f697"; } + +.fa-square-root-alt:before { + content: "\f698"; } + +.fa-squarespace:before { + content: "\f5be"; } + +.fa-squirrel:before { + content: "\f71a"; } + +.fa-stack-exchange:before { + content: "\f18d"; } + +.fa-stack-overflow:before { + content: "\f16c"; } + +.fa-stackpath:before { + content: "\f842"; } + +.fa-staff:before { + content: "\f71b"; } + +.fa-stamp:before { + content: "\f5bf"; } + +.fa-star:before { + content: "\f005"; } + +.fa-star-and-crescent:before { + content: "\f699"; } + +.fa-star-christmas:before { + content: "\f7d4"; } + +.fa-star-exclamation:before { + content: "\f2f3"; } + +.fa-star-half:before { + content: "\f089"; } + +.fa-star-half-alt:before { + content: "\f5c0"; } + +.fa-star-of-david:before { + content: "\f69a"; } + +.fa-star-of-life:before { + content: "\f621"; } + +.fa-star-shooting:before { + content: "\f936"; } + +.fa-starfighter:before { + content: "\f937"; } + +.fa-starfighter-alt:before { + content: "\f938"; } + +.fa-stars:before { + content: "\f762"; } + +.fa-starship:before { + content: "\f939"; } + +.fa-starship-freighter:before { + content: "\f93a"; } + +.fa-staylinked:before { + content: "\f3f5"; } + +.fa-steak:before { + content: "\f824"; } + +.fa-steam:before { + content: "\f1b6"; } + +.fa-steam-square:before { + content: "\f1b7"; } + +.fa-steam-symbol:before { + content: "\f3f6"; } + +.fa-steering-wheel:before { + content: "\f622"; } + +.fa-step-backward:before { + content: "\f048"; } + +.fa-step-forward:before { + content: "\f051"; } + +.fa-stethoscope:before { + content: "\f0f1"; } + +.fa-sticker-mule:before { + content: "\f3f7"; } + +.fa-sticky-note:before { + content: "\f249"; } + +.fa-stocking:before { + content: "\f7d5"; } + +.fa-stomach:before { + content: "\f623"; } + +.fa-stop:before { + content: "\f04d"; } + +.fa-stop-circle:before { + content: "\f28d"; } + +.fa-stopwatch:before { + content: "\f2f2"; } + +.fa-stopwatch-20:before { + content: "\f96f"; } + +.fa-store:before { + content: "\f54e"; } + +.fa-store-alt:before { + content: "\f54f"; } + +.fa-store-alt-slash:before { + content: "\f970"; } + +.fa-store-slash:before { + content: "\f971"; } + +.fa-strava:before { + content: "\f428"; } + +.fa-stream:before { + content: "\f550"; } + +.fa-street-view:before { + content: "\f21d"; } + +.fa-stretcher:before { + content: "\f825"; } + +.fa-strikethrough:before { + content: "\f0cc"; } + +.fa-stripe:before { + content: "\f429"; } + +.fa-stripe-s:before { + content: "\f42a"; } + +.fa-stroopwafel:before { + content: "\f551"; } + +.fa-studiovinari:before { + content: "\f3f8"; } + +.fa-stumbleupon:before { + content: "\f1a4"; } + +.fa-stumbleupon-circle:before { + content: "\f1a3"; } + +.fa-subscript:before { + content: "\f12c"; } + +.fa-subway:before { + content: "\f239"; } + +.fa-suitcase:before { + content: "\f0f2"; } + +.fa-suitcase-rolling:before { + content: "\f5c1"; } + +.fa-sun:before { + content: "\f185"; } + +.fa-sun-cloud:before { + content: "\f763"; } + +.fa-sun-dust:before { + content: "\f764"; } + +.fa-sun-haze:before { + content: "\f765"; } + +.fa-sunglasses:before { + content: "\f892"; } + +.fa-sunrise:before { + content: "\f766"; } + +.fa-sunset:before { + content: "\f767"; } + +.fa-superpowers:before { + content: "\f2dd"; } + +.fa-superscript:before { + content: "\f12b"; } + +.fa-supple:before { + content: "\f3f9"; } + +.fa-surprise:before { + content: "\f5c2"; } + +.fa-suse:before { + content: "\f7d6"; } + +.fa-swatchbook:before { + content: "\f5c3"; } + +.fa-swift:before { + content: "\f8e1"; } + +.fa-swimmer:before { + content: "\f5c4"; } + +.fa-swimming-pool:before { + content: "\f5c5"; } + +.fa-sword:before { + content: "\f71c"; } + +.fa-sword-laser:before { + content: "\f93b"; } + +.fa-sword-laser-alt:before { + content: "\f93c"; } + +.fa-swords:before { + content: "\f71d"; } + +.fa-swords-laser:before { + content: "\f93d"; } + +.fa-symfony:before { + content: "\f83d"; } + +.fa-synagogue:before { + content: "\f69b"; } + +.fa-sync:before { + content: "\f021"; } + +.fa-sync-alt:before { + content: "\f2f1"; } + +.fa-syringe:before { + content: "\f48e"; } + +.fa-table:before { + content: "\f0ce"; } + +.fa-table-tennis:before { + content: "\f45d"; } + +.fa-tablet:before { + content: "\f10a"; } + +.fa-tablet-alt:before { + content: "\f3fa"; } + +.fa-tablet-android:before { + content: "\f3fb"; } + +.fa-tablet-android-alt:before { + content: "\f3fc"; } + +.fa-tablet-rugged:before { + content: "\f48f"; } + +.fa-tablets:before { + content: "\f490"; } + +.fa-tachometer:before { + content: "\f0e4"; } + +.fa-tachometer-alt:before { + content: "\f3fd"; } + +.fa-tachometer-alt-average:before { + content: "\f624"; } + +.fa-tachometer-alt-fast:before { + content: "\f625"; } + +.fa-tachometer-alt-fastest:before { + content: "\f626"; } + +.fa-tachometer-alt-slow:before { + content: "\f627"; } + +.fa-tachometer-alt-slowest:before { + content: "\f628"; } + +.fa-tachometer-average:before { + content: "\f629"; } + +.fa-tachometer-fast:before { + content: "\f62a"; } + +.fa-tachometer-fastest:before { + content: "\f62b"; } + +.fa-tachometer-slow:before { + content: "\f62c"; } + +.fa-tachometer-slowest:before { + content: "\f62d"; } + +.fa-taco:before { + content: "\f826"; } + +.fa-tag:before { + content: "\f02b"; } + +.fa-tags:before { + content: "\f02c"; } + +.fa-tally:before { + content: "\f69c"; } + +.fa-tanakh:before { + content: "\f827"; } + +.fa-tape:before { + content: "\f4db"; } + +.fa-tasks:before { + content: "\f0ae"; } + +.fa-tasks-alt:before { + content: "\f828"; } + +.fa-taxi:before { + content: "\f1ba"; } + +.fa-teamspeak:before { + content: "\f4f9"; } + +.fa-teeth:before { + content: "\f62e"; } + +.fa-teeth-open:before { + content: "\f62f"; } + +.fa-telegram:before { + content: "\f2c6"; } + +.fa-telegram-plane:before { + content: "\f3fe"; } + +.fa-telescope:before { + content: "\f93e"; } + +.fa-temperature-down:before { + content: "\f93f"; } + +.fa-temperature-frigid:before { + content: "\f768"; } + +.fa-temperature-high:before { + content: "\f769"; } + +.fa-temperature-hot:before { + content: "\f76a"; } + +.fa-temperature-low:before { + content: "\f76b"; } + +.fa-temperature-up:before { + content: "\f940"; } + +.fa-tencent-weibo:before { + content: "\f1d5"; } + +.fa-tenge:before { + content: "\f7d7"; } + +.fa-tennis-ball:before { + content: "\f45e"; } + +.fa-terminal:before { + content: "\f120"; } + +.fa-text:before { + content: "\f893"; } + +.fa-text-height:before { + content: "\f034"; } + +.fa-text-size:before { + content: "\f894"; } + +.fa-text-width:before { + content: "\f035"; } + +.fa-th:before { + content: "\f00a"; } + +.fa-th-large:before { + content: "\f009"; } + +.fa-th-list:before { + content: "\f00b"; } + +.fa-the-red-yeti:before { + content: "\f69d"; } + +.fa-theater-masks:before { + content: "\f630"; } + +.fa-themeco:before { + content: "\f5c6"; } + +.fa-themeisle:before { + content: "\f2b2"; } + +.fa-thermometer:before { + content: "\f491"; } + +.fa-thermometer-empty:before { + content: "\f2cb"; } + +.fa-thermometer-full:before { + content: "\f2c7"; } + +.fa-thermometer-half:before { + content: "\f2c9"; } + +.fa-thermometer-quarter:before { + content: "\f2ca"; } + +.fa-thermometer-three-quarters:before { + content: "\f2c8"; } + +.fa-theta:before { + content: "\f69e"; } + +.fa-think-peaks:before { + content: "\f731"; } + +.fa-thumbs-down:before { + content: "\f165"; } + +.fa-thumbs-up:before { + content: "\f164"; } + +.fa-thumbtack:before { + content: "\f08d"; } + +.fa-thunderstorm:before { + content: "\f76c"; } + +.fa-thunderstorm-moon:before { + content: "\f76d"; } + +.fa-thunderstorm-sun:before { + content: "\f76e"; } + +.fa-ticket:before { + content: "\f145"; } + +.fa-ticket-alt:before { + content: "\f3ff"; } + +.fa-tiktok:before { + content: "\f97b"; } + +.fa-tilde:before { + content: "\f69f"; } + +.fa-times:before { + content: "\f00d"; } + +.fa-times-circle:before { + content: "\f057"; } + +.fa-times-hexagon:before { + content: "\f2ee"; } + +.fa-times-octagon:before { + content: "\f2f0"; } + +.fa-times-square:before { + content: "\f2d3"; } + +.fa-tint:before { + content: "\f043"; } + +.fa-tint-slash:before { + content: "\f5c7"; } + +.fa-tire:before { + content: "\f631"; } + +.fa-tire-flat:before { + content: "\f632"; } + +.fa-tire-pressure-warning:before { + content: "\f633"; } + +.fa-tire-rugged:before { + content: "\f634"; } + +.fa-tired:before { + content: "\f5c8"; } + +.fa-toggle-off:before { + content: "\f204"; } + +.fa-toggle-on:before { + content: "\f205"; } + +.fa-toilet:before { + content: "\f7d8"; } + +.fa-toilet-paper:before { + content: "\f71e"; } + +.fa-toilet-paper-alt:before { + content: "\f71f"; } + +.fa-toilet-paper-slash:before { + content: "\f972"; } + +.fa-tombstone:before { + content: "\f720"; } + +.fa-tombstone-alt:before { + content: "\f721"; } + +.fa-toolbox:before { + content: "\f552"; } + +.fa-tools:before { + content: "\f7d9"; } + +.fa-tooth:before { + content: "\f5c9"; } + +.fa-toothbrush:before { + content: "\f635"; } + +.fa-torah:before { + content: "\f6a0"; } + +.fa-torii-gate:before { + content: "\f6a1"; } + +.fa-tornado:before { + content: "\f76f"; } + +.fa-tractor:before { + content: "\f722"; } + +.fa-trade-federation:before { + content: "\f513"; } + +.fa-trademark:before { + content: "\f25c"; } + +.fa-traffic-cone:before { + content: "\f636"; } + +.fa-traffic-light:before { + content: "\f637"; } + +.fa-traffic-light-go:before { + content: "\f638"; } + +.fa-traffic-light-slow:before { + content: "\f639"; } + +.fa-traffic-light-stop:before { + content: "\f63a"; } + +.fa-trailer:before { + content: "\f941"; } + +.fa-train:before { + content: "\f238"; } + +.fa-tram:before { + content: "\f7da"; } + +.fa-transgender:before { + content: "\f224"; } + +.fa-transgender-alt:before { + content: "\f225"; } + +.fa-transporter:before { + content: "\f942"; } + +.fa-transporter-1:before { + content: "\f943"; } + +.fa-transporter-2:before { + content: "\f944"; } + +.fa-transporter-3:before { + content: "\f945"; } + +.fa-transporter-empty:before { + content: "\f946"; } + +.fa-trash:before { + content: "\f1f8"; } + +.fa-trash-alt:before { + content: "\f2ed"; } + +.fa-trash-restore:before { + content: "\f829"; } + +.fa-trash-restore-alt:before { + content: "\f82a"; } + +.fa-trash-undo:before { + content: "\f895"; } + +.fa-trash-undo-alt:before { + content: "\f896"; } + +.fa-treasure-chest:before { + content: "\f723"; } + +.fa-tree:before { + content: "\f1bb"; } + +.fa-tree-alt:before { + content: "\f400"; } + +.fa-tree-christmas:before { + content: "\f7db"; } + +.fa-tree-decorated:before { + content: "\f7dc"; } + +.fa-tree-large:before { + content: "\f7dd"; } + +.fa-tree-palm:before { + content: "\f82b"; } + +.fa-trees:before { + content: "\f724"; } + +.fa-trello:before { + content: "\f181"; } + +.fa-triangle:before { + content: "\f2ec"; } + +.fa-triangle-music:before { + content: "\f8e2"; } + +.fa-tripadvisor:before { + content: "\f262"; } + +.fa-trophy:before { + content: "\f091"; } + +.fa-trophy-alt:before { + content: "\f2eb"; } + +.fa-truck:before { + content: "\f0d1"; } + +.fa-truck-container:before { + content: "\f4dc"; } + +.fa-truck-couch:before { + content: "\f4dd"; } + +.fa-truck-loading:before { + content: "\f4de"; } + +.fa-truck-monster:before { + content: "\f63b"; } + +.fa-truck-moving:before { + content: "\f4df"; } + +.fa-truck-pickup:before { + content: "\f63c"; } + +.fa-truck-plow:before { + content: "\f7de"; } + +.fa-truck-ramp:before { + content: "\f4e0"; } + +.fa-trumpet:before { + content: "\f8e3"; } + +.fa-tshirt:before { + content: "\f553"; } + +.fa-tty:before { + content: "\f1e4"; } + +.fa-tumblr:before { + content: "\f173"; } + +.fa-tumblr-square:before { + content: "\f174"; } + +.fa-turkey:before { + content: "\f725"; } + +.fa-turntable:before { + content: "\f8e4"; } + +.fa-turtle:before { + content: "\f726"; } + +.fa-tv:before { + content: "\f26c"; } + +.fa-tv-alt:before { + content: "\f8e5"; } + +.fa-tv-music:before { + content: "\f8e6"; } + +.fa-tv-retro:before { + content: "\f401"; } + +.fa-twitch:before { + content: "\f1e8"; } + +.fa-twitter:before { + content: "\f099"; } + +.fa-twitter-square:before { + content: "\f081"; } + +.fa-typewriter:before { + content: "\f8e7"; } + +.fa-typo3:before { + content: "\f42b"; } + +.fa-uber:before { + content: "\f402"; } + +.fa-ubuntu:before { + content: "\f7df"; } + +.fa-ufo:before { + content: "\f947"; } + +.fa-ufo-beam:before { + content: "\f948"; } + +.fa-uikit:before { + content: "\f403"; } + +.fa-umbraco:before { + content: "\f8e8"; } + +.fa-umbrella:before { + content: "\f0e9"; } + +.fa-umbrella-beach:before { + content: "\f5ca"; } + +.fa-underline:before { + content: "\f0cd"; } + +.fa-undo:before { + content: "\f0e2"; } + +.fa-undo-alt:before { + content: "\f2ea"; } + +.fa-unicorn:before { + content: "\f727"; } + +.fa-union:before { + content: "\f6a2"; } + +.fa-uniregistry:before { + content: "\f404"; } + +.fa-unity:before { + content: "\f949"; } + +.fa-universal-access:before { + content: "\f29a"; } + +.fa-university:before { + content: "\f19c"; } + +.fa-unlink:before { + content: "\f127"; } + +.fa-unlock:before { + content: "\f09c"; } + +.fa-unlock-alt:before { + content: "\f13e"; } + +.fa-unsplash:before { + content: "\f97c"; } + +.fa-untappd:before { + content: "\f405"; } + +.fa-upload:before { + content: "\f093"; } + +.fa-ups:before { + content: "\f7e0"; } + +.fa-usb:before { + content: "\f287"; } + +.fa-usb-drive:before { + content: "\f8e9"; } + +.fa-usd-circle:before { + content: "\f2e8"; } + +.fa-usd-square:before { + content: "\f2e9"; } + +.fa-user:before { + content: "\f007"; } + +.fa-user-alien:before { + content: "\f94a"; } + +.fa-user-alt:before { + content: "\f406"; } + +.fa-user-alt-slash:before { + content: "\f4fa"; } + +.fa-user-astronaut:before { + content: "\f4fb"; } + +.fa-user-chart:before { + content: "\f6a3"; } + +.fa-user-check:before { + content: "\f4fc"; } + +.fa-user-circle:before { + content: "\f2bd"; } + +.fa-user-clock:before { + content: "\f4fd"; } + +.fa-user-cog:before { + content: "\f4fe"; } + +.fa-user-cowboy:before { + content: "\f8ea"; } + +.fa-user-crown:before { + content: "\f6a4"; } + +.fa-user-edit:before { + content: "\f4ff"; } + +.fa-user-friends:before { + content: "\f500"; } + +.fa-user-graduate:before { + content: "\f501"; } + +.fa-user-hard-hat:before { + content: "\f82c"; } + +.fa-user-headset:before { + content: "\f82d"; } + +.fa-user-injured:before { + content: "\f728"; } + +.fa-user-lock:before { + content: "\f502"; } + +.fa-user-md:before { + content: "\f0f0"; } + +.fa-user-md-chat:before { + content: "\f82e"; } + +.fa-user-minus:before { + content: "\f503"; } + +.fa-user-music:before { + content: "\f8eb"; } + +.fa-user-ninja:before { + content: "\f504"; } + +.fa-user-nurse:before { + content: "\f82f"; } + +.fa-user-plus:before { + content: "\f234"; } + +.fa-user-robot:before { + content: "\f94b"; } + +.fa-user-secret:before { + content: "\f21b"; } + +.fa-user-shield:before { + content: "\f505"; } + +.fa-user-slash:before { + content: "\f506"; } + +.fa-user-tag:before { + content: "\f507"; } + +.fa-user-tie:before { + content: "\f508"; } + +.fa-user-times:before { + content: "\f235"; } + +.fa-user-unlock:before { + content: "\f958"; } + +.fa-user-visor:before { + content: "\f94c"; } + +.fa-users:before { + content: "\f0c0"; } + +.fa-users-class:before { + content: "\f63d"; } + +.fa-users-cog:before { + content: "\f509"; } + +.fa-users-crown:before { + content: "\f6a5"; } + +.fa-users-medical:before { + content: "\f830"; } + +.fa-users-slash:before { + content: "\f973"; } + +.fa-usps:before { + content: "\f7e1"; } + +.fa-ussunnah:before { + content: "\f407"; } + +.fa-utensil-fork:before { + content: "\f2e3"; } + +.fa-utensil-knife:before { + content: "\f2e4"; } + +.fa-utensil-spoon:before { + content: "\f2e5"; } + +.fa-utensils:before { + content: "\f2e7"; } + +.fa-utensils-alt:before { + content: "\f2e6"; } + +.fa-vaadin:before { + content: "\f408"; } + +.fa-vacuum:before { + content: "\f94d"; } + +.fa-vacuum-robot:before { + content: "\f94e"; } + +.fa-value-absolute:before { + content: "\f6a6"; } + +.fa-vector-square:before { + content: "\f5cb"; } + +.fa-venus:before { + content: "\f221"; } + +.fa-venus-double:before { + content: "\f226"; } + +.fa-venus-mars:before { + content: "\f228"; } + +.fa-vhs:before { + content: "\f8ec"; } + +.fa-viacoin:before { + content: "\f237"; } + +.fa-viadeo:before { + content: "\f2a9"; } + +.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa-vial:before { + content: "\f492"; } + +.fa-vials:before { + content: "\f493"; } + +.fa-viber:before { + content: "\f409"; } + +.fa-video:before { + content: "\f03d"; } + +.fa-video-plus:before { + content: "\f4e1"; } + +.fa-video-slash:before { + content: "\f4e2"; } + +.fa-vihara:before { + content: "\f6a7"; } + +.fa-vimeo:before { + content: "\f40a"; } + +.fa-vimeo-square:before { + content: "\f194"; } + +.fa-vimeo-v:before { + content: "\f27d"; } + +.fa-vine:before { + content: "\f1ca"; } + +.fa-violin:before { + content: "\f8ed"; } + +.fa-virus:before { + content: "\f974"; } + +.fa-virus-slash:before { + content: "\f975"; } + +.fa-viruses:before { + content: "\f976"; } + +.fa-vk:before { + content: "\f189"; } + +.fa-vnv:before { + content: "\f40b"; } + +.fa-voicemail:before { + content: "\f897"; } + +.fa-volcano:before { + content: "\f770"; } + +.fa-volleyball-ball:before { + content: "\f45f"; } + +.fa-volume:before { + content: "\f6a8"; } + +.fa-volume-down:before { + content: "\f027"; } + +.fa-volume-mute:before { + content: "\f6a9"; } + +.fa-volume-off:before { + content: "\f026"; } + +.fa-volume-slash:before { + content: "\f2e2"; } + +.fa-volume-up:before { + content: "\f028"; } + +.fa-vote-nay:before { + content: "\f771"; } + +.fa-vote-yea:before { + content: "\f772"; } + +.fa-vr-cardboard:before { + content: "\f729"; } + +.fa-vuejs:before { + content: "\f41f"; } + +.fa-wagon-covered:before { + content: "\f8ee"; } + +.fa-walker:before { + content: "\f831"; } + +.fa-walkie-talkie:before { + content: "\f8ef"; } + +.fa-walking:before { + content: "\f554"; } + +.fa-wallet:before { + content: "\f555"; } + +.fa-wand:before { + content: "\f72a"; } + +.fa-wand-magic:before { + content: "\f72b"; } + +.fa-warehouse:before { + content: "\f494"; } + +.fa-warehouse-alt:before { + content: "\f495"; } + +.fa-washer:before { + content: "\f898"; } + +.fa-watch:before { + content: "\f2e1"; } + +.fa-watch-calculator:before { + content: "\f8f0"; } + +.fa-watch-fitness:before { + content: "\f63e"; } + +.fa-water:before { + content: "\f773"; } + +.fa-water-lower:before { + content: "\f774"; } + +.fa-water-rise:before { + content: "\f775"; } + +.fa-wave-sine:before { + content: "\f899"; } + +.fa-wave-square:before { + content: "\f83e"; } + +.fa-wave-triangle:before { + content: "\f89a"; } + +.fa-waveform:before { + content: "\f8f1"; } + +.fa-waveform-path:before { + content: "\f8f2"; } + +.fa-waze:before { + content: "\f83f"; } + +.fa-webcam:before { + content: "\f832"; } + +.fa-webcam-slash:before { + content: "\f833"; } + +.fa-weebly:before { + content: "\f5cc"; } + +.fa-weibo:before { + content: "\f18a"; } + +.fa-weight:before { + content: "\f496"; } + +.fa-weight-hanging:before { + content: "\f5cd"; } + +.fa-weixin:before { + content: "\f1d7"; } + +.fa-whale:before { + content: "\f72c"; } + +.fa-whatsapp:before { + content: "\f232"; } + +.fa-whatsapp-square:before { + content: "\f40c"; } + +.fa-wheat:before { + content: "\f72d"; } + +.fa-wheelchair:before { + content: "\f193"; } + +.fa-whistle:before { + content: "\f460"; } + +.fa-whmcs:before { + content: "\f40d"; } + +.fa-wifi:before { + content: "\f1eb"; } + +.fa-wifi-1:before { + content: "\f6aa"; } + +.fa-wifi-2:before { + content: "\f6ab"; } + +.fa-wifi-slash:before { + content: "\f6ac"; } + +.fa-wikipedia-w:before { + content: "\f266"; } + +.fa-wind:before { + content: "\f72e"; } + +.fa-wind-turbine:before { + content: "\f89b"; } + +.fa-wind-warning:before { + content: "\f776"; } + +.fa-window:before { + content: "\f40e"; } + +.fa-window-alt:before { + content: "\f40f"; } + +.fa-window-close:before { + content: "\f410"; } + +.fa-window-frame:before { + content: "\f94f"; } + +.fa-window-frame-open:before { + content: "\f950"; } + +.fa-window-maximize:before { + content: "\f2d0"; } + +.fa-window-minimize:before { + content: "\f2d1"; } + +.fa-window-restore:before { + content: "\f2d2"; } + +.fa-windows:before { + content: "\f17a"; } + +.fa-windsock:before { + content: "\f777"; } + +.fa-wine-bottle:before { + content: "\f72f"; } + +.fa-wine-glass:before { + content: "\f4e3"; } + +.fa-wine-glass-alt:before { + content: "\f5ce"; } + +.fa-wix:before { + content: "\f5cf"; } + +.fa-wizards-of-the-coast:before { + content: "\f730"; } + +.fa-wolf-pack-battalion:before { + content: "\f514"; } + +.fa-won-sign:before { + content: "\f159"; } + +.fa-wordpress:before { + content: "\f19a"; } + +.fa-wordpress-simple:before { + content: "\f411"; } + +.fa-wpbeginner:before { + content: "\f297"; } + +.fa-wpexplorer:before { + content: "\f2de"; } + +.fa-wpforms:before { + content: "\f298"; } + +.fa-wpressr:before { + content: "\f3e4"; } + +.fa-wreath:before { + content: "\f7e2"; } + +.fa-wrench:before { + content: "\f0ad"; } + +.fa-x-ray:before { + content: "\f497"; } + +.fa-xbox:before { + content: "\f412"; } + +.fa-xing:before { + content: "\f168"; } + +.fa-xing-square:before { + content: "\f169"; } + +.fa-y-combinator:before { + content: "\f23b"; } + +.fa-yahoo:before { + content: "\f19e"; } + +.fa-yammer:before { + content: "\f840"; } + +.fa-yandex:before { + content: "\f413"; } + +.fa-yandex-international:before { + content: "\f414"; } + +.fa-yarn:before { + content: "\f7e3"; } + +.fa-yelp:before { + content: "\f1e9"; } + +.fa-yen-sign:before { + content: "\f157"; } + +.fa-yin-yang:before { + content: "\f6ad"; } + +.fa-yoast:before { + content: "\f2b1"; } + +.fa-youtube:before { + content: "\f167"; } + +.fa-youtube-square:before { + content: "\f431"; } + +.fa-zhihu:before { + content: "\f63f"; } + +.sr-only { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; } + +.sr-only-focusable:active, .sr-only-focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; } +@font-face { + font-family: 'Font Awesome 5 Brands'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-brands-400.eot"); + src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); } + +.fab { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } +@font-face { + font-family: 'Font Awesome 5 Duotone'; + font-style: normal; + font-weight: 900; + font-display: block; + src: url("../webfonts/fa-duotone-900.eot"); + src: url("../webfonts/fa-duotone-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-duotone-900.woff2") format("woff2"), url("../webfonts/fa-duotone-900.woff") format("woff"), url("../webfonts/fa-duotone-900.ttf") format("truetype"), url("../webfonts/fa-duotone-900.svg#fontawesome") format("svg"); } + +.fad { + position: relative; + font-family: 'Font Awesome 5 Duotone'; + font-weight: 900; } + +.fad:before { + position: absolute; + color: var(--fa-primary-color, inherit); + opacity: 1; + opacity: var(--fa-primary-opacity, 1); } + +.fad:after { + color: var(--fa-secondary-color, inherit); + opacity: 0.4; + opacity: var(--fa-secondary-opacity, 0.4); } + +.fa-swap-opacity .fad:before, +.fad.fa-swap-opacity:before { + opacity: 0.4; + opacity: var(--fa-secondary-opacity, 0.4); } + +.fa-swap-opacity .fad:after, +.fad.fa-swap-opacity:after { + opacity: 1; + opacity: var(--fa-primary-opacity, 1); } + +.fad.fa-inverse { + color: #fff; } + +.fad.fa-stack-1x, .fad.fa-stack-2x { + position: absolute; } + +.fad.fa-stack-1x:before, +.fad.fa-stack-2x:before, +.fad.fa-fw:before { + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); } + +.fad.fa-abacus:after { + content: "\10f640"; } + +.fad.fa-acorn:after { + content: "\10f6ae"; } + +.fad.fa-ad:after { + content: "\10f641"; } + +.fad.fa-address-book:after { + content: "\10f2b9"; } + +.fad.fa-address-card:after { + content: "\10f2bb"; } + +.fad.fa-adjust:after { + content: "\10f042"; } + +.fad.fa-air-conditioner:after { + content: "\10f8f4"; } + +.fad.fa-air-freshener:after { + content: "\10f5d0"; } + +.fad.fa-alarm-clock:after { + content: "\10f34e"; } + +.fad.fa-alarm-exclamation:after { + content: "\10f843"; } + +.fad.fa-alarm-plus:after { + content: "\10f844"; } + +.fad.fa-alarm-snooze:after { + content: "\10f845"; } + +.fad.fa-album:after { + content: "\10f89f"; } + +.fad.fa-album-collection:after { + content: "\10f8a0"; } + +.fad.fa-alicorn:after { + content: "\10f6b0"; } + +.fad.fa-alien:after { + content: "\10f8f5"; } + +.fad.fa-alien-monster:after { + content: "\10f8f6"; } + +.fad.fa-align-center:after { + content: "\10f037"; } + +.fad.fa-align-justify:after { + content: "\10f039"; } + +.fad.fa-align-left:after { + content: "\10f036"; } + +.fad.fa-align-right:after { + content: "\10f038"; } + +.fad.fa-align-slash:after { + content: "\10f846"; } + +.fad.fa-allergies:after { + content: "\10f461"; } + +.fad.fa-ambulance:after { + content: "\10f0f9"; } + +.fad.fa-american-sign-language-interpreting:after { + content: "\10f2a3"; } + +.fad.fa-amp-guitar:after { + content: "\10f8a1"; } + +.fad.fa-analytics:after { + content: "\10f643"; } + +.fad.fa-anchor:after { + content: "\10f13d"; } + +.fad.fa-angel:after { + content: "\10f779"; } + +.fad.fa-angle-double-down:after { + content: "\10f103"; } + +.fad.fa-angle-double-left:after { + content: "\10f100"; } + +.fad.fa-angle-double-right:after { + content: "\10f101"; } + +.fad.fa-angle-double-up:after { + content: "\10f102"; } + +.fad.fa-angle-down:after { + content: "\10f107"; } + +.fad.fa-angle-left:after { + content: "\10f104"; } + +.fad.fa-angle-right:after { + content: "\10f105"; } + +.fad.fa-angle-up:after { + content: "\10f106"; } + +.fad.fa-angry:after { + content: "\10f556"; } + +.fad.fa-ankh:after { + content: "\10f644"; } + +.fad.fa-apple-alt:after { + content: "\10f5d1"; } + +.fad.fa-apple-crate:after { + content: "\10f6b1"; } + +.fad.fa-archive:after { + content: "\10f187"; } + +.fad.fa-archway:after { + content: "\10f557"; } + +.fad.fa-arrow-alt-circle-down:after { + content: "\10f358"; } + +.fad.fa-arrow-alt-circle-left:after { + content: "\10f359"; } + +.fad.fa-arrow-alt-circle-right:after { + content: "\10f35a"; } + +.fad.fa-arrow-alt-circle-up:after { + content: "\10f35b"; } + +.fad.fa-arrow-alt-down:after { + content: "\10f354"; } + +.fad.fa-arrow-alt-from-bottom:after { + content: "\10f346"; } + +.fad.fa-arrow-alt-from-left:after { + content: "\10f347"; } + +.fad.fa-arrow-alt-from-right:after { + content: "\10f348"; } + +.fad.fa-arrow-alt-from-top:after { + content: "\10f349"; } + +.fad.fa-arrow-alt-left:after { + content: "\10f355"; } + +.fad.fa-arrow-alt-right:after { + content: "\10f356"; } + +.fad.fa-arrow-alt-square-down:after { + content: "\10f350"; } + +.fad.fa-arrow-alt-square-left:after { + content: "\10f351"; } + +.fad.fa-arrow-alt-square-right:after { + content: "\10f352"; } + +.fad.fa-arrow-alt-square-up:after { + content: "\10f353"; } + +.fad.fa-arrow-alt-to-bottom:after { + content: "\10f34a"; } + +.fad.fa-arrow-alt-to-left:after { + content: "\10f34b"; } + +.fad.fa-arrow-alt-to-right:after { + content: "\10f34c"; } + +.fad.fa-arrow-alt-to-top:after { + content: "\10f34d"; } + +.fad.fa-arrow-alt-up:after { + content: "\10f357"; } + +.fad.fa-arrow-circle-down:after { + content: "\10f0ab"; } + +.fad.fa-arrow-circle-left:after { + content: "\10f0a8"; } + +.fad.fa-arrow-circle-right:after { + content: "\10f0a9"; } + +.fad.fa-arrow-circle-up:after { + content: "\10f0aa"; } + +.fad.fa-arrow-down:after { + content: "\10f063"; } + +.fad.fa-arrow-from-bottom:after { + content: "\10f342"; } + +.fad.fa-arrow-from-left:after { + content: "\10f343"; } + +.fad.fa-arrow-from-right:after { + content: "\10f344"; } + +.fad.fa-arrow-from-top:after { + content: "\10f345"; } + +.fad.fa-arrow-left:after { + content: "\10f060"; } + +.fad.fa-arrow-right:after { + content: "\10f061"; } + +.fad.fa-arrow-square-down:after { + content: "\10f339"; } + +.fad.fa-arrow-square-left:after { + content: "\10f33a"; } + +.fad.fa-arrow-square-right:after { + content: "\10f33b"; } + +.fad.fa-arrow-square-up:after { + content: "\10f33c"; } + +.fad.fa-arrow-to-bottom:after { + content: "\10f33d"; } + +.fad.fa-arrow-to-left:after { + content: "\10f33e"; } + +.fad.fa-arrow-to-right:after { + content: "\10f340"; } + +.fad.fa-arrow-to-top:after { + content: "\10f341"; } + +.fad.fa-arrow-up:after { + content: "\10f062"; } + +.fad.fa-arrows:after { + content: "\10f047"; } + +.fad.fa-arrows-alt:after { + content: "\10f0b2"; } + +.fad.fa-arrows-alt-h:after { + content: "\10f337"; } + +.fad.fa-arrows-alt-v:after { + content: "\10f338"; } + +.fad.fa-arrows-h:after { + content: "\10f07e"; } + +.fad.fa-arrows-v:after { + content: "\10f07d"; } + +.fad.fa-assistive-listening-systems:after { + content: "\10f2a2"; } + +.fad.fa-asterisk:after { + content: "\10f069"; } + +.fad.fa-at:after { + content: "\10f1fa"; } + +.fad.fa-atlas:after { + content: "\10f558"; } + +.fad.fa-atom:after { + content: "\10f5d2"; } + +.fad.fa-atom-alt:after { + content: "\10f5d3"; } + +.fad.fa-audio-description:after { + content: "\10f29e"; } + +.fad.fa-award:after { + content: "\10f559"; } + +.fad.fa-axe:after { + content: "\10f6b2"; } + +.fad.fa-axe-battle:after { + content: "\10f6b3"; } + +.fad.fa-baby:after { + content: "\10f77c"; } + +.fad.fa-baby-carriage:after { + content: "\10f77d"; } + +.fad.fa-backpack:after { + content: "\10f5d4"; } + +.fad.fa-backspace:after { + content: "\10f55a"; } + +.fad.fa-backward:after { + content: "\10f04a"; } + +.fad.fa-bacon:after { + content: "\10f7e5"; } + +.fad.fa-bacteria:after { + content: "\10f959"; } + +.fad.fa-bacterium:after { + content: "\10f95a"; } + +.fad.fa-badge:after { + content: "\10f335"; } + +.fad.fa-badge-check:after { + content: "\10f336"; } + +.fad.fa-badge-dollar:after { + content: "\10f645"; } + +.fad.fa-badge-percent:after { + content: "\10f646"; } + +.fad.fa-badge-sheriff:after { + content: "\10f8a2"; } + +.fad.fa-badger-honey:after { + content: "\10f6b4"; } + +.fad.fa-bags-shopping:after { + content: "\10f847"; } + +.fad.fa-bahai:after { + content: "\10f666"; } + +.fad.fa-balance-scale:after { + content: "\10f24e"; } + +.fad.fa-balance-scale-left:after { + content: "\10f515"; } + +.fad.fa-balance-scale-right:after { + content: "\10f516"; } + +.fad.fa-ball-pile:after { + content: "\10f77e"; } + +.fad.fa-ballot:after { + content: "\10f732"; } + +.fad.fa-ballot-check:after { + content: "\10f733"; } + +.fad.fa-ban:after { + content: "\10f05e"; } + +.fad.fa-band-aid:after { + content: "\10f462"; } + +.fad.fa-banjo:after { + content: "\10f8a3"; } + +.fad.fa-barcode:after { + content: "\10f02a"; } + +.fad.fa-barcode-alt:after { + content: "\10f463"; } + +.fad.fa-barcode-read:after { + content: "\10f464"; } + +.fad.fa-barcode-scan:after { + content: "\10f465"; } + +.fad.fa-bars:after { + content: "\10f0c9"; } + +.fad.fa-baseball:after { + content: "\10f432"; } + +.fad.fa-baseball-ball:after { + content: "\10f433"; } + +.fad.fa-basketball-ball:after { + content: "\10f434"; } + +.fad.fa-basketball-hoop:after { + content: "\10f435"; } + +.fad.fa-bat:after { + content: "\10f6b5"; } + +.fad.fa-bath:after { + content: "\10f2cd"; } + +.fad.fa-battery-bolt:after { + content: "\10f376"; } + +.fad.fa-battery-empty:after { + content: "\10f244"; } + +.fad.fa-battery-full:after { + content: "\10f240"; } + +.fad.fa-battery-half:after { + content: "\10f242"; } + +.fad.fa-battery-quarter:after { + content: "\10f243"; } + +.fad.fa-battery-slash:after { + content: "\10f377"; } + +.fad.fa-battery-three-quarters:after { + content: "\10f241"; } + +.fad.fa-bed:after { + content: "\10f236"; } + +.fad.fa-bed-alt:after { + content: "\10f8f7"; } + +.fad.fa-bed-bunk:after { + content: "\10f8f8"; } + +.fad.fa-bed-empty:after { + content: "\10f8f9"; } + +.fad.fa-beer:after { + content: "\10f0fc"; } + +.fad.fa-bell:after { + content: "\10f0f3"; } + +.fad.fa-bell-exclamation:after { + content: "\10f848"; } + +.fad.fa-bell-on:after { + content: "\10f8fa"; } + +.fad.fa-bell-plus:after { + content: "\10f849"; } + +.fad.fa-bell-school:after { + content: "\10f5d5"; } + +.fad.fa-bell-school-slash:after { + content: "\10f5d6"; } + +.fad.fa-bell-slash:after { + content: "\10f1f6"; } + +.fad.fa-bells:after { + content: "\10f77f"; } + +.fad.fa-betamax:after { + content: "\10f8a4"; } + +.fad.fa-bezier-curve:after { + content: "\10f55b"; } + +.fad.fa-bible:after { + content: "\10f647"; } + +.fad.fa-bicycle:after { + content: "\10f206"; } + +.fad.fa-biking:after { + content: "\10f84a"; } + +.fad.fa-biking-mountain:after { + content: "\10f84b"; } + +.fad.fa-binoculars:after { + content: "\10f1e5"; } + +.fad.fa-biohazard:after { + content: "\10f780"; } + +.fad.fa-birthday-cake:after { + content: "\10f1fd"; } + +.fad.fa-blanket:after { + content: "\10f498"; } + +.fad.fa-blender:after { + content: "\10f517"; } + +.fad.fa-blender-phone:after { + content: "\10f6b6"; } + +.fad.fa-blind:after { + content: "\10f29d"; } + +.fad.fa-blinds:after { + content: "\10f8fb"; } + +.fad.fa-blinds-open:after { + content: "\10f8fc"; } + +.fad.fa-blinds-raised:after { + content: "\10f8fd"; } + +.fad.fa-blog:after { + content: "\10f781"; } + +.fad.fa-bold:after { + content: "\10f032"; } + +.fad.fa-bolt:after { + content: "\10f0e7"; } + +.fad.fa-bomb:after { + content: "\10f1e2"; } + +.fad.fa-bone:after { + content: "\10f5d7"; } + +.fad.fa-bone-break:after { + content: "\10f5d8"; } + +.fad.fa-bong:after { + content: "\10f55c"; } + +.fad.fa-book:after { + content: "\10f02d"; } + +.fad.fa-book-alt:after { + content: "\10f5d9"; } + +.fad.fa-book-dead:after { + content: "\10f6b7"; } + +.fad.fa-book-heart:after { + content: "\10f499"; } + +.fad.fa-book-medical:after { + content: "\10f7e6"; } + +.fad.fa-book-open:after { + content: "\10f518"; } + +.fad.fa-book-reader:after { + content: "\10f5da"; } + +.fad.fa-book-spells:after { + content: "\10f6b8"; } + +.fad.fa-book-user:after { + content: "\10f7e7"; } + +.fad.fa-bookmark:after { + content: "\10f02e"; } + +.fad.fa-books:after { + content: "\10f5db"; } + +.fad.fa-books-medical:after { + content: "\10f7e8"; } + +.fad.fa-boombox:after { + content: "\10f8a5"; } + +.fad.fa-boot:after { + content: "\10f782"; } + +.fad.fa-booth-curtain:after { + content: "\10f734"; } + +.fad.fa-border-all:after { + content: "\10f84c"; } + +.fad.fa-border-bottom:after { + content: "\10f84d"; } + +.fad.fa-border-center-h:after { + content: "\10f89c"; } + +.fad.fa-border-center-v:after { + content: "\10f89d"; } + +.fad.fa-border-inner:after { + content: "\10f84e"; } + +.fad.fa-border-left:after { + content: "\10f84f"; } + +.fad.fa-border-none:after { + content: "\10f850"; } + +.fad.fa-border-outer:after { + content: "\10f851"; } + +.fad.fa-border-right:after { + content: "\10f852"; } + +.fad.fa-border-style:after { + content: "\10f853"; } + +.fad.fa-border-style-alt:after { + content: "\10f854"; } + +.fad.fa-border-top:after { + content: "\10f855"; } + +.fad.fa-bow-arrow:after { + content: "\10f6b9"; } + +.fad.fa-bowling-ball:after { + content: "\10f436"; } + +.fad.fa-bowling-pins:after { + content: "\10f437"; } + +.fad.fa-box:after { + content: "\10f466"; } + +.fad.fa-box-alt:after { + content: "\10f49a"; } + +.fad.fa-box-ballot:after { + content: "\10f735"; } + +.fad.fa-box-check:after { + content: "\10f467"; } + +.fad.fa-box-fragile:after { + content: "\10f49b"; } + +.fad.fa-box-full:after { + content: "\10f49c"; } + +.fad.fa-box-heart:after { + content: "\10f49d"; } + +.fad.fa-box-open:after { + content: "\10f49e"; } + +.fad.fa-box-tissue:after { + content: "\10f95b"; } + +.fad.fa-box-up:after { + content: "\10f49f"; } + +.fad.fa-box-usd:after { + content: "\10f4a0"; } + +.fad.fa-boxes:after { + content: "\10f468"; } + +.fad.fa-boxes-alt:after { + content: "\10f4a1"; } + +.fad.fa-boxing-glove:after { + content: "\10f438"; } + +.fad.fa-brackets:after { + content: "\10f7e9"; } + +.fad.fa-brackets-curly:after { + content: "\10f7ea"; } + +.fad.fa-braille:after { + content: "\10f2a1"; } + +.fad.fa-brain:after { + content: "\10f5dc"; } + +.fad.fa-bread-loaf:after { + content: "\10f7eb"; } + +.fad.fa-bread-slice:after { + content: "\10f7ec"; } + +.fad.fa-briefcase:after { + content: "\10f0b1"; } + +.fad.fa-briefcase-medical:after { + content: "\10f469"; } + +.fad.fa-bring-forward:after { + content: "\10f856"; } + +.fad.fa-bring-front:after { + content: "\10f857"; } + +.fad.fa-broadcast-tower:after { + content: "\10f519"; } + +.fad.fa-broom:after { + content: "\10f51a"; } + +.fad.fa-browser:after { + content: "\10f37e"; } + +.fad.fa-brush:after { + content: "\10f55d"; } + +.fad.fa-bug:after { + content: "\10f188"; } + +.fad.fa-building:after { + content: "\10f1ad"; } + +.fad.fa-bullhorn:after { + content: "\10f0a1"; } + +.fad.fa-bullseye:after { + content: "\10f140"; } + +.fad.fa-bullseye-arrow:after { + content: "\10f648"; } + +.fad.fa-bullseye-pointer:after { + content: "\10f649"; } + +.fad.fa-burger-soda:after { + content: "\10f858"; } + +.fad.fa-burn:after { + content: "\10f46a"; } + +.fad.fa-burrito:after { + content: "\10f7ed"; } + +.fad.fa-bus:after { + content: "\10f207"; } + +.fad.fa-bus-alt:after { + content: "\10f55e"; } + +.fad.fa-bus-school:after { + content: "\10f5dd"; } + +.fad.fa-business-time:after { + content: "\10f64a"; } + +.fad.fa-cabinet-filing:after { + content: "\10f64b"; } + +.fad.fa-cactus:after { + content: "\10f8a7"; } + +.fad.fa-calculator:after { + content: "\10f1ec"; } + +.fad.fa-calculator-alt:after { + content: "\10f64c"; } + +.fad.fa-calendar:after { + content: "\10f133"; } + +.fad.fa-calendar-alt:after { + content: "\10f073"; } + +.fad.fa-calendar-check:after { + content: "\10f274"; } + +.fad.fa-calendar-day:after { + content: "\10f783"; } + +.fad.fa-calendar-edit:after { + content: "\10f333"; } + +.fad.fa-calendar-exclamation:after { + content: "\10f334"; } + +.fad.fa-calendar-minus:after { + content: "\10f272"; } + +.fad.fa-calendar-plus:after { + content: "\10f271"; } + +.fad.fa-calendar-star:after { + content: "\10f736"; } + +.fad.fa-calendar-times:after { + content: "\10f273"; } + +.fad.fa-calendar-week:after { + content: "\10f784"; } + +.fad.fa-camcorder:after { + content: "\10f8a8"; } + +.fad.fa-camera:after { + content: "\10f030"; } + +.fad.fa-camera-alt:after { + content: "\10f332"; } + +.fad.fa-camera-home:after { + content: "\10f8fe"; } + +.fad.fa-camera-movie:after { + content: "\10f8a9"; } + +.fad.fa-camera-polaroid:after { + content: "\10f8aa"; } + +.fad.fa-camera-retro:after { + content: "\10f083"; } + +.fad.fa-campfire:after { + content: "\10f6ba"; } + +.fad.fa-campground:after { + content: "\10f6bb"; } + +.fad.fa-candle-holder:after { + content: "\10f6bc"; } + +.fad.fa-candy-cane:after { + content: "\10f786"; } + +.fad.fa-candy-corn:after { + content: "\10f6bd"; } + +.fad.fa-cannabis:after { + content: "\10f55f"; } + +.fad.fa-capsules:after { + content: "\10f46b"; } + +.fad.fa-car:after { + content: "\10f1b9"; } + +.fad.fa-car-alt:after { + content: "\10f5de"; } + +.fad.fa-car-battery:after { + content: "\10f5df"; } + +.fad.fa-car-building:after { + content: "\10f859"; } + +.fad.fa-car-bump:after { + content: "\10f5e0"; } + +.fad.fa-car-bus:after { + content: "\10f85a"; } + +.fad.fa-car-crash:after { + content: "\10f5e1"; } + +.fad.fa-car-garage:after { + content: "\10f5e2"; } + +.fad.fa-car-mechanic:after { + content: "\10f5e3"; } + +.fad.fa-car-side:after { + content: "\10f5e4"; } + +.fad.fa-car-tilt:after { + content: "\10f5e5"; } + +.fad.fa-car-wash:after { + content: "\10f5e6"; } + +.fad.fa-caravan:after { + content: "\10f8ff"; } + +.fad.fa-caravan-alt:after { + content: "\10f900"; } + +.fad.fa-caret-circle-down:after { + content: "\10f32d"; } + +.fad.fa-caret-circle-left:after { + content: "\10f32e"; } + +.fad.fa-caret-circle-right:after { + content: "\10f330"; } + +.fad.fa-caret-circle-up:after { + content: "\10f331"; } + +.fad.fa-caret-down:after { + content: "\10f0d7"; } + +.fad.fa-caret-left:after { + content: "\10f0d9"; } + +.fad.fa-caret-right:after { + content: "\10f0da"; } + +.fad.fa-caret-square-down:after { + content: "\10f150"; } + +.fad.fa-caret-square-left:after { + content: "\10f191"; } + +.fad.fa-caret-square-right:after { + content: "\10f152"; } + +.fad.fa-caret-square-up:after { + content: "\10f151"; } + +.fad.fa-caret-up:after { + content: "\10f0d8"; } + +.fad.fa-carrot:after { + content: "\10f787"; } + +.fad.fa-cars:after { + content: "\10f85b"; } + +.fad.fa-cart-arrow-down:after { + content: "\10f218"; } + +.fad.fa-cart-plus:after { + content: "\10f217"; } + +.fad.fa-cash-register:after { + content: "\10f788"; } + +.fad.fa-cassette-tape:after { + content: "\10f8ab"; } + +.fad.fa-cat:after { + content: "\10f6be"; } + +.fad.fa-cat-space:after { + content: "\10f901"; } + +.fad.fa-cauldron:after { + content: "\10f6bf"; } + +.fad.fa-cctv:after { + content: "\10f8ac"; } + +.fad.fa-certificate:after { + content: "\10f0a3"; } + +.fad.fa-chair:after { + content: "\10f6c0"; } + +.fad.fa-chair-office:after { + content: "\10f6c1"; } + +.fad.fa-chalkboard:after { + content: "\10f51b"; } + +.fad.fa-chalkboard-teacher:after { + content: "\10f51c"; } + +.fad.fa-charging-station:after { + content: "\10f5e7"; } + +.fad.fa-chart-area:after { + content: "\10f1fe"; } + +.fad.fa-chart-bar:after { + content: "\10f080"; } + +.fad.fa-chart-line:after { + content: "\10f201"; } + +.fad.fa-chart-line-down:after { + content: "\10f64d"; } + +.fad.fa-chart-network:after { + content: "\10f78a"; } + +.fad.fa-chart-pie:after { + content: "\10f200"; } + +.fad.fa-chart-pie-alt:after { + content: "\10f64e"; } + +.fad.fa-chart-scatter:after { + content: "\10f7ee"; } + +.fad.fa-check:after { + content: "\10f00c"; } + +.fad.fa-check-circle:after { + content: "\10f058"; } + +.fad.fa-check-double:after { + content: "\10f560"; } + +.fad.fa-check-square:after { + content: "\10f14a"; } + +.fad.fa-cheese:after { + content: "\10f7ef"; } + +.fad.fa-cheese-swiss:after { + content: "\10f7f0"; } + +.fad.fa-cheeseburger:after { + content: "\10f7f1"; } + +.fad.fa-chess:after { + content: "\10f439"; } + +.fad.fa-chess-bishop:after { + content: "\10f43a"; } + +.fad.fa-chess-bishop-alt:after { + content: "\10f43b"; } + +.fad.fa-chess-board:after { + content: "\10f43c"; } + +.fad.fa-chess-clock:after { + content: "\10f43d"; } + +.fad.fa-chess-clock-alt:after { + content: "\10f43e"; } + +.fad.fa-chess-king:after { + content: "\10f43f"; } + +.fad.fa-chess-king-alt:after { + content: "\10f440"; } + +.fad.fa-chess-knight:after { + content: "\10f441"; } + +.fad.fa-chess-knight-alt:after { + content: "\10f442"; } + +.fad.fa-chess-pawn:after { + content: "\10f443"; } + +.fad.fa-chess-pawn-alt:after { + content: "\10f444"; } + +.fad.fa-chess-queen:after { + content: "\10f445"; } + +.fad.fa-chess-queen-alt:after { + content: "\10f446"; } + +.fad.fa-chess-rook:after { + content: "\10f447"; } + +.fad.fa-chess-rook-alt:after { + content: "\10f448"; } + +.fad.fa-chevron-circle-down:after { + content: "\10f13a"; } + +.fad.fa-chevron-circle-left:after { + content: "\10f137"; } + +.fad.fa-chevron-circle-right:after { + content: "\10f138"; } + +.fad.fa-chevron-circle-up:after { + content: "\10f139"; } + +.fad.fa-chevron-double-down:after { + content: "\10f322"; } + +.fad.fa-chevron-double-left:after { + content: "\10f323"; } + +.fad.fa-chevron-double-right:after { + content: "\10f324"; } + +.fad.fa-chevron-double-up:after { + content: "\10f325"; } + +.fad.fa-chevron-down:after { + content: "\10f078"; } + +.fad.fa-chevron-left:after { + content: "\10f053"; } + +.fad.fa-chevron-right:after { + content: "\10f054"; } + +.fad.fa-chevron-square-down:after { + content: "\10f329"; } + +.fad.fa-chevron-square-left:after { + content: "\10f32a"; } + +.fad.fa-chevron-square-right:after { + content: "\10f32b"; } + +.fad.fa-chevron-square-up:after { + content: "\10f32c"; } + +.fad.fa-chevron-up:after { + content: "\10f077"; } + +.fad.fa-child:after { + content: "\10f1ae"; } + +.fad.fa-chimney:after { + content: "\10f78b"; } + +.fad.fa-church:after { + content: "\10f51d"; } + +.fad.fa-circle:after { + content: "\10f111"; } + +.fad.fa-circle-notch:after { + content: "\10f1ce"; } + +.fad.fa-city:after { + content: "\10f64f"; } + +.fad.fa-clarinet:after { + content: "\10f8ad"; } + +.fad.fa-claw-marks:after { + content: "\10f6c2"; } + +.fad.fa-clinic-medical:after { + content: "\10f7f2"; } + +.fad.fa-clipboard:after { + content: "\10f328"; } + +.fad.fa-clipboard-check:after { + content: "\10f46c"; } + +.fad.fa-clipboard-list:after { + content: "\10f46d"; } + +.fad.fa-clipboard-list-check:after { + content: "\10f737"; } + +.fad.fa-clipboard-prescription:after { + content: "\10f5e8"; } + +.fad.fa-clipboard-user:after { + content: "\10f7f3"; } + +.fad.fa-clock:after { + content: "\10f017"; } + +.fad.fa-clone:after { + content: "\10f24d"; } + +.fad.fa-closed-captioning:after { + content: "\10f20a"; } + +.fad.fa-cloud:after { + content: "\10f0c2"; } + +.fad.fa-cloud-download:after { + content: "\10f0ed"; } + +.fad.fa-cloud-download-alt:after { + content: "\10f381"; } + +.fad.fa-cloud-drizzle:after { + content: "\10f738"; } + +.fad.fa-cloud-hail:after { + content: "\10f739"; } + +.fad.fa-cloud-hail-mixed:after { + content: "\10f73a"; } + +.fad.fa-cloud-meatball:after { + content: "\10f73b"; } + +.fad.fa-cloud-moon:after { + content: "\10f6c3"; } + +.fad.fa-cloud-moon-rain:after { + content: "\10f73c"; } + +.fad.fa-cloud-music:after { + content: "\10f8ae"; } + +.fad.fa-cloud-rain:after { + content: "\10f73d"; } + +.fad.fa-cloud-rainbow:after { + content: "\10f73e"; } + +.fad.fa-cloud-showers:after { + content: "\10f73f"; } + +.fad.fa-cloud-showers-heavy:after { + content: "\10f740"; } + +.fad.fa-cloud-sleet:after { + content: "\10f741"; } + +.fad.fa-cloud-snow:after { + content: "\10f742"; } + +.fad.fa-cloud-sun:after { + content: "\10f6c4"; } + +.fad.fa-cloud-sun-rain:after { + content: "\10f743"; } + +.fad.fa-cloud-upload:after { + content: "\10f0ee"; } + +.fad.fa-cloud-upload-alt:after { + content: "\10f382"; } + +.fad.fa-clouds:after { + content: "\10f744"; } + +.fad.fa-clouds-moon:after { + content: "\10f745"; } + +.fad.fa-clouds-sun:after { + content: "\10f746"; } + +.fad.fa-club:after { + content: "\10f327"; } + +.fad.fa-cocktail:after { + content: "\10f561"; } + +.fad.fa-code:after { + content: "\10f121"; } + +.fad.fa-code-branch:after { + content: "\10f126"; } + +.fad.fa-code-commit:after { + content: "\10f386"; } + +.fad.fa-code-merge:after { + content: "\10f387"; } + +.fad.fa-coffee:after { + content: "\10f0f4"; } + +.fad.fa-coffee-pot:after { + content: "\10f902"; } + +.fad.fa-coffee-togo:after { + content: "\10f6c5"; } + +.fad.fa-coffin:after { + content: "\10f6c6"; } + +.fad.fa-coffin-cross:after { + content: "\10f951"; } + +.fad.fa-cog:after { + content: "\10f013"; } + +.fad.fa-cogs:after { + content: "\10f085"; } + +.fad.fa-coin:after { + content: "\10f85c"; } + +.fad.fa-coins:after { + content: "\10f51e"; } + +.fad.fa-columns:after { + content: "\10f0db"; } + +.fad.fa-comet:after { + content: "\10f903"; } + +.fad.fa-comment:after { + content: "\10f075"; } + +.fad.fa-comment-alt:after { + content: "\10f27a"; } + +.fad.fa-comment-alt-check:after { + content: "\10f4a2"; } + +.fad.fa-comment-alt-dollar:after { + content: "\10f650"; } + +.fad.fa-comment-alt-dots:after { + content: "\10f4a3"; } + +.fad.fa-comment-alt-edit:after { + content: "\10f4a4"; } + +.fad.fa-comment-alt-exclamation:after { + content: "\10f4a5"; } + +.fad.fa-comment-alt-lines:after { + content: "\10f4a6"; } + +.fad.fa-comment-alt-medical:after { + content: "\10f7f4"; } + +.fad.fa-comment-alt-minus:after { + content: "\10f4a7"; } + +.fad.fa-comment-alt-music:after { + content: "\10f8af"; } + +.fad.fa-comment-alt-plus:after { + content: "\10f4a8"; } + +.fad.fa-comment-alt-slash:after { + content: "\10f4a9"; } + +.fad.fa-comment-alt-smile:after { + content: "\10f4aa"; } + +.fad.fa-comment-alt-times:after { + content: "\10f4ab"; } + +.fad.fa-comment-check:after { + content: "\10f4ac"; } + +.fad.fa-comment-dollar:after { + content: "\10f651"; } + +.fad.fa-comment-dots:after { + content: "\10f4ad"; } + +.fad.fa-comment-edit:after { + content: "\10f4ae"; } + +.fad.fa-comment-exclamation:after { + content: "\10f4af"; } + +.fad.fa-comment-lines:after { + content: "\10f4b0"; } + +.fad.fa-comment-medical:after { + content: "\10f7f5"; } + +.fad.fa-comment-minus:after { + content: "\10f4b1"; } + +.fad.fa-comment-music:after { + content: "\10f8b0"; } + +.fad.fa-comment-plus:after { + content: "\10f4b2"; } + +.fad.fa-comment-slash:after { + content: "\10f4b3"; } + +.fad.fa-comment-smile:after { + content: "\10f4b4"; } + +.fad.fa-comment-times:after { + content: "\10f4b5"; } + +.fad.fa-comments:after { + content: "\10f086"; } + +.fad.fa-comments-alt:after { + content: "\10f4b6"; } + +.fad.fa-comments-alt-dollar:after { + content: "\10f652"; } + +.fad.fa-comments-dollar:after { + content: "\10f653"; } + +.fad.fa-compact-disc:after { + content: "\10f51f"; } + +.fad.fa-compass:after { + content: "\10f14e"; } + +.fad.fa-compass-slash:after { + content: "\10f5e9"; } + +.fad.fa-compress:after { + content: "\10f066"; } + +.fad.fa-compress-alt:after { + content: "\10f422"; } + +.fad.fa-compress-arrows-alt:after { + content: "\10f78c"; } + +.fad.fa-compress-wide:after { + content: "\10f326"; } + +.fad.fa-computer-classic:after { + content: "\10f8b1"; } + +.fad.fa-computer-speaker:after { + content: "\10f8b2"; } + +.fad.fa-concierge-bell:after { + content: "\10f562"; } + +.fad.fa-construction:after { + content: "\10f85d"; } + +.fad.fa-container-storage:after { + content: "\10f4b7"; } + +.fad.fa-conveyor-belt:after { + content: "\10f46e"; } + +.fad.fa-conveyor-belt-alt:after { + content: "\10f46f"; } + +.fad.fa-cookie:after { + content: "\10f563"; } + +.fad.fa-cookie-bite:after { + content: "\10f564"; } + +.fad.fa-copy:after { + content: "\10f0c5"; } + +.fad.fa-copyright:after { + content: "\10f1f9"; } + +.fad.fa-corn:after { + content: "\10f6c7"; } + +.fad.fa-couch:after { + content: "\10f4b8"; } + +.fad.fa-cow:after { + content: "\10f6c8"; } + +.fad.fa-cowbell:after { + content: "\10f8b3"; } + +.fad.fa-cowbell-more:after { + content: "\10f8b4"; } + +.fad.fa-credit-card:after { + content: "\10f09d"; } + +.fad.fa-credit-card-blank:after { + content: "\10f389"; } + +.fad.fa-credit-card-front:after { + content: "\10f38a"; } + +.fad.fa-cricket:after { + content: "\10f449"; } + +.fad.fa-croissant:after { + content: "\10f7f6"; } + +.fad.fa-crop:after { + content: "\10f125"; } + +.fad.fa-crop-alt:after { + content: "\10f565"; } + +.fad.fa-cross:after { + content: "\10f654"; } + +.fad.fa-crosshairs:after { + content: "\10f05b"; } + +.fad.fa-crow:after { + content: "\10f520"; } + +.fad.fa-crown:after { + content: "\10f521"; } + +.fad.fa-crutch:after { + content: "\10f7f7"; } + +.fad.fa-crutches:after { + content: "\10f7f8"; } + +.fad.fa-cube:after { + content: "\10f1b2"; } + +.fad.fa-cubes:after { + content: "\10f1b3"; } + +.fad.fa-curling:after { + content: "\10f44a"; } + +.fad.fa-cut:after { + content: "\10f0c4"; } + +.fad.fa-dagger:after { + content: "\10f6cb"; } + +.fad.fa-database:after { + content: "\10f1c0"; } + +.fad.fa-deaf:after { + content: "\10f2a4"; } + +.fad.fa-debug:after { + content: "\10f7f9"; } + +.fad.fa-deer:after { + content: "\10f78e"; } + +.fad.fa-deer-rudolph:after { + content: "\10f78f"; } + +.fad.fa-democrat:after { + content: "\10f747"; } + +.fad.fa-desktop:after { + content: "\10f108"; } + +.fad.fa-desktop-alt:after { + content: "\10f390"; } + +.fad.fa-dewpoint:after { + content: "\10f748"; } + +.fad.fa-dharmachakra:after { + content: "\10f655"; } + +.fad.fa-diagnoses:after { + content: "\10f470"; } + +.fad.fa-diamond:after { + content: "\10f219"; } + +.fad.fa-dice:after { + content: "\10f522"; } + +.fad.fa-dice-d10:after { + content: "\10f6cd"; } + +.fad.fa-dice-d12:after { + content: "\10f6ce"; } + +.fad.fa-dice-d20:after { + content: "\10f6cf"; } + +.fad.fa-dice-d4:after { + content: "\10f6d0"; } + +.fad.fa-dice-d6:after { + content: "\10f6d1"; } + +.fad.fa-dice-d8:after { + content: "\10f6d2"; } + +.fad.fa-dice-five:after { + content: "\10f523"; } + +.fad.fa-dice-four:after { + content: "\10f524"; } + +.fad.fa-dice-one:after { + content: "\10f525"; } + +.fad.fa-dice-six:after { + content: "\10f526"; } + +.fad.fa-dice-three:after { + content: "\10f527"; } + +.fad.fa-dice-two:after { + content: "\10f528"; } + +.fad.fa-digging:after { + content: "\10f85e"; } + +.fad.fa-digital-tachograph:after { + content: "\10f566"; } + +.fad.fa-diploma:after { + content: "\10f5ea"; } + +.fad.fa-directions:after { + content: "\10f5eb"; } + +.fad.fa-disc-drive:after { + content: "\10f8b5"; } + +.fad.fa-disease:after { + content: "\10f7fa"; } + +.fad.fa-divide:after { + content: "\10f529"; } + +.fad.fa-dizzy:after { + content: "\10f567"; } + +.fad.fa-dna:after { + content: "\10f471"; } + +.fad.fa-do-not-enter:after { + content: "\10f5ec"; } + +.fad.fa-dog:after { + content: "\10f6d3"; } + +.fad.fa-dog-leashed:after { + content: "\10f6d4"; } + +.fad.fa-dollar-sign:after { + content: "\10f155"; } + +.fad.fa-dolly:after { + content: "\10f472"; } + +.fad.fa-dolly-empty:after { + content: "\10f473"; } + +.fad.fa-dolly-flatbed:after { + content: "\10f474"; } + +.fad.fa-dolly-flatbed-alt:after { + content: "\10f475"; } + +.fad.fa-dolly-flatbed-empty:after { + content: "\10f476"; } + +.fad.fa-donate:after { + content: "\10f4b9"; } + +.fad.fa-door-closed:after { + content: "\10f52a"; } + +.fad.fa-door-open:after { + content: "\10f52b"; } + +.fad.fa-dot-circle:after { + content: "\10f192"; } + +.fad.fa-dove:after { + content: "\10f4ba"; } + +.fad.fa-download:after { + content: "\10f019"; } + +.fad.fa-drafting-compass:after { + content: "\10f568"; } + +.fad.fa-dragon:after { + content: "\10f6d5"; } + +.fad.fa-draw-circle:after { + content: "\10f5ed"; } + +.fad.fa-draw-polygon:after { + content: "\10f5ee"; } + +.fad.fa-draw-square:after { + content: "\10f5ef"; } + +.fad.fa-dreidel:after { + content: "\10f792"; } + +.fad.fa-drone:after { + content: "\10f85f"; } + +.fad.fa-drone-alt:after { + content: "\10f860"; } + +.fad.fa-drum:after { + content: "\10f569"; } + +.fad.fa-drum-steelpan:after { + content: "\10f56a"; } + +.fad.fa-drumstick:after { + content: "\10f6d6"; } + +.fad.fa-drumstick-bite:after { + content: "\10f6d7"; } + +.fad.fa-dryer:after { + content: "\10f861"; } + +.fad.fa-dryer-alt:after { + content: "\10f862"; } + +.fad.fa-duck:after { + content: "\10f6d8"; } + +.fad.fa-dumbbell:after { + content: "\10f44b"; } + +.fad.fa-dumpster:after { + content: "\10f793"; } + +.fad.fa-dumpster-fire:after { + content: "\10f794"; } + +.fad.fa-dungeon:after { + content: "\10f6d9"; } + +.fad.fa-ear:after { + content: "\10f5f0"; } + +.fad.fa-ear-muffs:after { + content: "\10f795"; } + +.fad.fa-eclipse:after { + content: "\10f749"; } + +.fad.fa-eclipse-alt:after { + content: "\10f74a"; } + +.fad.fa-edit:after { + content: "\10f044"; } + +.fad.fa-egg:after { + content: "\10f7fb"; } + +.fad.fa-egg-fried:after { + content: "\10f7fc"; } + +.fad.fa-eject:after { + content: "\10f052"; } + +.fad.fa-elephant:after { + content: "\10f6da"; } + +.fad.fa-ellipsis-h:after { + content: "\10f141"; } + +.fad.fa-ellipsis-h-alt:after { + content: "\10f39b"; } + +.fad.fa-ellipsis-v:after { + content: "\10f142"; } + +.fad.fa-ellipsis-v-alt:after { + content: "\10f39c"; } + +.fad.fa-empty-set:after { + content: "\10f656"; } + +.fad.fa-engine-warning:after { + content: "\10f5f2"; } + +.fad.fa-envelope:after { + content: "\10f0e0"; } + +.fad.fa-envelope-open:after { + content: "\10f2b6"; } + +.fad.fa-envelope-open-dollar:after { + content: "\10f657"; } + +.fad.fa-envelope-open-text:after { + content: "\10f658"; } + +.fad.fa-envelope-square:after { + content: "\10f199"; } + +.fad.fa-equals:after { + content: "\10f52c"; } + +.fad.fa-eraser:after { + content: "\10f12d"; } + +.fad.fa-ethernet:after { + content: "\10f796"; } + +.fad.fa-euro-sign:after { + content: "\10f153"; } + +.fad.fa-exchange:after { + content: "\10f0ec"; } + +.fad.fa-exchange-alt:after { + content: "\10f362"; } + +.fad.fa-exclamation:after { + content: "\10f12a"; } + +.fad.fa-exclamation-circle:after { + content: "\10f06a"; } + +.fad.fa-exclamation-square:after { + content: "\10f321"; } + +.fad.fa-exclamation-triangle:after { + content: "\10f071"; } + +.fad.fa-expand:after { + content: "\10f065"; } + +.fad.fa-expand-alt:after { + content: "\10f424"; } + +.fad.fa-expand-arrows:after { + content: "\10f31d"; } + +.fad.fa-expand-arrows-alt:after { + content: "\10f31e"; } + +.fad.fa-expand-wide:after { + content: "\10f320"; } + +.fad.fa-external-link:after { + content: "\10f08e"; } + +.fad.fa-external-link-alt:after { + content: "\10f35d"; } + +.fad.fa-external-link-square:after { + content: "\10f14c"; } + +.fad.fa-external-link-square-alt:after { + content: "\10f360"; } + +.fad.fa-eye:after { + content: "\10f06e"; } + +.fad.fa-eye-dropper:after { + content: "\10f1fb"; } + +.fad.fa-eye-evil:after { + content: "\10f6db"; } + +.fad.fa-eye-slash:after { + content: "\10f070"; } + +.fad.fa-fan:after { + content: "\10f863"; } + +.fad.fa-fan-table:after { + content: "\10f904"; } + +.fad.fa-farm:after { + content: "\10f864"; } + +.fad.fa-fast-backward:after { + content: "\10f049"; } + +.fad.fa-fast-forward:after { + content: "\10f050"; } + +.fad.fa-faucet:after { + content: "\10f905"; } + +.fad.fa-faucet-drip:after { + content: "\10f906"; } + +.fad.fa-fax:after { + content: "\10f1ac"; } + +.fad.fa-feather:after { + content: "\10f52d"; } + +.fad.fa-feather-alt:after { + content: "\10f56b"; } + +.fad.fa-female:after { + content: "\10f182"; } + +.fad.fa-field-hockey:after { + content: "\10f44c"; } + +.fad.fa-fighter-jet:after { + content: "\10f0fb"; } + +.fad.fa-file:after { + content: "\10f15b"; } + +.fad.fa-file-alt:after { + content: "\10f15c"; } + +.fad.fa-file-archive:after { + content: "\10f1c6"; } + +.fad.fa-file-audio:after { + content: "\10f1c7"; } + +.fad.fa-file-certificate:after { + content: "\10f5f3"; } + +.fad.fa-file-chart-line:after { + content: "\10f659"; } + +.fad.fa-file-chart-pie:after { + content: "\10f65a"; } + +.fad.fa-file-check:after { + content: "\10f316"; } + +.fad.fa-file-code:after { + content: "\10f1c9"; } + +.fad.fa-file-contract:after { + content: "\10f56c"; } + +.fad.fa-file-csv:after { + content: "\10f6dd"; } + +.fad.fa-file-download:after { + content: "\10f56d"; } + +.fad.fa-file-edit:after { + content: "\10f31c"; } + +.fad.fa-file-excel:after { + content: "\10f1c3"; } + +.fad.fa-file-exclamation:after { + content: "\10f31a"; } + +.fad.fa-file-export:after { + content: "\10f56e"; } + +.fad.fa-file-image:after { + content: "\10f1c5"; } + +.fad.fa-file-import:after { + content: "\10f56f"; } + +.fad.fa-file-invoice:after { + content: "\10f570"; } + +.fad.fa-file-invoice-dollar:after { + content: "\10f571"; } + +.fad.fa-file-medical:after { + content: "\10f477"; } + +.fad.fa-file-medical-alt:after { + content: "\10f478"; } + +.fad.fa-file-minus:after { + content: "\10f318"; } + +.fad.fa-file-music:after { + content: "\10f8b6"; } + +.fad.fa-file-pdf:after { + content: "\10f1c1"; } + +.fad.fa-file-plus:after { + content: "\10f319"; } + +.fad.fa-file-powerpoint:after { + content: "\10f1c4"; } + +.fad.fa-file-prescription:after { + content: "\10f572"; } + +.fad.fa-file-search:after { + content: "\10f865"; } + +.fad.fa-file-signature:after { + content: "\10f573"; } + +.fad.fa-file-spreadsheet:after { + content: "\10f65b"; } + +.fad.fa-file-times:after { + content: "\10f317"; } + +.fad.fa-file-upload:after { + content: "\10f574"; } + +.fad.fa-file-user:after { + content: "\10f65c"; } + +.fad.fa-file-video:after { + content: "\10f1c8"; } + +.fad.fa-file-word:after { + content: "\10f1c2"; } + +.fad.fa-files-medical:after { + content: "\10f7fd"; } + +.fad.fa-fill:after { + content: "\10f575"; } + +.fad.fa-fill-drip:after { + content: "\10f576"; } + +.fad.fa-film:after { + content: "\10f008"; } + +.fad.fa-film-alt:after { + content: "\10f3a0"; } + +.fad.fa-film-canister:after { + content: "\10f8b7"; } + +.fad.fa-filter:after { + content: "\10f0b0"; } + +.fad.fa-fingerprint:after { + content: "\10f577"; } + +.fad.fa-fire:after { + content: "\10f06d"; } + +.fad.fa-fire-alt:after { + content: "\10f7e4"; } + +.fad.fa-fire-extinguisher:after { + content: "\10f134"; } + +.fad.fa-fire-smoke:after { + content: "\10f74b"; } + +.fad.fa-fireplace:after { + content: "\10f79a"; } + +.fad.fa-first-aid:after { + content: "\10f479"; } + +.fad.fa-fish:after { + content: "\10f578"; } + +.fad.fa-fish-cooked:after { + content: "\10f7fe"; } + +.fad.fa-fist-raised:after { + content: "\10f6de"; } + +.fad.fa-flag:after { + content: "\10f024"; } + +.fad.fa-flag-alt:after { + content: "\10f74c"; } + +.fad.fa-flag-checkered:after { + content: "\10f11e"; } + +.fad.fa-flag-usa:after { + content: "\10f74d"; } + +.fad.fa-flame:after { + content: "\10f6df"; } + +.fad.fa-flashlight:after { + content: "\10f8b8"; } + +.fad.fa-flask:after { + content: "\10f0c3"; } + +.fad.fa-flask-poison:after { + content: "\10f6e0"; } + +.fad.fa-flask-potion:after { + content: "\10f6e1"; } + +.fad.fa-flower:after { + content: "\10f7ff"; } + +.fad.fa-flower-daffodil:after { + content: "\10f800"; } + +.fad.fa-flower-tulip:after { + content: "\10f801"; } + +.fad.fa-flushed:after { + content: "\10f579"; } + +.fad.fa-flute:after { + content: "\10f8b9"; } + +.fad.fa-flux-capacitor:after { + content: "\10f8ba"; } + +.fad.fa-fog:after { + content: "\10f74e"; } + +.fad.fa-folder:after { + content: "\10f07b"; } + +.fad.fa-folder-download:after { + content: "\10f953"; } + +.fad.fa-folder-minus:after { + content: "\10f65d"; } + +.fad.fa-folder-open:after { + content: "\10f07c"; } + +.fad.fa-folder-plus:after { + content: "\10f65e"; } + +.fad.fa-folder-times:after { + content: "\10f65f"; } + +.fad.fa-folder-tree:after { + content: "\10f802"; } + +.fad.fa-folder-upload:after { + content: "\10f954"; } + +.fad.fa-folders:after { + content: "\10f660"; } + +.fad.fa-font:after { + content: "\10f031"; } + +.fad.fa-font-awesome-logo-full:after { + content: "\10f4e6"; } + +.fad.fa-font-case:after { + content: "\10f866"; } + +.fad.fa-football-ball:after { + content: "\10f44e"; } + +.fad.fa-football-helmet:after { + content: "\10f44f"; } + +.fad.fa-forklift:after { + content: "\10f47a"; } + +.fad.fa-forward:after { + content: "\10f04e"; } + +.fad.fa-fragile:after { + content: "\10f4bb"; } + +.fad.fa-french-fries:after { + content: "\10f803"; } + +.fad.fa-frog:after { + content: "\10f52e"; } + +.fad.fa-frosty-head:after { + content: "\10f79b"; } + +.fad.fa-frown:after { + content: "\10f119"; } + +.fad.fa-frown-open:after { + content: "\10f57a"; } + +.fad.fa-function:after { + content: "\10f661"; } + +.fad.fa-funnel-dollar:after { + content: "\10f662"; } + +.fad.fa-futbol:after { + content: "\10f1e3"; } + +.fad.fa-galaxy:after { + content: "\10f908"; } + +.fad.fa-game-board:after { + content: "\10f867"; } + +.fad.fa-game-board-alt:after { + content: "\10f868"; } + +.fad.fa-game-console-handheld:after { + content: "\10f8bb"; } + +.fad.fa-gamepad:after { + content: "\10f11b"; } + +.fad.fa-gamepad-alt:after { + content: "\10f8bc"; } + +.fad.fa-garage:after { + content: "\10f909"; } + +.fad.fa-garage-car:after { + content: "\10f90a"; } + +.fad.fa-garage-open:after { + content: "\10f90b"; } + +.fad.fa-gas-pump:after { + content: "\10f52f"; } + +.fad.fa-gas-pump-slash:after { + content: "\10f5f4"; } + +.fad.fa-gavel:after { + content: "\10f0e3"; } + +.fad.fa-gem:after { + content: "\10f3a5"; } + +.fad.fa-genderless:after { + content: "\10f22d"; } + +.fad.fa-ghost:after { + content: "\10f6e2"; } + +.fad.fa-gift:after { + content: "\10f06b"; } + +.fad.fa-gift-card:after { + content: "\10f663"; } + +.fad.fa-gifts:after { + content: "\10f79c"; } + +.fad.fa-gingerbread-man:after { + content: "\10f79d"; } + +.fad.fa-glass:after { + content: "\10f804"; } + +.fad.fa-glass-champagne:after { + content: "\10f79e"; } + +.fad.fa-glass-cheers:after { + content: "\10f79f"; } + +.fad.fa-glass-citrus:after { + content: "\10f869"; } + +.fad.fa-glass-martini:after { + content: "\10f000"; } + +.fad.fa-glass-martini-alt:after { + content: "\10f57b"; } + +.fad.fa-glass-whiskey:after { + content: "\10f7a0"; } + +.fad.fa-glass-whiskey-rocks:after { + content: "\10f7a1"; } + +.fad.fa-glasses:after { + content: "\10f530"; } + +.fad.fa-glasses-alt:after { + content: "\10f5f5"; } + +.fad.fa-globe:after { + content: "\10f0ac"; } + +.fad.fa-globe-africa:after { + content: "\10f57c"; } + +.fad.fa-globe-americas:after { + content: "\10f57d"; } + +.fad.fa-globe-asia:after { + content: "\10f57e"; } + +.fad.fa-globe-europe:after { + content: "\10f7a2"; } + +.fad.fa-globe-snow:after { + content: "\10f7a3"; } + +.fad.fa-globe-stand:after { + content: "\10f5f6"; } + +.fad.fa-golf-ball:after { + content: "\10f450"; } + +.fad.fa-golf-club:after { + content: "\10f451"; } + +.fad.fa-gopuram:after { + content: "\10f664"; } + +.fad.fa-graduation-cap:after { + content: "\10f19d"; } + +.fad.fa-gramophone:after { + content: "\10f8bd"; } + +.fad.fa-greater-than:after { + content: "\10f531"; } + +.fad.fa-greater-than-equal:after { + content: "\10f532"; } + +.fad.fa-grimace:after { + content: "\10f57f"; } + +.fad.fa-grin:after { + content: "\10f580"; } + +.fad.fa-grin-alt:after { + content: "\10f581"; } + +.fad.fa-grin-beam:after { + content: "\10f582"; } + +.fad.fa-grin-beam-sweat:after { + content: "\10f583"; } + +.fad.fa-grin-hearts:after { + content: "\10f584"; } + +.fad.fa-grin-squint:after { + content: "\10f585"; } + +.fad.fa-grin-squint-tears:after { + content: "\10f586"; } + +.fad.fa-grin-stars:after { + content: "\10f587"; } + +.fad.fa-grin-tears:after { + content: "\10f588"; } + +.fad.fa-grin-tongue:after { + content: "\10f589"; } + +.fad.fa-grin-tongue-squint:after { + content: "\10f58a"; } + +.fad.fa-grin-tongue-wink:after { + content: "\10f58b"; } + +.fad.fa-grin-wink:after { + content: "\10f58c"; } + +.fad.fa-grip-horizontal:after { + content: "\10f58d"; } + +.fad.fa-grip-lines:after { + content: "\10f7a4"; } + +.fad.fa-grip-lines-vertical:after { + content: "\10f7a5"; } + +.fad.fa-grip-vertical:after { + content: "\10f58e"; } + +.fad.fa-guitar:after { + content: "\10f7a6"; } + +.fad.fa-guitar-electric:after { + content: "\10f8be"; } + +.fad.fa-guitars:after { + content: "\10f8bf"; } + +.fad.fa-h-square:after { + content: "\10f0fd"; } + +.fad.fa-h1:after { + content: "\10f313"; } + +.fad.fa-h2:after { + content: "\10f314"; } + +.fad.fa-h3:after { + content: "\10f315"; } + +.fad.fa-h4:after { + content: "\10f86a"; } + +.fad.fa-hamburger:after { + content: "\10f805"; } + +.fad.fa-hammer:after { + content: "\10f6e3"; } + +.fad.fa-hammer-war:after { + content: "\10f6e4"; } + +.fad.fa-hamsa:after { + content: "\10f665"; } + +.fad.fa-hand-heart:after { + content: "\10f4bc"; } + +.fad.fa-hand-holding:after { + content: "\10f4bd"; } + +.fad.fa-hand-holding-box:after { + content: "\10f47b"; } + +.fad.fa-hand-holding-heart:after { + content: "\10f4be"; } + +.fad.fa-hand-holding-magic:after { + content: "\10f6e5"; } + +.fad.fa-hand-holding-medical:after { + content: "\10f95c"; } + +.fad.fa-hand-holding-seedling:after { + content: "\10f4bf"; } + +.fad.fa-hand-holding-usd:after { + content: "\10f4c0"; } + +.fad.fa-hand-holding-water:after { + content: "\10f4c1"; } + +.fad.fa-hand-lizard:after { + content: "\10f258"; } + +.fad.fa-hand-middle-finger:after { + content: "\10f806"; } + +.fad.fa-hand-paper:after { + content: "\10f256"; } + +.fad.fa-hand-peace:after { + content: "\10f25b"; } + +.fad.fa-hand-point-down:after { + content: "\10f0a7"; } + +.fad.fa-hand-point-left:after { + content: "\10f0a5"; } + +.fad.fa-hand-point-right:after { + content: "\10f0a4"; } + +.fad.fa-hand-point-up:after { + content: "\10f0a6"; } + +.fad.fa-hand-pointer:after { + content: "\10f25a"; } + +.fad.fa-hand-receiving:after { + content: "\10f47c"; } + +.fad.fa-hand-rock:after { + content: "\10f255"; } + +.fad.fa-hand-scissors:after { + content: "\10f257"; } + +.fad.fa-hand-sparkles:after { + content: "\10f95d"; } + +.fad.fa-hand-spock:after { + content: "\10f259"; } + +.fad.fa-hands:after { + content: "\10f4c2"; } + +.fad.fa-hands-heart:after { + content: "\10f4c3"; } + +.fad.fa-hands-helping:after { + content: "\10f4c4"; } + +.fad.fa-hands-usd:after { + content: "\10f4c5"; } + +.fad.fa-hands-wash:after { + content: "\10f95e"; } + +.fad.fa-handshake:after { + content: "\10f2b5"; } + +.fad.fa-handshake-alt:after { + content: "\10f4c6"; } + +.fad.fa-handshake-alt-slash:after { + content: "\10f95f"; } + +.fad.fa-handshake-slash:after { + content: "\10f960"; } + +.fad.fa-hanukiah:after { + content: "\10f6e6"; } + +.fad.fa-hard-hat:after { + content: "\10f807"; } + +.fad.fa-hashtag:after { + content: "\10f292"; } + +.fad.fa-hat-chef:after { + content: "\10f86b"; } + +.fad.fa-hat-cowboy:after { + content: "\10f8c0"; } + +.fad.fa-hat-cowboy-side:after { + content: "\10f8c1"; } + +.fad.fa-hat-santa:after { + content: "\10f7a7"; } + +.fad.fa-hat-winter:after { + content: "\10f7a8"; } + +.fad.fa-hat-witch:after { + content: "\10f6e7"; } + +.fad.fa-hat-wizard:after { + content: "\10f6e8"; } + +.fad.fa-hdd:after { + content: "\10f0a0"; } + +.fad.fa-head-side:after { + content: "\10f6e9"; } + +.fad.fa-head-side-brain:after { + content: "\10f808"; } + +.fad.fa-head-side-cough:after { + content: "\10f961"; } + +.fad.fa-head-side-cough-slash:after { + content: "\10f962"; } + +.fad.fa-head-side-headphones:after { + content: "\10f8c2"; } + +.fad.fa-head-side-mask:after { + content: "\10f963"; } + +.fad.fa-head-side-medical:after { + content: "\10f809"; } + +.fad.fa-head-side-virus:after { + content: "\10f964"; } + +.fad.fa-head-vr:after { + content: "\10f6ea"; } + +.fad.fa-heading:after { + content: "\10f1dc"; } + +.fad.fa-headphones:after { + content: "\10f025"; } + +.fad.fa-headphones-alt:after { + content: "\10f58f"; } + +.fad.fa-headset:after { + content: "\10f590"; } + +.fad.fa-heart:after { + content: "\10f004"; } + +.fad.fa-heart-broken:after { + content: "\10f7a9"; } + +.fad.fa-heart-circle:after { + content: "\10f4c7"; } + +.fad.fa-heart-rate:after { + content: "\10f5f8"; } + +.fad.fa-heart-square:after { + content: "\10f4c8"; } + +.fad.fa-heartbeat:after { + content: "\10f21e"; } + +.fad.fa-heat:after { + content: "\10f90c"; } + +.fad.fa-helicopter:after { + content: "\10f533"; } + +.fad.fa-helmet-battle:after { + content: "\10f6eb"; } + +.fad.fa-hexagon:after { + content: "\10f312"; } + +.fad.fa-highlighter:after { + content: "\10f591"; } + +.fad.fa-hiking:after { + content: "\10f6ec"; } + +.fad.fa-hippo:after { + content: "\10f6ed"; } + +.fad.fa-history:after { + content: "\10f1da"; } + +.fad.fa-hockey-mask:after { + content: "\10f6ee"; } + +.fad.fa-hockey-puck:after { + content: "\10f453"; } + +.fad.fa-hockey-sticks:after { + content: "\10f454"; } + +.fad.fa-holly-berry:after { + content: "\10f7aa"; } + +.fad.fa-home:after { + content: "\10f015"; } + +.fad.fa-home-alt:after { + content: "\10f80a"; } + +.fad.fa-home-heart:after { + content: "\10f4c9"; } + +.fad.fa-home-lg:after { + content: "\10f80b"; } + +.fad.fa-home-lg-alt:after { + content: "\10f80c"; } + +.fad.fa-hood-cloak:after { + content: "\10f6ef"; } + +.fad.fa-horizontal-rule:after { + content: "\10f86c"; } + +.fad.fa-horse:after { + content: "\10f6f0"; } + +.fad.fa-horse-head:after { + content: "\10f7ab"; } + +.fad.fa-horse-saddle:after { + content: "\10f8c3"; } + +.fad.fa-hospital:after { + content: "\10f0f8"; } + +.fad.fa-hospital-alt:after { + content: "\10f47d"; } + +.fad.fa-hospital-symbol:after { + content: "\10f47e"; } + +.fad.fa-hospital-user:after { + content: "\10f80d"; } + +.fad.fa-hospitals:after { + content: "\10f80e"; } + +.fad.fa-hot-tub:after { + content: "\10f593"; } + +.fad.fa-hotdog:after { + content: "\10f80f"; } + +.fad.fa-hotel:after { + content: "\10f594"; } + +.fad.fa-hourglass:after { + content: "\10f254"; } + +.fad.fa-hourglass-end:after { + content: "\10f253"; } + +.fad.fa-hourglass-half:after { + content: "\10f252"; } + +.fad.fa-hourglass-start:after { + content: "\10f251"; } + +.fad.fa-house:after { + content: "\10f90d"; } + +.fad.fa-house-damage:after { + content: "\10f6f1"; } + +.fad.fa-house-day:after { + content: "\10f90e"; } + +.fad.fa-house-flood:after { + content: "\10f74f"; } + +.fad.fa-house-leave:after { + content: "\10f90f"; } + +.fad.fa-house-night:after { + content: "\10f910"; } + +.fad.fa-house-return:after { + content: "\10f911"; } + +.fad.fa-house-signal:after { + content: "\10f912"; } + +.fad.fa-house-user:after { + content: "\10f965"; } + +.fad.fa-hryvnia:after { + content: "\10f6f2"; } + +.fad.fa-humidity:after { + content: "\10f750"; } + +.fad.fa-hurricane:after { + content: "\10f751"; } + +.fad.fa-i-cursor:after { + content: "\10f246"; } + +.fad.fa-ice-cream:after { + content: "\10f810"; } + +.fad.fa-ice-skate:after { + content: "\10f7ac"; } + +.fad.fa-icicles:after { + content: "\10f7ad"; } + +.fad.fa-icons:after { + content: "\10f86d"; } + +.fad.fa-icons-alt:after { + content: "\10f86e"; } + +.fad.fa-id-badge:after { + content: "\10f2c1"; } + +.fad.fa-id-card:after { + content: "\10f2c2"; } + +.fad.fa-id-card-alt:after { + content: "\10f47f"; } + +.fad.fa-igloo:after { + content: "\10f7ae"; } + +.fad.fa-image:after { + content: "\10f03e"; } + +.fad.fa-image-polaroid:after { + content: "\10f8c4"; } + +.fad.fa-images:after { + content: "\10f302"; } + +.fad.fa-inbox:after { + content: "\10f01c"; } + +.fad.fa-inbox-in:after { + content: "\10f310"; } + +.fad.fa-inbox-out:after { + content: "\10f311"; } + +.fad.fa-indent:after { + content: "\10f03c"; } + +.fad.fa-industry:after { + content: "\10f275"; } + +.fad.fa-industry-alt:after { + content: "\10f3b3"; } + +.fad.fa-infinity:after { + content: "\10f534"; } + +.fad.fa-info:after { + content: "\10f129"; } + +.fad.fa-info-circle:after { + content: "\10f05a"; } + +.fad.fa-info-square:after { + content: "\10f30f"; } + +.fad.fa-inhaler:after { + content: "\10f5f9"; } + +.fad.fa-integral:after { + content: "\10f667"; } + +.fad.fa-intersection:after { + content: "\10f668"; } + +.fad.fa-inventory:after { + content: "\10f480"; } + +.fad.fa-island-tropical:after { + content: "\10f811"; } + +.fad.fa-italic:after { + content: "\10f033"; } + +.fad.fa-jack-o-lantern:after { + content: "\10f30e"; } + +.fad.fa-jedi:after { + content: "\10f669"; } + +.fad.fa-joint:after { + content: "\10f595"; } + +.fad.fa-journal-whills:after { + content: "\10f66a"; } + +.fad.fa-joystick:after { + content: "\10f8c5"; } + +.fad.fa-jug:after { + content: "\10f8c6"; } + +.fad.fa-kaaba:after { + content: "\10f66b"; } + +.fad.fa-kazoo:after { + content: "\10f8c7"; } + +.fad.fa-kerning:after { + content: "\10f86f"; } + +.fad.fa-key:after { + content: "\10f084"; } + +.fad.fa-key-skeleton:after { + content: "\10f6f3"; } + +.fad.fa-keyboard:after { + content: "\10f11c"; } + +.fad.fa-keynote:after { + content: "\10f66c"; } + +.fad.fa-khanda:after { + content: "\10f66d"; } + +.fad.fa-kidneys:after { + content: "\10f5fb"; } + +.fad.fa-kiss:after { + content: "\10f596"; } + +.fad.fa-kiss-beam:after { + content: "\10f597"; } + +.fad.fa-kiss-wink-heart:after { + content: "\10f598"; } + +.fad.fa-kite:after { + content: "\10f6f4"; } + +.fad.fa-kiwi-bird:after { + content: "\10f535"; } + +.fad.fa-knife-kitchen:after { + content: "\10f6f5"; } + +.fad.fa-lambda:after { + content: "\10f66e"; } + +.fad.fa-lamp:after { + content: "\10f4ca"; } + +.fad.fa-lamp-desk:after { + content: "\10f914"; } + +.fad.fa-lamp-floor:after { + content: "\10f915"; } + +.fad.fa-landmark:after { + content: "\10f66f"; } + +.fad.fa-landmark-alt:after { + content: "\10f752"; } + +.fad.fa-language:after { + content: "\10f1ab"; } + +.fad.fa-laptop:after { + content: "\10f109"; } + +.fad.fa-laptop-code:after { + content: "\10f5fc"; } + +.fad.fa-laptop-house:after { + content: "\10f966"; } + +.fad.fa-laptop-medical:after { + content: "\10f812"; } + +.fad.fa-lasso:after { + content: "\10f8c8"; } + +.fad.fa-laugh:after { + content: "\10f599"; } + +.fad.fa-laugh-beam:after { + content: "\10f59a"; } + +.fad.fa-laugh-squint:after { + content: "\10f59b"; } + +.fad.fa-laugh-wink:after { + content: "\10f59c"; } + +.fad.fa-layer-group:after { + content: "\10f5fd"; } + +.fad.fa-layer-minus:after { + content: "\10f5fe"; } + +.fad.fa-layer-plus:after { + content: "\10f5ff"; } + +.fad.fa-leaf:after { + content: "\10f06c"; } + +.fad.fa-leaf-heart:after { + content: "\10f4cb"; } + +.fad.fa-leaf-maple:after { + content: "\10f6f6"; } + +.fad.fa-leaf-oak:after { + content: "\10f6f7"; } + +.fad.fa-lemon:after { + content: "\10f094"; } + +.fad.fa-less-than:after { + content: "\10f536"; } + +.fad.fa-less-than-equal:after { + content: "\10f537"; } + +.fad.fa-level-down:after { + content: "\10f149"; } + +.fad.fa-level-down-alt:after { + content: "\10f3be"; } + +.fad.fa-level-up:after { + content: "\10f148"; } + +.fad.fa-level-up-alt:after { + content: "\10f3bf"; } + +.fad.fa-life-ring:after { + content: "\10f1cd"; } + +.fad.fa-light-ceiling:after { + content: "\10f916"; } + +.fad.fa-light-switch:after { + content: "\10f917"; } + +.fad.fa-light-switch-off:after { + content: "\10f918"; } + +.fad.fa-light-switch-on:after { + content: "\10f919"; } + +.fad.fa-lightbulb:after { + content: "\10f0eb"; } + +.fad.fa-lightbulb-dollar:after { + content: "\10f670"; } + +.fad.fa-lightbulb-exclamation:after { + content: "\10f671"; } + +.fad.fa-lightbulb-on:after { + content: "\10f672"; } + +.fad.fa-lightbulb-slash:after { + content: "\10f673"; } + +.fad.fa-lights-holiday:after { + content: "\10f7b2"; } + +.fad.fa-line-columns:after { + content: "\10f870"; } + +.fad.fa-line-height:after { + content: "\10f871"; } + +.fad.fa-link:after { + content: "\10f0c1"; } + +.fad.fa-lips:after { + content: "\10f600"; } + +.fad.fa-lira-sign:after { + content: "\10f195"; } + +.fad.fa-list:after { + content: "\10f03a"; } + +.fad.fa-list-alt:after { + content: "\10f022"; } + +.fad.fa-list-music:after { + content: "\10f8c9"; } + +.fad.fa-list-ol:after { + content: "\10f0cb"; } + +.fad.fa-list-ul:after { + content: "\10f0ca"; } + +.fad.fa-location:after { + content: "\10f601"; } + +.fad.fa-location-arrow:after { + content: "\10f124"; } + +.fad.fa-location-circle:after { + content: "\10f602"; } + +.fad.fa-location-slash:after { + content: "\10f603"; } + +.fad.fa-lock:after { + content: "\10f023"; } + +.fad.fa-lock-alt:after { + content: "\10f30d"; } + +.fad.fa-lock-open:after { + content: "\10f3c1"; } + +.fad.fa-lock-open-alt:after { + content: "\10f3c2"; } + +.fad.fa-long-arrow-alt-down:after { + content: "\10f309"; } + +.fad.fa-long-arrow-alt-left:after { + content: "\10f30a"; } + +.fad.fa-long-arrow-alt-right:after { + content: "\10f30b"; } + +.fad.fa-long-arrow-alt-up:after { + content: "\10f30c"; } + +.fad.fa-long-arrow-down:after { + content: "\10f175"; } + +.fad.fa-long-arrow-left:after { + content: "\10f177"; } + +.fad.fa-long-arrow-right:after { + content: "\10f178"; } + +.fad.fa-long-arrow-up:after { + content: "\10f176"; } + +.fad.fa-loveseat:after { + content: "\10f4cc"; } + +.fad.fa-low-vision:after { + content: "\10f2a8"; } + +.fad.fa-luchador:after { + content: "\10f455"; } + +.fad.fa-luggage-cart:after { + content: "\10f59d"; } + +.fad.fa-lungs:after { + content: "\10f604"; } + +.fad.fa-lungs-virus:after { + content: "\10f967"; } + +.fad.fa-mace:after { + content: "\10f6f8"; } + +.fad.fa-magic:after { + content: "\10f0d0"; } + +.fad.fa-magnet:after { + content: "\10f076"; } + +.fad.fa-mail-bulk:after { + content: "\10f674"; } + +.fad.fa-mailbox:after { + content: "\10f813"; } + +.fad.fa-male:after { + content: "\10f183"; } + +.fad.fa-mandolin:after { + content: "\10f6f9"; } + +.fad.fa-map:after { + content: "\10f279"; } + +.fad.fa-map-marked:after { + content: "\10f59f"; } + +.fad.fa-map-marked-alt:after { + content: "\10f5a0"; } + +.fad.fa-map-marker:after { + content: "\10f041"; } + +.fad.fa-map-marker-alt:after { + content: "\10f3c5"; } + +.fad.fa-map-marker-alt-slash:after { + content: "\10f605"; } + +.fad.fa-map-marker-check:after { + content: "\10f606"; } + +.fad.fa-map-marker-edit:after { + content: "\10f607"; } + +.fad.fa-map-marker-exclamation:after { + content: "\10f608"; } + +.fad.fa-map-marker-minus:after { + content: "\10f609"; } + +.fad.fa-map-marker-plus:after { + content: "\10f60a"; } + +.fad.fa-map-marker-question:after { + content: "\10f60b"; } + +.fad.fa-map-marker-slash:after { + content: "\10f60c"; } + +.fad.fa-map-marker-smile:after { + content: "\10f60d"; } + +.fad.fa-map-marker-times:after { + content: "\10f60e"; } + +.fad.fa-map-pin:after { + content: "\10f276"; } + +.fad.fa-map-signs:after { + content: "\10f277"; } + +.fad.fa-marker:after { + content: "\10f5a1"; } + +.fad.fa-mars:after { + content: "\10f222"; } + +.fad.fa-mars-double:after { + content: "\10f227"; } + +.fad.fa-mars-stroke:after { + content: "\10f229"; } + +.fad.fa-mars-stroke-h:after { + content: "\10f22b"; } + +.fad.fa-mars-stroke-v:after { + content: "\10f22a"; } + +.fad.fa-mask:after { + content: "\10f6fa"; } + +.fad.fa-meat:after { + content: "\10f814"; } + +.fad.fa-medal:after { + content: "\10f5a2"; } + +.fad.fa-medkit:after { + content: "\10f0fa"; } + +.fad.fa-megaphone:after { + content: "\10f675"; } + +.fad.fa-meh:after { + content: "\10f11a"; } + +.fad.fa-meh-blank:after { + content: "\10f5a4"; } + +.fad.fa-meh-rolling-eyes:after { + content: "\10f5a5"; } + +.fad.fa-memory:after { + content: "\10f538"; } + +.fad.fa-menorah:after { + content: "\10f676"; } + +.fad.fa-mercury:after { + content: "\10f223"; } + +.fad.fa-meteor:after { + content: "\10f753"; } + +.fad.fa-microchip:after { + content: "\10f2db"; } + +.fad.fa-microphone:after { + content: "\10f130"; } + +.fad.fa-microphone-alt:after { + content: "\10f3c9"; } + +.fad.fa-microphone-alt-slash:after { + content: "\10f539"; } + +.fad.fa-microphone-slash:after { + content: "\10f131"; } + +.fad.fa-microphone-stand:after { + content: "\10f8cb"; } + +.fad.fa-microscope:after { + content: "\10f610"; } + +.fad.fa-microwave:after { + content: "\10f91b"; } + +.fad.fa-mind-share:after { + content: "\10f677"; } + +.fad.fa-minus:after { + content: "\10f068"; } + +.fad.fa-minus-circle:after { + content: "\10f056"; } + +.fad.fa-minus-hexagon:after { + content: "\10f307"; } + +.fad.fa-minus-octagon:after { + content: "\10f308"; } + +.fad.fa-minus-square:after { + content: "\10f146"; } + +.fad.fa-mistletoe:after { + content: "\10f7b4"; } + +.fad.fa-mitten:after { + content: "\10f7b5"; } + +.fad.fa-mobile:after { + content: "\10f10b"; } + +.fad.fa-mobile-alt:after { + content: "\10f3cd"; } + +.fad.fa-mobile-android:after { + content: "\10f3ce"; } + +.fad.fa-mobile-android-alt:after { + content: "\10f3cf"; } + +.fad.fa-money-bill:after { + content: "\10f0d6"; } + +.fad.fa-money-bill-alt:after { + content: "\10f3d1"; } + +.fad.fa-money-bill-wave:after { + content: "\10f53a"; } + +.fad.fa-money-bill-wave-alt:after { + content: "\10f53b"; } + +.fad.fa-money-check:after { + content: "\10f53c"; } + +.fad.fa-money-check-alt:after { + content: "\10f53d"; } + +.fad.fa-money-check-edit:after { + content: "\10f872"; } + +.fad.fa-money-check-edit-alt:after { + content: "\10f873"; } + +.fad.fa-monitor-heart-rate:after { + content: "\10f611"; } + +.fad.fa-monkey:after { + content: "\10f6fb"; } + +.fad.fa-monument:after { + content: "\10f5a6"; } + +.fad.fa-moon:after { + content: "\10f186"; } + +.fad.fa-moon-cloud:after { + content: "\10f754"; } + +.fad.fa-moon-stars:after { + content: "\10f755"; } + +.fad.fa-mortar-pestle:after { + content: "\10f5a7"; } + +.fad.fa-mosque:after { + content: "\10f678"; } + +.fad.fa-motorcycle:after { + content: "\10f21c"; } + +.fad.fa-mountain:after { + content: "\10f6fc"; } + +.fad.fa-mountains:after { + content: "\10f6fd"; } + +.fad.fa-mouse:after { + content: "\10f8cc"; } + +.fad.fa-mouse-alt:after { + content: "\10f8cd"; } + +.fad.fa-mouse-pointer:after { + content: "\10f245"; } + +.fad.fa-mp3-player:after { + content: "\10f8ce"; } + +.fad.fa-mug:after { + content: "\10f874"; } + +.fad.fa-mug-hot:after { + content: "\10f7b6"; } + +.fad.fa-mug-marshmallows:after { + content: "\10f7b7"; } + +.fad.fa-mug-tea:after { + content: "\10f875"; } + +.fad.fa-music:after { + content: "\10f001"; } + +.fad.fa-music-alt:after { + content: "\10f8cf"; } + +.fad.fa-music-alt-slash:after { + content: "\10f8d0"; } + +.fad.fa-music-slash:after { + content: "\10f8d1"; } + +.fad.fa-narwhal:after { + content: "\10f6fe"; } + +.fad.fa-network-wired:after { + content: "\10f6ff"; } + +.fad.fa-neuter:after { + content: "\10f22c"; } + +.fad.fa-newspaper:after { + content: "\10f1ea"; } + +.fad.fa-not-equal:after { + content: "\10f53e"; } + +.fad.fa-notes-medical:after { + content: "\10f481"; } + +.fad.fa-object-group:after { + content: "\10f247"; } + +.fad.fa-object-ungroup:after { + content: "\10f248"; } + +.fad.fa-octagon:after { + content: "\10f306"; } + +.fad.fa-oil-can:after { + content: "\10f613"; } + +.fad.fa-oil-temp:after { + content: "\10f614"; } + +.fad.fa-om:after { + content: "\10f679"; } + +.fad.fa-omega:after { + content: "\10f67a"; } + +.fad.fa-ornament:after { + content: "\10f7b8"; } + +.fad.fa-otter:after { + content: "\10f700"; } + +.fad.fa-outdent:after { + content: "\10f03b"; } + +.fad.fa-outlet:after { + content: "\10f91c"; } + +.fad.fa-oven:after { + content: "\10f91d"; } + +.fad.fa-overline:after { + content: "\10f876"; } + +.fad.fa-page-break:after { + content: "\10f877"; } + +.fad.fa-pager:after { + content: "\10f815"; } + +.fad.fa-paint-brush:after { + content: "\10f1fc"; } + +.fad.fa-paint-brush-alt:after { + content: "\10f5a9"; } + +.fad.fa-paint-roller:after { + content: "\10f5aa"; } + +.fad.fa-palette:after { + content: "\10f53f"; } + +.fad.fa-pallet:after { + content: "\10f482"; } + +.fad.fa-pallet-alt:after { + content: "\10f483"; } + +.fad.fa-paper-plane:after { + content: "\10f1d8"; } + +.fad.fa-paperclip:after { + content: "\10f0c6"; } + +.fad.fa-parachute-box:after { + content: "\10f4cd"; } + +.fad.fa-paragraph:after { + content: "\10f1dd"; } + +.fad.fa-paragraph-rtl:after { + content: "\10f878"; } + +.fad.fa-parking:after { + content: "\10f540"; } + +.fad.fa-parking-circle:after { + content: "\10f615"; } + +.fad.fa-parking-circle-slash:after { + content: "\10f616"; } + +.fad.fa-parking-slash:after { + content: "\10f617"; } + +.fad.fa-passport:after { + content: "\10f5ab"; } + +.fad.fa-pastafarianism:after { + content: "\10f67b"; } + +.fad.fa-paste:after { + content: "\10f0ea"; } + +.fad.fa-pause:after { + content: "\10f04c"; } + +.fad.fa-pause-circle:after { + content: "\10f28b"; } + +.fad.fa-paw:after { + content: "\10f1b0"; } + +.fad.fa-paw-alt:after { + content: "\10f701"; } + +.fad.fa-paw-claws:after { + content: "\10f702"; } + +.fad.fa-peace:after { + content: "\10f67c"; } + +.fad.fa-pegasus:after { + content: "\10f703"; } + +.fad.fa-pen:after { + content: "\10f304"; } + +.fad.fa-pen-alt:after { + content: "\10f305"; } + +.fad.fa-pen-fancy:after { + content: "\10f5ac"; } + +.fad.fa-pen-nib:after { + content: "\10f5ad"; } + +.fad.fa-pen-square:after { + content: "\10f14b"; } + +.fad.fa-pencil:after { + content: "\10f040"; } + +.fad.fa-pencil-alt:after { + content: "\10f303"; } + +.fad.fa-pencil-paintbrush:after { + content: "\10f618"; } + +.fad.fa-pencil-ruler:after { + content: "\10f5ae"; } + +.fad.fa-pennant:after { + content: "\10f456"; } + +.fad.fa-people-arrows:after { + content: "\10f968"; } + +.fad.fa-people-carry:after { + content: "\10f4ce"; } + +.fad.fa-pepper-hot:after { + content: "\10f816"; } + +.fad.fa-percent:after { + content: "\10f295"; } + +.fad.fa-percentage:after { + content: "\10f541"; } + +.fad.fa-person-booth:after { + content: "\10f756"; } + +.fad.fa-person-carry:after { + content: "\10f4cf"; } + +.fad.fa-person-dolly:after { + content: "\10f4d0"; } + +.fad.fa-person-dolly-empty:after { + content: "\10f4d1"; } + +.fad.fa-person-sign:after { + content: "\10f757"; } + +.fad.fa-phone:after { + content: "\10f095"; } + +.fad.fa-phone-alt:after { + content: "\10f879"; } + +.fad.fa-phone-laptop:after { + content: "\10f87a"; } + +.fad.fa-phone-office:after { + content: "\10f67d"; } + +.fad.fa-phone-plus:after { + content: "\10f4d2"; } + +.fad.fa-phone-rotary:after { + content: "\10f8d3"; } + +.fad.fa-phone-slash:after { + content: "\10f3dd"; } + +.fad.fa-phone-square:after { + content: "\10f098"; } + +.fad.fa-phone-square-alt:after { + content: "\10f87b"; } + +.fad.fa-phone-volume:after { + content: "\10f2a0"; } + +.fad.fa-photo-video:after { + content: "\10f87c"; } + +.fad.fa-pi:after { + content: "\10f67e"; } + +.fad.fa-piano:after { + content: "\10f8d4"; } + +.fad.fa-piano-keyboard:after { + content: "\10f8d5"; } + +.fad.fa-pie:after { + content: "\10f705"; } + +.fad.fa-pig:after { + content: "\10f706"; } + +.fad.fa-piggy-bank:after { + content: "\10f4d3"; } + +.fad.fa-pills:after { + content: "\10f484"; } + +.fad.fa-pizza:after { + content: "\10f817"; } + +.fad.fa-pizza-slice:after { + content: "\10f818"; } + +.fad.fa-place-of-worship:after { + content: "\10f67f"; } + +.fad.fa-plane:after { + content: "\10f072"; } + +.fad.fa-plane-alt:after { + content: "\10f3de"; } + +.fad.fa-plane-arrival:after { + content: "\10f5af"; } + +.fad.fa-plane-departure:after { + content: "\10f5b0"; } + +.fad.fa-plane-slash:after { + content: "\10f969"; } + +.fad.fa-planet-moon:after { + content: "\10f91f"; } + +.fad.fa-planet-ringed:after { + content: "\10f920"; } + +.fad.fa-play:after { + content: "\10f04b"; } + +.fad.fa-play-circle:after { + content: "\10f144"; } + +.fad.fa-plug:after { + content: "\10f1e6"; } + +.fad.fa-plus:after { + content: "\10f067"; } + +.fad.fa-plus-circle:after { + content: "\10f055"; } + +.fad.fa-plus-hexagon:after { + content: "\10f300"; } + +.fad.fa-plus-octagon:after { + content: "\10f301"; } + +.fad.fa-plus-square:after { + content: "\10f0fe"; } + +.fad.fa-podcast:after { + content: "\10f2ce"; } + +.fad.fa-podium:after { + content: "\10f680"; } + +.fad.fa-podium-star:after { + content: "\10f758"; } + +.fad.fa-police-box:after { + content: "\10f921"; } + +.fad.fa-poll:after { + content: "\10f681"; } + +.fad.fa-poll-h:after { + content: "\10f682"; } + +.fad.fa-poll-people:after { + content: "\10f759"; } + +.fad.fa-poo:after { + content: "\10f2fe"; } + +.fad.fa-poo-storm:after { + content: "\10f75a"; } + +.fad.fa-poop:after { + content: "\10f619"; } + +.fad.fa-popcorn:after { + content: "\10f819"; } + +.fad.fa-portal-enter:after { + content: "\10f922"; } + +.fad.fa-portal-exit:after { + content: "\10f923"; } + +.fad.fa-portrait:after { + content: "\10f3e0"; } + +.fad.fa-pound-sign:after { + content: "\10f154"; } + +.fad.fa-power-off:after { + content: "\10f011"; } + +.fad.fa-pray:after { + content: "\10f683"; } + +.fad.fa-praying-hands:after { + content: "\10f684"; } + +.fad.fa-prescription:after { + content: "\10f5b1"; } + +.fad.fa-prescription-bottle:after { + content: "\10f485"; } + +.fad.fa-prescription-bottle-alt:after { + content: "\10f486"; } + +.fad.fa-presentation:after { + content: "\10f685"; } + +.fad.fa-print:after { + content: "\10f02f"; } + +.fad.fa-print-search:after { + content: "\10f81a"; } + +.fad.fa-print-slash:after { + content: "\10f686"; } + +.fad.fa-procedures:after { + content: "\10f487"; } + +.fad.fa-project-diagram:after { + content: "\10f542"; } + +.fad.fa-projector:after { + content: "\10f8d6"; } + +.fad.fa-pump-medical:after { + content: "\10f96a"; } + +.fad.fa-pump-soap:after { + content: "\10f96b"; } + +.fad.fa-pumpkin:after { + content: "\10f707"; } + +.fad.fa-puzzle-piece:after { + content: "\10f12e"; } + +.fad.fa-qrcode:after { + content: "\10f029"; } + +.fad.fa-question:after { + content: "\10f128"; } + +.fad.fa-question-circle:after { + content: "\10f059"; } + +.fad.fa-question-square:after { + content: "\10f2fd"; } + +.fad.fa-quidditch:after { + content: "\10f458"; } + +.fad.fa-quote-left:after { + content: "\10f10d"; } + +.fad.fa-quote-right:after { + content: "\10f10e"; } + +.fad.fa-quran:after { + content: "\10f687"; } + +.fad.fa-rabbit:after { + content: "\10f708"; } + +.fad.fa-rabbit-fast:after { + content: "\10f709"; } + +.fad.fa-racquet:after { + content: "\10f45a"; } + +.fad.fa-radar:after { + content: "\10f924"; } + +.fad.fa-radiation:after { + content: "\10f7b9"; } + +.fad.fa-radiation-alt:after { + content: "\10f7ba"; } + +.fad.fa-radio:after { + content: "\10f8d7"; } + +.fad.fa-radio-alt:after { + content: "\10f8d8"; } + +.fad.fa-rainbow:after { + content: "\10f75b"; } + +.fad.fa-raindrops:after { + content: "\10f75c"; } + +.fad.fa-ram:after { + content: "\10f70a"; } + +.fad.fa-ramp-loading:after { + content: "\10f4d4"; } + +.fad.fa-random:after { + content: "\10f074"; } + +.fad.fa-raygun:after { + content: "\10f925"; } + +.fad.fa-receipt:after { + content: "\10f543"; } + +.fad.fa-record-vinyl:after { + content: "\10f8d9"; } + +.fad.fa-rectangle-landscape:after { + content: "\10f2fa"; } + +.fad.fa-rectangle-portrait:after { + content: "\10f2fb"; } + +.fad.fa-rectangle-wide:after { + content: "\10f2fc"; } + +.fad.fa-recycle:after { + content: "\10f1b8"; } + +.fad.fa-redo:after { + content: "\10f01e"; } + +.fad.fa-redo-alt:after { + content: "\10f2f9"; } + +.fad.fa-refrigerator:after { + content: "\10f926"; } + +.fad.fa-registered:after { + content: "\10f25d"; } + +.fad.fa-remove-format:after { + content: "\10f87d"; } + +.fad.fa-repeat:after { + content: "\10f363"; } + +.fad.fa-repeat-1:after { + content: "\10f365"; } + +.fad.fa-repeat-1-alt:after { + content: "\10f366"; } + +.fad.fa-repeat-alt:after { + content: "\10f364"; } + +.fad.fa-reply:after { + content: "\10f3e5"; } + +.fad.fa-reply-all:after { + content: "\10f122"; } + +.fad.fa-republican:after { + content: "\10f75e"; } + +.fad.fa-restroom:after { + content: "\10f7bd"; } + +.fad.fa-retweet:after { + content: "\10f079"; } + +.fad.fa-retweet-alt:after { + content: "\10f361"; } + +.fad.fa-ribbon:after { + content: "\10f4d6"; } + +.fad.fa-ring:after { + content: "\10f70b"; } + +.fad.fa-rings-wedding:after { + content: "\10f81b"; } + +.fad.fa-road:after { + content: "\10f018"; } + +.fad.fa-robot:after { + content: "\10f544"; } + +.fad.fa-rocket:after { + content: "\10f135"; } + +.fad.fa-rocket-launch:after { + content: "\10f927"; } + +.fad.fa-route:after { + content: "\10f4d7"; } + +.fad.fa-route-highway:after { + content: "\10f61a"; } + +.fad.fa-route-interstate:after { + content: "\10f61b"; } + +.fad.fa-router:after { + content: "\10f8da"; } + +.fad.fa-rss:after { + content: "\10f09e"; } + +.fad.fa-rss-square:after { + content: "\10f143"; } + +.fad.fa-ruble-sign:after { + content: "\10f158"; } + +.fad.fa-ruler:after { + content: "\10f545"; } + +.fad.fa-ruler-combined:after { + content: "\10f546"; } + +.fad.fa-ruler-horizontal:after { + content: "\10f547"; } + +.fad.fa-ruler-triangle:after { + content: "\10f61c"; } + +.fad.fa-ruler-vertical:after { + content: "\10f548"; } + +.fad.fa-running:after { + content: "\10f70c"; } + +.fad.fa-rupee-sign:after { + content: "\10f156"; } + +.fad.fa-rv:after { + content: "\10f7be"; } + +.fad.fa-sack:after { + content: "\10f81c"; } + +.fad.fa-sack-dollar:after { + content: "\10f81d"; } + +.fad.fa-sad-cry:after { + content: "\10f5b3"; } + +.fad.fa-sad-tear:after { + content: "\10f5b4"; } + +.fad.fa-salad:after { + content: "\10f81e"; } + +.fad.fa-sandwich:after { + content: "\10f81f"; } + +.fad.fa-satellite:after { + content: "\10f7bf"; } + +.fad.fa-satellite-dish:after { + content: "\10f7c0"; } + +.fad.fa-sausage:after { + content: "\10f820"; } + +.fad.fa-save:after { + content: "\10f0c7"; } + +.fad.fa-sax-hot:after { + content: "\10f8db"; } + +.fad.fa-saxophone:after { + content: "\10f8dc"; } + +.fad.fa-scalpel:after { + content: "\10f61d"; } + +.fad.fa-scalpel-path:after { + content: "\10f61e"; } + +.fad.fa-scanner:after { + content: "\10f488"; } + +.fad.fa-scanner-image:after { + content: "\10f8f3"; } + +.fad.fa-scanner-keyboard:after { + content: "\10f489"; } + +.fad.fa-scanner-touchscreen:after { + content: "\10f48a"; } + +.fad.fa-scarecrow:after { + content: "\10f70d"; } + +.fad.fa-scarf:after { + content: "\10f7c1"; } + +.fad.fa-school:after { + content: "\10f549"; } + +.fad.fa-screwdriver:after { + content: "\10f54a"; } + +.fad.fa-scroll:after { + content: "\10f70e"; } + +.fad.fa-scroll-old:after { + content: "\10f70f"; } + +.fad.fa-scrubber:after { + content: "\10f2f8"; } + +.fad.fa-scythe:after { + content: "\10f710"; } + +.fad.fa-sd-card:after { + content: "\10f7c2"; } + +.fad.fa-search:after { + content: "\10f002"; } + +.fad.fa-search-dollar:after { + content: "\10f688"; } + +.fad.fa-search-location:after { + content: "\10f689"; } + +.fad.fa-search-minus:after { + content: "\10f010"; } + +.fad.fa-search-plus:after { + content: "\10f00e"; } + +.fad.fa-seedling:after { + content: "\10f4d8"; } + +.fad.fa-send-back:after { + content: "\10f87e"; } + +.fad.fa-send-backward:after { + content: "\10f87f"; } + +.fad.fa-sensor:after { + content: "\10f928"; } + +.fad.fa-sensor-alert:after { + content: "\10f929"; } + +.fad.fa-sensor-fire:after { + content: "\10f92a"; } + +.fad.fa-sensor-on:after { + content: "\10f92b"; } + +.fad.fa-sensor-smoke:after { + content: "\10f92c"; } + +.fad.fa-server:after { + content: "\10f233"; } + +.fad.fa-shapes:after { + content: "\10f61f"; } + +.fad.fa-share:after { + content: "\10f064"; } + +.fad.fa-share-all:after { + content: "\10f367"; } + +.fad.fa-share-alt:after { + content: "\10f1e0"; } + +.fad.fa-share-alt-square:after { + content: "\10f1e1"; } + +.fad.fa-share-square:after { + content: "\10f14d"; } + +.fad.fa-sheep:after { + content: "\10f711"; } + +.fad.fa-shekel-sign:after { + content: "\10f20b"; } + +.fad.fa-shield:after { + content: "\10f132"; } + +.fad.fa-shield-alt:after { + content: "\10f3ed"; } + +.fad.fa-shield-check:after { + content: "\10f2f7"; } + +.fad.fa-shield-cross:after { + content: "\10f712"; } + +.fad.fa-shield-virus:after { + content: "\10f96c"; } + +.fad.fa-ship:after { + content: "\10f21a"; } + +.fad.fa-shipping-fast:after { + content: "\10f48b"; } + +.fad.fa-shipping-timed:after { + content: "\10f48c"; } + +.fad.fa-shish-kebab:after { + content: "\10f821"; } + +.fad.fa-shoe-prints:after { + content: "\10f54b"; } + +.fad.fa-shopping-bag:after { + content: "\10f290"; } + +.fad.fa-shopping-basket:after { + content: "\10f291"; } + +.fad.fa-shopping-cart:after { + content: "\10f07a"; } + +.fad.fa-shovel:after { + content: "\10f713"; } + +.fad.fa-shovel-snow:after { + content: "\10f7c3"; } + +.fad.fa-shower:after { + content: "\10f2cc"; } + +.fad.fa-shredder:after { + content: "\10f68a"; } + +.fad.fa-shuttle-van:after { + content: "\10f5b6"; } + +.fad.fa-shuttlecock:after { + content: "\10f45b"; } + +.fad.fa-sickle:after { + content: "\10f822"; } + +.fad.fa-sigma:after { + content: "\10f68b"; } + +.fad.fa-sign:after { + content: "\10f4d9"; } + +.fad.fa-sign-in:after { + content: "\10f090"; } + +.fad.fa-sign-in-alt:after { + content: "\10f2f6"; } + +.fad.fa-sign-language:after { + content: "\10f2a7"; } + +.fad.fa-sign-out:after { + content: "\10f08b"; } + +.fad.fa-sign-out-alt:after { + content: "\10f2f5"; } + +.fad.fa-signal:after { + content: "\10f012"; } + +.fad.fa-signal-1:after { + content: "\10f68c"; } + +.fad.fa-signal-2:after { + content: "\10f68d"; } + +.fad.fa-signal-3:after { + content: "\10f68e"; } + +.fad.fa-signal-4:after { + content: "\10f68f"; } + +.fad.fa-signal-alt:after { + content: "\10f690"; } + +.fad.fa-signal-alt-1:after { + content: "\10f691"; } + +.fad.fa-signal-alt-2:after { + content: "\10f692"; } + +.fad.fa-signal-alt-3:after { + content: "\10f693"; } + +.fad.fa-signal-alt-slash:after { + content: "\10f694"; } + +.fad.fa-signal-slash:after { + content: "\10f695"; } + +.fad.fa-signal-stream:after { + content: "\10f8dd"; } + +.fad.fa-signature:after { + content: "\10f5b7"; } + +.fad.fa-sim-card:after { + content: "\10f7c4"; } + +.fad.fa-sink:after { + content: "\10f96d"; } + +.fad.fa-siren:after { + content: "\10f92d"; } + +.fad.fa-siren-on:after { + content: "\10f92e"; } + +.fad.fa-sitemap:after { + content: "\10f0e8"; } + +.fad.fa-skating:after { + content: "\10f7c5"; } + +.fad.fa-skeleton:after { + content: "\10f620"; } + +.fad.fa-ski-jump:after { + content: "\10f7c7"; } + +.fad.fa-ski-lift:after { + content: "\10f7c8"; } + +.fad.fa-skiing:after { + content: "\10f7c9"; } + +.fad.fa-skiing-nordic:after { + content: "\10f7ca"; } + +.fad.fa-skull:after { + content: "\10f54c"; } + +.fad.fa-skull-cow:after { + content: "\10f8de"; } + +.fad.fa-skull-crossbones:after { + content: "\10f714"; } + +.fad.fa-slash:after { + content: "\10f715"; } + +.fad.fa-sledding:after { + content: "\10f7cb"; } + +.fad.fa-sleigh:after { + content: "\10f7cc"; } + +.fad.fa-sliders-h:after { + content: "\10f1de"; } + +.fad.fa-sliders-h-square:after { + content: "\10f3f0"; } + +.fad.fa-sliders-v:after { + content: "\10f3f1"; } + +.fad.fa-sliders-v-square:after { + content: "\10f3f2"; } + +.fad.fa-smile:after { + content: "\10f118"; } + +.fad.fa-smile-beam:after { + content: "\10f5b8"; } + +.fad.fa-smile-plus:after { + content: "\10f5b9"; } + +.fad.fa-smile-wink:after { + content: "\10f4da"; } + +.fad.fa-smog:after { + content: "\10f75f"; } + +.fad.fa-smoke:after { + content: "\10f760"; } + +.fad.fa-smoking:after { + content: "\10f48d"; } + +.fad.fa-smoking-ban:after { + content: "\10f54d"; } + +.fad.fa-sms:after { + content: "\10f7cd"; } + +.fad.fa-snake:after { + content: "\10f716"; } + +.fad.fa-snooze:after { + content: "\10f880"; } + +.fad.fa-snow-blowing:after { + content: "\10f761"; } + +.fad.fa-snowboarding:after { + content: "\10f7ce"; } + +.fad.fa-snowflake:after { + content: "\10f2dc"; } + +.fad.fa-snowflakes:after { + content: "\10f7cf"; } + +.fad.fa-snowman:after { + content: "\10f7d0"; } + +.fad.fa-snowmobile:after { + content: "\10f7d1"; } + +.fad.fa-snowplow:after { + content: "\10f7d2"; } + +.fad.fa-soap:after { + content: "\10f96e"; } + +.fad.fa-socks:after { + content: "\10f696"; } + +.fad.fa-solar-panel:after { + content: "\10f5ba"; } + +.fad.fa-solar-system:after { + content: "\10f92f"; } + +.fad.fa-sort:after { + content: "\10f0dc"; } + +.fad.fa-sort-alpha-down:after { + content: "\10f15d"; } + +.fad.fa-sort-alpha-down-alt:after { + content: "\10f881"; } + +.fad.fa-sort-alpha-up:after { + content: "\10f15e"; } + +.fad.fa-sort-alpha-up-alt:after { + content: "\10f882"; } + +.fad.fa-sort-alt:after { + content: "\10f883"; } + +.fad.fa-sort-amount-down:after { + content: "\10f160"; } + +.fad.fa-sort-amount-down-alt:after { + content: "\10f884"; } + +.fad.fa-sort-amount-up:after { + content: "\10f161"; } + +.fad.fa-sort-amount-up-alt:after { + content: "\10f885"; } + +.fad.fa-sort-circle:after { + content: "\10f930"; } + +.fad.fa-sort-circle-down:after { + content: "\10f931"; } + +.fad.fa-sort-circle-up:after { + content: "\10f932"; } + +.fad.fa-sort-down:after { + content: "\10f0dd"; } + +.fad.fa-sort-numeric-down:after { + content: "\10f162"; } + +.fad.fa-sort-numeric-down-alt:after { + content: "\10f886"; } + +.fad.fa-sort-numeric-up:after { + content: "\10f163"; } + +.fad.fa-sort-numeric-up-alt:after { + content: "\10f887"; } + +.fad.fa-sort-shapes-down:after { + content: "\10f888"; } + +.fad.fa-sort-shapes-down-alt:after { + content: "\10f889"; } + +.fad.fa-sort-shapes-up:after { + content: "\10f88a"; } + +.fad.fa-sort-shapes-up-alt:after { + content: "\10f88b"; } + +.fad.fa-sort-size-down:after { + content: "\10f88c"; } + +.fad.fa-sort-size-down-alt:after { + content: "\10f88d"; } + +.fad.fa-sort-size-up:after { + content: "\10f88e"; } + +.fad.fa-sort-size-up-alt:after { + content: "\10f88f"; } + +.fad.fa-sort-up:after { + content: "\10f0de"; } + +.fad.fa-soup:after { + content: "\10f823"; } + +.fad.fa-spa:after { + content: "\10f5bb"; } + +.fad.fa-space-shuttle:after { + content: "\10f197"; } + +.fad.fa-space-station-moon:after { + content: "\10f933"; } + +.fad.fa-space-station-moon-alt:after { + content: "\10f934"; } + +.fad.fa-spade:after { + content: "\10f2f4"; } + +.fad.fa-sparkles:after { + content: "\10f890"; } + +.fad.fa-speaker:after { + content: "\10f8df"; } + +.fad.fa-speakers:after { + content: "\10f8e0"; } + +.fad.fa-spell-check:after { + content: "\10f891"; } + +.fad.fa-spider:after { + content: "\10f717"; } + +.fad.fa-spider-black-widow:after { + content: "\10f718"; } + +.fad.fa-spider-web:after { + content: "\10f719"; } + +.fad.fa-spinner:after { + content: "\10f110"; } + +.fad.fa-spinner-third:after { + content: "\10f3f4"; } + +.fad.fa-splotch:after { + content: "\10f5bc"; } + +.fad.fa-spray-can:after { + content: "\10f5bd"; } + +.fad.fa-sprinkler:after { + content: "\10f935"; } + +.fad.fa-square:after { + content: "\10f0c8"; } + +.fad.fa-square-full:after { + content: "\10f45c"; } + +.fad.fa-square-root:after { + content: "\10f697"; } + +.fad.fa-square-root-alt:after { + content: "\10f698"; } + +.fad.fa-squirrel:after { + content: "\10f71a"; } + +.fad.fa-staff:after { + content: "\10f71b"; } + +.fad.fa-stamp:after { + content: "\10f5bf"; } + +.fad.fa-star:after { + content: "\10f005"; } + +.fad.fa-star-and-crescent:after { + content: "\10f699"; } + +.fad.fa-star-christmas:after { + content: "\10f7d4"; } + +.fad.fa-star-exclamation:after { + content: "\10f2f3"; } + +.fad.fa-star-half:after { + content: "\10f089"; } + +.fad.fa-star-half-alt:after { + content: "\10f5c0"; } + +.fad.fa-star-of-david:after { + content: "\10f69a"; } + +.fad.fa-star-of-life:after { + content: "\10f621"; } + +.fad.fa-star-shooting:after { + content: "\10f936"; } + +.fad.fa-starfighter:after { + content: "\10f937"; } + +.fad.fa-starfighter-alt:after { + content: "\10f938"; } + +.fad.fa-stars:after { + content: "\10f762"; } + +.fad.fa-starship:after { + content: "\10f939"; } + +.fad.fa-starship-freighter:after { + content: "\10f93a"; } + +.fad.fa-steak:after { + content: "\10f824"; } + +.fad.fa-steering-wheel:after { + content: "\10f622"; } + +.fad.fa-step-backward:after { + content: "\10f048"; } + +.fad.fa-step-forward:after { + content: "\10f051"; } + +.fad.fa-stethoscope:after { + content: "\10f0f1"; } + +.fad.fa-sticky-note:after { + content: "\10f249"; } + +.fad.fa-stocking:after { + content: "\10f7d5"; } + +.fad.fa-stomach:after { + content: "\10f623"; } + +.fad.fa-stop:after { + content: "\10f04d"; } + +.fad.fa-stop-circle:after { + content: "\10f28d"; } + +.fad.fa-stopwatch:after { + content: "\10f2f2"; } + +.fad.fa-stopwatch-20:after { + content: "\10f96f"; } + +.fad.fa-store:after { + content: "\10f54e"; } + +.fad.fa-store-alt:after { + content: "\10f54f"; } + +.fad.fa-store-alt-slash:after { + content: "\10f970"; } + +.fad.fa-store-slash:after { + content: "\10f971"; } + +.fad.fa-stream:after { + content: "\10f550"; } + +.fad.fa-street-view:after { + content: "\10f21d"; } + +.fad.fa-stretcher:after { + content: "\10f825"; } + +.fad.fa-strikethrough:after { + content: "\10f0cc"; } + +.fad.fa-stroopwafel:after { + content: "\10f551"; } + +.fad.fa-subscript:after { + content: "\10f12c"; } + +.fad.fa-subway:after { + content: "\10f239"; } + +.fad.fa-suitcase:after { + content: "\10f0f2"; } + +.fad.fa-suitcase-rolling:after { + content: "\10f5c1"; } + +.fad.fa-sun:after { + content: "\10f185"; } + +.fad.fa-sun-cloud:after { + content: "\10f763"; } + +.fad.fa-sun-dust:after { + content: "\10f764"; } + +.fad.fa-sun-haze:after { + content: "\10f765"; } + +.fad.fa-sunglasses:after { + content: "\10f892"; } + +.fad.fa-sunrise:after { + content: "\10f766"; } + +.fad.fa-sunset:after { + content: "\10f767"; } + +.fad.fa-superscript:after { + content: "\10f12b"; } + +.fad.fa-surprise:after { + content: "\10f5c2"; } + +.fad.fa-swatchbook:after { + content: "\10f5c3"; } + +.fad.fa-swimmer:after { + content: "\10f5c4"; } + +.fad.fa-swimming-pool:after { + content: "\10f5c5"; } + +.fad.fa-sword:after { + content: "\10f71c"; } + +.fad.fa-sword-laser:after { + content: "\10f93b"; } + +.fad.fa-sword-laser-alt:after { + content: "\10f93c"; } + +.fad.fa-swords:after { + content: "\10f71d"; } + +.fad.fa-swords-laser:after { + content: "\10f93d"; } + +.fad.fa-synagogue:after { + content: "\10f69b"; } + +.fad.fa-sync:after { + content: "\10f021"; } + +.fad.fa-sync-alt:after { + content: "\10f2f1"; } + +.fad.fa-syringe:after { + content: "\10f48e"; } + +.fad.fa-table:after { + content: "\10f0ce"; } + +.fad.fa-table-tennis:after { + content: "\10f45d"; } + +.fad.fa-tablet:after { + content: "\10f10a"; } + +.fad.fa-tablet-alt:after { + content: "\10f3fa"; } + +.fad.fa-tablet-android:after { + content: "\10f3fb"; } + +.fad.fa-tablet-android-alt:after { + content: "\10f3fc"; } + +.fad.fa-tablet-rugged:after { + content: "\10f48f"; } + +.fad.fa-tablets:after { + content: "\10f490"; } + +.fad.fa-tachometer:after { + content: "\10f0e4"; } + +.fad.fa-tachometer-alt:after { + content: "\10f3fd"; } + +.fad.fa-tachometer-alt-average:after { + content: "\10f624"; } + +.fad.fa-tachometer-alt-fast:after { + content: "\10f625"; } + +.fad.fa-tachometer-alt-fastest:after { + content: "\10f626"; } + +.fad.fa-tachometer-alt-slow:after { + content: "\10f627"; } + +.fad.fa-tachometer-alt-slowest:after { + content: "\10f628"; } + +.fad.fa-tachometer-average:after { + content: "\10f629"; } + +.fad.fa-tachometer-fast:after { + content: "\10f62a"; } + +.fad.fa-tachometer-fastest:after { + content: "\10f62b"; } + +.fad.fa-tachometer-slow:after { + content: "\10f62c"; } + +.fad.fa-tachometer-slowest:after { + content: "\10f62d"; } + +.fad.fa-taco:after { + content: "\10f826"; } + +.fad.fa-tag:after { + content: "\10f02b"; } + +.fad.fa-tags:after { + content: "\10f02c"; } + +.fad.fa-tally:after { + content: "\10f69c"; } + +.fad.fa-tanakh:after { + content: "\10f827"; } + +.fad.fa-tape:after { + content: "\10f4db"; } + +.fad.fa-tasks:after { + content: "\10f0ae"; } + +.fad.fa-tasks-alt:after { + content: "\10f828"; } + +.fad.fa-taxi:after { + content: "\10f1ba"; } + +.fad.fa-teeth:after { + content: "\10f62e"; } + +.fad.fa-teeth-open:after { + content: "\10f62f"; } + +.fad.fa-telescope:after { + content: "\10f93e"; } + +.fad.fa-temperature-down:after { + content: "\10f93f"; } + +.fad.fa-temperature-frigid:after { + content: "\10f768"; } + +.fad.fa-temperature-high:after { + content: "\10f769"; } + +.fad.fa-temperature-hot:after { + content: "\10f76a"; } + +.fad.fa-temperature-low:after { + content: "\10f76b"; } + +.fad.fa-temperature-up:after { + content: "\10f940"; } + +.fad.fa-tenge:after { + content: "\10f7d7"; } + +.fad.fa-tennis-ball:after { + content: "\10f45e"; } + +.fad.fa-terminal:after { + content: "\10f120"; } + +.fad.fa-text:after { + content: "\10f893"; } + +.fad.fa-text-height:after { + content: "\10f034"; } + +.fad.fa-text-size:after { + content: "\10f894"; } + +.fad.fa-text-width:after { + content: "\10f035"; } + +.fad.fa-th:after { + content: "\10f00a"; } + +.fad.fa-th-large:after { + content: "\10f009"; } + +.fad.fa-th-list:after { + content: "\10f00b"; } + +.fad.fa-theater-masks:after { + content: "\10f630"; } + +.fad.fa-thermometer:after { + content: "\10f491"; } + +.fad.fa-thermometer-empty:after { + content: "\10f2cb"; } + +.fad.fa-thermometer-full:after { + content: "\10f2c7"; } + +.fad.fa-thermometer-half:after { + content: "\10f2c9"; } + +.fad.fa-thermometer-quarter:after { + content: "\10f2ca"; } + +.fad.fa-thermometer-three-quarters:after { + content: "\10f2c8"; } + +.fad.fa-theta:after { + content: "\10f69e"; } + +.fad.fa-thumbs-down:after { + content: "\10f165"; } + +.fad.fa-thumbs-up:after { + content: "\10f164"; } + +.fad.fa-thumbtack:after { + content: "\10f08d"; } + +.fad.fa-thunderstorm:after { + content: "\10f76c"; } + +.fad.fa-thunderstorm-moon:after { + content: "\10f76d"; } + +.fad.fa-thunderstorm-sun:after { + content: "\10f76e"; } + +.fad.fa-ticket:after { + content: "\10f145"; } + +.fad.fa-ticket-alt:after { + content: "\10f3ff"; } + +.fad.fa-tilde:after { + content: "\10f69f"; } + +.fad.fa-times:after { + content: "\10f00d"; } + +.fad.fa-times-circle:after { + content: "\10f057"; } + +.fad.fa-times-hexagon:after { + content: "\10f2ee"; } + +.fad.fa-times-octagon:after { + content: "\10f2f0"; } + +.fad.fa-times-square:after { + content: "\10f2d3"; } + +.fad.fa-tint:after { + content: "\10f043"; } + +.fad.fa-tint-slash:after { + content: "\10f5c7"; } + +.fad.fa-tire:after { + content: "\10f631"; } + +.fad.fa-tire-flat:after { + content: "\10f632"; } + +.fad.fa-tire-pressure-warning:after { + content: "\10f633"; } + +.fad.fa-tire-rugged:after { + content: "\10f634"; } + +.fad.fa-tired:after { + content: "\10f5c8"; } + +.fad.fa-toggle-off:after { + content: "\10f204"; } + +.fad.fa-toggle-on:after { + content: "\10f205"; } + +.fad.fa-toilet:after { + content: "\10f7d8"; } + +.fad.fa-toilet-paper:after { + content: "\10f71e"; } + +.fad.fa-toilet-paper-alt:after { + content: "\10f71f"; } + +.fad.fa-toilet-paper-slash:after { + content: "\10f972"; } + +.fad.fa-tombstone:after { + content: "\10f720"; } + +.fad.fa-tombstone-alt:after { + content: "\10f721"; } + +.fad.fa-toolbox:after { + content: "\10f552"; } + +.fad.fa-tools:after { + content: "\10f7d9"; } + +.fad.fa-tooth:after { + content: "\10f5c9"; } + +.fad.fa-toothbrush:after { + content: "\10f635"; } + +.fad.fa-torah:after { + content: "\10f6a0"; } + +.fad.fa-torii-gate:after { + content: "\10f6a1"; } + +.fad.fa-tornado:after { + content: "\10f76f"; } + +.fad.fa-tractor:after { + content: "\10f722"; } + +.fad.fa-trademark:after { + content: "\10f25c"; } + +.fad.fa-traffic-cone:after { + content: "\10f636"; } + +.fad.fa-traffic-light:after { + content: "\10f637"; } + +.fad.fa-traffic-light-go:after { + content: "\10f638"; } + +.fad.fa-traffic-light-slow:after { + content: "\10f639"; } + +.fad.fa-traffic-light-stop:after { + content: "\10f63a"; } + +.fad.fa-trailer:after { + content: "\10f941"; } + +.fad.fa-train:after { + content: "\10f238"; } + +.fad.fa-tram:after { + content: "\10f7da"; } + +.fad.fa-transgender:after { + content: "\10f224"; } + +.fad.fa-transgender-alt:after { + content: "\10f225"; } + +.fad.fa-transporter:after { + content: "\10f942"; } + +.fad.fa-transporter-1:after { + content: "\10f943"; } + +.fad.fa-transporter-2:after { + content: "\10f944"; } + +.fad.fa-transporter-3:after { + content: "\10f945"; } + +.fad.fa-transporter-empty:after { + content: "\10f946"; } + +.fad.fa-trash:after { + content: "\10f1f8"; } + +.fad.fa-trash-alt:after { + content: "\10f2ed"; } + +.fad.fa-trash-restore:after { + content: "\10f829"; } + +.fad.fa-trash-restore-alt:after { + content: "\10f82a"; } + +.fad.fa-trash-undo:after { + content: "\10f895"; } + +.fad.fa-trash-undo-alt:after { + content: "\10f896"; } + +.fad.fa-treasure-chest:after { + content: "\10f723"; } + +.fad.fa-tree:after { + content: "\10f1bb"; } + +.fad.fa-tree-alt:after { + content: "\10f400"; } + +.fad.fa-tree-christmas:after { + content: "\10f7db"; } + +.fad.fa-tree-decorated:after { + content: "\10f7dc"; } + +.fad.fa-tree-large:after { + content: "\10f7dd"; } + +.fad.fa-tree-palm:after { + content: "\10f82b"; } + +.fad.fa-trees:after { + content: "\10f724"; } + +.fad.fa-triangle:after { + content: "\10f2ec"; } + +.fad.fa-triangle-music:after { + content: "\10f8e2"; } + +.fad.fa-trophy:after { + content: "\10f091"; } + +.fad.fa-trophy-alt:after { + content: "\10f2eb"; } + +.fad.fa-truck:after { + content: "\10f0d1"; } + +.fad.fa-truck-container:after { + content: "\10f4dc"; } + +.fad.fa-truck-couch:after { + content: "\10f4dd"; } + +.fad.fa-truck-loading:after { + content: "\10f4de"; } + +.fad.fa-truck-monster:after { + content: "\10f63b"; } + +.fad.fa-truck-moving:after { + content: "\10f4df"; } + +.fad.fa-truck-pickup:after { + content: "\10f63c"; } + +.fad.fa-truck-plow:after { + content: "\10f7de"; } + +.fad.fa-truck-ramp:after { + content: "\10f4e0"; } + +.fad.fa-trumpet:after { + content: "\10f8e3"; } + +.fad.fa-tshirt:after { + content: "\10f553"; } + +.fad.fa-tty:after { + content: "\10f1e4"; } + +.fad.fa-turkey:after { + content: "\10f725"; } + +.fad.fa-turntable:after { + content: "\10f8e4"; } + +.fad.fa-turtle:after { + content: "\10f726"; } + +.fad.fa-tv:after { + content: "\10f26c"; } + +.fad.fa-tv-alt:after { + content: "\10f8e5"; } + +.fad.fa-tv-music:after { + content: "\10f8e6"; } + +.fad.fa-tv-retro:after { + content: "\10f401"; } + +.fad.fa-typewriter:after { + content: "\10f8e7"; } + +.fad.fa-ufo:after { + content: "\10f947"; } + +.fad.fa-ufo-beam:after { + content: "\10f948"; } + +.fad.fa-umbrella:after { + content: "\10f0e9"; } + +.fad.fa-umbrella-beach:after { + content: "\10f5ca"; } + +.fad.fa-underline:after { + content: "\10f0cd"; } + +.fad.fa-undo:after { + content: "\10f0e2"; } + +.fad.fa-undo-alt:after { + content: "\10f2ea"; } + +.fad.fa-unicorn:after { + content: "\10f727"; } + +.fad.fa-union:after { + content: "\10f6a2"; } + +.fad.fa-universal-access:after { + content: "\10f29a"; } + +.fad.fa-university:after { + content: "\10f19c"; } + +.fad.fa-unlink:after { + content: "\10f127"; } + +.fad.fa-unlock:after { + content: "\10f09c"; } + +.fad.fa-unlock-alt:after { + content: "\10f13e"; } + +.fad.fa-upload:after { + content: "\10f093"; } + +.fad.fa-usb-drive:after { + content: "\10f8e9"; } + +.fad.fa-usd-circle:after { + content: "\10f2e8"; } + +.fad.fa-usd-square:after { + content: "\10f2e9"; } + +.fad.fa-user:after { + content: "\10f007"; } + +.fad.fa-user-alien:after { + content: "\10f94a"; } + +.fad.fa-user-alt:after { + content: "\10f406"; } + +.fad.fa-user-alt-slash:after { + content: "\10f4fa"; } + +.fad.fa-user-astronaut:after { + content: "\10f4fb"; } + +.fad.fa-user-chart:after { + content: "\10f6a3"; } + +.fad.fa-user-check:after { + content: "\10f4fc"; } + +.fad.fa-user-circle:after { + content: "\10f2bd"; } + +.fad.fa-user-clock:after { + content: "\10f4fd"; } + +.fad.fa-user-cog:after { + content: "\10f4fe"; } + +.fad.fa-user-cowboy:after { + content: "\10f8ea"; } + +.fad.fa-user-crown:after { + content: "\10f6a4"; } + +.fad.fa-user-edit:after { + content: "\10f4ff"; } + +.fad.fa-user-friends:after { + content: "\10f500"; } + +.fad.fa-user-graduate:after { + content: "\10f501"; } + +.fad.fa-user-hard-hat:after { + content: "\10f82c"; } + +.fad.fa-user-headset:after { + content: "\10f82d"; } + +.fad.fa-user-injured:after { + content: "\10f728"; } + +.fad.fa-user-lock:after { + content: "\10f502"; } + +.fad.fa-user-md:after { + content: "\10f0f0"; } + +.fad.fa-user-md-chat:after { + content: "\10f82e"; } + +.fad.fa-user-minus:after { + content: "\10f503"; } + +.fad.fa-user-music:after { + content: "\10f8eb"; } + +.fad.fa-user-ninja:after { + content: "\10f504"; } + +.fad.fa-user-nurse:after { + content: "\10f82f"; } + +.fad.fa-user-plus:after { + content: "\10f234"; } + +.fad.fa-user-robot:after { + content: "\10f94b"; } + +.fad.fa-user-secret:after { + content: "\10f21b"; } + +.fad.fa-user-shield:after { + content: "\10f505"; } + +.fad.fa-user-slash:after { + content: "\10f506"; } + +.fad.fa-user-tag:after { + content: "\10f507"; } + +.fad.fa-user-tie:after { + content: "\10f508"; } + +.fad.fa-user-times:after { + content: "\10f235"; } + +.fad.fa-user-unlock:after { + content: "\10f958"; } + +.fad.fa-user-visor:after { + content: "\10f94c"; } + +.fad.fa-users:after { + content: "\10f0c0"; } + +.fad.fa-users-class:after { + content: "\10f63d"; } + +.fad.fa-users-cog:after { + content: "\10f509"; } + +.fad.fa-users-crown:after { + content: "\10f6a5"; } + +.fad.fa-users-medical:after { + content: "\10f830"; } + +.fad.fa-users-slash:after { + content: "\10f973"; } + +.fad.fa-utensil-fork:after { + content: "\10f2e3"; } + +.fad.fa-utensil-knife:after { + content: "\10f2e4"; } + +.fad.fa-utensil-spoon:after { + content: "\10f2e5"; } + +.fad.fa-utensils:after { + content: "\10f2e7"; } + +.fad.fa-utensils-alt:after { + content: "\10f2e6"; } + +.fad.fa-vacuum:after { + content: "\10f94d"; } + +.fad.fa-vacuum-robot:after { + content: "\10f94e"; } + +.fad.fa-value-absolute:after { + content: "\10f6a6"; } + +.fad.fa-vector-square:after { + content: "\10f5cb"; } + +.fad.fa-venus:after { + content: "\10f221"; } + +.fad.fa-venus-double:after { + content: "\10f226"; } + +.fad.fa-venus-mars:after { + content: "\10f228"; } + +.fad.fa-vhs:after { + content: "\10f8ec"; } + +.fad.fa-vial:after { + content: "\10f492"; } + +.fad.fa-vials:after { + content: "\10f493"; } + +.fad.fa-video:after { + content: "\10f03d"; } + +.fad.fa-video-plus:after { + content: "\10f4e1"; } + +.fad.fa-video-slash:after { + content: "\10f4e2"; } + +.fad.fa-vihara:after { + content: "\10f6a7"; } + +.fad.fa-violin:after { + content: "\10f8ed"; } + +.fad.fa-virus:after { + content: "\10f974"; } + +.fad.fa-virus-slash:after { + content: "\10f975"; } + +.fad.fa-viruses:after { + content: "\10f976"; } + +.fad.fa-voicemail:after { + content: "\10f897"; } + +.fad.fa-volcano:after { + content: "\10f770"; } + +.fad.fa-volleyball-ball:after { + content: "\10f45f"; } + +.fad.fa-volume:after { + content: "\10f6a8"; } + +.fad.fa-volume-down:after { + content: "\10f027"; } + +.fad.fa-volume-mute:after { + content: "\10f6a9"; } + +.fad.fa-volume-off:after { + content: "\10f026"; } + +.fad.fa-volume-slash:after { + content: "\10f2e2"; } + +.fad.fa-volume-up:after { + content: "\10f028"; } + +.fad.fa-vote-nay:after { + content: "\10f771"; } + +.fad.fa-vote-yea:after { + content: "\10f772"; } + +.fad.fa-vr-cardboard:after { + content: "\10f729"; } + +.fad.fa-wagon-covered:after { + content: "\10f8ee"; } + +.fad.fa-walker:after { + content: "\10f831"; } + +.fad.fa-walkie-talkie:after { + content: "\10f8ef"; } + +.fad.fa-walking:after { + content: "\10f554"; } + +.fad.fa-wallet:after { + content: "\10f555"; } + +.fad.fa-wand:after { + content: "\10f72a"; } + +.fad.fa-wand-magic:after { + content: "\10f72b"; } + +.fad.fa-warehouse:after { + content: "\10f494"; } + +.fad.fa-warehouse-alt:after { + content: "\10f495"; } + +.fad.fa-washer:after { + content: "\10f898"; } + +.fad.fa-watch:after { + content: "\10f2e1"; } + +.fad.fa-watch-calculator:after { + content: "\10f8f0"; } + +.fad.fa-watch-fitness:after { + content: "\10f63e"; } + +.fad.fa-water:after { + content: "\10f773"; } + +.fad.fa-water-lower:after { + content: "\10f774"; } + +.fad.fa-water-rise:after { + content: "\10f775"; } + +.fad.fa-wave-sine:after { + content: "\10f899"; } + +.fad.fa-wave-square:after { + content: "\10f83e"; } + +.fad.fa-wave-triangle:after { + content: "\10f89a"; } + +.fad.fa-waveform:after { + content: "\10f8f1"; } + +.fad.fa-waveform-path:after { + content: "\10f8f2"; } + +.fad.fa-webcam:after { + content: "\10f832"; } + +.fad.fa-webcam-slash:after { + content: "\10f833"; } + +.fad.fa-weight:after { + content: "\10f496"; } + +.fad.fa-weight-hanging:after { + content: "\10f5cd"; } + +.fad.fa-whale:after { + content: "\10f72c"; } + +.fad.fa-wheat:after { + content: "\10f72d"; } + +.fad.fa-wheelchair:after { + content: "\10f193"; } + +.fad.fa-whistle:after { + content: "\10f460"; } + +.fad.fa-wifi:after { + content: "\10f1eb"; } + +.fad.fa-wifi-1:after { + content: "\10f6aa"; } + +.fad.fa-wifi-2:after { + content: "\10f6ab"; } + +.fad.fa-wifi-slash:after { + content: "\10f6ac"; } + +.fad.fa-wind:after { + content: "\10f72e"; } + +.fad.fa-wind-turbine:after { + content: "\10f89b"; } + +.fad.fa-wind-warning:after { + content: "\10f776"; } + +.fad.fa-window:after { + content: "\10f40e"; } + +.fad.fa-window-alt:after { + content: "\10f40f"; } + +.fad.fa-window-close:after { + content: "\10f410"; } + +.fad.fa-window-frame:after { + content: "\10f94f"; } + +.fad.fa-window-frame-open:after { + content: "\10f950"; } + +.fad.fa-window-maximize:after { + content: "\10f2d0"; } + +.fad.fa-window-minimize:after { + content: "\10f2d1"; } + +.fad.fa-window-restore:after { + content: "\10f2d2"; } + +.fad.fa-windsock:after { + content: "\10f777"; } + +.fad.fa-wine-bottle:after { + content: "\10f72f"; } + +.fad.fa-wine-glass:after { + content: "\10f4e3"; } + +.fad.fa-wine-glass-alt:after { + content: "\10f5ce"; } + +.fad.fa-won-sign:after { + content: "\10f159"; } + +.fad.fa-wreath:after { + content: "\10f7e2"; } + +.fad.fa-wrench:after { + content: "\10f0ad"; } + +.fad.fa-x-ray:after { + content: "\10f497"; } + +.fad.fa-yen-sign:after { + content: "\10f157"; } + +.fad.fa-yin-yang:after { + content: "\10f6ad"; } +@font-face { + font-family: 'Font Awesome 5 Pro'; + font-style: normal; + font-weight: 300; + font-display: block; + src: url("../webfonts/fa-light-300.eot"); + src: url("../webfonts/fa-light-300.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-light-300.woff2") format("woff2"), url("../webfonts/fa-light-300.woff") format("woff"), url("../webfonts/fa-light-300.ttf") format("truetype"), url("../webfonts/fa-light-300.svg#fontawesome") format("svg"); } + +.fal { + font-family: 'Font Awesome 5 Pro'; + font-weight: 300; } +@font-face { + font-family: 'Font Awesome 5 Pro'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-regular-400.eot"); + src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); } + +.far { + font-family: 'Font Awesome 5 Pro'; + font-weight: 400; } +@font-face { + font-family: 'Font Awesome 5 Pro'; + font-style: normal; + font-weight: 900; + font-display: block; + src: url("../webfonts/fa-solid-900.eot"); + src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); } + +.fa, +.fas { + font-family: 'Font Awesome 5 Pro'; + font-weight: 900; } diff --git a/web/static/css/font.css b/web/static/css/font.css new file mode 100644 index 0000000..01b6e14 --- /dev/null +++ b/web/static/css/font.css @@ -0,0 +1,54 @@ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 300; + src: local('Source Sans Pro Light Italic'), local('SourceSansPro-LightItalic'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZZMkids18E.ttf) format('truetype'); +} +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 400; + src: local('Source Sans Pro Italic'), local('SourceSansPro-Italic'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDc.ttf) format('truetype'); +} +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 600; + src: local('Source Sans Pro SemiBold Italic'), local('SourceSansPro-SemiBoldItalic'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCds18E.ttf) format('truetype'); +} +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdr.ttf) format('truetype'); +} +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 400; + src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7g.ttf) format('truetype'); +} +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 600; + src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdr.ttf) format('truetype'); +} +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 700; + src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdr.ttf) format('truetype'); +} +@font-face { + font-family: 'Ubuntu'; + font-style: normal; + font-weight: 400; + src: url(https://fonts.gstatic.com/s/ubuntu/v15/4iCs6KVjbNBYlgo6eA.ttf) format('truetype'); +} +@font-face { + font-family: 'Ubuntu'; + font-style: normal; + font-weight: 700; + src: url(https://fonts.gstatic.com/s/ubuntu/v15/4iCv6KVjbNBYlgoCxCvTtw.ttf) format('truetype'); +} diff --git a/web/static/css/style.css b/web/static/css/style.css new file mode 100644 index 0000000..b235076 --- /dev/null +++ b/web/static/css/style.css @@ -0,0 +1,383 @@ +* { + font-family: "Ubuntu Bold", "Ubuntu", sans-serif; +} + +div.reminderContent { + padding: 2px; + background-color: #f5f5f5; + border-radius: 8px; + margin: 8px; +} + +.left-pad { + padding-left: 1rem; + padding-right: 0.2rem; +} + +.notification { + padding-right: 1.5rem; +} + +div.inset-content { + margin-left: 10%; + margin-right: 10%; +} + +div.flash-message { + position: fixed; + width: calc(100% - 32px); + margin: 16px !important; + z-index: 99; + bottom: 0; + display: none; +} + +div.flash-message.is-active { + display: block; +} + +body { + min-height: 100vh; +} + +span.spacer { + width: 10px; +} + +nav .dashboard-button { + background: white ; +} + +span.patreon-color { + color: #f96854; +} + +div#pageNavbar { + background-color: #363636; +} + +div#pageNavbar a { + color: #fff; + text-align: center; +} + +div#pageNavbar a:hover { + background-color: #4a4a4a; +} + +img.rounded-corners { + border-radius: 12px; +} + +div.brand { + text-align: center; + height: 48px; + background-color: #8fb677; +} + +img.dashboard-brand { + text-align: center; + height: 100%; + width: auto; +} + +div.dashboard-sidebar { + background-color: #363636; + width: 230px !important; + padding-right: 0; +} + +div.mobile-sidebar { + z-index: 100; + height: 100vh; + position: absolute; + top: 0; + display: none; + flex-direction: column; +} + +div.mobile-sidebar.is-active { + display: flex; +} + +div.dashboard-frame { + min-height: 100vh; + margin-bottom: 0 !important; +} + +.menu a { + color: #fff; +} + +.menu .menu-label { + color: #bbb; +} + +.menu { + padding-left: 4px; +} + +.dashboard-navbar { + background-color: #8fb677 !important; + position: absolute; + top: 0; + width: 100%; +} + +textarea.autoresize { + resize: none; +} + +textarea, input { + width: 100%; +} + +.message-input:placeholder-shown { + border-top: none; + border-left: none; + border-right: none; + border-bottom-style: dashed; + background-color: #40444b; + color: #fff; +} + +.message-input { + border: none; + background-color: rgba(0, 0, 0, 0); + color: #fff; +} + +.time-input { + border-top: none; + border-left: none; + border-right: none; + border-bottom-style: solid; + background-color: #40444b; + color: #fff; + width: 120px; + font-size: 0.875rem; +} + + +.message-input::placeholder { + color: #72767b; +} + +.discord-title { + font-weight: bold; + font-size: 1rem; + margin: 4px 0 4px 0; +} + +.discord-description { + font-size: 0.875rem; +} + +.discord-username { + font-size: 1rem; + font-weight: bold; + margin-bottom: 4px; + width: initial; +} + +.discord-message-header { + white-space: nowrap; + margin-bottom: 8px; +} + +.discord-content { + margin-bottom: 8px; +} + +.customizable img { + background-color: #72767b; + border-radius: 8px; +} + +.customizable.is-20x20 img { + width: 20px; + height: 20px; +} + +.customizable.is-24x24 img { + width: 24px; + height: 24px; +} + +.customizable.is-400x300 img { + margin-top: 10px; + width: 100%; + min-height: 100px; + max-height: 400px; +} + +.customizable.is-32x32 img { + width: 32px; + height: 32px; +} + +.customizable.thumbnail img { + width: 100px; + height: 100px; +} + +.customizable input.imageInput { + display: none; + position: absolute; + top: 0; + left: 36px; + width: 400px; +} + +.customizable.thumbnail input.imageInput { + display: none; + position: absolute; + top: 0; + left: -400px; + width: 400px; +} + +.customizable input.is-active { + display: block !important; +} + +.discord-frame { + color: #fff; + padding: 10px; + border-radius: 8px; + background-color: #36393f; +} + +.discord-embed { + padding: 8px 16px 16px 12px; + margin: 0 20px 4px 0; + border-radius: 4px; + border-left: 4px solid #fff; + background-color: #2f3136; + width: 500px; +} + +.embed-author-box { + display: flex; + align-items: center; + margin-bottom: 8px; +} + +.embed-author-box > .a { + flex: initial; +} + +.embed-author-box > .b { + flex: auto; +} + +.embed-footer-box { + display: flex; + align-items: center; + margin-bottom: 8px; +} + +.embed-author-box .image { + margin: 0 8px 0 0 !important; +} + +.embed-footer-box .image { + margin: 0 8px 0 0 !important; +} + +.discord-embed-author { + display: inline-block; + font-size: 0.875rem; + font-weight: bold; +} + +.discord-embed-footer { + font-size: 0.75rem; +} + +.embed-body { + display: flex; +} + +.embed-body > .a { + flex-grow: 1; + flex-shrink: 1; + flex-basis: auto; +} + +.embed-body input, .embed-body textarea { + min-width: 0; +} + +.embed-body > .b { + flex-grow: 0; + flex-shrink: 0; + flex-basis: auto; +} + +.discord-field-title, .discord-field-value { + max-width: 120px; +} + +.discord-field-title { + font-weight: bold; +} + +.embed-field-box { + margin: 12px 8px 0 0; + max-width: 120px; + flex: initial; +} + +.field-input { + font-size: 0.875rem; + width: 120px; +} + +.embed-multifield-box { + display: flex; + max-width: 100%; + flex-wrap: wrap; +} + +.icon-toggle { + color: #fff; + opacity: 0.2; +} + +.preview-toggle { + color: #fcb620; + opacity: 0.2; +} + +a.level-item.preview-toggle:hover { + color: #fcb620; +} + +.preview-toggle.is-active { + opacity: 1; +} + +a.level-item.icon-toggle:hover { + color: inherit; +} + +a.level-item:hover { + color: rgb(55, 127, 242) +} + +.icon-toggle.is-active { + opacity: 1; +} + +.channel-select { + font-size: 1.125rem; + margin-bottom: 4px; + margin-left: 48px; + display: inline-flex; + font-weight: bold; + color: #6e89da; + width: auto; + border-radius: 2px; + border-bottom: 1px solid #fff; +} diff --git a/web/static/favicon/android-chrome-192x192.png b/web/static/favicon/android-chrome-192x192.png new file mode 100644 index 0000000..2ad110e Binary files /dev/null and b/web/static/favicon/android-chrome-192x192.png differ diff --git a/web/static/favicon/android-chrome-512x512.png b/web/static/favicon/android-chrome-512x512.png new file mode 100644 index 0000000..93603be Binary files /dev/null and b/web/static/favicon/android-chrome-512x512.png differ diff --git a/web/static/favicon/apple-touch-icon.png b/web/static/favicon/apple-touch-icon.png new file mode 100644 index 0000000..19d3249 Binary files /dev/null and b/web/static/favicon/apple-touch-icon.png differ diff --git a/web/static/favicon/browserconfig.xml b/web/static/favicon/browserconfig.xml new file mode 100644 index 0000000..b3930d0 --- /dev/null +++ b/web/static/favicon/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/web/static/favicon/favicon-16x16.png b/web/static/favicon/favicon-16x16.png new file mode 100644 index 0000000..3347e25 Binary files /dev/null and b/web/static/favicon/favicon-16x16.png differ diff --git a/web/static/favicon/favicon-32x32.png b/web/static/favicon/favicon-32x32.png new file mode 100644 index 0000000..f6c63fe Binary files /dev/null and b/web/static/favicon/favicon-32x32.png differ diff --git a/web/static/favicon/favicon.ico b/web/static/favicon/favicon.ico new file mode 100644 index 0000000..cd91b4c Binary files /dev/null and b/web/static/favicon/favicon.ico differ diff --git a/web/static/favicon/mstile-150x150.png b/web/static/favicon/mstile-150x150.png new file mode 100644 index 0000000..03ecd34 Binary files /dev/null and b/web/static/favicon/mstile-150x150.png differ diff --git a/web/static/favicon/site.webmanifest b/web/static/favicon/site.webmanifest new file mode 100644 index 0000000..b20abb7 --- /dev/null +++ b/web/static/favicon/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/web/static/img/icon.png b/web/static/img/icon.png new file mode 100644 index 0000000..255ad4b Binary files /dev/null and b/web/static/img/icon.png differ diff --git a/web/static/img/logo_flat.jpg b/web/static/img/logo_flat.jpg new file mode 100644 index 0000000..451406a Binary files /dev/null and b/web/static/img/logo_flat.jpg differ diff --git a/web/static/img/slash-commands.png b/web/static/img/slash-commands.png new file mode 100644 index 0000000..7798b59 Binary files /dev/null and b/web/static/img/slash-commands.png differ diff --git a/web/static/img/tournament-demo.png b/web/static/img/tournament-demo.png new file mode 100644 index 0000000..7a653d2 Binary files /dev/null and b/web/static/img/tournament-demo.png differ diff --git a/web/static/js/dtsel.js b/web/static/js/dtsel.js new file mode 100644 index 0000000..eedb237 --- /dev/null +++ b/web/static/js/dtsel.js @@ -0,0 +1,931 @@ +(function () { + "use strict"; + + var BODYTYPES = ["DAYS", "MONTHS", "YEARS"]; + var MONTHS = [ + "January", "February", "March", "April", "May", "June", + "July", "August", "September", "October", "November", "December" + ]; + var WEEKDAYS = [ + "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" + ]; + + /** @typedef {Object.} Handlers */ + /** @typedef {function(String, Function): null} AddHandler */ + /** @typedef {("DAYS"|"MONTHS"|"YEARS")} BodyType */ + /** @typedef {string|number} StringNum */ + /** @typedef {Object.} StringNumObj */ + + /** + * The local state + * @typedef {Object} InstanceState + * @property {Date} value + * @property {Number} year + * @property {Number} month + * @property {Number} day + * @property {Number} time + * @property {Number} hours + * @property {Number} minutes + * @property {Number} seconds + * @property {BodyType} bodyType + * @property {Boolean} visible + * @property {Number} cancelBlur + */ + + /** + * @typedef {Object} Config + * @property {String} dateFormat + * @property {String} timeFormat + * @property {Boolean} showDate + * @property {Boolean} showTime + * @property {Number} paddingX + * @property {Number} paddingY + * @property {BodyType} defaultView + * @property {"TOP"|"BOTTOM"} direction + */ + + /** + * @class + * @param {HTMLElement} elem + * @param {Config} config + */ + function DTS(elem, config) { + var config = config || {}; + + /** @type {Config} */ + var defaultConfig = { + defaultView: BODYTYPES[0], + dateFormat: "yyyy-mm-dd", + timeFormat: "HH:MM:SS", + showDate: true, + showTime: false, + paddingX: 5, + paddingY: 5, + direction: 'TOP' + } + + if (!elem) { + throw TypeError("input element or selector required for contructor"); + } + if (Object.getPrototypeOf(elem) === String.prototype) { + var _elem = document.querySelectorAll(elem); + if (!_elem[0]){ + throw Error('"' + elem + '" not found.'); + } + elem = _elem[0]; + } + this.config = setDefaults(config, defaultConfig); + this.dateFormat = this.config.dateFormat; + this.timeFormat = this.config.timeFormat; + this.dateFormatRegEx = new RegExp("yyyy|yy|mm|dd", "gi"); + this.timeFormatRegEx = new RegExp("hh|mm|ss|a", "gi"); + this.inputElem = elem; + this.dtbox = null; + this.setup(); + } + DTS.prototype.setup = function () { + var handler = this.inputElemHandler.bind(this); + this.inputElem.addEventListener("focus", handler, false) + this.inputElem.addEventListener("blur", handler, false); + } + DTS.prototype.inputElemHandler = function (e) { + if (e.type == "focus") { + if (!this.dtbox) { + this.dtbox = new DTBox(e.target, this); + } + this.dtbox.visible = true; + } else if (e.type == "blur" && this.dtbox && this.dtbox.visible) { + var self = this; + setTimeout(function () { + if (self.dtbox.cancelBlur > 0) { + self.dtbox.cancelBlur -= 1; + } else { + self.dtbox.visible = false; + self.inputElem.blur(); + } + }, 100); + } + } + /** + * @class + * @param {HTMLElement} elem + * @param {DTS} settings + */ + function DTBox(elem, settings) { + /** @type {DTBox} */ + var self = this; + + /** @type {Handlers} */ + var handlers = {}; + + /** @type {InstanceState} */ + var localState = {}; + + /** + * @param {String} key + * @param {*} default_val + */ + function getterSetter(key, default_val) { + return { + get: function () { + var val = localState[key]; + return val === undefined ? default_val : val; + }, + set: function (val) { + var prevState = self.state; + var _handlers = handlers[key] || []; + localState[key] = val; + for (var i = 0; i < _handlers.length; i++) { + _handlers[i].bind(self)(localState, prevState); + } + }, + }; + }; + + /** @type {AddHandler} */ + function addHandler(key, handlerFn) { + if (!key || !handlerFn) { + return false; + } + if (!handlers[key]) { + handlers[key] = []; + } + handlers[key].push(handlerFn); + } + + Object.defineProperties(this, { + visible: getterSetter("visible", false), + bodyType: getterSetter("bodyType", settings.config.defaultView), + value: getterSetter("value"), + year: getterSetter("year", 0), + month: getterSetter("month", 0), + day: getterSetter("day", 0), + hours: getterSetter("hours", 0), + minutes: getterSetter("minutes", 0), + seconds: getterSetter("seconds", 0), + cancelBlur: getterSetter("cancelBlur", 0), + addHandler: {value: addHandler}, + month_long: { + get: function () { + return MONTHS[self.month]; + }, + }, + month_short: { + get: function () { + return self.month_long.slice(0, 3); + }, + }, + state: { + get: function () { + return Object.assign({}, localState); + }, + }, + time: { + get: function() { + var hours = self.hours * 60 * 60 * 1000; + var minutes = self.minutes * 60 * 1000; + var seconds = self.seconds * 1000; + return hours + minutes + seconds; + } + }, + }); + this.el = {}; + this.settings = settings; + this.elem = elem; + this.setup(); + } + DTBox.prototype.setup = function () { + Object.defineProperties(this.el, { + wrapper: { value: null, configurable: true }, + header: { value: null, configurable: true }, + body: { value: null, configurable: true }, + footer: { value: null, configurable: true } + }); + this.setupWrapper(); + if (this.settings.config.showDate) { + this.setupHeader(); + this.setupBody(); + } + if (this.settings.config.showTime) { + this.setupFooter(); + } + + var self = this; + this.addHandler("visible", function (state, prevState) { + if (state.visible && !prevState.visible){ + document.body.appendChild(this.el.wrapper); + + var parts = self.elem.value.split(/\s*,\s*/); + var startDate = undefined; + var startTime = 0; + if (self.settings.config.showDate) { + startDate = parseDate(parts[0], self.settings); + } + if (self.settings.config.showTime) { + startTime = parseTime(parts[parts.length-1], self.settings); + startTime = startTime || 0; + } + if (!(startDate && startDate.getTime())) { + startDate = new Date(); + startDate = new Date( + startDate.getFullYear(), + startDate.getMonth(), + startDate.getDate() + ); + } + var value = new Date(startDate.getTime() + startTime); + self.value = value; + self.year = value.getFullYear(); + self.month = value.getMonth(); + self.day = value.getDate(); + self.hours = value.getHours(); + self.minutes = value.getMinutes(); + self.seconds = value.getSeconds(); + + if (self.settings.config.showDate) { + self.setHeaderContent(); + self.setBodyContent(); + } + if (self.settings.config.showTime) { + self.setFooterContent(); + } + } else if (!state.visible && prevState.visible) { + document.body.removeChild(this.el.wrapper); + } + }); + } + DTBox.prototype.setupWrapper = function () { + if (!this.el.wrapper) { + var el = document.createElement("div"); + el.classList.add("date-selector-wrapper"); + Object.defineProperty(this.el, "wrapper", { value: el }); + } + var self = this; + var htmlRoot = document.getElementsByTagName('html')[0]; + function setPosition(e){ + var minTopSpace = 300; + var box = getOffset(self.elem); + var config = self.settings.config; + var paddingY = config.paddingY || 5; + var paddingX = config.paddingX || 5; + var top = box.top + self.elem.offsetHeight + paddingY; + var left = box.left + paddingX; + var bottom = htmlRoot.clientHeight - box.top + paddingY; + + self.el.wrapper.style.left = `${left}px`; + if (box.top > minTopSpace && config.direction != 'BOTTOM') { + self.el.wrapper.style.bottom = `${bottom}px`; + self.el.wrapper.style.top = ''; + } else { + self.el.wrapper.style.top = `${top}px`; + self.el.wrapper.style.bottom = ''; + } + } + + function handler(e) { + self.cancelBlur += 1; + setTimeout(function(){ + self.elem.focus(); + }, 50); + } + setPosition(); + this.setPosition = setPosition; + this.el.wrapper.addEventListener("mousedown", handler, false); + this.el.wrapper.addEventListener("touchstart", handler, false); + window.addEventListener('resize', this.setPosition); + } + DTBox.prototype.setupHeader = function () { + if (!this.el.header) { + var row = document.createElement("div"); + var classes = ["cal-nav-prev", "cal-nav-current", "cal-nav-next"]; + row.classList.add("cal-header"); + for (var i = 0; i < 3; i++) { + var cell = document.createElement("div"); + cell.classList.add("cal-nav", classes[i]); + cell.onclick = this.onHeaderChange.bind(this); + row.appendChild(cell); + } + row.children[0].innerHTML = "<"; + row.children[2].innerHTML = ">"; + Object.defineProperty(this.el, "header", { value: row }); + tryAppendChild(row, this.el.wrapper); + } + this.setHeaderContent(); + } + DTBox.prototype.setHeaderContent = function () { + var content = this.year; + if ("DAYS" == this.bodyType) { + content = this.month_long + " " + content; + } else if ("YEARS" == this.bodyType) { + var start = this.year + 10 - (this.year % 10); + content = start - 10 + "-" + (start - 1); + } + this.el.header.children[1].innerText = content; + } + DTBox.prototype.setupBody = function () { + if (!this.el.body) { + var el = document.createElement("div"); + el.classList.add("cal-body"); + Object.defineProperty(this.el, "body", { value: el }); + tryAppendChild(el, this.el.wrapper); + } + var toAppend = null; + function makeGrid(rows, cols, className, firstRowClass, clickHandler) { + var grid = document.createElement("div"); + grid.classList.add(className); + for (var i = 1; i < rows + 1; i++) { + var row = document.createElement("div"); + row.classList.add("cal-row", "cal-row-" + i); + if (i == 1 && firstRowClass) { + row.classList.add(firstRowClass); + } + for (var j = 1; j < cols + 1; j++) { + var col = document.createElement("div"); + col.classList.add("cal-cell", "cal-col-" + j); + col.onclick = clickHandler; + row.appendChild(col); + } + grid.appendChild(row); + } + return grid; + } + if ("DAYS" == this.bodyType) { + toAppend = this.el.body.calDays; + if (!toAppend) { + toAppend = makeGrid(7, 7, "cal-days", "cal-day-names", this.onDateSelected.bind(this)); + for (var i = 0; i < 7; i++) { + var cell = toAppend.children[0].children[i]; + cell.innerText = WEEKDAYS[i].slice(0, 2); + cell.onclick = null; + } + this.el.body.calDays = toAppend; + } + } else if ("MONTHS" == this.bodyType) { + toAppend = this.el.body.calMonths; + if (!toAppend) { + toAppend = makeGrid(3, 4, "cal-months", null, this.onMonthSelected.bind(this)); + for (var i = 0; i < 3; i++) { + for (var j = 0; j < 4; j++) { + var monthShort = MONTHS[4 * i + j].slice(0, 3); + toAppend.children[i].children[j].innerText = monthShort; + } + } + this.el.body.calMonths = toAppend; + } + } else if ("YEARS" == this.bodyType) { + toAppend = this.el.body.calYears; + if (!toAppend) { + toAppend = makeGrid(3, 4, "cal-years", null, this.onYearSelected.bind(this)); + this.el.body.calYears = toAppend; + } + } + empty(this.el.body); + tryAppendChild(toAppend, this.el.body); + this.setBodyContent(); + } + DTBox.prototype.setBodyContent = function () { + var grid = this.el.body.children[0]; + var classes = ["cal-cell-prev", "cal-cell-next", "cal-value"]; + if ("DAYS" == this.bodyType) { + var oneDayMilliSecs = 24 * 60 * 60 * 1000; + var start = new Date(this.year, this.month, 1); + var adjusted = new Date(start.getTime() - oneDayMilliSecs * start.getDay()); + + grid.children[6].style.display = ""; + for (var i = 1; i < 7; i++) { + for (var j = 0; j < 7; j++) { + var cell = grid.children[i].children[j]; + var month = adjusted.getMonth(); + var date = adjusted.getDate(); + + cell.innerText = date; + cell.classList.remove(classes[0], classes[1], classes[2]); + if (month != this.month) { + if (i == 6 && j == 0) { + grid.children[6].style.display = "none"; + break; + } + cell.classList.add(month < this.month ? classes[0] : classes[1]); + } else if (isEqualDate(adjusted, this.value)){ + cell.classList.add(classes[2]); + } + adjusted = new Date(adjusted.getTime() + oneDayMilliSecs); + } + } + } else if ("YEARS" == this.bodyType) { + var year = this.year - (this.year % 10) - 1; + for (i = 0; i < 3; i++) { + for (j = 0; j < 4; j++) { + grid.children[i].children[j].innerText = year; + year += 1; + } + } + grid.children[0].children[0].classList.add(classes[0]); + grid.children[2].children[3].classList.add(classes[1]); + } + } + + /** @param {Event} e */ + DTBox.prototype.onTimeChange = function(e) { + e.stopPropagation(); + if (e.type == 'mousedown') { + this.cancelBlur += 1; + return; + } + + var el = e.target; + this[el.name] = parseInt(el.value) || 0; + this.setupFooter(); + if (e.type == 'change') { + var self = this; + setTimeout(function(){ + self.elem.focus(); + }, 50); + } + this.setInputValue(); + } + + DTBox.prototype.setupFooter = function() { + if (!this.el.footer) { + var footer = document.createElement("div"); + var handler = this.onTimeChange.bind(this); + var self = this; + + function makeRow(label, name, range, changeHandler) { + var row = document.createElement("div"); + row.classList.add('cal-time'); + + var labelCol = row.appendChild(document.createElement("div")); + labelCol.classList.add('cal-time-label'); + labelCol.innerText = label; + + var valueCol = row.appendChild(document.createElement("div")); + valueCol.classList.add('cal-time-value'); + valueCol.innerText = '00'; + + var inputCol = row.appendChild(document.createElement("div")); + var slider = inputCol.appendChild(document.createElement("input")); + Object.assign(slider, {step:1, min:0, max:range, name:name, type:'range'}); + Object.defineProperty(footer, name, {value: slider}); + inputCol.classList.add('cal-time-slider'); + slider.onchange = changeHandler; + slider.oninput = changeHandler; + slider.onmousedown = changeHandler; + self[name] = self[name] || parseInt(slider.value) || 0; + footer.appendChild(row) + } + makeRow('HH:', 'hours', 23, handler); + makeRow('MM:', 'minutes', 59, handler); + makeRow('SS:', 'seconds', 59, handler); + + footer.classList.add("cal-footer"); + Object.defineProperty(this.el, "footer", { value: footer }); + tryAppendChild(footer, this.el.wrapper); + } + this.setFooterContent(); + } + + DTBox.prototype.setFooterContent = function() { + if (this.el.footer) { + var footer = this.el.footer; + footer.hours.value = this.hours; + footer.children[0].children[1].innerText = padded(this.hours, 2); + footer.minutes.value = this.minutes; + footer.children[1].children[1].innerText = padded(this.minutes, 2); + footer.seconds.value = this.seconds; + footer.children[2].children[1].innerText = padded(this.seconds, 2); + } + } + + DTBox.prototype.setInputValue = function() { + var date = new Date(this.year, this.month, this.day); + var strings = []; + if (this.settings.config.showDate) { + strings.push(renderDate(date, this.settings)); + } + if (this.settings.config.showTime) { + var joined = new Date(date.getTime() + this.time); + strings.push(renderTime(joined, this.settings)); + } + this.elem.value = strings.join(', '); + } + + DTBox.prototype.onDateSelected = function (e) { + var row = e.target.parentNode; + var date = parseInt(e.target.innerText); + if (!(row.nextSibling && row.nextSibling.nextSibling) && date < 8) { + this.month += 1; + } else if (!(row.previousSibling && row.previousSibling.previousSibling) && date > 7) { + this.month -= 1; + } + this.day = parseInt(e.target.innerText); + this.value = new Date(this.year, this.month, this.day); + this.setInputValue(); + this.setHeaderContent(); + this.setBodyContent(); + } + + /** @param {Event} e */ + DTBox.prototype.onMonthSelected = function (e) { + var col = 0; + var row = 2; + var cell = e.target; + if (cell.parentNode.nextSibling){ + row = cell.parentNode.previousSibling ? 1: 0; + } + if (cell.previousSibling) { + col = 3; + if (cell.nextSibling) { + col = cell.previousSibling.previousSibling ? 2 : 1; + } + } + this.month = 4 * row + col; + this.bodyType = "DAYS"; + this.setHeaderContent(); + this.setupBody(); + } + + /** @param {Event} e */ + DTBox.prototype.onYearSelected = function (e) { + this.year = parseInt(e.target.innerText); + this.bodyType = "MONTHS"; + this.setHeaderContent(); + this.setupBody(); + } + + /** @param {Event} e */ + DTBox.prototype.onHeaderChange = function (e) { + var cell = e.target; + if (cell.previousSibling && cell.nextSibling) { + var idx = BODYTYPES.indexOf(this.bodyType); + if (idx < 0 || !BODYTYPES[idx + 1]) { + return; + } + this.bodyType = BODYTYPES[idx + 1]; + this.setupBody(); + } else { + var sign = cell.previousSibling ? 1 : -1; + switch (this.bodyType) { + case "DAYS": + this.month += sign * 1; + break; + case "MONTHS": + this.year += sign * 1; + break; + case "YEARS": + this.year += sign * 10; + } + if (this.month > 11 || this.month < 0) { + this.year += Math.floor(this.month / 11); + this.month = this.month > 11 ? 0 : 11; + } + } + this.setHeaderContent(); + this.setBodyContent(); + } + + + /** + * @param {HTMLElement} elem + * @returns {{left:number, top:number}} + */ + function getOffset(elem) { + var box = elem.getBoundingClientRect(); + var left = window.pageXOffset !== undefined ? window.pageXOffset : + (document.documentElement || document.body.parentNode || document.body).scrollLeft; + var top = window.pageYOffset !== undefined ? window.pageYOffset : + (document.documentElement || document.body.parentNode || document.body).scrollTop; + return { left: box.left + left, top: box.top + top }; + } + function empty(e) { + for (; e.children.length; ) e.removeChild(e.children[0]); + } + function tryAppendChild(newChild, refNode) { + try { + refNode.appendChild(newChild); + return newChild; + } catch (e) { + console.trace(e); + } + } + + /** @class */ + function hookFuncs() { + /** @type {Handlers} */ + this._funcs = {}; + } + /** + * @param {string} key + * @param {Function} func + */ + hookFuncs.prototype.add = function(key, func){ + if (!this._funcs[key]){ + this._funcs[key] = []; + } + this._funcs[key].push(func) + } + /** + * @param {String} key + * @returns {Function[]} handlers + */ + hookFuncs.prototype.get = function(key){ + return this._funcs[key] ? this._funcs[key] : []; + } + + /** + * @param {Array.} arr + * @param {String} string + * @returns {Array.} sorted string + */ + function sortByStringIndex(arr, string) { + return arr.sort(function(a, b){ + var h = string.indexOf(a); + var l = string.indexOf(b); + var rank = 0; + if (h < l) { + rank = -1; + } else if (l < h) { + rank = 1; + } else if (a.length > b.length) { + rank = -1; + } else if (b.length > a.length) { + rank = 1; + } + return rank; + }); + } + + /** + * Remove keys from array that are not in format + * @param {string[]} keys + * @param {string} format + * @returns {string[]} new filtered array + */ + function filterFormatKeys(keys, format) { + var out = []; + var formatIdx = 0; + for (var i = 0; i -1) { + formatIdx += key.length; + out.push(key); + } + } + return out; + } + + /** + * @template {StringNumObj} FormatObj + * @param {string} value + * @param {string} format + * @param {FormatObj} formatObj + * @param {function(Object.): null} setHooks + * @returns {FormatObj} formatObj + */ + function parseData(value, format, formatObj, setHooks) { + var hooks = { + canSkip: new hookFuncs(), + updateValue: new hookFuncs(), + } + var keys = sortByStringIndex(Object.keys(formatObj), format); + var filterdKeys = filterFormatKeys(keys, format); + var vstart = 0; // value start + if (setHooks) { + setHooks(hooks); + } + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var fstart = format.indexOf(key); + var _vstart = vstart; // next value start + var val = null; + var canSkip = false; + var funcs = hooks.canSkip.get(key); + + vstart = vstart || fstart; + + for (var j = 0; j < funcs.length; j++) { + if (funcs[j](formatObj)){ + canSkip = true; + break; + } + } + if (fstart > -1 && !canSkip) { + var sep = null; + var stop = vstart + key.length; + var fnext = -1; + var nextKeyIdx = i + 1; + _vstart += key.length; // set next value start if current key is found + + // get next format token used to determine separator + while (fnext == -1 && nextKeyIdx < keys.length){ + var nextKey = keys[nextKeyIdx]; + nextKeyIdx += 1; + if (filterdKeys.indexOf(nextKey) === -1) { + continue; + } + fnext = nextKey ? format.indexOf(nextKey) : -1; // next format start + } + if (fnext > -1){ + sep = format.slice(stop, fnext); + if (sep) { + var _stop = value.slice(vstart).indexOf(sep); + if (_stop && _stop > -1){ + stop = _stop + vstart; + _vstart = stop + sep.length; + } + } + } + val = parseInt(value.slice(vstart, stop)); + + var funcs = hooks.updateValue.get(key); + for (var k = 0; k < funcs.length; k++) { + val = funcs[k](val, formatObj, vstart, stop); + } + } + formatObj[key] = { index: vstart, value: val }; + vstart = _vstart; // set next value start + } + return formatObj; + } + + /** + * @param {String} value + * @param {DTS} settings + * @returns {Date} date object + */ + function parseDate(value, settings) { + /** @type {{yyyy:number=, yy:number=, mm:number=, dd:number=}} */ + var formatObj = {yyyy:null, yy:null, mm:null, dd:null}; + var format = ((settings.dateFormat) || '').toLowerCase(); + if (!format) { + throw new TypeError('dateFormat not found (' + settings.dateFormat + ')'); + } + var formatObj = parseData(value, format, formatObj, function(hooks){ + hooks.canSkip.add("yy", function(data){ + return data["yyyy"].value; + }); + hooks.updateValue.add("yy", function(val){ + return 100 * Math.floor(new Date().getFullYear() / 100) + val; + }); + }); + var year = formatObj["yyyy"].value || formatObj["yy"].value; + var month = formatObj["mm"].value - 1; + var date = formatObj["dd"].value; + var result = new Date(year, month, date); + return result; + } + + /** + * @param {String} value + * @param {DTS} settings + * @returns {Number} time in milliseconds <= (24 * 60 * 60 * 1000) - 1 + */ + function parseTime(value, settings) { + var format = ((settings.timeFormat) || '').toLowerCase(); + if (!format) { + throw new TypeError('timeFormat not found (' + settings.timeFormat + ')'); + } + + /** @type {{hh:number=, mm:number=, ss:number=, a:string=}} */ + var formatObj = {hh:null, mm:null, ss:null, a:null}; + var formatObj = parseData(value, format, formatObj, function(hooks){ + hooks.updateValue.add("a", function(val, data, start, stop){ + return value.slice(start, start + 2); + }); + }); + var hours = formatObj["hh"].value; + var minutes = formatObj["mm"].value; + var seconds = formatObj["ss"].value; + var am_pm = formatObj["a"].value; + var am_pm_lower = am_pm ? am_pm.toLowerCase() : am_pm; + if (am_pm && ["am", "pm"].indexOf(am_pm_lower) > -1){ + if (am_pm_lower == 'am' && hours == 12){ + hours = 0; + } else if (am_pm_lower == 'pm') { + hours += 12; + } + } + var time = hours * 60 * 60 * 1000 + minutes * 60 * 1000 + seconds * 1000; + return time; + } + + /** + * @param {Date} value + * @param {DTS} settings + * @returns {String} date string + */ + function renderDate(value, settings) { + var format = settings.dateFormat.toLowerCase(); + var date = value.getDate(); + var month = value.getMonth() + 1; + var year = value.getFullYear(); + var yearShort = year % 100; + var formatObj = { + dd: date < 10 ? "0" + date : date, + mm: month < 10 ? "0" + month : month, + yyyy: year, + yy: yearShort < 10 ? "0" + yearShort : yearShort + }; + var str = format.replace(settings.dateFormatRegEx, function (found) { + return formatObj[found]; + }); + return str; + } + + /** + * @param {Date} value + * @param {DTS} settings + * @returns {String} date string + */ + function renderTime(value, settings) { + var Format = settings.timeFormat; + var format = Format.toLowerCase(); + var hours = value.getHours(); + var minutes = value.getMinutes(); + var seconds = value.getSeconds(); + var am_pm = null; + var hh_am_pm = null; + if (format.indexOf('a') > -1) { + am_pm = hours >= 12 ? 'pm' : 'am'; + am_pm = Format.indexOf('A') > -1 ? am_pm.toUpperCase() : am_pm; + hh_am_pm = hours == 0 ? '12' : (hours > 12 ? hours%12 : hours); + } + var formatObj = { + hh: am_pm ? hh_am_pm : (hours < 10 ? "0" + hours : hours), + mm: minutes < 10 ? "0" + minutes : minutes, + ss: seconds < 10 ? "0" + seconds : seconds, + a: am_pm, + }; + var str = format.replace(settings.timeFormatRegEx, function (found) { + return formatObj[found]; + }); + return str; + } + + /** + * checks if two dates are equal + * @param {Date} date1 + * @param {Date} date2 + * @returns {Boolean} true or false + */ + function isEqualDate(date1, date2) { + if (!(date1 && date2)) return false; + return (date1.getFullYear() == date2.getFullYear() && + date1.getMonth() == date2.getMonth() && + date1.getDate() == date2.getDate()); + } + + /** + * @param {Number} val + * @param {Number} pad + * @param {*} default_val + * @returns {String} padded string + */ + function padded(val, pad, default_val) { + var default_val = default_val || 0; + var valStr = '' + (parseInt(val) || default_val); + var diff = Math.max(pad, valStr.length) - valStr.length; + return ('' + default_val).repeat(diff) + valStr; + } + + /** + * @template X + * @template Y + * @param {X} obj + * @param {Y} objDefaults + * @returns {X|Y} merged object + */ + function setDefaults(obj, objDefaults) { + var keys = Object.keys(objDefaults); + for (var i=0; i=r/i?u=n:e=n}return n},function(t,n,i){n&&g(t.prototype,n),i&&g(t,i)}(l,[{key:"hsv",get:function(){var t=this.$;return{h:t.h,s:t.s,v:t.v}},set:function(t){var n=this.$;if(t=b({},n,t),this.onChange){var i={h:!1,v:!1,s:!1,a:!1};for(var r in n)i[r]=t[r]!=n[r];this.$=t,(i.h||i.s||i.v||i.a)&&this.onChange(this,i)}else this.$=t}},{key:"hsva",get:function(){return b({},this.$)},set:function(t){this.hsv=t}},{key:"hue",get:function(){return this.$.h},set:function(t){this.hsv={h:t}}},{key:"saturation",get:function(){return this.$.s},set:function(t){this.hsv={s:t}}},{key:"value",get:function(){return this.$.v},set:function(t){this.hsv={v:t}}},{key:"alpha",get:function(){return this.$.a},set:function(t){this.hsv=b({},this.hsv,{a:t})}},{key:"kelvin",get:function(){return l.rgbToKelvin(this.rgb)},set:function(t){this.rgb=l.kelvinToRgb(t)}},{key:"red",get:function(){return this.rgb.r},set:function(t){this.rgb=b({},this.rgb,{r:t})}},{key:"green",get:function(){return this.rgb.g},set:function(t){this.rgb=b({},this.rgb,{g:t})}},{key:"blue",get:function(){return this.rgb.b},set:function(t){this.rgb=b({},this.rgb,{b:t})}},{key:"rgb",get:function(){var t=l.hsvToRgb(this.$),n=t.r,i=t.g,r=t.b;return{r:G(n),g:G(i),b:G(r)}},set:function(t){this.hsv=b({},l.rgbToHsv(t),{a:void 0===t.a?1:t.a})}},{key:"rgba",get:function(){return b({},this.rgb,{a:this.alpha})},set:function(t){this.rgb=t}},{key:"hsl",get:function(){var t=l.hsvToHsl(this.$),n=t.h,i=t.s,r=t.l;return{h:G(n),s:G(i),l:G(r)}},set:function(t){this.hsv=b({},l.hslToHsv(t),{a:void 0===t.a?1:t.a})}},{key:"hsla",get:function(){return b({},this.hsl,{a:this.alpha})},set:function(t){this.hsl=t}},{key:"rgbString",get:function(){var t=this.rgb;return"rgb("+t.r+", "+t.g+", "+t.b+")"},set:function(t){var n,i,r,e,u=1;if((n=_.exec(t))?(i=K(n[1],255),r=K(n[2],255),e=K(n[3],255)):(n=H.exec(t))&&(i=K(n[1],255),r=K(n[2],255),e=K(n[3],255),u=K(n[4],1)),!n)throw new Error("Invalid rgb string");this.rgb={r:i,g:r,b:e,a:u}}},{key:"rgbaString",get:function(){var t=this.rgba;return"rgba("+t.r+", "+t.g+", "+t.b+", "+t.a+")"},set:function(t){this.rgbString=t}},{key:"hexString",get:function(){var t=this.rgb;return"#"+U(t.r)+U(t.g)+U(t.b)},set:function(t){var n,i,r,e,u=255;if((n=D.exec(t))?(i=17*Q(n[1]),r=17*Q(n[2]),e=17*Q(n[3])):(n=F.exec(t))?(i=17*Q(n[1]),r=17*Q(n[2]),e=17*Q(n[3]),u=17*Q(n[4])):(n=L.exec(t))?(i=Q(n[1]),r=Q(n[2]),e=Q(n[3])):(n=B.exec(t))&&(i=Q(n[1]),r=Q(n[2]),e=Q(n[3]),u=Q(n[4])),!n)throw new Error("Invalid hex string");this.rgb={r:i,g:r,b:e,a:u/255}}},{key:"hex8String",get:function(){var t=this.rgba;return"#"+U(t.r)+U(t.g)+U(t.b)+U(Z(255*t.a))},set:function(t){this.hexString=t}},{key:"hslString",get:function(){var t=this.hsl;return"hsl("+t.h+", "+t.s+"%, "+t.l+"%)"},set:function(t){var n,i,r,e,u=1;if((n=P.exec(t))?(i=K(n[1],360),r=K(n[2],100),e=K(n[3],100)):(n=$.exec(t))&&(i=K(n[1],360),r=K(n[2],100),e=K(n[3],100),u=K(n[4],1)),!n)throw new Error("Invalid hsl string");this.hsl={h:i,s:r,l:e,a:u}}},{key:"hslaString",get:function(){var t=this.hsla;return"hsl("+t.h+", "+t.s+"%, "+t.l+"%, "+t.a+")"},set:function(t){this.hslString=t}}]),l}();function X(t){var n,i=t.width,r=t.sliderSize,e=t.borderWidth,u=t.handleRadius,o=t.padding,l=t.sliderShape,s="horizontal"===t.layoutDirection;return r=null!=(n=r)?n:2*o+2*u,"circle"===l?{handleStart:t.padding+t.handleRadius,handleRange:i-2*o-2*u,width:i,height:i,cx:i/2,cy:i/2,radius:i/2-e/2}:{handleStart:r/2,handleRange:i-r,radius:r/2,x:0,y:0,width:s?r:i,height:s?i:r}}function Y(t,n){var i=X(t),r=i.width,e=i.height,u=i.handleRange,o=i.handleStart,l="horizontal"===t.layoutDirection,s=l?r/2:e/2,c=o+function(t,n){var i=n.hsva,r=n.rgb;switch(t.sliderType){case"red":return r.r/2.55;case"green":return r.g/2.55;case"blue":return r.b/2.55;case"alpha":return 100*i.a;case"kelvin":var e=t.minTemperature,u=t.maxTemperature-e,o=(n.kelvin-e)/u*100;return Math.max(0,Math.min(o,100));case"hue":return i.h/=3.6;case"saturation":return i.s;case"value":default:return i.v}}(t,n)/100*u;return l&&(c=-1*c+u+2*o),{x:l?s:c,y:l?c:s}}var tt,nt=2*Math.PI,it=function(t,n){return(t%n+n)%n},rt=function(t,n){return Math.sqrt(t*t+n*n)};function et(t){return t.width/2-t.padding-t.handleRadius-t.borderWidth}function ut(t){var n=t.width/2;return{width:t.width,radius:n-t.borderWidth,cx:n,cy:n}}function ot(t,n,i){var r=t.wheelAngle,e=t.wheelDirection;return i&&"clockwise"===e?n=r+n:"clockwise"===e?n=360-r+n:i&&"anticlockwise"===e?n=r+180-n:"anticlockwise"===e&&(n=r-n),it(n,360)}function lt(t,n,i){var r=ut(t),e=r.cx,u=r.cy,o=et(t);n=e-n,i=u-i;var l=ot(t,Math.atan2(-i,-n)*(360/nt)),s=Math.min(rt(n,i),o);return{h:Math.round(l),s:Math.round(100/o*s)}}function st(t){var n=t.width,i=t.boxHeight;return{width:n,height:null!=i?i:n,radius:t.padding+t.handleRadius}}function ct(t,n,i){var r=st(t),e=r.width,u=r.height,o=r.radius,l=(n-o)/(e-2*o)*100,s=(i-o)/(u-2*o)*100;return{s:Math.max(0,Math.min(l,100)),v:Math.max(0,Math.min(100-s,100))}}function at(t,n,i,r){for(var e=0;ee.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[t++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(t=e[Symbol.iterator]()).next.bind(t)}var l=function(e){function t(){return e.apply(this,arguments)||this}return r(t,e),t}(u(Error)),f=function(e){function t(t){return e.call(this,"Invalid DateTime: "+t.toMessage())||this}return r(t,e),t}(l),d=function(e){function t(t){return e.call(this,"Invalid Interval: "+t.toMessage())||this}return r(t,e),t}(l),h=function(e){function t(t){return e.call(this,"Invalid Duration: "+t.toMessage())||this}return r(t,e),t}(l),m=function(e){function t(){return e.apply(this,arguments)||this}return r(t,e),t}(l),y=function(e){function t(t){return e.call(this,"Invalid unit "+t)||this}return r(t,e),t}(l),v=function(e){function t(){return e.apply(this,arguments)||this}return r(t,e),t}(l),g=function(e){function t(){return e.call(this,"Zone is an abstract class")||this}return r(t,e),t}(l),p="numeric",w="short",k="long",b={year:p,month:p,day:p},O={year:p,month:w,day:p},S={year:p,month:w,day:p,weekday:w},T={year:p,month:k,day:p},M={year:p,month:k,day:p,weekday:k},N={hour:p,minute:p},E={hour:p,minute:p,second:p},D={hour:p,minute:p,second:p,timeZoneName:w},I={hour:p,minute:p,second:p,timeZoneName:k},V={hour:p,minute:p,hour12:!1},L={hour:p,minute:p,second:p,hour12:!1},x={hour:p,minute:p,second:p,hour12:!1,timeZoneName:w},C={hour:p,minute:p,second:p,hour12:!1,timeZoneName:k},F={year:p,month:p,day:p,hour:p,minute:p},Z={year:p,month:p,day:p,hour:p,minute:p,second:p},j={year:p,month:w,day:p,hour:p,minute:p},A={year:p,month:w,day:p,hour:p,minute:p,second:p},z={year:p,month:w,day:p,weekday:w,hour:p,minute:p},_={year:p,month:k,day:p,hour:p,minute:p,timeZoneName:w},q={year:p,month:k,day:p,hour:p,minute:p,second:p,timeZoneName:w},H={year:p,month:k,day:p,weekday:k,hour:p,minute:p,timeZoneName:k},U={year:p,month:k,day:p,weekday:k,hour:p,minute:p,second:p,timeZoneName:k};function R(e){return void 0===e}function P(e){return"number"==typeof e}function W(e){return"number"==typeof e&&e%1==0}function J(){try{return"undefined"!=typeof Intl&&Intl.DateTimeFormat}catch(e){return!1}}function Y(){return!R(Intl.DateTimeFormat.prototype.formatToParts)}function G(){try{return"undefined"!=typeof Intl&&!!Intl.RelativeTimeFormat}catch(e){return!1}}function $(e,t,n){if(0!==e.length)return e.reduce(function(e,r){var i=[t(r),r];return e&&n(e[0],i[0])===e[0]?e:i},null)[1]}function B(e,t){return t.reduce(function(t,n){return t[n]=e[n],t},{})}function Q(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function K(e,t,n){return W(e)&&e>=t&&e<=n}function X(e,t){void 0===t&&(t=2);var n=e<0?"-":"",r=n?-1*e:e;return""+n+(r.toString().length=0&&(t=new Date(t)).setUTCFullYear(t.getUTCFullYear()-1900),+t}function ue(e){var t=(e+Math.floor(e/4)-Math.floor(e/100)+Math.floor(e/400))%7,n=e-1,r=(n+Math.floor(n/4)-Math.floor(n/100)+Math.floor(n/400))%7;return 4===t||3===r?53:52}function se(e){return e>99?e:e>60?1900+e:2e3+e}function ce(e,t,n,r){void 0===r&&(r=null);var i=new Date(e),o={hour12:!1,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(o.timeZone=r);var a=Object.assign({timeZoneName:t},o),u=J();if(u&&Y()){var s=new Intl.DateTimeFormat(n,a).formatToParts(i).find(function(e){return"timezonename"===e.type.toLowerCase()});return s?s.value:null}if(u){var c=new Intl.DateTimeFormat(n,o).format(i);return new Intl.DateTimeFormat(n,a).format(i).substring(c.length).replace(/^[, \u200e]+/,"")}return null}function le(e,t){var n=parseInt(e,10);Number.isNaN(n)&&(n=0);var r=parseInt(t,10)||0;return 60*n+(n<0||Object.is(n,-0)?-r:r)}function fe(e){var t=Number(e);if("boolean"==typeof e||""===e||Number.isNaN(t))throw new v("Invalid unit value "+e);return t}function de(e,t,n){var r={};for(var i in e)if(Q(e,i)){if(n.indexOf(i)>=0)continue;var o=e[i];if(void 0===o||null===o)continue;r[t(i)]=fe(o)}return r}function he(e,t){var n=Math.trunc(Math.abs(e/60)),r=Math.trunc(Math.abs(e%60)),i=e>=0?"+":"-";switch(t){case"short":return""+i+X(n,2)+":"+X(r,2);case"narrow":return""+i+n+(r>0?":"+r:"");case"techie":return""+i+X(n,2)+X(r,2);default:throw new RangeError("Value format "+t+" is out of range for property format")}}function me(e){return B(e,["hour","minute","second","millisecond"])}var ye=/[A-Za-z_+-]{1,256}(:?\/[A-Za-z_+-]{1,256}(\/[A-Za-z_+-]{1,256})?)?/;function ve(e){return JSON.stringify(e,Object.keys(e).sort())}var ge=["January","February","March","April","May","June","July","August","September","October","November","December"],pe=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],we=["J","F","M","A","M","J","J","A","S","O","N","D"];function ke(e){switch(e){case"narrow":return[].concat(we);case"short":return[].concat(pe);case"long":return[].concat(ge);case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}var be=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],Oe=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],Se=["M","T","W","T","F","S","S"];function Te(e){switch(e){case"narrow":return[].concat(Se);case"short":return[].concat(Oe);case"long":return[].concat(be);case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var Me=["AM","PM"],Ne=["Before Christ","Anno Domini"],Ee=["BC","AD"],De=["B","A"];function Ie(e){switch(e){case"narrow":return[].concat(De);case"short":return[].concat(Ee);case"long":return[].concat(Ne);default:return null}}function Ve(e,t){for(var n,r="",i=c(e);!(n=i()).done;){var o=n.value;o.literal?r+=o.val:r+=t(o.val)}return r}var Le={D:b,DD:O,DDD:T,DDDD:M,t:N,tt:E,ttt:D,tttt:I,T:V,TT:L,TTT:x,TTTT:C,f:F,ff:j,fff:_,ffff:H,F:Z,FF:A,FFF:q,FFFF:U},xe=function(){function e(e,t){this.opts=t,this.loc=e,this.systemLoc=null}e.create=function(t,n){return void 0===n&&(n={}),new e(t,n)},e.parseFormat=function(e){for(var t=null,n="",r=!1,i=[],o=0;o0&&i.push({literal:r,val:n}),t=null,n="",r=!r):r?n+=a:a===t?n+=a:(n.length>0&&i.push({literal:!1,val:n}),n=a,t=a)}return n.length>0&&i.push({literal:r,val:n}),i},e.macroTokenToFormatOpts=function(e){return Le[e]};var t=e.prototype;return t.formatWithSystemDefault=function(e,t){return null===this.systemLoc&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,Object.assign({},this.opts,t)).format()},t.formatDateTime=function(e,t){return void 0===t&&(t={}),this.loc.dtFormatter(e,Object.assign({},this.opts,t)).format()},t.formatDateTimeParts=function(e,t){return void 0===t&&(t={}),this.loc.dtFormatter(e,Object.assign({},this.opts,t)).formatToParts()},t.resolvedOptions=function(e,t){return void 0===t&&(t={}),this.loc.dtFormatter(e,Object.assign({},this.opts,t)).resolvedOptions()},t.num=function(e,t){if(void 0===t&&(t=0),this.opts.forceSimple)return X(e,t);var n=Object.assign({},this.opts);return t>0&&(n.padTo=t),this.loc.numberFormatter(n).format(e)},t.formatDateTimeFromString=function(t,n){var r=this,i="en"===this.loc.listingMode(),o=this.loc.outputCalendar&&"gregory"!==this.loc.outputCalendar&&Y(),a=function(e,n){return r.loc.extract(t,e,n)},u=function(e){return t.isOffsetFixed&&0===t.offset&&e.allowZ?"Z":t.isValid?t.zone.formatOffset(t.ts,e.format):""},s=function(){return i?function(e){return Me[e.hour<12?0:1]}(t):a({hour:"numeric",hour12:!0},"dayperiod")},c=function(e,n){return i?function(e,t){return ke(t)[e.month-1]}(t,e):a(n?{month:e}:{month:e,day:"numeric"},"month")},l=function(e,n){return i?function(e,t){return Te(t)[e.weekday-1]}(t,e):a(n?{weekday:e}:{weekday:e,month:"long",day:"numeric"},"weekday")},f=function(e){return i?function(e,t){return Ie(t)[e.year<0?0:1]}(t,e):a({era:e},"era")};return Ve(e.parseFormat(n),function(n){switch(n){case"S":return r.num(t.millisecond);case"u":case"SSS":return r.num(t.millisecond,3);case"s":return r.num(t.second);case"ss":return r.num(t.second,2);case"m":return r.num(t.minute);case"mm":return r.num(t.minute,2);case"h":return r.num(t.hour%12==0?12:t.hour%12);case"hh":return r.num(t.hour%12==0?12:t.hour%12,2);case"H":return r.num(t.hour);case"HH":return r.num(t.hour,2);case"Z":return u({format:"narrow",allowZ:r.opts.allowZ});case"ZZ":return u({format:"short",allowZ:r.opts.allowZ});case"ZZZ":return u({format:"techie",allowZ:r.opts.allowZ});case"ZZZZ":return t.zone.offsetName(t.ts,{format:"short",locale:r.loc.locale});case"ZZZZZ":return t.zone.offsetName(t.ts,{format:"long",locale:r.loc.locale});case"z":return t.zoneName;case"a":return s();case"d":return o?a({day:"numeric"},"day"):r.num(t.day);case"dd":return o?a({day:"2-digit"},"day"):r.num(t.day,2);case"c":return r.num(t.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return r.num(t.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return o?a({month:"numeric",day:"numeric"},"month"):r.num(t.month);case"LL":return o?a({month:"2-digit",day:"numeric"},"month"):r.num(t.month,2);case"LLL":return c("short",!0);case"LLLL":return c("long",!0);case"LLLLL":return c("narrow",!0);case"M":return o?a({month:"numeric"},"month"):r.num(t.month);case"MM":return o?a({month:"2-digit"},"month"):r.num(t.month,2);case"MMM":return c("short",!1);case"MMMM":return c("long",!1);case"MMMMM":return c("narrow",!1);case"y":return o?a({year:"numeric"},"year"):r.num(t.year);case"yy":return o?a({year:"2-digit"},"year"):r.num(t.year.toString().slice(-2),2);case"yyyy":return o?a({year:"numeric"},"year"):r.num(t.year,4);case"yyyyyy":return o?a({year:"numeric"},"year"):r.num(t.year,6);case"G":return f("short");case"GG":return f("long");case"GGGGG":return f("narrow");case"kk":return r.num(t.weekYear.toString().slice(-2),2);case"kkkk":return r.num(t.weekYear,4);case"W":return r.num(t.weekNumber);case"WW":return r.num(t.weekNumber,2);case"o":return r.num(t.ordinal);case"ooo":return r.num(t.ordinal,3);case"q":return r.num(t.quarter);case"qq":return r.num(t.quarter,2);case"X":return r.num(Math.floor(t.ts/1e3));case"x":return r.num(t.ts);default:return function(n){var i=e.macroTokenToFormatOpts(n);return i?r.formatWithSystemDefault(t,i):n}(n)}})},t.formatDurationFromString=function(t,n){var r,i=this,o=function(e){switch(e[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"M":return"month";case"y":return"year";default:return null}},a=e.parseFormat(n),u=a.reduce(function(e,t){var n=t.literal,r=t.val;return n?e:e.concat(r)},[]),s=t.shiftTo.apply(t,u.map(o).filter(function(e){return e}));return Ve(a,(r=s,function(e){var t=o(e);return t?i.num(r.get(t),e.length):e}))},e}(),Ce=function(){function e(e,t){this.reason=e,this.explanation=t}return e.prototype.toMessage=function(){return this.explanation?this.reason+": "+this.explanation:this.reason},e}(),Fe=function(){function e(){}var t=e.prototype;return t.offsetName=function(e,t){throw new g},t.formatOffset=function(e,t){throw new g},t.offset=function(e){throw new g},t.equals=function(e){throw new g},n(e,[{key:"type",get:function(){throw new g}},{key:"name",get:function(){throw new g}},{key:"universal",get:function(){throw new g}},{key:"isValid",get:function(){throw new g}}]),e}(),Ze=null,je=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var i=t.prototype;return i.offsetName=function(e,t){return ce(e,t.format,t.locale)},i.formatOffset=function(e,t){return he(this.offset(e),t)},i.offset=function(e){return-new Date(e).getTimezoneOffset()},i.equals=function(e){return"local"===e.type},n(t,[{key:"type",get:function(){return"local"}},{key:"name",get:function(){return J()?(new Intl.DateTimeFormat).resolvedOptions().timeZone:"local"}},{key:"universal",get:function(){return!1}},{key:"isValid",get:function(){return!0}}],[{key:"instance",get:function(){return null===Ze&&(Ze=new t),Ze}}]),t}(Fe),Ae=RegExp("^"+ye.source+"$"),ze={};var _e={year:0,month:1,day:2,hour:3,minute:4,second:5};var qe={},He=function(e){function t(n){var r;return(r=e.call(this)||this).zoneName=n,r.valid=t.isValidZone(n),r}r(t,e),t.create=function(e){return qe[e]||(qe[e]=new t(e)),qe[e]},t.resetCache=function(){qe={},ze={}},t.isValidSpecifier=function(e){return!(!e||!e.match(Ae))},t.isValidZone=function(e){try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch(e){return!1}},t.parseGMTOffset=function(e){if(e){var t=e.match(/^Etc\/GMT(0|[+-]\d{1,2})$/i);if(t)return-60*parseInt(t[1])}return null};var i=t.prototype;return i.offsetName=function(e,t){return ce(e,t.format,t.locale,this.name)},i.formatOffset=function(e,t){return he(this.offset(e),t)},i.offset=function(e){var t=new Date(e);if(isNaN(t))return NaN;var n,r=(n=this.name,ze[n]||(ze[n]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:n,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})),ze[n]),i=r.formatToParts?function(e,t){for(var n=e.formatToParts(t),r=[],i=0;i=0?d:1e3+d))/6e4},i.equals=function(e){return"iana"===e.type&&e.name===this.name},n(t,[{key:"type",get:function(){return"iana"}},{key:"name",get:function(){return this.zoneName}},{key:"universal",get:function(){return!1}},{key:"isValid",get:function(){return this.valid}}]),t}(Fe),Ue=null,Re=function(e){function t(t){var n;return(n=e.call(this)||this).fixed=t,n}r(t,e),t.instance=function(e){return 0===e?t.utcInstance:new t(e)},t.parseSpecifier=function(e){if(e){var n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new t(le(n[1],n[2]))}return null},n(t,null,[{key:"utcInstance",get:function(){return null===Ue&&(Ue=new t(0)),Ue}}]);var i=t.prototype;return i.offsetName=function(){return this.name},i.formatOffset=function(e,t){return he(this.fixed,t)},i.offset=function(){return this.fixed},i.equals=function(e){return"fixed"===e.type&&e.fixed===this.fixed},n(t,[{key:"type",get:function(){return"fixed"}},{key:"name",get:function(){return 0===this.fixed?"UTC":"UTC"+he(this.fixed,"narrow")}},{key:"universal",get:function(){return!0}},{key:"isValid",get:function(){return!0}}]),t}(Fe),Pe=function(e){function t(t){var n;return(n=e.call(this)||this).zoneName=t,n}r(t,e);var i=t.prototype;return i.offsetName=function(){return null},i.formatOffset=function(){return""},i.offset=function(){return NaN},i.equals=function(){return!1},n(t,[{key:"type",get:function(){return"invalid"}},{key:"name",get:function(){return this.zoneName}},{key:"universal",get:function(){return!1}},{key:"isValid",get:function(){return!1}}]),t}(Fe);function We(e,t){var n;if(R(e)||null===e)return t;if(e instanceof Fe)return e;if("string"==typeof e){var r=e.toLowerCase();return"local"===r?t:"utc"===r||"gmt"===r?Re.utcInstance:null!=(n=He.parseGMTOffset(e))?Re.instance(n):He.isValidSpecifier(r)?He.create(e):Re.parseSpecifier(r)||new Pe(e)}return P(e)?Re.instance(e):"object"==typeof e&&e.offset&&"number"==typeof e.offset?e:new Pe(e)}var Je=function(){return Date.now()},Ye=null,Ge=null,$e=null,Be=null,Qe=!1,Ke=function(){function e(){}return e.resetCaches=function(){ct.resetCache(),He.resetCache()},n(e,null,[{key:"now",get:function(){return Je},set:function(e){Je=e}},{key:"defaultZoneName",get:function(){return e.defaultZone.name},set:function(e){Ye=e?We(e):null}},{key:"defaultZone",get:function(){return Ye||je.instance}},{key:"defaultLocale",get:function(){return Ge},set:function(e){Ge=e}},{key:"defaultNumberingSystem",get:function(){return $e},set:function(e){$e=e}},{key:"defaultOutputCalendar",get:function(){return Be},set:function(e){Be=e}},{key:"throwOnInvalid",get:function(){return Qe},set:function(e){Qe=e}}]),e}(),Xe={};function et(e,t){void 0===t&&(t={});var n=JSON.stringify([e,t]),r=Xe[n];return r||(r=new Intl.DateTimeFormat(e,t),Xe[n]=r),r}var tt={};var nt={};function rt(e,t){void 0===t&&(t={});var n=t,r=(n.base,function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(n,["base"])),i=JSON.stringify([e,r]),o=nt[i];return o||(o=new Intl.RelativeTimeFormat(e,t),nt[i]=o),o}var it=null;function ot(e,t,n,r,i){var o=e.listingMode(n);return"error"===o?null:"en"===o?r(t):i(t)}var at=function(){function e(e,t,n){if(this.padTo=n.padTo||0,this.floor=n.floor||!1,!t&&J()){var r={useGrouping:!1};n.padTo>0&&(r.minimumIntegerDigits=n.padTo),this.inf=function(e,t){void 0===t&&(t={});var n=JSON.stringify([e,t]),r=tt[n];return r||(r=new Intl.NumberFormat(e,t),tt[n]=r),r}(e,r)}}return e.prototype.format=function(e){if(this.inf){var t=this.floor?Math.floor(e):e;return this.inf.format(t)}return X(this.floor?Math.floor(e):ne(e,3),this.padTo)},e}(),ut=function(){function e(e,t,n){var r;if(this.opts=n,this.hasIntl=J(),e.zone.universal&&this.hasIntl){var i=e.offset/60*-1,o=i>=0?"Etc/GMT+"+i:"Etc/GMT"+i,a=He.isValidZone(o);0!==e.offset&&a?(r=o,this.dt=e):(r="UTC",n.timeZoneName?this.dt=e:this.dt=0===e.offset?e:sr.fromMillis(e.ts+60*e.offset*1e3))}else"local"===e.zone.type?this.dt=e:(this.dt=e,r=e.zone.name);if(this.hasIntl){var u=Object.assign({},this.opts);r&&(u.timeZone=r),this.dtf=et(t,u)}}var t=e.prototype;return t.format=function(){if(this.hasIntl)return this.dtf.format(this.dt.toJSDate());var e=function(e){switch(ve(B(e,["weekday","era","year","month","day","hour","minute","second","timeZoneName","hour12"]))){case ve(b):return"M/d/yyyy";case ve(O):return"LLL d, yyyy";case ve(S):return"EEE, LLL d, yyyy";case ve(T):return"LLLL d, yyyy";case ve(M):return"EEEE, LLLL d, yyyy";case ve(N):return"h:mm a";case ve(E):return"h:mm:ss a";case ve(D):case ve(I):return"h:mm a";case ve(V):return"HH:mm";case ve(L):return"HH:mm:ss";case ve(x):case ve(C):return"HH:mm";case ve(F):return"M/d/yyyy, h:mm a";case ve(j):return"LLL d, yyyy, h:mm a";case ve(_):return"LLLL d, yyyy, h:mm a";case ve(H):return"EEEE, LLLL d, yyyy, h:mm a";case ve(Z):return"M/d/yyyy, h:mm:ss a";case ve(A):return"LLL d, yyyy, h:mm:ss a";case ve(z):return"EEE, d LLL yyyy, h:mm a";case ve(q):return"LLLL d, yyyy, h:mm:ss a";case ve(U):return"EEEE, LLLL d, yyyy, h:mm:ss a";default:return"EEEE, LLLL d, yyyy, h:mm a"}}(this.opts),t=ct.create("en-US");return xe.create(t).formatDateTimeFromString(this.dt,e)},t.formatToParts=function(){return this.hasIntl&&Y()?this.dtf.formatToParts(this.dt.toJSDate()):[]},t.resolvedOptions=function(){return this.hasIntl?this.dtf.resolvedOptions():{locale:"en-US",numberingSystem:"latn",outputCalendar:"gregory"}},e}(),st=function(){function e(e,t,n){this.opts=Object.assign({style:"long"},n),!t&&G()&&(this.rtf=rt(e,n))}var t=e.prototype;return t.format=function(e,t){return this.rtf?this.rtf.format(e,t):function(e,t,n,r){void 0===n&&(n="always"),void 0===r&&(r=!1);var i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},o=-1===["hours","minutes","seconds"].indexOf(e);if("auto"===n&&o){var a="days"===e;switch(t){case 1:return a?"tomorrow":"next "+i[e][0];case-1:return a?"yesterday":"last "+i[e][0];case 0:return a?"today":"this "+i[e][0]}}var u=Object.is(t,-0)||t<0,s=Math.abs(t),c=1===s,l=i[e],f=r?c?l[1]:l[2]||l[1]:c?i[e][0]:e;return u?s+" "+f+" ago":"in "+s+" "+f}(t,e,this.opts.numeric,"long"!==this.opts.style)},t.formatToParts=function(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]},e}(),ct=function(){function e(e,t,n,r){var i=function(e){var t=e.indexOf("-u-");if(-1===t)return[e];var n,r=e.substring(0,t);try{n=et(e).resolvedOptions()}catch(e){n=et(r).resolvedOptions()}var i=n;return[r,i.numberingSystem,i.calendar]}(e),o=i[0],a=i[1],u=i[2];this.locale=o,this.numberingSystem=t||a||null,this.outputCalendar=n||u||null,this.intl=function(e,t,n){return J()?n||t?(e+="-u",n&&(e+="-ca-"+n),t&&(e+="-nu-"+t),e):e:[]}(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=r,this.fastNumbersCached=null}e.fromOpts=function(t){return e.create(t.locale,t.numberingSystem,t.outputCalendar,t.defaultToEN)},e.create=function(t,n,r,i){void 0===i&&(i=!1);var o=t||Ke.defaultLocale;return new e(o||(i?"en-US":function(){if(it)return it;if(J()){var e=(new Intl.DateTimeFormat).resolvedOptions().locale;return it=e&&"und"!==e?e:"en-US"}return it="en-US"}()),n||Ke.defaultNumberingSystem,r||Ke.defaultOutputCalendar,o)},e.resetCache=function(){it=null,Xe={},tt={},nt={}},e.fromObject=function(t){var n=void 0===t?{}:t,r=n.locale,i=n.numberingSystem,o=n.outputCalendar;return e.create(r,i,o)};var t=e.prototype;return t.listingMode=function(e){void 0===e&&(e=!0);var t=J()&&Y(),n=this.isEnglish(),r=!(null!==this.numberingSystem&&"latn"!==this.numberingSystem||null!==this.outputCalendar&&"gregory"!==this.outputCalendar);return t||n&&r||e?!t||n&&r?"en":"intl":"error"},t.clone=function(t){return t&&0!==Object.getOwnPropertyNames(t).length?e.create(t.locale||this.specifiedLocale,t.numberingSystem||this.numberingSystem,t.outputCalendar||this.outputCalendar,t.defaultToEN||!1):this},t.redefaultToEN=function(e){return void 0===e&&(e={}),this.clone(Object.assign({},e,{defaultToEN:!0}))},t.redefaultToSystem=function(e){return void 0===e&&(e={}),this.clone(Object.assign({},e,{defaultToEN:!1}))},t.months=function(e,t,n){var r=this;return void 0===t&&(t=!1),void 0===n&&(n=!0),ot(this,e,n,ke,function(){var n=t?{month:e,day:"numeric"}:{month:e},i=t?"format":"standalone";return r.monthsCache[i][e]||(r.monthsCache[i][e]=function(e){for(var t=[],n=1;n<=12;n++){var r=sr.utc(2016,n,1);t.push(e(r))}return t}(function(e){return r.extract(e,n,"month")})),r.monthsCache[i][e]})},t.weekdays=function(e,t,n){var r=this;return void 0===t&&(t=!1),void 0===n&&(n=!0),ot(this,e,n,Te,function(){var n=t?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},i=t?"format":"standalone";return r.weekdaysCache[i][e]||(r.weekdaysCache[i][e]=function(e){for(var t=[],n=1;n<=7;n++){var r=sr.utc(2016,11,13+n);t.push(e(r))}return t}(function(e){return r.extract(e,n,"weekday")})),r.weekdaysCache[i][e]})},t.meridiems=function(e){var t=this;return void 0===e&&(e=!0),ot(this,void 0,e,function(){return Me},function(){if(!t.meridiemCache){var e={hour:"numeric",hour12:!0};t.meridiemCache=[sr.utc(2016,11,13,9),sr.utc(2016,11,13,19)].map(function(n){return t.extract(n,e,"dayperiod")})}return t.meridiemCache})},t.eras=function(e,t){var n=this;return void 0===t&&(t=!0),ot(this,e,t,Ie,function(){var t={era:e};return n.eraCache[e]||(n.eraCache[e]=[sr.utc(-40,1,1),sr.utc(2017,1,1)].map(function(e){return n.extract(e,t,"era")})),n.eraCache[e]})},t.extract=function(e,t,n){var r=this.dtFormatter(e,t).formatToParts().find(function(e){return e.type.toLowerCase()===n});return r?r.value:null},t.numberFormatter=function(e){return void 0===e&&(e={}),new at(this.intl,e.forceSimple||this.fastNumbers,e)},t.dtFormatter=function(e,t){return void 0===t&&(t={}),new ut(e,this.intl,t)},t.relFormatter=function(e){return void 0===e&&(e={}),new st(this.intl,this.isEnglish(),e)},t.isEnglish=function(){return"en"===this.locale||"en-us"===this.locale.toLowerCase()||J()&&new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")},t.equals=function(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar},n(e,[{key:"fastNumbers",get:function(){var e;return null==this.fastNumbersCached&&(this.fastNumbersCached=(!(e=this).numberingSystem||"latn"===e.numberingSystem)&&("latn"===e.numberingSystem||!e.locale||e.locale.startsWith("en")||J()&&"latn"===new Intl.DateTimeFormat(e.intl).resolvedOptions().numberingSystem)),this.fastNumbersCached}}]),e}();function lt(){for(var e=arguments.length,t=new Array(e),n=0;n1?t-1:0),r=1;r3?be.indexOf(e)+1:Oe.indexOf(e)+1),u}var xt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function Ct(e){var t,n=e[1],r=e[2],i=e[3],o=e[4],a=e[5],u=e[6],s=e[7],c=e[8],l=e[9],f=e[10],d=e[11],h=Lt(n,o,i,r,a,u,s);return t=c?Vt[c]:l?0:le(f,d),[h,new Re(t)]}var Ft=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Zt=/^(Monday|Tuesday|Wedsday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,jt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function At(e){var t=e[1],n=e[2],r=e[3];return[Lt(t,e[4],r,n,e[5],e[6],e[7]),Re.utcInstance]}function zt(e){var t=e[1],n=e[2],r=e[3],i=e[4],o=e[5],a=e[6];return[Lt(t,e[7],n,r,i,o,a),Re.utcInstance]}var _t=lt(/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,gt),qt=lt(/(\d{4})-?W(\d\d)(?:-?(\d))?/,gt),Ht=lt(/(\d{4})-?(\d{3})/,gt),Ut=lt(vt),Rt=ft(St,Tt,Mt),Pt=ft(pt,Tt,Mt),Wt=ft(wt,Tt),Jt=ft(Tt,Mt);var Yt=ft(Tt);var Gt=lt(/(\d{4})-(\d\d)-(\d\d)/,bt),$t=lt(kt),Bt=ft(St,Tt,Mt,Nt),Qt=ft(Tt,Mt,Nt);var Kt={weeks:{days:7,hours:168,minutes:10080,seconds:604800,milliseconds:6048e5},days:{hours:24,minutes:1440,seconds:86400,milliseconds:864e5},hours:{minutes:60,seconds:3600,milliseconds:36e5},minutes:{seconds:60,milliseconds:6e4},seconds:{milliseconds:1e3}},Xt=Object.assign({years:{quarters:4,months:12,weeks:52,days:365,hours:8760,minutes:525600,seconds:31536e3,milliseconds:31536e6},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:131040,seconds:7862400,milliseconds:78624e5},months:{weeks:4,days:30,hours:720,minutes:43200,seconds:2592e3,milliseconds:2592e6}},Kt),en=Object.assign({years:{quarters:4,months:12,weeks:52.1775,days:365.2425,hours:8765.82,minutes:525949.2,seconds:525949.2*60,milliseconds:525949.2*60*1e3},quarters:{months:3,weeks:13.044375,days:91.310625,hours:2191.455,minutes:131487.3,seconds:525949.2*60/4,milliseconds:7889237999.999999},months:{weeks:30.436875/7,days:30.436875,hours:730.485,minutes:43829.1,seconds:2629746,milliseconds:2629746e3}},Kt),tn=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],nn=tn.slice(0).reverse();function rn(e,t,n){void 0===n&&(n=!1);var r={values:n?t.values:Object.assign({},e.values,t.values||{}),loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy};return new an(r)}function on(e,t,n,r,i){var o,a=e[i][n],u=t[n]/a,s=!(Math.sign(u)===Math.sign(r[i]))&&0!==r[i]&&Math.abs(u)<=1?(o=u)<0?Math.floor(o):Math.ceil(o):Math.trunc(u);r[i]+=s,t[n]-=s*a}var an=function(){function e(e){var t="longterm"===e.conversionAccuracy||!1;this.values=e.values,this.loc=e.loc||ct.create(),this.conversionAccuracy=t?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=t?en:Xt,this.isLuxonDuration=!0}e.fromMillis=function(t,n){return e.fromObject(Object.assign({milliseconds:t},n))},e.fromObject=function(t){if(null==t||"object"!=typeof t)throw new v("Duration.fromObject: argument expected to be an object, got "+(null===t?"null":typeof t));return new e({values:de(t,e.normalizeUnit,["locale","numberingSystem","conversionAccuracy","zone"]),loc:ct.fromObject(t),conversionAccuracy:t.conversionAccuracy})},e.fromISO=function(t,n){var r=dt(t,[Dt,It])[0];if(r){var i=Object.assign(r,n);return e.fromObject(i)}return e.invalid("unparsable",'the input "'+t+"\" can't be parsed as ISO 8601")},e.fromISOTime=function(t,n){var r=dt(t,[Et,Yt])[0];if(r){var i=Object.assign(r,n);return e.fromObject(i)}return e.invalid("unparsable",'the input "'+t+"\" can't be parsed as ISO 8601")},e.invalid=function(t,n){if(void 0===n&&(n=null),!t)throw new v("need to specify a reason the Duration is invalid");var r=t instanceof Ce?t:new Ce(t,n);if(Ke.throwOnInvalid)throw new h(r);return new e({invalid:r})},e.normalizeUnit=function(e){var t={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e?e.toLowerCase():e];if(!t)throw new y(e);return t},e.isDuration=function(e){return e&&e.isLuxonDuration||!1};var t=e.prototype;return t.toFormat=function(e,t){void 0===t&&(t={});var n=Object.assign({},t,{floor:!1!==t.round&&!1!==t.floor});return this.isValid?xe.create(this.loc,n).formatDurationFromString(this,e):"Invalid Duration"},t.toObject=function(e){if(void 0===e&&(e={}),!this.isValid)return{};var t=Object.assign({},this.values);return e.includeConfig&&(t.conversionAccuracy=this.conversionAccuracy,t.numberingSystem=this.loc.numberingSystem,t.locale=this.loc.locale),t},t.toISO=function(){if(!this.isValid)return null;var e="P";return 0!==this.years&&(e+=this.years+"Y"),0===this.months&&0===this.quarters||(e+=this.months+3*this.quarters+"M"),0!==this.weeks&&(e+=this.weeks+"W"),0!==this.days&&(e+=this.days+"D"),0===this.hours&&0===this.minutes&&0===this.seconds&&0===this.milliseconds||(e+="T"),0!==this.hours&&(e+=this.hours+"H"),0!==this.minutes&&(e+=this.minutes+"M"),0===this.seconds&&0===this.milliseconds||(e+=ne(this.seconds+this.milliseconds/1e3,3)+"S"),"P"===e&&(e+="T0S"),e},t.toISOTime=function(e){if(void 0===e&&(e={}),!this.isValid)return null;var t=this.toMillis();if(t<0||t>=864e5)return null;e=Object.assign({suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended"},e);var n=this.shiftTo("hours","minutes","seconds","milliseconds"),r="basic"===e.format?"hhmm":"hh:mm";e.suppressSeconds&&0===n.seconds&&0===n.milliseconds||(r+="basic"===e.format?"ss":":ss",e.suppressMilliseconds&&0===n.milliseconds||(r+=".SSS"));var i=n.toFormat(r);return e.includePrefix&&(i="T"+i),i},t.toJSON=function(){return this.toISO()},t.toString=function(){return this.toISO()},t.toMillis=function(){return this.as("milliseconds")},t.valueOf=function(){return this.toMillis()},t.plus=function(e){if(!this.isValid)return this;for(var t,n=un(e),r={},i=c(tn);!(t=i()).done;){var o=t.value;(Q(n.values,o)||Q(this.values,o))&&(r[o]=n.get(o)+this.get(o))}return rn(this,{values:r},!0)},t.minus=function(e){if(!this.isValid)return this;var t=un(e);return this.plus(t.negate())},t.mapUnits=function(e){if(!this.isValid)return this;for(var t={},n=0,r=Object.keys(this.values);n=0){i=f;var d=0;for(var h in u)d+=this.matrix[h][f]*u[h],u[h]=0;P(s[f])&&(d+=s[f]);var m=Math.trunc(d);for(var y in a[f]=m,u[f]=d-m,s)tn.indexOf(y)>tn.indexOf(f)&&on(this.matrix,s,y,a,f)}else P(s[f])&&(u[f]=s[f])}for(var v in u)0!==u[v]&&(a[i]+=v===i?u[v]:u[v]/this.matrix[i][v]);return rn(this,{values:a},!0).normalize()},t.negate=function(){if(!this.isValid)return this;for(var e={},t=0,n=Object.keys(this.values);te},t.isBefore=function(e){return!!this.isValid&&this.e<=e},t.contains=function(e){return!!this.isValid&&(this.s<=e&&this.e>e)},t.set=function(t){var n=void 0===t?{}:t,r=n.start,i=n.end;return this.isValid?e.fromDateTimes(r||this.s,i||this.e):this},t.splitAt=function(){var t=this;if(!this.isValid)return[];for(var n=arguments.length,r=new Array(n),i=0;i+this.e?this.e:c;a.push(e.fromDateTimes(u,l)),u=l,s+=1}return a},t.splitBy=function(t){var n=un(t);if(!this.isValid||!n.isValid||0===n.as("milliseconds"))return[];for(var r,i=this.s,o=1,a=[];i+this.e?this.e:u,a.push(e.fromDateTimes(i,r)),i=r,o+=1}return a},t.divideEqually=function(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]},t.overlaps=function(e){return this.e>e.s&&this.s=e.e)},t.equals=function(e){return!(!this.isValid||!e.isValid)&&(this.s.equals(e.s)&&this.e.equals(e.e))},t.intersection=function(t){if(!this.isValid)return this;var n=this.s>t.s?this.s:t.s,r=this.e=r?null:e.fromDateTimes(n,r)},t.union=function(t){if(!this.isValid)return this;var n=this.st.e?this.e:t.e;return e.fromDateTimes(n,r)},e.merge=function(e){var t=e.sort(function(e,t){return e.s-t.s}).reduce(function(e,t){var n=e[0],r=e[1];return r?r.overlaps(t)||r.abutsStart(t)?[n,r.union(t)]:[n.concat([r]),t]:[n,t]},[[],null]),n=t[0],r=t[1];return r&&n.push(r),n},e.xor=function(t){for(var n,r,i=null,o=0,a=[],u=t.map(function(e){return[{time:e.s,type:"s"},{time:e.e,type:"e"}]}),s=c((n=Array.prototype).concat.apply(n,u).sort(function(e,t){return e.time-t.time}));!(r=s()).done;){var l=r.value;1===(o+="s"===l.type?1:-1)?i=l.time:(i&&+i!=+l.time&&a.push(e.fromDateTimes(i,l.time)),i=null)}return e.merge(a)},t.difference=function(){for(var t=this,n=arguments.length,r=new Array(n),i=0;i=0){var f;r=c;var d,h=l(e,t);(i=e.plus(((f={})[c]=h,f)))>t?(e=e.plus(((d={})[c]=h-1,d)),h-=1):e=i,o[c]=h}}return[e,o,i,r]}(e,t,n),o=i[0],a=i[1],u=i[2],s=i[3],c=t-o,l=n.filter(function(e){return["hours","minutes","seconds","milliseconds"].indexOf(e)>=0});if(0===l.length){var f;if(u0?(d=an.fromMillis(c,r)).shiftTo.apply(d,l).plus(h):h}var mn={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},yn={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},vn=mn.hanidec.replace(/[\[|\]]/g,"").split("");function gn(e,t){var n=e.numberingSystem;return void 0===t&&(t=""),new RegExp(""+mn[n||"latn"]+t)}var pn="missing Intl.DateTimeFormat.formatToParts support";function wn(e,t){return void 0===t&&(t=function(e){return e}),{regex:e,deser:function(e){var n=e[0];return t(function(e){var t=parseInt(e,10);if(isNaN(t)){t="";for(var n=0;n=a&&r<=u&&(t+=r-a)}}return parseInt(t,10)}return t}(n))}}}var kn="( |"+String.fromCharCode(160)+")",bn=new RegExp(kn,"g");function On(e){return e.replace(/\./g,"\\.?").replace(bn,kn)}function Sn(e){return e.replace(/\./g,"").replace(bn," ").toLowerCase()}function Tn(e,t){return null===e?null:{regex:RegExp(e.map(On).join("|")),deser:function(n){var r=n[0];return e.findIndex(function(e){return Sn(r)===Sn(e)})+t}}}function Mn(e,t){return{regex:e,deser:function(e){return le(e[1],e[2])},groups:t}}function Nn(e){return{regex:e,deser:function(e){return e[0]}}}var En={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"}};var Dn=null;function In(e,t){if(e.literal)return e;var n=xe.macroTokenToFormatOpts(e.val);if(!n)return e;var r=xe.create(t,n).formatDateTimeParts((Dn||(Dn=sr.fromMillis(1555555555555)),Dn)).map(function(e){return function(e,t,n){var r=e.type,i=e.value;if("literal"===r)return{literal:!0,val:i};var o=n[r],a=En[r];return"object"==typeof a&&(a=a[o]),a?{literal:!1,val:a}:void 0}(e,0,n)});return r.includes(void 0)?e:r}function Vn(e,t,n){var r=function(e,t){var n;return(n=Array.prototype).concat.apply(n,e.map(function(e){return In(e,t)}))}(xe.parseFormat(n),e),i=r.map(function(t){return n=t,i=gn(r=e),o=gn(r,"{2}"),a=gn(r,"{3}"),u=gn(r,"{4}"),s=gn(r,"{6}"),c=gn(r,"{1,2}"),l=gn(r,"{1,3}"),f=gn(r,"{1,6}"),d=gn(r,"{1,9}"),h=gn(r,"{2,4}"),m=gn(r,"{4,6}"),y=function(e){return{regex:RegExp((t=e.val,t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"))),deser:function(e){return e[0]},literal:!0};var t},(v=function(e){if(n.literal)return y(e);switch(e.val){case"G":return Tn(r.eras("short",!1),0);case"GG":return Tn(r.eras("long",!1),0);case"y":return wn(f);case"yy":return wn(h,se);case"yyyy":return wn(u);case"yyyyy":return wn(m);case"yyyyyy":return wn(s);case"M":return wn(c);case"MM":return wn(o);case"MMM":return Tn(r.months("short",!0,!1),1);case"MMMM":return Tn(r.months("long",!0,!1),1);case"L":return wn(c);case"LL":return wn(o);case"LLL":return Tn(r.months("short",!1,!1),1);case"LLLL":return Tn(r.months("long",!1,!1),1);case"d":return wn(c);case"dd":return wn(o);case"o":return wn(l);case"ooo":return wn(a);case"HH":return wn(o);case"H":return wn(c);case"hh":return wn(o);case"h":return wn(c);case"mm":return wn(o);case"m":case"q":return wn(c);case"qq":return wn(o);case"s":return wn(c);case"ss":return wn(o);case"S":return wn(l);case"SSS":return wn(a);case"u":return Nn(d);case"a":return Tn(r.meridiems(),0);case"kkkk":return wn(u);case"kk":return wn(h,se);case"W":return wn(c);case"WW":return wn(o);case"E":case"c":return wn(i);case"EEE":return Tn(r.weekdays("short",!1,!1),1);case"EEEE":return Tn(r.weekdays("long",!1,!1),1);case"ccc":return Tn(r.weekdays("short",!0,!1),1);case"cccc":return Tn(r.weekdays("long",!0,!1),1);case"Z":case"ZZ":return Mn(new RegExp("([+-]"+c.source+")(?::("+o.source+"))?"),2);case"ZZZ":return Mn(new RegExp("([+-]"+c.source+")("+o.source+")?"),2);case"z":return Nn(/[a-z_+-/]{1,256}?/i);default:return y(e)}}(n)||{invalidReason:pn}).token=n,v;var n,r,i,o,a,u,s,c,l,f,d,h,m,y,v}),o=i.find(function(e){return e.invalidReason});if(o)return{input:t,tokens:r,invalidReason:o.invalidReason};var a=function(e){return["^"+e.map(function(e){return e.regex}).reduce(function(e,t){return e+"("+t.source+")"},"")+"$",e]}(i),u=a[0],s=a[1],c=RegExp(u,"i"),l=function(e,t,n){var r=e.match(t);if(r){var i={},o=1;for(var a in n)if(Q(n,a)){var u=n[a],s=u.groups?u.groups+1:1;!u.literal&&u.token&&(i[u.token.val[0]]=u.deser(r.slice(o,o+s))),o+=s}return[r,i]}return[r,{}]}(t,c,s),f=l[0],d=l[1],h=d?function(e){var t;return t=R(e.Z)?R(e.z)?null:He.create(e.z):new Re(e.Z),R(e.q)||(e.M=3*(e.q-1)+1),R(e.h)||(e.h<12&&1===e.a?e.h+=12:12===e.h&&0===e.a&&(e.h=0)),0===e.G&&e.y&&(e.y=-e.y),R(e.u)||(e.S=te(e.u)),[Object.keys(e).reduce(function(t,n){var r=function(e){switch(e){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}}(n);return r&&(t[r]=e[n]),t},{}),t]}(d):[null,null],y=h[0],v=h[1];if(Q(d,"a")&&Q(d,"H"))throw new m("Can't include meridiem when specifying 24-hour format");return{input:t,tokens:r,regex:c,rawMatches:f,matches:d,result:y,zone:v}}var Ln=[0,31,59,90,120,151,181,212,243,273,304,334],xn=[0,31,60,91,121,152,182,213,244,274,305,335];function Cn(e,t){return new Ce("unit out of range","you specified "+t+" (of type "+typeof t+") as a "+e+", which is invalid")}function Fn(e,t,n){var r=new Date(Date.UTC(e,t-1,n)).getUTCDay();return 0===r?7:r}function Zn(e,t,n){return n+(re(e)?xn:Ln)[t-1]}function jn(e,t){var n=re(e)?xn:Ln,r=n.findIndex(function(e){return eue(n)?(t=n+1,u=1):t=n,Object.assign({weekYear:t,weekNumber:u,weekday:a},me(e))}function zn(e){var t,n=e.weekYear,r=e.weekNumber,i=e.weekday,o=Fn(n,1,4),a=ie(n),u=7*r+i-o-3;u<1?u+=ie(t=n-1):u>a?(t=n+1,u-=ie(n)):t=n;var s=jn(t,u),c=s.month,l=s.day;return Object.assign({year:t,month:c,day:l},me(e))}function _n(e){var t=e.year,n=Zn(t,e.month,e.day);return Object.assign({year:t,ordinal:n},me(e))}function qn(e){var t=e.year,n=jn(t,e.ordinal),r=n.month,i=n.day;return Object.assign({year:t,month:r,day:i},me(e))}function Hn(e){var t=W(e.year),n=K(e.month,1,12),r=K(e.day,1,oe(e.year,e.month));return t?n?!r&&Cn("day",e.day):Cn("month",e.month):Cn("year",e.year)}function Un(e){var t=e.hour,n=e.minute,r=e.second,i=e.millisecond,o=K(t,0,23)||24===t&&0===n&&0===r&&0===i,a=K(n,0,59),u=K(r,0,59),s=K(i,0,999);return o?a?u?!s&&Cn("millisecond",i):Cn("second",r):Cn("minute",n):Cn("hour",t)}function Rn(e){return new Ce("unsupported zone",'the zone "'+e.name+'" is not supported')}function Pn(e){return null===e.weekData&&(e.weekData=An(e.c)),e.weekData}function Wn(e,t){var n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new sr(Object.assign({},n,t,{old:n}))}function Jn(e,t,n){var r=e-60*t*1e3,i=n.offset(r);if(t===i)return[r,t];r-=60*(i-t)*1e3;var o=n.offset(r);return i===o?[r,i]:[e-60*Math.min(i,o)*1e3,Math.max(i,o)]}function Yn(e,t){var n=new Date(e+=60*t*1e3);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function Gn(e,t,n){return Jn(ae(e),t,n)}function $n(e,t){var n=e.o,r=e.c.year+Math.trunc(t.years),i=e.c.month+Math.trunc(t.months)+3*Math.trunc(t.quarters),o=Object.assign({},e.c,{year:r,month:i,day:Math.min(e.c.day,oe(r,i))+Math.trunc(t.days)+7*Math.trunc(t.weeks)}),a=an.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as("milliseconds"),u=Jn(ae(o),n,e.zone),s=u[0],c=u[1];return 0!==a&&(s+=a,c=e.zone.offset(s)),{ts:s,o:c}}function Bn(e,t,n,r,i){var o=n.setZone,a=n.zone;if(e&&0!==Object.keys(e).length){var u=t||a,s=sr.fromObject(Object.assign(e,n,{zone:u,setZone:void 0}));return o?s:s.setZone(a)}return sr.invalid(new Ce("unparsable",'the input "'+i+"\" can't be parsed as "+r))}function Qn(e,t,n){return void 0===n&&(n=!0),e.isValid?xe.create(ct.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function Kn(e,t){var n=t.suppressSeconds,r=void 0!==n&&n,i=t.suppressMilliseconds,o=void 0!==i&&i,a=t.includeOffset,u=t.includePrefix,s=void 0!==u&&u,c=t.includeZone,l=void 0!==c&&c,f=t.spaceZone,d=void 0!==f&&f,h=t.format,m=void 0===h?"extended":h,y="basic"===m?"HHmm":"HH:mm";r&&0===e.second&&0===e.millisecond||(y+="basic"===m?"ss":":ss",o&&0===e.millisecond||(y+=".SSS")),(l||a)&&d&&(y+=" "),l?y+="z":a&&(y+="basic"===m?"ZZZ":"ZZ");var v=Qn(e,y);return s&&(v="T"+v),v}var Xn={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},er={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},tr={ordinal:1,hour:0,minute:0,second:0,millisecond:0},nr=["year","month","day","hour","minute","second","millisecond"],rr=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],ir=["year","ordinal","hour","minute","second","millisecond"];function or(e){var t={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[e.toLowerCase()];if(!t)throw new y(e);return t}function ar(e,t){for(var n,r=c(nr);!(n=r()).done;){var i=n.value;R(e[i])&&(e[i]=Xn[i])}var o=Hn(e)||Un(e);if(o)return sr.invalid(o);var a=Ke.now(),u=Gn(e,t.offset(a),t),s=u[0],l=u[1];return new sr({ts:s,zone:t,o:l})}function ur(e,t,n){var r=!!R(n.round)||n.round,i=function(e,i){return e=ne(e,r||n.calendary?0:2,!0),t.loc.clone(n).relFormatter(n).format(e,i)},o=function(r){return n.calendary?t.hasSame(e,r)?0:t.startOf(r).diff(e.startOf(r),r).get(r):t.diff(e,r).get(r)};if(n.unit)return i(o(n.unit),n.unit);for(var a,u=c(n.units);!(a=u()).done;){var s=a.value,l=o(s);if(Math.abs(l)>=1)return i(l,s)}return i(e>t?-0:0,n.units[n.units.length-1])}var sr=function(){function e(e){var t=e.zone||Ke.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new Ce("invalid input"):null)||(t.isValid?null:Rn(t));this.ts=R(e.ts)?Ke.now():e.ts;var r=null,i=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t)){var o=[e.old.c,e.old.o];r=o[0],i=o[1]}else{var a=t.offset(this.ts);r=Yn(this.ts,a),r=(n=Number.isNaN(r.year)?new Ce("invalid input"):null)?null:r,i=n?null:a}this._zone=t,this.loc=e.loc||ct.create(),this.invalid=n,this.weekData=null,this.c=r,this.o=i,this.isLuxonDateTime=!0}e.now=function(){return new e({})},e.local=function(t,n,r,i,o,a,u){return R(t)?e.now():ar({year:t,month:n,day:r,hour:i,minute:o,second:a,millisecond:u},Ke.defaultZone)},e.utc=function(t,n,r,i,o,a,u){return R(t)?new e({ts:Ke.now(),zone:Re.utcInstance}):ar({year:t,month:n,day:r,hour:i,minute:o,second:a,millisecond:u},Re.utcInstance)},e.fromJSDate=function(t,n){void 0===n&&(n={});var r,i=(r=t,"[object Date]"===Object.prototype.toString.call(r)?t.valueOf():NaN);if(Number.isNaN(i))return e.invalid("invalid input");var o=We(n.zone,Ke.defaultZone);return o.isValid?new e({ts:i,zone:o,loc:ct.fromObject(n)}):e.invalid(Rn(o))},e.fromMillis=function(t,n){if(void 0===n&&(n={}),P(t))return t<-864e13||t>864e13?e.invalid("Timestamp out of range"):new e({ts:t,zone:We(n.zone,Ke.defaultZone),loc:ct.fromObject(n)});throw new v("fromMillis requires a numerical input, but received a "+typeof t+" with value "+t)},e.fromSeconds=function(t,n){if(void 0===n&&(n={}),P(t))return new e({ts:1e3*t,zone:We(n.zone,Ke.defaultZone),loc:ct.fromObject(n)});throw new v("fromSeconds requires a numerical input")},e.fromObject=function(t){var n=We(t.zone,Ke.defaultZone);if(!n.isValid)return e.invalid(Rn(n));var r=Ke.now(),i=n.offset(r),o=de(t,or,["zone","locale","outputCalendar","numberingSystem"]),a=!R(o.ordinal),u=!R(o.year),s=!R(o.month)||!R(o.day),l=u||s,f=o.weekYear||o.weekNumber,d=ct.fromObject(t);if((l||a)&&f)throw new m("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(s&&a)throw new m("Can't mix ordinal dates with month/day");var h,y,v=f||o.weekday&&!l,g=Yn(r,i);v?(h=rr,y=er,g=An(g)):a?(h=ir,y=tr,g=_n(g)):(h=nr,y=Xn);for(var p,w=!1,k=c(h);!(p=k()).done;){var b=p.value;R(o[b])?o[b]=w?y[b]:g[b]:w=!0}var O=(v?function(e){var t=W(e.weekYear),n=K(e.weekNumber,1,ue(e.weekYear)),r=K(e.weekday,1,7);return t?n?!r&&Cn("weekday",e.weekday):Cn("week",e.week):Cn("weekYear",e.weekYear)}(o):a?function(e){var t=W(e.year),n=K(e.ordinal,1,ie(e.year));return t?!n&&Cn("ordinal",e.ordinal):Cn("year",e.year)}(o):Hn(o))||Un(o);if(O)return e.invalid(O);var S=Gn(v?zn(o):a?qn(o):o,i,n),T=new e({ts:S[0],zone:n,o:S[1],loc:d});return o.weekday&&l&&t.weekday!==T.weekday?e.invalid("mismatched weekday","you can't specify both a weekday of "+o.weekday+" and a date of "+T.toISO()):T},e.fromISO=function(e,t){void 0===t&&(t={});var n=dt(e,[_t,Rt],[qt,Pt],[Ht,Wt],[Ut,Jt]);return Bn(n[0],n[1],t,"ISO 8601",e)},e.fromRFC2822=function(e,t){void 0===t&&(t={});var n=dt(function(e){return e.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}(e),[xt,Ct]);return Bn(n[0],n[1],t,"RFC 2822",e)},e.fromHTTP=function(e,t){void 0===t&&(t={});var n=dt(e,[Ft,At],[Zt,At],[jt,zt]);return Bn(n[0],n[1],t,"HTTP",t)},e.fromFormat=function(t,n,r){if(void 0===r&&(r={}),R(t)||R(n))throw new v("fromFormat requires an input string and a format");var i=r,o=i.locale,a=void 0===o?null:o,u=i.numberingSystem,s=void 0===u?null:u,c=function(e,t,n){var r=Vn(e,t,n);return[r.result,r.zone,r.invalidReason]}(ct.fromOpts({locale:a,numberingSystem:s,defaultToEN:!0}),t,n),l=c[0],f=c[1],d=c[2];return d?e.invalid(d):Bn(l,f,r,"format "+n,t)},e.fromString=function(t,n,r){return void 0===r&&(r={}),e.fromFormat(t,n,r)},e.fromSQL=function(e,t){void 0===t&&(t={});var n=dt(e,[Gt,Bt],[$t,Qt]);return Bn(n[0],n[1],t,"SQL",e)},e.invalid=function(t,n){if(void 0===n&&(n=null),!t)throw new v("need to specify a reason the DateTime is invalid");var r=t instanceof Ce?t:new Ce(t,n);if(Ke.throwOnInvalid)throw new f(r);return new e({invalid:r})},e.isDateTime=function(e){return e&&e.isLuxonDateTime||!1};var t=e.prototype;return t.get=function(e){return this[e]},t.resolvedLocaleOpts=function(e){void 0===e&&(e={});var t=xe.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t.locale,numberingSystem:t.numberingSystem,outputCalendar:t.calendar}},t.toUTC=function(e,t){return void 0===e&&(e=0),void 0===t&&(t={}),this.setZone(Re.instance(e),t)},t.toLocal=function(){return this.setZone(Ke.defaultZone)},t.setZone=function(t,n){var r=void 0===n?{}:n,i=r.keepLocalTime,o=void 0!==i&&i,a=r.keepCalendarTime,u=void 0!==a&&a;if((t=We(t,Ke.defaultZone)).equals(this.zone))return this;if(t.isValid){var s=this.ts;if(o||u){var c=t.offset(this.ts);s=Gn(this.toObject(),c,t)[0]}return Wn(this,{ts:s,zone:t})}return e.invalid(Rn(t))},t.reconfigure=function(e){var t=void 0===e?{}:e,n=t.locale,r=t.numberingSystem,i=t.outputCalendar;return Wn(this,{loc:this.loc.clone({locale:n,numberingSystem:r,outputCalendar:i})})},t.setLocale=function(e){return this.reconfigure({locale:e})},t.set=function(e){if(!this.isValid)return this;var t,n=de(e,or,[]),r=!R(n.weekYear)||!R(n.weekNumber)||!R(n.weekday),i=!R(n.ordinal),o=!R(n.year),a=!R(n.month)||!R(n.day),u=o||a,s=n.weekYear||n.weekNumber;if((u||i)&&s)throw new m("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(a&&i)throw new m("Can't mix ordinal dates with month/day");r?t=zn(Object.assign(An(this.c),n)):R(n.ordinal)?(t=Object.assign(this.toObject(),n),R(n.day)&&(t.day=Math.min(oe(t.year,t.month),t.day))):t=qn(Object.assign(_n(this.c),n));var c=Gn(t,this.o,this.zone);return Wn(this,{ts:c[0],o:c[1]})},t.plus=function(e){return this.isValid?Wn(this,$n(this,un(e))):this},t.minus=function(e){return this.isValid?Wn(this,$n(this,un(e).negate())):this},t.startOf=function(e){if(!this.isValid)return this;var t={},n=an.normalizeUnit(e);switch(n){case"years":t.month=1;case"quarters":case"months":t.day=1;case"weeks":case"days":t.hour=0;case"hours":t.minute=0;case"minutes":t.second=0;case"seconds":t.millisecond=0}if("weeks"===n&&(t.weekday=1),"quarters"===n){var r=Math.ceil(this.month/3);t.month=3*(r-1)+1}return this.set(t)},t.endOf=function(e){var t;return this.isValid?this.plus((t={},t[e]=1,t)).startOf(e).minus(1):this},t.toFormat=function(e,t){return void 0===t&&(t={}),this.isValid?xe.create(this.loc.redefaultToEN(t)).formatDateTimeFromString(this,e):"Invalid DateTime"},t.toLocaleString=function(e){return void 0===e&&(e=b),this.isValid?xe.create(this.loc.clone(e),e).formatDateTime(this):"Invalid DateTime"},t.toLocaleParts=function(e){return void 0===e&&(e={}),this.isValid?xe.create(this.loc.clone(e),e).formatDateTimeParts(this):[]},t.toISO=function(e){return void 0===e&&(e={}),this.isValid?this.toISODate(e)+"T"+this.toISOTime(e):null},t.toISODate=function(e){var t=(void 0===e?{}:e).format,n="basic"===(void 0===t?"extended":t)?"yyyyMMdd":"yyyy-MM-dd";return this.year>9999&&(n="+"+n),Qn(this,n)},t.toISOWeekDate=function(){return Qn(this,"kkkk-'W'WW-c")},t.toISOTime=function(e){var t=void 0===e?{}:e,n=t.suppressMilliseconds,r=void 0!==n&&n,i=t.suppressSeconds,o=void 0!==i&&i,a=t.includeOffset,u=void 0===a||a,s=t.includePrefix,c=void 0!==s&&s,l=t.format;return Kn(this,{suppressSeconds:o,suppressMilliseconds:r,includeOffset:u,includePrefix:c,format:void 0===l?"extended":l})},t.toRFC2822=function(){return Qn(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)},t.toHTTP=function(){return Qn(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")},t.toSQLDate=function(){return Qn(this,"yyyy-MM-dd")},t.toSQLTime=function(e){var t=void 0===e?{}:e,n=t.includeOffset,r=void 0===n||n,i=t.includeZone;return Kn(this,{includeOffset:r,includeZone:void 0!==i&&i,spaceZone:!0})},t.toSQL=function(e){return void 0===e&&(e={}),this.isValid?this.toSQLDate()+" "+this.toSQLTime(e):null},t.toString=function(){return this.isValid?this.toISO():"Invalid DateTime"},t.valueOf=function(){return this.toMillis()},t.toMillis=function(){return this.isValid?this.ts:NaN},t.toSeconds=function(){return this.isValid?this.ts/1e3:NaN},t.toJSON=function(){return this.toISO()},t.toBSON=function(){return this.toJSDate()},t.toObject=function(e){if(void 0===e&&(e={}),!this.isValid)return{};var t=Object.assign({},this.c);return e.includeConfig&&(t.outputCalendar=this.outputCalendar,t.numberingSystem=this.loc.numberingSystem,t.locale=this.loc.locale),t},t.toJSDate=function(){return new Date(this.isValid?this.ts:NaN)},t.diff=function(e,t,n){if(void 0===t&&(t="milliseconds"),void 0===n&&(n={}),!this.isValid||!e.isValid)return an.invalid(this.invalid||e.invalid,"created by diffing an invalid DateTime");var r,i=Object.assign({locale:this.locale,numberingSystem:this.numberingSystem},n),o=(r=t,Array.isArray(r)?r:[r]).map(an.normalizeUnit),a=e.valueOf()>this.valueOf(),u=hn(a?this:e,a?e:this,o,i);return a?u.negate():u},t.diffNow=function(t,n){return void 0===t&&(t="milliseconds"),void 0===n&&(n={}),this.diff(e.now(),t,n)},t.until=function(e){return this.isValid?ln.fromDateTimes(this,e):this},t.hasSame=function(e,t){if(!this.isValid)return!1;var n=e.valueOf(),r=this.setZone(e.zone,{keepLocalTime:!0});return r.startOf(t)<=n&&n<=r.endOf(t)},t.equals=function(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)},t.toRelative=function(t){if(void 0===t&&(t={}),!this.isValid)return null;var n=t.base||e.fromObject({zone:this.zone}),r=t.padding?thisthis.set({month:1}).offset||this.offset>this.set({month:5}).offset)}},{key:"isInLeapYear",get:function(){return re(this.year)}},{key:"daysInMonth",get:function(){return oe(this.year,this.month)}},{key:"daysInYear",get:function(){return this.isValid?ie(this.year):NaN}},{key:"weeksInWeekYear",get:function(){return this.isValid?ue(this.weekYear):NaN}}],[{key:"DATE_SHORT",get:function(){return b}},{key:"DATE_MED",get:function(){return O}},{key:"DATE_MED_WITH_WEEKDAY",get:function(){return S}},{key:"DATE_FULL",get:function(){return T}},{key:"DATE_HUGE",get:function(){return M}},{key:"TIME_SIMPLE",get:function(){return N}},{key:"TIME_WITH_SECONDS",get:function(){return E}},{key:"TIME_WITH_SHORT_OFFSET",get:function(){return D}},{key:"TIME_WITH_LONG_OFFSET",get:function(){return I}},{key:"TIME_24_SIMPLE",get:function(){return V}},{key:"TIME_24_WITH_SECONDS",get:function(){return L}},{key:"TIME_24_WITH_SHORT_OFFSET",get:function(){return x}},{key:"TIME_24_WITH_LONG_OFFSET",get:function(){return C}},{key:"DATETIME_SHORT",get:function(){return F}},{key:"DATETIME_SHORT_WITH_SECONDS",get:function(){return Z}},{key:"DATETIME_MED",get:function(){return j}},{key:"DATETIME_MED_WITH_SECONDS",get:function(){return A}},{key:"DATETIME_MED_WITH_WEEKDAY",get:function(){return z}},{key:"DATETIME_FULL",get:function(){return _}},{key:"DATETIME_FULL_WITH_SECONDS",get:function(){return q}},{key:"DATETIME_HUGE",get:function(){return H}},{key:"DATETIME_HUGE_WITH_SECONDS",get:function(){return U}}]),e}();function cr(e){if(sr.isDateTime(e))return e;if(e&&e.valueOf&&P(e.valueOf()))return sr.fromJSDate(e);if(e&&"object"==typeof e)return sr.fromObject(e);throw new v("Unknown datetime argument: "+e+", of type "+typeof e)}return e.DateTime=sr,e.Duration=an,e.FixedOffsetZone=Re,e.IANAZone=He,e.Info=fn,e.Interval=ln,e.InvalidZone=Pe,e.LocalZone=je,e.Settings=Ke,e.VERSION="1.27.0",e.Zone=Fe,e}({}); \ No newline at end of file diff --git a/web/static/webfonts/fa-brands-400.eot b/web/static/webfonts/fa-brands-400.eot new file mode 100644 index 0000000..e7cb0e5 Binary files /dev/null and b/web/static/webfonts/fa-brands-400.eot differ diff --git a/web/static/webfonts/fa-brands-400.svg b/web/static/webfonts/fa-brands-400.svg new file mode 100644 index 0000000..72da814 --- /dev/null +++ b/web/static/webfonts/fa-brands-400.svg @@ -0,0 +1,3633 @@ + + + + + +Created by FontForge 20190801 at Thu Jun 18 14:51:46 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/static/webfonts/fa-brands-400.ttf b/web/static/webfonts/fa-brands-400.ttf new file mode 100644 index 0000000..5fa03ba Binary files /dev/null and b/web/static/webfonts/fa-brands-400.ttf differ diff --git a/web/static/webfonts/fa-brands-400.woff b/web/static/webfonts/fa-brands-400.woff new file mode 100644 index 0000000..5bbf634 Binary files /dev/null and b/web/static/webfonts/fa-brands-400.woff differ diff --git a/web/static/webfonts/fa-brands-400.woff2 b/web/static/webfonts/fa-brands-400.woff2 new file mode 100644 index 0000000..29ffa3e Binary files /dev/null and b/web/static/webfonts/fa-brands-400.woff2 differ diff --git a/web/static/webfonts/fa-duotone-900.eot b/web/static/webfonts/fa-duotone-900.eot new file mode 100644 index 0000000..07ebaf9 Binary files /dev/null and b/web/static/webfonts/fa-duotone-900.eot differ diff --git a/web/static/webfonts/fa-duotone-900.svg b/web/static/webfonts/fa-duotone-900.svg new file mode 100644 index 0000000..a69e329 --- /dev/null +++ b/web/static/webfonts/fa-duotone-900.svg @@ -0,0 +1,15055 @@ + + + + + +Created by FontForge 20190801 at Thu Jun 18 14:51:46 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/static/webfonts/fa-duotone-900.ttf b/web/static/webfonts/fa-duotone-900.ttf new file mode 100644 index 0000000..75c58d9 Binary files /dev/null and b/web/static/webfonts/fa-duotone-900.ttf differ diff --git a/web/static/webfonts/fa-duotone-900.woff b/web/static/webfonts/fa-duotone-900.woff new file mode 100644 index 0000000..308dbd3 Binary files /dev/null and b/web/static/webfonts/fa-duotone-900.woff differ diff --git a/web/static/webfonts/fa-duotone-900.woff2 b/web/static/webfonts/fa-duotone-900.woff2 new file mode 100644 index 0000000..329fe2f Binary files /dev/null and b/web/static/webfonts/fa-duotone-900.woff2 differ diff --git a/web/static/webfonts/fa-light-300.eot b/web/static/webfonts/fa-light-300.eot new file mode 100644 index 0000000..4871cc1 Binary files /dev/null and b/web/static/webfonts/fa-light-300.eot differ diff --git a/web/static/webfonts/fa-light-300.svg b/web/static/webfonts/fa-light-300.svg new file mode 100644 index 0000000..66b9298 --- /dev/null +++ b/web/static/webfonts/fa-light-300.svg @@ -0,0 +1,12330 @@ + + + + + +Created by FontForge 20190801 at Thu Jun 18 14:51:46 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/static/webfonts/fa-light-300.ttf b/web/static/webfonts/fa-light-300.ttf new file mode 100644 index 0000000..83a106e Binary files /dev/null and b/web/static/webfonts/fa-light-300.ttf differ diff --git a/web/static/webfonts/fa-light-300.woff b/web/static/webfonts/fa-light-300.woff new file mode 100644 index 0000000..62df71d Binary files /dev/null and b/web/static/webfonts/fa-light-300.woff differ diff --git a/web/static/webfonts/fa-light-300.woff2 b/web/static/webfonts/fa-light-300.woff2 new file mode 100644 index 0000000..8739f4d Binary files /dev/null and b/web/static/webfonts/fa-light-300.woff2 differ diff --git a/web/static/webfonts/fa-regular-400.eot b/web/static/webfonts/fa-regular-400.eot new file mode 100644 index 0000000..eed79fc Binary files /dev/null and b/web/static/webfonts/fa-regular-400.eot differ diff --git a/web/static/webfonts/fa-regular-400.svg b/web/static/webfonts/fa-regular-400.svg new file mode 100644 index 0000000..d2c8a75 --- /dev/null +++ b/web/static/webfonts/fa-regular-400.svg @@ -0,0 +1,11256 @@ + + + + + +Created by FontForge 20190801 at Thu Jun 18 14:51:46 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/static/webfonts/fa-regular-400.ttf b/web/static/webfonts/fa-regular-400.ttf new file mode 100644 index 0000000..fe9ad2f Binary files /dev/null and b/web/static/webfonts/fa-regular-400.ttf differ diff --git a/web/static/webfonts/fa-regular-400.woff b/web/static/webfonts/fa-regular-400.woff new file mode 100644 index 0000000..e23b8e4 Binary files /dev/null and b/web/static/webfonts/fa-regular-400.woff differ diff --git a/web/static/webfonts/fa-regular-400.woff2 b/web/static/webfonts/fa-regular-400.woff2 new file mode 100644 index 0000000..6c6fbc7 Binary files /dev/null and b/web/static/webfonts/fa-regular-400.woff2 differ diff --git a/web/static/webfonts/fa-solid-900.eot b/web/static/webfonts/fa-solid-900.eot new file mode 100644 index 0000000..93d0af2 Binary files /dev/null and b/web/static/webfonts/fa-solid-900.eot differ diff --git a/web/static/webfonts/fa-solid-900.svg b/web/static/webfonts/fa-solid-900.svg new file mode 100644 index 0000000..16543ea --- /dev/null +++ b/web/static/webfonts/fa-solid-900.svg @@ -0,0 +1,9588 @@ + + + + + +Created by FontForge 20190801 at Thu Jun 18 14:51:46 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/static/webfonts/fa-solid-900.ttf b/web/static/webfonts/fa-solid-900.ttf new file mode 100644 index 0000000..d2ba1b9 Binary files /dev/null and b/web/static/webfonts/fa-solid-900.ttf differ diff --git a/web/static/webfonts/fa-solid-900.woff b/web/static/webfonts/fa-solid-900.woff new file mode 100644 index 0000000..042fb91 Binary files /dev/null and b/web/static/webfonts/fa-solid-900.woff differ diff --git a/web/static/webfonts/fa-solid-900.woff2 b/web/static/webfonts/fa-solid-900.woff2 new file mode 100644 index 0000000..49ce8ba Binary files /dev/null and b/web/static/webfonts/fa-solid-900.woff2 differ diff --git a/web/templates/base.html.tera b/web/templates/base.html.tera new file mode 100644 index 0000000..3af2575 --- /dev/null +++ b/web/templates/base.html.tera @@ -0,0 +1,192 @@ + +{% block init %} +{% endblock %} + + + + + + + + + + + + + + + + + Reminder Bot | {{ title }} + + + + + + + + + + {% if flashed_message %} +
+ {{ flashed_message }} +
+ {% endif %} + + + + {% if not hide_title_block %} +
+
+
+

{{ page_title }}

+

{{ page_subtitle }} + {% if page_emoji %} + + {% endif %} +

+
+
+ + {% if show_invite %} + + {% elif show_contact %} + + {% elif show_login %} + + {% endif %} +
+ + + + + + + {% endif %} + + {% block content %} + {% endblock %} + +
+ + + + + diff --git a/web/templates/cookies.html.tera b/web/templates/cookies.html.tera new file mode 100644 index 0000000..4d6912b --- /dev/null +++ b/web/templates/cookies.html.tera @@ -0,0 +1,61 @@ +{% extends "base" %} + +{% block init %} + {% set title = "Cookies" %} + + {% set page_title = "Cookies" %} + {% set page_subtitle = "Data this website stores on your computer" %} + {% set page_emoji = "fa-gingerbread-man" %} +{% endblock %} + +{% block content %} + +
+
+

User Data

+

+ This website uses some necessary cookies and session data to operate. None of this can be disabled, since + it is all necessary for the site to function. However, it is worth mentioning that all of + this data is first-party only, i.e we use no tracking scripts like Google Analytics, and + no adverts are served on this site. +

+
+
+ +
+
+

Cookies

+

+ Cookies are data that are persistent between browser restarts. Cookies are read and written by the website + running on your computer, not by our server. +
+ Cookies store information on your preferences, including if you prefer AM/PM or 24 hour + clock, if you have closed the cookie popup before, and what + order you have the servers in on the dashboard. +

+
+
+ +
+
+

Session Storage

+

+ Session data are data that is stored just for the active browser session. Session storage is read and + written by our server and cannot be modified on your computer. +
+ Session data stores an access token provided by Discord, used to retrieve information + about your account. Also stored is an internal ID for use with our API. +

+
+
+ +
+
+

How Can We Trust You?

+

+ Feel free to audit this website. Go to our GitHub to get started, or just press F12 +

+
+
+ +{% endblock %} diff --git a/web/templates/dashboard.html.tera b/web/templates/dashboard.html.tera new file mode 100644 index 0000000..19c95dc --- /dev/null +++ b/web/templates/dashboard.html.tera @@ -0,0 +1,805 @@ + + + + + + + + + + + + + + + + + + Reminder Bot | Dashboard + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + +
+
+ +
+ Reminder bot logo +
+
+ + + + + + +
+ +
+ +
+ Reminder bot logo +
+
+ + + + + + +
+ + +
+

+
+
+

Welcome!

+

Select an option from the side to get started

+

Press the to get started

+
+
+ + +
+ +
+ + + + + + + + + + + + + + diff --git a/web/templates/errors/401.html.tera b/web/templates/errors/401.html.tera new file mode 100644 index 0000000..a300839 --- /dev/null +++ b/web/templates/errors/401.html.tera @@ -0,0 +1,10 @@ +{% extends "base" %} + +{% block init %} + {% set title = "401 Not Authorized" %} + + {% set show_login = True %} + + {% set page_title = "Not Authorized" %} + {% set page_subtitle = "You must be logged in to access this page, if it exists." %} +{% endblock %} diff --git a/web/templates/errors/403.html.tera b/web/templates/errors/403.html.tera new file mode 100644 index 0000000..9ff0157 --- /dev/null +++ b/web/templates/errors/403.html.tera @@ -0,0 +1,10 @@ +{% extends "base" %} + +{% block init %} + {% set title = "403 Forbidden" %} + + {% set show_contact = True %} + + {% set page_title = "Forbidden" %} + {% set page_subtitle = "You currently cannot access this page, if it exists. Sorry." %} +{% endblock %} diff --git a/web/templates/errors/404.html.tera b/web/templates/errors/404.html.tera new file mode 100644 index 0000000..c163e34 --- /dev/null +++ b/web/templates/errors/404.html.tera @@ -0,0 +1,10 @@ +{% extends "base" %} + +{% block init %} + {% set title = "404 File Not Found" %} + + {% set show_contact = True %} + + {% set page_title = "File Not Found" %} + {% set page_subtitle = "This page does not exist. Sorry." %} +{% endblock %} diff --git a/web/templates/errors/500.html.tera b/web/templates/errors/500.html.tera new file mode 100644 index 0000000..0bae3b5 --- /dev/null +++ b/web/templates/errors/500.html.tera @@ -0,0 +1,9 @@ +{% extends "base" %} + +{% block init %} + {% set title = "500 Internal Server Error" %} + {% set show_contact = True %} + + {% set page_title = "An Error Has Occurred" %} + {% set page_subtitle = "A server error has occurred. Please contact me and I will try and resolve this" %} +{% endblock %} diff --git a/web/templates/help.html.tera b/web/templates/help.html.tera new file mode 100644 index 0000000..b599c1e --- /dev/null +++ b/web/templates/help.html.tera @@ -0,0 +1,14 @@ +{% extends "base" %} + +{% set title = "Commands" %} +{% set page_title = "Commands" %} + +{% block content %} + +
+
+

Information Commands

+
+
+ +{% endblock %} diff --git a/web/templates/index.html.tera b/web/templates/index.html.tera new file mode 100644 index 0000000..f760da6 --- /dev/null +++ b/web/templates/index.html.tera @@ -0,0 +1,65 @@ +{% extends "base" %} + +{% block init %} + {% set title = "Home" %} + + {% set page_title = "Reminder Bot" %} + {% set page_subtitle = "Powerful Discord Reminders" %} + {% set page_emoji = "fa-hourglass-half" %} + {% set show_invite = true %} +{% endblock %} + +{% block content %} + +
+
+
+
+

Slash-command Ready

+

Set reminders easily and quickly from anywhere

+
+ Discord slash commands demonstration +
+
+
+
+
+

Advanced Options

+

Decorate your announcements with our web dashboard

+
+ Discord slash commands demonstration +
+
+
+
+
+

Unlimited Reminders

+

Never forget a thing

+
+
+

Repeating Reminders

+

Available to Patreon subscribers at $2/month

+
+
+
+
+ +
+
+
+

Ready to go?

+

+ Add the bot to get started! +

+
+
+ +
+ +{% endblock %} diff --git a/web/templates/privacy.html.tera b/web/templates/privacy.html.tera new file mode 100644 index 0000000..d02cf1b --- /dev/null +++ b/web/templates/privacy.html.tera @@ -0,0 +1,21 @@ +{% extends "base" %} + +{% block init %} + {% set title = "Privacy Policy" %} + + {% set page_title = "Privacy Policy" %} + {% set page_subtitle = "" %} + {% set page_emoji = "" %} +{% endblock %} + +{% block content %} + +
+
+

Privacy Policy

+

+

+
+
+ +{% endblock %} diff --git a/web/templates/reminder_dashboard/guild_reminder.html.tera b/web/templates/reminder_dashboard/guild_reminder.html.tera new file mode 100644 index 0000000..5307c7d --- /dev/null +++ b/web/templates/reminder_dashboard/guild_reminder.html.tera @@ -0,0 +1,191 @@ +
+
+
+
+
+

+ + + +

+
+
+
+
+ + +
+ + + +
+
+
+
+
+

+ + + +

+
+ +
+ + +
+
+ + + +
+ + +
+ +
+
+ + + + + +
+
+
+ +
+

+ + Square thumbnail embedded image + +

+
+
+ +

+ + Large embedded image + +

+ + +
+
+
+
+
+
+
+
+
+ + +
+
+ +
+ +
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + +

+ Set Embed Color +

+
+ +
+ +

+ Attach File + + + +

+
+
+ +

+ Set Interval +

+
+ + {% if creating %} + + + + {% else %} + + + + {% endif %} +
+
diff --git a/web/templates/reminder_dashboard/personal_reminder.html.tera b/web/templates/reminder_dashboard/personal_reminder.html.tera new file mode 100644 index 0000000..98f56ec --- /dev/null +++ b/web/templates/reminder_dashboard/personal_reminder.html.tera @@ -0,0 +1,186 @@ +
+
+
+

+ reminder bot icon +

+
+
+
+
+
+ Reminder Bot - + + + + + +
+
+
+ + + + + + +
+ Reminder Bot +
+
+ + + +
+
+
+
+
+

+ + + +

+
+ +
+ + +
+
+ + + +
+ + +
+ +
+
+ + + + + +
+
+
+ +
+

+ + + +

+
+
+ +

+ + + +

+ + +
+
+ + +
+
+
diff --git a/web/templates/reminder_dashboard/reminder_dashboard.html.tera b/web/templates/reminder_dashboard/reminder_dashboard.html.tera new file mode 100644 index 0000000..8fe976e --- /dev/null +++ b/web/templates/reminder_dashboard/reminder_dashboard.html.tera @@ -0,0 +1,22 @@ +
+
+ +
+ {% set creating = true %} + {% include "reminder_dashboard/guild_reminder" %} +
+ +
+ + + + +
+ +
+ +
+
+
diff --git a/web/templates/reminder_dashboard/reminder_dashboard_personal.html.tera b/web/templates/reminder_dashboard/reminder_dashboard_personal.html.tera new file mode 100644 index 0000000..ddccb4d --- /dev/null +++ b/web/templates/reminder_dashboard/reminder_dashboard_personal.html.tera @@ -0,0 +1,23 @@ +
+
+

+ Message Designer +

+ {% include "reminder_dashboard/personal_reminder" %} +

+ Most fields are optional. Use 'Preview Mode' to see how the reminder will appear in Discord. + Scaling is not exact. +

+ +
+

+ + Create + +

+
+
+
+ +
+
diff --git a/web/templates/return.html.tera b/web/templates/return.html.tera new file mode 100644 index 0000000..39b26b5 --- /dev/null +++ b/web/templates/return.html.tera @@ -0,0 +1,13 @@ + + + + + Reminder Bot | Redirecting... + + + Press here if you aren't redirected + + + diff --git a/web/templates/terms.html.tera b/web/templates/terms.html.tera new file mode 100644 index 0000000..e34f2d4 --- /dev/null +++ b/web/templates/terms.html.tera @@ -0,0 +1,55 @@ +{% extends "base" %} + +{% block init %} + {% set title = "Terms of Service" %} + + {% set page_title = "Terms of Service" %} + {% set page_subtitle = "" %} + {% set page_emoji = "" %} +{% endblock %} + +{% block content %} + +
+
+

Outline

+

+ The Terms of Service apply whenever you use Reminder Bot and the + JellyWX's Home Discord server. +
+
+ Violating the Terms of Service may result in receiving a permanent ban from the Discord server, + permanent restriction on your usage of Reminder Bot, or removal of some or all of your content on + Reminder Bot or the Discord server. +
+
+ The Terms of Service may be updated at any time, and should be considered a guideline for appropriate + behaviour. +

+
+
+ +
+
+

Reminder Bot

+
    +
  • Reasonably disclose potential exploits or bugs to me by email or by Discord private message
  • +
  • Do not use the bot to harass other Discord users
  • +
  • Do not use the bot to send more than 30 messages during a 60 second period
  • +
+
+
+ +
+
+

JellyWX's Home

+
    +
  • Do not discuss politics, harass other users, or use language intended to upset other users
  • +
  • Do not send malicious links
  • +
  • Do not advertise
  • +
  • Do not send unwarranted direct messages
  • +
+
+
+ +{% endblock %}