diff --git a/requirements.in b/requirements.in index 633b8e9a..d98053e0 100644 --- a/requirements.in +++ b/requirements.in @@ -1,17 +1,10 @@ -urllib3==1.26.7 -requests==2.28.1 PyNaCl==1.5.0 -gevent==21.12.0 -Flask==2.1.3 PySocks==1.7.1 stem==1.8.0 -deadsimplekv==0.3.2 unpaddedbase32==0.2.0 -toomanyobjs==1.1.0 niceware==0.2.1 psutil==5.9.1 filenuke==0.0.0 -watchdog==2.1.9 ujson==5.4.0 cffi==1.15.1 onionrblocks==7.0.0 diff --git a/requirements.txt b/requirements.txt index 361a67b0..338dbc2c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,36 +4,14 @@ # # pip-compile # -certifi==2018.11.29 - # via requests cffi==1.15.1 # via # -r requirements.in # pynacl -charset-normalizer==2.0.9 - # via requests -click==8.0.3 - # via flask -deadsimplekv==0.3.2 - # via -r requirements.in filenuke==0.0.0 # via -r requirements.in -flask==2.1.3 - # via -r requirements.in -gevent==21.12.0 - # via -r requirements.in -greenlet==1.1.2 - # via gevent -idna==2.7 - # via requests -itsdangerous==2.0.1 - # via flask -jinja2==3.0.3 - # via flask kasten==3.0.0 # via onionrblocks -markupsafe==2.0.1 - # via jinja2 mimcvdf==1.2.1 # via kasten msgpack==1.0.3 @@ -54,28 +32,9 @@ pynacl==1.5.0 # onionrblocks pysocks==1.7.1 # via -r requirements.in -requests==2.28.1 - # via -r requirements.in stem==1.8.0 # via -r requirements.in -toomanyobjs==1.1.0 - # via -r requirements.in ujson==5.4.0 # via -r requirements.in unpaddedbase32==0.2.0 # via -r requirements.in -urllib3==1.26.7 - # via - # -r requirements.in - # requests -watchdog==2.1.9 - # via -r requirements.in -werkzeug==2.0.2 - # via flask -zope-event==4.4 - # via gevent -zope-interface==5.1.0 - # via gevent - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/src/__init__.py b/src/__init__.py index 32cf8455..85faccf5 100755 --- a/src/__init__.py +++ b/src/__init__.py @@ -46,14 +46,6 @@ locale.setlocale(locale.LC_ALL, '') # noqa ran_as_script = False if __name__ == "__main__": ran_as_script = True -# Import standard libraries - -try: - from onionrutils import dependencycheck # noqa -except ModuleNotFoundError as e: - print('Missing requirement: ' + str(e) + ' installed') - sys.exit(1) - # Import 3rd party libraries from filenuke import nuke # noqa diff --git a/src/apiservers/README.md b/src/apiservers/README.md deleted file mode 100644 index 3a439ac3..00000000 --- a/src/apiservers/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# API Servers - -Contains the WSGI servers Onionr uses for remote peer communication and local daemon control - -## Files - -* \_\_init\_\_.py: Exposes the server classes -* private: Contains the client API (the server used to interact with the local Onionr daemon, and view the web UI) -* public: Contains the public API (the server used by remote peers to talk to our daemon) \ No newline at end of file diff --git a/src/apiservers/__init__.py b/src/apiservers/__init__.py deleted file mode 100755 index 6b78e13b..00000000 --- a/src/apiservers/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -"""Flask WSGI apps for the public and private API servers. - -Public is net-facing server meant for other nodes -Private is meant for controlling and accessing this node -""" - -from . import private - -private_api = private.private_api diff --git a/src/apiservers/private/README.md b/src/apiservers/private/README.md deleted file mode 100644 index 95b785eb..00000000 --- a/src/apiservers/private/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Private API Server - -Private API server, used to access the web interface locally and control Onionr - -## Files - -* \_\_init\_\_.py: Sets up the server and a few misc functions -* register_private_blueprints.py: Adds in flask blueprints for various sub-APIs \ No newline at end of file diff --git a/src/apiservers/private/__init__.py b/src/apiservers/private/__init__.py deleted file mode 100644 index 852d02ae..00000000 --- a/src/apiservers/private/__init__.py +++ /dev/null @@ -1,121 +0,0 @@ -"""Onionr - Private P2P Communication. - -This file handles all incoming http requests to the client, using Flask -""" -from typing import Dict -from typing import Set -from typing import TYPE_CHECKING -import hmac - -import flask -from gevent.pywsgi import WSGIServer - -from onionrutils import epoch -import httpapi -from filepaths import private_API_host_file -import logger - -from onionrutils import waitforsetvar -from . import register_private_blueprints -import config - -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - - -class PrivateAPI: - """Client HTTP api for controlling onionr and using UI.""" - - callbacks: Dict[str, Dict] = {'public': {}, 'private': {}} - - def __init__(self): - """Initialize the api server, preping variables for later use. - - This initialization defines all of the API entry points - and handlers for the endpoints and errors - This also saves the used host (random localhost IP address) - to the data folder in host.txt - """ - self.config = config - - self.startTime = epoch.get_epoch() - app = flask.Flask(__name__) - - - self.httpServer = '' - - self.queueResponse = {} - register_private_blueprints.register_private_blueprints(self, app) - httpapi.load_plugin_blueprints(app) - self.app = app - - def start(self): - """Start client gevent API web server with flask client app.""" - - fd_handler = httpapi.fdsafehandler.FDSafeHandler - - self.clientToken = config.get('client.webpassword') - if config.get('general.bind_address'): - with open(private_API_host_file, 'w') as bindFile: - bindFile.write(config.get('general.bind_address')) - self.host = config.get('general.bind_address') - else: - self.host = httpapi.apiutils.setbindip.set_bind_IP( - private_API_host_file) - bind_port = int(config.get('client.client.port', 59496)) - self.bindPort = bind_port - - self.httpServer = WSGIServer((self.host, self.bindPort), - self.app, log=None, - handler_class=fd_handler) - logger.info(f'Running API on {self.host}:{self.bindPort}', terminal=True) - self.httpServer.serve_forever() - - def setPublicAPIInstance(self, inst): - """Dynamically set public API instance.""" - self.publicAPI = inst - - def validateToken(self, token): - """Validate that the client token matches the given token. - - Used to prevent CSRF and other attacks. - """ - if not self.clientToken: - logger.error("client password needs to be set") - return False - try: - return hmac.compare_digest(self.clientToken, token) - except TypeError: - return False - - def getUptime(self) -> int: - """Safely wait for uptime to be set and return it.""" - while True: - try: - return epoch.get_epoch() - self.startTime - except (AttributeError, NameError): - # Don't error on race condition with startup - pass - - def getBlockData(self, bHash, decrypt=False, raw=False, - headerOnly=False) -> bytes: - """Returns block data bytes.""" - return self.get_block_data.get_block_data(bHash, - decrypt=decrypt, - raw=raw, - headerOnly=headerOnly) - - -private_api = PrivateAPI() \ No newline at end of file diff --git a/src/apiservers/private/register_private_blueprints.py b/src/apiservers/private/register_private_blueprints.py deleted file mode 100644 index 41e93b1b..00000000 --- a/src/apiservers/private/register_private_blueprints.py +++ /dev/null @@ -1,46 +0,0 @@ -"""Onionr - Private P2P Communication. - -This file registers blueprints for the private api server -""" -from threading import Thread -from gevent import sleep - -from httpapi import security, friendsapi, configapi -from httpapi import miscclientapi, apiutils -from httpapi import themeapi -from httpapi import fileoffsetreader -from httpapi.sse.private import private_sse_blueprint -from httpapi import addblock - -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - - -def register_private_blueprints(private_api, app): - """Register private API plask blueprints.""" - app.register_blueprint(security.client.ClientAPISecurity( - private_api).client_api_security_bp) - app.register_blueprint(friendsapi.friends) - app.register_blueprint(configapi.config_BP) - app.register_blueprint(miscclientapi.endpoints.PrivateEndpoints( - private_api).private_endpoints_bp) - app.register_blueprint(apiutils.shutdown.shutdown_bp) - app.register_blueprint(miscclientapi.staticfiles.static_files_bp) - app.register_blueprint(themeapi.theme_blueprint) - app.register_blueprint(private_sse_blueprint) - app.register_blueprint(fileoffsetreader.offset_reader_api) - app.register_blueprint(addblock.blockapi_blueprint) - - return app diff --git a/src/filepaths/__init__.py b/src/filepaths/__init__.py index ea541f40..919e6d8a 100644 --- a/src/filepaths/__init__.py +++ b/src/filepaths/__init__.py @@ -20,6 +20,7 @@ upload_list = home + 'upload-list.json' config_file = home + 'config.json' daemon_mark_file = home + '/daemon-true.txt' lock_file = home + 'onionr.lock' +pid_file = home + 'onionr.pid' site_cache = home + 'onionr-sites.txt' diff --git a/src/httpapi/README.md b/src/httpapi/README.md deleted file mode 100755 index a4cf7eeb..00000000 --- a/src/httpapi/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# httpapi - -The httpapi contains collections of endpoints for the client and public API servers. - -## Files: - -configapi: manage onionr configuration from the client http api - -friendsapi: add, remove and list friends from the client http api - -miscpublicapi: misculanious onionr network interaction from the **public** httpapi, such as announcements, block fetching and uploading. - -profilesapi: work in progress in returning a profile page for an Onionr user \ No newline at end of file diff --git a/src/httpapi/__init__.py b/src/httpapi/__init__.py deleted file mode 100755 index 8f488317..00000000 --- a/src/httpapi/__init__.py +++ /dev/null @@ -1,36 +0,0 @@ -""" -Onionr - Private P2P Communication - -Register plugins flask blueprints for the client http server -""" -import onionrplugins -import config -from .fdsafehandler import FDSafeHandler -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - - -def load_plugin_blueprints(flaskapp, blueprint: str = 'flask_blueprint'): - """Iterate enabled plugins and load any http endpoints they have""" - config.reload() - disabled = config.get('plugins.disabled', []) - for plugin in onionrplugins.get_enabled_plugins(): - if plugin in disabled: - continue - plugin = onionrplugins.get_plugin(plugin) - try: - flaskapp.register_blueprint(getattr(plugin, blueprint)) - except AttributeError: - pass diff --git a/src/httpapi/addblock/__init__.py b/src/httpapi/addblock/__init__.py deleted file mode 100644 index 98eb355d..00000000 --- a/src/httpapi/addblock/__init__.py +++ /dev/null @@ -1,45 +0,0 @@ -"""Onionr - Private P2P Communication. - -Serialized APIs -""" - -from asyncio.log import logger -import secrets -from flask import Blueprint, Response, request - -from onionrblocks import Block -import blockdb - -import logger -from gossip import blockqueues -from gossip.constants import BLOCK_ID_SIZE - -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" -blockapi_blueprint = Blueprint('blockapi', __name__) - - - -# Add a block that we generated (or received from a transport like LAN/sneakernet) -@blockapi_blueprint.route('/addvdfblock', methods=['POST']) -def block_serialized(): - stream_to_use = secrets.randbits(1) - req_data = request.data - block_id = req_data[:BLOCK_ID_SIZE] - block_data = req_data[BLOCK_ID_SIZE:] - #blockdb.add_block_to_db(Block(block_id, block_data, auto_verify=False)) - blockqueues.gossip_block_queues[stream_to_use].put( - Block(block_id, block_data, auto_verify=False), block=False) - return "ok" diff --git a/src/httpapi/apiutils/__init__.py b/src/httpapi/apiutils/__init__.py deleted file mode 100644 index d8c4f227..00000000 --- a/src/httpapi/apiutils/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import shutdown, setbindip \ No newline at end of file diff --git a/src/httpapi/apiutils/setbindip.py b/src/httpapi/apiutils/setbindip.py deleted file mode 100644 index adcffa59..00000000 --- a/src/httpapi/apiutils/setbindip.py +++ /dev/null @@ -1,42 +0,0 @@ -import gevent -from gevent import socket, sleep -import secrets, random -import config, logger -import os - -# Hacky monkey patch so we can bind random localhosts without gevent trying to switch with an empty hub -socket.getfqdn = lambda n: n - -def _get_acceptable_random_number()->int: - """Return a cryptographically random number in the inclusive range (1, 255)""" - number = 0 - while number == 0: - number = secrets.randbelow(0xFF) - return number - -def set_bind_IP(filePath=''): - '''Set a random localhost IP to a specified file (intended for private or public API localhost IPs)''' - if config.get('general.random_bind_ip', True): - hostOctets = [] - # Build the random localhost address - for i in range(3): - hostOctets.append(str(_get_acceptable_random_number())) - hostOctets = ['127'] + hostOctets - # Convert the localhost address to a normal string address - data = '.'.join(hostOctets) - - # Try to bind IP. Some platforms like Mac block non normal 127.x.x.x - s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - try: - s.bind((data, 0)) - except OSError: - # if mac/non-bindable, show warning and default to 127.0.0.1 - logger.warn('Your platform appears to not support random local host addresses 127.x.x.x. Falling back to 127.0.0.1.') - data = '127.0.0.1' - s.close() - else: - data = '127.0.0.1' - if filePath != '': - with open(filePath, 'w') as bindFile: - bindFile.write(data) - return data \ No newline at end of file diff --git a/src/httpapi/apiutils/shutdown.py b/src/httpapi/apiutils/shutdown.py deleted file mode 100644 index 9f96c1f9..00000000 --- a/src/httpapi/apiutils/shutdown.py +++ /dev/null @@ -1,30 +0,0 @@ -"""Onionr - Private P2P Communication. - -Shutdown the node either hard or cleanly -""" -from flask import Blueprint, Response -from flask import g -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - -shutdown_bp = Blueprint('shutdown', __name__) - - -def shutdown(client_api_inst): - try: - client_api_inst.httpServer.stop() - except AttributeError: - pass - return Response("bye") diff --git a/src/httpapi/configapi/__init__.py b/src/httpapi/configapi/__init__.py deleted file mode 100755 index 7b82ea8f..00000000 --- a/src/httpapi/configapi/__init__.py +++ /dev/null @@ -1,66 +0,0 @@ -""" - Onionr - Private P2P Communication - - This file handles configuration setting and getting from the HTTP API -""" -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" -from json import JSONDecodeError -import ujson as json -from flask import Blueprint, request, Response, abort - -import config, onionrutils - -from onionrutils.bytesconverter import bytes_to_str -config.reload() - -config_BP = Blueprint('config_BP', __name__) - -@config_BP.route('/config/get') -def get_all_config(): - """Simply return all configuration as JSON string""" - return Response(json.dumps(config.get_config(), indent=4, sort_keys=True)) - -@config_BP.route('/config/get/') -def get_by_key(key): - """Return a config setting by key""" - return Response(json.dumps(config.get(key))) - -@config_BP.route('/config/setall', methods=['POST']) -def set_all_config(): - """Overwrite existing JSON config with new JSON string""" - try: - new_config = request.get_json(force=True) - except JSONDecodeError: - abort(400) - else: - config.set_config(new_config) - config.save() - return Response('success') - -@config_BP.route('/config/set/', methods=['POST']) -def set_by_key(key): - """Overwrite/set only 1 config key""" - """ - { - 'data': data - } - """ - try: - data = json.loads(bytes_to_str(request.data)) - except (JSONDecodeError, KeyError): - abort(400) - config.set(key, data, True) - return Response('success') \ No newline at end of file diff --git a/src/httpapi/fdsafehandler.py b/src/httpapi/fdsafehandler.py deleted file mode 100644 index a9a9aed2..00000000 --- a/src/httpapi/fdsafehandler.py +++ /dev/null @@ -1,16 +0,0 @@ -from gevent.pywsgi import WSGIServer, WSGIHandler -from gevent import Timeout - - -class FDSafeHandler(WSGIHandler): - '''Our WSGI handler. Doesn't do much non-default except timeouts''' - def handle(self): - self.timeout = Timeout(120, Exception) - self.timeout.start() - try: - WSGIHandler.handle(self) - except Timeout as ex: - if ex is self.timeout: - pass - else: - raise diff --git a/src/httpapi/fileoffsetreader/__init__.py b/src/httpapi/fileoffsetreader/__init__.py deleted file mode 100644 index ab427d36..00000000 --- a/src/httpapi/fileoffsetreader/__init__.py +++ /dev/null @@ -1,30 +0,0 @@ -from os.path import exists, dirname - -import ujson -from flask import Blueprint, Response, request - -from utils.identifyhome import identify_home -from utils.readoffset import read_from_offset - -offset_reader_api = Blueprint('offsetreaderapi', __name__) - - -@offset_reader_api.route('/readfileoffset/') -def offset_reader_endpoint(name): - if not name[:-4].isalnum(): - return Response(400, "Path must be alphanumeric except for file ext") - - path = identify_home() + name - - if not exists(path): - return Response(404, "Path not found in Onionr data directory") - - offset = request.args.get('offset') - - if not offset: - offset = 0 - else: - offset = int(offset) - result = read_from_offset(path, offset)._asdict() - - return ujson.dumps(result, reject_bytes=False) diff --git a/src/httpapi/friendsapi/__init__.py b/src/httpapi/friendsapi/__init__.py deleted file mode 100755 index 8a089514..00000000 --- a/src/httpapi/friendsapi/__init__.py +++ /dev/null @@ -1,75 +0,0 @@ -"""Onionr - Private P2P Communication. - -This file creates http endpoints for friend management -""" -import ujson as json - -from onionrusers import contactmanager -from flask import Blueprint, Response, request, abort, redirect -from coredb import keydb -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" -friends = Blueprint('friends', __name__) - - -@friends.route('/friends/list') -def list_friends(): - pubkey_list = {} - friend_list = contactmanager.ContactManager.list_friends() - for friend in friend_list: - pubkey_list[friend.publicKey] = {'name': friend.get_info('name')} - return json.dumps(pubkey_list) - - -@friends.route('/friends/add/', methods=['POST']) -def add_friend(pubkey): - contactmanager.ContactManager(pubkey, saveUser=True).setTrust(1) - try: - return redirect(request.referrer + '#' + request.form['token']) - except TypeError: - return Response( - "Added, but referrer not set, cannot return to friends page") - - -@friends.route('/friends/remove/', methods=['POST']) -def remove_friend(pubkey): - contactmanager.ContactManager(pubkey).setTrust(0) - contactmanager.ContactManager(pubkey).delete_contact() - keydb.removekeys.remove_user(pubkey) - try: - return redirect(request.referrer + '#' + request.form['token']) - except TypeError: - return Response( - "Friend removed, but referrer not set, cannot return to page") - - -@friends.route('/friends/setinfo//', methods=['POST']) -def set_info(pubkey, key): - data = request.form['data'] - contactmanager.ContactManager(pubkey).set_info(key, data) - try: - return redirect(request.referrer + '#' + request.form['token']) - except TypeError: - return Response( - "Info set, but referrer not set, cannot return to friends page") - - -@friends.route('/friends/getinfo//') -def get_info(pubkey, key): - ret_data = contactmanager.ContactManager(pubkey).get_info(key) - if ret_data is None: - abort(404) - else: - return ret_data \ No newline at end of file diff --git a/src/httpapi/httpheaders.py b/src/httpapi/httpheaders.py deleted file mode 100755 index 097b8c40..00000000 --- a/src/httpapi/httpheaders.py +++ /dev/null @@ -1,35 +0,0 @@ -''' - Onionr - Private P2P Communication - - Set default onionr http headers -''' -''' - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -''' -FEATURE_POLICY = """vibrate; vr; webauthn; usb; sync-xhr; speaker; -picture-in-picture; payment; midi; microphone; magnetometer; gyroscope; -geolocation; fullscreen; encrypted-media; document-domain; -camera; accelerometer; ambient-light-sensor""".replace('\n', '') # have to remove \n for flask -def set_default_onionr_http_headers(flask_response): - '''Response headers''' - flask_response.headers['Content-Security-Policy'] = "default-src 'none'; style-src data: 'unsafe-inline'; img-src data:" - flask_response.headers['X-Frame-Options'] = 'deny' - flask_response.headers['X-Content-Type-Options'] = "nosniff" - flask_response.headers['Server'] = '' - flask_response.headers['Date'] = 'Thu, 1 Jan 1970 00:00:00 GMT' # Clock info is probably useful to attackers. Set to unix epoch. - flask_response.headers['Connection'] = "close" - flask_response.headers['Clear-Site-Data'] = '"cache", "cookies", "storage", "executionContexts"' - flask_response.headers['Feature-Policy'] = FEATURE_POLICY - flask_response.headers['Referrer-Policy'] = 'same-origin' - return flask_response \ No newline at end of file diff --git a/src/httpapi/miscclientapi/__init__.py b/src/httpapi/miscclientapi/__init__.py deleted file mode 100644 index 1d917684..00000000 --- a/src/httpapi/miscclientapi/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import staticfiles, endpoints \ No newline at end of file diff --git a/src/httpapi/miscclientapi/endpoints.py b/src/httpapi/miscclientapi/endpoints.py deleted file mode 100644 index f57bc2e1..00000000 --- a/src/httpapi/miscclientapi/endpoints.py +++ /dev/null @@ -1,111 +0,0 @@ -"""Onionr - Private P2P Communication. - -Misc client API endpoints too small to need their own file and that need access to the client api inst -""" -import os -import subprocess -import platform -from sys import stdout as sys_stdout - -from flask import Response, Blueprint, request, send_from_directory, abort -from flask import g -from gevent import sleep -import unpaddedbase32 - -from httpapi import apiutils -import onionrcrypto -import config -from onionrutils import mnemonickeys -from onionrutils import bytesconverter -import onionrvalues -from utils import reconstructhash -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - -pub_key = onionrcrypto.pub_key.replace('=', '') - -SCRIPT_NAME = os.path.dirname(os.path.realpath(__file__)) + \ - f'/../../../{onionrvalues.SCRIPT_NAME}' - - -class PrivateEndpoints: - def __init__(self, client_api): - private_endpoints_bp = Blueprint('privateendpoints', __name__) - self.private_endpoints_bp = private_endpoints_bp - - - @private_endpoints_bp.route('/www/', endpoint='www') - def wwwPublic(path): - if not config.get("www.private.run", True): - abort(403) - return send_from_directory(config.get('www.private.path', - 'static-data/www/private/'), path) - - @private_endpoints_bp.route('/getpid') - def get_pid(): - return Response(str(os.getpid())) - - @private_endpoints_bp.route('/isatty') - def get_is_atty(): - return Response(str(sys_stdout.isatty()).lower()) - - - @private_endpoints_bp.route('/ping') - def ping(): - # Used to check if client api is working - return Response("pong!") - - - @private_endpoints_bp.route('/shutdown') - def shutdown(): - return apiutils.shutdown.shutdown(client_api) - - @private_endpoints_bp.route('/restartclean') - def restart_clean(): - subprocess.Popen([SCRIPT_NAME, 'restart']) - return Response("bye") - - - @private_endpoints_bp.route('/getuptime') - def show_uptime(): - return Response(str(client_api.getUptime())) - - @private_endpoints_bp.route('/getActivePubkey') - def get_active_pubkey(): - return Response(pub_key) - - @private_endpoints_bp.route('/getHumanReadable') - def get_human_readable_default(): - return Response(mnemonickeys.get_human_readable_ID()) - - @private_endpoints_bp.route('/getHumanReadable/') - def get_human_readable(name): - name = unpaddedbase32.repad(bytesconverter.str_to_bytes(name)) - return Response(mnemonickeys.get_human_readable_ID(name)) - - @private_endpoints_bp.route('/getBase32FromHumanReadable/') - def get_base32_from_human_readable(words): - return Response( - bytesconverter.bytes_to_str(mnemonickeys.get_base32(words))) - - @private_endpoints_bp.route('/setonboarding', methods=['POST']) - def set_onboarding(): - return Response( - config.onboarding.set_config_from_onboarding(request.get_json())) - - @private_endpoints_bp.route('/os') - def get_os_system(): - return Response(platform.system().lower()) - diff --git a/src/httpapi/miscclientapi/staticfiles.py b/src/httpapi/miscclientapi/staticfiles.py deleted file mode 100644 index 4434e0ac..00000000 --- a/src/httpapi/miscclientapi/staticfiles.py +++ /dev/null @@ -1,80 +0,0 @@ -"""Onionr - Private P2P Communication - -Register static file routes -""" -import os -import mimetypes -from flask import Blueprint, send_from_directory -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - - -# Was having some mime type issues on windows, this appeared to fix it. -# we have no-sniff set, so if the mime types are invalid sripts can't load. -mimetypes.add_type('application/javascript', '.js') -mimetypes.add_type('text/css', '.css') - -static_files_bp = Blueprint('staticfiles', __name__) - -# should be set to onionr install directory from onionr startup -root = os.path.dirname(os.path.realpath(__file__)) + \ - '/../../../static-data/www/' - - -@static_files_bp.route('/onboarding/', endpoint='onboardingIndex') -def onboard(): - return send_from_directory(f'{root}onboarding/', "index.html") - - -@static_files_bp.route('/onboarding/', endpoint='onboarding') -def onboard_files(path): - return send_from_directory(f'{root}onboarding/', path) - - -@static_files_bp.route('/friends/', endpoint='friends') -def loadContacts(path): - return send_from_directory(root + 'friends/', path) - - -@static_files_bp.route('/friends/', endpoint='friendsindex') -def loadContacts(): - return send_from_directory(root + 'friends/', 'index.html') - - -@static_files_bp.route('/profiles/', endpoint='profiles') -def loadContacts(path): - return send_from_directory(root + 'profiles/', path) - - -@static_files_bp.route('/profiles/', endpoint='profilesindex') -def loadContacts(): - return send_from_directory(root + 'profiles/', 'index.html') - - - -@static_files_bp.route('/shared/', endpoint='sharedContent') -def sharedContent(path): - return send_from_directory(root + 'shared/', path) - - -@static_files_bp.route('/', endpoint='onionrhome') -def hello(): - # ui home - return send_from_directory(root + 'private/', 'index.html') - - -@static_files_bp.route('/private/', endpoint='homedata') -def homedata(path): - return send_from_directory(root + 'private/', path) \ No newline at end of file diff --git a/src/httpapi/security/__init__.py b/src/httpapi/security/__init__.py deleted file mode 100644 index ba0a5076..00000000 --- a/src/httpapi/security/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import client \ No newline at end of file diff --git a/src/httpapi/security/client.py b/src/httpapi/security/client.py deleted file mode 100644 index 2fd3b7d6..00000000 --- a/src/httpapi/security/client.py +++ /dev/null @@ -1,102 +0,0 @@ -"""Onionr - Private P2P Communication. - -Process incoming requests to the client api server to validate -that they are legitimate and not DNSR/XSRF or other local adversary -""" -from ipaddress import ip_address -import hmac - -from flask import Blueprint, request, abort, g - -from httpapi import httpheaders -from . import pluginwhitelist -import config -import logger -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - -# Be extremely mindful of this. -# These are endpoints available without a password -whitelist_endpoints = [ - 'www', 'staticfiles.homedata', - 'staticfiles.sharedContent', - 'staticfiles.friends', 'staticfiles.friendsindex', 'siteapi.site', - 'siteapi.siteFile', 'staticfiles.onionrhome', - 'themes.getTheme', 'staticfiles.onboarding', 'staticfiles.onboardingIndex'] - -remote_safe_whitelist = ['www', 'staticfiles'] - -public_remote_enabled = config.get('ui.public_remote_enabled', False) -public_remote_hostnames = config.get('ui.public_remote_hosts', []) - - -class ClientAPISecurity: - def __init__(self, client_api): - client_api_security_bp = Blueprint('clientapisecurity', __name__) - self.client_api_security_bp = client_api_security_bp - self.client_api = client_api - pluginwhitelist.load_plugin_security_whitelist_endpoints( - whitelist_endpoints) - - @client_api_security_bp.before_app_request - def validate_request(): - """Validate request has set password & is the correct hostname.""" - # For the purpose of preventing DNS rebinding attacks - if ip_address(client_api.host).is_loopback: - localhost = True - if request.host != '%s:%s' % \ - (client_api.host, client_api.bindPort): - localhost = False - - if not localhost and public_remote_enabled: - if request.host not in public_remote_hostnames: - logger.warn( - f'{request.host} not in {public_remote_hostnames}') - abort(403) - else: - if not localhost: - logger.warn( - f'Possible DNS rebinding attack by {request.host}') - abort(403) - - # Static files for Onionr sites - if request.path.startswith('/site/'): - return - - if request.endpoint in whitelist_endpoints: - return - - try: - if not hmac.compare_digest( - request.headers['token'], client_api.clientToken): - if not hmac.compare_digest( - request.form['token'], client_api.clientToken): - abort(403) - except KeyError: - if not hmac.compare_digest( - request.form['token'], client_api.clientToken): - abort(403) - - @client_api_security_bp.after_app_request - def after_req(resp): - # Security headers - resp = httpheaders.set_default_onionr_http_headers(resp) - if request.endpoint in ('siteapi.site', 'siteapi.siteFile'): - resp.headers['Content-Security-Policy'] = \ - "default-src 'none'; style-src 'self' data: 'unsafe-inline'; img-src 'self' data:; media-src 'self' data:" # noqa - else: - resp.headers['Content-Security-Policy'] = \ - "default-src 'none'; script-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; media-src 'self'; frame-src 'none'; font-src 'self'; connect-src 'self'" # noqa - return resp diff --git a/src/httpapi/security/lan.py b/src/httpapi/security/lan.py deleted file mode 100644 index bbd6b7c6..00000000 --- a/src/httpapi/security/lan.py +++ /dev/null @@ -1,67 +0,0 @@ -"""Onionr - Private P2P Communication. - -Process incoming requests to the public api server for certain attacks -""" -from flask import Blueprint, request, abort, g -from httpapi import httpheaders -from onionrutils import epoch -from lan import getip -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - - -class LANAPISecurity: - def __init__(self, lan_client): - lan_api_security_bp = Blueprint('lanapisecurity', __name__) - self.lan_api_security_bp = lan_api_security_bp - - @lan_api_security_bp.before_app_request - def validate_request(): - """Validate request has the correct hostname""" - # If high security level, deny requests to public - # (HS should be disabled anyway for Tor, but might not be for I2P) - transports = getip.lan_ips - if lan_client.config.get('general.security_level', default=1) > 0: - abort(403) - if request.host not in transports: - # Abort conn if wrong HTTP hostname, to prevent DNS rebinding - abort(403) - lan_client.hitCount += 1 # raise hit count for valid requests - try: - if 'onionr' in request.headers['User-Agent'].lower(): - g.is_onionr_client = True - else: - g.is_onionr_client = False - except KeyError: - g.is_onionr_client = False - - @lan_api_security_bp.after_app_request - def send_headers(resp): - """Send api, access control headers""" - resp = httpheaders.set_default_onionr_http_headers(resp) - # Network API version - resp.headers['X-API'] = lan_client.API_VERSION - # Delete some HTTP headers for Onionr user agents - NON_NETWORK_HEADERS = ('Content-Security-Policy', 'X-Frame-Options', - 'X-Content-Type-Options', 'Feature-Policy', - 'Clear-Site-Data', 'Referrer-Policy') - try: - if g.is_onionr_client: - for header in NON_NETWORK_HEADERS: - del resp.headers[header] - except AttributeError: - abort(403) - lan_client.lastRequest = epoch.get_rounded_epoch(roundS=5) - return resp diff --git a/src/httpapi/security/pluginwhitelist.py b/src/httpapi/security/pluginwhitelist.py deleted file mode 100644 index 5fcf759a..00000000 --- a/src/httpapi/security/pluginwhitelist.py +++ /dev/null @@ -1,33 +0,0 @@ -"""Onionr - Private P2P Communication. - -Load web UI client endpoints into the whitelist from plugins -""" -import onionrplugins -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - - -def load_plugin_security_whitelist_endpoints(whitelist: list): - """Accept a list reference of whitelist endpoints from security/client.py and - append plugin's specified endpoints to them by attribute""" - for plugin in onionrplugins.get_enabled_plugins(): - try: - plugin = onionrplugins.get_plugin(plugin) - except FileNotFoundError: - continue - try: - whitelist.extend(getattr(plugin, "security_whitelist")) - except AttributeError: - pass diff --git a/src/httpapi/sse/README.md b/src/httpapi/sse/README.md deleted file mode 100644 index 9f3f6a41..00000000 --- a/src/httpapi/sse/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# sse - -This folder contains a wrapper for handling server sent event loops - - - diff --git a/src/httpapi/sse/__init__.py b/src/httpapi/sse/__init__.py deleted file mode 100644 index c452cfd0..00000000 --- a/src/httpapi/sse/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -"""Onionr - Private P2P Communication. - -server sent event modules, incl a wrapper and endpoints for client + public api -""" -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" diff --git a/src/httpapi/sse/private/__init__.py b/src/httpapi/sse/private/__init__.py deleted file mode 100644 index 70adefd2..00000000 --- a/src/httpapi/sse/private/__init__.py +++ /dev/null @@ -1,41 +0,0 @@ -"""Onionr - Private P2P Communication. - -SSE API for node client access -""" -from pathlib import Path - -from flask import g, Blueprint -from gevent import sleep -import gevent -import ujson - -from onionrutils.epoch import get_epoch -from .. import wrapper -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - -private_sse_blueprint = Blueprint('privatesse', __name__) -SSEWrapper = wrapper.SSEWrapper() - -gevent.hub.Hub.NOT_ERROR = (gevent.GreenletExit, SystemExit, Exception) - -@private_sse_blueprint.route('/hello') -def stream_hello(): - def print_hello(): - while True: - yield "hello\n\n" - sleep(1) - return SSEWrapper.handle_sse_request(print_hello) - diff --git a/src/httpapi/sse/wrapper.py b/src/httpapi/sse/wrapper.py deleted file mode 100644 index c32af649..00000000 --- a/src/httpapi/sse/wrapper.py +++ /dev/null @@ -1,34 +0,0 @@ -"""Onionr - Private P2P Communication. - -wrapper for server sent event endpoints -""" -from typing import Callable - -from flask import Response - -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - - -class SSEWrapper: - def __init__(self): - self.active_count: int = 0 - - def handle_sse_request(self, handler: Callable): - self.active_count += 1 - resp = Response(handler()) - resp.content_type = "text/event-stream" - self.active_count -= 1 - return resp diff --git a/src/httpapi/themeapi/__init__.py b/src/httpapi/themeapi/__init__.py deleted file mode 100644 index 96c24812..00000000 --- a/src/httpapi/themeapi/__init__.py +++ /dev/null @@ -1,46 +0,0 @@ -""" - Onionr - Private P2P Communication - - API to get current CSS theme for the client web UI -""" -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" -from flask import Blueprint, Response - -import config -from utils import readstatic - -theme_blueprint = Blueprint('themes', __name__) - -LIGHT_THEME_FILES = ['bulma-light.min.css', 'styles-light.css'] -DARK_THEME_FILES = ['bulma-dark.min.css', 'styles-dark.css'] - -def _load_from_files(file_list: list)->str: - """Loads multiple static dir files and returns them in combined string format (non-binary)""" - combo_data = '' - for f in file_list: - combo_data += readstatic.read_static('www/shared/main/themes/' + f) - return combo_data - -@theme_blueprint.route('/gettheme', endpoint='getTheme') -def get_theme_file()->Response: - """Returns the css theme data""" - css: str - theme = config.get('ui.theme', 'dark').lower() - if theme == 'dark': - css = _load_from_files(DARK_THEME_FILES) - elif theme == 'light': - css = _load_from_files(LIGHT_THEME_FILES) - return Response(css, mimetype='text/css') diff --git a/src/notifier/__init__.py b/src/notifier/__init__.py deleted file mode 100644 index 9acf6f54..00000000 --- a/src/notifier/__init__.py +++ /dev/null @@ -1,55 +0,0 @@ -"""Onionr - Private P2P Communication. - -Desktop notification wrapper -""" -from subprocess import Popen - -try: - import simplenotifications as simplenotify -except ImportError: - notifications_enabled = False -else: - notifications_enabled = True - -from utils.readstatic import get_static_dir -import config -from onionrplugins.onionrevents import event as plugin_api_event -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - -if not config.get('general.show_notifications', True): - notifications_enabled = False - -notification_sound_file = get_static_dir() + "sounds/notification1.mp3" - - -def notify(title: str = "Onionr", message: str = ""): - """Cross platform method to show a notification.""" - if not notifications_enabled: - return - plugin_api_event("notification", data={"title": title, "message": message}) - simplenotify.notify(title, message) - - -def notification_with_sound(sound='', **kwargs): - if not notifications_enabled: - return - if not sound: - sound = notification_sound_file - try: - Popen(["mpv", sound]) - except FileNotFoundError: - pass - notify(**kwargs) diff --git a/src/onionrcommands/daemonlaunch/__init__.py b/src/onionrcommands/daemonlaunch/__init__.py index cc89c974..752e4b85 100755 --- a/src/onionrcommands/daemonlaunch/__init__.py +++ b/src/onionrcommands/daemonlaunch/__init__.py @@ -3,26 +3,20 @@ launch the api servers and communicator """ import os -import queue +from time import sleep import sys import platform import signal from threading import Thread -from stem.connection import IncorrectPassword -import toomanyobjs import filenuke -from deadsimplekv import DeadSimpleKV import psutil -from ordered_set import OrderedSet import config -import apiservers import logger from onionrplugins import onionrevents as events -from onionrutils import localcommand from utils import identifyhome import filepaths import onionrvalues @@ -30,13 +24,11 @@ from onionrutils import cleanup from onionrcrypto import getourkeypair from onionrthreads import add_onionr_thread from blockdb.blockcleaner import clean_block_database -import runtests from .. import version from .killdaemon import kill_daemon # noqa from .showlogo import show_logo import gossip -from setupkvvars import setup_kv """ This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -53,11 +45,6 @@ along with this program. If not, see . """ -def _proper_shutdown(): - localcommand.local_command('shutdown') - sys.exit(1) - - def _show_info_messages(): version.version(verbosity=5, function=logger.info) logger.debug('Python version %s' % platform.python_version()) @@ -74,35 +61,13 @@ def daemon(): """Start Onionr's primary threads for communicator, API server, node, and LAN.""" def _handle_sig_term(signum, frame): - pid = str(os.getpid()) - main_pid = localcommand.local_command('/getpid') - #logger.info(main_pid, terminal=True) - if main_pid and main_pid == pid: - logger.info( - f"Received sigterm, shutting down gracefully. PID: {pid}", terminal=True) - localcommand.local_command('/shutdown') - else: - logger.info( - f"Recieved sigterm in child process or fork, exiting. PID: {pid}") - sys.exit(0) + sys.exit(0) + + with open(filepaths.pid_file, 'w') as f: + f.write(str(os.getpid())) + signal.signal(signal.SIGTERM, _handle_sig_term) - # Create shared objects - - shared_state = toomanyobjs.TooMany() - - # Add DeadSimpleKV for quasi-global variables (ephemeral key-value) - shared_state.get(DeadSimpleKV) - - # Initialize the quasi-global variables - setup_kv(shared_state.get(DeadSimpleKV)) - - # Init run time tester - # (ensures Onionr is running right, for testing purposes) - # Run time tests are not normally run - shared_state.get(runtests.OnionrRunTestManager) - - shared_state.share_object() # share the parent object to the threads show_logo() @@ -121,14 +86,13 @@ def daemon(): target=gossip.start_gossip_threads, daemon=True, name='start_gossip_threads').start() - + try: - apiservers.private_api.start() - events.event('shutdown', threaded=False) + while True: + sleep(60) except KeyboardInterrupt: pass - cleanup.delete_run_files() if security_level >= 2: filenuke.nuke.clean_tree(identifyhome.identify_home()) diff --git a/src/onionrcommands/daemonlaunch/killdaemon.py b/src/onionrcommands/daemonlaunch/killdaemon.py index d426bb8f..f991bc05 100644 --- a/src/onionrcommands/daemonlaunch/killdaemon.py +++ b/src/onionrcommands/daemonlaunch/killdaemon.py @@ -2,15 +2,11 @@ Gracefully stop Onionr daemon """ -import sqlite3 import os +from signal import SIGTERM -from gevent import spawn - -from onionrplugins import events -from onionrutils import localcommand +from filepaths import pid_file import logger -import config """ This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,27 +25,14 @@ along with this program. If not, see . def kill_daemon(): """Shutdown the Onionr daemon (communicator).""" - config.reload() + try: + with open(pid_file, 'r') as pid: + os.kill(int(pid.read()), SIGTERM) + except FileNotFoundError: + logger.error("Daemon not running/pid file missing") logger.warn('Stopping the running daemon, if one exists...', timestamp=False, terminal=True) - # On platforms where we can, fork out to prevent locking - try: - pid = os.fork() - if pid != 0: - return - except (AttributeError, OSError): - pass - - events.event('daemon_stop') - try: - spawn( - localcommand.local_command, - '/shutdown' - ).get(timeout=5) - except sqlite3.OperationalError: - pass - kill_daemon.onionr_help = "Gracefully stops the " # type: ignore kill_daemon.onionr_help += "Onionr API servers" # type: ignore \ No newline at end of file diff --git a/src/onionrcommands/openwebinterface.py b/src/onionrcommands/openwebinterface.py deleted file mode 100755 index 10f7075e..00000000 --- a/src/onionrcommands/openwebinterface.py +++ /dev/null @@ -1,59 +0,0 @@ -"""Onionr - Private P2P Communication. - -Open the web interface properly into a web browser -""" -import webbrowser -from time import sleep - -import logger -from onionrutils import getclientapiserver -import config -from onionrutils.localcommand import local_command - -from .daemonlaunch import geturl -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - - - - -def get_url() -> str: - """Build UI URL string and return it.""" - return geturl.get_url(config) - - -get_url.onionr_help = "Shows the Onionr " # type: ignore -get_url.onionr_help += "web interface URL with API key" # type: ignore - - -def open_home(): - """Command to open web interface URL in default browser.""" - try: - url = getclientapiserver.get_client_API_server() - except FileNotFoundError: - logger.error( - 'Onionr seems to not be running (could not get api host)', - terminal=True) - else: - sleep(3) # Sleep a little to wait for web UI to init some vars it needs - url = get_url() - logger.info( - 'If Onionr does not open automatically, use this URL: ' + url, - terminal=True) - webbrowser.open_new_tab(url) - - -open_home.onionr_help = "Opens the Onionr UI in the default " # type: ignore -open_home.onionr_help += "browser. Node must be running." # type: ignore diff --git a/src/onionrcommands/parser/arguments.py b/src/onionrcommands/parser/arguments.py index 9266a256..0db0b180 100644 --- a/src/onionrcommands/parser/arguments.py +++ b/src/onionrcommands/parser/arguments.py @@ -5,12 +5,8 @@ Sets CLI arguments for Onionr from typing import Callable from .. import onionrstatistics, version, daemonlaunch -from .. import openwebinterface from .. import pubkeymanager # commands to add or change id from .. import resetplugins # command to reinstall default plugins -from .. import softreset # command to delete onionr blocks -from .. import restartonionr # command to restart Onionr -from .. import runtimetestcmd # cmd to execute the runtime integration tests import onionrexceptions @@ -42,15 +38,9 @@ def get_arguments() -> dict: ('version',): version.version, ('start', 'daemon'): daemonlaunch.start, ('stop', 'kill'): daemonlaunch.kill_daemon, - ('restart',): restartonionr.restart, - ('openhome', 'gui', 'openweb', - 'open-home', 'open-web'): openwebinterface.open_home, - ('get-url', 'url', 'get-web'): openwebinterface.get_url, ('addid', 'add-id'): pubkeymanager.add_ID, ('changeid', 'change-id'): pubkeymanager.change_ID, - ('resetplugins', 'reset-plugins'): resetplugins.reset, - ('soft-reset', 'softreset'): softreset.soft_reset, - ('runtime-test', 'runtimetest'): runtimetestcmd.do_runtime_test + ('resetplugins', 'reset-plugins'): resetplugins.reset } return args diff --git a/src/onionrcommands/restartonionr.py b/src/onionrcommands/restartonionr.py deleted file mode 100644 index 8d3a1b2b..00000000 --- a/src/onionrcommands/restartonionr.py +++ /dev/null @@ -1,78 +0,0 @@ -"""Onionr - Private P2P Communication. - -Command to restart Onionr -""" -from threading import local -import time -import os -import subprocess # nosec - -from psutil import Process - -import onionrvalues -from onionrutils import cleanup -from onionrutils import localcommand -import logger -import filepaths - -from . import daemonlaunch -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - -DEVNULL = subprocess.DEVNULL -SCRIPT_NAME = os.path.dirname(os.path.realpath( - __file__)) + f'/../../{onionrvalues.SCRIPT_NAME}' - - -def restart(): - """Tell the Onionr daemon to restart.""" - - logger.info('Restarting Onionr', terminal=True) - - daemon_terminal = localcommand.local_command("getpid") - terminal = None - if daemon_terminal: - terminal = Process(int(daemon_terminal)).terminal() - else: - terminal = Process().terminal() - - # On platforms where we can, fork out to prevent locking - try: - pid = os.fork() - if pid != 0: - return - except (AttributeError, OSError): - logger.warn('Could not fork on restart') - with open(filepaths.restarting_indicator, 'w') as f: - f.write('t') - daemonlaunch.kill_daemon() - while localcommand.local_command('ping', max_wait=8) == 'pong!': - time.sleep(0.3) - time.sleep(15) - while (os.path.exists(filepaths.private_API_host_file) or - (os.path.exists(filepaths.daemon_mark_file))): - time.sleep(1) - - cleanup.delete_run_files() - - with open(terminal, 'ab') as term: - subprocess.Popen( - [SCRIPT_NAME, 'start'], - stdout=term, - stdin=term, - stderr=term) - - -restart.onionr_help = 'Gracefully restart Onionr' # type: ignore diff --git a/src/onionrcommands/runtimetestcmd.py b/src/onionrcommands/runtimetestcmd.py deleted file mode 100644 index 57872e28..00000000 --- a/src/onionrcommands/runtimetestcmd.py +++ /dev/null @@ -1,37 +0,0 @@ -"""Onionr - Private P2P Communication. - -Command to tell daemon to do run time tests -""" -from gevent import spawn - -from onionrutils import localcommand -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - - -def do_runtime_test(): - """Send runtime test daemon queue command.""" - spawn( - localcommand.local_command, - f'daemon-event/test_runtime', - post=True, - is_json=True, - post_data={}, - max_wait=300 - ).get(300) - - -do_runtime_test.onionr_help = "If Onionr is running, " # type: ignore -do_runtime_test.onionr_help += "run runtime tests (check logs)" # type: ignore diff --git a/src/onionrcommands/softreset.py b/src/onionrcommands/softreset.py deleted file mode 100644 index c3116d41..00000000 --- a/src/onionrcommands/softreset.py +++ /dev/null @@ -1,58 +0,0 @@ -"""Onionr - Private P2P Communication. - -Command to soft-reset Onionr (deletes blocks) -""" -import os -import shutil - -from onionrutils import localcommand -from coredb import dbfiles -import filepaths -from onionrplugins import onionrevents -import logger -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - - -def _ignore_not_found_delete(path): - try: - os.remove(path) - except FileNotFoundError: - pass - - -def soft_reset(): - """Command to soft reset Onionr home data. - - Onionr must not be running - """ - if localcommand.local_command('/ping') == 'pong!': - logger.warn('Cannot soft reset while Onionr is running', - terminal=True) - return - path = filepaths.block_data_location - shutil.rmtree(path) - _ignore_not_found_delete(dbfiles.block_meta_db) - _ignore_not_found_delete(filepaths.upload_list) - _ignore_not_found_delete(filepaths.usage_file) - onionrevents.event('softreset') - logger.info("Soft reset Onionr", terminal=True) - - -soft_reset.onionr_help = "Deletes Onionr blocks and their " # type: ignore -soft_reset.onionr_help += "associated metadata, except for " # type: ignore -soft_reset.onionr_help += "any exported block files. Does NOT " # type: ignore -soft_reset.onionr_help += "delete data on " # type: ignore -soft_reset.onionr_help += "other nodes in the network." # type: ignore diff --git a/src/onionrcrypto/cryptoutils/__init__.py b/src/onionrcrypto/cryptoutils/__init__.py index 635099d4..1433cdd4 100644 --- a/src/onionrcrypto/cryptoutils/__init__.py +++ b/src/onionrcrypto/cryptoutils/__init__.py @@ -1,6 +1,5 @@ -from . import safecompare, replayvalidation +from . import safecompare from . import getpubfrompriv -replay_validator = replayvalidation.replay_timestamp_validation safe_compare = safecompare.safe_compare get_pub_key_from_priv = getpubfrompriv.get_pub_key_from_priv diff --git a/src/onionrcrypto/cryptoutils/replayvalidation.py b/src/onionrcrypto/cryptoutils/replayvalidation.py deleted file mode 100644 index fc8e8fd0..00000000 --- a/src/onionrcrypto/cryptoutils/replayvalidation.py +++ /dev/null @@ -1,3 +0,0 @@ -from onionrutils import epoch -def replay_timestamp_validation(timestamp): - return epoch.get_epoch() - int(timestamp) <= 2419200 \ No newline at end of file diff --git a/src/onionrcrypto/cryptoutils/safecompare.py b/src/onionrcrypto/cryptoutils/safecompare.py index ddd6b58e..5d242ca5 100644 --- a/src/onionrcrypto/cryptoutils/safecompare.py +++ b/src/onionrcrypto/cryptoutils/safecompare.py @@ -1,4 +1,6 @@ import hmac + + def safe_compare(one, two): # Do encode here to avoid spawning core try: @@ -9,4 +11,5 @@ def safe_compare(one, two): two = two.encode() except AttributeError: pass - return hmac.compare_digest(one, two) \ No newline at end of file + return hmac.compare_digest(one, two) + \ No newline at end of file diff --git a/src/onionrcrypto/cryptoutils/verifypow.py b/src/onionrcrypto/cryptoutils/verifypow.py deleted file mode 100644 index a4501d54..00000000 --- a/src/onionrcrypto/cryptoutils/verifypow.py +++ /dev/null @@ -1,38 +0,0 @@ -from .. import hashers -import config, onionrproofs, logger -import onionrexceptions -def verify_POW(blockContent): - ''' - Verifies the proof of work associated with a block - ''' - retData = False - - dataLen = len(blockContent) - - try: - blockContent = blockContent.encode() - except AttributeError: - pass - - blockHash = hashers.sha3_hash(blockContent) - try: - blockHash = blockHash.decode() # bytes on some versions for some reason - except AttributeError: - pass - - difficulty = onionrproofs.getDifficultyForNewBlock(blockContent) - - if difficulty < int(config.get('general.minimum_block_pow')): - difficulty = int(config.get('general.minimum_block_pow')) - mainHash = '0000000000000000000000000000000000000000000000000000000000000000'#nacl.hash.blake2b(nacl.utils.random()).decode() - puzzle = mainHash[:difficulty] - - if blockHash[:difficulty] == puzzle: - # logger.debug('Validated block pow') - retData = True - else: - logger.debug(f"Invalid token, bad proof for {blockHash} {puzzle}") - raise onionrexceptions.InvalidProof('Proof for %s needs to be %s' % (blockHash, puzzle)) - - return retData - diff --git a/src/onionrplugins/onionrpluginapi.py b/src/onionrplugins/onionrpluginapi.py index 55774106..6044db5e 100755 --- a/src/onionrplugins/onionrpluginapi.py +++ b/src/onionrplugins/onionrpluginapi.py @@ -19,7 +19,7 @@ ''' import onionrplugins, logger -from onionrutils import localcommand + class PluginAPI: def __init__(self, pluginapi): diff --git a/src/onionrprocess/__init__.py b/src/onionrprocess/__init__.py deleted file mode 100644 index ffd26feb..00000000 --- a/src/onionrprocess/__init__.py +++ /dev/null @@ -1,21 +0,0 @@ -from audioop import mul -import multiprocessing - - -def run_func_in_new_process(func, *args, **kwargs): - queue = multiprocessing.Queue() - - def _wrap_func(): - if args and kwargs: - queue.put(func(*args, **kwargs)) - elif args: - queue.put(func(*args)) - elif kwargs: - queue.put(func(**kwargs)) - else: - queue.put(func()) - - proc = multiprocessing.Process(target=_wrap_func, daemon=True) - proc.start() - return queue.get() - diff --git a/src/onionrsetup/setupconfig.py b/src/onionrsetup/setupconfig.py index 6a502831..f0013a99 100755 --- a/src/onionrsetup/setupconfig.py +++ b/src/onionrsetup/setupconfig.py @@ -10,7 +10,6 @@ import ujson as json import config import logger import onionrvalues -from onionrutils import getopenport from logger.settings import * from utils import readstatic """ @@ -77,14 +76,3 @@ def setup_config(): set_level(map[verbosity]) else: logger.warn('Verbosity level %s is not valid, using default verbosity.' % verbosity) - - if type(config.get('client.webpassword')) is type(None): - config.set('client.webpassword', base64.b16encode(os.urandom(32)).decode('utf-8'), savefile=True) - if type(config.get('client.client.port')) is type(None): - randomPort = getopenport.get_open_port() - config.set('client.client.port', randomPort, savefile=True) - if type(config.get('client.public.port')) is type(None): - randomPort = getopenport.get_open_port() - config.set('client.public.port', randomPort, savefile=True) - if type(config.get('client.api_version')) is type(None): - config.set('client.api_version', onionrvalues.API_VERSION, savefile=True) \ No newline at end of file diff --git a/src/onionrutils/cleanup/__init__.py b/src/onionrutils/cleanup/__init__.py index 25d62774..00b21da3 100644 --- a/src/onionrutils/cleanup/__init__.py +++ b/src/onionrutils/cleanup/__init__.py @@ -38,3 +38,4 @@ def delete_run_files(): _safe_remove(filepaths.daemon_mark_file) _safe_remove(filepaths.lock_file) _safe_remove(filepaths.gossip_server_socket_file) + _safe_remove(filepaths.pid_file) diff --git a/src/onionrutils/dependencycheck.py b/src/onionrutils/dependencycheck.py deleted file mode 100644 index 6b83ebc2..00000000 --- a/src/onionrutils/dependencycheck.py +++ /dev/null @@ -1 +0,0 @@ -from urllib3.contrib.socks import SOCKSProxyManager # noqa \ No newline at end of file diff --git a/src/onionrutils/getclientapiserver.py b/src/onionrutils/getclientapiserver.py deleted file mode 100644 index 1d196eae..00000000 --- a/src/onionrutils/getclientapiserver.py +++ /dev/null @@ -1,37 +0,0 @@ -''' - Onionr - Private P2P Communication - - Return the client api server address and port, which is usually random -''' -''' - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -''' -import filepaths -import config -def get_client_API_server(): - config.reload() - retData = '' - getconf = lambda: config.get('client.client.port') - port = getconf() - if port is None: - config.reload() - port = getconf() - try: - with open(filepaths.private_API_host_file, 'r') as host: - hostname = host.read() - except FileNotFoundError: - raise FileNotFoundError - else: - retData += '%s:%s' % (hostname, port) - return retData diff --git a/src/onionrutils/getopenport.py b/src/onionrutils/getopenport.py deleted file mode 100644 index 97d64ff7..00000000 --- a/src/onionrutils/getopenport.py +++ /dev/null @@ -1,29 +0,0 @@ -''' - Onionr - Private P2P Communication - - get an open port -''' -''' - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -''' -import socket -def get_open_port(): - # taken from (but modified) https://stackoverflow.com/a/2838309 by https://stackoverflow.com/users/133374/albert ccy-by-sa-3 https://creativecommons.org/licenses/by-sa/3.0/ - # changes from source: import moved to top of file, bind specifically to localhost - s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - s.bind(("127.0.0.1",0)) - s.listen(1) - port = s.getsockname()[1] - s.close() - return port \ No newline at end of file diff --git a/src/onionrutils/localcommand.py b/src/onionrutils/localcommand.py deleted file mode 100644 index 5c38fe22..00000000 --- a/src/onionrutils/localcommand.py +++ /dev/null @@ -1,103 +0,0 @@ -"""Onionr - Private P2P Communication. - -send a command to the local API server -""" -import urllib -import time - -import requests -import deadsimplekv - -import logger -import config - -from . import getclientapiserver -import filepaths -""" - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -""" -config.reload() - -cache = deadsimplekv.DeadSimpleKV(filepaths.cached_storage, - refresh_seconds=1000) - - -def get_hostname(): - hostname = '' - waited = 0 - max_wait = 3 - while True: - if cache.get('client_api') is None: - try: - hostname = getclientapiserver.get_client_API_server() - except FileNotFoundError: - hostname = False - else: - cache.put('hostname', hostname) - cache.flush() - else: - hostname = cache.get('hostname') - if hostname == '' or hostname is None: - time.sleep(1) - if waited == max_wait: - return False - else: - return hostname - - -def local_command(command, data='', silent=True, post=False, - post_data={}, max_wait=20, - is_json=False - ): - """Send a command to the local http API server, securely. - Intended for local clients, DO NOT USE for remote peers.""" - hostname = get_hostname() - # if the api host cannot be reached, return False - if not hostname: - return False - - if data: - data = '&data=' + urllib.parse.quote_plus(data) - payload = 'http://%s/%s%s' % (hostname, command, data) - if not config.get('client.webpassword'): - config.reload() - - try: - if post: - if is_json: - ret_data = requests.post( - payload, - json=post_data, - headers={'token': config.get('client.webpassword'), - 'Connection': 'close'}, - timeout=(max_wait, max_wait)).text - else: - ret_data = requests.post( - payload, - data=post_data, - headers={'token': config.get('client.webpassword'), - 'Connection': 'close'}, - timeout=(max_wait, max_wait)).text - else: - ret_data = requests.get(payload, - headers={'token': - config.get('client.webpassword'), - 'Connection': 'close'}, - timeout=(max_wait, max_wait)).text - except Exception as error: - if not silent: - logger.error('Failed to make local request (command: %s):%s' % - (command, error), terminal=True) - ret_data = False - return ret_data diff --git a/src/onionrutils/stringvalidators.py b/src/onionrutils/stringvalidators.py index 3655c04e..8dbc3173 100644 --- a/src/onionrutils/stringvalidators.py +++ b/src/onionrutils/stringvalidators.py @@ -1,49 +1,30 @@ -''' - Onionr - Private P2P Communication +""" +Onionr - Private P2P Communication - validate various string data types -''' -''' - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -''' -import base64, string +validate various string data types +""" +import base64 +import string import unpaddedbase32, nacl.signing, nacl.encoding from onionrutils import bytesconverter -def validate_hash(data, length=64): - ''' - Validate if a string is a valid hash hex digest (does not compare, just checks length and charset) +""" +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. - Length is only invalid if its *more* than the specified - ''' - retVal = True - if data == False or data == True: - return False - data = data.strip() - if len(data) > length: - retVal = False - else: - try: - int(data, 16) - except ValueError: - retVal = False +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +""" - return retVal def validate_pub_key(key): - ''' - Validate if a string is a valid base32 encoded Ed25519 key - ''' + """Validate if a string is a valid base32 encoded Ed25519 key""" if type(key) is type(None): return False # Accept keys that have no = padding @@ -54,18 +35,8 @@ def validate_pub_key(key): nacl.signing.SigningKey(seed=key, encoder=nacl.encoding.Base32Encoder) except nacl.exceptions.ValueError: pass - except base64.binascii.Error as err: + except base64.binascii.Error as _: pass else: retVal = True return retVal - - -def is_integer_string(data): - '''Check if a string is a valid base10 integer (also returns true if already an int)''' - try: - int(data) - except (ValueError, TypeError) as e: - return False - else: - return True diff --git a/src/onionrutils/updater/__init__.py b/src/onionrutils/updater/__init__.py deleted file mode 100644 index a9bdf13f..00000000 --- a/src/onionrutils/updater/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -import notifier - - -def update_event(bl): - """Show update notification if available, return bool of if update happened""" - if not bl.isSigner(onionrvalues.UPDATE_SIGN_KEY): raise onionrexceptions.InvalidUpdate - onionr.notifier.notify(message="A new Onionr update is available. Stay updated to remain secure.") diff --git a/src/onionrutils/validatemetadata.py b/src/onionrutils/validatemetadata.py deleted file mode 100644 index 9616332d..00000000 --- a/src/onionrutils/validatemetadata.py +++ /dev/null @@ -1,127 +0,0 @@ -"""Onionr - Private P2P Communication. - -validate new block's metadata -""" -from json import JSONDecodeError -import ujson as json - -import logger, onionrexceptions -import onionrvalues -from . import stringvalidators, epoch, bytesconverter -import config, filepaths, onionrcrypto -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - - -def validate_metadata(metadata, block_data) -> bool: - """Validate metadata meets onionr spec (does not validate proof value computation), take in either dictionary or json string""" - - ret_data = False - max_clock_difference = onionrvalues.MAX_BLOCK_CLOCK_SKEW - - # convert to dict if it is json string - if type(metadata) is str: - try: - metadata = json.loads(metadata) - except JSONDecodeError: - pass - - # Validate metadata dict for invalid keys to sizes that are too large - maxAge = onionrvalues.DEFAULT_EXPIRE - if type(metadata) is dict: - for i in metadata: - try: - onionrvalues.BLOCK_METADATA_LENGTHS[i] - except KeyError: - logger.warn('Block has invalid metadata key ' + i) - break - else: - testData = metadata[i] - try: - testData = len(testData) - except (TypeError, AttributeError) as e: - testData = len(str(testData)) - if onionrvalues.BLOCK_METADATA_LENGTHS[i] < testData: - logger.warn('Block metadata key ' + i + ' exceeded maximum size') - break - if i == 'time': - if not stringvalidators.is_integer_string(metadata[i]): - logger.warn('Block metadata time stamp is not integer string or int') - break - isFuture = (metadata[i] - epoch.get_epoch()) - if isFuture > max_clock_difference: - logger.warn('Block timestamp is skewed to the future over the max %s: %s', (max_clock_difference, isFuture)) - break - if (epoch.get_epoch() - metadata[i]) > maxAge: - logger.warn('Block is outdated: %s' % (metadata[i],)) - break - elif i == 'expire': - try: - if not int(metadata[i]) > epoch.get_epoch(): raise ValueError - except ValueError: - logger.warn('Block is expired: %s less than %s' % (metadata[i], epoch.get_epoch())) - break - elif i == 'encryptType': - try: - if not metadata[i] in ('asym', 'sym', ''): raise ValueError - except ValueError: - logger.warn('Invalid encryption mode') - break - elif i == 'sig': - try: - metadata['encryptType'] - except KeyError: - signer = metadata['signer'] - sig = metadata['sig'] - encodedMeta = bytesconverter.str_to_bytes(metadata['meta']) - encodedBlock = bytesconverter.str_to_bytes(block_data) - if not onionrcrypto.signing.ed_verify(encodedMeta + encodedBlock[1:], signer, sig): - logger.warn(f'Block was signed by {signer}, but signature failed') - break - else: - # if metadata loop gets no errors, it does not break, therefore metadata is valid - # make sure we do not have another block with the same data content (prevent data duplication and replay attacks) - - # Make sure time is set (validity was checked above if it is) - if not config.get('general.store_plaintext_blocks', True): - try: - if not metadata['encryptType']: - raise onionrexceptions.PlaintextNotSupported - except KeyError: - raise onionrexceptions.PlaintextNotSupported - try: - metadata['time'] - except KeyError: - logger.warn("Time header not set") - return False - - nonce = bytesconverter.bytes_to_str(onionrcrypto.hashers.sha3_hash(block_data)) - try: - with open(filepaths.data_nonce_file, 'r') as nonceFile: - if nonce in nonceFile.read(): - # we've seen that nonce before, so we can't pass metadata - raise onionrexceptions.DataExists - except FileNotFoundError: - ret_data = True - except onionrexceptions.DataExists: - # do not set ret_data to True, because data has been seen before - logger.warn(f'{nonce} seen before') - raise onionrexceptions.DataExists - else: - ret_data = True - else: - logger.warn('In call to utils.validateMetadata, metadata must be JSON string or a dictionary object') - - return ret_data diff --git a/src/onionrvalues.py b/src/onionrvalues.py index 3db0e00c..9edd8eb9 100755 --- a/src/onionrvalues.py +++ b/src/onionrvalues.py @@ -23,54 +23,24 @@ along with this program. If not, see . DENIABLE_PEER_ADDRESS = "OVPCZLOXD6DC5JHX4EQ3PSOGAZ3T24F75HQLIUZSDSMYPEOXCPFA" PASSWORD_LENGTH = 25 ONIONR_TAGLINE = 'Private P2P Communication - GPLv3 - https://Onionr.net' -ONIONR_VERSION = '8.0.2' +ONIONR_VERSION = '9.0.0' ONIONR_VERSION_CODENAME = 'Taraxacum' ONIONR_VERSION_TUPLE = tuple(ONIONR_VERSION.split('.')) # (MAJOR, MINOR, VERSION) API_VERSION = '2' # increments of 1; only change when something fundamental about how the API works changes. This way other nodes know how to communicate without learning too much information about you. MIN_PY_VERSION = 7 # min version of 7 so we can take advantage of non-cyclic type hints DEVELOPMENT_MODE = False -IS_QUBES = False -"""limit type length for a block (soft enforced, ignored if invalid but block still stored).""" -MAX_BLOCK_TYPE_LENGTH = 15 -"""limit clock timestamp for new blocks to be skewed in the future in seconds, -2 minutes to allow plenty of time for slow block insertion and slight clock inaccuracies""" -MAX_BLOCK_CLOCK_SKEW = 120 + """Onionr user IDs are ed25519 keys, which are always 32 bytes in length""" MAIN_PUBLIC_KEY_SIZE = 32 ORIG_RUN_DIR_ENV_VAR = 'ORIG_ONIONR_RUN_DIR' DATABASE_LOCK_TIMEOUT = 60 -# Block creation anonymization requirements -MIN_BLOCK_UPLOAD_PEER_PERCENT = 0.1 - -WSGI_SERVER_REQUEST_TIMEOUT_SECS = 120 - -MAX_NEW_PEER_QUEUE = 1000 - BLOCK_EXPORT_FILE_EXT = '.onionr' # Begin OnionrValues migrated values -"""30 days is plenty of time for someone to decide to renew a block""" -DEFAULT_EXPIRE = 2678400 -# Metadata header section length limits, in bytes -BLOCK_METADATA_LENGTHS = {'meta': 1000, 'sig': 200, 'signer': 200, 'time': 10, - 'n': 1000, 'c': 1000, 'encryptType': 4, 'expire': 14} - -# Pool Eligibility Max Age -BLOCK_POOL_MAX_AGE = 300 - -"""Public key that signs MOTD messages shown in the web UI""" -MOTD_SIGN_KEY = "TRH763JURNY47QPBTTQ4LLPYCYQK6Q5YA33R6GANKZK5C5DKCIGQ" - -"""Public key that signs update notifications.""" -UPDATE_SIGN_KEY = "TRH763JURNY47QPBTTQ4LLPYCYQK6Q5YA33R6GANKZK5C5DKCIGQ" - - if os.path.exists(filepaths.daemon_mark_file): SCRIPT_NAME = 'start-daemon.sh' else: SCRIPT_NAME = 'onionr.sh' -if 'qubes' in platform.release().lower(): - IS_QUBES = True diff --git a/src/runtests/__init__.py b/src/runtests/__init__.py deleted file mode 100644 index 95c074cf..00000000 --- a/src/runtests/__init__.py +++ /dev/null @@ -1,77 +0,0 @@ -"""Onionr - Private P2P Communication. - -Test Onionr as it is running -""" -import os -from secrets import SystemRandom - -import logger -from onionrutils import epoch - -from . import uicheck -from .webpasstest import webpass_test -from .osver import test_os_ver_endpoint -from .dnsrebindingtest import test_dns_rebinding -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - -RUN_TESTS = [uicheck.check_ui, - webpass_test, - test_os_ver_endpoint, - ] - -SUCCESS_FILE = os.path.dirname(os.path.realpath(__file__)) + '/../../tests/runtime-result.txt' - - -class OnionrRunTestManager: - def __init__(self): - self.success: bool = True - self.run_date: int = 0 - - def run_tests(self): - tests = list(RUN_TESTS) - SystemRandom().shuffle(tests) - cur_time = epoch.get_epoch() - logger.info(f"Doing runtime tests at {cur_time}") - - try: - os.remove(SUCCESS_FILE) - except FileNotFoundError: - pass - - done_count: int = 0 - total_to_do: int = len(tests) - - try: - for i in tests: - last = i - logger.info("[RUNTIME TEST] " + last.__name__ + " started", - terminal=True, timestamp=True) - i(self) - done_count += 1 - logger.info("[RUNTIME TEST] " + last.__name__ + - f" passed {done_count}/{total_to_do}", - terminal=True, timestamp=True) - except (ValueError, AttributeError): - logger.error(last.__name__ + ' failed assertions', terminal=True) - except Exception as e: - logger.error(last.__name__ + ' failed with non-asserting exception') - logger.error(str(e)) - else: - ep = str(epoch.get_epoch()) - logger.info(f'All runtime tests passed at {ep}', terminal=True) - with open(SUCCESS_FILE, 'w') as f: - f.write(ep) - diff --git a/src/runtests/dnsrebindingtest.py b/src/runtests/dnsrebindingtest.py deleted file mode 100644 index 94a8421b..00000000 --- a/src/runtests/dnsrebindingtest.py +++ /dev/null @@ -1,46 +0,0 @@ -"""Onionr - Private P2P Communication. - -Test apis for dns rebinding -""" -import config -import requests -from filepaths import private_API_host_file, public_API_host_file -import logger -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - - -def test_dns_rebinding(test_manager): - f = '' - with open(private_API_host_file, 'r') as f: - host = f.read() - private_api_port = config.get('client.client.port') - - if requests.get(f'http://{host}:{private_api_port}/ping', headers={'host': 'example.com'}) == 'pong!': - raise ValueError('DNS rebinding failed') - logger.info('It is normal to see 403 errors right now', terminal=True) - - if config.get('general.security_level', 0) > 0 or not config.get('transports.tor', True): - return - public_api_port = config.get('client.public.port') - f = '' - with open(public_API_host_file, 'r') as f: - host = f.read() - - if requests.get(f'http://{host}:{public_api_port}/ping', headers={'host': 'example.com'}) == 'pong!': - raise ValueError('DNS rebinding failed') - logger.info('It is normal to see 403 errors right now', terminal=True) - - diff --git a/src/runtests/osver.py b/src/runtests/osver.py deleted file mode 100644 index 98ba46f4..00000000 --- a/src/runtests/osver.py +++ /dev/null @@ -1,8 +0,0 @@ -import platform - -from onionrutils import localcommand - - -def test_os_ver_endpoint(test_manager): - if localcommand.local_command('os') != platform.system().lower(): - raise ValueError('could not get proper os platform from endpoint /os') diff --git a/src/runtests/uicheck.py b/src/runtests/uicheck.py deleted file mode 100644 index 705051a4..00000000 --- a/src/runtests/uicheck.py +++ /dev/null @@ -1,9 +0,0 @@ -from onionrutils import localcommand -def check_ui(test_manager): - endpoints = ['/'] - for point in endpoints: - result = localcommand.local_command(point) - if not result: raise ValueError - result = result.lower() - if 'script' not in result: - raise ValueError(f'uicheck failed on {point}') diff --git a/src/runtests/webpasstest.py b/src/runtests/webpasstest.py deleted file mode 100644 index ec1136cd..00000000 --- a/src/runtests/webpasstest.py +++ /dev/null @@ -1,11 +0,0 @@ -import requests - -from onionrutils import localcommand - - -def webpass_test(test_manager): - if requests.get('http://' + localcommand.get_hostname() + '/ping') == \ - 'pong!': - raise ValueError - if localcommand.local_command('ping') != 'pong!': - raise ValueError('Could not ping with normal localcommand in webpasstest') diff --git a/src/setupkvvars/__init__.py b/src/setupkvvars/__init__.py deleted file mode 100644 index f3fbdcaf..00000000 --- a/src/setupkvvars/__init__.py +++ /dev/null @@ -1,34 +0,0 @@ -"""Onionr - Private P2P Communication. - -Initialize singleton deadsimplekv pseudo globals -""" -import queue - -from typing import TYPE_CHECKING - -from onionrutils import epoch - -if TYPE_CHECKING: - from deadsimplekv import DeadSimpleKV -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - - -def setup_kv(shared_vars: 'DeadSimpleKV'): - """Init initial pseudo-globals.""" - shared_vars.put('shutdown', False) - shared_vars.put('generating_blocks', []) - shared_vars.put('startTime', epoch.get_epoch()) - shared_vars.put('isOnline', True) diff --git a/src/utils/bettersleep.py b/src/utils/bettersleep.py deleted file mode 100644 index a3b5b8cc..00000000 --- a/src/utils/bettersleep.py +++ /dev/null @@ -1,30 +0,0 @@ -"""Onionr - Private P2P Communication. - -greenlet safe sleep, ignoring ctrl-c -""" -from gevent import sleep -from onionrutils.epoch import get_epoch -""" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - - -def better_sleep(wait: int): - """Sleep catching ctrl c for wait seconds.""" - start = get_epoch() - try: - sleep(wait) - except KeyboardInterrupt: - better_sleep(wait - (get_epoch() - start)) - diff --git a/src/utils/readoffset.py b/src/utils/readoffset.py deleted file mode 100644 index ecfcba4f..00000000 --- a/src/utils/readoffset.py +++ /dev/null @@ -1,17 +0,0 @@ -"""Onionr - Private P2P Communication. - -read from a file from an offset (efficiently) -""" -from collections import namedtuple - -OffsetReadResult = namedtuple('OffsetReadResult', ['data', 'new_offset']) - - -def read_from_offset(file_path, offset=0): - with open(file_path, 'rb') as f: - if offset: - f.seek(offset) - data = f.read() - offset = f.tell() - - return OffsetReadResult(data, offset) diff --git a/src/utils/reconstructhash.py b/src/utils/reconstructhash.py deleted file mode 100644 index 435d25ec..00000000 --- a/src/utils/reconstructhash.py +++ /dev/null @@ -1,51 +0,0 @@ -''' - Onionr - Private P2P Communication - - z-fill (zero fill) a string to a specific length - intended for reconstructing block hashes -''' -from typing import Union -''' - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -''' - - -def reconstruct_hash(hex_hash: Union[str, bytes], - length: int = 64) -> Union[str, bytes]: - """Pad hash hex string with zeros, return result""" - return hex_hash.zfill(length) - - -def deconstruct_hash(hex_hash: Union[str, bytes]) -> Union[str, bytes]: - """Remove leading zeros from hex hash, return result""" - new_hash = '' - ret_bytes = False - try: - hex_hash = hex_hash.decode() - ret_bytes = True - except AttributeError: - pass - - c = 0 - for x in hex_hash: - if x == '0': - c += 1 - else: - break - new_hash = hex_hash[c:] - - if ret_bytes: - - new_hash = new_hash.encode() - return new_hash diff --git a/start-ram.sh b/start-ram.sh index fcaaafda..399a42a4 100755 --- a/start-ram.sh +++ b/start-ram.sh @@ -13,4 +13,4 @@ echo "Future Onionr commands will use your set or default Onionr home directory, echo "Ultimately, a live boot operating system such as Tails or Debian would be better for you to use." $(dirname $0)/onionr.sh start & disown sleep 2 -$(dirname $0)/onionr.sh open-home +#$(dirname $0)/onionr.sh open-home diff --git a/static-data/connect-check.txt b/static-data/connect-check.txt deleted file mode 100755 index ef09c785..00000000 --- a/static-data/connect-check.txt +++ /dev/null @@ -1 +0,0 @@ -https://duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion/robots.txt,http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion/robots.txt,http://rurcblzhmdk22kttfkel2zduhyu3r6to7knyc7wiorzrx5gw4c3lftad.onion/ \ No newline at end of file diff --git a/static-data/default-plugins/example/main.py b/static-data/default-plugins/example/main.py index f5370f07..05913b9f 100644 --- a/static-data/default-plugins/example/main.py +++ b/static-data/default-plugins/example/main.py @@ -19,7 +19,6 @@ import onionrblocks locale.setlocale(locale.LC_ALL, '') sys.path.insert(0, os.path.dirname(os.path.realpath(__file__))) # import after path insert -from onionrutils.localcommand import local_command """ This program is free software: you can redistribute it and/or modify @@ -43,12 +42,6 @@ PLUGIN_VERSION = '0.0.0' def on_blocktest_cmd(api, data=None): bl = onionrblocks.create_anonvdf_block(input("Enter a message:").encode('utf-8'), b"tst", 3600) - logger.info( - local_command( - '/addvdfblock', - post_data=bl.id + bl.raw, - silent=False, post=True), - terminal=True) def on_printtest_cmd(api, data=None): diff --git a/static-data/default-plugins/tor/bootstrap.py b/static-data/default-plugins/tor/bootstrap.py index 60a0879f..040ce932 100644 --- a/static-data/default-plugins/tor/bootstrap.py +++ b/static-data/default-plugins/tor/bootstrap.py @@ -57,7 +57,10 @@ def on_bootstrap(api, data): while not config.get('tor.transport_address'): sleep(1) - config.reload() + try: + config.reload() + except Exception: + logger.error(traceback.format_exc(), terminal=True) socks_address, socks_port = get_socks()[0] diff --git a/static-data/default-plugins/tor/torpeer.py b/static-data/default-plugins/tor/torpeer.py index f3b290ae..87bd4630 100644 --- a/static-data/default-plugins/tor/torpeer.py +++ b/static-data/default-plugins/tor/torpeer.py @@ -1,5 +1,15 @@ import socks +from gossip.peerset import gossip_peer_set +import logger + +class HandleRevc: + def __init__(self, sock): + self.sock_recv = sock.recv + + def recv(self, *args, **kwargs): + return self.sock_recv(*args, **kwargs) + class TorPeer: @@ -18,7 +28,18 @@ class TorPeer: s = socks.socksocket() s.set_proxy(socks.SOCKS4, self.socks_host, self.socks_port, rdns=True) s.settimeout(connect_timeout) - s.connect((self.onion_address, 80)) + try: + s.connect((self.onion_address, 80)) + except socks.GeneralProxyError: + try: + gossip_peer_set.remove(self) + except KeyError: + pass + else: + logger.debug(f"Could not create socket to peer {self.transport_address}", terminal=True) + raise + mock_recv = HandleRevc(s) + s.recv = mock_recv.recv return s def __hash__(self): diff --git a/static-data/default_config.json b/static-data/default_config.json index 3dad7441..bd26caff 100755 --- a/static-data/default_config.json +++ b/static-data/default_config.json @@ -43,7 +43,7 @@ "minimum_score": -100 }, "plugins": { - "disabled": [], + "disabled": ["unixtransport"], "enabled": [] }, "statistics": { diff --git a/static-data/sounds/notification1.mp3 b/static-data/sounds/notification1.mp3 deleted file mode 100644 index 8021af73..00000000 Binary files a/static-data/sounds/notification1.mp3 and /dev/null differ diff --git a/static-data/www/friends/friends.js b/static-data/www/friends/friends.js deleted file mode 100755 index 1b9a2b30..00000000 --- a/static-data/www/friends/friends.js +++ /dev/null @@ -1,96 +0,0 @@ -/* - Onionr - Private P2P Communication - - This file handles the UI for managing friends/contacts - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -friendListDisplay = document.getElementById('friendList') -addForm = document.getElementById('addFriend') - -function removeFriend(pubkey){ - post_to_url('/friends/remove/' + pubkey, {'token': webpass}) -} - -addForm.onsubmit = function(){ - var friend = document.getElementsByName('addKey')[0] - var alias = document.getElementsByName('data')[0] - if (alias.value.toLowerCase().trim() == 'anonymous'){ - PNotify.error({ - text: "Anonymous is a reserved alias name" - }) - return false - } - - fetch('/friends/add/' + friend.value, { - method: 'POST', - headers: { - "token": webpass - }}).then(function(data) { - if (alias.value.trim().length > 0){ - post_to_url('/friends/setinfo/' + friend.value + '/name', {'data': alias.value, 'token': webpass}) - } - }) - - return false -} - -fetch('/friends/list', { - headers: { - "token": webpass - }}) -.then((resp) => resp.json()) // Transform the data into json -.then(function(resp) { - var keys = []; - for(var k in resp) keys.push(k); - console.log(keys) - - if (keys.length == 0){ - friendListDisplay.innerText = "None yet :(" - } - for (var i = 0; i < keys.length; i++){ - var peer = keys[i] - var name = resp[keys[i]]['name'] - if (name === null || name === ''){ - name = peer - } - var entry = document.createElement('div') - var nameText = document.createElement('input') - removeButton = document.createElement('button') - removeButton.classList.add('friendRemove') - removeButton.classList.add('button', 'is-danger') - entry.setAttribute('data-pubkey', peer) - removeButton.innerText = 'X' - nameText.value = name - nameText.readOnly = true - nameText.style.fontStyle = "italic" - entry.style.paddingTop = '8px' - entry.appendChild(removeButton) - entry.appendChild(nameText) - friendListDisplay.appendChild(entry) - } - // If friend delete buttons are pressed - - var friendRemoveBtns = document.getElementsByClassName('friendRemove') - - for (var x = 0; x < friendRemoveBtns.length; x++){ - var friendKey = friendRemoveBtns[x].parentElement.getAttribute('data-pubkey') - friendRemoveBtns[x].onclick = function(){ - removeFriend(friendKey) - } - } - - - }) \ No newline at end of file diff --git a/static-data/www/friends/index.html b/static-data/www/friends/index.html deleted file mode 100755 index e727b487..00000000 --- a/static-data/www/friends/index.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - Friends - - - - - - - - - - - - - - - - - - -
-
-
-
-
-

- Friends -

-

- Manage your friend list -

-
-
-
-
-

- - - -

-

- -

-

- Copy -

-
-
-
-
-
-
- -
- -
- - -
-
- -
-
-
-

- Add Friend -

-
-
-
-
-
- -

- -

-
-
- -

- -

-
-
-
- -
-
- -
-
-
-

- Friend List -

-
-
-
-
- -
-
-
-
-
-
-
- - - - - - - \ No newline at end of file diff --git a/static-data/www/friends/style.css b/static-data/www/friends/style.css deleted file mode 100755 index 6c0aa90a..00000000 --- a/static-data/www/friends/style.css +++ /dev/null @@ -1,4 +0,0 @@ -#friendList button{ - display: inline; - margin-right: 10px; -} diff --git a/static-data/www/onboarding/consentskip.js b/static-data/www/onboarding/consentskip.js deleted file mode 100644 index b00520cb..00000000 --- a/static-data/www/onboarding/consentskip.js +++ /dev/null @@ -1,24 +0,0 @@ -let skipConsentBtns = function(){ - var skipBtn = document.getElementsByClassName('skipToConsent')[0] - var sections = document.getElementsByClassName('step-item') - var content = document.getElementsByClassName('step-content') - skipBtn.onclick = function(e){ - e.preventDefault() - for (el of document.querySelectorAll('.steps-action a')){ - el.classList.add('is-hidden') - } - for (el of content){ - el.classList.remove('is-active') - var last = el - } - last.classList.add('is-active') - for (el = 0; el <= sections.length; el++){ - sections[el].classList.add('is-completed') - sections[el].classList.remove('is-active') - var last = sections[el] - } - last.classList.add('is-active') - - //is-completed - } -}() \ No newline at end of file diff --git a/static-data/www/onboarding/donate-modal.css b/static-data/www/onboarding/donate-modal.css deleted file mode 100644 index 6336eb98..00000000 --- a/static-data/www/onboarding/donate-modal.css +++ /dev/null @@ -1,13 +0,0 @@ -.donateHeader{ - font-size: 2em; -} - -.donateFinished{ - display: block; - margin-top: 1em; -} - -.donateBody p{ - padding-top: 1em; - text-align: justify; -} \ No newline at end of file diff --git a/static-data/www/onboarding/donate-modal.html b/static-data/www/onboarding/donate-modal.html deleted file mode 100644 index 0ccad02d..00000000 --- a/static-data/www/onboarding/donate-modal.html +++ /dev/null @@ -1,17 +0,0 @@ -Donate - -

- -

Onionr is a volunteer-driven project, and infrastructure is paid for out of pocket. -

-

- Please donate the price of a cup of coffee to sustain development. -

- -
- -Paypal/Card: Ko-fi -
-Bitcoin: 1onion55FXzm6h8KQw3zFw2igpHcV7LPq - - diff --git a/static-data/www/onboarding/donate.js b/static-data/www/onboarding/donate.js deleted file mode 100644 index 17f37db0..00000000 --- a/static-data/www/onboarding/donate.js +++ /dev/null @@ -1,45 +0,0 @@ -/* - Onionr - Private P2P Communication - - Handles onboarding donations for Onionr - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see -*/ - - -let donateFinishedButtons = document.getElementsByClassName('donateFinished') -configInfo = {} - -let openDonateModal = function(newConfigInfo){ - fetch('donate-modal.html') - .then((resp) => resp.text()) - .then(function(resp) { - document.getElementsByClassName('donateModal')[0].classList.add('is-active') - - // Load the donate modal html and display it - let donateBody = document.getElementsByClassName('donateBody')[0] - - donateBody.innerHTML = resp - - let donateFinishedButton = document.getElementsByClassName('donateFinished')[0] - - for (i = 0; i < donateFinishedButtons.length; i++){ - donateFinishedButtons[i].onclick = function(){ - document.getElementsByClassName('donateModal')[0].classList.remove('is-active') - sendConfig(configInfo) - } - } - - }) -} diff --git a/static-data/www/onboarding/index.html b/static-data/www/onboarding/index.html deleted file mode 100644 index 06210e5f..00000000 --- a/static-data/www/onboarding/index.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - - - - Onionr - - - - - - - - - - - - - - - - - - - - - - -
-
-

Your node will shutdown. Thank you for using Onionr.

-

If you are using random bind IPs (default in non dev mode), Onionr will have a different URL next time. -

-
-
- - -
-
-
-
-
-
- -
-

- Private Decentralized Communication -

-
-
- -
-
-
-
-
- -
- - - -
-
- - -
-
-
-
-
1
-
-

Welcome

-
-
-
-
2
-
-

Security

-
-
-
-
3
-
-

Plugins

-
-
-
-
4
-
-

Options

-
-
-
-
5
-
-

Consent

-
-
-
-
-
-

The default settings are intended to be safe for most users.

-

Use the button below to skip to the end.

- -
-
-
-
-

Configure Onionr according to one's threat model

-

I am concerned about the following:

-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
-
-
-
-

I want to contribute resources to the following...

-
-
-
- -
-
-
-
- -
-
-
- -
-
-
-
-
- Previous -
-
- Next -
-
-
-
-
- -
-
- - - \ No newline at end of file diff --git a/static-data/www/onboarding/onboarding.css b/static-data/www/onboarding/onboarding.css deleted file mode 100644 index 221559c8..00000000 --- a/static-data/www/onboarding/onboarding.css +++ /dev/null @@ -1,48 +0,0 @@ -img{ - vertical-align: middle; -} -.navbarLogo{ - display: inline; -} - -.onboarding{ - padding-left: 5%; - text-align: justify; - font-size: 1.8em; -} - -.icon{ - padding-right: 1em; -} -form{ - margin-left: 2%; -} - - -noscript{ - font-size: 2em; - color: yellow; -} - -p{ - font-size: 1.3em; -} - -.formBtn{ - margin-top: 1em; -} -.steps-content{ - min-height: 200px; -} - -.step-content .box{ - padding: 2em; -} - -.step-content .box span{ - text-decoration: underline; -} - -.steps-content input[type='checkbox'] { - margin-right: 10px; -} \ No newline at end of file diff --git a/static-data/www/onboarding/onboarding.js b/static-data/www/onboarding/onboarding.js deleted file mode 100644 index f431d13a..00000000 --- a/static-data/www/onboarding/onboarding.js +++ /dev/null @@ -1,86 +0,0 @@ -/* - Onionr - Private P2P Communication - - Handles onboarding for Onionr - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see -*/ - -fetch('/getnewkeys', { - headers: { - "token": webpass - }}) - .then((resp) => resp.text()) - .then(function(resp) { - keys = resp.split('') -}) - -function getCheckValue(elName){ - return document.getElementsByName(elName)[0].checked -} - -function sendConfig(configInfo){ - fetch('/setonboarding', { - method: 'POST', - headers: { - "token": webpass, - 'Content-Type': 'application/json' - }, - body: JSON.stringify({configInfo}) - }).then(function(data) { - window.location.href = window.location.origin + '/' + window.location.hash - }) -} - - -document.getElementById('onboardingForm').onsubmit = function(e){ - submitInfo = {} - submitInfo.massSurveil = getCheckValue('state') - submitInfo.stateTarget = getCheckValue('stateTarget') - submitInfo.localThreat = getCheckValue('local') - submitInfo.networkContrib = getCheckValue('networkContribution') - submitInfo.plainContrib = getCheckValue('networkContributionPlain') - submitInfo.donate = getCheckValue('donate') - //submitInfo.deterministic = getCheckValue('useDeterministic') - submitInfo.mail = getCheckValue('useMail') - submitInfo.circles = getCheckValue('useCircles') - submitInfo.useDark = getCheckValue('useDarkTheme') - - if (submitInfo.donate){ - openDonateModal(submitInfo) - return false - } - - sendConfig(submitInfo) - - e.preventDefault() -} - -/* Fix label clicking since bulma is weird */ - -let labelClickFix = function(labels) { - for (i = 0; i < labels.length; i++){ - labels[i].onclick = function(event){ - document.getElementsByName(event.target.getAttribute("for"))[0].checked ^= 1 - } - } - -} -let setupLabelFix = function(){ - var labels = document.getElementsByTagName('label') - var icons = document.getElementsByTagName('i') - labelClickFix(labels) - labelClickFix(icons) -} -setupLabelFix() diff --git a/static-data/www/private/images/made-with-bulma--dark.png b/static-data/www/private/images/made-with-bulma--dark.png deleted file mode 100644 index 94183dfd..00000000 Binary files a/static-data/www/private/images/made-with-bulma--dark.png and /dev/null differ diff --git a/static-data/www/private/images/python-powered.png b/static-data/www/private/images/python-powered.png deleted file mode 100644 index ac0ed8ff..00000000 Binary files a/static-data/www/private/images/python-powered.png and /dev/null differ diff --git a/static-data/www/private/index.html b/static-data/www/private/index.html deleted file mode 100755 index 313fa36f..00000000 --- a/static-data/www/private/index.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - - - Onionr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

Your node will shutdown. Thank you for using Onionr.

-

If you are using random bind IPs (default in non dev mode), Onionr will have a different URL next time.

-
-
- - - - -
-
-
-
-
-

- Onionr -

-

- Private Decentralized Communication -

-
- -
-
-
-
- -
- - - -
-
-
- -
-
- - - - - -

- Onionr Sites -

-
-
-
-
- -
-

- -

-

- Open -

-
-
-
-
-
-
-
- - - - - -

- Onionr MOTD -

-
-
-
- No MOTD currently. -
-
-
-
-
-
- - - - - -

- Networking Statistics -

-
-
-
-
-
-
-
-
-
-
- - - - - -

- Dashboard -

-
-
-
-
-
-
-
-

- - - -

-

- -

-

- -

-
-
-
- -
-
-
- - - - Security level: -
-
- - Uptime: -
-
- -

Connections

-
-
- ️ Last Received: None since start -
-
- - Total Requests: None since start -
-
- -
-

- - - -

-

- -

-

- -

-
- - - Outgoing Connections: -
-
Unable to get nodes
-
-
-
-

- Restart Tor -

-
-
-

Blocks

-
-
- - Stored blocks: -
-
- - Blocks to download: -
-
-
-
-

- -

-
-
-

Process

-
-
- - Current threads: -
-
- - RAM usage: -
-
-

Storage

-
-
- - File descriptors: -
-
- - Disk Usage: -
-
-
- - Configuration - -
-
-

Warning: Some values can be dangerous to change. Use caution.

- -
- Save Config -
-
-
-
-
-
-
-
-
- - - - - \ No newline at end of file diff --git a/static-data/www/private/js/console.js b/static-data/www/private/js/console.js deleted file mode 100644 index 9f7803a0..00000000 --- a/static-data/www/private/js/console.js +++ /dev/null @@ -1,2 +0,0 @@ -console.log('%c Welcome to Onionr 🧅', 'border: 1px solid purple; float: left; font-weight: bold; font-size: 50px;color: purple; padding: 3em; background-color: black;'); -console.log('See the documentation at https://gitlab.com/beardog/Onionr/tree/master/docs') \ No newline at end of file diff --git a/static-data/www/private/js/motd.js b/static-data/www/private/js/motd.js deleted file mode 100644 index 03cc03be..00000000 --- a/static-data/www/private/js/motd.js +++ /dev/null @@ -1,13 +0,0 @@ -fetch('/getmotd', { - headers: { - "token": webpass - }}) -.then((resp) => resp.text()) -.then(function(resp) { - resp = resp.trim() - if (resp.length <= 1){return} - let motds = document.getElementsByClassName("motdContent") - for (x = 0; x < motds.length; x++){ - motds[x].innerText = resp - } -}) \ No newline at end of file diff --git a/static-data/www/private/main.css b/static-data/www/private/main.css deleted file mode 100755 index b53e80b6..00000000 --- a/static-data/www/private/main.css +++ /dev/null @@ -1,63 +0,0 @@ -.idLink{ - -webkit-touch-callout: none; /* iOS Safari */ - -webkit-user-select: none; /* Safari */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* Internet Explorer/Edge */ - user-select: none; /* Non-prefixed version, currently - supported by Chrome and Opera */ -} -#refreshStats{ - margin: 5px; -} - -.motdCard{ - margin-top: 1em; -} - -#connectedNodes{ - overflow-y: hidden; - max-height: 300px; - max-width: 300px; -} - -#configToggle, #configContent{ - margin-left: 1em; - margin-right: 1em; - margin-bottom: 1em; -} - -.modal img{ - border-radius: 5px; -} - -.torStats{ - color: red; -} - -/* ---- reset ---- */ - - - canvas { - display: block; - vertical-align: bottom; - } - - /* ---- particles.js container ---- */ - - #particles-js { - position:absolute; - width:100%; - height:100%; - top:0; - z-index:-1; - } - - .mainCont{ - z-index: 2; - position: fixed; - - } - - .torTransportField { - margin-top: 2em; - } \ No newline at end of file diff --git a/static-data/www/shared/about.html b/static-data/www/shared/about.html deleted file mode 100644 index dc5c8d5c..00000000 --- a/static-data/www/shared/about.html +++ /dev/null @@ -1,38 +0,0 @@ - - -

Onionr is a private decentralized communication network

-

Source code

-

Please donate to keep the project alive. See info in readme

-

- -Core developers: - - -Contributors: - - -
- -Onionr is built with: -
-
    -
  • Tor - Onionr routes all traffic through Tor by default - 3-clause BSD license
  • -
  • Stem - Python library to interact with Tor - LGPLv3
  • -
  • Flask - Lightweight Python web framework - 3-clause BSD license
  • -
  • Gevent - For the thread-safe WSGI servers - MIT license
  • -
  • Requests - HTTP requests for humans - Apache 2.0 license
  • -
  • PyNaCl - Python libsodium binding - Apache 2.0 license
  • -
  • libsodium - modern crypto library - ISC license
  • -
  • Font Awesome - Icon set and toolkit - MIT license & CC-By 4.0
  • -
- -
- - \ No newline at end of file diff --git a/static-data/www/shared/base32.js b/static-data/www/shared/base32.js deleted file mode 100644 index 09005e5c..00000000 --- a/static-data/www/shared/base32.js +++ /dev/null @@ -1,469 +0,0 @@ -/* - * [hi-base32]{@link https://github.com/emn178/hi-base32} - * - * @version 0.5.0 - * @author Chen, Yi-Cyuan [emn178@gmail.com] - * @copyright Chen, Yi-Cyuan 2015-2018 - * @license MIT - * /* -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ -/*jslint bitwise: true */ -(function () { - 'use strict'; - - var root = typeof window === 'object' ? window : {}; - var NODE_JS = !root.HI_BASE32_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node; - if (NODE_JS) { - root = global; - } - var COMMON_JS = !root.HI_BASE32_NO_COMMON_JS && typeof module === 'object' && module.exports; - var AMD = typeof define === 'function' && define.amd; - var BASE32_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split(''); - var BASE32_DECODE_CHAR = { - 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8, - 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15, 'Q': 16, - 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24, - 'Z': 25, '2': 26, '3': 27, '4': 28, '5': 29, '6': 30, '7': 31 - }; - - var blocks = [0, 0, 0, 0, 0, 0, 0, 0]; - - var throwInvalidUtf8 = function (position, partial) { - if (partial.length > 10) { - partial = '...' + partial.substr(-10); - } - var err = new Error('Decoded data is not valid UTF-8.' - + ' Maybe try base32.decode.asBytes()?' - + ' Partial data after reading ' + position + ' bytes: ' + partial + ' <-'); - err.position = position; - throw err; - }; - - var toUtf8String = function (bytes) { - var str = '', length = bytes.length, i = 0, followingChars = 0, b, c; - while (i < length) { - b = bytes[i++]; - if (b <= 0x7F) { - str += String.fromCharCode(b); - continue; - } else if (b > 0xBF && b <= 0xDF) { - c = b & 0x1F; - followingChars = 1; - } else if (b <= 0xEF) { - c = b & 0x0F; - followingChars = 2; - } else if (b <= 0xF7) { - c = b & 0x07; - followingChars = 3; - } else { - throwInvalidUtf8(i, str); - } - - for (var j = 0; j < followingChars; ++j) { - b = bytes[i++]; - if (b < 0x80 || b > 0xBF) { - throwInvalidUtf8(i, str); - } - c <<= 6; - c += b & 0x3F; - } - if (c >= 0xD800 && c <= 0xDFFF) { - throwInvalidUtf8(i, str); - } - if (c > 0x10FFFF) { - throwInvalidUtf8(i, str); - } - - if (c <= 0xFFFF) { - str += String.fromCharCode(c); - } else { - c -= 0x10000; - str += String.fromCharCode((c >> 10) + 0xD800); - str += String.fromCharCode((c & 0x3FF) + 0xDC00); - } - } - return str; - }; - - var decodeAsBytes = function (base32Str) { - if (!/^[A-Z2-7=]+$/.test(base32Str)) { - throw new Error('Invalid base32 characters'); - } - base32Str = base32Str.replace(/=/g, ''); - var v1, v2, v3, v4, v5, v6, v7, v8, bytes = [], index = 0, length = base32Str.length; - - // 4 char to 3 bytes - for (var i = 0, count = length >> 3 << 3; i < count;) { - v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - bytes[index++] = (v1 << 3 | v2 >>> 2) & 255; - bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255; - bytes[index++] = (v4 << 4 | v5 >>> 1) & 255; - bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255; - bytes[index++] = (v7 << 5 | v8) & 255; - } - - // remain bytes - var remain = length - count; - if (remain === 2) { - v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - bytes[index++] = (v1 << 3 | v2 >>> 2) & 255; - } else if (remain === 4) { - v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - bytes[index++] = (v1 << 3 | v2 >>> 2) & 255; - bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255; - } else if (remain === 5) { - v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - bytes[index++] = (v1 << 3 | v2 >>> 2) & 255; - bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255; - bytes[index++] = (v4 << 4 | v5 >>> 1) & 255; - } else if (remain === 7) { - v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - bytes[index++] = (v1 << 3 | v2 >>> 2) & 255; - bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255; - bytes[index++] = (v4 << 4 | v5 >>> 1) & 255; - bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255; - } - return bytes; - }; - - var encodeAscii = function (str) { - var v1, v2, v3, v4, v5, base32Str = '', length = str.length; - for (var i = 0, count = parseInt(length / 5) * 5; i < count;) { - v1 = str.charCodeAt(i++); - v2 = str.charCodeAt(i++); - v3 = str.charCodeAt(i++); - v4 = str.charCodeAt(i++); - v5 = str.charCodeAt(i++); - base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + - BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] + - BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] + - BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] + - BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] + - BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] + - BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] + - BASE32_ENCODE_CHAR[v5 & 31]; - } - - // remain char - var remain = length - count; - if (remain === 1) { - v1 = str.charCodeAt(i); - base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + - BASE32_ENCODE_CHAR[(v1 << 2) & 31] + - '======'; - } else if (remain === 2) { - v1 = str.charCodeAt(i++); - v2 = str.charCodeAt(i); - base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + - BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] + - BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] + - BASE32_ENCODE_CHAR[(v2 << 4) & 31] + - '===='; - } else if (remain === 3) { - v1 = str.charCodeAt(i++); - v2 = str.charCodeAt(i++); - v3 = str.charCodeAt(i); - base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + - BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] + - BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] + - BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] + - BASE32_ENCODE_CHAR[(v3 << 1) & 31] + - '==='; - } else if (remain === 4) { - v1 = str.charCodeAt(i++); - v2 = str.charCodeAt(i++); - v3 = str.charCodeAt(i++); - v4 = str.charCodeAt(i); - base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + - BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] + - BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] + - BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] + - BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] + - BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] + - BASE32_ENCODE_CHAR[(v4 << 3) & 31] + - '='; - } - return base32Str; - }; - - var encodeUtf8 = function (str) { - var v1, v2, v3, v4, v5, code, end = false, base32Str = '', - index = 0, i, start = 0, bytes = 0, length = str.length; - do { - blocks[0] = blocks[5]; - blocks[1] = blocks[6]; - blocks[2] = blocks[7]; - for (i = start; index < length && i < 5; ++index) { - code = str.charCodeAt(index); - if (code < 0x80) { - blocks[i++] = code; - } else if (code < 0x800) { - blocks[i++] = 0xc0 | (code >> 6); - blocks[i++] = 0x80 | (code & 0x3f); - } else if (code < 0xd800 || code >= 0xe000) { - blocks[i++] = 0xe0 | (code >> 12); - blocks[i++] = 0x80 | ((code >> 6) & 0x3f); - blocks[i++] = 0x80 | (code & 0x3f); - } else { - code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++index) & 0x3ff)); - blocks[i++] = 0xf0 | (code >> 18); - blocks[i++] = 0x80 | ((code >> 12) & 0x3f); - blocks[i++] = 0x80 | ((code >> 6) & 0x3f); - blocks[i++] = 0x80 | (code & 0x3f); - } - } - bytes += i - start; - start = i - 5; - if (index === length) { - ++index; - } - if (index > length && i < 6) { - end = true; - } - v1 = blocks[0]; - if (i > 4) { - v2 = blocks[1]; - v3 = blocks[2]; - v4 = blocks[3]; - v5 = blocks[4]; - base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + - BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] + - BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] + - BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] + - BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] + - BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] + - BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] + - BASE32_ENCODE_CHAR[v5 & 31]; - } else if (i === 1) { - base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + - BASE32_ENCODE_CHAR[(v1 << 2) & 31] + - '======'; - } else if (i === 2) { - v2 = blocks[1]; - base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + - BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] + - BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] + - BASE32_ENCODE_CHAR[(v2 << 4) & 31] + - '===='; - } else if (i === 3) { - v2 = blocks[1]; - v3 = blocks[2]; - base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + - BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] + - BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] + - BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] + - BASE32_ENCODE_CHAR[(v3 << 1) & 31] + - '==='; - } else { - v2 = blocks[1]; - v3 = blocks[2]; - v4 = blocks[3]; - base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + - BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] + - BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] + - BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] + - BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] + - BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] + - BASE32_ENCODE_CHAR[(v4 << 3) & 31] + - '='; - } - } while (!end); - return base32Str; - }; - - var encodeBytes = function (bytes) { - var v1, v2, v3, v4, v5, base32Str = '', length = bytes.length; - for (var i = 0, count = parseInt(length / 5) * 5; i < count;) { - v1 = bytes[i++]; - v2 = bytes[i++]; - v3 = bytes[i++]; - v4 = bytes[i++]; - v5 = bytes[i++]; - base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + - BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] + - BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] + - BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] + - BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] + - BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] + - BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] + - BASE32_ENCODE_CHAR[v5 & 31]; - } - - // remain char - var remain = length - count; - if (remain === 1) { - v1 = bytes[i]; - base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + - BASE32_ENCODE_CHAR[(v1 << 2) & 31] + - '======'; - } else if (remain === 2) { - v1 = bytes[i++]; - v2 = bytes[i]; - base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + - BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] + - BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] + - BASE32_ENCODE_CHAR[(v2 << 4) & 31] + - '===='; - } else if (remain === 3) { - v1 = bytes[i++]; - v2 = bytes[i++]; - v3 = bytes[i]; - base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + - BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] + - BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] + - BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] + - BASE32_ENCODE_CHAR[(v3 << 1) & 31] + - '==='; - } else if (remain === 4) { - v1 = bytes[i++]; - v2 = bytes[i++]; - v3 = bytes[i++]; - v4 = bytes[i]; - base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + - BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] + - BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] + - BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] + - BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] + - BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] + - BASE32_ENCODE_CHAR[(v4 << 3) & 31] + - '='; - } - return base32Str; - }; - - var encode = function (input, asciiOnly) { - var notString = typeof(input) !== 'string'; - if (notString && input.constructor === ArrayBuffer) { - input = new Uint8Array(input); - } - if (notString) { - return encodeBytes(input); - } else if (asciiOnly) { - return encodeAscii(input); - } else { - return encodeUtf8(input); - } - }; - - var decode = function (base32Str, asciiOnly) { - if (!asciiOnly) { - return toUtf8String(decodeAsBytes(base32Str)); - } - if (!/^[A-Z2-7=]+$/.test(base32Str)) { - throw new Error('Invalid base32 characters'); - } - var v1, v2, v3, v4, v5, v6, v7, v8, str = '', length = base32Str.indexOf('='); - if (length === -1) { - length = base32Str.length; - } - - // 8 char to 5 bytes - for (var i = 0, count = length >> 3 << 3; i < count;) { - v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) + - String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) + - String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) + - String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255) + - String.fromCharCode((v7 << 5 | v8) & 255); - } - - // remain bytes - var remain = length - count; - if (remain === 2) { - v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255); - } else if (remain === 4) { - v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) + - String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255); - } else if (remain === 5) { - v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) + - String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) + - String.fromCharCode((v4 << 4 | v5 >>> 1) & 255); - } else if (remain === 7) { - v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; - str += String.fromCharCode((v1 << 3 | v2 >>> 2) & 255) + - String.fromCharCode((v2 << 6 | v3 << 1 | v4 >>> 4) & 255) + - String.fromCharCode((v4 << 4 | v5 >>> 1) & 255) + - String.fromCharCode((v5 << 7 | v6 << 2 | v7 >>> 3) & 255); - } - return str; - }; - - var exports = { - encode: encode, - decode: decode - }; - decode.asBytes = decodeAsBytes; - - if (COMMON_JS) { - module.exports = exports; - } else { - root.base32 = exports; - if (AMD) { - define(function() { - return exports; - }); - } - } -})(); diff --git a/static-data/www/shared/bulma-quickview.js b/static-data/www/shared/bulma-quickview.js deleted file mode 100644 index bd1a33d4..00000000 --- a/static-data/www/shared/bulma-quickview.js +++ /dev/null @@ -1,436 +0,0 @@ -/* -MIT License - -Copyright (c) 2017 Wikiki - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["bulmaQuickview"] = factory(); - else - root["bulmaQuickview"] = factory(); -})(typeof self !== 'undefined' ? self : this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__events__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__defaultOptions__ = __webpack_require__(2); -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - - - - -var onQuickviewShowClick = Symbol('onQuickviewShowClick'); -var onQuickviewDismissClick = Symbol('onQuickviewDismissClick'); - -var bulmaQuickview = function (_EventEmitter) { - _inherits(bulmaQuickview, _EventEmitter); - - function bulmaQuickview(selector) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - _classCallCheck(this, bulmaQuickview); - - var _this = _possibleConstructorReturn(this, (bulmaQuickview.__proto__ || Object.getPrototypeOf(bulmaQuickview)).call(this)); - - _this.element = typeof selector === 'string' ? document.querySelector(selector) : selector; - // An invalid selector or non-DOM node has been provided. - if (!_this.element) { - throw new Error('An invalid selector or non-DOM node has been provided.'); - } - - _this._clickEvents = ['click']; - /// Set default options and merge with instance defined - _this.options = _extends({}, __WEBPACK_IMPORTED_MODULE_1__defaultOptions__["a" /* default */], options); - - _this[onQuickviewShowClick] = _this[onQuickviewShowClick].bind(_this); - _this[onQuickviewDismissClick] = _this[onQuickviewDismissClick].bind(_this); - - _this.init(); - return _this; - } - - /** - * Initiate all DOM element containing carousel class - * @method - * @return {Array} Array of all Carousel instances - */ - - - _createClass(bulmaQuickview, [{ - key: 'init', - - - /** - * Initiate plugin - * @method init - * @return {void} - */ - value: function init() { - this.quickview = document.getElementById(this.element.dataset['target']); - this.dismissElements = document.querySelectorAll('[data-dismiss="quickview"]'); - - this._bindEvents(); - - this.emit('quickview:ready', { - element: this.element, - quickview: this.quickview - }); - } - - /** - * Bind all events - * @method _bindEvents - * @return {void} - */ - - }, { - key: '_bindEvents', - value: function _bindEvents() { - var _this2 = this; - - this._clickEvents.forEach(function (event) { - _this2.element.addEventListener(event, _this2[onQuickviewShowClick], false); - }); - - [].forEach.call(this.dismissElements, function (dismissElement) { - _this2._clickEvents.forEach(function (event) { - dismissElement.addEventListener(event, _this2[onQuickviewDismissClick], false); - }); - }); - } - }, { - key: onQuickviewShowClick, - value: function value(e) { - this.quickview.classList.add('is-active'); - - this.emit('quickview:show', { - element: this.element, - quickview: this.quickview - }); - } - }, { - key: onQuickviewDismissClick, - value: function value(e) { - this.quickview.classList.remove('is-active'); - - this.emit('quickview:hide', { - element: this.element, - quickview: this.quickview - }); - } - }], [{ - key: 'attach', - value: function attach() { - var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '[data-show="quickview"]'; - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - var instances = new Array(); - - var elements = document.querySelectorAll(selector); - [].forEach.call(elements, function (element) { - setTimeout(function () { - instances.push(new bulmaQuickview(element, options)); - }, 100); - }); - return instances; - } - }]); - - return bulmaQuickview; -}(__WEBPACK_IMPORTED_MODULE_0__events__["a" /* default */]); - -/* harmony default export */ __webpack_exports__["default"] = (bulmaQuickview); - -/***/ }), -/* 1 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var EventEmitter = function () { - function EventEmitter() { - var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - - _classCallCheck(this, EventEmitter); - - this._listeners = new Map(listeners); - this._middlewares = new Map(); - } - - _createClass(EventEmitter, [{ - key: "listenerCount", - value: function listenerCount(eventName) { - if (!this._listeners.has(eventName)) { - return 0; - } - - var eventListeners = this._listeners.get(eventName); - return eventListeners.length; - } - }, { - key: "removeListeners", - value: function removeListeners() { - var _this = this; - - var eventName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - var middleware = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (eventName !== null) { - if (Array.isArray(eventName)) { - name.forEach(function (e) { - return _this.removeListeners(e, middleware); - }); - } else { - this._listeners.delete(eventName); - - if (middleware) { - this.removeMiddleware(eventName); - } - } - } else { - this._listeners = new Map(); - } - } - }, { - key: "middleware", - value: function middleware(eventName, fn) { - var _this2 = this; - - if (Array.isArray(eventName)) { - name.forEach(function (e) { - return _this2.middleware(e, fn); - }); - } else { - if (!Array.isArray(this._middlewares.get(eventName))) { - this._middlewares.set(eventName, []); - } - - this._middlewares.get(eventName).push(fn); - } - } - }, { - key: "removeMiddleware", - value: function removeMiddleware() { - var _this3 = this; - - var eventName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - - if (eventName !== null) { - if (Array.isArray(eventName)) { - name.forEach(function (e) { - return _this3.removeMiddleware(e); - }); - } else { - this._middlewares.delete(eventName); - } - } else { - this._middlewares = new Map(); - } - } - }, { - key: "on", - value: function on(name, callback) { - var _this4 = this; - - var once = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - if (Array.isArray(name)) { - name.forEach(function (e) { - return _this4.on(e, callback); - }); - } else { - name = name.toString(); - var split = name.split(/,|, | /); - - if (split.length > 1) { - split.forEach(function (e) { - return _this4.on(e, callback); - }); - } else { - if (!Array.isArray(this._listeners.get(name))) { - this._listeners.set(name, []); - } - - this._listeners.get(name).push({ once: once, callback: callback }); - } - } - } - }, { - key: "once", - value: function once(name, callback) { - this.on(name, callback, true); - } - }, { - key: "emit", - value: function emit(name, data) { - var _this5 = this; - - var silent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - name = name.toString(); - var listeners = this._listeners.get(name); - var middlewares = null; - var doneCount = 0; - var execute = silent; - - if (Array.isArray(listeners)) { - listeners.forEach(function (listener, index) { - // Start Middleware checks unless we're doing a silent emit - if (!silent) { - middlewares = _this5._middlewares.get(name); - // Check and execute Middleware - if (Array.isArray(middlewares)) { - middlewares.forEach(function (middleware) { - middleware(data, function () { - var newData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - - if (newData !== null) { - data = newData; - } - doneCount++; - }, name); - }); - - if (doneCount >= middlewares.length) { - execute = true; - } - } else { - execute = true; - } - } - - // If Middleware checks have been passed, execute - if (execute) { - if (listener.once) { - listeners[index] = null; - } - listener.callback(data); - } - }); - - // Dirty way of removing used Events - while (listeners.indexOf(null) !== -1) { - listeners.splice(listeners.indexOf(null), 1); - } - } - } - }]); - - return EventEmitter; -}(); - -/* harmony default export */ __webpack_exports__["a"] = (EventEmitter); - -/***/ }), -/* 2 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var defaultOptions = {}; - -/* harmony default export */ __webpack_exports__["a"] = (defaultOptions); - -/***/ }) -/******/ ])["default"]; -}); \ No newline at end of file diff --git a/static-data/www/shared/bulma-quickview.min.css b/static-data/www/shared/bulma-quickview.min.css deleted file mode 100644 index dc43ffbf..00000000 --- a/static-data/www/shared/bulma-quickview.min.css +++ /dev/null @@ -1,24 +0,0 @@ -/* -MIT License - -Copyright (c) 2017 Wikiki - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ -@-webkit-keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.quickview{display:flex;flex-direction:column;background-color:#fff;max-width:calc(100% - 50px);position:fixed;top:0;bottom:0;z-index:35;-webkit-transform:translateZ(0);transform:translateZ(0);transition:.3s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000;will-change:transform}.quickview.is-marginless{max-width:100%}@media screen and (max-width:768px){.quickview{width:100%;right:-100%}}@media screen and (min-width:769px),print{.quickview{width:50%;right:-50%}}@media screen and (min-width:1088px){.quickview{width:35%;right:-35%}}@media screen and (min-width:1280px){.quickview{width:30%;right:-30%}}@media screen and (min-width:1472px){.quickview{width:25%;right:-25%}}@media screen and (max-width:768px){.quickview.is-left{left:-100%}}@media screen and (min-width:769px),print{.quickview.is-left{left:-50%}}@media screen and (min-width:1088px){.quickview.is-left{left:-35%}}@media screen and (min-width:1280px){.quickview.is-left{left:-30%}}@media screen and (min-width:1472px){.quickview.is-left{left:-25%}}.quickview.is-active{right:0;box-shadow:5px 0 13px 3px rgba(0,0,0,.1)}.quickview.is-active.is-left{left:0}.quickview-header{display:flex;justify-content:space-between;align-items:center;padding:0 1rem;min-height:3.25em!important;border-bottom:1px solid #dbdbdb}.quickview-header.is-white{background-color:#fff}.quickview-header.is-white .title{color:#0a0a0a}.quickview-header.is-black{background-color:#0a0a0a}.quickview-header.is-black .title{color:#fff}.quickview-header.is-light{background-color:#f5f5f5}.quickview-header.is-light .title{color:#363636}.quickview-header.is-dark{background-color:#363636}.quickview-header.is-dark .title{color:#f5f5f5}.quickview-header.is-primary{background-color:#00d1b2}.quickview-header.is-primary .title{color:#fff}.quickview-header.is-link{background-color:#3273dc}.quickview-header.is-link .title{color:#fff}.quickview-header.is-info{background-color:#209cee}.quickview-header.is-info .title{color:#fff}.quickview-header.is-success{background-color:#23d160}.quickview-header.is-success .title{color:#fff}.quickview-header.is-warning{background-color:#ffdd57}.quickview-header.is-warning .title{color:rgba(0,0,0,.7)}.quickview-header.is-danger{background-color:#ff3860}.quickview-header.is-danger .title{color:#fff}.quickview-header .title{font-size:1rem;font-weight:300;margin-bottom:0}.quickview-header .title img{max-height:2em}.quickview-body{flex:1 1 0%;overflow-y:auto}.quickview-footer{display:flex;justify-content:space-between;align-items:center;padding:0 1rem;min-height:4rem;background-color:#f5f5f5;border-top:1px solid #dbdbdb}.quickview-footer>*{margin:0 .4rem} \ No newline at end of file diff --git a/static-data/www/shared/bulma-steps.min.css b/static-data/www/shared/bulma-steps.min.css deleted file mode 100644 index 1b19675f..00000000 --- a/static-data/www/shared/bulma-steps.min.css +++ /dev/null @@ -1,24 +0,0 @@ -/* -MIT License - -Copyright (c) 2017 Wikiki - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ -@-webkit-keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.steps:not(:last-child){margin-bottom:1.5rem}.steps{display:flex;flex-wrap:wrap;font-size:1rem;min-height:2rem}.steps .step-item{margin-top:0;position:relative;flex-grow:1;flex-basis:0}.steps .step-item:not(:first-child){flex-basis:1em;flex-grow:1;flex-shrink:1}.steps .step-item:not(:first-child)::before{content:" ";display:block;position:absolute}.steps .step-item::before{background:linear-gradient(to left,#dbdbdb 50%,#00d1b2 50%);background-size:200% 100%;background-position:right bottom}.steps .step-item::before .step-marker{color:#fff}.steps .step-item.is-active::before{background-position:left bottom}.steps .step-item.is-active .step-marker{background-color:#fff;border-color:#00d1b2;color:#00d1b2}.steps .step-item.is-completed::before{background-position:left bottom}.steps .step-item.is-completed .step-marker{color:#fff;background-color:#00d1b2}.steps .step-item .step-marker{align-items:center;display:flex;border-radius:50%;font-weight:700;justify-content:center;background:#b5b5b5;color:#fff;border:.2em solid #fff;z-index:1}.steps .step-item .step-details{text-align:center}.steps .step-item.is-white::before{background:linear-gradient(to left,#dbdbdb 50%,#fff 50%);background-size:200% 100%;background-position:right bottom}.steps .step-item.is-white.is-active::before{background-position:left bottom}.steps .step-item.is-white.is-active .step-marker{background-color:#fff;border-color:#fff;color:#fff}.steps .step-item.is-white.is-completed::before{background-position:left bottom}.steps .step-item.is-white.is-completed .step-marker{color:#0a0a0a;background-color:#fff}.steps .step-item.is-black::before{background:linear-gradient(to left,#dbdbdb 50%,#0a0a0a 50%);background-size:200% 100%;background-position:right bottom}.steps .step-item.is-black.is-active::before{background-position:left bottom}.steps .step-item.is-black.is-active .step-marker{background-color:#fff;border-color:#0a0a0a;color:#0a0a0a}.steps .step-item.is-black.is-completed::before{background-position:left bottom}.steps .step-item.is-black.is-completed .step-marker{color:#fff;background-color:#0a0a0a}.steps .step-item.is-light::before{background:linear-gradient(to left,#dbdbdb 50%,#f5f5f5 50%);background-size:200% 100%;background-position:right bottom}.steps .step-item.is-light.is-active::before{background-position:left bottom}.steps .step-item.is-light.is-active .step-marker{background-color:#fff;border-color:#f5f5f5;color:#f5f5f5}.steps .step-item.is-light.is-completed::before{background-position:left bottom}.steps .step-item.is-light.is-completed .step-marker{color:#363636;background-color:#f5f5f5}.steps .step-item.is-dark::before{background:linear-gradient(to left,#dbdbdb 50%,#363636 50%);background-size:200% 100%;background-position:right bottom}.steps .step-item.is-dark.is-active::before{background-position:left bottom}.steps .step-item.is-dark.is-active .step-marker{background-color:#fff;border-color:#363636;color:#363636}.steps .step-item.is-dark.is-completed::before{background-position:left bottom}.steps .step-item.is-dark.is-completed .step-marker{color:#f5f5f5;background-color:#363636}.steps .step-item.is-primary::before{background:linear-gradient(to left,#dbdbdb 50%,#00d1b2 50%);background-size:200% 100%;background-position:right bottom}.steps .step-item.is-primary.is-active::before{background-position:left bottom}.steps .step-item.is-primary.is-active .step-marker{background-color:#fff;border-color:#00d1b2;color:#00d1b2}.steps .step-item.is-primary.is-completed::before{background-position:left bottom}.steps .step-item.is-primary.is-completed .step-marker{color:#fff;background-color:#00d1b2}.steps .step-item.is-link::before{background:linear-gradient(to left,#dbdbdb 50%,#3273dc 50%);background-size:200% 100%;background-position:right bottom}.steps .step-item.is-link.is-active::before{background-position:left bottom}.steps .step-item.is-link.is-active .step-marker{background-color:#fff;border-color:#3273dc;color:#3273dc}.steps .step-item.is-link.is-completed::before{background-position:left bottom}.steps .step-item.is-link.is-completed .step-marker{color:#fff;background-color:#3273dc}.steps .step-item.is-info::before{background:linear-gradient(to left,#dbdbdb 50%,#209cee 50%);background-size:200% 100%;background-position:right bottom}.steps .step-item.is-info.is-active::before{background-position:left bottom}.steps .step-item.is-info.is-active .step-marker{background-color:#fff;border-color:#209cee;color:#209cee}.steps .step-item.is-info.is-completed::before{background-position:left bottom}.steps .step-item.is-info.is-completed .step-marker{color:#fff;background-color:#209cee}.steps .step-item.is-success::before{background:linear-gradient(to left,#dbdbdb 50%,#23d160 50%);background-size:200% 100%;background-position:right bottom}.steps .step-item.is-success.is-active::before{background-position:left bottom}.steps .step-item.is-success.is-active .step-marker{background-color:#fff;border-color:#23d160;color:#23d160}.steps .step-item.is-success.is-completed::before{background-position:left bottom}.steps .step-item.is-success.is-completed .step-marker{color:#fff;background-color:#23d160}.steps .step-item.is-warning::before{background:linear-gradient(to left,#dbdbdb 50%,#ffdd57 50%);background-size:200% 100%;background-position:right bottom}.steps .step-item.is-warning.is-active::before{background-position:left bottom}.steps .step-item.is-warning.is-active .step-marker{background-color:#fff;border-color:#ffdd57;color:#ffdd57}.steps .step-item.is-warning.is-completed::before{background-position:left bottom}.steps .step-item.is-warning.is-completed .step-marker{color:rgba(0,0,0,.7);background-color:#ffdd57}.steps .step-item.is-danger::before{background:linear-gradient(to left,#dbdbdb 50%,#ff3860 50%);background-size:200% 100%;background-position:right bottom}.steps .step-item.is-danger.is-active::before{background-position:left bottom}.steps .step-item.is-danger.is-active .step-marker{background-color:#fff;border-color:#ff3860;color:#ff3860}.steps .step-item.is-danger.is-completed::before{background-position:left bottom}.steps .step-item.is-danger.is-completed .step-marker{color:#fff;background-color:#ff3860}.steps .steps-content{align-items:stretch;flex-basis:100%;margin:2rem 0}.steps .steps-content .step-content{display:none}.steps .steps-content .step-content.is-active{display:block}.steps .steps-actions{display:flex;align-items:stretch;flex-basis:100%}.steps .steps-actions .steps-action{display:flex;flex-basis:0;flex-grow:1;margin:.5rem;justify-content:center;align-items:center}.steps.is-animated .step-item::before{transition:all 2s ease}.steps.is-animated .step-item .step-marker{transition:all 0s ease;transition-delay:1.5s}.steps .step-item:not(:first-child)::before{height:.2em;width:100%;bottom:0;left:-50%;top:1rem}.steps .step-item .step-marker{height:2rem;width:2rem;position:absolute;left:calc(50% - 1rem)}.steps .step-item .step-marker .icon *{font-size:1rem}.steps .step-item .step-details{margin-top:2rem;margin-left:.5em;margin-right:.5em;padding-top:.2em}.steps .step-item .step-details .step-title{font-size:1.2rem;font-weight:600}.steps.is-small{font-size:.75rem;min-height:1.5rem}.steps.is-small .step-item:not(:first-child)::before{height:.2em;width:100%;bottom:0;left:-50%;top:.75rem}.steps.is-small .step-item .step-marker{height:1.5rem;width:1.5rem;position:absolute;left:calc(50% - .75rem)}.steps.is-small .step-item .step-marker .icon *{font-size:.75rem}.steps.is-small .step-item .step-details{margin-top:1.5rem;margin-left:.5em;margin-right:.5em;padding-top:.2em}.steps.is-small .step-item .step-details .step-title{font-size:.9rem;font-weight:600}.steps.is-medium{font-size:1.25rem;min-height:2.5rem}.steps.is-medium .step-item:not(:first-child)::before{height:.2em;width:100%;bottom:0;left:-50%;top:1.25rem}.steps.is-medium .step-item .step-marker{height:2.5rem;width:2.5rem;position:absolute;left:calc(50% - 1.25rem)}.steps.is-medium .step-item .step-marker .icon *{font-size:1.25rem}.steps.is-medium .step-item .step-details{margin-top:2.5rem;margin-left:.5em;margin-right:.5em;padding-top:.2em}.steps.is-medium .step-item .step-details .step-title{font-size:1.5rem;font-weight:600}.steps.is-large{font-size:1.5rem;min-height:3rem}.steps.is-large .step-item:not(:first-child)::before{height:.2em;width:100%;bottom:0;left:-50%;top:1.5rem}.steps.is-large .step-item .step-marker{height:3rem;width:3rem;position:absolute;left:calc(50% - 1.5rem)}.steps.is-large .step-item .step-marker .icon *{font-size:1.5rem}.steps.is-large .step-item .step-details{margin-top:3rem;margin-left:.5em;margin-right:.5em;padding-top:.2em}.steps.is-large .step-item .step-details .step-title{font-size:1.8rem;font-weight:600} \ No newline at end of file diff --git a/static-data/www/shared/bulma-steps.min.js b/static-data/www/shared/bulma-steps.min.js deleted file mode 100644 index dc5f73f0..00000000 --- a/static-data/www/shared/bulma-steps.min.js +++ /dev/null @@ -1,618 +0,0 @@ -/* -MIT License - -Copyright (c) 2017 Wikiki - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["bulmaSteps"] = factory(); - else - root["bulmaSteps"] = factory(); -})(typeof self !== 'undefined' ? self : this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__events__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__defaultOptions__ = __webpack_require__(2); -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - - - - -var onStepsPrevious = Symbol('onStepsPrevious'); -var onStepsNext = Symbol('onStepsNext'); - -var bulmaSteps = function (_EventEmitter) { - _inherits(bulmaSteps, _EventEmitter); - - function bulmaSteps(selector) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - _classCallCheck(this, bulmaSteps); - - var _this = _possibleConstructorReturn(this, (bulmaSteps.__proto__ || Object.getPrototypeOf(bulmaSteps)).call(this)); - - _this.element = typeof selector === 'string' ? document.querySelector(selector) : selector; - // An invalid selector or non-DOM node has been provided. - if (!_this.element) { - throw new Error('An invalid selector or non-DOM node has been provided.'); - } - - _this._clickEvents = ['click']; - /// Set default options and merge with instance defined - _this.options = _extends({}, __WEBPACK_IMPORTED_MODULE_1__defaultOptions__["a" /* default */], options); - - _this[onStepsPrevious] = _this[onStepsPrevious].bind(_this); - _this[onStepsNext] = _this[onStepsNext].bind(_this); - - _this.init(); - return _this; - } - - /** - * Initiate all DOM element containing carousel class - * @method - * @return {Array} Array of all Carousel instances - */ - - - _createClass(bulmaSteps, [{ - key: 'init', - - - /** - * Initiate plugin - * @method init - * @return {void} - */ - value: function init() { - this._id = 'bulmaSteps' + new Date().getTime() + Math.floor(Math.random() * Math.floor(9999)); - - this.steps = this.element.querySelectorAll(this.options.selector); - this.contents = this.element.querySelectorAll(this.options.selector_content); - this.previous_btn = this.element.querySelector(this.options.previous_selector); - this.next_btn = this.element.querySelector(this.options.next_selector); - - [].forEach.call(this.steps, function (step, index) { - step.setAttribute('data-step-id', index); - }); - - if (this.steps && this.steps.length) { - this.activate_step(0); - this.updateActions(this.steps[0]); - } - - this._bindEvents(); - - this.emit('bulmasteps:ready', this.element.value); - } - - /** - * Bind all events - * @method _bindEvents - * @return {void} - */ - - }, { - key: '_bindEvents', - value: function _bindEvents() { - var _this2 = this; - - if (this.previous_btn != null) { - this._clickEvents.forEach(function (event) { - _this2.previous_btn.addEventListener(event, _this2[onStepsPrevious], false); - }); - } - - if (this.next_btn != null) { - this._clickEvents.forEach(function (event) { - _this2.next_btn.addEventListener(event, _this2[onStepsNext], false); - }); - } - - if (this.options.stepClickable) { - [].forEach.call(this.steps, function (step, index) { - _this2._clickEvents.forEach(function (event) { - while (index > _this2.current_id) { - _this2[onStepsNext](event); - } - while (index < _this2.current_id) { - _this2[onStepsPrevious](event); - } - }); - }); - } - } - }, { - key: onStepsPrevious, - value: function value(e) { - e.preventDefault(); - - if (!e.target.getAttribute('disabled')) { - this.previous_step(); - } - } - }, { - key: onStepsNext, - value: function value(e) { - e.preventDefault(); - - if (!e.target.getAttribute('disabled')) { - this.next_step(); - } - } - }, { - key: 'get_current_step_id', - value: function get_current_step_id() { - for (var i = 0; i < this.steps.length; i++) { - var step = this.steps[i]; - - if (step.classList.contains(this.options.active_class)) { - return parseInt(step.getAttribute('data-step-id')); - } - } - - return null; - } - }, { - key: 'updateActions', - value: function updateActions(step) { - var stepId = parseInt(step.getAttribute('data-step-id')); - if (stepId == 0) { - if (this.previous_btn != null) { - this.previous_btn.setAttribute('disabled', 'disabled'); - } - if (this.next_btn != null) { - this.next_btn.removeAttribute('disabled', 'disabled'); - } - } else if (stepId == this.steps.length - 1) { - if (this.previous_btn != null) { - this.previous_btn.removeAttribute('disabled', 'disabled'); - } - if (this.next_btn != null) { - this.next_btn.setAttribute('disabled', 'disabled'); - } - } else { - if (this.previous_btn != null) { - this.previous_btn.removeAttribute('disabled', 'disabled'); - } - if (this.next_btn != null) { - this.next_btn.removeAttribute('disabled', 'disabled'); - } - } - } - }, { - key: 'next_step', - value: function next_step() { - var current_id = this.get_current_step_id(); - - if (current_id == null) { - return; - } - - var next_id = current_id + 1, - errors = []; - - if (typeof this.options.beforeNext != 'undefined' && this.options.beforeNext != null && this.options.beforeNext) { - errors = this.options.beforeNext(current_id); - } - this.emit('bulmasteps:before:next', current_id); - - if (typeof errors == 'undefined') { - errors = []; - } - - if (errors.length > 0) { - this.emit('bulmasteps:errors', errors); - for (var i = 0; i < errors.length; i++) { - if (typeof this.options.onError != 'undefined' && this.options.onError != null && this.options.onError) { - this.options.onError(errors[i]); - } - } - - return; - } - - if (next_id >= this.steps.length) { - if (typeof this.options.onFinish != 'undefined' && this.options.onFinish != null && this.options.onFinish) { - this.options.onFinish(current_id); - } - this.emit('bulmasteps:finish', current_id); - this.deactivate_step(current_id); - } else { - this.complete_step(current_id); - this.activate_step(next_id); - } - } - }, { - key: 'previous_step', - value: function previous_step() { - var current_id = this.get_current_step_id(); - if (current_id == null) { - return; - } - - this.uncomplete_step(current_id - 1); - this.activate_step(current_id - 1); - } - - /** - * Activate a single step, - * will deactivate all other steps. - */ - - }, { - key: 'activate_step', - value: function activate_step(step_id) { - this.updateActions(this.steps[step_id]); - - for (var i = 0; i < this.steps.length; i++) { - var _step = this.steps[i]; - - if (_step == this.steps[step_id]) { - continue; - } - - this.deactivate_step(i); - } - - this.steps[step_id].classList.add(this.options.active_class); - if (typeof this.contents[step_id] !== 'undefined') { - this.contents[step_id].classList.add(this.options.active_class); - } - - if (typeof this.options.onShow != 'undefined' && this.options.onShow != null && this.options.onShow) { - this.options.onShow(step_id); - } - - this.emit('bulmasteps:step:show', step_id); - } - }, { - key: 'complete_step', - value: function complete_step(step_id) { - this.steps[step_id].classList.add(this.options.completed_class); - this.emit('bulmasteps:step:completed', step_id); - } - }, { - key: 'uncomplete_step', - value: function uncomplete_step(step_id) { - this.steps[step_id].classList.remove(this.options.completed_class); - this.emit('bulmasteps:step:uncompleted', step_id); - } - }, { - key: 'deactivate_step', - value: function deactivate_step(step_id) { - this.steps[step_id].classList.remove(this.options.active_class); - if (typeof this.contents[step_id] !== 'undefined') { - this.contents[step_id].classList.remove(this.options.active_class); - } - } - }], [{ - key: 'attach', - value: function attach() { - var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '.steps'; - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - var instances = new Array(); - - var elements = document.querySelectorAll(selector); - [].forEach.call(elements, function (element) { - setTimeout(function () { - instances.push(new bulmaSteps(element, options)); - }, 100); - }); - return instances; - } - }]); - - return bulmaSteps; -}(__WEBPACK_IMPORTED_MODULE_0__events__["a" /* default */]); - -/* harmony default export */ __webpack_exports__["default"] = (bulmaSteps); - -/***/ }), -/* 1 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var EventEmitter = function () { - function EventEmitter() { - var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - - _classCallCheck(this, EventEmitter); - - this._listeners = new Map(listeners); - this._middlewares = new Map(); - } - - _createClass(EventEmitter, [{ - key: "listenerCount", - value: function listenerCount(eventName) { - if (!this._listeners.has(eventName)) { - return 0; - } - - var eventListeners = this._listeners.get(eventName); - return eventListeners.length; - } - }, { - key: "removeListeners", - value: function removeListeners() { - var _this = this; - - var eventName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - var middleware = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (eventName !== null) { - if (Array.isArray(eventName)) { - name.forEach(function (e) { - return _this.removeListeners(e, middleware); - }); - } else { - this._listeners.delete(eventName); - - if (middleware) { - this.removeMiddleware(eventName); - } - } - } else { - this._listeners = new Map(); - } - } - }, { - key: "middleware", - value: function middleware(eventName, fn) { - var _this2 = this; - - if (Array.isArray(eventName)) { - name.forEach(function (e) { - return _this2.middleware(e, fn); - }); - } else { - if (!Array.isArray(this._middlewares.get(eventName))) { - this._middlewares.set(eventName, []); - } - - this._middlewares.get(eventName).push(fn); - } - } - }, { - key: "removeMiddleware", - value: function removeMiddleware() { - var _this3 = this; - - var eventName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - - if (eventName !== null) { - if (Array.isArray(eventName)) { - name.forEach(function (e) { - return _this3.removeMiddleware(e); - }); - } else { - this._middlewares.delete(eventName); - } - } else { - this._middlewares = new Map(); - } - } - }, { - key: "on", - value: function on(name, callback) { - var _this4 = this; - - var once = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - if (Array.isArray(name)) { - name.forEach(function (e) { - return _this4.on(e, callback); - }); - } else { - name = name.toString(); - var split = name.split(/,|, | /); - - if (split.length > 1) { - split.forEach(function (e) { - return _this4.on(e, callback); - }); - } else { - if (!Array.isArray(this._listeners.get(name))) { - this._listeners.set(name, []); - } - - this._listeners.get(name).push({ once: once, callback: callback }); - } - } - } - }, { - key: "once", - value: function once(name, callback) { - this.on(name, callback, true); - } - }, { - key: "emit", - value: function emit(name, data) { - var _this5 = this; - - var silent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - name = name.toString(); - var listeners = this._listeners.get(name); - var middlewares = null; - var doneCount = 0; - var execute = silent; - - if (Array.isArray(listeners)) { - listeners.forEach(function (listener, index) { - // Start Middleware checks unless we're doing a silent emit - if (!silent) { - middlewares = _this5._middlewares.get(name); - // Check and execute Middleware - if (Array.isArray(middlewares)) { - middlewares.forEach(function (middleware) { - middleware(data, function () { - var newData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - - if (newData !== null) { - data = newData; - } - doneCount++; - }, name); - }); - - if (doneCount >= middlewares.length) { - execute = true; - } - } else { - execute = true; - } - } - - // If Middleware checks have been passed, execute - if (execute) { - if (listener.once) { - listeners[index] = null; - } - listener.callback(data); - } - }); - - // Dirty way of removing used Events - while (listeners.indexOf(null) !== -1) { - listeners.splice(listeners.indexOf(null), 1); - } - } - } - }]); - - return EventEmitter; -}(); - -/* harmony default export */ __webpack_exports__["a"] = (EventEmitter); - -/***/ }), -/* 2 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var defaultOptions = { - 'selector': '.step-item', - 'selector_content': '.step-content', - 'previous_selector': '[data-nav="previous"]', - 'next_selector': '[data-nav="next"]', - 'active_class': 'is-active', - 'completed_class': 'is-completed', - 'stepClickable': false, - 'beforeNext': null, - 'onShow': null, - 'onFinish': null, - 'onError': null -}; - -/* harmony default export */ __webpack_exports__["a"] = (defaultOptions); - -/***/ }) -/******/ ])["default"]; -}); -bulmaSteps.attach(); \ No newline at end of file diff --git a/static-data/www/shared/bulma-tooltip.min.css b/static-data/www/shared/bulma-tooltip.min.css deleted file mode 100644 index c1286284..00000000 --- a/static-data/www/shared/bulma-tooltip.min.css +++ /dev/null @@ -1,24 +0,0 @@ -/* -MIT License - -Copyright (c) 2017 Wikiki - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ -@-webkit-keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}[data-tooltip]:not(.is-disabled),[data-tooltip]:not(.is-loading),[data-tooltip]:not([disabled]){cursor:pointer;overflow:visible;position:relative}[data-tooltip]:not(.is-disabled)::after,[data-tooltip]:not(.is-disabled)::before,[data-tooltip]:not(.is-loading)::after,[data-tooltip]:not(.is-loading)::before,[data-tooltip]:not([disabled])::after,[data-tooltip]:not([disabled])::before{box-sizing:border-box;color:#fff;display:inline-block;font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.75rem;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;opacity:0;overflow:hidden;pointer-events:none;position:absolute;visibility:hidden;z-index:1020}[data-tooltip]:not(.is-disabled)::after,[data-tooltip]:not(.is-loading)::after,[data-tooltip]:not([disabled])::after{content:'';border-style:solid;border-width:6px;border-color:rgba(74,74,74,.9) transparent transparent transparent;margin-bottom:-5px}[data-tooltip]:not(.is-disabled)::after,[data-tooltip]:not(.is-loading)::after,[data-tooltip]:not([disabled])::after{top:0;right:auto;bottom:auto;left:50%;margin-top:-5px;margin-right:auto;margin-bottom:auto;margin-left:-5px;border-color:rgba(74,74,74,.9) transparent transparent transparent}[data-tooltip]:not(.is-disabled)::before,[data-tooltip]:not(.is-loading)::before,[data-tooltip]:not([disabled])::before{background:rgba(74,74,74,.9);border-radius:2px;content:attr(data-tooltip);padding:.5rem 1rem;text-overflow:ellipsis;white-space:pre}[data-tooltip]:not(.is-disabled)::before,[data-tooltip]:not(.is-loading)::before,[data-tooltip]:not([disabled])::before{top:0;right:auto;bottom:auto;left:50%;top:0;margin-top:-5px;margin-bottom:auto;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}[data-tooltip]:not(.is-disabled).has-tooltip-bottom::after,[data-tooltip]:not(.is-loading).has-tooltip-bottom::after,[data-tooltip]:not([disabled]).has-tooltip-bottom::after{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-right:auto;margin-bottom:-5px;margin-left:-5px;border-color:transparent transparent rgba(74,74,74,.9) transparent}[data-tooltip]:not(.is-disabled).has-tooltip-bottom::before,[data-tooltip]:not(.is-loading).has-tooltip-bottom::before,[data-tooltip]:not([disabled]).has-tooltip-bottom::before{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-bottom:-5px;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}[data-tooltip]:not(.is-disabled).has-tooltip-left::after,[data-tooltip]:not(.is-loading).has-tooltip-left::after,[data-tooltip]:not([disabled]).has-tooltip-left::after{top:auto;right:auto;bottom:50%;left:0;margin-top:auto;margin-right:auto;margin-bottom:-6px;margin-left:-11px;border-color:transparent transparent transparent rgba(74,74,74,.9)}[data-tooltip]:not(.is-disabled).has-tooltip-left::before,[data-tooltip]:not(.is-loading).has-tooltip-left::before,[data-tooltip]:not([disabled]).has-tooltip-left::before{top:auto;right:auto;bottom:50%;left:-11px;-webkit-transform:translate(-100%,50%);transform:translate(-100%,50%)}[data-tooltip]:not(.is-disabled).has-tooltip-right::after,[data-tooltip]:not(.is-loading).has-tooltip-right::after,[data-tooltip]:not([disabled]).has-tooltip-right::after{top:auto;right:0;bottom:50%;left:auto;margin-top:auto;margin-right:-11px;margin-bottom:-6px;margin-left:auto;border-color:transparent rgba(74,74,74,.9) transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-right::before,[data-tooltip]:not(.is-loading).has-tooltip-right::before,[data-tooltip]:not([disabled]).has-tooltip-right::before{top:auto;right:-11px;bottom:50%;left:auto;margin-top:auto;-webkit-transform:translate(100%,50%);transform:translate(100%,50%)}[data-tooltip]:not(.is-disabled).has-tooltip-multiline::before,[data-tooltip]:not(.is-loading).has-tooltip-multiline::before,[data-tooltip]:not([disabled]).has-tooltip-multiline::before{height:auto;width:15rem;max-width:15rem;text-overflow:clip;white-space:normal;word-break:keep-all}[data-tooltip]:not(.is-disabled).has-tooltip-white.has-tooltip-bottom::after,[data-tooltip]:not(.is-loading).has-tooltip-white.has-tooltip-bottom::after,[data-tooltip]:not([disabled]).has-tooltip-white.has-tooltip-bottom::after{border-color:transparent transparent rgba(255,255,255,.9) transparent}[data-tooltip]:not(.is-disabled).has-tooltip-white.has-tooltip-left::after,[data-tooltip]:not(.is-loading).has-tooltip-white.has-tooltip-left::after,[data-tooltip]:not([disabled]).has-tooltip-white.has-tooltip-left::after{border-color:transparent transparent transparent rgba(255,255,255,.9)}[data-tooltip]:not(.is-disabled).has-tooltip-white.has-tooltip-right::after,[data-tooltip]:not(.is-loading).has-tooltip-white.has-tooltip-right::after,[data-tooltip]:not([disabled]).has-tooltip-white.has-tooltip-right::after{border-color:transparent rgba(255,255,255,.9) transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-white:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-disabled).has-tooltip-white:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-disabled).has-tooltip-white:not(.has-tooltip-right)::after,[data-tooltip]:not(.is-loading).has-tooltip-white:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-loading).has-tooltip-white:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-loading).has-tooltip-white:not(.has-tooltip-right)::after,[data-tooltip]:not([disabled]).has-tooltip-white:not(.has-tooltip-bottom)::after,[data-tooltip]:not([disabled]).has-tooltip-white:not(.has-tooltip-left)::after,[data-tooltip]:not([disabled]).has-tooltip-white:not(.has-tooltip-right)::after{border-color:rgba(255,255,255,.9) transparent transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-white:before,[data-tooltip]:not(.is-loading).has-tooltip-white:before,[data-tooltip]:not([disabled]).has-tooltip-white:before{background-color:rgba(255,255,255,.9);color:#0a0a0a}[data-tooltip]:not(.is-disabled).has-tooltip-black.has-tooltip-bottom::after,[data-tooltip]:not(.is-loading).has-tooltip-black.has-tooltip-bottom::after,[data-tooltip]:not([disabled]).has-tooltip-black.has-tooltip-bottom::after{border-color:transparent transparent rgba(10,10,10,.9) transparent}[data-tooltip]:not(.is-disabled).has-tooltip-black.has-tooltip-left::after,[data-tooltip]:not(.is-loading).has-tooltip-black.has-tooltip-left::after,[data-tooltip]:not([disabled]).has-tooltip-black.has-tooltip-left::after{border-color:transparent transparent transparent rgba(10,10,10,.9)}[data-tooltip]:not(.is-disabled).has-tooltip-black.has-tooltip-right::after,[data-tooltip]:not(.is-loading).has-tooltip-black.has-tooltip-right::after,[data-tooltip]:not([disabled]).has-tooltip-black.has-tooltip-right::after{border-color:transparent rgba(10,10,10,.9) transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-black:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-disabled).has-tooltip-black:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-disabled).has-tooltip-black:not(.has-tooltip-right)::after,[data-tooltip]:not(.is-loading).has-tooltip-black:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-loading).has-tooltip-black:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-loading).has-tooltip-black:not(.has-tooltip-right)::after,[data-tooltip]:not([disabled]).has-tooltip-black:not(.has-tooltip-bottom)::after,[data-tooltip]:not([disabled]).has-tooltip-black:not(.has-tooltip-left)::after,[data-tooltip]:not([disabled]).has-tooltip-black:not(.has-tooltip-right)::after{border-color:rgba(10,10,10,.9) transparent transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-black:before,[data-tooltip]:not(.is-loading).has-tooltip-black:before,[data-tooltip]:not([disabled]).has-tooltip-black:before{background-color:rgba(10,10,10,.9);color:#fff}[data-tooltip]:not(.is-disabled).has-tooltip-light.has-tooltip-bottom::after,[data-tooltip]:not(.is-loading).has-tooltip-light.has-tooltip-bottom::after,[data-tooltip]:not([disabled]).has-tooltip-light.has-tooltip-bottom::after{border-color:transparent transparent rgba(245,245,245,.9) transparent}[data-tooltip]:not(.is-disabled).has-tooltip-light.has-tooltip-left::after,[data-tooltip]:not(.is-loading).has-tooltip-light.has-tooltip-left::after,[data-tooltip]:not([disabled]).has-tooltip-light.has-tooltip-left::after{border-color:transparent transparent transparent rgba(245,245,245,.9)}[data-tooltip]:not(.is-disabled).has-tooltip-light.has-tooltip-right::after,[data-tooltip]:not(.is-loading).has-tooltip-light.has-tooltip-right::after,[data-tooltip]:not([disabled]).has-tooltip-light.has-tooltip-right::after{border-color:transparent rgba(245,245,245,.9) transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-light:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-disabled).has-tooltip-light:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-disabled).has-tooltip-light:not(.has-tooltip-right)::after,[data-tooltip]:not(.is-loading).has-tooltip-light:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-loading).has-tooltip-light:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-loading).has-tooltip-light:not(.has-tooltip-right)::after,[data-tooltip]:not([disabled]).has-tooltip-light:not(.has-tooltip-bottom)::after,[data-tooltip]:not([disabled]).has-tooltip-light:not(.has-tooltip-left)::after,[data-tooltip]:not([disabled]).has-tooltip-light:not(.has-tooltip-right)::after{border-color:rgba(245,245,245,.9) transparent transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-light:before,[data-tooltip]:not(.is-loading).has-tooltip-light:before,[data-tooltip]:not([disabled]).has-tooltip-light:before{background-color:rgba(245,245,245,.9);color:#363636}[data-tooltip]:not(.is-disabled).has-tooltip-dark.has-tooltip-bottom::after,[data-tooltip]:not(.is-loading).has-tooltip-dark.has-tooltip-bottom::after,[data-tooltip]:not([disabled]).has-tooltip-dark.has-tooltip-bottom::after{border-color:transparent transparent rgba(54,54,54,.9) transparent}[data-tooltip]:not(.is-disabled).has-tooltip-dark.has-tooltip-left::after,[data-tooltip]:not(.is-loading).has-tooltip-dark.has-tooltip-left::after,[data-tooltip]:not([disabled]).has-tooltip-dark.has-tooltip-left::after{border-color:transparent transparent transparent rgba(54,54,54,.9)}[data-tooltip]:not(.is-disabled).has-tooltip-dark.has-tooltip-right::after,[data-tooltip]:not(.is-loading).has-tooltip-dark.has-tooltip-right::after,[data-tooltip]:not([disabled]).has-tooltip-dark.has-tooltip-right::after{border-color:transparent rgba(54,54,54,.9) transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-dark:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-disabled).has-tooltip-dark:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-disabled).has-tooltip-dark:not(.has-tooltip-right)::after,[data-tooltip]:not(.is-loading).has-tooltip-dark:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-loading).has-tooltip-dark:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-loading).has-tooltip-dark:not(.has-tooltip-right)::after,[data-tooltip]:not([disabled]).has-tooltip-dark:not(.has-tooltip-bottom)::after,[data-tooltip]:not([disabled]).has-tooltip-dark:not(.has-tooltip-left)::after,[data-tooltip]:not([disabled]).has-tooltip-dark:not(.has-tooltip-right)::after{border-color:rgba(54,54,54,.9) transparent transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-dark:before,[data-tooltip]:not(.is-loading).has-tooltip-dark:before,[data-tooltip]:not([disabled]).has-tooltip-dark:before{background-color:rgba(54,54,54,.9);color:#f5f5f5}[data-tooltip]:not(.is-disabled).has-tooltip-primary.has-tooltip-bottom::after,[data-tooltip]:not(.is-loading).has-tooltip-primary.has-tooltip-bottom::after,[data-tooltip]:not([disabled]).has-tooltip-primary.has-tooltip-bottom::after{border-color:transparent transparent rgba(0,209,178,.9) transparent}[data-tooltip]:not(.is-disabled).has-tooltip-primary.has-tooltip-left::after,[data-tooltip]:not(.is-loading).has-tooltip-primary.has-tooltip-left::after,[data-tooltip]:not([disabled]).has-tooltip-primary.has-tooltip-left::after{border-color:transparent transparent transparent rgba(0,209,178,.9)}[data-tooltip]:not(.is-disabled).has-tooltip-primary.has-tooltip-right::after,[data-tooltip]:not(.is-loading).has-tooltip-primary.has-tooltip-right::after,[data-tooltip]:not([disabled]).has-tooltip-primary.has-tooltip-right::after{border-color:transparent rgba(0,209,178,.9) transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-primary:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-disabled).has-tooltip-primary:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-disabled).has-tooltip-primary:not(.has-tooltip-right)::after,[data-tooltip]:not(.is-loading).has-tooltip-primary:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-loading).has-tooltip-primary:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-loading).has-tooltip-primary:not(.has-tooltip-right)::after,[data-tooltip]:not([disabled]).has-tooltip-primary:not(.has-tooltip-bottom)::after,[data-tooltip]:not([disabled]).has-tooltip-primary:not(.has-tooltip-left)::after,[data-tooltip]:not([disabled]).has-tooltip-primary:not(.has-tooltip-right)::after{border-color:rgba(0,209,178,.9) transparent transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-primary:before,[data-tooltip]:not(.is-loading).has-tooltip-primary:before,[data-tooltip]:not([disabled]).has-tooltip-primary:before{background-color:rgba(0,209,178,.9);color:#fff}[data-tooltip]:not(.is-disabled).has-tooltip-link.has-tooltip-bottom::after,[data-tooltip]:not(.is-loading).has-tooltip-link.has-tooltip-bottom::after,[data-tooltip]:not([disabled]).has-tooltip-link.has-tooltip-bottom::after{border-color:transparent transparent rgba(50,115,220,.9) transparent}[data-tooltip]:not(.is-disabled).has-tooltip-link.has-tooltip-left::after,[data-tooltip]:not(.is-loading).has-tooltip-link.has-tooltip-left::after,[data-tooltip]:not([disabled]).has-tooltip-link.has-tooltip-left::after{border-color:transparent transparent transparent rgba(50,115,220,.9)}[data-tooltip]:not(.is-disabled).has-tooltip-link.has-tooltip-right::after,[data-tooltip]:not(.is-loading).has-tooltip-link.has-tooltip-right::after,[data-tooltip]:not([disabled]).has-tooltip-link.has-tooltip-right::after{border-color:transparent rgba(50,115,220,.9) transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-link:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-disabled).has-tooltip-link:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-disabled).has-tooltip-link:not(.has-tooltip-right)::after,[data-tooltip]:not(.is-loading).has-tooltip-link:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-loading).has-tooltip-link:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-loading).has-tooltip-link:not(.has-tooltip-right)::after,[data-tooltip]:not([disabled]).has-tooltip-link:not(.has-tooltip-bottom)::after,[data-tooltip]:not([disabled]).has-tooltip-link:not(.has-tooltip-left)::after,[data-tooltip]:not([disabled]).has-tooltip-link:not(.has-tooltip-right)::after{border-color:rgba(50,115,220,.9) transparent transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-link:before,[data-tooltip]:not(.is-loading).has-tooltip-link:before,[data-tooltip]:not([disabled]).has-tooltip-link:before{background-color:rgba(50,115,220,.9);color:#fff}[data-tooltip]:not(.is-disabled).has-tooltip-info.has-tooltip-bottom::after,[data-tooltip]:not(.is-loading).has-tooltip-info.has-tooltip-bottom::after,[data-tooltip]:not([disabled]).has-tooltip-info.has-tooltip-bottom::after{border-color:transparent transparent rgba(32,156,238,.9) transparent}[data-tooltip]:not(.is-disabled).has-tooltip-info.has-tooltip-left::after,[data-tooltip]:not(.is-loading).has-tooltip-info.has-tooltip-left::after,[data-tooltip]:not([disabled]).has-tooltip-info.has-tooltip-left::after{border-color:transparent transparent transparent rgba(32,156,238,.9)}[data-tooltip]:not(.is-disabled).has-tooltip-info.has-tooltip-right::after,[data-tooltip]:not(.is-loading).has-tooltip-info.has-tooltip-right::after,[data-tooltip]:not([disabled]).has-tooltip-info.has-tooltip-right::after{border-color:transparent rgba(32,156,238,.9) transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-info:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-disabled).has-tooltip-info:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-disabled).has-tooltip-info:not(.has-tooltip-right)::after,[data-tooltip]:not(.is-loading).has-tooltip-info:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-loading).has-tooltip-info:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-loading).has-tooltip-info:not(.has-tooltip-right)::after,[data-tooltip]:not([disabled]).has-tooltip-info:not(.has-tooltip-bottom)::after,[data-tooltip]:not([disabled]).has-tooltip-info:not(.has-tooltip-left)::after,[data-tooltip]:not([disabled]).has-tooltip-info:not(.has-tooltip-right)::after{border-color:rgba(32,156,238,.9) transparent transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-info:before,[data-tooltip]:not(.is-loading).has-tooltip-info:before,[data-tooltip]:not([disabled]).has-tooltip-info:before{background-color:rgba(32,156,238,.9);color:#fff}[data-tooltip]:not(.is-disabled).has-tooltip-success.has-tooltip-bottom::after,[data-tooltip]:not(.is-loading).has-tooltip-success.has-tooltip-bottom::after,[data-tooltip]:not([disabled]).has-tooltip-success.has-tooltip-bottom::after{border-color:transparent transparent rgba(35,209,96,.9) transparent}[data-tooltip]:not(.is-disabled).has-tooltip-success.has-tooltip-left::after,[data-tooltip]:not(.is-loading).has-tooltip-success.has-tooltip-left::after,[data-tooltip]:not([disabled]).has-tooltip-success.has-tooltip-left::after{border-color:transparent transparent transparent rgba(35,209,96,.9)}[data-tooltip]:not(.is-disabled).has-tooltip-success.has-tooltip-right::after,[data-tooltip]:not(.is-loading).has-tooltip-success.has-tooltip-right::after,[data-tooltip]:not([disabled]).has-tooltip-success.has-tooltip-right::after{border-color:transparent rgba(35,209,96,.9) transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-success:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-disabled).has-tooltip-success:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-disabled).has-tooltip-success:not(.has-tooltip-right)::after,[data-tooltip]:not(.is-loading).has-tooltip-success:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-loading).has-tooltip-success:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-loading).has-tooltip-success:not(.has-tooltip-right)::after,[data-tooltip]:not([disabled]).has-tooltip-success:not(.has-tooltip-bottom)::after,[data-tooltip]:not([disabled]).has-tooltip-success:not(.has-tooltip-left)::after,[data-tooltip]:not([disabled]).has-tooltip-success:not(.has-tooltip-right)::after{border-color:rgba(35,209,96,.9) transparent transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-success:before,[data-tooltip]:not(.is-loading).has-tooltip-success:before,[data-tooltip]:not([disabled]).has-tooltip-success:before{background-color:rgba(35,209,96,.9);color:#fff}[data-tooltip]:not(.is-disabled).has-tooltip-warning.has-tooltip-bottom::after,[data-tooltip]:not(.is-loading).has-tooltip-warning.has-tooltip-bottom::after,[data-tooltip]:not([disabled]).has-tooltip-warning.has-tooltip-bottom::after{border-color:transparent transparent rgba(255,221,87,.9) transparent}[data-tooltip]:not(.is-disabled).has-tooltip-warning.has-tooltip-left::after,[data-tooltip]:not(.is-loading).has-tooltip-warning.has-tooltip-left::after,[data-tooltip]:not([disabled]).has-tooltip-warning.has-tooltip-left::after{border-color:transparent transparent transparent rgba(255,221,87,.9)}[data-tooltip]:not(.is-disabled).has-tooltip-warning.has-tooltip-right::after,[data-tooltip]:not(.is-loading).has-tooltip-warning.has-tooltip-right::after,[data-tooltip]:not([disabled]).has-tooltip-warning.has-tooltip-right::after{border-color:transparent rgba(255,221,87,.9) transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-warning:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-disabled).has-tooltip-warning:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-disabled).has-tooltip-warning:not(.has-tooltip-right)::after,[data-tooltip]:not(.is-loading).has-tooltip-warning:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-loading).has-tooltip-warning:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-loading).has-tooltip-warning:not(.has-tooltip-right)::after,[data-tooltip]:not([disabled]).has-tooltip-warning:not(.has-tooltip-bottom)::after,[data-tooltip]:not([disabled]).has-tooltip-warning:not(.has-tooltip-left)::after,[data-tooltip]:not([disabled]).has-tooltip-warning:not(.has-tooltip-right)::after{border-color:rgba(255,221,87,.9) transparent transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-warning:before,[data-tooltip]:not(.is-loading).has-tooltip-warning:before,[data-tooltip]:not([disabled]).has-tooltip-warning:before{background-color:rgba(255,221,87,.9);color:rgba(0,0,0,.7)}[data-tooltip]:not(.is-disabled).has-tooltip-danger.has-tooltip-bottom::after,[data-tooltip]:not(.is-loading).has-tooltip-danger.has-tooltip-bottom::after,[data-tooltip]:not([disabled]).has-tooltip-danger.has-tooltip-bottom::after{border-color:transparent transparent rgba(255,56,96,.9) transparent}[data-tooltip]:not(.is-disabled).has-tooltip-danger.has-tooltip-left::after,[data-tooltip]:not(.is-loading).has-tooltip-danger.has-tooltip-left::after,[data-tooltip]:not([disabled]).has-tooltip-danger.has-tooltip-left::after{border-color:transparent transparent transparent rgba(255,56,96,.9)}[data-tooltip]:not(.is-disabled).has-tooltip-danger.has-tooltip-right::after,[data-tooltip]:not(.is-loading).has-tooltip-danger.has-tooltip-right::after,[data-tooltip]:not([disabled]).has-tooltip-danger.has-tooltip-right::after{border-color:transparent rgba(255,56,96,.9) transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-danger:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-disabled).has-tooltip-danger:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-disabled).has-tooltip-danger:not(.has-tooltip-right)::after,[data-tooltip]:not(.is-loading).has-tooltip-danger:not(.has-tooltip-bottom)::after,[data-tooltip]:not(.is-loading).has-tooltip-danger:not(.has-tooltip-left)::after,[data-tooltip]:not(.is-loading).has-tooltip-danger:not(.has-tooltip-right)::after,[data-tooltip]:not([disabled]).has-tooltip-danger:not(.has-tooltip-bottom)::after,[data-tooltip]:not([disabled]).has-tooltip-danger:not(.has-tooltip-left)::after,[data-tooltip]:not([disabled]).has-tooltip-danger:not(.has-tooltip-right)::after{border-color:rgba(255,56,96,.9) transparent transparent transparent}[data-tooltip]:not(.is-disabled).has-tooltip-danger:before,[data-tooltip]:not(.is-loading).has-tooltip-danger:before,[data-tooltip]:not([disabled]).has-tooltip-danger:before{background-color:rgba(255,56,96,.9);color:#fff}[data-tooltip]:not(.is-disabled).has-tooltip-active::after,[data-tooltip]:not(.is-disabled).has-tooltip-active::before,[data-tooltip]:not(.is-disabled):focus::after,[data-tooltip]:not(.is-disabled):focus::before,[data-tooltip]:not(.is-disabled):hover::after,[data-tooltip]:not(.is-disabled):hover::before,[data-tooltip]:not(.is-loading).has-tooltip-active::after,[data-tooltip]:not(.is-loading).has-tooltip-active::before,[data-tooltip]:not(.is-loading):focus::after,[data-tooltip]:not(.is-loading):focus::before,[data-tooltip]:not(.is-loading):hover::after,[data-tooltip]:not(.is-loading):hover::before,[data-tooltip]:not([disabled]).has-tooltip-active::after,[data-tooltip]:not([disabled]).has-tooltip-active::before,[data-tooltip]:not([disabled]):focus::after,[data-tooltip]:not([disabled]):focus::before,[data-tooltip]:not([disabled]):hover::after,[data-tooltip]:not([disabled]):hover::before{opacity:1;visibility:visible}[data-tooltip]:not(.is-disabled).has-tooltip-fade::after,[data-tooltip]:not(.is-disabled).has-tooltip-fade::before,[data-tooltip]:not(.is-loading).has-tooltip-fade::after,[data-tooltip]:not(.is-loading).has-tooltip-fade::before,[data-tooltip]:not([disabled]).has-tooltip-fade::after,[data-tooltip]:not([disabled]).has-tooltip-fade::before{transition:opacity .3s linear,visibility .3s linear}@media screen and (max-width:768px){.has-tooltip-top-mobile::after{top:0;right:auto;bottom:auto;left:50%;margin-top:-5px;margin-right:auto;margin-bottom:auto;margin-left:-5px;border-color:rgba(74,74,74,.9) transparent transparent transparent}.has-tooltip-top-mobile::before{top:0;right:auto;bottom:auto;left:50%;top:0;margin-top:-5px;margin-bottom:auto;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}}@media screen and (min-width:769px),print{.has-tooltip-top-tablet::after{top:0;right:auto;bottom:auto;left:50%;margin-top:-5px;margin-right:auto;margin-bottom:auto;margin-left:-5px;border-color:rgba(74,74,74,.9) transparent transparent transparent}.has-tooltip-top-tablet::before{top:0;right:auto;bottom:auto;left:50%;top:0;margin-top:-5px;margin-bottom:auto;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}}@media screen and (min-width:769px) and (max-width:1087px){.has-tooltip-top-tablet-only::after{top:0;right:auto;bottom:auto;left:50%;margin-top:-5px;margin-right:auto;margin-bottom:auto;margin-left:-5px;border-color:rgba(74,74,74,.9) transparent transparent transparent}.has-tooltip-top-tablet-only::before{top:0;right:auto;bottom:auto;left:50%;top:0;margin-top:-5px;margin-bottom:auto;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}}@media screen and (max-width:1087px){.has-tooltip-top-touch::after{top:0;right:auto;bottom:auto;left:50%;margin-top:-5px;margin-right:auto;margin-bottom:auto;margin-left:-5px;border-color:rgba(74,74,74,.9) transparent transparent transparent}.has-tooltip-top-touch::before{top:0;right:auto;bottom:auto;left:50%;top:0;margin-top:-5px;margin-bottom:auto;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}}@media screen and (min-width:1088px){.has-tooltip-top-desktop::after{top:0;right:auto;bottom:auto;left:50%;margin-top:-5px;margin-right:auto;margin-bottom:auto;margin-left:-5px;border-color:rgba(74,74,74,.9) transparent transparent transparent}.has-tooltip-top-desktop::before{top:0;right:auto;bottom:auto;left:50%;top:0;margin-top:-5px;margin-bottom:auto;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}}@media screen and (min-width:1088px) and (max-width:1279px){.has-tooltip-top-desktop-only::after{top:0;right:auto;bottom:auto;left:50%;margin-top:-5px;margin-right:auto;margin-bottom:auto;margin-left:-5px;border-color:rgba(74,74,74,.9) transparent transparent transparent}.has-tooltip-top-desktop-only::before{top:0;right:auto;bottom:auto;left:50%;top:0;margin-top:-5px;margin-bottom:auto;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}}@media screen and (max-width:1279px){.has-tooltip-top-until-widescreen::after{top:0;right:auto;bottom:auto;left:50%;margin-top:-5px;margin-right:auto;margin-bottom:auto;margin-left:-5px;border-color:rgba(74,74,74,.9) transparent transparent transparent}.has-tooltip-top-until-widescreen::before{top:0;right:auto;bottom:auto;left:50%;top:0;margin-top:-5px;margin-bottom:auto;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}}@media screen and (min-width:1280px){.has-tooltip-top-widescreen::after{top:0;right:auto;bottom:auto;left:50%;margin-top:-5px;margin-right:auto;margin-bottom:auto;margin-left:-5px;border-color:rgba(74,74,74,.9) transparent transparent transparent}.has-tooltip-top-widescreen::before{top:0;right:auto;bottom:auto;left:50%;top:0;margin-top:-5px;margin-bottom:auto;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}}@media screen and (min-width:1280px) and (max-width:1471px){.has-tooltip-top-widescreen-only::after{top:0;right:auto;bottom:auto;left:50%;margin-top:-5px;margin-right:auto;margin-bottom:auto;margin-left:-5px;border-color:rgba(74,74,74,.9) transparent transparent transparent}.has-tooltip-top-widescreen-only::before{top:0;right:auto;bottom:auto;left:50%;top:0;margin-top:-5px;margin-bottom:auto;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}}@media screen and (max-width:1471px){.has-tooltip-top-until-fullhd::after{top:0;right:auto;bottom:auto;left:50%;margin-top:-5px;margin-right:auto;margin-bottom:auto;margin-left:-5px;border-color:rgba(74,74,74,.9) transparent transparent transparent}.has-tooltip-top-until-fullhd::before{top:0;right:auto;bottom:auto;left:50%;top:0;margin-top:-5px;margin-bottom:auto;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}}@media screen and (min-width:1472px){.has-tooltip-top-fullhd::after{top:0;right:auto;bottom:auto;left:50%;margin-top:-5px;margin-right:auto;margin-bottom:auto;margin-left:-5px;border-color:rgba(74,74,74,.9) transparent transparent transparent}.has-tooltip-top-fullhd::before{top:0;right:auto;bottom:auto;left:50%;top:0;margin-top:-5px;margin-bottom:auto;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}}@media screen and (max-width:768px){.has-tooltip-right-mobile::after{top:auto;right:0;bottom:50%;left:auto;margin-top:auto;margin-right:-11px;margin-bottom:-6px;margin-left:auto;border-color:transparent rgba(74,74,74,.9) transparent transparent}.has-tooltip-right-mobile::before{top:auto;right:-11px;bottom:50%;left:auto;margin-top:auto;-webkit-transform:translate(100%,50%);transform:translate(100%,50%)}}@media screen and (min-width:769px),print{.has-tooltip-right-tablet::after{top:auto;right:0;bottom:50%;left:auto;margin-top:auto;margin-right:-11px;margin-bottom:-6px;margin-left:auto;border-color:transparent rgba(74,74,74,.9) transparent transparent}.has-tooltip-right-tablet::before{top:auto;right:-11px;bottom:50%;left:auto;margin-top:auto;-webkit-transform:translate(100%,50%);transform:translate(100%,50%)}}@media screen and (min-width:769px) and (max-width:1087px){.has-tooltip-right-tablet-only::after{top:auto;right:0;bottom:50%;left:auto;margin-top:auto;margin-right:-11px;margin-bottom:-6px;margin-left:auto;border-color:transparent rgba(74,74,74,.9) transparent transparent}.has-tooltip-right-tablet-only::before{top:auto;right:-11px;bottom:50%;left:auto;margin-top:auto;-webkit-transform:translate(100%,50%);transform:translate(100%,50%)}}@media screen and (max-width:1087px){.has-tooltip-right-touch::after{top:auto;right:0;bottom:50%;left:auto;margin-top:auto;margin-right:-11px;margin-bottom:-6px;margin-left:auto;border-color:transparent rgba(74,74,74,.9) transparent transparent}.has-tooltip-right-touch::before{top:auto;right:-11px;bottom:50%;left:auto;margin-top:auto;-webkit-transform:translate(100%,50%);transform:translate(100%,50%)}}@media screen and (min-width:1088px){.has-tooltip-right-desktop::after{top:auto;right:0;bottom:50%;left:auto;margin-top:auto;margin-right:-11px;margin-bottom:-6px;margin-left:auto;border-color:transparent rgba(74,74,74,.9) transparent transparent}.has-tooltip-right-desktop::before{top:auto;right:-11px;bottom:50%;left:auto;margin-top:auto;-webkit-transform:translate(100%,50%);transform:translate(100%,50%)}}@media screen and (min-width:1088px) and (max-width:1279px){.has-tooltip-right-desktop-only::after{top:auto;right:0;bottom:50%;left:auto;margin-top:auto;margin-right:-11px;margin-bottom:-6px;margin-left:auto;border-color:transparent rgba(74,74,74,.9) transparent transparent}.has-tooltip-right-desktop-only::before{top:auto;right:-11px;bottom:50%;left:auto;margin-top:auto;-webkit-transform:translate(100%,50%);transform:translate(100%,50%)}}@media screen and (max-width:1279px){.has-tooltip-right-until-widescreen::after{top:auto;right:0;bottom:50%;left:auto;margin-top:auto;margin-right:-11px;margin-bottom:-6px;margin-left:auto;border-color:transparent rgba(74,74,74,.9) transparent transparent}.has-tooltip-right-until-widescreen::before{top:auto;right:-11px;bottom:50%;left:auto;margin-top:auto;-webkit-transform:translate(100%,50%);transform:translate(100%,50%)}}@media screen and (min-width:1280px){.has-tooltip-right-widescreen::after{top:auto;right:0;bottom:50%;left:auto;margin-top:auto;margin-right:-11px;margin-bottom:-6px;margin-left:auto;border-color:transparent rgba(74,74,74,.9) transparent transparent}.has-tooltip-right-widescreen::before{top:auto;right:-11px;bottom:50%;left:auto;margin-top:auto;-webkit-transform:translate(100%,50%);transform:translate(100%,50%)}}@media screen and (min-width:1280px) and (max-width:1471px){.has-tooltip-right-widescreen-only::after{top:auto;right:0;bottom:50%;left:auto;margin-top:auto;margin-right:-11px;margin-bottom:-6px;margin-left:auto;border-color:transparent rgba(74,74,74,.9) transparent transparent}.has-tooltip-right-widescreen-only::before{top:auto;right:-11px;bottom:50%;left:auto;margin-top:auto;-webkit-transform:translate(100%,50%);transform:translate(100%,50%)}}@media screen and (max-width:1471px){.has-tooltip-right-until-fullhd::after{top:auto;right:0;bottom:50%;left:auto;margin-top:auto;margin-right:-11px;margin-bottom:-6px;margin-left:auto;border-color:transparent rgba(74,74,74,.9) transparent transparent}.has-tooltip-right-until-fullhd::before{top:auto;right:-11px;bottom:50%;left:auto;margin-top:auto;-webkit-transform:translate(100%,50%);transform:translate(100%,50%)}}@media screen and (min-width:1472px){.has-tooltip-right-fullhd::after{top:auto;right:0;bottom:50%;left:auto;margin-top:auto;margin-right:-11px;margin-bottom:-6px;margin-left:auto;border-color:transparent rgba(74,74,74,.9) transparent transparent}.has-tooltip-right-fullhd::before{top:auto;right:-11px;bottom:50%;left:auto;margin-top:auto;-webkit-transform:translate(100%,50%);transform:translate(100%,50%)}}@media screen and (max-width:768px){.has-tooltip-bottom-mobile::after{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-right:auto;margin-bottom:-5px;margin-left:-5px;border-color:transparent transparent rgba(74,74,74,.9) transparent}.has-tooltip-bottom-mobile::before{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-bottom:-5px;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}}@media screen and (min-width:769px),print{.has-tooltip-bottom-tablet::after{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-right:auto;margin-bottom:-5px;margin-left:-5px;border-color:transparent transparent rgba(74,74,74,.9) transparent}.has-tooltip-bottom-tablet::before{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-bottom:-5px;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}}@media screen and (min-width:769px) and (max-width:1087px){.has-tooltip-bottom-tablet-only::after{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-right:auto;margin-bottom:-5px;margin-left:-5px;border-color:transparent transparent rgba(74,74,74,.9) transparent}.has-tooltip-bottom-tablet-only::before{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-bottom:-5px;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}}@media screen and (max-width:1087px){.has-tooltip-bottom-touch::after{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-right:auto;margin-bottom:-5px;margin-left:-5px;border-color:transparent transparent rgba(74,74,74,.9) transparent}.has-tooltip-bottom-touch::before{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-bottom:-5px;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}}@media screen and (min-width:1088px){.has-tooltip-bottom-desktop::after{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-right:auto;margin-bottom:-5px;margin-left:-5px;border-color:transparent transparent rgba(74,74,74,.9) transparent}.has-tooltip-bottom-desktop::before{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-bottom:-5px;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}}@media screen and (min-width:1088px) and (max-width:1279px){.has-tooltip-bottom-desktop-only::after{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-right:auto;margin-bottom:-5px;margin-left:-5px;border-color:transparent transparent rgba(74,74,74,.9) transparent}.has-tooltip-bottom-desktop-only::before{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-bottom:-5px;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}}@media screen and (max-width:1279px){.has-tooltip-bottom-until-widescreen::after{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-right:auto;margin-bottom:-5px;margin-left:-5px;border-color:transparent transparent rgba(74,74,74,.9) transparent}.has-tooltip-bottom-until-widescreen::before{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-bottom:-5px;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}}@media screen and (min-width:1280px){.has-tooltip-bottom-widescreen::after{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-right:auto;margin-bottom:-5px;margin-left:-5px;border-color:transparent transparent rgba(74,74,74,.9) transparent}.has-tooltip-bottom-widescreen::before{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-bottom:-5px;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}}@media screen and (min-width:1280px) and (max-width:1471px){.has-tooltip-bottom-widescreen-only::after{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-right:auto;margin-bottom:-5px;margin-left:-5px;border-color:transparent transparent rgba(74,74,74,.9) transparent}.has-tooltip-bottom-widescreen-only::before{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-bottom:-5px;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}}@media screen and (max-width:1471px){.has-tooltip-bottom-until-fullhd::after{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-right:auto;margin-bottom:-5px;margin-left:-5px;border-color:transparent transparent rgba(74,74,74,.9) transparent}.has-tooltip-bottom-until-fullhd::before{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-bottom:-5px;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}}@media screen and (min-width:1472px){.has-tooltip-bottom-fullhd::after{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-right:auto;margin-bottom:-5px;margin-left:-5px;border-color:transparent transparent rgba(74,74,74,.9) transparent}.has-tooltip-bottom-fullhd::before{top:auto;right:auto;bottom:0;left:50%;margin-top:auto;margin-bottom:-5px;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}}@media screen and (max-width:768px){.has-tooltip-left-mobile::after{top:auto;right:auto;bottom:50%;left:0;margin-top:auto;margin-right:auto;margin-bottom:-6px;margin-left:-11px;border-color:transparent transparent transparent rgba(74,74,74,.9)}.has-tooltip-left-mobile::before{top:auto;right:auto;bottom:50%;left:-11px;-webkit-transform:translate(-100%,50%);transform:translate(-100%,50%)}}@media screen and (min-width:769px),print{.has-tooltip-left-tablet::after{top:auto;right:auto;bottom:50%;left:0;margin-top:auto;margin-right:auto;margin-bottom:-6px;margin-left:-11px;border-color:transparent transparent transparent rgba(74,74,74,.9)}.has-tooltip-left-tablet::before{top:auto;right:auto;bottom:50%;left:-11px;-webkit-transform:translate(-100%,50%);transform:translate(-100%,50%)}}@media screen and (min-width:769px) and (max-width:1087px){.has-tooltip-left-tablet-only::after{top:auto;right:auto;bottom:50%;left:0;margin-top:auto;margin-right:auto;margin-bottom:-6px;margin-left:-11px;border-color:transparent transparent transparent rgba(74,74,74,.9)}.has-tooltip-left-tablet-only::before{top:auto;right:auto;bottom:50%;left:-11px;-webkit-transform:translate(-100%,50%);transform:translate(-100%,50%)}}@media screen and (max-width:1087px){.has-tooltip-left-touch::after{top:auto;right:auto;bottom:50%;left:0;margin-top:auto;margin-right:auto;margin-bottom:-6px;margin-left:-11px;border-color:transparent transparent transparent rgba(74,74,74,.9)}.has-tooltip-left-touch::before{top:auto;right:auto;bottom:50%;left:-11px;-webkit-transform:translate(-100%,50%);transform:translate(-100%,50%)}}@media screen and (min-width:1088px){.has-tooltip-left-desktop::after{top:auto;right:auto;bottom:50%;left:0;margin-top:auto;margin-right:auto;margin-bottom:-6px;margin-left:-11px;border-color:transparent transparent transparent rgba(74,74,74,.9)}.has-tooltip-left-desktop::before{top:auto;right:auto;bottom:50%;left:-11px;-webkit-transform:translate(-100%,50%);transform:translate(-100%,50%)}}@media screen and (min-width:1088px) and (max-width:1279px){.has-tooltip-left-desktop-only::after{top:auto;right:auto;bottom:50%;left:0;margin-top:auto;margin-right:auto;margin-bottom:-6px;margin-left:-11px;border-color:transparent transparent transparent rgba(74,74,74,.9)}.has-tooltip-left-desktop-only::before{top:auto;right:auto;bottom:50%;left:-11px;-webkit-transform:translate(-100%,50%);transform:translate(-100%,50%)}}@media screen and (max-width:1279px){.has-tooltip-left-until-widescreen::after{top:auto;right:auto;bottom:50%;left:0;margin-top:auto;margin-right:auto;margin-bottom:-6px;margin-left:-11px;border-color:transparent transparent transparent rgba(74,74,74,.9)}.has-tooltip-left-until-widescreen::before{top:auto;right:auto;bottom:50%;left:-11px;-webkit-transform:translate(-100%,50%);transform:translate(-100%,50%)}}@media screen and (min-width:1280px){.has-tooltip-left-widescreen::after{top:auto;right:auto;bottom:50%;left:0;margin-top:auto;margin-right:auto;margin-bottom:-6px;margin-left:-11px;border-color:transparent transparent transparent rgba(74,74,74,.9)}.has-tooltip-left-widescreen::before{top:auto;right:auto;bottom:50%;left:-11px;-webkit-transform:translate(-100%,50%);transform:translate(-100%,50%)}}@media screen and (min-width:1280px) and (max-width:1471px){.has-tooltip-left-widescreen-only::after{top:auto;right:auto;bottom:50%;left:0;margin-top:auto;margin-right:auto;margin-bottom:-6px;margin-left:-11px;border-color:transparent transparent transparent rgba(74,74,74,.9)}.has-tooltip-left-widescreen-only::before{top:auto;right:auto;bottom:50%;left:-11px;-webkit-transform:translate(-100%,50%);transform:translate(-100%,50%)}}@media screen and (max-width:1471px){.has-tooltip-left-until-fullhd::after{top:auto;right:auto;bottom:50%;left:0;margin-top:auto;margin-right:auto;margin-bottom:-6px;margin-left:-11px;border-color:transparent transparent transparent rgba(74,74,74,.9)}.has-tooltip-left-until-fullhd::before{top:auto;right:auto;bottom:50%;left:-11px;-webkit-transform:translate(-100%,50%);transform:translate(-100%,50%)}}@media screen and (min-width:1472px){.has-tooltip-left-fullhd::after{top:auto;right:auto;bottom:50%;left:0;margin-top:auto;margin-right:auto;margin-bottom:-6px;margin-left:-11px;border-color:transparent transparent transparent rgba(74,74,74,.9)}.has-tooltip-left-fullhd::before{top:auto;right:auto;bottom:50%;left:-11px;-webkit-transform:translate(-100%,50%);transform:translate(-100%,50%)}} \ No newline at end of file diff --git a/static-data/www/shared/configeditor.js b/static-data/www/shared/configeditor.js deleted file mode 100755 index 7c9068ce..00000000 --- a/static-data/www/shared/configeditor.js +++ /dev/null @@ -1,56 +0,0 @@ -/* - Onionr - Private P2P Communication - - This file is for configuration editing in the web interface - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -var saveBtns = document.getElementsByClassName('saveConfig') -var saveBtn = document.getElementsByClassName('saveConfig')[0] -var configEditor = document.getElementsByClassName('configEditor')[0] -var config = {} - -fetch('/config/get', { -headers: { - "token": webpass -}}) -.then((resp) => resp.text()) // Transform the data into text -.then(function(resp) { - configEditor.value = resp - config = JSON.parse(resp) //parse here so we can set the text field to pretty json -}) - -saveBtn.onclick = function(){ - var postData = configEditor.value - try { - JSON.parse(postData) - } catch (e) { - alert('Configuration is not valid JSON') - return false - } - fetch('/config/setall', { - method: 'POST', - body: postData, - headers: { - "content-type": "application/json", - "token": webpass - }}) - .then((resp) => resp.text()) // Transform the data into text - .then(function(data) { - PNotify.success({ - text: 'Config saved' - }) - }) -} \ No newline at end of file diff --git a/static-data/www/shared/direct-connections.js b/static-data/www/shared/direct-connections.js deleted file mode 100644 index 8fda74b8..00000000 --- a/static-data/www/shared/direct-connections.js +++ /dev/null @@ -1,61 +0,0 @@ -/* - Onionr - Private P2P Communication - - Functions to detect - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see -*/ -direct_connections = {} - -let waitForConnection = function(pubkey){ - fetch('/dc-client/isconnected/' + pubkey, { - headers: { - "token": webpass - }}) - .then((resp) => resp.text()) - .then(function(resp) { - if (resp === ""){ - // Try to get the client address again again in a few seconds - setTimeout(function(){waitForConnection(pubkey)}, 3000) - } - else{ - // add to the dc object - direct_connections[pubkey] = resp - } - }) -} - -let createConnection = function(pubkey){ - // Tells the Onionr daemon to create a client connection to a remote peer for generic direct connections - - // If the pubkey is already connected, don't bother - if (direct_connections.hasOwnProperty(pubkey)){ - return - } - - // Do the request, then spawn a function to wait for the connection to be created - fetch('/dc-client/connect/' + pubkey, { - headers: { - "token": webpass - }}) - .then((resp) => resp.text()) - .then(function(resp) { - if (resp === "pending"){ - setTimeout(function(){waitForConnection(pubkey)}, 3000) - } - else{ - direct_connections[pubkey] = resp - } - }) -} \ No newline at end of file diff --git a/static-data/www/shared/eventsource.js b/static-data/www/shared/eventsource.js deleted file mode 100644 index 14578835..00000000 --- a/static-data/www/shared/eventsource.js +++ /dev/null @@ -1,1028 +0,0 @@ -/** @license - * eventsource.js - * Available under MIT License (MIT) - * https://github.com/Yaffle/EventSource/ - */ - -/*jslint indent: 2, vars: true, plusplus: true */ -/*global setTimeout, clearTimeout */ - -(function (global) { - "use strict"; - - var setTimeout = global.setTimeout; - var clearTimeout = global.clearTimeout; - var XMLHttpRequest = global.XMLHttpRequest; - var XDomainRequest = global.XDomainRequest; - var ActiveXObject = global.ActiveXObject; - var NativeEventSource = global.EventSource; - - var document = global.document; - var Promise = global.Promise; - var fetch = global.fetch; - var Response = global.Response; - var TextDecoder = global.TextDecoder; - var TextEncoder = global.TextEncoder; - var AbortController = global.AbortController; - - if (typeof window !== "undefined" && !("readyState" in document) && document.body == null) { // Firefox 2 - document.readyState = "loading"; - window.addEventListener("load", function (event) { - document.readyState = "complete"; - }, false); - } - - if (XMLHttpRequest == null) { // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest_in_IE6 - XMLHttpRequest = function () { - return new ActiveXObject("Microsoft.XMLHTTP"); - }; - } - - if (Object.create == undefined) { - Object.create = function (C) { - function F(){} - F.prototype = C; - return new F(); - }; - } - - // see #118 (Promise#finally with polyfilled Promise) - // see #123 (data URLs crash Edge) - // see #125 (CSP violations) - // see pull/#138 - // => No way to polyfill Promise#finally - - if (AbortController == undefined) { - var originalFetch2 = fetch; - fetch = function (url, options) { - var signal = options.signal; - return originalFetch2(url, {headers: options.headers, credentials: options.credentials, cache: options.cache}).then(function (response) { - var reader = response.body.getReader(); - signal._reader = reader; - if (signal._aborted) { - signal._reader.cancel(); - } - return { - status: response.status, - statusText: response.statusText, - headers: response.headers, - body: { - getReader: function () { - return reader; - } - } - }; - }); - }; - AbortController = function () { - this.signal = { - _reader: null, - _aborted: false - }; - this.abort = function () { - if (this.signal._reader != null) { - this.signal._reader.cancel(); - } - this.signal._aborted = true; - }; - }; - } - - function TextDecoderPolyfill() { - this.bitsNeeded = 0; - this.codePoint = 0; - } - - TextDecoderPolyfill.prototype.decode = function (octets) { - function valid(codePoint, shift, octetsCount) { - if (octetsCount === 1) { - return codePoint >= 0x0080 >> shift && codePoint << shift <= 0x07FF; - } - if (octetsCount === 2) { - return codePoint >= 0x0800 >> shift && codePoint << shift <= 0xD7FF || codePoint >= 0xE000 >> shift && codePoint << shift <= 0xFFFF; - } - if (octetsCount === 3) { - return codePoint >= 0x010000 >> shift && codePoint << shift <= 0x10FFFF; - } - throw new Error(); - } - function octetsCount(bitsNeeded, codePoint) { - if (bitsNeeded === 6 * 1) { - return codePoint >> 6 > 15 ? 3 : codePoint > 31 ? 2 : 1; - } - if (bitsNeeded === 6 * 2) { - return codePoint > 15 ? 3 : 2; - } - if (bitsNeeded === 6 * 3) { - return 3; - } - throw new Error(); - } - var REPLACER = 0xFFFD; - var string = ""; - var bitsNeeded = this.bitsNeeded; - var codePoint = this.codePoint; - for (var i = 0; i < octets.length; i += 1) { - var octet = octets[i]; - if (bitsNeeded !== 0) { - if (octet < 128 || octet > 191 || !valid(codePoint << 6 | octet & 63, bitsNeeded - 6, octetsCount(bitsNeeded, codePoint))) { - bitsNeeded = 0; - codePoint = REPLACER; - string += String.fromCharCode(codePoint); - } - } - if (bitsNeeded === 0) { - if (octet >= 0 && octet <= 127) { - bitsNeeded = 0; - codePoint = octet; - } else if (octet >= 192 && octet <= 223) { - bitsNeeded = 6 * 1; - codePoint = octet & 31; - } else if (octet >= 224 && octet <= 239) { - bitsNeeded = 6 * 2; - codePoint = octet & 15; - } else if (octet >= 240 && octet <= 247) { - bitsNeeded = 6 * 3; - codePoint = octet & 7; - } else { - bitsNeeded = 0; - codePoint = REPLACER; - } - if (bitsNeeded !== 0 && !valid(codePoint, bitsNeeded, octetsCount(bitsNeeded, codePoint))) { - bitsNeeded = 0; - codePoint = REPLACER; - } - } else { - bitsNeeded -= 6; - codePoint = codePoint << 6 | octet & 63; - } - if (bitsNeeded === 0) { - if (codePoint <= 0xFFFF) { - string += String.fromCharCode(codePoint); - } else { - string += String.fromCharCode(0xD800 + (codePoint - 0xFFFF - 1 >> 10)); - string += String.fromCharCode(0xDC00 + (codePoint - 0xFFFF - 1 & 0x3FF)); - } - } - } - this.bitsNeeded = bitsNeeded; - this.codePoint = codePoint; - return string; - }; - - // Firefox < 38 throws an error with stream option - var supportsStreamOption = function () { - try { - return new TextDecoder().decode(new TextEncoder().encode("test"), {stream: true}) === "test"; - } catch (error) { - console.log(error); - } - return false; - }; - - // IE, Edge - if (TextDecoder == undefined || TextEncoder == undefined || !supportsStreamOption()) { - TextDecoder = TextDecoderPolyfill; - } - - var k = function () { - }; - - function XHRWrapper(xhr) { - this.withCredentials = false; - this.readyState = 0; - this.status = 0; - this.statusText = ""; - this.responseText = ""; - this.onprogress = k; - this.onload = k; - this.onerror = k; - this.onreadystatechange = k; - this._contentType = ""; - this._xhr = xhr; - this._sendTimeout = 0; - this._abort = k; - } - - XHRWrapper.prototype.open = function (method, url) { - this._abort(true); - - var that = this; - var xhr = this._xhr; - var state = 1; - var timeout = 0; - - this._abort = function (silent) { - if (that._sendTimeout !== 0) { - clearTimeout(that._sendTimeout); - that._sendTimeout = 0; - } - if (state === 1 || state === 2 || state === 3) { - state = 4; - xhr.onload = k; - xhr.onerror = k; - xhr.onabort = k; - xhr.onprogress = k; - xhr.onreadystatechange = k; - // IE 8 - 9: XDomainRequest#abort() does not fire any event - // Opera < 10: XMLHttpRequest#abort() does not fire any event - xhr.abort(); - if (timeout !== 0) { - clearTimeout(timeout); - timeout = 0; - } - if (!silent) { - that.readyState = 4; - that.onabort(null); - that.onreadystatechange(); - } - } - state = 0; - }; - - var onStart = function () { - if (state === 1) { - //state = 2; - var status = 0; - var statusText = ""; - var contentType = undefined; - if (!("contentType" in xhr)) { - try { - status = xhr.status; - statusText = xhr.statusText; - contentType = xhr.getResponseHeader("Content-Type"); - } catch (error) { - // IE < 10 throws exception for `xhr.status` when xhr.readyState === 2 || xhr.readyState === 3 - // Opera < 11 throws exception for `xhr.status` when xhr.readyState === 2 - // https://bugs.webkit.org/show_bug.cgi?id=29121 - status = 0; - statusText = ""; - contentType = undefined; - // Firefox < 14, Chrome ?, Safari ? - // https://bugs.webkit.org/show_bug.cgi?id=29658 - // https://bugs.webkit.org/show_bug.cgi?id=77854 - } - } else { - status = 200; - statusText = "OK"; - contentType = xhr.contentType; - } - if (status !== 0) { - state = 2; - that.readyState = 2; - that.status = status; - that.statusText = statusText; - that._contentType = contentType; - that.onreadystatechange(); - } - } - }; - var onProgress = function () { - onStart(); - if (state === 2 || state === 3) { - state = 3; - var responseText = ""; - try { - responseText = xhr.responseText; - } catch (error) { - // IE 8 - 9 with XMLHttpRequest - } - that.readyState = 3; - that.responseText = responseText; - that.onprogress(); - } - }; - var onFinish = function (type, event) { - if (event == null || event.preventDefault == null) { - event = { - preventDefault: k - }; - } - // Firefox 52 fires "readystatechange" (xhr.readyState === 4) without final "readystatechange" (xhr.readyState === 3) - // IE 8 fires "onload" without "onprogress" - onProgress(); - if (state === 1 || state === 2 || state === 3) { - state = 4; - if (timeout !== 0) { - clearTimeout(timeout); - timeout = 0; - } - that.readyState = 4; - if (type === "load") { - that.onload(event); - } else if (type === "error") { - that.onerror(event); - } else if (type === "abort") { - that.onabort(event); - } else { - throw new TypeError(); - } - that.onreadystatechange(); - } - }; - var onReadyStateChange = function (event) { - if (xhr != undefined) { // Opera 12 - if (xhr.readyState === 4) { - if (!("onload" in xhr) || !("onerror" in xhr) || !("onabort" in xhr)) { - onFinish(xhr.responseText === "" ? "error" : "load", event); - } - } else if (xhr.readyState === 3) { - onProgress(); - } else if (xhr.readyState === 2) { - onStart(); - } - } - }; - var onTimeout = function () { - timeout = setTimeout(function () { - onTimeout(); - }, 500); - if (xhr.readyState === 3) { - onProgress(); - } - }; - - // XDomainRequest#abort removes onprogress, onerror, onload - if ("onload" in xhr) { - xhr.onload = function (event) { - onFinish("load", event); - }; - } - if ("onerror" in xhr) { - xhr.onerror = function (event) { - onFinish("error", event); - }; - } - // improper fix to match Firefox behaviour, but it is better than just ignore abort - // see https://bugzilla.mozilla.org/show_bug.cgi?id=768596 - // https://bugzilla.mozilla.org/show_bug.cgi?id=880200 - // https://code.google.com/p/chromium/issues/detail?id=153570 - // IE 8 fires "onload" without "onprogress - if ("onabort" in xhr) { - xhr.onabort = function (event) { - onFinish("abort", event); - }; - } - - // https://bugzilla.mozilla.org/show_bug.cgi?id=736723 - if (!("sendAsBinary" in XMLHttpRequest.prototype) && !("mozAnon" in XMLHttpRequest.prototype)) { - if ("onprogress" in xhr) { - xhr.onprogress = onProgress; - } - } - - // IE 8 - 9 (XMLHTTPRequest) - // Opera < 12 - // Firefox < 3.5 - // Firefox 3.5 - 3.6 - ? < 9.0 - // onprogress is not fired sometimes or delayed - // see also #64 (significant lag in IE 11) - xhr.onreadystatechange = function (event) { - onReadyStateChange(event); - }; - - if ("contentType" in xhr || !("ontimeout" in XMLHttpRequest.prototype)) { - url += (url.indexOf("?") === -1 ? "?" : "&") + "padding=true"; - } - xhr.open(method, url, true); - - if ("readyState" in xhr) { - // workaround for Opera 12 issue with "progress" events - // #91 (XMLHttpRequest onprogress not fired for streaming response in Edge 14-15-?) - timeout = setTimeout(function () { - onTimeout(); - }, 0); - } - }; - XHRWrapper.prototype.abort = function () { - this._abort(false); - }; - XHRWrapper.prototype.getResponseHeader = function (name) { - return this._contentType; - }; - XHRWrapper.prototype.setRequestHeader = function (name, value) { - var xhr = this._xhr; - if ("setRequestHeader" in xhr) { - xhr.setRequestHeader(name, value); - } - }; - XHRWrapper.prototype.getAllResponseHeaders = function () { - // XMLHttpRequest#getAllResponseHeaders returns null for CORS requests in Firefox 3.6.28 - return this._xhr.getAllResponseHeaders != undefined ? this._xhr.getAllResponseHeaders() || "" : ""; - }; - XHRWrapper.prototype.send = function () { - // loading indicator in Safari < ? (6), Chrome < 14, Firefox - if (!("ontimeout" in XMLHttpRequest.prototype) && - document != undefined && - document.readyState != undefined && - document.readyState !== "complete") { - var that = this; - that._sendTimeout = setTimeout(function () { - that._sendTimeout = 0; - that.send(); - }, 4); - return; - } - - var xhr = this._xhr; - // withCredentials should be set after "open" for Safari and Chrome (< 19 ?) - if ("withCredentials" in xhr) { - xhr.withCredentials = this.withCredentials; - } - try { - // xhr.send(); throws "Not enough arguments" in Firefox 3.0 - xhr.send(undefined); - } catch (error1) { - // Safari 5.1.7, Opera 12 - throw error1; - } - }; - - function toLowerCase(name) { - return name.replace(/[A-Z]/g, function (c) { - return String.fromCharCode(c.charCodeAt(0) + 0x20); - }); - } - - function HeadersPolyfill(all) { - // Get headers: implemented according to mozilla's example code: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders#Example - var map = Object.create(null); - var array = all.split("\r\n"); - for (var i = 0; i < array.length; i += 1) { - var line = array[i]; - var parts = line.split(": "); - var name = parts.shift(); - var value = parts.join(": "); - map[toLowerCase(name)] = value; - } - this._map = map; - } - HeadersPolyfill.prototype.get = function (name) { - return this._map[toLowerCase(name)]; - }; - - if (XMLHttpRequest != null && XMLHttpRequest.HEADERS_RECEIVED == null) { // IE < 9, Firefox 3.6 - XMLHttpRequest.HEADERS_RECEIVED = 2; - } - - function XHRTransport() { - } - - XHRTransport.prototype.open = function (xhr, onStartCallback, onProgressCallback, onFinishCallback, url, withCredentials, headers) { - xhr.open("GET", url); - var offset = 0; - xhr.onprogress = function () { - var responseText = xhr.responseText; - var chunk = responseText.slice(offset); - offset += chunk.length; - onProgressCallback(chunk); - }; - xhr.onerror = function (event) { - event.preventDefault(); - onFinishCallback(new Error("NetworkError")); - }; - xhr.onload = function () { - onFinishCallback(null); - }; - xhr.onabort = function () { - onFinishCallback(null); - }; - xhr.onreadystatechange = function () { - if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) { - var status = xhr.status; - var statusText = xhr.statusText; - var contentType = xhr.getResponseHeader("Content-Type"); - var headers = xhr.getAllResponseHeaders(); - onStartCallback(status, statusText, contentType, new HeadersPolyfill(headers)); - } - }; - xhr.withCredentials = withCredentials; - for (var name in headers) { - if (Object.prototype.hasOwnProperty.call(headers, name)) { - xhr.setRequestHeader(name, headers[name]); - } - } - xhr.send(); - return xhr; - }; - - function HeadersWrapper(headers) { - this._headers = headers; - } - HeadersWrapper.prototype.get = function (name) { - return this._headers.get(name); - }; - - function FetchTransport() { - } - - FetchTransport.prototype.open = function (xhr, onStartCallback, onProgressCallback, onFinishCallback, url, withCredentials, headers) { - var reader = null; - var controller = new AbortController(); - var signal = controller.signal; - var textDecoder = new TextDecoder(); - fetch(url, { - headers: headers, - credentials: withCredentials ? "include" : "same-origin", - signal: signal, - cache: "no-store" - }).then(function (response) { - reader = response.body.getReader(); - onStartCallback(response.status, response.statusText, response.headers.get("Content-Type"), new HeadersWrapper(response.headers)); - // see https://github.com/promises-aplus/promises-spec/issues/179 - return new Promise(function (resolve, reject) { - var readNextChunk = function () { - reader.read().then(function (result) { - if (result.done) { - //Note: bytes in textDecoder are ignored - resolve(undefined); - } else { - var chunk = textDecoder.decode(result.value, {stream: true}); - onProgressCallback(chunk); - readNextChunk(); - } - })["catch"](function (error) { - reject(error); - }); - }; - readNextChunk(); - }); - })["catch"](function (error) { - if (error.name === "AbortError") { - return undefined; - } else { - return error; - } - }).then(function (error) { - onFinishCallback(error); - }); - return { - abort: function () { - if (reader != null) { - reader.cancel(); // https://bugzilla.mozilla.org/show_bug.cgi?id=1583815 - } - controller.abort(); - } - }; - }; - - function EventTarget() { - this._listeners = Object.create(null); - } - - function throwError(e) { - setTimeout(function () { - throw e; - }, 0); - } - - EventTarget.prototype.dispatchEvent = function (event) { - event.target = this; - var typeListeners = this._listeners[event.type]; - if (typeListeners != undefined) { - var length = typeListeners.length; - for (var i = 0; i < length; i += 1) { - var listener = typeListeners[i]; - try { - if (typeof listener.handleEvent === "function") { - listener.handleEvent(event); - } else { - listener.call(this, event); - } - } catch (e) { - throwError(e); - } - } - } - }; - EventTarget.prototype.addEventListener = function (type, listener) { - type = String(type); - var listeners = this._listeners; - var typeListeners = listeners[type]; - if (typeListeners == undefined) { - typeListeners = []; - listeners[type] = typeListeners; - } - var found = false; - for (var i = 0; i < typeListeners.length; i += 1) { - if (typeListeners[i] === listener) { - found = true; - } - } - if (!found) { - typeListeners.push(listener); - } - }; - EventTarget.prototype.removeEventListener = function (type, listener) { - type = String(type); - var listeners = this._listeners; - var typeListeners = listeners[type]; - if (typeListeners != undefined) { - var filtered = []; - for (var i = 0; i < typeListeners.length; i += 1) { - if (typeListeners[i] !== listener) { - filtered.push(typeListeners[i]); - } - } - if (filtered.length === 0) { - delete listeners[type]; - } else { - listeners[type] = filtered; - } - } - }; - - function Event(type) { - this.type = type; - this.target = undefined; - this.defaultPrevented = false; - } - - Event.prototype.preventDefault = function () { - this.defaultPrevented = true; - }; - - function MessageEvent(type, options) { - Event.call(this, type); - this.data = options.data; - this.lastEventId = options.lastEventId; - } - - MessageEvent.prototype = Object.create(Event.prototype); - - function ConnectionEvent(type, options) { - Event.call(this, type); - this.status = options.status; - this.statusText = options.statusText; - this.headers = options.headers; - } - - ConnectionEvent.prototype = Object.create(Event.prototype); - - var WAITING = -1; - var CONNECTING = 0; - var OPEN = 1; - var CLOSED = 2; - - var AFTER_CR = -1; - var FIELD_START = 0; - var FIELD = 1; - var VALUE_START = 2; - var VALUE = 3; - - var contentTypeRegExp = /^text\/event\-stream;?(\s*charset\=utf\-8)?$/i; - - var MINIMUM_DURATION = 1000; - var MAXIMUM_DURATION = 18000000; - - var parseDuration = function (value, def) { - var n = value == null ? def : parseInt(value, 10); - if (n !== n) { - n = def; - } - return clampDuration(n); - }; - var clampDuration = function (n) { - return Math.min(Math.max(n, MINIMUM_DURATION), MAXIMUM_DURATION); - }; - - var fire = function (that, f, event) { - try { - if (typeof f === "function") { - f.call(that, event); - } - } catch (e) { - throwError(e); - } - }; - - function EventSourcePolyfill(url, options) { - EventTarget.call(this); - options = options || {}; - - this.onopen = undefined; - this.onmessage = undefined; - this.onerror = undefined; - - this.url = undefined; - this.readyState = undefined; - this.withCredentials = undefined; - this.headers = undefined; - - this._close = undefined; - - start(this, url, options); - } - - function getBestXHRTransport() { - return (XMLHttpRequest != undefined && ("withCredentials" in XMLHttpRequest.prototype)) || XDomainRequest == undefined - ? new XMLHttpRequest() - : new XDomainRequest(); - } - - var isFetchSupported = fetch != undefined && Response != undefined && "body" in Response.prototype; - - function start(es, url, options) { - url = String(url); - var withCredentials = Boolean(options.withCredentials); - - var initialRetry = clampDuration(1000); - var heartbeatTimeout = parseDuration(options.heartbeatTimeout, 45000); - - var lastEventId = ""; - var retry = initialRetry; - var wasActivity = false; - var headers = options.headers || {}; - var TransportOption = options.Transport; - var xhr = isFetchSupported && TransportOption == undefined ? undefined : new XHRWrapper(TransportOption != undefined ? new TransportOption() : getBestXHRTransport()); - var transport = TransportOption != null && typeof TransportOption !== "string" ? new TransportOption() : (xhr == undefined ? new FetchTransport() : new XHRTransport()); - var abortController = undefined; - var timeout = 0; - var currentState = WAITING; - var dataBuffer = ""; - var lastEventIdBuffer = ""; - var eventTypeBuffer = ""; - - var textBuffer = ""; - var state = FIELD_START; - var fieldStart = 0; - var valueStart = 0; - - var onStart = function (status, statusText, contentType, headers) { - if (currentState === CONNECTING) { - if (status === 200 && contentType != undefined && contentTypeRegExp.test(contentType)) { - currentState = OPEN; - wasActivity = true; - retry = initialRetry; - es.readyState = OPEN; - var event = new ConnectionEvent("open", { - status: status, - statusText: statusText, - headers: headers - }); - es.dispatchEvent(event); - fire(es, es.onopen, event); - } else { - var message = ""; - if (status !== 200) { - if (statusText) { - statusText = statusText.replace(/\s+/g, " "); - } - message = "EventSource's response has a status " + status + " " + statusText + " that is not 200. Aborting the connection."; - } else { - message = "EventSource's response has a Content-Type specifying an unsupported type: " + (contentType == undefined ? "-" : contentType.replace(/\s+/g, " ")) + ". Aborting the connection."; - } - close(); - var event = new ConnectionEvent("error", { - status: status, - statusText: statusText, - headers: headers - }); - es.dispatchEvent(event); - fire(es, es.onerror, event); - if (!event.defaultPrevented) { - throwError(new Error(message)); - } - } - } - }; - - var onProgress = function (textChunk) { - if (currentState === OPEN) { - var n = -1; - for (var i = 0; i < textChunk.length; i += 1) { - var c = textChunk.charCodeAt(i); - if (c === "\n".charCodeAt(0) || c === "\r".charCodeAt(0)) { - n = i; - } - } - var chunk = (n !== -1 ? textBuffer : "") + textChunk.slice(0, n + 1); - textBuffer = (n === -1 ? textBuffer : "") + textChunk.slice(n + 1); - if (chunk !== "") { - wasActivity = true; - } - for (var position = 0; position < chunk.length; position += 1) { - var c = chunk.charCodeAt(position); - if (state === AFTER_CR && c === "\n".charCodeAt(0)) { - state = FIELD_START; - } else { - if (state === AFTER_CR) { - state = FIELD_START; - } - if (c === "\r".charCodeAt(0) || c === "\n".charCodeAt(0)) { - if (state !== FIELD_START) { - if (state === FIELD) { - valueStart = position + 1; - } - var field = chunk.slice(fieldStart, valueStart - 1); - var value = chunk.slice(valueStart + (valueStart < position && chunk.charCodeAt(valueStart) === " ".charCodeAt(0) ? 1 : 0), position); - if (field === "data") { - dataBuffer += "\n"; - dataBuffer += value; - } else if (field === "id") { - lastEventIdBuffer = value; - } else if (field === "event") { - eventTypeBuffer = value; - } else if (field === "retry") { - initialRetry = parseDuration(value, initialRetry); - retry = initialRetry; - } else if (field === "heartbeatTimeout") { - heartbeatTimeout = parseDuration(value, heartbeatTimeout); - if (timeout !== 0) { - clearTimeout(timeout); - timeout = setTimeout(function () { - onTimeout(); - }, heartbeatTimeout); - } - } - } - if (state === FIELD_START) { - if (dataBuffer !== "") { - lastEventId = lastEventIdBuffer; - if (eventTypeBuffer === "") { - eventTypeBuffer = "message"; - } - var event = new MessageEvent(eventTypeBuffer, { - data: dataBuffer.slice(1), - lastEventId: lastEventIdBuffer - }); - es.dispatchEvent(event); - if (eventTypeBuffer === "open") { - fire(es, es.onopen, event); - } else if (eventTypeBuffer === "message") { - fire(es, es.onmessage, event); - } else if (eventTypeBuffer === "error") { - fire(es, es.onerror, event); - } - if (currentState === CLOSED) { - return; - } - } - dataBuffer = ""; - eventTypeBuffer = ""; - } - state = c === "\r".charCodeAt(0) ? AFTER_CR : FIELD_START; - } else { - if (state === FIELD_START) { - fieldStart = position; - state = FIELD; - } - if (state === FIELD) { - if (c === ":".charCodeAt(0)) { - valueStart = position + 1; - state = VALUE_START; - } - } else if (state === VALUE_START) { - state = VALUE; - } - } - } - } - } - }; - - var onFinish = function (error) { - if (currentState === OPEN || currentState === CONNECTING) { - currentState = WAITING; - if (timeout !== 0) { - clearTimeout(timeout); - timeout = 0; - } - timeout = setTimeout(function () { - onTimeout(); - }, retry); - retry = clampDuration(Math.min(initialRetry * 16, retry * 2)); - - es.readyState = CONNECTING; - var event = new Event("error"); - es.dispatchEvent(event); - fire(es, es.onerror, event); - if (error != null) { - if (!event.defaultPrevented) { - throwError(error); - } - } - } - }; - - var close = function () { - currentState = CLOSED; - if (abortController != undefined) { - abortController.abort(); - abortController = undefined; - } - if (timeout !== 0) { - clearTimeout(timeout); - timeout = 0; - } - es.readyState = CLOSED; - }; - - var onTimeout = function () { - timeout = 0; - - if (currentState !== WAITING) { - if (!wasActivity && abortController != undefined) { - onFinish(new Error("No activity within " + heartbeatTimeout + " milliseconds. Reconnecting.")); - abortController.abort(); - abortController = undefined; - } else { - wasActivity = false; - timeout = setTimeout(function () { - onTimeout(); - }, heartbeatTimeout); - } - return; - } - - wasActivity = false; - timeout = setTimeout(function () { - onTimeout(); - }, heartbeatTimeout); - - currentState = CONNECTING; - dataBuffer = ""; - eventTypeBuffer = ""; - lastEventIdBuffer = lastEventId; - textBuffer = ""; - fieldStart = 0; - valueStart = 0; - state = FIELD_START; - - // https://bugzilla.mozilla.org/show_bug.cgi?id=428916 - // Request header field Last-Event-ID is not allowed by Access-Control-Allow-Headers. - var requestURL = url; - if (url.slice(0, 5) !== "data:" && url.slice(0, 5) !== "blob:") { - if (lastEventId !== "") { - requestURL += (url.indexOf("?") === -1 ? "?" : "&") + "lastEventId=" + encodeURIComponent(lastEventId); - } - } - var withCredentials = es.withCredentials; - var requestHeaders = {}; - requestHeaders["Accept"] = "text/event-stream"; - var headers = es.headers; - if (headers != undefined) { - for (var name in headers) { - if (Object.prototype.hasOwnProperty.call(headers, name)) { - requestHeaders[name] = headers[name]; - } - } - } - try { - abortController = transport.open(xhr, onStart, onProgress, onFinish, requestURL, withCredentials, requestHeaders); - } catch (error) { - close(); - throw error; - } - }; - - es.url = url; - es.readyState = CONNECTING; - es.withCredentials = withCredentials; - es.headers = headers; - es._close = close; - - onTimeout(); - } - - EventSourcePolyfill.prototype = Object.create(EventTarget.prototype); - EventSourcePolyfill.prototype.CONNECTING = CONNECTING; - EventSourcePolyfill.prototype.OPEN = OPEN; - EventSourcePolyfill.prototype.CLOSED = CLOSED; - EventSourcePolyfill.prototype.close = function () { - this._close(); - }; - - EventSourcePolyfill.CONNECTING = CONNECTING; - EventSourcePolyfill.OPEN = OPEN; - EventSourcePolyfill.CLOSED = CLOSED; - EventSourcePolyfill.prototype.withCredentials = undefined; - - var R = NativeEventSource - if (XMLHttpRequest != undefined && (NativeEventSource == undefined || !("withCredentials" in NativeEventSource.prototype))) { - // Why replace a native EventSource ? - // https://bugzilla.mozilla.org/show_bug.cgi?id=444328 - // https://bugzilla.mozilla.org/show_bug.cgi?id=831392 - // https://code.google.com/p/chromium/issues/detail?id=260144 - // https://code.google.com/p/chromium/issues/detail?id=225654 - // ... - R = EventSourcePolyfill; - } - - (function (factory) { - if (typeof module === "object" && typeof module.exports === "object") { - var v = factory(exports); - if (v !== undefined) module.exports = v; - } - else if (typeof define === "function" && define.amd) { - define(["exports"], factory); - } - else { - factory(global); - } - })(function (exports) { - exports.EventSourcePolyfill = EventSourcePolyfill; - exports.NativeEventSource = NativeEventSource; - exports.EventSource = R; - }); -}(typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : this)); diff --git a/static-data/www/shared/fontawesome-free-5.10.2/LICENSE.txt b/static-data/www/shared/fontawesome-free-5.10.2/LICENSE.txt deleted file mode 100644 index f31bef92..00000000 --- a/static-data/www/shared/fontawesome-free-5.10.2/LICENSE.txt +++ /dev/null @@ -1,34 +0,0 @@ -Font Awesome Free License -------------------------- - -Font Awesome Free is free, open source, and GPL friendly. You can use it for -commercial projects, open source projects, or really almost whatever you want. -Full Font Awesome Free license: https://fontawesome.com/license/free. - -# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/) -In the Font Awesome Free download, the CC BY 4.0 license applies to all icons -packaged as SVG and JS file types. - -# Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL) -In the Font Awesome Free download, the SIL OFL license applies to all icons -packaged as web and desktop font files. - -# Code: MIT License (https://opensource.org/licenses/MIT) -In the Font Awesome Free download, the MIT license applies to all non-font and -non-icon files. - -# Attribution -Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font -Awesome Free files already contain embedded comments with sufficient -attribution, so you shouldn't need to do anything additional when using these -files normally. - -We've kept attribution comments terse, so we ask that you do not actively work -to remove them from files, especially code. They're a great way for folks to -learn about Font Awesome. - -# Brand Icons -All brand icons are trademarks of their respective owners. The use of these -trademarks does not indicate endorsement of the trademark holder by Font -Awesome, nor vice versa. **Please do not use brand logos for any purpose except -to represent the company, product, or service to which they refer.** diff --git a/static-data/www/shared/fontawesome-free-5.10.2/css/all.min.css b/static-data/www/shared/fontawesome-free-5.10.2/css/all.min.css deleted file mode 100644 index 3158702f..00000000 --- a/static-data/www/shared/fontawesome-free-5.10.2/css/all.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * Font Awesome Free 5.10.2 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - */ -.fa,.fab,.fad,.fal,.far,.fas{-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:.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:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.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:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-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}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.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-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.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-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-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.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-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-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-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.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-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-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.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-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.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-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.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-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.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-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.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-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.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-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.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-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.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-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.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-pie:before{content:"\f200"}.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-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.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-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.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-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.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-critical-role:before{content:"\f6c9"}.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-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.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-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.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-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.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-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.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-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.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-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.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-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.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-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.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-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-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.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-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.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-firefox:before{content:"\f269"}.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-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.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-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.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-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.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-gifts:before{content:"\f79c"}.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-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.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-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.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-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-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.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-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.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-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.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-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.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-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.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-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.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-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.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-leaf:before{content:"\f06c"}.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-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.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-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.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-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.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-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-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-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-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-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.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-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.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-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.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-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.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-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.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-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-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-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-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-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.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-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.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-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.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-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-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.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-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-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.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-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.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-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.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-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-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.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-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.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-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-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-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.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-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.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-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.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-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-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.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-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.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-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.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-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.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-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.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-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.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-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.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-uniregistry:before{content:"\f404"}.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-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.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-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.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-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.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-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-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.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-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.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-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:normal;font-display:auto;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-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;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-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;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,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file diff --git a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-brands-400.eot b/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-brands-400.eot deleted file mode 100644 index 85d81ebc..00000000 Binary files a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-brands-400.eot and /dev/null differ diff --git a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-brands-400.svg b/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-brands-400.svg deleted file mode 100644 index 594d6198..00000000 --- a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-brands-400.svg +++ /dev/null @@ -1,3449 +0,0 @@ - - - - - -Created by FontForge 20190801 at Thu Aug 22 14:41:09 2019 - By Robert Madole -Copyright (c) Font Awesome - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-brands-400.ttf b/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-brands-400.ttf deleted file mode 100644 index aa1687de..00000000 Binary files a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-brands-400.ttf and /dev/null differ diff --git a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-brands-400.woff b/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-brands-400.woff deleted file mode 100644 index 6d1c6148..00000000 Binary files a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-brands-400.woff and /dev/null differ diff --git a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-brands-400.woff2 b/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-brands-400.woff2 deleted file mode 100644 index 1727af3e..00000000 Binary files a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-brands-400.woff2 and /dev/null differ diff --git a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-regular-400.eot b/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-regular-400.eot deleted file mode 100644 index ea607caa..00000000 Binary files a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-regular-400.eot and /dev/null differ diff --git a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-regular-400.svg b/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-regular-400.svg deleted file mode 100644 index a35e6d91..00000000 --- a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-regular-400.svg +++ /dev/null @@ -1,803 +0,0 @@ - - - - - -Created by FontForge 20190801 at Thu Aug 22 14:41:09 2019 - By Robert Madole -Copyright (c) Font Awesome - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-regular-400.ttf b/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-regular-400.ttf deleted file mode 100644 index 34629a6d..00000000 Binary files a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-regular-400.ttf and /dev/null differ diff --git a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-regular-400.woff b/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-regular-400.woff deleted file mode 100644 index e115b8b9..00000000 Binary files a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-regular-400.woff and /dev/null differ diff --git a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-regular-400.woff2 b/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-regular-400.woff2 deleted file mode 100644 index cb441b70..00000000 Binary files a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-regular-400.woff2 and /dev/null differ diff --git a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-solid-900.eot b/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-solid-900.eot deleted file mode 100644 index 4101e318..00000000 Binary files a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-solid-900.eot and /dev/null differ diff --git a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-solid-900.svg b/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-solid-900.svg deleted file mode 100644 index 228a9b67..00000000 --- a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-solid-900.svg +++ /dev/null @@ -1,4649 +0,0 @@ - - - - - -Created by FontForge 20190801 at Thu Aug 22 14:41:09 2019 - By Robert Madole -Copyright (c) Font Awesome - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-solid-900.ttf b/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-solid-900.ttf deleted file mode 100644 index 704a2a99..00000000 Binary files a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-solid-900.ttf and /dev/null differ diff --git a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-solid-900.woff b/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-solid-900.woff deleted file mode 100644 index 7adb9d59..00000000 Binary files a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-solid-900.woff and /dev/null differ diff --git a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-solid-900.woff2 b/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-solid-900.woff2 deleted file mode 100644 index ac6a6e31..00000000 Binary files a/static-data/www/shared/fontawesome-free-5.10.2/webfonts/fa-solid-900.woff2 and /dev/null differ diff --git a/static-data/www/shared/getos.js b/static-data/www/shared/getos.js deleted file mode 100644 index 888fe04d..00000000 --- a/static-data/www/shared/getos.js +++ /dev/null @@ -1,30 +0,0 @@ -/* - Onionr - Private P2P Communication - - Get node OS version (not browser) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -onionrNodeOS = "" - -fetch('/os', { - method: 'GET', - headers: { - "token": webpass - }}) -.then((resp) => resp.text()) // Transform the data into text -.then(function(os) { - onionrNodeOS = os - }) diff --git a/static-data/www/shared/identicon.js b/static-data/www/shared/identicon.js deleted file mode 100644 index cd351cce..00000000 --- a/static-data/www/shared/identicon.js +++ /dev/null @@ -1,205 +0,0 @@ -/** - * Identicon.js 2.3.3 - * http://github.com/stewartlord/identicon.js - * - * PNGLib required for PNG output - * http://www.xarg.org/download/pnglib.js - * - * Copyright 2018, Stewart Lord - * Released under the BSD license - * http://www.opensource.org/licenses/bsd-license.php - */ - -(function() { - var PNGlib; - if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { - PNGlib = require('./pnglib'); - } else { - PNGlib = window.PNGlib; - } - - var Identicon = function(hash, options){ - if (typeof(hash) !== 'string' || hash.length < 15) { - throw 'A hash of at least 15 characters is required.'; - } - - this.defaults = { - background: [240, 240, 240, 255], - margin: 0.08, - size: 64, - saturation: 0.7, - brightness: 0.5, - format: 'png' - }; - - this.options = typeof(options) === 'object' ? options : this.defaults; - - // backward compatibility with old constructor (hash, size, margin) - if (typeof(arguments[1]) === 'number') { this.options.size = arguments[1]; } - if (arguments[2]) { this.options.margin = arguments[2]; } - - this.hash = hash - this.background = this.options.background || this.defaults.background; - this.size = this.options.size || this.defaults.size; - this.format = this.options.format || this.defaults.format; - this.margin = this.options.margin !== undefined ? this.options.margin : this.defaults.margin; - - // foreground defaults to last 7 chars as hue at 70% saturation, 50% brightness - var hue = parseInt(this.hash.substr(-7), 16) / 0xfffffff; - var saturation = this.options.saturation || this.defaults.saturation; - var brightness = this.options.brightness || this.defaults.brightness; - this.foreground = this.options.foreground || this.hsl2rgb(hue, saturation, brightness); - }; - - Identicon.prototype = { - background: null, - foreground: null, - hash: null, - margin: null, - size: null, - format: null, - - image: function(){ - return this.isSvg() - ? new Svg(this.size, this.foreground, this.background) - : new PNGlib(this.size, this.size, 256); - }, - - render: function(){ - var image = this.image(), - size = this.size, - baseMargin = Math.floor(size * this.margin), - cell = Math.floor((size - (baseMargin * 2)) / 5), - margin = Math.floor((size - cell * 5) / 2), - bg = image.color.apply(image, this.background), - fg = image.color.apply(image, this.foreground); - - // the first 15 characters of the hash control the pixels (even/odd) - // they are drawn down the middle first, then mirrored outwards - var i, color; - for (i = 0; i < 15; i++) { - color = parseInt(this.hash.charAt(i), 16) % 2 ? bg : fg; - if (i < 5) { - this.rectangle(2 * cell + margin, i * cell + margin, cell, cell, color, image); - } else if (i < 10) { - this.rectangle(1 * cell + margin, (i - 5) * cell + margin, cell, cell, color, image); - this.rectangle(3 * cell + margin, (i - 5) * cell + margin, cell, cell, color, image); - } else if (i < 15) { - this.rectangle(0 * cell + margin, (i - 10) * cell + margin, cell, cell, color, image); - this.rectangle(4 * cell + margin, (i - 10) * cell + margin, cell, cell, color, image); - } - } - - return image; - }, - - rectangle: function(x, y, w, h, color, image){ - if (this.isSvg()) { - image.rectangles.push({x: x, y: y, w: w, h: h, color: color}); - } else { - var i, j; - for (i = x; i < x + w; i++) { - for (j = y; j < y + h; j++) { - image.buffer[image.index(i, j)] = color; - } - } - } - }, - - // adapted from: https://gist.github.com/aemkei/1325937 - hsl2rgb: function(h, s, b){ - h *= 6; - s = [ - b += s *= b < .5 ? b : 1 - b, - b - h % 1 * s * 2, - b -= s *= 2, - b, - b + h % 1 * s, - b + s - ]; - - return[ - s[ ~~h % 6 ] * 255, // red - s[ (h|16) % 6 ] * 255, // green - s[ (h|8) % 6 ] * 255 // blue - ]; - }, - - toString: function(raw){ - // backward compatibility with old toString, default to base64 - if (raw) { - return this.render().getDump(); - } else { - return this.render().getBase64(); - } - }, - - isSvg: function(){ - return this.format.match(/svg/i) - } - }; - - var Svg = function(size, foreground, background){ - this.size = size; - this.foreground = this.color.apply(this, foreground); - this.background = this.color.apply(this, background); - this.rectangles = []; - }; - - Svg.prototype = { - size: null, - foreground: null, - background: null, - rectangles: null, - - color: function(r, g, b, a){ - var values = [r, g, b].map(Math.round); - values.push((a >= 0) && (a <= 255) ? a/255 : 1); - return 'rgba(' + values.join(',') + ')'; - }, - - getDump: function(){ - var i, - xml, - rect, - fg = this.foreground, - bg = this.background, - stroke = this.size * 0.005; - - xml = "" - + ""; - - for (i = 0; i < this.rectangles.length; i++) { - rect = this.rectangles[i]; - if (rect.color == bg) continue; - xml += ""; - } - xml += "" - - return xml; - }, - - getBase64: function(){ - if ('function' === typeof btoa) { - return btoa(this.getDump()); - } else if (Buffer) { - return new Buffer(this.getDump(), 'binary').toString('base64'); - } else { - throw 'Cannot generate base64 output'; - } - } - }; - - if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { - module.exports = Identicon; - } else { - window.Identicon = Identicon; - } -})(); diff --git a/static-data/www/shared/images/LICENSE.txt b/static-data/www/shared/images/LICENSE.txt deleted file mode 100644 index e81f2cbe..00000000 --- a/static-data/www/shared/images/LICENSE.txt +++ /dev/null @@ -1 +0,0 @@ -privacy.png is Jony from the Noun Project https://thenounproject.com/jony4036 under https://creativecommons.org/licenses/by/3.0/us/legalcode diff --git a/static-data/www/shared/images/anon.svg b/static-data/www/shared/images/anon.svg deleted file mode 100644 index 786f60ee..00000000 --- a/static-data/www/shared/images/anon.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - -Created by potrace 1.15, written by Peter Selinger 2001-2017 - - - - - - - - diff --git a/static-data/www/shared/images/favicon.ico b/static-data/www/shared/images/favicon.ico deleted file mode 100644 index 3c11d7e2..00000000 Binary files a/static-data/www/shared/images/favicon.ico and /dev/null differ diff --git a/static-data/www/shared/images/onionr-icon.png b/static-data/www/shared/images/onionr-icon.png deleted file mode 100755 index 6662210d..00000000 Binary files a/static-data/www/shared/images/onionr-icon.png and /dev/null differ diff --git a/static-data/www/shared/images/onionr-text.png b/static-data/www/shared/images/onionr-text.png deleted file mode 100644 index dd85097c..00000000 Binary files a/static-data/www/shared/images/onionr-text.png and /dev/null differ diff --git a/static-data/www/shared/images/privacy.png b/static-data/www/shared/images/privacy.png deleted file mode 100644 index bcedd1ab..00000000 Binary files a/static-data/www/shared/images/privacy.png and /dev/null differ diff --git a/static-data/www/shared/loadabout.js b/static-data/www/shared/loadabout.js deleted file mode 100644 index e5ba8dc9..00000000 --- a/static-data/www/shared/loadabout.js +++ /dev/null @@ -1,23 +0,0 @@ -/* - Onionr - Private P2P Communication - - Load about text for modal - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see -*/ -fetch('shared/about.html') - .then(resp=>resp.text()) - .then(function(response) { - aboutText = response - }) \ No newline at end of file diff --git a/static-data/www/shared/main/PNotifyBrightTheme.css b/static-data/www/shared/main/PNotifyBrightTheme.css deleted file mode 100644 index ec3014b4..00000000 --- a/static-data/www/shared/main/PNotifyBrightTheme.css +++ /dev/null @@ -1 +0,0 @@ -[ui-pnotify].ui-pnotify .brighttheme{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}[ui-pnotify].ui-pnotify .brighttheme.ui-pnotify-container{padding:1.3rem}[ui-pnotify].ui-pnotify-with-icon .brighttheme .ui-pnotify-confirm,[ui-pnotify].ui-pnotify-with-icon .brighttheme .ui-pnotify-text,[ui-pnotify].ui-pnotify-with-icon .brighttheme .ui-pnotify-title{margin-left:1.8rem}[dir=rtl] [ui-pnotify].ui-pnotify-with-icon .brighttheme .ui-pnotify-confirm,[dir=rtl] [ui-pnotify].ui-pnotify-with-icon .brighttheme .ui-pnotify-text,[dir=rtl] [ui-pnotify].ui-pnotify-with-icon .brighttheme .ui-pnotify-title{margin-right:1.8rem;margin-left:0}[ui-pnotify].ui-pnotify .brighttheme .ui-pnotify-title{font-size:1.2rem;line-height:1.4rem;margin-top:-.2rem;margin-bottom:1rem}[ui-pnotify].ui-pnotify .brighttheme .ui-pnotify-text{font-size:1rem;line-height:1.2rem;margin-top:0}[ui-pnotify].ui-pnotify .brighttheme .ui-pnotify-icon{line-height:1}[ui-pnotify].ui-pnotify .brighttheme-notice{background-color:#ffffa2;border:0 solid #ff0}[ui-pnotify].ui-pnotify .brighttheme-notice div,[ui-pnotify].ui-pnotify .brighttheme-notice h4{color:#4f4f00}[ui-pnotify].ui-pnotify .brighttheme-info{background-color:#8fcedd;border:0 solid #0286a5}[ui-pnotify].ui-pnotify .brighttheme-info div,[ui-pnotify].ui-pnotify .brighttheme-info h4{color:#012831}[ui-pnotify].ui-pnotify .brighttheme-success{background-color:#aff29a;border:0 solid #35db00}[ui-pnotify].ui-pnotify .brighttheme-success div,[ui-pnotify].ui-pnotify .brighttheme-success h4{color:#104300}[ui-pnotify].ui-pnotify .brighttheme-error{background-color:#ffaba2;background-image:repeating-linear-gradient(135deg,transparent,transparent 35px,rgba(255,255,255,.3) 35px,rgba(255,255,255,.3) 70px);border:0 solid #ff1800}[ui-pnotify].ui-pnotify .brighttheme-error div,[ui-pnotify].ui-pnotify .brighttheme-error h4{color:#4f0800}[ui-pnotify].ui-pnotify .brighttheme .ui-pnotify-closer,[ui-pnotify].ui-pnotify .brighttheme .ui-pnotify-sticker{font-size:1rem;line-height:1.2rem}[ui-pnotify].ui-pnotify .brighttheme-icon-closer,[ui-pnotify].ui-pnotify .brighttheme-icon-error,[ui-pnotify].ui-pnotify .brighttheme-icon-info,[ui-pnotify].ui-pnotify .brighttheme-icon-notice,[ui-pnotify].ui-pnotify .brighttheme-icon-sticker,[ui-pnotify].ui-pnotify .brighttheme-icon-success{position:relative;width:1rem;height:1rem;font-size:1rem;font-weight:700;line-height:1rem;font-family:"Courier New",Courier,monospace;border-radius:50%}[ui-pnotify].ui-pnotify .brighttheme-icon-closer:after,[ui-pnotify].ui-pnotify .brighttheme-icon-info:after,[ui-pnotify].ui-pnotify .brighttheme-icon-notice:after,[ui-pnotify].ui-pnotify .brighttheme-icon-sticker:after,[ui-pnotify].ui-pnotify .brighttheme-icon-success:after{position:absolute;top:0;left:.2rem}[ui-pnotify].ui-pnotify .brighttheme-icon-notice{background-color:#2e2e00;color:#ffffa2}[ui-pnotify].ui-pnotify .brighttheme-icon-notice:after{content:"!"}[ui-pnotify].ui-pnotify .brighttheme-icon-info{background-color:#012831;color:#8fcedd}[ui-pnotify].ui-pnotify .brighttheme-icon-info:after{content:"i"}[ui-pnotify].ui-pnotify .brighttheme-icon-success{background-color:#104300;color:#aff29a}[ui-pnotify].ui-pnotify .brighttheme-icon-success:after{content:"\002713"}[ui-pnotify].ui-pnotify .brighttheme-icon-error{width:0;height:0;font-size:0;line-height:0;border-radius:0;border-left:.6rem solid transparent;border-right:.6rem solid transparent;border-bottom:1.2rem solid #2e0400;color:#ffaba2}[ui-pnotify].ui-pnotify .brighttheme-icon-error:after{position:absolute;top:.1rem;left:-.25rem;font-size:.9rem;font-weight:700;line-height:1.4rem;font-family:"Courier New",Courier,monospace;content:"!"}[ui-pnotify].ui-pnotify .brighttheme-icon-closer,[ui-pnotify].ui-pnotify .brighttheme-icon-sticker{display:inline-block}[ui-pnotify].ui-pnotify .brighttheme-icon-closer:after{content:"\002715"}[ui-pnotify].ui-pnotify .brighttheme-icon-sticker:after{top:-1px;content:"\002016"}[ui-pnotify].ui-pnotify .brighttheme-icon-sticker.brighttheme-icon-stuck:after{content:"\00003E"}[ui-pnotify].ui-pnotify .brighttheme .ui-pnotify-confirm{margin-top:1rem}[ui-pnotify].ui-pnotify .brighttheme .ui-pnotify-prompt-bar{margin-bottom:1rem}[ui-pnotify].ui-pnotify .brighttheme .ui-pnotify-action-button{text-transform:uppercase;font-weight:700;padding:.4rem 1rem;border:none;background:0 0;cursor:pointer}[ui-pnotify].ui-pnotify .brighttheme-notice .ui-pnotify-action-button.brighttheme-primary{background-color:#ff0;color:#4f4f00}[ui-pnotify].ui-pnotify .brighttheme-info .ui-pnotify-action-button.brighttheme-primary{background-color:#0286a5;color:#012831}[ui-pnotify].ui-pnotify .brighttheme-success .ui-pnotify-action-button.brighttheme-primary{background-color:#35db00;color:#104300}[ui-pnotify].ui-pnotify .brighttheme-error .ui-pnotify-action-button.brighttheme-primary{background-color:#ff1800;color:#4f0800} \ No newline at end of file diff --git a/static-data/www/shared/main/apicheck.js b/static-data/www/shared/main/apicheck.js deleted file mode 100644 index 323d4a21..00000000 --- a/static-data/www/shared/main/apicheck.js +++ /dev/null @@ -1,46 +0,0 @@ -/* - Onionr - Private P2P Communication - - Checks if the api server is still online - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see -*/ -apiOnline = true -async function doPing(){ - out = setTimeout(function(){ - if (apiOnline){ - PNotify.notice('Connection lost with API server') - } - apiOnline = false - }, 10000) -return await fetch('/ping', { - headers: { - "token": webpass - }}) - .then((resp) => resp.text()) // Transform the data into text - .then(function(resp) { - if (!apiOnline){PNotify.success('API server connection reestablished')} - apiOnline = true - clearTimeout(out) - return resp - }) -} - -let pingCheck = async function(){ - if (document.hidden){return} - result = await doPing() - -} - -pingCheckInterval = setInterval(function(){pingCheck()}, 3000) diff --git a/static-data/www/shared/main/loadTransport.js b/static-data/www/shared/main/loadTransport.js deleted file mode 100644 index d6d62910..00000000 --- a/static-data/www/shared/main/loadTransport.js +++ /dev/null @@ -1,48 +0,0 @@ -/* - Onionr - Private P2P Communication - - Show transport addresses - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see -*/ -fetch('/gettoraddress', { - headers: { - "token": webpass - }}) - .then((resp) => resp.text()) - .then(function(resp) { - let torBoxes = document.getElementsByClassName('myTor') - if (!resp.endsWith('.onion')){ - Array.from(torBoxes).forEach(element => { - element.parentElement.parentElement.remove() - }) - } - Array.from(torBoxes).forEach(element => { - element.value = resp - }) - - }) - -Array.from(document.getElementsByClassName('myTorCopy')).forEach(element => { - element.onclick = function(){ - var copyText = document.getElementsByClassName('myTor')[0] - copyText.select() - document.execCommand("copy") - if (typeof PNotify != 'undefined'){ - PNotify.success({ - text: "Copied to clipboard" - }) - } - } -}) \ No newline at end of file diff --git a/static-data/www/shared/main/particles.js b/static-data/www/shared/main/particles.js deleted file mode 100644 index 5107db29..00000000 --- a/static-data/www/shared/main/particles.js +++ /dev/null @@ -1,1553 +0,0 @@ -/* ----------------------------------------------- -/* Author : Vincent Garreau - vincentgarreau.com -/* MIT license: http://opensource.org/licenses/MIT -/* Demo / Generator : vincentgarreau.com/particles.js -/* GitHub : github.com/VincentGarreau/particles.js -/* How to use? : Check the GitHub README -/* v2.0.0 -/* ----------------------------------------------- */ - -var pJS = function(tag_id, params){ - - var canvas_el = document.querySelector('#'+tag_id+' > .particles-js-canvas-el'); - - /* particles.js variables with default values */ - this.pJS = { - canvas: { - el: canvas_el, - w: canvas_el.offsetWidth, - h: canvas_el.offsetHeight - }, - particles: { - number: { - value: 400, - density: { - enable: true, - value_area: 800 - } - }, - color: { - value: '#fff' - }, - shape: { - type: 'circle', - stroke: { - width: 0, - color: '#ff0000' - }, - polygon: { - nb_sides: 5 - }, - image: { - src: '', - width: 100, - height: 100 - } - }, - opacity: { - value: 1, - random: false, - anim: { - enable: false, - speed: 2, - opacity_min: 0, - sync: false - } - }, - size: { - value: 20, - random: false, - anim: { - enable: false, - speed: 20, - size_min: 0, - sync: false - } - }, - line_linked: { - enable: true, - distance: 100, - color: '#fff', - opacity: 1, - width: 1 - }, - move: { - enable: true, - speed: 2, - direction: 'none', - random: false, - straight: false, - out_mode: 'out', - bounce: false, - attract: { - enable: false, - rotateX: 3000, - rotateY: 3000 - } - }, - array: [] - }, - interactivity: { - detect_on: 'canvas', - events: { - onhover: { - enable: true, - mode: 'grab' - }, - onclick: { - enable: true, - mode: 'push' - }, - resize: true - }, - modes: { - grab:{ - distance: 100, - line_linked:{ - opacity: 1 - } - }, - bubble:{ - distance: 200, - size: 80, - duration: 0.4 - }, - repulse:{ - distance: 200, - duration: 0.4 - }, - push:{ - particles_nb: 4 - }, - remove:{ - particles_nb: 2 - } - }, - mouse:{} - }, - retina_detect: false, - fn: { - interact: {}, - modes: {}, - vendors:{} - }, - tmp: {} - }; - - var pJS = this.pJS; - - /* params settings */ - if(params){ - Object.deepExtend(pJS, params); - } - - pJS.tmp.obj = { - size_value: pJS.particles.size.value, - size_anim_speed: pJS.particles.size.anim.speed, - move_speed: pJS.particles.move.speed, - line_linked_distance: pJS.particles.line_linked.distance, - line_linked_width: pJS.particles.line_linked.width, - mode_grab_distance: pJS.interactivity.modes.grab.distance, - mode_bubble_distance: pJS.interactivity.modes.bubble.distance, - mode_bubble_size: pJS.interactivity.modes.bubble.size, - mode_repulse_distance: pJS.interactivity.modes.repulse.distance - }; - - - pJS.fn.retinaInit = function(){ - - if(pJS.retina_detect && window.devicePixelRatio > 1){ - pJS.canvas.pxratio = window.devicePixelRatio; - pJS.tmp.retina = true; - } - else{ - pJS.canvas.pxratio = 1; - pJS.tmp.retina = false; - } - - pJS.canvas.w = pJS.canvas.el.offsetWidth * pJS.canvas.pxratio; - pJS.canvas.h = pJS.canvas.el.offsetHeight * pJS.canvas.pxratio; - - pJS.particles.size.value = pJS.tmp.obj.size_value * pJS.canvas.pxratio; - pJS.particles.size.anim.speed = pJS.tmp.obj.size_anim_speed * pJS.canvas.pxratio; - pJS.particles.move.speed = pJS.tmp.obj.move_speed * pJS.canvas.pxratio; - pJS.particles.line_linked.distance = pJS.tmp.obj.line_linked_distance * pJS.canvas.pxratio; - pJS.interactivity.modes.grab.distance = pJS.tmp.obj.mode_grab_distance * pJS.canvas.pxratio; - pJS.interactivity.modes.bubble.distance = pJS.tmp.obj.mode_bubble_distance * pJS.canvas.pxratio; - pJS.particles.line_linked.width = pJS.tmp.obj.line_linked_width * pJS.canvas.pxratio; - pJS.interactivity.modes.bubble.size = pJS.tmp.obj.mode_bubble_size * pJS.canvas.pxratio; - pJS.interactivity.modes.repulse.distance = pJS.tmp.obj.mode_repulse_distance * pJS.canvas.pxratio; - - }; - - - - /* ---------- pJS functions - canvas ------------ */ - - pJS.fn.canvasInit = function(){ - pJS.canvas.ctx = pJS.canvas.el.getContext('2d'); - }; - - pJS.fn.canvasSize = function(){ - - pJS.canvas.el.width = pJS.canvas.w; - pJS.canvas.el.height = pJS.canvas.h; - - if(pJS && pJS.interactivity.events.resize){ - - window.addEventListener('resize', function(){ - - pJS.canvas.w = pJS.canvas.el.offsetWidth; - pJS.canvas.h = pJS.canvas.el.offsetHeight; - - /* resize canvas */ - if(pJS.tmp.retina){ - pJS.canvas.w *= pJS.canvas.pxratio; - pJS.canvas.h *= pJS.canvas.pxratio; - } - - pJS.canvas.el.width = pJS.canvas.w; - pJS.canvas.el.height = pJS.canvas.h; - - /* repaint canvas on anim disabled */ - if(!pJS.particles.move.enable){ - pJS.fn.particlesEmpty(); - pJS.fn.particlesCreate(); - pJS.fn.particlesDraw(); - pJS.fn.vendors.densityAutoParticles(); - } - - /* density particles enabled */ - pJS.fn.vendors.densityAutoParticles(); - - }); - - } - - }; - - - pJS.fn.canvasPaint = function(){ - pJS.canvas.ctx.fillRect(0, 0, pJS.canvas.w, pJS.canvas.h); - }; - - pJS.fn.canvasClear = function(){ - pJS.canvas.ctx.clearRect(0, 0, pJS.canvas.w, pJS.canvas.h); - }; - - - /* --------- pJS functions - particles ----------- */ - - pJS.fn.particle = function(color, opacity, position){ - - /* size */ - this.radius = (pJS.particles.size.random ? Math.random() : 1) * pJS.particles.size.value; - if(pJS.particles.size.anim.enable){ - this.size_status = false; - this.vs = pJS.particles.size.anim.speed / 100; - if(!pJS.particles.size.anim.sync){ - this.vs = this.vs * Math.random(); - } - } - - /* position */ - this.x = position ? position.x : Math.random() * pJS.canvas.w; - this.y = position ? position.y : Math.random() * pJS.canvas.h; - - /* check position - into the canvas */ - if(this.x > pJS.canvas.w - this.radius*2) this.x = this.x - this.radius; - else if(this.x < this.radius*2) this.x = this.x + this.radius; - if(this.y > pJS.canvas.h - this.radius*2) this.y = this.y - this.radius; - else if(this.y < this.radius*2) this.y = this.y + this.radius; - - /* check position - avoid overlap */ - if(pJS.particles.move.bounce){ - pJS.fn.vendors.checkOverlap(this, position); - } - - /* color */ - this.color = {}; - if(typeof(color.value) == 'object'){ - - if(color.value instanceof Array){ - var color_selected = color.value[Math.floor(Math.random() * pJS.particles.color.value.length)]; - this.color.rgb = hexToRgb(color_selected); - }else{ - if(color.value.r != undefined && color.value.g != undefined && color.value.b != undefined){ - this.color.rgb = { - r: color.value.r, - g: color.value.g, - b: color.value.b - } - } - if(color.value.h != undefined && color.value.s != undefined && color.value.l != undefined){ - this.color.hsl = { - h: color.value.h, - s: color.value.s, - l: color.value.l - } - } - } - - } - else if(color.value == 'random'){ - this.color.rgb = { - r: (Math.floor(Math.random() * (255 - 0 + 1)) + 0), - g: (Math.floor(Math.random() * (255 - 0 + 1)) + 0), - b: (Math.floor(Math.random() * (255 - 0 + 1)) + 0) - } - } - else if(typeof(color.value) == 'string'){ - this.color = color; - this.color.rgb = hexToRgb(this.color.value); - } - - /* opacity */ - this.opacity = (pJS.particles.opacity.random ? Math.random() : 1) * pJS.particles.opacity.value; - if(pJS.particles.opacity.anim.enable){ - this.opacity_status = false; - this.vo = pJS.particles.opacity.anim.speed / 100; - if(!pJS.particles.opacity.anim.sync){ - this.vo = this.vo * Math.random(); - } - } - - /* animation - velocity for speed */ - var velbase = {} - switch(pJS.particles.move.direction){ - case 'top': - velbase = { x:0, y:-1 }; - break; - case 'top-right': - velbase = { x:0.5, y:-0.5 }; - break; - case 'right': - velbase = { x:1, y:-0 }; - break; - case 'bottom-right': - velbase = { x:0.5, y:0.5 }; - break; - case 'bottom': - velbase = { x:0, y:1 }; - break; - case 'bottom-left': - velbase = { x:-0.5, y:1 }; - break; - case 'left': - velbase = { x:-1, y:0 }; - break; - case 'top-left': - velbase = { x:-0.5, y:-0.5 }; - break; - default: - velbase = { x:0, y:0 }; - break; - } - - if(pJS.particles.move.straight){ - this.vx = velbase.x; - this.vy = velbase.y; - if(pJS.particles.move.random){ - this.vx = this.vx * (Math.random()); - this.vy = this.vy * (Math.random()); - } - }else{ - this.vx = velbase.x + Math.random()-0.5; - this.vy = velbase.y + Math.random()-0.5; - } - - // var theta = 2.0 * Math.PI * Math.random(); - // this.vx = Math.cos(theta); - // this.vy = Math.sin(theta); - - this.vx_i = this.vx; - this.vy_i = this.vy; - - - - /* if shape is image */ - - var shape_type = pJS.particles.shape.type; - if(typeof(shape_type) == 'object'){ - if(shape_type instanceof Array){ - var shape_selected = shape_type[Math.floor(Math.random() * shape_type.length)]; - this.shape = shape_selected; - } - }else{ - this.shape = shape_type; - } - - if(this.shape == 'image'){ - var sh = pJS.particles.shape; - this.img = { - src: sh.image.src, - ratio: sh.image.width / sh.image.height - } - if(!this.img.ratio) this.img.ratio = 1; - if(pJS.tmp.img_type == 'svg' && pJS.tmp.source_svg != undefined){ - pJS.fn.vendors.createSvgImg(this); - if(pJS.tmp.pushing){ - this.img.loaded = false; - } - } - } - - - - }; - - - pJS.fn.particle.prototype.draw = function() { - - var p = this; - - if(p.radius_bubble != undefined){ - var radius = p.radius_bubble; - }else{ - var radius = p.radius; - } - - if(p.opacity_bubble != undefined){ - var opacity = p.opacity_bubble; - }else{ - var opacity = p.opacity; - } - - if(p.color.rgb){ - var color_value = 'rgba('+p.color.rgb.r+','+p.color.rgb.g+','+p.color.rgb.b+','+opacity+')'; - }else{ - var color_value = 'hsla('+p.color.hsl.h+','+p.color.hsl.s+'%,'+p.color.hsl.l+'%,'+opacity+')'; - } - - pJS.canvas.ctx.fillStyle = color_value; - pJS.canvas.ctx.beginPath(); - - switch(p.shape){ - - case 'circle': - pJS.canvas.ctx.arc(p.x, p.y, radius, 0, Math.PI * 2, false); - break; - - case 'edge': - pJS.canvas.ctx.rect(p.x-radius, p.y-radius, radius*2, radius*2); - break; - - case 'triangle': - pJS.fn.vendors.drawShape(pJS.canvas.ctx, p.x-radius, p.y+radius / 1.66, radius*2, 3, 2); - break; - - case 'polygon': - pJS.fn.vendors.drawShape( - pJS.canvas.ctx, - p.x - radius / (pJS.particles.shape.polygon.nb_sides/3.5), // startX - p.y - radius / (2.66/3.5), // startY - radius*2.66 / (pJS.particles.shape.polygon.nb_sides/3), // sideLength - pJS.particles.shape.polygon.nb_sides, // sideCountNumerator - 1 // sideCountDenominator - ); - break; - - case 'star': - pJS.fn.vendors.drawShape( - pJS.canvas.ctx, - p.x - radius*2 / (pJS.particles.shape.polygon.nb_sides/4), // startX - p.y - radius / (2*2.66/3.5), // startY - radius*2*2.66 / (pJS.particles.shape.polygon.nb_sides/3), // sideLength - pJS.particles.shape.polygon.nb_sides, // sideCountNumerator - 2 // sideCountDenominator - ); - break; - - case 'image': - - function draw(){ - pJS.canvas.ctx.drawImage( - img_obj, - p.x-radius, - p.y-radius, - radius*2, - radius*2 / p.img.ratio - ); - } - - if(pJS.tmp.img_type == 'svg'){ - var img_obj = p.img.obj; - }else{ - var img_obj = pJS.tmp.img_obj; - } - - if(img_obj){ - draw(); - } - - break; - - } - - pJS.canvas.ctx.closePath(); - - if(pJS.particles.shape.stroke.width > 0){ - pJS.canvas.ctx.strokeStyle = pJS.particles.shape.stroke.color; - pJS.canvas.ctx.lineWidth = pJS.particles.shape.stroke.width; - pJS.canvas.ctx.stroke(); - } - - pJS.canvas.ctx.fill(); - - }; - - - pJS.fn.particlesCreate = function(){ - for(var i = 0; i < pJS.particles.number.value; i++) { - pJS.particles.array.push(new pJS.fn.particle(pJS.particles.color, pJS.particles.opacity.value)); - } - }; - - pJS.fn.particlesUpdate = function(){ - - for(var i = 0; i < pJS.particles.array.length; i++){ - - /* the particle */ - var p = pJS.particles.array[i]; - - // var d = ( dx = pJS.interactivity.mouse.click_pos_x - p.x ) * dx + ( dy = pJS.interactivity.mouse.click_pos_y - p.y ) * dy; - // var f = -BANG_SIZE / d; - // if ( d < BANG_SIZE ) { - // var t = Math.atan2( dy, dx ); - // p.vx = f * Math.cos(t); - // p.vy = f * Math.sin(t); - // } - - /* move the particle */ - if(pJS.particles.move.enable){ - var ms = pJS.particles.move.speed/2; - p.x += p.vx * ms; - p.y += p.vy * ms; - } - - /* change opacity status */ - if(pJS.particles.opacity.anim.enable) { - if(p.opacity_status == true) { - if(p.opacity >= pJS.particles.opacity.value) p.opacity_status = false; - p.opacity += p.vo; - }else { - if(p.opacity <= pJS.particles.opacity.anim.opacity_min) p.opacity_status = true; - p.opacity -= p.vo; - } - if(p.opacity < 0) p.opacity = 0; - } - - /* change size */ - if(pJS.particles.size.anim.enable){ - if(p.size_status == true){ - if(p.radius >= pJS.particles.size.value) p.size_status = false; - p.radius += p.vs; - }else{ - if(p.radius <= pJS.particles.size.anim.size_min) p.size_status = true; - p.radius -= p.vs; - } - if(p.radius < 0) p.radius = 0; - } - - /* change particle position if it is out of canvas */ - if(pJS.particles.move.out_mode == 'bounce'){ - var new_pos = { - x_left: p.radius, - x_right: pJS.canvas.w, - y_top: p.radius, - y_bottom: pJS.canvas.h - } - }else{ - var new_pos = { - x_left: -p.radius, - x_right: pJS.canvas.w + p.radius, - y_top: -p.radius, - y_bottom: pJS.canvas.h + p.radius - } - } - - if(p.x - p.radius > pJS.canvas.w){ - p.x = new_pos.x_left; - p.y = Math.random() * pJS.canvas.h; - } - else if(p.x + p.radius < 0){ - p.x = new_pos.x_right; - p.y = Math.random() * pJS.canvas.h; - } - if(p.y - p.radius > pJS.canvas.h){ - p.y = new_pos.y_top; - p.x = Math.random() * pJS.canvas.w; - } - else if(p.y + p.radius < 0){ - p.y = new_pos.y_bottom; - p.x = Math.random() * pJS.canvas.w; - } - - /* out of canvas modes */ - switch(pJS.particles.move.out_mode){ - case 'bounce': - if (p.x + p.radius > pJS.canvas.w) p.vx = -p.vx; - else if (p.x - p.radius < 0) p.vx = -p.vx; - if (p.y + p.radius > pJS.canvas.h) p.vy = -p.vy; - else if (p.y - p.radius < 0) p.vy = -p.vy; - break; - } - - /* events */ - if(isInArray('grab', pJS.interactivity.events.onhover.mode)){ - pJS.fn.modes.grabParticle(p); - } - - if(isInArray('bubble', pJS.interactivity.events.onhover.mode) || isInArray('bubble', pJS.interactivity.events.onclick.mode)){ - pJS.fn.modes.bubbleParticle(p); - } - - if(isInArray('repulse', pJS.interactivity.events.onhover.mode) || isInArray('repulse', pJS.interactivity.events.onclick.mode)){ - pJS.fn.modes.repulseParticle(p); - } - - /* interaction auto between particles */ - if(pJS.particles.line_linked.enable || pJS.particles.move.attract.enable){ - for(var j = i + 1; j < pJS.particles.array.length; j++){ - var p2 = pJS.particles.array[j]; - - /* link particles */ - if(pJS.particles.line_linked.enable){ - pJS.fn.interact.linkParticles(p,p2); - } - - /* attract particles */ - if(pJS.particles.move.attract.enable){ - pJS.fn.interact.attractParticles(p,p2); - } - - /* bounce particles */ - if(pJS.particles.move.bounce){ - pJS.fn.interact.bounceParticles(p,p2); - } - - } - } - - - } - - }; - - pJS.fn.particlesDraw = function(){ - - /* clear canvas */ - pJS.canvas.ctx.clearRect(0, 0, pJS.canvas.w, pJS.canvas.h); - - /* update each particles param */ - pJS.fn.particlesUpdate(); - - /* draw each particle */ - for(var i = 0; i < pJS.particles.array.length; i++){ - var p = pJS.particles.array[i]; - p.draw(); - } - - }; - - pJS.fn.particlesEmpty = function(){ - pJS.particles.array = []; - }; - - pJS.fn.particlesRefresh = function(){ - - /* init all */ - cancelRequestAnimFrame(pJS.fn.checkAnimFrame); - cancelRequestAnimFrame(pJS.fn.drawAnimFrame); - pJS.tmp.source_svg = undefined; - pJS.tmp.img_obj = undefined; - pJS.tmp.count_svg = 0; - pJS.fn.particlesEmpty(); - pJS.fn.canvasClear(); - - /* restart */ - pJS.fn.vendors.start(); - - }; - - - /* ---------- pJS functions - particles interaction ------------ */ - - pJS.fn.interact.linkParticles = function(p1, p2){ - - var dx = p1.x - p2.x, - dy = p1.y - p2.y, - dist = Math.sqrt(dx*dx + dy*dy); - - /* draw a line between p1 and p2 if the distance between them is under the config distance */ - if(dist <= pJS.particles.line_linked.distance){ - - var opacity_line = pJS.particles.line_linked.opacity - (dist / (1/pJS.particles.line_linked.opacity)) / pJS.particles.line_linked.distance; - - if(opacity_line > 0){ - - /* style */ - var color_line = pJS.particles.line_linked.color_rgb_line; - pJS.canvas.ctx.strokeStyle = 'rgba('+color_line.r+','+color_line.g+','+color_line.b+','+opacity_line+')'; - pJS.canvas.ctx.lineWidth = pJS.particles.line_linked.width; - //pJS.canvas.ctx.lineCap = 'round'; /* performance issue */ - - /* path */ - pJS.canvas.ctx.beginPath(); - pJS.canvas.ctx.moveTo(p1.x, p1.y); - pJS.canvas.ctx.lineTo(p2.x, p2.y); - pJS.canvas.ctx.stroke(); - pJS.canvas.ctx.closePath(); - - } - - } - - }; - - - pJS.fn.interact.attractParticles = function(p1, p2){ - - /* condensed particles */ - var dx = p1.x - p2.x, - dy = p1.y - p2.y, - dist = Math.sqrt(dx*dx + dy*dy); - - if(dist <= pJS.particles.line_linked.distance){ - - var ax = dx/(pJS.particles.move.attract.rotateX*1000), - ay = dy/(pJS.particles.move.attract.rotateY*1000); - - p1.vx -= ax; - p1.vy -= ay; - - p2.vx += ax; - p2.vy += ay; - - } - - - } - - - pJS.fn.interact.bounceParticles = function(p1, p2){ - - var dx = p1.x - p2.x, - dy = p1.y - p2.y, - dist = Math.sqrt(dx*dx + dy*dy), - dist_p = p1.radius+p2.radius; - - if(dist <= dist_p){ - p1.vx = -p1.vx; - p1.vy = -p1.vy; - - p2.vx = -p2.vx; - p2.vy = -p2.vy; - } - - } - - - /* ---------- pJS functions - modes events ------------ */ - - pJS.fn.modes.pushParticles = function(nb, pos){ - - pJS.tmp.pushing = true; - - for(var i = 0; i < nb; i++){ - pJS.particles.array.push( - new pJS.fn.particle( - pJS.particles.color, - pJS.particles.opacity.value, - { - 'x': pos ? pos.pos_x : Math.random() * pJS.canvas.w, - 'y': pos ? pos.pos_y : Math.random() * pJS.canvas.h - } - ) - ) - if(i == nb-1){ - if(!pJS.particles.move.enable){ - pJS.fn.particlesDraw(); - } - pJS.tmp.pushing = false; - } - } - - }; - - - pJS.fn.modes.removeParticles = function(nb){ - - pJS.particles.array.splice(0, nb); - if(!pJS.particles.move.enable){ - pJS.fn.particlesDraw(); - } - - }; - - - pJS.fn.modes.bubbleParticle = function(p){ - - /* on hover event */ - if(pJS.interactivity.events.onhover.enable && isInArray('bubble', pJS.interactivity.events.onhover.mode)){ - - var dx_mouse = p.x - pJS.interactivity.mouse.pos_x, - dy_mouse = p.y - pJS.interactivity.mouse.pos_y, - dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse), - ratio = 1 - dist_mouse / pJS.interactivity.modes.bubble.distance; - - function init(){ - p.opacity_bubble = p.opacity; - p.radius_bubble = p.radius; - } - - /* mousemove - check ratio */ - if(dist_mouse <= pJS.interactivity.modes.bubble.distance){ - - if(ratio >= 0 && pJS.interactivity.status == 'mousemove'){ - - /* size */ - if(pJS.interactivity.modes.bubble.size != pJS.particles.size.value){ - - if(pJS.interactivity.modes.bubble.size > pJS.particles.size.value){ - var size = p.radius + (pJS.interactivity.modes.bubble.size*ratio); - if(size >= 0){ - p.radius_bubble = size; - } - }else{ - var dif = p.radius - pJS.interactivity.modes.bubble.size, - size = p.radius - (dif*ratio); - if(size > 0){ - p.radius_bubble = size; - }else{ - p.radius_bubble = 0; - } - } - - } - - /* opacity */ - if(pJS.interactivity.modes.bubble.opacity != pJS.particles.opacity.value){ - - if(pJS.interactivity.modes.bubble.opacity > pJS.particles.opacity.value){ - var opacity = pJS.interactivity.modes.bubble.opacity*ratio; - if(opacity > p.opacity && opacity <= pJS.interactivity.modes.bubble.opacity){ - p.opacity_bubble = opacity; - } - }else{ - var opacity = p.opacity - (pJS.particles.opacity.value-pJS.interactivity.modes.bubble.opacity)*ratio; - if(opacity < p.opacity && opacity >= pJS.interactivity.modes.bubble.opacity){ - p.opacity_bubble = opacity; - } - } - - } - - } - - }else{ - init(); - } - - - /* mouseleave */ - if(pJS.interactivity.status == 'mouseleave'){ - init(); - } - - } - - /* on click event */ - else if(pJS.interactivity.events.onclick.enable && isInArray('bubble', pJS.interactivity.events.onclick.mode)){ - - - if(pJS.tmp.bubble_clicking){ - var dx_mouse = p.x - pJS.interactivity.mouse.click_pos_x, - dy_mouse = p.y - pJS.interactivity.mouse.click_pos_y, - dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse), - time_spent = (new Date().getTime() - pJS.interactivity.mouse.click_time)/1000; - - if(time_spent > pJS.interactivity.modes.bubble.duration){ - pJS.tmp.bubble_duration_end = true; - } - - if(time_spent > pJS.interactivity.modes.bubble.duration*2){ - pJS.tmp.bubble_clicking = false; - pJS.tmp.bubble_duration_end = false; - } - } - - - function process(bubble_param, particles_param, p_obj_bubble, p_obj, id){ - - if(bubble_param != particles_param){ - - if(!pJS.tmp.bubble_duration_end){ - if(dist_mouse <= pJS.interactivity.modes.bubble.distance){ - if(p_obj_bubble != undefined) var obj = p_obj_bubble; - else var obj = p_obj; - if(obj != bubble_param){ - var value = p_obj - (time_spent * (p_obj - bubble_param) / pJS.interactivity.modes.bubble.duration); - if(id == 'size') p.radius_bubble = value; - if(id == 'opacity') p.opacity_bubble = value; - } - }else{ - if(id == 'size') p.radius_bubble = undefined; - if(id == 'opacity') p.opacity_bubble = undefined; - } - }else{ - if(p_obj_bubble != undefined){ - var value_tmp = p_obj - (time_spent * (p_obj - bubble_param) / pJS.interactivity.modes.bubble.duration), - dif = bubble_param - value_tmp; - value = bubble_param + dif; - if(id == 'size') p.radius_bubble = value; - if(id == 'opacity') p.opacity_bubble = value; - } - } - - } - - } - - if(pJS.tmp.bubble_clicking){ - /* size */ - process(pJS.interactivity.modes.bubble.size, pJS.particles.size.value, p.radius_bubble, p.radius, 'size'); - /* opacity */ - process(pJS.interactivity.modes.bubble.opacity, pJS.particles.opacity.value, p.opacity_bubble, p.opacity, 'opacity'); - } - - } - - }; - - - pJS.fn.modes.repulseParticle = function(p){ - - if(pJS.interactivity.events.onhover.enable && isInArray('repulse', pJS.interactivity.events.onhover.mode) && pJS.interactivity.status == 'mousemove') { - - var dx_mouse = p.x - pJS.interactivity.mouse.pos_x, - dy_mouse = p.y - pJS.interactivity.mouse.pos_y, - dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse); - - var normVec = {x: dx_mouse/dist_mouse, y: dy_mouse/dist_mouse}, - repulseRadius = pJS.interactivity.modes.repulse.distance, - velocity = 100, - repulseFactor = clamp((1/repulseRadius)*(-1*Math.pow(dist_mouse/repulseRadius,2)+1)*repulseRadius*velocity, 0, 50); - - var pos = { - x: p.x + normVec.x * repulseFactor, - y: p.y + normVec.y * repulseFactor - } - - if(pJS.particles.move.out_mode == 'bounce'){ - if(pos.x - p.radius > 0 && pos.x + p.radius < pJS.canvas.w) p.x = pos.x; - if(pos.y - p.radius > 0 && pos.y + p.radius < pJS.canvas.h) p.y = pos.y; - }else{ - p.x = pos.x; - p.y = pos.y; - } - - } - - - else if(pJS.interactivity.events.onclick.enable && isInArray('repulse', pJS.interactivity.events.onclick.mode)) { - - if(!pJS.tmp.repulse_finish){ - pJS.tmp.repulse_count++; - if(pJS.tmp.repulse_count == pJS.particles.array.length){ - pJS.tmp.repulse_finish = true; - } - } - - if(pJS.tmp.repulse_clicking){ - - var repulseRadius = Math.pow(pJS.interactivity.modes.repulse.distance/6, 3); - - var dx = pJS.interactivity.mouse.click_pos_x - p.x, - dy = pJS.interactivity.mouse.click_pos_y - p.y, - d = dx*dx + dy*dy; - - var force = -repulseRadius / d * 1; - - function process(){ - - var f = Math.atan2(dy,dx); - p.vx = force * Math.cos(f); - p.vy = force * Math.sin(f); - - if(pJS.particles.move.out_mode == 'bounce'){ - var pos = { - x: p.x + p.vx, - y: p.y + p.vy - } - if (pos.x + p.radius > pJS.canvas.w) p.vx = -p.vx; - else if (pos.x - p.radius < 0) p.vx = -p.vx; - if (pos.y + p.radius > pJS.canvas.h) p.vy = -p.vy; - else if (pos.y - p.radius < 0) p.vy = -p.vy; - } - - } - - // default - if(d <= repulseRadius){ - process(); - } - - // bang - slow motion mode - // if(!pJS.tmp.repulse_finish){ - // if(d <= repulseRadius){ - // process(); - // } - // }else{ - // process(); - // } - - - }else{ - - if(pJS.tmp.repulse_clicking == false){ - - p.vx = p.vx_i; - p.vy = p.vy_i; - - } - - } - - } - - } - - - pJS.fn.modes.grabParticle = function(p){ - - if(pJS.interactivity.events.onhover.enable && pJS.interactivity.status == 'mousemove'){ - - var dx_mouse = p.x - pJS.interactivity.mouse.pos_x, - dy_mouse = p.y - pJS.interactivity.mouse.pos_y, - dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse); - - /* draw a line between the cursor and the particle if the distance between them is under the config distance */ - if(dist_mouse <= pJS.interactivity.modes.grab.distance){ - - var opacity_line = pJS.interactivity.modes.grab.line_linked.opacity - (dist_mouse / (1/pJS.interactivity.modes.grab.line_linked.opacity)) / pJS.interactivity.modes.grab.distance; - - if(opacity_line > 0){ - - /* style */ - var color_line = pJS.particles.line_linked.color_rgb_line; - pJS.canvas.ctx.strokeStyle = 'rgba('+color_line.r+','+color_line.g+','+color_line.b+','+opacity_line+')'; - pJS.canvas.ctx.lineWidth = pJS.particles.line_linked.width; - //pJS.canvas.ctx.lineCap = 'round'; /* performance issue */ - - /* path */ - pJS.canvas.ctx.beginPath(); - pJS.canvas.ctx.moveTo(p.x, p.y); - pJS.canvas.ctx.lineTo(pJS.interactivity.mouse.pos_x, pJS.interactivity.mouse.pos_y); - pJS.canvas.ctx.stroke(); - pJS.canvas.ctx.closePath(); - - } - - } - - } - - }; - - - - /* ---------- pJS functions - vendors ------------ */ - - pJS.fn.vendors.eventsListeners = function(){ - - /* events target element */ - if(pJS.interactivity.detect_on == 'window'){ - pJS.interactivity.el = window; - }else{ - pJS.interactivity.el = pJS.canvas.el; - } - - - /* detect mouse pos - on hover / click event */ - if(pJS.interactivity.events.onhover.enable || pJS.interactivity.events.onclick.enable){ - - /* el on mousemove */ - pJS.interactivity.el.addEventListener('mousemove', function(e){ - - if(pJS.interactivity.el == window){ - var pos_x = e.clientX, - pos_y = e.clientY; - } - else{ - var pos_x = e.offsetX || e.clientX, - pos_y = e.offsetY || e.clientY; - } - - pJS.interactivity.mouse.pos_x = pos_x; - pJS.interactivity.mouse.pos_y = pos_y; - - if(pJS.tmp.retina){ - pJS.interactivity.mouse.pos_x *= pJS.canvas.pxratio; - pJS.interactivity.mouse.pos_y *= pJS.canvas.pxratio; - } - - pJS.interactivity.status = 'mousemove'; - - }); - - /* el on onmouseleave */ - pJS.interactivity.el.addEventListener('mouseleave', function(e){ - - pJS.interactivity.mouse.pos_x = null; - pJS.interactivity.mouse.pos_y = null; - pJS.interactivity.status = 'mouseleave'; - - }); - - } - - /* on click event */ - if(pJS.interactivity.events.onclick.enable){ - - pJS.interactivity.el.addEventListener('click', function(){ - - pJS.interactivity.mouse.click_pos_x = pJS.interactivity.mouse.pos_x; - pJS.interactivity.mouse.click_pos_y = pJS.interactivity.mouse.pos_y; - pJS.interactivity.mouse.click_time = new Date().getTime(); - - if(pJS.interactivity.events.onclick.enable){ - - switch(pJS.interactivity.events.onclick.mode){ - - case 'push': - if(pJS.particles.move.enable){ - pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb, pJS.interactivity.mouse); - }else{ - if(pJS.interactivity.modes.push.particles_nb == 1){ - pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb, pJS.interactivity.mouse); - } - else if(pJS.interactivity.modes.push.particles_nb > 1){ - pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb); - } - } - break; - - case 'remove': - pJS.fn.modes.removeParticles(pJS.interactivity.modes.remove.particles_nb); - break; - - case 'bubble': - pJS.tmp.bubble_clicking = true; - break; - - case 'repulse': - pJS.tmp.repulse_clicking = true; - pJS.tmp.repulse_count = 0; - pJS.tmp.repulse_finish = false; - setTimeout(function(){ - pJS.tmp.repulse_clicking = false; - }, pJS.interactivity.modes.repulse.duration*1000) - break; - - } - - } - - }); - - } - - - }; - - pJS.fn.vendors.densityAutoParticles = function(){ - - if(pJS.particles.number.density.enable){ - - /* calc area */ - var area = pJS.canvas.el.width * pJS.canvas.el.height / 1000; - if(pJS.tmp.retina){ - area = area/(pJS.canvas.pxratio*2); - } - - /* calc number of particles based on density area */ - var nb_particles = area * pJS.particles.number.value / pJS.particles.number.density.value_area; - - /* add or remove X particles */ - var missing_particles = pJS.particles.array.length - nb_particles; - if(missing_particles < 0) pJS.fn.modes.pushParticles(Math.abs(missing_particles)); - else pJS.fn.modes.removeParticles(missing_particles); - - } - - }; - - - pJS.fn.vendors.checkOverlap = function(p1, position){ - for(var i = 0; i < pJS.particles.array.length; i++){ - var p2 = pJS.particles.array[i]; - - var dx = p1.x - p2.x, - dy = p1.y - p2.y, - dist = Math.sqrt(dx*dx + dy*dy); - - if(dist <= p1.radius + p2.radius){ - p1.x = position ? position.x : Math.random() * pJS.canvas.w; - p1.y = position ? position.y : Math.random() * pJS.canvas.h; - pJS.fn.vendors.checkOverlap(p1); - } - } - }; - - - pJS.fn.vendors.createSvgImg = function(p){ - - /* set color to svg element */ - var svgXml = pJS.tmp.source_svg, - rgbHex = /#([0-9A-F]{3,6})/gi, - coloredSvgXml = svgXml.replace(rgbHex, function (m, r, g, b) { - if(p.color.rgb){ - var color_value = 'rgba('+p.color.rgb.r+','+p.color.rgb.g+','+p.color.rgb.b+','+p.opacity+')'; - }else{ - var color_value = 'hsla('+p.color.hsl.h+','+p.color.hsl.s+'%,'+p.color.hsl.l+'%,'+p.opacity+')'; - } - return color_value; - }); - - /* prepare to create img with colored svg */ - var svg = new Blob([coloredSvgXml], {type: 'image/svg+xml;charset=utf-8'}), - DOMURL = window.URL || window.webkitURL || window, - url = DOMURL.createObjectURL(svg); - - /* create particle img obj */ - var img = new Image(); - img.addEventListener('load', function(){ - p.img.obj = img; - p.img.loaded = true; - DOMURL.revokeObjectURL(url); - pJS.tmp.count_svg++; - }); - img.src = url; - - }; - - - pJS.fn.vendors.destroypJS = function(){ - cancelAnimationFrame(pJS.fn.drawAnimFrame); - canvas_el.remove(); - pJSDom = null; - }; - - - pJS.fn.vendors.drawShape = function(c, startX, startY, sideLength, sideCountNumerator, sideCountDenominator){ - - // By Programming Thomas - https://programmingthomas.wordpress.com/2013/04/03/n-sided-shapes/ - var sideCount = sideCountNumerator * sideCountDenominator; - var decimalSides = sideCountNumerator / sideCountDenominator; - var interiorAngleDegrees = (180 * (decimalSides - 2)) / decimalSides; - var interiorAngle = Math.PI - Math.PI * interiorAngleDegrees / 180; // convert to radians - c.save(); - c.beginPath(); - c.translate(startX, startY); - c.moveTo(0,0); - for (var i = 0; i < sideCount; i++) { - c.lineTo(sideLength,0); - c.translate(sideLength,0); - c.rotate(interiorAngle); - } - //c.stroke(); - c.fill(); - c.restore(); - - }; - - pJS.fn.vendors.exportImg = function(){ - window.open(pJS.canvas.el.toDataURL('image/png'), '_blank'); - }; - - - pJS.fn.vendors.loadImg = function(type){ - - pJS.tmp.img_error = undefined; - - if(pJS.particles.shape.image.src != ''){ - - if(type == 'svg'){ - - var xhr = new XMLHttpRequest(); - xhr.open('GET', pJS.particles.shape.image.src); - xhr.onreadystatechange = function (data) { - if(xhr.readyState == 4){ - if(xhr.status == 200){ - pJS.tmp.source_svg = data.currentTarget.response; - pJS.fn.vendors.checkBeforeDraw(); - }else{ - console.log('Error pJS - Image not found'); - pJS.tmp.img_error = true; - } - } - } - xhr.send(); - - }else{ - - var img = new Image(); - img.addEventListener('load', function(){ - pJS.tmp.img_obj = img; - pJS.fn.vendors.checkBeforeDraw(); - }); - img.src = pJS.particles.shape.image.src; - - } - - }else{ - console.log('Error pJS - No image.src'); - pJS.tmp.img_error = true; - } - - }; - - - pJS.fn.vendors.draw = function(){ - - if(pJS.particles.shape.type == 'image'){ - - if(pJS.tmp.img_type == 'svg'){ - - if(pJS.tmp.count_svg >= pJS.particles.number.value){ - pJS.fn.particlesDraw(); - if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame); - else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); - }else{ - //console.log('still loading...'); - if(!pJS.tmp.img_error) pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); - } - - }else{ - - if(pJS.tmp.img_obj != undefined){ - pJS.fn.particlesDraw(); - if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame); - else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); - }else{ - if(!pJS.tmp.img_error) pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); - } - - } - - }else{ - pJS.fn.particlesDraw(); - if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame); - else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); - } - - }; - - - pJS.fn.vendors.checkBeforeDraw = function(){ - - // if shape is image - if(pJS.particles.shape.type == 'image'){ - - if(pJS.tmp.img_type == 'svg' && pJS.tmp.source_svg == undefined){ - pJS.tmp.checkAnimFrame = requestAnimFrame(check); - }else{ - //console.log('images loaded! cancel check'); - cancelRequestAnimFrame(pJS.tmp.checkAnimFrame); - if(!pJS.tmp.img_error){ - pJS.fn.vendors.init(); - pJS.fn.vendors.draw(); - } - - } - - }else{ - pJS.fn.vendors.init(); - pJS.fn.vendors.draw(); - } - - }; - - - pJS.fn.vendors.init = function(){ - - /* init canvas + particles */ - pJS.fn.retinaInit(); - pJS.fn.canvasInit(); - pJS.fn.canvasSize(); - pJS.fn.canvasPaint(); - pJS.fn.particlesCreate(); - pJS.fn.vendors.densityAutoParticles(); - - /* particles.line_linked - convert hex colors to rgb */ - pJS.particles.line_linked.color_rgb_line = hexToRgb(pJS.particles.line_linked.color); - - }; - - - pJS.fn.vendors.start = function(){ - - if(isInArray('image', pJS.particles.shape.type)){ - pJS.tmp.img_type = pJS.particles.shape.image.src.substr(pJS.particles.shape.image.src.length - 3); - pJS.fn.vendors.loadImg(pJS.tmp.img_type); - }else{ - pJS.fn.vendors.checkBeforeDraw(); - } - - }; - - - - - /* ---------- pJS - start ------------ */ - - - pJS.fn.vendors.eventsListeners(); - - pJS.fn.vendors.start(); - - - - }; - - /* ---------- global functions - vendors ------------ */ - - Object.deepExtend = function(destination, source) { - for (var property in source) { - if (source[property] && source[property].constructor && - source[property].constructor === Object) { - destination[property] = destination[property] || {}; - arguments.callee(destination[property], source[property]); - } else { - destination[property] = source[property]; - } - } - return destination; - }; - - window.requestAnimFrame = (function(){ - return window.requestAnimationFrame || - window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || - window.oRequestAnimationFrame || - window.msRequestAnimationFrame || - function(callback){ - window.setTimeout(callback, 1000 / 60); - }; - })(); - - window.cancelRequestAnimFrame = ( function() { - return window.cancelAnimationFrame || - window.webkitCancelRequestAnimationFrame || - window.mozCancelRequestAnimationFrame || - window.oCancelRequestAnimationFrame || - window.msCancelRequestAnimationFrame || - clearTimeout - } )(); - - function hexToRgb(hex){ - // By Tim Down - http://stackoverflow.com/a/5624139/3493650 - // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF") - var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; - hex = hex.replace(shorthandRegex, function(m, r, g, b) { - return r + r + g + g + b + b; - }); - var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); - return result ? { - r: parseInt(result[1], 16), - g: parseInt(result[2], 16), - b: parseInt(result[3], 16) - } : null; - }; - - function clamp(number, min, max) { - return Math.min(Math.max(number, min), max); - }; - - function isInArray(value, array) { - return array.indexOf(value) > -1; - } - - - /* ---------- particles.js functions - start ------------ */ - - window.pJSDom = []; - - window.particlesJS = function(tag_id, params){ - - //console.log(params); - - /* no string id? so it's object params, and set the id with default id */ - if(typeof(tag_id) != 'string'){ - params = tag_id; - tag_id = 'particles-js'; - } - - /* no id? set the id to default id */ - if(!tag_id){ - tag_id = 'particles-js'; - } - - /* pJS elements */ - var pJS_tag = document.getElementById(tag_id), - pJS_canvas_class = 'particles-js-canvas-el', - exist_canvas = pJS_tag.getElementsByClassName(pJS_canvas_class); - - /* remove canvas if exists into the pJS target tag */ - if(exist_canvas.length){ - while(exist_canvas.length > 0){ - pJS_tag.removeChild(exist_canvas[0]); - } - } - - /* create canvas element */ - var canvas_el = document.createElement('canvas'); - canvas_el.className = pJS_canvas_class; - - /* set size canvas */ - canvas_el.style.width = "100%"; - canvas_el.style.height = "100%"; - - /* append canvas */ - var canvas = document.getElementById(tag_id).appendChild(canvas_el); - - /* launch particle.js */ - if(canvas != null){ - pJSDom.push(new pJS(tag_id, params)); - } - - }; - - window.particlesJS.load = function(tag_id, path_config_json, callback){ - - /* load json config */ - var xhr = new XMLHttpRequest(); - xhr.open('GET', path_config_json); - xhr.onreadystatechange = function (data) { - if(xhr.readyState == 4){ - if(xhr.status == 200){ - var params = JSON.parse(data.currentTarget.response); - window.particlesJS(tag_id, params); - if(callback) callback(); - }else{ - console.log('Error pJS - XMLHttpRequest status: '+xhr.status); - console.log('Error pJS - File config not found'); - } - } - }; - xhr.send(); - - }; - let toggleAnimation = function () { - if (document.hidden) { - cancelRequestAnimFrame(pJSDom[0].pJS.fn.checkAnimFrame); - cancelRequestAnimFrame(pJSDom[0].pJS.fn.drawAnimFrame); - pJSDom[0].pJS.fn.particlesEmpty(); - pJSDom[0].pJS.fn.canvasClear(); - return; - } - pJSDom[0].pJS.fn.vendors.start(); - } - - document.addEventListener("visibilitychange", toggleAnimation, false); \ No newline at end of file diff --git a/static-data/www/shared/main/particles.json b/static-data/www/shared/main/particles.json deleted file mode 100644 index 78aa7f71..00000000 --- a/static-data/www/shared/main/particles.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "particles": { - "number": { - "value": 10, - "density": { - "enable": true, - "value_area": 800 - } - }, - "color": { - "value": "#ffffff" - }, - "shape": { - "type": "circle", - "stroke": { - "width": 0, - "color": "#000000" - }, - "polygon": { - "nb_sides": 5 - }, - "image": { - "src": "img/github.svg", - "width": 100, - "height": 100 - } - }, - "opacity": { - "value": 0.5, - "random": true, - "anim": { - "enable": false, - "speed": 1, - "opacity_min": 0.1, - "sync": false - } - }, - "size": { - "value": 10, - "random": true, - "anim": { - "enable": false, - "speed": 80, - "size_min": 0.1, - "sync": false - } - }, - "line_linked": { - "enable": true, - "distance": 300, - "color": "#ffffff", - "opacity": 0.4, - "width": 2 - }, - "move": { - "enable": true, - "speed": 1, - "direction": "none", - "random": true, - "straight": false, - "out_mode": "out", - "bounce": false, - "attract": { - "enable": false, - "rotateX": 600, - "rotateY": 1200 - } - } - }, - "interactivity": { - "detect_on": "canvas", - "events": { - "onhover": { - "enable": false, - "mode": "repulse" - }, - "onclick": { - "enable": false, - "mode": "push" - }, - "resize": true - }, - "modes": { - "grab": { - "distance": 800, - "line_linked": { - "opacity": 1 - } - }, - "bubble": { - "distance": 800, - "size": 80, - "duration": 2, - "opacity": 0.8, - "speed": 3 - }, - "repulse": { - "distance": 400, - "duration": 0.4 - }, - "push": { - "particles_nb": 4 - }, - "remove": { - "particles_nb": 2 - } - } - }, - "retina_detect": true - } \ No newline at end of file diff --git a/static-data/www/shared/main/recent.js b/static-data/www/shared/main/recent.js deleted file mode 100644 index fa357597..00000000 --- a/static-data/www/shared/main/recent.js +++ /dev/null @@ -1,69 +0,0 @@ -/* - Onionr - Private P2P Communication - - Get and show recent blocks - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see -*/ -var getRecent = function(){ - var recentSource = new EventSourcePolyfill('/recentblocks', { - headers: { - "token": webpass - } - }) - - - recentSource.onmessage = function(e){ - if (e.data == "none"){ - return - } - var existing = document.getElementsByClassName('recentBlockList')[0].innerText; - let data = JSON.parse(e.data) - Object.entries(data.blocks).forEach(([key, value]) => { - if (existing.includes(key)){ - return - } - existing = "\n" + key + " - " + value + "\n" + existing - }) - document.getElementsByClassName('recentBlockList')[0].innerText = existing - console.debug(data) - } - return recentSource -} -recentSource = getRecent() -function toggleRecentStream() { - if (document.hidden){ - console.debug("Stopped recent block stream") - recentSource.close() - return - } - if (document.getElementsByClassName('recentModal')[0].classList.contains('is-active')){ - recentSource.close() - getRecent() - } -} - - -document.getElementsByClassName('recentBlocksBtn')[0].onclick = function(){ - document.getElementsByClassName('recentModal')[0].classList.add('is-active') -} - - -document.getElementsByClassName('recentBlocksBtn') -document.addEventListener("visibilitychange", toggleRecentStream, false); - -document.getElementsByClassName('closeRecentModal')[0].onclick = function(){ - document.getElementsByClassName('recentBlockList')[0].innerText = "" - document.getElementsByClassName('recentModal')[0].classList.remove('is-active') -} \ No newline at end of file diff --git a/static-data/www/shared/main/stats.js b/static-data/www/shared/main/stats.js deleted file mode 100755 index 4cee2d7b..00000000 --- a/static-data/www/shared/main/stats.js +++ /dev/null @@ -1,176 +0,0 @@ -/* - Onionr - Private P2P Communication - - This file loads stats to show on the main node web page - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see -*/ -uptimeDisplay = document.getElementById('uptime') -connectedDisplay = document.getElementById('connectedNodes') -storedBlockDisplay = document.getElementById('storedBlocks') -queuedBlockDisplay = document.getElementById('blockQueue') -lastIncoming = document.getElementById('lastIncoming') -totalRec = document.getElementById('totalRec') -securityLevel = document.getElementById('securityLevel') -sec_description_str = 'unknown' - -statsInterval = null - -function showSecStatNotice(){ - var secWarnEls = document.getElementsByClassName('secRequestNotice') - for (el = 0; el < secWarnEls.length; el++){ - secWarnEls[el].style.display = 'block' - } -} - -function seconds2time (seconds) { - //func from https://stackoverflow.com/a/7579799/2465421 by https://stackoverflow.com/users/14555/jottos - var hours = Math.floor(seconds / 3600) - var minutes = Math.floor((seconds - (hours * 3600)) / 60) - var seconds = seconds - (hours * 3600) - (minutes * 60) - var time = "" - - if (hours != 0) { - time = hours+":" - } - if (minutes != 0 || time !== "") { - minutes = (minutes < 10 && time !== "") ? "0"+minutes : String(minutes) - time += minutes+":" - } - if (time === "") { - time = seconds+"s" - } - else { - time += (seconds < 10) ? "0"+seconds : String(seconds) - } - return time -} - - -fetch('/config/get/general.security_level', { - headers: { - "token": webpass - }}) - .then((resp) => resp.text()) // Transform the data into text - .then(function(resp) { - switch(resp){ - case "0": - sec_description_str = 'normal' - break; - case "1": - sec_description_str = 'high' - break; - case "2": - sec_description_str = 'very high' - break; - case "3": - sec_description_str = 'extreme' - break; - } - if (sec_description_str !== 'normal'){ - showSecStatNotice() - } - }) - -var getStats = function(){ - if (document.hidden){ - console.debug('skipping stats since no window focus') - return - } - fetch('/getstats', { - headers: { - "token": webpass - }}) - .then((resp) => resp.json()) - .then(function(stats) { - uptimeDisplay.innerText = seconds2time(stats['uptime']) - connectedNodes = stats['connectedNodes'].split('\n') - connectedDisplay.innerText = '' - for (x = 0; x < connectedNodes.length; x++){ - if (! connectedDisplay.innerText.includes(connectedNodes[x])){ - connectedDisplay.innerText += '🧅 ' + connectedNodes[x] + '\n' - } - } - storedBlockDisplay.innerText = stats['blockCount'] - queuedBlockDisplay.innerText = stats['blockQueueCount'] - document.getElementById('threads').innerText = stats['threads'] - document.getElementById('ramPercent').innerText = (stats['ramPercent']).toFixed(2) + '%' - document.getElementById('fileDescriptors').innerText = stats['fd'] - document.getElementById('diskUsage').innerText = stats['diskUsage'] - securityLevel.innerText = sec_description_str - fetch('/hitcount', { - headers: { - "token": webpass - }}) - .then((resp) => resp.text()) - .then(function(resp) { - totalRec.innerText = resp - }) - fetch('/lastconnect', { - headers: { - "token": webpass - }}) - .then((resp) => resp.text()) - .then(function(conn) { - var lastConnect = conn - if (lastConnect > 0){ - var humanDate = new Date(0) - humanDate.setUTCSeconds(conn) - humanDate = humanDate.toString() - lastConnect = humanDate.substring(0, humanDate.indexOf('(')); - } - else{ - lastConnect = 'None since start' - } - lastIncoming.innerText = lastConnect - }) - }) -} - -document.addEventListener("visibilitychange", function() { - if (document.visibilityState === 'visible') { - getStats() - } - }) - -getStats() -statsInterval = setInterval(function(){getStats()}, 1000) - - - -fetch('/config/get/ui.animated_background', { - headers: { - "token": webpass - }}) - .then((resp) => resp.text()) // Transform the data into text - .then(function(resp) { - if (resp == "false"){ - return - } - fetch('/config/get/ui.theme', { - headers: { - "token": webpass - }}) - .then((resp) => resp.text()) // Transform the data into text - .then(function(resp) { - if (resp == '"dark"'){ - /* particlesJS.load(@dom-id, @path-json, @callback (optional)); */ - particlesJS.load('particles-js', '/shared/main/particles.json', function() { - console.debug('callback - particles.js config loaded') - }) - } - } - ) - } - ) \ No newline at end of file diff --git a/static-data/www/shared/main/style.css b/static-data/www/shared/main/style.css deleted file mode 100755 index 0661055b..00000000 --- a/static-data/www/shared/main/style.css +++ /dev/null @@ -1,193 +0,0 @@ -body{ - background-color: #2c2b3f; - color: white; -} - -a, a:visited{ - color: white; -} -.center{ - text-align: center; -} -footer{ - margin-top: 2em; - margin-bottom: 0.5em; -} - -body{ - margin-left: 3em; - padding: 1em; -} -.onionrMenu{ - max-width: 25%; - margin-left: 2%; - margin-right: 10%; - font-family: sans-serif; -} -.onionrMenu li{ - list-style-type: none; - margin-top: 3px; - font-size: 125%; -} -.onionrMenu li:hover{ - color: red; -} -.box { - display: flex; - align-items:center; - } - .logo{ - max-width: 20%; - vertical-align: middle; - } - .logoText{ - font-size: 2em; - margin-top: 1em; - margin-left: 1%; - } - - .logoText, h1, h2, h3{ - font-family: Verdana, Geneva, Tahoma, sans-serif; - } - - .main{ - min-height: 500px; - } - -.content{ - margin-top: 3em; - margin-left: 0%; - margin-right: 40%; - background-color: white; - color: black; - padding-right: 5%; - padding-left: 3%; - padding-bottom: 2em; - padding-top: 0.5em; - border: 1px solid black; - border-radius: 10px; - min-height: 300px; -} -.content p{ - text-align: justify; -} -.content img{ - max-width: 35%; -} -.content a, .content a:visited{ - color: black; -} - -.stats{ - margin-top: 1em; - background-color: #0c1049; - padding: 5px; - margin-right: 45%; - font-family: sans-serif; -} -.statDesc{ - background-color: black; - padding: 5px; - margin-right: 1%; - margin-left: -5px; -} - -.stats noscript{ - color: blue; -} - -.statItem{ - padding-left: 10px; - float: right; - margin-right: 5px; -} - -.warn{ - color: orangered; -} - -@media only screen and (max-width: 640px) { - .onionrMenu{ - margin-left: 0%; - } - body{ - margin-left: 0em; - } - .content{ - margin-left: 1%; - margin-right: 2%; - } - .content img{ - max-width: 85%; - } - .stats{ - margin-right: 1%; - } - .statItem{ - float: initial; - display: block; - } -} - -/*https://stackoverflow.com/a/16778646*/ -.overlay { - visibility: hidden; - position: absolute; - left: 0px; - top: 0px; - width:100%; - height:100%; - text-align:left; - z-index: 1000; - background-color: #2c2b3f; - color: white; - } - - .closeOverlay{ - background-color: white; - color: black; - border: 1px solid red; - border-radius: 5px; - float: right; - font-family: sans-serif; - } - .closeOverlay:after{ - content: '❌'; - padding: 5px; - } - - .btn, .warnBtn, .dangerBtn, .successBtn, .primaryBtn{ - padding: 5px; - border-radius: 5px; - border: 2px solid black; - } -.warnBtn{ - background-color: orange; - color: black; -} -.dangerBtn{ - background-color: #f44336; - color: black; -} -.successBtn{ - background-color: #4CAF50; - color: black; -} - -.primaryBtn{ - background-color:#396BAC; -} - -.btn:hover{ - opacity: 0.6; -} - -.openSiteBtn{ - padding: 5px; - border: 1px solid black; - border-radius: 5px; -} - -.hidden{ - display: none; -} diff --git a/static-data/www/shared/main/themes/bulma-dark.min.css b/static-data/www/shared/main/themes/bulma-dark.min.css deleted file mode 100644 index 5fbd4e9c..00000000 --- a/static-data/www/shared/main/themes/bulma-dark.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! bulmaswatch v0.7.5 | MIT License */ -/*! bulma.io v0.7.5 | MIT License | github.com/jgthms/bulma */ -/* Onionr Note: removed Google font */ -@-webkit-keyframes spinAround{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes spinAround{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.breadcrumb,.button,.delete,.file,.is-unselectable,.modal-close,.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),.list:not(:last-child),.message:not(:last-child),.notification: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{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,.2);border:0;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 500ms infinite linear;animation:spinAround 500ms infinite linear;border:2px solid #dbdee0;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}.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:.4em;box-shadow:none;display:inline-flex;font-size:15px;height:2.25em;justify-content:flex-start;line-height:1.5;padding:calc(.375em - 1px) calc(.625em - 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} -/*! minireset.css v0.0.4 | MIT License | github.com/jgthms/minireset.css */ -@-webkit-keyframes moveIndeterminate{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes moveIndeterminate{0%{background-position:200% 0}to{background-position:-200% 0}}blockquote,body,dd,dl,dt,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,html,iframe,legend,li,ol,p,pre,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;background-color:#1f2424;font-size:15px;-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%}*,::after,::before{box-sizing:inherit}embed,iframe,img,object,video{height:auto;max-width:100%}audio{max-width:100%}fieldset,iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,textarea,th{padding:0}.content table th:not([align]),table td:not([align]),table th:not([align]),td:not([align]),th:not([align]){text-align:left}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,select,textarea{font-family:"Lato",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"Inconsolata","Consolas","Monaco",monospace}body,code{font-weight:400}body{font-size:1em;line-height:1.5;color:#fff}a{color:#1abc9c;cursor:pointer;text-decoration:none;transition:all 200ms ease}a strong,pre code{color:currentColor}a:hover{color:#1dd2af}code{color:#e74c3c;padding:.25em .5em}code,hr,pre{background-color:#282f2f}hr{border:0;display:block;margin:1.5rem 0;height:2px}input[type=checkbox],input[type=radio]{vertical-align:baseline}code,pre,small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{font-weight:700}pre{-webkit-overflow-scrolling:touch;color:#fff;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;font-size:1em;padding:0}table td,table th{vertical-align:top}strong,table th{color:#f2f2f2}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left!important}.is-pulled-right{float:right!important}.is-clipped{overflow:hidden!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:15px!important}.is-size-7{font-size:.85em!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:15px!important}.is-size-7-mobile{font-size:.85em!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:15px!important}.is-size-7-tablet{font-size:.85em!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:15px!important}.is-size-7-touch{font-size:.85em!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:15px!important}.is-size-7-desktop{font-size:.85em!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:15px!important}.is-size-7-widescreen{font-size:.85em!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:15px!important}.is-size-7-fullhd{font-size:.85em!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-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:#ecf0f1!important}a.has-text-light:focus,a.has-text-light:hover{color:#cfd9db!important}.has-background-light{background-color:#ecf0f1!important}.has-text-dark{color:#282f2f!important}a.has-text-dark:focus,a.has-text-dark:hover{color:#111414!important}.has-background-dark{background-color:#282f2f!important}.has-text-primary{color:#375a7f!important}a.has-text-primary:focus,a.has-text-primary:hover{color:#28415b!important}.has-background-primary{background-color:#375a7f!important}.has-text-link{color:#1abc9c!important}a.has-text-link:focus,a.has-text-link:hover{color:#148f77!important}.has-background-link{background-color:#1abc9c!important}.has-text-info{color:#209cee!important}a.has-text-info:focus,a.has-text-info:hover{color:#0f81cc!important}.has-background-info{background-color:#209cee!important}.has-text-success{color:#2ecc71!important}a.has-text-success:focus,a.has-text-success:hover{color:#25a25a!important}.has-background-success{background-color:#2ecc71!important}.has-text-warning{color:#f1b70e!important}a.has-text-warning:focus,a.has-text-warning:hover{color:#c1920b!important}.has-background-warning{background-color:#f1b70e!important}.has-text-danger{color:#e74c3c!important}a.has-text-danger:focus,a.has-text-danger:hover{color:#d62c1a!important}.has-background-danger{background-color:#e74c3c!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:#282f2f!important}.has-background-grey-darker{background-color:#282f2f!important}.has-text-grey-dark{color:#343c3d!important}.has-background-grey-dark{background-color:#343c3d!important}.has-text-grey{color:#5e6d6f!important}.has-background-grey{background-color:#5e6d6f!important}.has-text-grey-light{color:#8c9b9d!important}.has-background-grey-light{background-color:#8c9b9d!important}.has-text-grey-lighter{color:#dbdee0!important}.has-background-grey-lighter{background-color:#dbdee0!important}.has-text-white-ter{color:#ecf0f1!important}.has-background-white-ter{background-color:#ecf0f1!important}.has-text-white-bis{color:#fafafa!important}.has-background-white-bis{background-color:#fafafa!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,.is-family-sans-serif,.is-family-secondary{font-family:"Lato",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif!important}.is-family-code,.is-family-monospace{font-family:"Inconsolata","Consolas","Monaco",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:0!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}}.is-marginless{margin:0!important}.is-paddingless{padding:0!important}.is-radiusless{border-radius:0!important}.is-shadowless{box-shadow:none!important}.is-relative{position:relative!important}.box{background-color:#343c3d;border-radius:8px;box-shadow:none;color:#fff;display:block;padding:1.25rem}a.box:focus,a.box:hover{box-shadow:0 2px 3px rgba(10,10,10,.1),0 0 0 1px #1abc9c}a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2),0 0 0 1px #1abc9c}.button{background-color:#282f2f;border-color:#4c5759;cursor:pointer;justify-content:center;padding-bottom:calc(.375em - 1px);padding-left:.75em;padding-right:.75em;padding-top:calc(.375em - 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(-.375em - 1px);margin-right:.1875em}.button .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:calc(-.375em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-.375em - 1px);margin-right:calc(-.375em - 1px)}.button.is-hovered,.button:hover{border-color:#8c9b9d;color:#f2f2f2}.button.is-focused,.button:focus{border-color:#8c9b9d;color:#17a689}.button.is-focused:not(:active),.button:focus:not(:active){box-shadow:0 0 0 .125em rgba(26,188,156,.25)}.button.is-active,.button:active{border-color:#343c3d;color:#f2f2f2}.button.is-text{background-color:transparent;border-color:transparent;color:#fff;text-decoration:underline}.button.is-text.is-focused,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text:hover{background-color:#282f2f;color:#f2f2f2}.button.is-text.is-active,.button.is-text:active{background-color:#1d2122;color:#f2f2f2}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-white{background-color:#fff}.button.is-white,.button.is-white.is-hovered,.button.is-white:hover{border-color:transparent;color:#0a0a0a}.button.is-white.is-focused,.button.is-white:focus{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}.button.is-black,.button.is-black.is-hovered,.button.is-black:hover{border-color:transparent;color:#fff}.button.is-black.is-focused,.button.is-black:focus{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:#ecf0f1}.button.is-light,.button.is-light.is-hovered,.button.is-light:hover{border-color:transparent;color:#282f2f}.button.is-light.is-focused,.button.is-light:focus{color:#282f2f}.button.is-light.is-focused:not(:active),.button.is-light:focus:not(:active){box-shadow:0 0 0 .125em rgba(236,240,241,.25)}.button.is-light.is-active,.button.is-light:active{background-color:#dde4e6;border-color:transparent;color:#282f2f}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#ecf0f1;border-color:transparent;box-shadow:none}.button.is-light.is-inverted{background-color:#282f2f;color:#ecf0f1}.button.is-light.is-inverted.is-hovered,.button.is-light.is-inverted:hover{background-color:#1d2122}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:#282f2f;border-color:transparent;box-shadow:none;color:#ecf0f1}.button.is-light.is-loading::after{border-color:transparent transparent #282f2f #282f2f!important}.button.is-light.is-outlined{background-color:transparent;border-color:#ecf0f1;color:#ecf0f1}.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:#ecf0f1;border-color:#ecf0f1;color:#282f2f}.button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #ecf0f1 #ecf0f1!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 #282f2f #282f2f!important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#ecf0f1;box-shadow:none;color:#ecf0f1}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:#282f2f;color:#282f2f}.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:#282f2f;color:#ecf0f1}.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 #ecf0f1 #ecf0f1!important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:#282f2f;box-shadow:none;color:#282f2f}.button.is-dark{background-color:#282f2f}.button.is-dark,.button.is-dark.is-hovered,.button.is-dark:hover{border-color:transparent;color:#ecf0f1}.button.is-dark.is-focused,.button.is-dark:focus{color:#ecf0f1}.button.is-dark.is-focused:not(:active),.button.is-dark:focus:not(:active){box-shadow:0 0 0 .125em rgba(40,47,47,.25)}.button.is-dark.is-active,.button.is-dark:active{background-color:#1d2122;border-color:transparent;color:#ecf0f1}.button.is-dark[disabled],fieldset[disabled] .button.is-dark{background-color:#282f2f;border-color:transparent;box-shadow:none}.button.is-dark.is-inverted{background-color:#ecf0f1;color:#282f2f}.button.is-dark.is-inverted.is-hovered,.button.is-dark.is-inverted:hover{background-color:#dde4e6}.button.is-dark.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted{background-color:#ecf0f1;border-color:transparent;box-shadow:none;color:#282f2f}.button.is-dark.is-loading::after{border-color:transparent transparent #ecf0f1 #ecf0f1!important}.button.is-dark.is-outlined{background-color:transparent;border-color:#282f2f;color:#282f2f}.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:#282f2f;border-color:#282f2f;color:#ecf0f1}.button.is-dark.is-outlined.is-loading::after{border-color:transparent transparent #282f2f #282f2f!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 #ecf0f1 #ecf0f1!important}.button.is-dark.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined{background-color:transparent;border-color:#282f2f;box-shadow:none;color:#282f2f}.button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#ecf0f1;color:#ecf0f1}.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:#ecf0f1;color:#282f2f}.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 #282f2f #282f2f!important}.button.is-dark.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#ecf0f1;box-shadow:none;color:#ecf0f1}.button.is-primary{background-color:#375a7f}.button.is-primary,.button.is-primary.is-hovered,.button.is-primary:hover{border-color:transparent;color:#fff}.button.is-primary.is-focused,.button.is-primary:focus{color:#fff}.button.is-primary.is-focused:not(:active),.button.is-primary:focus:not(:active){box-shadow:0 0 0 .125em rgba(55,90,127,.25)}.button.is-primary.is-active,.button.is-primary:active{background-color:#2f4d6d;border-color:transparent;color:#fff}.button.is-primary[disabled],fieldset[disabled] .button.is-primary{background-color:#375a7f;border-color:transparent;box-shadow:none}.button.is-primary.is-inverted{background-color:#fff;color:#375a7f}.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:#375a7f}.button.is-primary.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-primary.is-outlined{background-color:transparent;border-color:#375a7f;color:#375a7f}.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:#375a7f;border-color:#375a7f;color:#fff}.button.is-primary.is-outlined.is-loading::after{border-color:transparent transparent #375a7f #375a7f!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:#375a7f;box-shadow:none;color:#375a7f}.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:#375a7f}.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 #375a7f #375a7f!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-link{background-color:#1abc9c}.button.is-link,.button.is-link.is-hovered,.button.is-link:hover{border-color:transparent;color:#fff}.button.is-link.is-focused,.button.is-link:focus{color:#fff}.button.is-link.is-focused:not(:active),.button.is-link:focus:not(:active){box-shadow:0 0 0 .125em rgba(26,188,156,.25)}.button.is-link.is-active,.button.is-link:active{background-color:#17a689;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#1abc9c;border-color:transparent;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#1abc9c}.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:#1abc9c}.button.is-link.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-link.is-outlined{background-color:transparent;border-color:#1abc9c;color:#1abc9c}.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:#1abc9c;border-color:#1abc9c;color:#fff}.button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #1abc9c #1abc9c!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:#1abc9c;box-shadow:none;color:#1abc9c}.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:#1abc9c}.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 #1abc9c #1abc9c!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-info{background-color:#209cee}.button.is-info,.button.is-info.is-hovered,.button.is-info:hover{border-color:transparent;color:#fff}.button.is-info.is-focused,.button.is-info:focus{color:#fff}.button.is-info.is-focused:not(:active),.button.is-info:focus:not(:active){box-shadow:0 0 0 .125em rgba(32,156,238,.25)}.button.is-info.is-active,.button.is-info:active{background-color:#118fe4;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#209cee;border-color:transparent;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#209cee}.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:#209cee}.button.is-info.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-info.is-outlined{background-color:transparent;border-color:#209cee;color:#209cee}.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:#209cee;border-color:#209cee;color:#fff}.button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #209cee #209cee!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:#209cee;box-shadow:none;color:#209cee}.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:#209cee}.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 #209cee #209cee!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-success{background-color:#2ecc71}.button.is-success,.button.is-success.is-hovered,.button.is-success:hover{border-color:transparent;color:#fff}.button.is-success.is-focused,.button.is-success:focus{color:#fff}.button.is-success.is-focused:not(:active),.button.is-success:focus:not(:active){box-shadow:0 0 0 .125em rgba(46,204,113,.25)}.button.is-success.is-active,.button.is-success:active{background-color:#29b765;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#2ecc71;border-color:transparent;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#2ecc71}.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:#2ecc71}.button.is-success.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-success.is-outlined{background-color:transparent;border-color:#2ecc71;color:#2ecc71}.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:#2ecc71;border-color:#2ecc71;color:#fff}.button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #2ecc71 #2ecc71!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:#2ecc71;box-shadow:none;color:#2ecc71}.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:#2ecc71}.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 #2ecc71 #2ecc71!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-warning{background-color:#f1b70e}.button.is-warning,.button.is-warning.is-hovered,.button.is-warning:hover{border-color:transparent;color:#fff}.button.is-warning.is-focused,.button.is-warning:focus{color:#fff}.button.is-warning.is-focused:not(:active),.button.is-warning:focus:not(:active){box-shadow:0 0 0 .125em rgba(241,183,14,.25)}.button.is-warning.is-active,.button.is-warning:active{background-color:#d9a50d;border-color:transparent;color:#fff}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#f1b70e;border-color:transparent;box-shadow:none}.button.is-warning.is-inverted{background-color:#fff;color:#f1b70e}.button.is-warning.is-inverted.is-hovered,.button.is-warning.is-inverted:hover{background-color:#f2f2f2}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#f1b70e}.button.is-warning.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-warning.is-outlined{background-color:transparent;border-color:#f1b70e;color:#f1b70e}.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:#f1b70e;border-color:#f1b70e;color:#fff}.button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #f1b70e #f1b70e!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 #fff #fff!important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#f1b70e;box-shadow:none;color:#f1b70e}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.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:#fff;color:#f1b70e}.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 #f1b70e #f1b70e!important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-danger{background-color:#e74c3c}.button.is-danger,.button.is-danger.is-hovered,.button.is-danger:hover{border-color:transparent;color:#fff}.button.is-danger.is-focused,.button.is-danger:focus{color:#fff}.button.is-danger.is-focused:not(:active),.button.is-danger:focus:not(:active){box-shadow:0 0 0 .125em rgba(231,76,60,.25)}.button.is-danger.is-active,.button.is-danger:active{background-color:#e43725;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#e74c3c;border-color:transparent;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#e74c3c}.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:#e74c3c}.button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-danger.is-outlined{background-color:transparent;border-color:#e74c3c;color:#e74c3c}.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:#e74c3c;border-color:#e74c3c;color:#fff}.button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #e74c3c #e74c3c!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:#e74c3c;box-shadow:none;color:#e74c3c}.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:#e74c3c}.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 #e74c3c #e74c3c!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-small{border-radius:3px;font-size:.85em}.button.is-normal{font-size:15px}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#8c9b9d;border-color:#dbdee0;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{left:calc(50% - (1em/2));top:calc(50% - (1em/2));position:absolute!important}.button.is-static{background-color:#ecf0f1;border-color:#dbdee0;color:#5e6d6f;box-shadow:none;pointer-events:none}.button.is-rounded{border-radius:290486px;padding-left:1em;padding-right:1em}.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){border-radius:3px;font-size:.85em}.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),.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.buttons.is-right{justify-content:flex-end}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}@media screen and (min-width:1024px){.container{max-width:960px}.container.is-fluid{margin-left:32px;margin-right:32px;max-width:none}}@media screen and (max-width:1215px){.container.is-widescreen{max-width:1152px}}@media screen and (max-width:1407px){.container.is-fullhd{max-width:1344px}}@media screen and (min-width:1216px){.container{max-width:1152px}}@media screen and (min-width:1408px){.container{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:#f2f2f2;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:#282f2f;border-left:5px solid #5e6d6f;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-top:1em}.content ul ul{list-style-type:circle;margin-top:.5em}.content ul ul ul{list-style-type:square}.content dd,.content ul{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,.table td,.table th{border:1px solid #5e6d6f;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.content table th,.table th{color:#f2f2f2}.content table thead td,.content table thead th,.table thead td,.table thead th{border-width:0 0 2px;color:#f2f2f2}.content table tfoot td,.content table tfoot th,.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#f2f2f2}.content table tbody tr:last-child td,.content table tbody tr:last-child th,.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small{font-size:.85em}.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}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:290486px}.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{border-radius:.4em;padding:1.25rem 2.5rem 1.25rem 1.5rem;position:relative}.message a:not(.button):not(.tag):not(.dropdown-item),.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification code,.notification pre{background:#fff}.notification pre code{background:0 0}.notification>.delete{position:absolute;right:.5rem;top:.5rem}.notification .content,.notification .subtitle,.notification .title,.notification strong,.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong,.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#ecf0f1;color:#282f2f}.notification.is-dark{background-color:#282f2f;color:#ecf0f1}.notification.is-primary{background-color:#375a7f;color:#fff}.notification.is-link{background-color:#1abc9c;color:#fff}.notification.is-info{background-color:#209cee;color:#fff}.notification.is-success{background-color:#2ecc71;color:#fff}.notification.is-warning{background-color:#f1b70e;color:#fff}.notification.is-danger{background-color:#e74c3c;color:#fff}.progress{-moz-appearance:none;-webkit-appearance:none;border:0;border-radius:290486px;display:block;height:15px;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#5e6d6f}.progress::-webkit-progress-value{background-color:#dbdee0}.progress::-moz-progress-bar{background-color:#dbdee0}.progress::-ms-fill{background-color:#dbdee0;border:0}.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%,#5e6d6f 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%,#5e6d6f 30%)}.progress.is-light::-webkit-progress-value{background-color:#ecf0f1}.progress.is-light::-moz-progress-bar{background-color:#ecf0f1}.progress.is-light::-ms-fill{background-color:#ecf0f1}.progress.is-light:indeterminate{background-image:linear-gradient(to right,#ecf0f1 30%,#5e6d6f 30%)}.progress.is-dark::-webkit-progress-value{background-color:#282f2f}.progress.is-dark::-moz-progress-bar{background-color:#282f2f}.progress.is-dark::-ms-fill{background-color:#282f2f}.progress.is-dark:indeterminate{background-image:linear-gradient(to right,#282f2f 30%,#5e6d6f 30%)}.progress.is-primary::-webkit-progress-value{background-color:#375a7f}.progress.is-primary::-moz-progress-bar{background-color:#375a7f}.progress.is-primary::-ms-fill{background-color:#375a7f}.progress.is-primary:indeterminate{background-image:linear-gradient(to right,#375a7f 30%,#5e6d6f 30%)}.progress.is-link::-webkit-progress-value{background-color:#1abc9c}.progress.is-link::-moz-progress-bar{background-color:#1abc9c}.progress.is-link::-ms-fill{background-color:#1abc9c}.progress.is-link:indeterminate{background-image:linear-gradient(to right,#1abc9c 30%,#5e6d6f 30%)}.progress.is-info::-webkit-progress-value{background-color:#209cee}.progress.is-info::-moz-progress-bar{background-color:#209cee}.progress.is-info::-ms-fill{background-color:#209cee}.progress.is-info:indeterminate{background-image:linear-gradient(to right,#209cee 30%,#5e6d6f 30%)}.progress.is-success::-webkit-progress-value{background-color:#2ecc71}.progress.is-success::-moz-progress-bar{background-color:#2ecc71}.progress.is-success::-ms-fill{background-color:#2ecc71}.progress.is-success:indeterminate{background-image:linear-gradient(to right,#2ecc71 30%,#5e6d6f 30%)}.progress.is-warning::-webkit-progress-value{background-color:#f1b70e}.progress.is-warning::-moz-progress-bar{background-color:#f1b70e}.progress.is-warning::-ms-fill{background-color:#f1b70e}.progress.is-warning:indeterminate{background-image:linear-gradient(to right,#f1b70e 30%,#5e6d6f 30%)}.progress.is-danger::-webkit-progress-value{background-color:#e74c3c}.progress.is-danger::-moz-progress-bar{background-color:#e74c3c}.progress.is-danger::-ms-fill{background-color:#e74c3c}.progress.is-danger:indeterminate{background-image:linear-gradient(to right,#e74c3c 30%,#5e6d6f 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:#5e6d6f;background-image:linear-gradient(to right,#fff 30%,#5e6d6f 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.is-small{height:.85em}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}.table{background-color:#343c3d;color:#fff}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}.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,.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:#ecf0f1;border-color:#ecf0f1;color:#282f2f}.table td.is-dark,.table th.is-dark{background-color:#282f2f;border-color:#282f2f;color:#ecf0f1}.table td.is-primary,.table th.is-primary{background-color:#375a7f;border-color:#375a7f;color:#fff}.table td.is-link,.table th.is-link{background-color:#1abc9c;border-color:#1abc9c;color:#fff}.table td.is-info,.table th.is-info{background-color:#209cee;border-color:#209cee;color:#fff}.table td.is-success,.table th.is-success{background-color:#2ecc71;border-color:#2ecc71;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#f1b70e;border-color:#f1b70e;color:#fff}.table td.is-danger,.table th.is-danger{background-color:#e74c3c;border-color:#e74c3c;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected,.table tr.is-selected{background-color:#375a7f;color:#fff}.table th:not([align]){text-align:left}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.message-body pre code,.table tbody,.table tfoot,.table thead{background-color:transparent}.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,.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#282f2f}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#2d3435}.table.is-narrow td,.table.is-narrow th{padding:.25em .5em}.table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#282f2f}.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:15px}.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-bottom-left-radius:0;border-top-left-radius:0}.tags.has-addons .tag:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.tag:not(body){align-items:center;background-color:#282f2f;border-radius:.4em;color:#fff;display:inline-flex;font-size:.85em;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:#ecf0f1;color:#282f2f}.tag:not(body).is-dark{background-color:#282f2f;color:#ecf0f1}.tag:not(body).is-primary{background-color:#375a7f;color:#fff}.tag:not(body).is-link{background-color:#1abc9c;color:#fff}.tag:not(body).is-info{background-color:#209cee;color:#fff}.tag:not(body).is-success{background-color:#2ecc71;color:#fff}.tag:not(body).is-warning{background-color:#f1b70e;color:#fff}.tag:not(body).is-danger{background-color:#e74c3c;color:#fff}.tag:not(body).is-normal{font-size:.85em}.tag:not(body).is-medium{font-size:15px}.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:#1d2122}.tag:not(body).is-delete:active{background-color:#111414}.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,.title strong{font-weight:inherit}.subtitle sub,.subtitle sup,.title sub,.title sup{font-size:.75em}.subtitle .tag,.title .tag{vertical-align:middle}.title{color:#fff;font-size:2rem;font-weight:500;line-height:1.125}.title strong{color:inherit}.title+.highlight{margin-top:-.75rem}.subtitle:not(.is-spaced)+.title,.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}.subtitle,.title.is-5{font-size:1.25rem}.title.is-6{font-size:15px}.title.is-7{font-size:.85em}.subtitle{color:#8c9b9d;font-weight:400;line-height:1.25}.subtitle strong{color:#8c9b9d;font-weight:600}.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:15px}.subtitle.is-7{font-size:.85em}.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:#282f2f;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:#dbdee0;border-radius:.4em;color:#282f2f}.input:-moz-placeholder,.input::-moz-placeholder,.select select:-moz-placeholder,.select select::-moz-placeholder,.textarea:-moz-placeholder,.textarea::-moz-placeholder{color:rgba(40,47,47,.3)}.input::-webkit-input-placeholder,.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:rgba(40,47,47,.3)}.input:-ms-input-placeholder,.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:rgba(40,47,47,.3)}.input:hover,.is-hovered.input,.is-hovered.textarea,.select select.is-hovered,.select select:hover,.textarea:hover{border-color:#8c9b9d}.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:#1abc9c;box-shadow:0 0 0 .125em rgba(26,188,156,.25)}.input[disabled],.select fieldset[disabled] select,.select select[disabled],.textarea[disabled],fieldset[disabled] .input,fieldset[disabled] .select select,fieldset[disabled] .textarea{background-color:#8c9b9d;border-color:#282f2f;box-shadow:none;color:#fff}.input[disabled]:-moz-placeholder,.input[disabled]::-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,.select select[disabled]:-moz-placeholder,.select select[disabled]::-moz-placeholder,.textarea[disabled]:-moz-placeholder,.textarea[disabled]::-moz-placeholder,fieldset[disabled] .input:-moz-placeholder,fieldset[disabled] .input::-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder{color:rgba(255,255,255,.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(255,255,255,.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(255,255,255,.3)}.input{max-width:100%}.input,.textarea{box-shadow:inset 0 1px 2px rgba(10,10,10,.1);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:#ecf0f1}.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(236,240,241,.25)}.is-dark.input,.is-dark.textarea,.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#282f2f}.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(40,47,47,.25)}.is-primary.input,.is-primary.textarea{border-color:#375a7f}.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(55,90,127,.25)}.is-link.input,.is-link.textarea{border-color:#1abc9c}.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(26,188,156,.25)}.is-info.input,.is-info.textarea{border-color:#209cee}.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(32,156,238,.25)}.is-success.input,.is-success.textarea{border-color:#2ecc71}.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(46,204,113,.25)}.is-warning.input,.is-warning.textarea{border-color:#f1b70e}.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(241,183,14,.25)}.is-danger.input,.is-danger.textarea{border-color:#e74c3c}.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(231,76,60,.25)}.is-small.input,.is-small.textarea{border-radius:3px;font-size:.85em}.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:1em;padding-right:1em}.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:.625em;resize:vertical}.textarea:not([rows]){max-height:600px;min-height:120px}.textarea[rows]{height:initial}.textarea.has-fixed-size{resize:none}.checkbox,.radio,.select{display:inline-block;position:relative}.checkbox,.radio{cursor:pointer;line-height:1.25}.checkbox input,.radio input{cursor:pointer}.checkbox:hover,.radio:hover{color:#8c9b9d}.checkbox[disabled],.radio[disabled],fieldset[disabled] .checkbox,fieldset[disabled] .radio{color:#fff;cursor:not-allowed}.radio+.radio{margin-left:.5em}.select{max-width:100%;vertical-align:top}.select:not(.is-multiple){height:2.25em}.select:not(.is-multiple):not(.is-loading)::after{border-color:#1abc9c;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: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:#8c9b9d}.select.is-white:not(:hover)::after{border-color:#fff}.select.is-disabled::after,.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}.navbar.is-white .navbar-brand .navbar-link::after,.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:#ecf0f1}.select.is-light select{border-color:#ecf0f1}.select.is-light select.is-hovered,.select.is-light select:hover{border-color:#dde4e6}.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(236,240,241,.25)}.select.is-dark:not(:hover)::after{border-color:#282f2f}.select.is-dark select{border-color:#282f2f}.select.is-dark select.is-hovered,.select.is-dark select:hover{border-color:#1d2122}.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(40,47,47,.25)}.select.is-primary:not(:hover)::after{border-color:#375a7f}.select.is-primary select{border-color:#375a7f}.select.is-primary select.is-hovered,.select.is-primary select:hover{border-color:#2f4d6d}.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(55,90,127,.25)}.select.is-link:not(:hover)::after{border-color:#1abc9c}.select.is-link select{border-color:#1abc9c}.select.is-link select.is-hovered,.select.is-link select:hover{border-color:#17a689}.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(26,188,156,.25)}.select.is-info:not(:hover)::after{border-color:#209cee}.select.is-info select{border-color:#209cee}.select.is-info select.is-hovered,.select.is-info select:hover{border-color:#118fe4}.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(32,156,238,.25)}.select.is-success:not(:hover)::after{border-color:#2ecc71}.select.is-success select{border-color:#2ecc71}.select.is-success select.is-hovered,.select.is-success select:hover{border-color:#29b765}.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(46,204,113,.25)}.select.is-warning:not(:hover)::after{border-color:#f1b70e}.select.is-warning select{border-color:#f1b70e}.select.is-warning select.is-hovered,.select.is-warning select:hover{border-color:#d9a50d}.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(241,183,14,.25)}.select.is-danger:not(:hover)::after{border-color:#e74c3c}.select.is-danger select{border-color:#e74c3c}.select.is-danger select.is-hovered,.select.is-danger select:hover{border-color:#e43725}.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(231,76,60,.25)}.select.is-small{border-radius:3px;font-size:.85em}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-fullwidth,.select.is-fullwidth select{width:100%}.select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:.625em;transform:none}.file.is-small,.select.is-loading.is-small:after{font-size:.85em}.file.is-medium,.select.is-loading.is-medium:after{font-size:1.25rem}.file.is-large,.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:#ecf0f1;border-color:transparent;color:#282f2f}.file.is-light.is-hovered .file-cta,.file.is-light:hover .file-cta{background-color:#e5eaec;border-color:transparent;color:#282f2f}.file.is-light.is-focused .file-cta,.file.is-light:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(236,240,241,.25);color:#282f2f}.file.is-dark .file-cta,.file.is-light.is-active .file-cta,.file.is-light:active .file-cta{background-color:#dde4e6;border-color:transparent;color:#282f2f}.file.is-dark .file-cta{background-color:#282f2f;color:#ecf0f1}.file.is-dark.is-hovered .file-cta,.file.is-dark:hover .file-cta{background-color:#232829;border-color:transparent;color:#ecf0f1}.file.is-dark.is-focused .file-cta,.file.is-dark:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(40,47,47,.25);color:#ecf0f1}.file.is-dark.is-active .file-cta,.file.is-dark:active .file-cta{background-color:#1d2122;border-color:transparent;color:#ecf0f1}.file.is-primary .file-cta{background-color:#375a7f;border-color:transparent;color:#fff}.file.is-primary.is-hovered .file-cta,.file.is-primary:hover .file-cta{background-color:#335476;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(55,90,127,.25);color:#fff}.file.is-link .file-cta,.file.is-primary.is-active .file-cta,.file.is-primary:active .file-cta{background-color:#2f4d6d;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#1abc9c}.file.is-link.is-hovered .file-cta,.file.is-link:hover .file-cta{background-color:#18b193;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(26,188,156,.25);color:#fff}.file.is-info .file-cta,.file.is-link.is-active .file-cta,.file.is-link:active .file-cta{background-color:#17a689;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#209cee}.file.is-info.is-hovered .file-cta,.file.is-info:hover .file-cta{background-color:#1496ed;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(32,156,238,.25);color:#fff}.file.is-info.is-active .file-cta,.file.is-info:active .file-cta,.file.is-success .file-cta{background-color:#118fe4;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#2ecc71}.file.is-success.is-hovered .file-cta,.file.is-success:hover .file-cta{background-color:#2cc26b;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(46,204,113,.25);color:#fff}.file.is-success.is-active .file-cta,.file.is-success:active .file-cta,.file.is-warning .file-cta{background-color:#29b765;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#f1b70e}.file.is-warning.is-hovered .file-cta,.file.is-warning:hover .file-cta{background-color:#e5ae0d;border-color:transparent;color:#fff}.file.is-warning.is-focused .file-cta,.file.is-warning:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(241,183,14,.25);color:#fff}.file.is-danger .file-cta,.file.is-warning.is-active .file-cta,.file.is-warning:active .file-cta{background-color:#d9a50d;border-color:transparent;color:#fff}.file.is-danger .file-cta{background-color:#e74c3c}.file.is-danger.is-hovered .file-cta,.file.is-danger:hover .file-cta{background-color:#e64231;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(231,76,60,.25);color:#fff}.file.is-danger.is-active .file-cta,.file.is-danger:active .file-cta{background-color:#e43725;border-color:transparent;color:#fff}.file.is-medium .file-icon .fa{font-size:21px}.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,.level code{border-radius:.4em}.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}.card .card-image img,.file.is-boxed.has-name .file-cta{border-radius:.4em .4em 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 .4em .4em;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 .4em .4em 0}.file.is-right .file-name{border-radius:.4em 0 0 .4em;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:#e5eaec;color:#282f2f}.file-label:hover .file-name{border-color:#596668}.file-label:active .file-cta{background-color:#dde4e6;color:#282f2f}.file-label:active .file-name{border-color:#535f61}.file-input{height:100%;left:0;opacity:0;outline:0;position:absolute;top:0;width:100%}.file-cta{border-color:#5e6d6f}.file-cta,.file-name{border-radius:.4em;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:#ecf0f1;color:#343c3d}.file-name{border-color:#5e6d6f;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:left;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{display:block;font-size:15px;font-weight:700}.label:not(:last-child){margin-bottom:.5em}.help,.label.is-small{font-size:.85em}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;margin-top:.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#ecf0f1}.help.is-dark{color:#282f2f}.help.is-primary{color:#375a7f}.help.is-link{color:#1abc9c}.help.is-info{color:#209cee}.help.is-success{color:#2ecc71}.help.is-warning{color:#f1b70e}.help.is-danger{color:#e74c3c}.field:not(:last-child){margin-bottom:.75rem}.field.has-addons,.field.is-grouped{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,.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.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}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul,.field.is-grouped.is-grouped-centered{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul,.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:.85em;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}.field-body .field{margin-bottom:0}.field-body,.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:15px;position:relative;text-align:left}.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:#5e6d6f}.breadcrumb.is-small,.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,.control.is-loading.is-small:after{font-size:.85em}.breadcrumb.is-medium,.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,.control.is-loading.is-medium:after{font-size:1.25rem}.breadcrumb.is-large,.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,.control.is-loading.is-large:after{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdee0;pointer-events:none;position:absolute;top:0;width:2.25em;z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:2.25em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right .select select{padding-right:2.25em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{position:absolute!important;right:.625em;top:.625em;z-index:4}.breadcrumb{font-size:15px;white-space:nowrap}.breadcrumb a{color:#1abc9c;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#1dd2af}.breadcrumb a,.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#f2f2f2;cursor:default;pointer-events:none}.breadcrumb li+li::before{color:#8c9b9d;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.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{box-shadow:0 2px 3px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);color:#fff;max-width:100%;position:relative}.card-header{background-color:transparent;align-items:stretch;box-shadow:0 1px 2px rgba(10,10,10,.1);display:flex}.card-header-title{align-items:center;color:#f2f2f2;display:flex;flex-grow:1;font-weight:700;padding:.75rem}.card-header-icon,.card-header-title.is-centered{justify-content:center}.card-header-icon{align-items:center;cursor:pointer;display:flex;padding:.75rem}.card-image{display:block;position:relative}.card-content,.card-footer{background-color:transparent}.card-content{padding:1.5rem}.card-footer{border-top:1px solid #5e6d6f;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 #5e6d6f}.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:#282f2f;border-radius:.4em;box-shadow:0 2px 3px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);padding-bottom:.5rem;padding-top:.5rem}.dropdown-item{color:#fff;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:left;white-space:nowrap;width:100%}a.dropdown-item:hover,button.dropdown-item:hover{background-color:#282f2f;color:#0a0a0a}a.dropdown-item.is-active,button.dropdown-item.is-active{background-color:#1abc9c;color:#fff}.dropdown-divider{background-color:#5e6d6f;border:0;display:block;height:1px;margin:.5rem 0}.level{align-items:center;justify-content:space-between}.level img{display:inline-block;vertical-align:top}.level.is-mobile,.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;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-item,.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}}.list{background-color:#fff;border-radius:.4em;box-shadow:0 2px 3px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1)}.list-item{display:block;padding:.5em 1em}.list-item:not(a){color:#fff}.list-item:first-child{border-top-left-radius:.4em;border-top-right-radius:.4em}.list-item:last-child{border-bottom-left-radius:.4em;border-bottom-right-radius:.4em}.list-item:not(:last-child){border-bottom:1px solid #5e6d6f}.list-item.is-active{background-color:#1abc9c;color:#fff}a.list-item{background-color:#282f2f;cursor:pointer}.media{align-items:flex-start;display:flex;text-align:left}.media .content:not(:last-child){margin-bottom:.75rem}.media .media{border-top:1px solid rgba(94,109,111,.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(94,109,111,.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:left}@media screen and (max-width:768px){.media-content{overflow-x:auto}}.menu{font-size:15px}.menu.is-small{font-size:.85em}.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:3px;color:#fff;display:block;padding:.5em .75em}.menu-list a:hover{background-color:#282f2f;color:#f2f2f2}.menu-list a.is-active{background-color:#1abc9c;color:#fff}.menu-list li ul{border-left:1px solid #5e6d6f;margin:.75em;padding-left:.75em}.menu-label{color:#fff;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:#282f2f;border-radius:.4em;font-size:15px}.message strong{color:currentColor}.message.is-small{font-size:.85em}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message-body code,.message-body pre,.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff;color:#4d4d4d}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a;color:#090909}.message.is-light{background-color:#f9fafb}.message.is-light .message-header{background-color:#ecf0f1;color:#282f2f}.message.is-light .message-body{border-color:#ecf0f1;color:#505050}.message.is-dark{background-color:#f9fafa}.message.is-dark .message-header{background-color:#282f2f;color:#ecf0f1}.message.is-dark .message-body{border-color:#282f2f;color:#212526}.message.is-primary{background-color:#f8fafc}.message.is-primary .message-header{background-color:#375a7f;color:#fff}.message.is-primary .message-body{border-color:#375a7f;color:#2b4159}.message.is-link{background-color:#f6fefc}.message.is-link .message-header{background-color:#1abc9c;color:#fff}.message.is-link .message-body{border-color:#1abc9c;color:#0b2f28}.message.is-info{background-color:#f6fbfe}.message.is-info .message-header{background-color:#209cee;color:#fff}.message.is-info .message-body{border-color:#209cee;color:#12537e}.message.is-success{background-color:#f7fdf9}.message.is-success .message-header{background-color:#2ecc71;color:#fff}.message.is-success .message-body{border-color:#2ecc71;color:#133622}.message.is-warning{background-color:#fefcf5}.message.is-warning .message-header{background-color:#f1b70e;color:#fff}.message.is-warning .message-body{border-color:#f1b70e;color:#2b2107}.message.is-danger{background-color:#fef7f6}.message.is-danger .message-header{background-color:#e74c3c;color:#fff}.message.is-danger .message-body{border-color:#e74c3c;color:#a82a1d}.message-header{align-items:center;border-radius:.4em .4em 0 0;color:rgba(0,0,0,.7);display:flex;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-radius:.4em;border-style:solid;color:#fff;padding:1.25em 1.5em}.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-content{max-height:calc(100vh - 160px);overflow:auto}.modal-card,.modal-content{margin:0 20px;position:relative;width:100%}@media screen and (min-width:769px),print{.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:#282f2f;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #5e6d6f;border-top-left-radius:8px;border-top-right-radius:8px}.modal-card-title{color:#f2f2f2;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid #5e6d6f}.modal-card-foot .button:not(:last-child){margin-right:.5em}.modal-card-body{-webkit-overflow-scrolling:touch;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#375a7f;min-height:4rem;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,.navbar.is-white .navbar-burger{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}@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-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,.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-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,.navbar.is-black .navbar-burger{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}@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-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,.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-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#ecf0f1;color:#282f2f}.navbar.is-light .navbar-brand .navbar-link,.navbar.is-light .navbar-brand>.navbar-item,.navbar.is-light .navbar-burger{color:#282f2f}.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:#dde4e6;color:#282f2f}.navbar.is-light .navbar-brand .navbar-link::after{border-color:#282f2f}@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:#282f2f}.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-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,.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:#dde4e6;color:#282f2f}.navbar.is-light .navbar-end .navbar-link::after,.navbar.is-light .navbar-start .navbar-link::after{border-color:#282f2f}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#ecf0f1;color:#282f2f}}.navbar.is-dark{background-color:#282f2f;color:#ecf0f1}.navbar.is-dark .navbar-brand .navbar-link,.navbar.is-dark .navbar-brand>.navbar-item,.navbar.is-dark .navbar-burger{color:#ecf0f1}.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:#1d2122;color:#ecf0f1}.navbar.is-dark .navbar-brand .navbar-link::after{border-color:#ecf0f1}@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:#ecf0f1}.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-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,.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:#1d2122;color:#ecf0f1}.navbar.is-dark .navbar-end .navbar-link::after,.navbar.is-dark .navbar-start .navbar-link::after{border-color:#ecf0f1}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active{background-color:#282f2f;color:#ecf0f1}}.navbar.is-primary{background-color:#375a7f;color:#fff}.navbar.is-primary .navbar-brand .navbar-link,.navbar.is-primary .navbar-brand>.navbar-item,.navbar.is-primary .navbar-burger{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:#2f4d6d;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after{border-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-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,.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:#2f4d6d;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-dropdown a.navbar-item.is-active{background-color:#375a7f;color:#fff}}.navbar.is-link{background-color:#1abc9c;color:#fff}.navbar.is-link .navbar-brand .navbar-link,.navbar.is-link .navbar-brand>.navbar-item,.navbar.is-link .navbar-burger{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:#17a689;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-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-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,.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:#17a689;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-dropdown a.navbar-item.is-active{background-color:#1abc9c;color:#fff}}.navbar.is-info{background-color:#209cee;color:#fff}.navbar.is-info .navbar-brand .navbar-link,.navbar.is-info .navbar-brand>.navbar-item,.navbar.is-info .navbar-burger{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:#118fe4;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-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-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,.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:#118fe4;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-dropdown a.navbar-item.is-active{background-color:#209cee;color:#fff}}.navbar.is-success{background-color:#2ecc71;color:#fff}.navbar.is-success .navbar-brand .navbar-link,.navbar.is-success .navbar-brand>.navbar-item,.navbar.is-success .navbar-burger{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:#29b765;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-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-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,.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:#29b765;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-dropdown a.navbar-item.is-active{background-color:#2ecc71;color:#fff}}.navbar.is-warning{background-color:#f1b70e;color:#fff}.navbar.is-warning .navbar-brand .navbar-link,.navbar.is-warning .navbar-brand>.navbar-item,.navbar.is-warning .navbar-burger{color:#fff}.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:#d9a50d;color:#fff}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:#fff}@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:#fff}.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-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,.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:#d9a50d;color:#fff}.navbar.is-warning .navbar-end .navbar-link::after,.navbar.is-warning .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#f1b70e;color:#fff}}.navbar.is-danger{background-color:#e74c3c;color:#fff}.navbar.is-danger .navbar-brand .navbar-link,.navbar.is-danger .navbar-brand>.navbar-item,.navbar.is-danger .navbar-burger{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:#e43725;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-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-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,.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:#e43725;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-dropdown a.navbar-item.is-active{background-color:#e74c3c;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:4rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #282f2f}.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 #282f2f}.navbar.is-fixed-top{top:0}body.has-navbar-fixed-top,html.has-navbar-fixed-top{padding-top:4rem}body.has-navbar-fixed-bottom,html.has-navbar-fixed-bottom{padding-bottom:4rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:4rem}.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:#fff;cursor:pointer;display:block;height:4rem;position:relative;width:4rem;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:#fff;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-link{display:block}.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:transparent;color:#1abc9c}.navbar-item{display:block;flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-content,.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:4rem;padding-bottom:calc(.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:transparent;border-bottom-color:#1abc9c}.navbar-item.is-tab.is-active{background-color:transparent;border-bottom-color:#1abc9c;border-bottom-style:solid;border-bottom-width:3px;color:#1abc9c;padding-bottom:calc(.5rem - 3px)}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless)::after{border-color:#fff;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:rgba(0,0,0,.2);border:0;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:#375a7f;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 - 4rem);overflow:auto}body.has-navbar-fixed-top-touch,html.has-navbar-fixed-top-touch{padding-top:4rem}body.has-navbar-fixed-bottom-touch,html.has-navbar-fixed-bottom-touch{padding-bottom:4rem}}@media screen and (min-width:1024px){.navbar,.navbar-end,.navbar-menu,.navbar-start{align-items:stretch;display:flex}.navbar{min-height:4rem}.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:.4em}.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-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover,.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:transparent;color:#dbdee0}.navbar-dropdown a.navbar-item.is-active,.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:transparent;color:#1abc9c}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center}.navbar-link{display:flex}.navbar-item{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:1px solid rgba(0,0,0,.2);border-radius:8px 8px 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:#375a7f;border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid rgba(0,0,0,.2);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.is-boxed,.navbar.is-spaced .navbar-dropdown{border-radius:8px;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:4rem}body.has-navbar-fixed-bottom-desktop,html.has-navbar-fixed-bottom-desktop{padding-bottom:4rem}body.has-spaced-navbar-fixed-top,html.has-spaced-navbar-fixed-top{padding-top:6rem}body.has-spaced-navbar-fixed-bottom,html.has-spaced-navbar-fixed-bottom{padding-bottom:6rem}.navbar-link.is-active,a.navbar-item.is-active{color:#1abc9c}.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:transparent}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 4rem)}.pagination{font-size:15px;margin:-.25rem}.pagination.is-small{font-size:.85em}.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;text-align:center}.pagination-ellipsis,.pagination-link{padding-left:.5em;padding-right:.5em}.pagination-link,.pagination-next,.pagination-previous{border-color:#5e6d6f;color:#1abc9c;min-width:2.25em}.pagination-link:hover,.pagination-next:hover,.pagination-previous:hover{border-color:#8c9b9d;color:#1dd2af}.pagination-link:focus,.pagination-next:focus,.pagination-previous:focus{border-color:#8c9b9d}.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:#dbdee0;border-color:#dbdee0;box-shadow:none;color:#5e6d6f;opacity:.5}.pagination-next,.pagination-previous{padding-left:.75em;padding-right:.75em;white-space:nowrap}.pagination-link.is-current{background-color:#1abc9c;border-color:#1abc9c;color:#fff}.pagination-ellipsis{color:#8c9b9d;pointer-events:none}.pagination-list{flex-wrap:wrap}@media screen and (max-width:768px){.pagination{flex-wrap:wrap}.pagination-list li,.pagination-next,.pagination-previous{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{font-size:15px}.panel:not(:last-child){margin-bottom:1.5rem}.panel-block,.panel-heading,.panel-tabs{border-bottom:1px solid #5e6d6f;border-left:1px solid #5e6d6f;border-right:1px solid #5e6d6f}.panel-block:first-child,.panel-heading:first-child,.panel-tabs:first-child{border-top:1px solid #5e6d6f}.panel-heading{background-color:#282f2f;border-radius:.4em .4em 0 0;color:#f2f2f2;font-size:1.25em;line-height:1.25;padding:.5em .75em}.panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}.panel-tabs a{border-bottom:1px solid #5e6d6f;padding:.5em}.panel-tabs a.is-active{color:#17a689}.panel-list a{color:#fff}.panel-list a:hover{color:#1abc9c}.panel-block{align-items:center;color:#f2f2f2;display:flex;justify-content:flex-start;padding:.5em .75em}.panel-block input[type=checkbox],.panel-icon{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:#1abc9c;color:#17a689}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#282f2f}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#fff}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:15px;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a,.tabs ul{align-items:center;border-bottom-color:#5e6d6f;border-bottom-style:solid;display:flex}.tabs a{color:#fff;padding:.5em 1em;vertical-align:top;justify-content:center}.tabs a:hover{border-bottom-color:#f2f2f2;color:#f2f2f2}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#1abc9c;color:#1abc9c}.tabs ul{flex-grow:1;flex-shrink:0;justify-content:flex-start;border-bottom-width:2px}.tabs ul.is-center,.tabs ul.is-left{padding-right:.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:.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:.4em .4em 0 0}.tabs.is-boxed a:hover{background-color:#282f2f;border-bottom-color:#5e6d6f}.tabs.is-boxed li.is-active a{border-color:#5e6d6f;border-bottom-color:transparent!important}.tabs.is-toggle a{border-color:#5e6d6f;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#282f2f;border-color:#8c9b9d;z-index:2}.tabs.is-toggle li+li{margin-left:-2px}.tabs.is-toggle li:first-child a{border-radius:.4em 0 0 .4em}.tabs.is-toggle li:last-child a{border-radius:0 .4em .4em 0}.tabs.is-toggle li.is-active a{background-color:#1abc9c;border-color:#1abc9c;color:#fff;z-index:1}.hero .tabs ul,.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:.85em}.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}.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}.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}.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}.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}.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}.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}.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%}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:0 0}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-black strong,.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-danger strong,.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-dark strong,.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-info strong,.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-light strong,.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-link strong,.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong,.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-success strong,.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-warning strong,.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,.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-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover,.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover,.hero.is-dark .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover,.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover,.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover,.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover,.hero.is-primary .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover,.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover,.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover,.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.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 .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,.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 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:#ecf0f1;color:#282f2f}.hero.is-light .title{color:#282f2f}.hero.is-light .subtitle{color:rgba(40,47,47,.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:#282f2f}@media screen and (max-width:1023px){.hero.is-light .navbar-menu{background-color:#ecf0f1}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(40,47,47,.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:#dde4e6;color:#282f2f}.hero.is-light .tabs a{color:#282f2f;opacity:.9}.hero.is-light .tabs a:hover,.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:#282f2f}.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:#282f2f;border-color:#282f2f;color:#ecf0f1}.hero.is-light.is-bold{background-image:linear-gradient(141deg,#cadfe0 0%,#ecf0f1 71%,#fafbfc 100%)}@media screen and (max-width:768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg,#cadfe0 0%,#ecf0f1 71%,#fafbfc 100%)}}.hero.is-dark{background-color:#282f2f;color:#ecf0f1}.hero.is-dark .title{color:#ecf0f1}.hero.is-dark .subtitle{color:rgba(236,240,241,.9)}.hero.is-dark .subtitle a:not(.button),.hero.is-dark .subtitle strong{color:#ecf0f1}@media screen and (max-width:1023px){.hero.is-dark .navbar-menu{background-color:#282f2f}}.hero.is-dark .navbar-item,.hero.is-dark .navbar-link{color:rgba(236,240,241,.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:#1d2122;color:#ecf0f1}.hero.is-dark .tabs a{color:#ecf0f1;opacity:.9}.hero.is-dark .tabs a:hover,.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:#ecf0f1}.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:#ecf0f1;border-color:#ecf0f1;color:#282f2f}.hero.is-dark.is-bold{background-image:linear-gradient(141deg,#0f1615 0%,#282f2f 71%,#313c40 100%)}@media screen and (max-width:768px){.hero.is-dark.is-bold .navbar-menu{background-image:linear-gradient(141deg,#0f1615 0%,#282f2f 71%,#313c40 100%)}}.hero.is-primary{background-color:#375a7f;color:#fff}.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:#375a7f}}.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:#2f4d6d;color:#fff}.hero.is-danger .tabs a,.hero.is-info .tabs a,.hero.is-link .tabs a,.hero.is-primary .tabs a,.hero.is-success .tabs a,.hero.is-warning .tabs a{color:#fff;opacity:.9}.hero.is-primary .tabs a:hover,.hero.is-primary .tabs li.is-active a{opacity: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:#375a7f}.hero.is-primary.is-bold{background-image:linear-gradient(141deg,#214b62 0%,#375a7f 71%,#3a5796 100%)}@media screen and (max-width:768px){.hero.is-primary.is-bold .navbar-menu{background-image:linear-gradient(141deg,#214b62 0%,#375a7f 71%,#3a5796 100%)}}.hero.is-link{background-color:#1abc9c;color:#fff}.hero.is-link .title,.hero.is-primary .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a{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:#1abc9c}}.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:#17a689;color:#fff}.hero.is-link .tabs a:hover,.hero.is-link .tabs li.is-active a{opacity: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:#1abc9c}.hero.is-link.is-bold{background-image:linear-gradient(141deg,#0c9764 0%,#1abc9c 71%,#17d8d2 100%)}@media screen and (max-width:768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg,#0c9764 0%,#1abc9c 71%,#17d8d2 100%)}}.hero.is-info{background-color:#209cee;color:#fff}.hero.is-info .title,.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{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:#209cee}}.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:#118fe4;color:#fff}.hero.is-info .tabs a:hover,.hero.is-info .tabs li.is-active a{opacity: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:#209cee}.hero.is-info.is-bold{background-image:linear-gradient(141deg,#04a6d7 0%,#209cee 71%,#3287f5 100%)}@media screen and (max-width:768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg,#04a6d7 0%,#209cee 71%,#3287f5 100%)}}.hero.is-success{background-color:#2ecc71;color:#fff}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a,.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:#2ecc71}}.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:#29b765;color:#fff}.hero.is-success .tabs a:hover,.hero.is-success .tabs li.is-active a{opacity: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:#2ecc71}.hero.is-success.is-bold{background-image:linear-gradient(141deg,#1bac40 0%,#2ecc71 71%,#3ada98 100%)}@media screen and (max-width:768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg,#1bac40 0%,#2ecc71 71%,#3ada98 100%)}}.hero.is-warning{background-color:#f1b70e;color:#fff}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a,.hero.is-warning .title{color:#fff}.hero.is-warning .subtitle{color:rgba(255,255,255,.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-warning .navbar-menu{background-color:#f1b70e}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(255,255,255,.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:#d9a50d;color:#fff}.hero.is-warning .tabs a:hover,.hero.is-warning .tabs li.is-active a{opacity: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:#fff;border-color:#fff;color:#f1b70e}.hero.is-warning.is-bold{background-image:linear-gradient(141deg,#cb7601 0%,#f1b70e 71%,#f8e520 100%)}@media screen and (max-width:768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg,#cb7601 0%,#f1b70e 71%,#f8e520 100%)}}.hero.is-danger{background-color:#e74c3c;color:#fff}.hero.is-danger .title,.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{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:#e74c3c}}.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:#e43725;color:#fff}.hero.is-danger .tabs a:hover,.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 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:#e74c3c}.hero.is-danger.is-bold{background-image:linear-gradient(141deg,#e20e1e 0%,#e74c3c 71%,#ef784e 100%)}@media screen and (max-width:768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg,#e20e1e 0%,#e74c3c 71%,#ef784e 100%)}}.hero.is-small .hero-body{padding-bottom:1.5rem;padding-top:1.5rem}@media screen and (min-width:769px),print{.hero.is-medium .hero-body{padding-bottom:9rem;padding-top:9rem}.hero.is-large .hero-body{padding-bottom:18rem;padding-top:18rem}}.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-body,.hero-foot,.hero-head{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1}.hero-body,.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:#282f2f;padding:3rem 1.5rem 6rem}h6{text-transform:uppercase;letter-spacing:.5px}.hero{background-color:#343c3d}.button{transition:all 200ms ease;border-width:2px;color:#fff}.button.is-active,.button.is-focused,.button:active,.button:focus{box-shadow:0 0 0 2px rgba(140,155,157,.5)}.button.is-white.is-hovered,.button.is-white:hover{background-color:#fff}.button.is-white.is-active,.button.is-white.is-focused,.button.is-white:active,.button.is-white:focus{border-color:#fff;box-shadow:0 0 0 2px rgba(255,255,255,.5)}.button.is-black.is-hovered,.button.is-black:hover{background-color:#1d1d1d}.button.is-black.is-active,.button.is-black.is-focused,.button.is-black:active,.button.is-black:focus{border-color:#0a0a0a;box-shadow:0 0 0 2px rgba(10,10,10,.5)}.button.is-light.is-hovered,.button.is-light:hover{background-color:#fff}.button.is-light.is-active,.button.is-light.is-focused,.button.is-light:active,.button.is-light:focus{border-color:#ecf0f1;box-shadow:0 0 0 2px rgba(236,240,241,.5)}.button.is-dark.is-hovered,.button.is-dark:hover{background-color:#3a4344}.button.is-dark.is-active,.button.is-dark.is-focused,.button.is-dark:active,.button.is-dark:focus{border-color:#282f2f;box-shadow:0 0 0 2px rgba(40,47,47,.5)}.button.is-primary.is-hovered,.button.is-primary:hover{background-color:#436d9a}.button.is-primary.is-active,.button.is-primary.is-focused,.button.is-primary:active,.button.is-primary:focus{border-color:#375a7f;box-shadow:0 0 0 2px rgba(55,90,127,.5)}.button.is-link.is-hovered,.button.is-link:hover{background-color:#1fdeb8}.button.is-link.is-active,.button.is-link.is-focused,.button.is-link:active,.button.is-link:focus{border-color:#1abc9c;box-shadow:0 0 0 2px rgba(26,188,156,.5)}.button.is-info.is-hovered,.button.is-info:hover{background-color:#44acf1}.button.is-info.is-active,.button.is-info.is-focused,.button.is-info:active,.button.is-info:focus{border-color:#209cee;box-shadow:0 0 0 2px rgba(32,156,238,.5)}.button.is-success.is-hovered,.button.is-success:hover{background-color:#4ad685}.button.is-success.is-active,.button.is-success.is-focused,.button.is-success:active,.button.is-success:focus{border-color:#2ecc71;box-shadow:0 0 0 2px rgba(46,204,113,.5)}.button.is-warning.is-hovered,.button.is-warning:hover{background-color:#f3c232}.button.is-warning.is-active,.button.is-warning.is-focused,.button.is-warning:active,.button.is-warning:focus{border-color:#f1b70e;box-shadow:0 0 0 2px rgba(241,183,14,.5)}.button.is-danger.is-hovered,.button.is-danger:hover{background-color:#eb6b5e}.button.is-danger.is-active,.button.is-danger.is-focused,.button.is-danger:active,.button.is-danger:focus{border-color:#e74c3c;box-shadow:0 0 0 2px rgba(231,76,60,.5)}.label{color:#dbdee0}.button,.control.has-icons-left .icon,.control.has-icons-right .icon,.input,.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous,.select,.select select,.textarea{height:2.5em}.input,.textarea{transition:all 200ms ease;box-shadow:none;border-width:2px;padding-left:1em;padding-right:1em}.select select,.select:after{border-width:2px}.control.has-addons .button,.control.has-addons .input,.control.has-addons .select{margin-right:-2px}.notification{background-color:#343c3d}.card{box-shadow:none;border:2px solid #343c3d;background-color:#282f2f;border-radius:.4em}.card .card-header{box-shadow:none;border-radius:.4em .4em 0 0}.card .card-footer,.card .card-header{background-color:rgba(18,18,18,.2)}.card .card-footer,.card .card-footer-item{border-width:2px;border-color:#343c3d}.notification.is-white a:not(.button){color:#0a0a0a;text-decoration:underline}.notification.is-black a:not(.button){color:#fff;text-decoration:underline}.notification.is-light a:not(.button){color:#282f2f;text-decoration:underline}.notification.is-dark a:not(.button){color:#ecf0f1;text-decoration:underline}.notification.is-danger a:not(.button),.notification.is-info a:not(.button),.notification.is-link a:not(.button),.notification.is-primary a:not(.button),.notification.is-success a:not(.button),.notification.is-warning a:not(.button){color:#fff;text-decoration:underline}.tag{border-radius:.4em}.menu-list a{transition:all 300ms ease}.modal-card-body{background-color:#282f2f}.modal-card-foot,.modal-card-head{border-color:#343c3d}.message-header{font-weight:700;background-color:#343c3d;color:#fff}.message-body{border-width:2px;border-color:#343c3d}.navbar{border-radius:.4em}.navbar.is-transparent{background:0 0}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active{background-color:#1abc9c}@media screen and (max-width:1023px){.navbar .navbar-menu{background-color:#375a7f;border-radius:0 0 .4em .4em}}.hero .navbar,body>.navbar{border-radius:0}.pagination-link,.pagination-next,.pagination-previous,.panel-block,.panel-heading,.panel-tabs{border-width:2px}.panel-block:first-child,.panel-heading:first-child,.panel-tabs:first-child{border-top-width:2px}.panel-heading{font-weight:700}.panel-tabs a{border-width:2px;margin-bottom:-2px}.panel-tabs a.is-active{border-bottom-color:#17a689}.panel-block:hover,.panel-block:hover .panel-icon{color:#1dd2af}.panel-block.is-active .panel-icon{color:#17a689}.tabs a{border-bottom-width:2px;margin-bottom:-2px}.tabs.is-boxed a{border-width:2px}.tabs.is-boxed li.is-active a{background-color:#1f2424}.tabs.is-toggle li a{border-width:2px;margin-bottom:0}.hero.is-black .navbar .navbar-dropdown .navbar-item:hover,.hero.is-danger .navbar .navbar-dropdown .navbar-item:hover,.hero.is-dark .navbar .navbar-dropdown .navbar-item:hover,.hero.is-info .navbar .navbar-dropdown .navbar-item:hover,.hero.is-light .navbar .navbar-dropdown .navbar-item:hover,.hero.is-link .navbar .navbar-dropdown .navbar-item:hover,.hero.is-primary .navbar .navbar-dropdown .navbar-item:hover,.hero.is-success .navbar .navbar-dropdown .navbar-item:hover,.hero.is-warning .navbar .navbar-dropdown .navbar-item:hover,.hero.is-white .navbar .navbar-dropdown .navbar-item:hover{background-color:transparent} -/*# sourceMappingURL=bulmaswatch.min.css.map */ diff --git a/static-data/www/shared/main/themes/bulma-light.min.css b/static-data/www/shared/main/themes/bulma-light.min.css deleted file mode 100644 index 434a9789..00000000 --- a/static-data/www/shared/main/themes/bulma-light.min.css +++ /dev/null @@ -1 +0,0 @@ -/*! bulma.io v0.7.5 | MIT License | github.com/jgthms/bulma */@-webkit-keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.breadcrumb,.button,.delete,.file,.is-unselectable,.modal-close,.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%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:center;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),.list:not(:last-child),.message:not(:last-child),.notification: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{-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%;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);-webkit-transform-origin:center center;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}.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.25em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(.375em - 1px);padding-left:calc(.625em - 1px);padding-right:calc(.625em - 1px);padding-top:calc(.375em - 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}/*! minireset.css v0.0.4 | 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}embed,iframe,img,object,video{height:auto;max-width:100%}audio{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:left}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,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:#ff3860;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:left}table th{color:#363636}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left!important}.is-pulled-right{float:right!important}.is-clipped{overflow:hidden!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-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-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-info{color:#209cee!important}a.has-text-info:focus,a.has-text-info:hover{color:#0f81cc!important}.has-background-info{background-color:#209cee!important}.has-text-success{color:#23d160!important}a.has-text-success:focus,a.has-text-success:hover{color:#1ca64c!important}.has-background-success{background-color:#23d160!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-danger{color:#ff3860!important}a.has-text-danger:focus,a.has-text-danger:hover{color:#ff0537!important}.has-background-danger{background-color:#ff3860!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}.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}}.is-marginless{margin:0!important}.is-paddingless{padding:0!important}.is-radiusless{border-radius:0!important}.is-shadowless{box-shadow:none!important}.is-relative{position:relative!important}.box{background-color:#fff;border-radius:6px;box-shadow:0 2px 3px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);color:#4a4a4a;display:block;padding:1.25rem}a.box:focus,a.box:hover{box-shadow:0 2px 3px 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(.375em - 1px);padding-left:.75em;padding-right:.75em;padding-top:calc(.375em - 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(-.375em - 1px);margin-right:.1875em}.button .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:calc(-.375em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-.375em - 1px);margin-right:calc(-.375em - 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-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:#363636}.button.is-light.is-hovered,.button.is-light:hover{background-color:#eee;border-color:transparent;color:#363636}.button.is-light.is-focused,.button.is-light:focus{border-color:transparent;color:#363636}.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:#363636}.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:#363636;color:#f5f5f5}.button.is-light.is-inverted.is-hovered,.button.is-light.is-inverted:hover{background-color:#292929}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:#363636;border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading::after{border-color:transparent transparent #363636 #363636!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:#363636}.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 #363636 #363636!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:#363636;color:#363636}.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:#363636;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:#363636;box-shadow:none;color:#363636}.button.is-dark{background-color:#363636;border-color:transparent;color:#f5f5f5}.button.is-dark.is-hovered,.button.is-dark:hover{background-color:#2f2f2f;border-color:transparent;color:#f5f5f5}.button.is-dark.is-focused,.button.is-dark:focus{border-color:transparent;color:#f5f5f5}.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:#f5f5f5}.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:#f5f5f5;color:#363636}.button.is-dark.is-inverted.is-hovered,.button.is-dark.is-inverted:hover{background-color:#e8e8e8}.button.is-dark.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted{background-color:#f5f5f5;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5!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:#f5f5f5}.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 #f5f5f5 #f5f5f5!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:#f5f5f5;color:#f5f5f5}.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:#f5f5f5;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:#f5f5f5;box-shadow:none;color:#f5f5f5}.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-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-info{background-color:#209cee;border-color:transparent;color:#fff}.button.is-info.is-hovered,.button.is-info:hover{background-color:#1496ed;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(32,156,238,.25)}.button.is-info.is-active,.button.is-info:active{background-color:#118fe4;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#209cee;border-color:transparent;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#209cee}.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:#209cee}.button.is-info.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-info.is-outlined{background-color:transparent;border-color:#209cee;color:#209cee}.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:#209cee;border-color:#209cee;color:#fff}.button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #209cee #209cee!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:#209cee;box-shadow:none;color:#209cee}.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:#209cee}.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 #209cee #209cee!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-success{background-color:#23d160;border-color:transparent;color:#fff}.button.is-success.is-hovered,.button.is-success:hover{background-color:#22c65b;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(35,209,96,.25)}.button.is-success.is-active,.button.is-success:active{background-color:#20bc56;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#23d160;border-color:transparent;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#23d160}.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:#23d160}.button.is-success.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-success.is-outlined{background-color:transparent;border-color:#23d160;color:#23d160}.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:#23d160;border-color:#23d160;color:#fff}.button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #23d160 #23d160!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:#23d160;box-shadow:none;color:#23d160}.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:#23d160}.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 #23d160 #23d160!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-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-danger{background-color:#ff3860;border-color:transparent;color:#fff}.button.is-danger.is-hovered,.button.is-danger:hover{background-color:#ff2b56;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(255,56,96,.25)}.button.is-danger.is-active,.button.is-danger:active{background-color:#ff1f4b;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#ff3860;border-color:transparent;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#ff3860}.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:#ff3860}.button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-danger.is-outlined{background-color:transparent;border-color:#ff3860;color:#ff3860}.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:#ff3860;border-color:#ff3860;color:#fff}.button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #ff3860 #ff3860!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:#ff3860;box-shadow:none;color:#ff3860}.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:#ff3860}.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 #ff3860 #ff3860!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-small{border-radius:2px;font-size:.75rem}.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:1em;padding-right:1em}.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){border-radius:2px;font-size:.75rem}.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}@media screen and (min-width:1024px){.container{max-width:960px}.container.is-fluid{margin-left:32px;margin-right:32px;max-width:none}}@media screen and (max-width:1215px){.container.is-widescreen{max-width:1152px}}@media screen and (max-width:1407px){.container.is-fullhd{max-width:1344px}}@media screen and (min-width:1216px){.container{max-width:1152px}}@media screen and (min-width:1408px){.container{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:left}.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}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:290486px}.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;padding:1.25rem 2.5rem 1.25rem 1.5rem;position:relative}.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{position:absolute;right:.5rem;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:#363636}.notification.is-dark{background-color:#363636;color:#f5f5f5}.notification.is-primary{background-color:#00d1b2;color:#fff}.notification.is-link{background-color:#3273dc;color:#fff}.notification.is-info{background-color:#209cee;color:#fff}.notification.is-success{background-color:#23d160;color:#fff}.notification.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.notification.is-danger{background-color:#ff3860;color:#fff}.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:#dbdbdb}.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%,#dbdbdb 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%,#dbdbdb 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%,#dbdbdb 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%,#dbdbdb 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%,#dbdbdb 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%,#dbdbdb 30%)}.progress.is-info::-webkit-progress-value{background-color:#209cee}.progress.is-info::-moz-progress-bar{background-color:#209cee}.progress.is-info::-ms-fill{background-color:#209cee}.progress.is-info:indeterminate{background-image:linear-gradient(to right,#209cee 30%,#dbdbdb 30%)}.progress.is-success::-webkit-progress-value{background-color:#23d160}.progress.is-success::-moz-progress-bar{background-color:#23d160}.progress.is-success::-ms-fill{background-color:#23d160}.progress.is-success:indeterminate{background-image:linear-gradient(to right,#23d160 30%,#dbdbdb 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%,#dbdbdb 30%)}.progress.is-danger::-webkit-progress-value{background-color:#ff3860}.progress.is-danger::-moz-progress-bar{background-color:#ff3860}.progress.is-danger::-ms-fill{background-color:#ff3860}.progress.is-danger:indeterminate{background-image:linear-gradient(to right,#ff3860 30%,#dbdbdb 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:#dbdbdb;background-image:linear-gradient(to right,#4a4a4a 30%,#dbdbdb 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.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:#363636}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#f5f5f5}.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:#209cee;border-color:#209cee;color:#fff}.table td.is-success,.table th.is-success{background-color:#23d160;border-color:#23d160;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:#ff3860;border-color:#ff3860;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 th{color:#363636}.table th:not([align]){text-align:left}.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-bottom-left-radius:0;border-top-left-radius:0}.tags.has-addons .tag:not(:last-child){border-bottom-right-radius:0;border-top-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:#363636}.tag:not(body).is-dark{background-color:#363636;color:#f5f5f5}.tag:not(body).is-primary{background-color:#00d1b2;color:#fff}.tag:not(body).is-link{background-color:#3273dc;color:#fff}.tag:not(body).is-info{background-color:#209cee;color:#fff}.tag:not(body).is-success{background-color:#23d160;color:#fff}.tag:not(body).is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.tag:not(body).is-danger{background-color:#ff3860;color:#fff}.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%;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);-webkit-transform-origin:center center;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 1px 2px rgba(10,10,10,.1);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:#209cee}.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(32,156,238,.25)}.is-success.input,.is-success.textarea{border-color:#23d160}.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(35,209,96,.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:#ff3860}.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(255,56,96,.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:1em;padding-right:1em}.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:.625em;resize:vertical}.textarea:not([rows]){max-height:600px;min-height:120px}.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[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.25em}.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:#209cee}.select.is-info select{border-color:#209cee}.select.is-info select.is-hovered,.select.is-info select:hover{border-color:#118fe4}.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(32,156,238,.25)}.select.is-success:not(:hover)::after{border-color:#23d160}.select.is-success select{border-color:#23d160}.select.is-success select.is-hovered,.select.is-success select:hover{border-color:#20bc56}.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(35,209,96,.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:#ff3860}.select.is-danger select{border-color:#ff3860}.select.is-danger select.is-hovered,.select.is-danger select:hover{border-color:#ff1f4b}.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(255,56,96,.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;-webkit-transform:none;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:#363636}.file.is-light.is-hovered .file-cta,.file.is-light:hover .file-cta{background-color:#eee;border-color:transparent;color:#363636}.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:#363636}.file.is-light.is-active .file-cta,.file.is-light:active .file-cta{background-color:#e8e8e8;border-color:transparent;color:#363636}.file.is-dark .file-cta{background-color:#363636;border-color:transparent;color:#f5f5f5}.file.is-dark.is-hovered .file-cta,.file.is-dark:hover .file-cta{background-color:#2f2f2f;border-color:transparent;color:#f5f5f5}.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:#f5f5f5}.file.is-dark.is-active .file-cta,.file.is-dark:active .file-cta{background-color:#292929;border-color:transparent;color:#f5f5f5}.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:#209cee;border-color:transparent;color:#fff}.file.is-info.is-hovered .file-cta,.file.is-info:hover .file-cta{background-color:#1496ed;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(32,156,238,.25);color:#fff}.file.is-info.is-active .file-cta,.file.is-info:active .file-cta{background-color:#118fe4;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#23d160;border-color:transparent;color:#fff}.file.is-success.is-hovered .file-cta,.file.is-success:hover .file-cta{background-color:#22c65b;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(35,209,96,.25);color:#fff}.file.is-success.is-active .file-cta,.file.is-success:active .file-cta{background-color:#20bc56;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:#ff3860;border-color:transparent;color:#fff}.file.is-danger.is-hovered .file-cta,.file.is-danger:hover .file-cta{background-color:#ff2b56;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(255,56,96,.25);color:#fff}.file.is-danger.is-active .file-cta,.file.is-danger:active .file-cta{background-color:#ff1f4b;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:left;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:#209cee}.help.is-success{color:#23d160}.help.is-warning{color:#ffdd57}.help.is-danger{color:#ff3860}.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:left}.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:#7a7a7a}.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.25em;pointer-events:none;position:absolute;top:0;width:2.25em;z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:2.25em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right .select select{padding-right:2.25em}.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;box-shadow:0 2px 3px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);color:#4a4a4a;max-width:100%;position:relative}.card-header{background-color:transparent;align-items:stretch;box-shadow:0 1px 2px 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}.card-header-title.is-centered{justify-content:center}.card-header-icon{align-items:center;cursor:pointer;display:flex;justify-content:center;padding:.75rem}.card-image{display:block;position:relative}.card-content{background-color:transparent;padding:1.5rem}.card-footer{background-color:transparent;border-top:1px solid #dbdbdb;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 #dbdbdb}.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 2px 3px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);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:left;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:#dbdbdb;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}}.list{background-color:#fff;border-radius:4px;box-shadow:0 2px 3px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1)}.list-item{display:block;padding:.5em 1em}.list-item:not(a){color:#4a4a4a}.list-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-item:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}.list-item:not(:last-child){border-bottom:1px solid #dbdbdb}.list-item.is-active{background-color:#3273dc;color:#fff}a.list-item{background-color:#f5f5f5;cursor:pointer}.media{align-items:flex-start;display:flex;text-align:left}.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:left}@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;color:#4d4d4d}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a;color:#090909}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:#363636}.message.is-light .message-body{border-color:#f5f5f5;color:#505050}.message.is-dark{background-color:#fafafa}.message.is-dark .message-header{background-color:#363636;color:#f5f5f5}.message.is-dark .message-body{border-color:#363636;color:#2a2a2a}.message.is-primary{background-color:#f5fffd}.message.is-primary .message-header{background-color:#00d1b2;color:#fff}.message.is-primary .message-body{border-color:#00d1b2;color:#021310}.message.is-link{background-color:#f6f9fe}.message.is-link .message-header{background-color:#3273dc;color:#fff}.message.is-link .message-body{border-color:#3273dc;color:#22509a}.message.is-info{background-color:#f6fbfe}.message.is-info .message-header{background-color:#209cee;color:#fff}.message.is-info .message-body{border-color:#209cee;color:#12537e}.message.is-success{background-color:#f6fef9}.message.is-success .message-header{background-color:#23d160;color:#fff}.message.is-success .message-body{border-color:#23d160;color:#0e301a}.message.is-warning{background-color:#fffdf5}.message.is-warning .message-header{background-color:#ffdd57;color:rgba(0,0,0,.7)}.message.is-warning .message-body{border-color:#ffdd57;color:#3b3108}.message.is-danger{background-color:#fff5f7}.message.is-danger .message-header{background-color:#ff3860;color:#fff}.message.is-danger .message-body{border-color:#ff3860;color:#cd0930}.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),print{.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:#363636}.navbar.is-light .navbar-brand .navbar-link,.navbar.is-light .navbar-brand>.navbar-item{color:#363636}.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:#363636}.navbar.is-light .navbar-brand .navbar-link::after{border-color:#363636}.navbar.is-light .navbar-burger{color:#363636}@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:#363636}.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:#363636}.navbar.is-light .navbar-end .navbar-link::after,.navbar.is-light .navbar-start .navbar-link::after{border-color:#363636}.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:#363636}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#363636}}.navbar.is-dark{background-color:#363636;color:#f5f5f5}.navbar.is-dark .navbar-brand .navbar-link,.navbar.is-dark .navbar-brand>.navbar-item{color:#f5f5f5}.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:#f5f5f5}.navbar.is-dark .navbar-brand .navbar-link::after{border-color:#f5f5f5}.navbar.is-dark .navbar-burger{color:#f5f5f5}@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:#f5f5f5}.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:#f5f5f5}.navbar.is-dark .navbar-end .navbar-link::after,.navbar.is-dark .navbar-start .navbar-link::after{border-color:#f5f5f5}.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:#f5f5f5}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#f5f5f5}}.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:#209cee;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:#118fe4;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:#118fe4;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:#118fe4;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#209cee;color:#fff}}.navbar.is-success{background-color:#23d160;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:#20bc56;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:#20bc56;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:#20bc56;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#23d160;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:#ff3860;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:#ff1f4b;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:#ff1f4b;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:#ff1f4b;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#ff3860;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;-webkit-transform-origin:center;transform-origin:center;transition-duration:86ms;transition-property:background-color,opacity,-webkit-transform;transition-property:background-color,opacity,transform;transition-property:background-color,opacity,transform,-webkit-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){-webkit-transform:translateY(5px) rotate(45deg);transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){-webkit-transform:translateY(-5px) rotate(-45deg);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{display:block;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{display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{-webkit-transform:rotate(135deg) translate(.25em,-.25em);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;-webkit-transform:translateY(0);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));-webkit-transform:translateY(-5px);transform:translateY(-5px);transition-duration:86ms;transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-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.25em}.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}@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{font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel-block,.panel-heading,.panel-tabs{border-bottom:1px solid #dbdbdb;border-left:1px solid #dbdbdb;border-right:1px solid #dbdbdb}.panel-block:first-child,.panel-heading:first-child,.panel-tabs:first-child{border-top:1px solid #dbdbdb}.panel-heading{background-color:#f5f5f5;border-radius:4px 4px 0 0;color:#363636;font-size:1.25em;font-weight:300;line-height:1.25;padding:.5em .75em}.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}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-radius:4px 0 0 4px}.tabs.is-toggle li:last-child a{border-radius:0 4px 4px 0}.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}.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}.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}.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}.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}.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}.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}.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%}}.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:#363636}.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:#363636}.hero.is-light .subtitle{color:rgba(54,54,54,.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:#363636}@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(54,54,54,.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:#363636}.hero.is-light .tabs a{color:#363636;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:#363636}.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:#363636;border-color:#363636;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:#f5f5f5}.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:#f5f5f5}.hero.is-dark .subtitle{color:rgba(245,245,245,.9)}.hero.is-dark .subtitle a:not(.button),.hero.is-dark .subtitle strong{color:#f5f5f5}@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(245,245,245,.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:#f5f5f5}.hero.is-dark .tabs a{color:#f5f5f5;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:#f5f5f5}.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:#f5f5f5;border-color:#f5f5f5;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:#209cee;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:#209cee}}.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:#118fe4;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:#209cee}.hero.is-info.is-bold{background-image:linear-gradient(141deg,#04a6d7 0,#209cee 71%,#3287f5 100%)}@media screen and (max-width:768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg,#04a6d7 0,#209cee 71%,#3287f5 100%)}}.hero.is-success{background-color:#23d160;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:#23d160}}.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:#20bc56;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:#23d160}.hero.is-success.is-bold{background-image:linear-gradient(141deg,#12af2f 0,#23d160 71%,#2ce28a 100%)}@media screen and (max-width:768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg,#12af2f 0,#23d160 71%,#2ce28a 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:#ff3860;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:#ff3860}}.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:#ff1f4b;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:#ff3860}.hero.is-danger.is-bold{background-image:linear-gradient(141deg,#ff0561 0,#ff3860 71%,#ff5257 100%)}@media screen and (max-width:768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg,#ff0561 0,#ff3860 71%,#ff5257 100%)}}.hero.is-small .hero-body{padding-bottom:1.5rem;padding-top:1.5rem}@media screen and (min-width:769px),print{.hero.is-medium .hero-body{padding-bottom:9rem;padding-top:9rem}}@media screen and (min-width:769px),print{.hero.is-large .hero-body{padding-bottom:18rem;padding-top:18rem}}.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%;-webkit-transform:translate3d(-50%,-50%,0);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/static-data/www/shared/main/themes/styles-dark.css b/static-data/www/shared/main/themes/styles-dark.css deleted file mode 100644 index ccf1b672..00000000 --- a/static-data/www/shared/main/themes/styles-dark.css +++ /dev/null @@ -1,73 +0,0 @@ -html { - background-color: #f5f5f5; -} - - -/* Config on homepage */ -#configContent{ - display:none; - } -#configContent.show{ - display:block; /* P.S: Use `!important` if missing `#content` (selector specificity). */ - } - -.hiddenOverlay { - visibility: hidden; - position: absolute; - left: 0px; - top: 0px; - width:100%; - height:100%; -} - - -/* https://stackoverflow.com/a/16778646/ -* Kept due to shutdown message on homepage -*/ -.overlay { - visibility: hidden; - position: absolute; - left: 0px; - top: 0px; - width:100%; - height:100%; - text-align:left; - z-index: 1000; - background-color: #2c2b3f; - color: white; - } - - .closeOverlay{ - background-color: white; - color: black; - border: 1px solid red; - border-radius: 5px; - float: right; - font-family: sans-serif; - } - .closeOverlay:after{ - content: '❌'; - padding: 5px; - } - - .navbarLogo{ - margin-right: 5px; - color: red; -} - -.aboutLogo{ - max-width: 25%; - margin-bottom: 1em; -} -html{ - background-color: #212224; - color: white; -} -.textarea, .input{ - background-color: #1E1E1E; - color: white; -} - -.textarea::placeholder, .input::placeholder{ - color: white; -} \ No newline at end of file diff --git a/static-data/www/shared/main/themes/styles-light.css b/static-data/www/shared/main/themes/styles-light.css deleted file mode 100644 index 4b42263c..00000000 --- a/static-data/www/shared/main/themes/styles-light.css +++ /dev/null @@ -1,57 +0,0 @@ - -/* Config on homepage */ -#configContent{ - display:none; - } -#configContent.show{ - display:block; /* P.S: Use `!important` if missing `#content` (selector specificity). */ - } - -.hiddenOverlay { - visibility: hidden; - position: absolute; - left: 0px; - top: 0px; - width:100%; - height:100%; -} - - -/* https://stackoverflow.com/a/16778646/ -* Kept due to shutdown message on homepage -*/ -.overlay { - visibility: hidden; - position: absolute; - left: 0px; - top: 0px; - width:100%; - height:100%; - text-align:left; - z-index: 1000; - background-color: #2c2b3f; - color: white; - } - - .closeOverlay{ - background-color: white; - color: black; - border: 1px solid red; - border-radius: 5px; - float: right; - font-family: sans-serif; - } - .closeOverlay:after{ - content: '❌'; - padding: 5px; - } - - .navbarLogo{ - margin-right: 5px; - color: red; -} - -.aboutLogo{ - max-width: 25%; - margin-bottom: 1em; -} diff --git a/static-data/www/shared/main/torstats.js b/static-data/www/shared/main/torstats.js deleted file mode 100644 index 78059cfa..00000000 --- a/static-data/www/shared/main/torstats.js +++ /dev/null @@ -1,58 +0,0 @@ -/* - Onionr - Private P2P Communication - - Get and show tor statistics - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see -*/ -fetch('/config/get/transports.tor', { - headers: { - "token": webpass - }}) - .then((resp) => resp.text()) // Transform the data into text - .then(function(resp) { - var displays = document.getElementsByClassName('torInfo') - if (resp == "true"){ - var torSource = new EventSourcePolyfill('/torcircuits', { - headers: { - "token": webpass - } - }) - displays = document.getElementsByClassName('torInfo') - - for (x = 0; x < displays.length; x++){ - displays[x].style.whiteSpace = 'pre' - } - - torSource.onmessage = function(e){ - let data = JSON.parse(e.data) - let i = 0 - for (x = 0; x < displays.length; x++){ - let circuitCount = Object.keys(data).length - let node = Object.keys(data)[0] - if (circuitCount > 0){ - displays[x].innerText = "Using " + circuitCount + " Tor circuits with " + data[node]['nodes'][0]['finger'] + " as guard.\nGuard nick: " + data[node]['nodes'][0]['nick'] - } - else{ - displays[x].innerText = "Using 0 Tor circuits." - } - - } - } - } - else{ - console.debug("No tor enabled, not getting tor stats") - displays[0].innerHTML = " Tor is disabled" - } -}) diff --git a/static-data/www/shared/misc.js b/static-data/www/shared/misc.js deleted file mode 100755 index b3e6038b..00000000 --- a/static-data/www/shared/misc.js +++ /dev/null @@ -1,168 +0,0 @@ -/* - Onionr - Private P2P Communication - - This file handles the mail interface - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -webpass = document.location.hash.replace('#', '') -nowebpass = false -myPub = "" - -fetch('/getHumanReadable', { - headers: { - "token": webpass - }}) -.then((resp) => resp.text()) -.then(function(resp) { - myPub = resp -}) - -function post_to_url(path, params) { - - var form = document.createElement("form") - - form.setAttribute("method", "POST") - form.setAttribute("action", path) - - for(var key in params) { - var hiddenField = document.createElement("input") - hiddenField.setAttribute("type", "hidden") - hiddenField.setAttribute("name", key) - hiddenField.setAttribute("value", params[key]) - form.appendChild(hiddenField) - } - - document.body.appendChild(form) - form.submit() -} - -if (typeof webpass == "undefined"){ - webpass = localStorage['webpass'] -} -else{ - localStorage['webpass'] = webpass - //document.location.hash = '' -} -if (typeof webpass == "undefined" || webpass == ""){ - alert('Web password was not found in memory or URL') - nowebpass = true -} - -function arrayContains(needle, arrhaystack) { - return (arrhaystack.indexOf(needle) > -1); -} - - -function overlay(overlayID) { - el = document.getElementById(overlayID) - el.style.visibility = (el.style.visibility == "visible") ? "hidden" : "visible" - scroll(0,0) - } - -var passLinks = document.getElementsByClassName("idLink") - for(var i = 0; i < passLinks.length; i++) { - passLinks[i].href += '#' + webpass - } - -var refreshLinks = document.getElementsByClassName("refresh") - -for(var i = 0; i < refreshLinks.length; i++) { - //Can't use .reload because of webpass - refreshLinks[i].onclick = function(){ - location.reload() - } -} - -for (var i = 0; i < document.getElementsByClassName('closeOverlay').length; i++){ - document.getElementsByClassName('closeOverlay')[i].onclick = function(e){ - document.getElementById(e.target.getAttribute('overlay')).style.visibility = 'hidden' - } -} - -function setIdStrings(){ - if (myPub === ""){ - setTimeout(function(){setIdStrings()}, 700) - return - } - var idStrings = document.getElementsByClassName('myPub') - for (var i = 0; i < idStrings.length; i++){ - if (idStrings[i].tagName.toLowerCase() == 'input'){ - idStrings[i].value = myPub - } - else{ - idStrings[i].innerText = myPub - } - } -} -setIdStrings() - -/* Copy public ID on homepage */ -if (typeof myPubCopy != "undefined"){ - - myPubCopy.onclick = function() { - var copyText = document.getElementById("myPub"); - copyText.select() - document.execCommand("copy") - if (typeof PNotify != 'undefined'){ - PNotify.success({ - text: "Copied to clipboard" - }) - } - console.log("copied pubkey to clipboard") - } -} - -/* For Config toggle on homepage */ -var toggle = document.getElementById("configToggle") -var content = document.getElementById("configContent") - -if(typeof toggle !== 'undefined' && toggle !== null) { - toggle.addEventListener("click", function() { - content.classList.toggle("show"); - }) -} - -var aboutBtns = document.getElementsByClassName('aboutLink') -var aboutModals = document.getElementsByClassName('aboutModal') -var aboutCloseBtns = document.getElementsByClassName('closeAboutModal') - -var aboutText = '' - -setAbout = function(){ - if (aboutText === ''){ - setTimeout(function(){setAbout()}, 100) - return - } - let aboutBody = document.getElementsByClassName('aboutBody') - for (i = 0; i < aboutBody.length; i++){ - aboutBody[i].innerHTML = aboutText - } -} - -for (x = 0; x < aboutBtns.length; x++){ - aboutBtns[x].onclick = function(){ - for (i = 0; i < aboutModals.length; i++){ - aboutModals[i].classList.add('is-active') - } - } -} -for (i = 0; i < aboutCloseBtns.length; i++){ - aboutCloseBtns[i].onclick = function(e){ - e.target.parentElement.parentElement.parentElement.classList.remove('is-active') - } -} - -setAbout() \ No newline at end of file diff --git a/static-data/www/shared/navbar.js b/static-data/www/shared/navbar.js deleted file mode 100644 index 1b65b8b6..00000000 --- a/static-data/www/shared/navbar.js +++ /dev/null @@ -1,100 +0,0 @@ -/* - Onionr - Private P2P Communication - - This file handles the navbar layout and folding - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -let navbarLinks = document.querySelectorAll('.navbar-start .navbar-item') - -let deleteNavbar = function(){ - fetch('/config/get/plugins.disabled', { - headers: { - "token": webpass - }}) - .then((resp) => resp.json()) - .then(function(disabled) { - - if (disabled.length > 0){ - - for (x=0; x < navbarLinks.length; x++){ - if (disabled.includes('pms')){ - if (navbarLinks[x].innerText == 'Mail'){ - navbarLinks[x].style.display = 'none' - } - } - if (disabled.includes('circles')){ - if (navbarLinks[x].innerText == 'Circles'){ - navbarLinks[x].style.display = 'none' - } - } - - } - }}) - -} -deleteNavbar() - - -document.addEventListener('DOMContentLoaded', () => { - // This function taken from the official bulma docs - /* - The MIT License (MIT) - - Copyright (c) 2019 Jeremy Thomas - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - - // Get all "navbar-burger" elements - const $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0) - - // Check if there are any navbar burgers - if ($navbarBurgers.length > 0) { - - // Add a click event on each of them - $navbarBurgers.forEach( el => { - el.addEventListener('click', () => { - - // Get the target from the "data-target" attribute - const target = el.dataset.target; - const $target = document.getElementById(target); - - // Toggle the "is-active" class on both the "navbar-burger" and the "navbar-menu" - el.classList.toggle('is-active'); - $target.classList.toggle('is-active'); - - }); - }); - } - - }); - diff --git a/static-data/www/shared/node_modules/bulma-switch/CHANGELOG.md b/static-data/www/shared/node_modules/bulma-switch/CHANGELOG.md deleted file mode 100644 index b706bcde..00000000 --- a/static-data/www/shared/node_modules/bulma-switch/CHANGELOG.md +++ /dev/null @@ -1,116 +0,0 @@ - -## [1.0.2](https://github.com/Wikiki/bulma-switch/compare/1.0.1...1.0.2) (2018-05-12) - - -### Bug Fixes - -* [#16](https://github.com/Wikiki/bulma-switch/issues/16) : add visual feedback for :focus ([000fc55](https://github.com/Wikiki/bulma-switch/commit/000fc55)) - - - - -## [1.0.1](https://github.com/Wikiki/bulma-switch/compare/1.0.0...1.0.1) (2018-02-11) - - -### Bug Fixes - -* **gulp:** Remove Bulma’s important from dist’sass ([a0794dc](https://github.com/Wikiki/bulma-switch/commit/a0794dc)) - - - - -# [1.0.0](https://github.com/Wikiki/bulma-switch/compare/0.1.12...1.0.0) (2018-02-10) - - - - -## [0.1.12](https://github.com/Wikiki/bulma-switch/compare/0.1.11...0.1.12) (2018-02-10) - - - - -## [0.1.11](https://github.com/Wikiki/bulma-switch/compare/0.1.10...0.1.11) (2018-02-10) - - -### Bug Fixes - -* **gulp:** Use UMD modules style ([f9d1597](https://github.com/Wikiki/bulma-switch/commit/f9d1597)) - - - - -## [0.1.10](https://github.com/Wikiki/bulma-switch/compare/0.1.9...0.1.10) (2018-02-10) - - -### Bug Fixes - -* **gulp:** Correct dist filenames ([9ba0e1b](https://github.com/Wikiki/bulma-switch/commit/9ba0e1b)) - - - - -## [0.1.9](https://github.com/Wikiki/bulma-switch/compare/0.1.8...0.1.9) (2018-02-09) - - - - -## [0.1.8](https://github.com/Wikiki/bulma-switch/compare/0.1.7...0.1.8) (2018-02-09) - - - - -## [0.1.7](https://github.com/Wikiki/bulma-switch/compare/0.1.6...0.1.7) (2018-02-09) - - - - -## [0.1.6](https://github.com/Wikiki/bulma-switch/compare/0.1.2...0.1.6) (2018-02-09) - - -### Bug Fixes - -* **bower:** Add missing version ([c860841](https://github.com/Wikiki/bulma-switch/commit/c860841)) - - -### Features - -* **gulp:** Add gulp dependencies ([4155c63](https://github.com/Wikiki/bulma-switch/commit/4155c63)) -* **gulp:** Add release task ([24451c6](https://github.com/Wikiki/bulma-switch/commit/24451c6)) - - - -# Change Log - -## [Unreleased](https://github.com/wikiki/bulma-switch/tree/HEAD) - -[Full Changelog](https://github.com/wikiki/bulma-switch/compare/0.1.2...HEAD) - -**Merged pull requests:** - -- TravisBuddy Integration [\#10](https://github.com/Wikiki/bulma-switch/pull/10) ([TravisBuddy](https://github.com/TravisBuddy)) - -## [0.1.2](https://github.com/wikiki/bulma-switch/tree/0.1.2) (2017-11-30) -**Implemented enhancements:** - -- Indentation 2 levels deeper causes sass compile error [\#6](https://github.com/Wikiki/bulma-switch/issues/6) - -**Fixed bugs:** - -- Weird bug [\#8](https://github.com/Wikiki/bulma-switch/issues/8) -- Indentation 2 levels deeper causes sass compile error [\#6](https://github.com/Wikiki/bulma-switch/issues/6) - -**Closed issues:** - -- Make package include the compiled CSS [\#9](https://github.com/Wikiki/bulma-switch/issues/9) -- input checkbox absolute position not always correct [\#4](https://github.com/Wikiki/bulma-switch/issues/4) -- About import bulma-switch into angular project [\#3](https://github.com/Wikiki/bulma-switch/issues/3) -- Make label optional [\#2](https://github.com/Wikiki/bulma-switch/issues/2) - -**Merged pull requests:** - -- Allow for keyboard interaction with the checkbox and add state styles [\#7](https://github.com/Wikiki/bulma-switch/pull/7) ([jmfederico](https://github.com/jmfederico)) -- Add color modifier for the unchecked state [\#5](https://github.com/Wikiki/bulma-switch/pull/5) ([madmatah](https://github.com/madmatah)) - - - -\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* \ No newline at end of file diff --git a/static-data/www/shared/node_modules/bulma-switch/LICENSE b/static-data/www/shared/node_modules/bulma-switch/LICENSE deleted file mode 100644 index 917b28ac..00000000 --- a/static-data/www/shared/node_modules/bulma-switch/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 Wikiki - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/static-data/www/shared/node_modules/bulma-switch/README.md b/static-data/www/shared/node_modules/bulma-switch/README.md deleted file mode 100644 index f0ed8330..00000000 --- a/static-data/www/shared/node_modules/bulma-switch/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# bulma-switch -Bulma's extension to display checkbox as a toggle button -(find all my bulma's extensions [here](https://wikiki.github.io/)) - -[![npm](https://img.shields.io/npm/v/bulma-switch.svg)](https://www.npmjs.com/package/bulma-switch) -[![npm](https://img.shields.io/npm/dm/bulma-switch.svg)](https://www.npmjs.com/package/bulma-switch) -[![Build Status](https://travis-ci.org/Wikiki/bulma-switch.svg?branch=master)](https://travis-ci.org/Wikiki/bulma-switch) - -![Switch example](switch-example.png) - -Documentation & Demo ---- -You can find the Documentation and a demo [here](https://wikiki.github.io/form/switch/) diff --git a/static-data/www/shared/node_modules/bulma-switch/dist/css/bulma-switch.min.css b/static-data/www/shared/node_modules/bulma-switch/dist/css/bulma-switch.min.css deleted file mode 100644 index ab18a3ef..00000000 --- a/static-data/www/shared/node_modules/bulma-switch/dist/css/bulma-switch.min.css +++ /dev/null @@ -1 +0,0 @@ -@-webkit-keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.switch[type=checkbox]{outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-block;position:absolute;opacity:0}.switch[type=checkbox]:focus+label::after,.switch[type=checkbox]:focus+label::before,.switch[type=checkbox]:focus+label:after,.switch[type=checkbox]:focus+label:before{outline:1px dotted #b5b5b5}.switch[type=checkbox][disabled]{cursor:not-allowed}.switch[type=checkbox][disabled]+label{opacity:.5}.switch[type=checkbox][disabled]+label::before,.switch[type=checkbox][disabled]+label:before{opacity:.5}.switch[type=checkbox][disabled]+label::after,.switch[type=checkbox][disabled]+label:after{opacity:.5}.switch[type=checkbox][disabled]+label:hover{cursor:not-allowed}.switch[type=checkbox]+label{position:relative;display:initial;font-size:1rem;line-height:initial;padding-left:3.5rem;padding-top:.2rem;cursor:pointer}.switch[type=checkbox]+label::before,.switch[type=checkbox]+label:before{position:absolute;display:block;top:0;left:0;width:3rem;height:1.5rem;border:.1rem solid transparent;border-radius:4px;background:#b5b5b5;content:''}.switch[type=checkbox]+label::after,.switch[type=checkbox]+label:after{display:block;position:absolute;top:.25rem;left:.25rem;width:1rem;height:1rem;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);border-radius:4px;background:#fff;transition:all .25s ease-out;content:''}.switch[type=checkbox].is-rtl+label{padding-left:0;padding-right:3.5rem}.switch[type=checkbox].is-rtl+label::before,.switch[type=checkbox].is-rtl+label:before{left:auto;right:0}.switch[type=checkbox].is-rtl+label::after,.switch[type=checkbox].is-rtl+label:after{left:auto;right:.25rem}.switch[type=checkbox]:checked+label::before,.switch[type=checkbox]:checked+label:before{background:#00d1b2}.switch[type=checkbox]:checked+label::after{left:1.625rem}.switch[type=checkbox]:checked.is-rtl+label::after,.switch[type=checkbox]:checked.is-rtl+label:after{left:auto;right:1.625rem}.switch[type=checkbox].is-outlined+label::before,.switch[type=checkbox].is-outlined+label:before{background-color:transparent;border-color:#b5b5b5}.switch[type=checkbox].is-outlined+label::after,.switch[type=checkbox].is-outlined+label:after{background:#b5b5b5}.switch[type=checkbox].is-outlined:checked+label::before,.switch[type=checkbox].is-outlined:checked+label:before{background-color:transparent;border-color:#00d1b2}.switch[type=checkbox].is-outlined:checked+label::after,.switch[type=checkbox].is-outlined:checked+label:after{background:#00d1b2}.switch[type=checkbox].is-thin+label::before,.switch[type=checkbox].is-thin+label:before{top:.54545rem;height:.375rem}.switch[type=checkbox].is-thin+label::after,.switch[type=checkbox].is-thin+label:after{box-shadow:0 0 3px #7a7a7a}.switch[type=checkbox].is-rounded+label::before,.switch[type=checkbox].is-rounded+label:before{border-radius:24px}.switch[type=checkbox].is-rounded+label::after,.switch[type=checkbox].is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-small+label{position:relative;display:initial;font-size:.75rem;line-height:initial;padding-left:2.75rem;padding-top:.2rem;cursor:pointer}.switch[type=checkbox].is-small+label::before,.switch[type=checkbox].is-small+label:before{position:absolute;display:block;top:0;left:0;width:2.25rem;height:1.125rem;border:.1rem solid transparent;border-radius:4px;background:#b5b5b5;content:''}.switch[type=checkbox].is-small+label::after,.switch[type=checkbox].is-small+label:after{display:block;position:absolute;top:.25rem;left:.25rem;width:.625rem;height:.625rem;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);border-radius:4px;background:#fff;transition:all .25s ease-out;content:''}.switch[type=checkbox].is-small.is-rtl+label{padding-left:0;padding-right:2.75rem}.switch[type=checkbox].is-small.is-rtl+label::before,.switch[type=checkbox].is-small.is-rtl+label:before{left:auto;right:0}.switch[type=checkbox].is-small.is-rtl+label::after,.switch[type=checkbox].is-small.is-rtl+label:after{left:auto;right:.25rem}.switch[type=checkbox].is-small:checked+label::before,.switch[type=checkbox].is-small:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-small:checked+label::after{left:1.25rem}.switch[type=checkbox].is-small:checked.is-rtl+label::after,.switch[type=checkbox].is-small:checked.is-rtl+label:after{left:auto;right:1.25rem}.switch[type=checkbox].is-small.is-outlined+label::before,.switch[type=checkbox].is-small.is-outlined+label:before{background-color:transparent;border-color:#b5b5b5}.switch[type=checkbox].is-small.is-outlined+label::after,.switch[type=checkbox].is-small.is-outlined+label:after{background:#b5b5b5}.switch[type=checkbox].is-small.is-outlined:checked+label::before,.switch[type=checkbox].is-small.is-outlined:checked+label:before{background-color:transparent;border-color:#00d1b2}.switch[type=checkbox].is-small.is-outlined:checked+label::after,.switch[type=checkbox].is-small.is-outlined:checked+label:after{background:#00d1b2}.switch[type=checkbox].is-small.is-thin+label::before,.switch[type=checkbox].is-small.is-thin+label:before{top:.40909rem;height:.28125rem}.switch[type=checkbox].is-small.is-thin+label::after,.switch[type=checkbox].is-small.is-thin+label:after{box-shadow:0 0 3px #7a7a7a}.switch[type=checkbox].is-small.is-rounded+label::before,.switch[type=checkbox].is-small.is-rounded+label:before{border-radius:24px}.switch[type=checkbox].is-small.is-rounded+label::after,.switch[type=checkbox].is-small.is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-medium+label{position:relative;display:initial;font-size:1.25rem;line-height:initial;padding-left:4.25rem;padding-top:.2rem;cursor:pointer}.switch[type=checkbox].is-medium+label::before,.switch[type=checkbox].is-medium+label:before{position:absolute;display:block;top:0;left:0;width:3.75rem;height:1.875rem;border:.1rem solid transparent;border-radius:4px;background:#b5b5b5;content:''}.switch[type=checkbox].is-medium+label::after,.switch[type=checkbox].is-medium+label:after{display:block;position:absolute;top:.25rem;left:.25rem;width:1.375rem;height:1.375rem;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);border-radius:4px;background:#fff;transition:all .25s ease-out;content:''}.switch[type=checkbox].is-medium.is-rtl+label{padding-left:0;padding-right:4.25rem}.switch[type=checkbox].is-medium.is-rtl+label::before,.switch[type=checkbox].is-medium.is-rtl+label:before{left:auto;right:0}.switch[type=checkbox].is-medium.is-rtl+label::after,.switch[type=checkbox].is-medium.is-rtl+label:after{left:auto;right:.25rem}.switch[type=checkbox].is-medium:checked+label::before,.switch[type=checkbox].is-medium:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-medium:checked+label::after{left:2rem}.switch[type=checkbox].is-medium:checked.is-rtl+label::after,.switch[type=checkbox].is-medium:checked.is-rtl+label:after{left:auto;right:2rem}.switch[type=checkbox].is-medium.is-outlined+label::before,.switch[type=checkbox].is-medium.is-outlined+label:before{background-color:transparent;border-color:#b5b5b5}.switch[type=checkbox].is-medium.is-outlined+label::after,.switch[type=checkbox].is-medium.is-outlined+label:after{background:#b5b5b5}.switch[type=checkbox].is-medium.is-outlined:checked+label::before,.switch[type=checkbox].is-medium.is-outlined:checked+label:before{background-color:transparent;border-color:#00d1b2}.switch[type=checkbox].is-medium.is-outlined:checked+label::after,.switch[type=checkbox].is-medium.is-outlined:checked+label:after{background:#00d1b2}.switch[type=checkbox].is-medium.is-thin+label::before,.switch[type=checkbox].is-medium.is-thin+label:before{top:.68182rem;height:.46875rem}.switch[type=checkbox].is-medium.is-thin+label::after,.switch[type=checkbox].is-medium.is-thin+label:after{box-shadow:0 0 3px #7a7a7a}.switch[type=checkbox].is-medium.is-rounded+label::before,.switch[type=checkbox].is-medium.is-rounded+label:before{border-radius:24px}.switch[type=checkbox].is-medium.is-rounded+label::after,.switch[type=checkbox].is-medium.is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-large+label{position:relative;display:initial;font-size:1.5rem;line-height:initial;padding-left:5rem;padding-top:.2rem;cursor:pointer}.switch[type=checkbox].is-large+label::before,.switch[type=checkbox].is-large+label:before{position:absolute;display:block;top:0;left:0;width:4.5rem;height:2.25rem;border:.1rem solid transparent;border-radius:4px;background:#b5b5b5;content:''}.switch[type=checkbox].is-large+label::after,.switch[type=checkbox].is-large+label:after{display:block;position:absolute;top:.25rem;left:.25rem;width:1.75rem;height:1.75rem;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);border-radius:4px;background:#fff;transition:all .25s ease-out;content:''}.switch[type=checkbox].is-large.is-rtl+label{padding-left:0;padding-right:5rem}.switch[type=checkbox].is-large.is-rtl+label::before,.switch[type=checkbox].is-large.is-rtl+label:before{left:auto;right:0}.switch[type=checkbox].is-large.is-rtl+label::after,.switch[type=checkbox].is-large.is-rtl+label:after{left:auto;right:.25rem}.switch[type=checkbox].is-large:checked+label::before,.switch[type=checkbox].is-large:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-large:checked+label::after{left:2.375rem}.switch[type=checkbox].is-large:checked.is-rtl+label::after,.switch[type=checkbox].is-large:checked.is-rtl+label:after{left:auto;right:2.375rem}.switch[type=checkbox].is-large.is-outlined+label::before,.switch[type=checkbox].is-large.is-outlined+label:before{background-color:transparent;border-color:#b5b5b5}.switch[type=checkbox].is-large.is-outlined+label::after,.switch[type=checkbox].is-large.is-outlined+label:after{background:#b5b5b5}.switch[type=checkbox].is-large.is-outlined:checked+label::before,.switch[type=checkbox].is-large.is-outlined:checked+label:before{background-color:transparent;border-color:#00d1b2}.switch[type=checkbox].is-large.is-outlined:checked+label::after,.switch[type=checkbox].is-large.is-outlined:checked+label:after{background:#00d1b2}.switch[type=checkbox].is-large.is-thin+label::before,.switch[type=checkbox].is-large.is-thin+label:before{top:.81818rem;height:.5625rem}.switch[type=checkbox].is-large.is-thin+label::after,.switch[type=checkbox].is-large.is-thin+label:after{box-shadow:0 0 3px #7a7a7a}.switch[type=checkbox].is-large.is-rounded+label::before,.switch[type=checkbox].is-large.is-rounded+label:before{border-radius:24px}.switch[type=checkbox].is-large.is-rounded+label::after,.switch[type=checkbox].is-large.is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-white:checked+label::before,.switch[type=checkbox].is-white:checked+label:before{background:#fff}.switch[type=checkbox].is-white.is-outlined:checked+label::before,.switch[type=checkbox].is-white.is-outlined:checked+label:before{background-color:transparent;border-color:#fff!important}.switch[type=checkbox].is-white.is-outlined:checked+label::after,.switch[type=checkbox].is-white.is-outlined:checked+label:after{background:#fff}.switch[type=checkbox].is-white.is-thin.is-outlined+label::after,.switch[type=checkbox].is-white.is-thin.is-outlined+label:after{box-shadow:none}.switch[type=checkbox].is-unchecked-white+label::before,.switch[type=checkbox].is-unchecked-white+label:before{background:#fff}.switch[type=checkbox].is-unchecked-white.is-outlined+label::before,.switch[type=checkbox].is-unchecked-white.is-outlined+label:before{background-color:transparent;border-color:#fff!important}.switch[type=checkbox].is-unchecked-white.is-outlined+label::after,.switch[type=checkbox].is-unchecked-white.is-outlined+label:after{background:#fff}.switch[type=checkbox].is-black:checked+label::before,.switch[type=checkbox].is-black:checked+label:before{background:#0a0a0a}.switch[type=checkbox].is-black.is-outlined:checked+label::before,.switch[type=checkbox].is-black.is-outlined:checked+label:before{background-color:transparent;border-color:#0a0a0a!important}.switch[type=checkbox].is-black.is-outlined:checked+label::after,.switch[type=checkbox].is-black.is-outlined:checked+label:after{background:#0a0a0a}.switch[type=checkbox].is-black.is-thin.is-outlined+label::after,.switch[type=checkbox].is-black.is-thin.is-outlined+label:after{box-shadow:none}.switch[type=checkbox].is-unchecked-black+label::before,.switch[type=checkbox].is-unchecked-black+label:before{background:#0a0a0a}.switch[type=checkbox].is-unchecked-black.is-outlined+label::before,.switch[type=checkbox].is-unchecked-black.is-outlined+label:before{background-color:transparent;border-color:#0a0a0a!important}.switch[type=checkbox].is-unchecked-black.is-outlined+label::after,.switch[type=checkbox].is-unchecked-black.is-outlined+label:after{background:#0a0a0a}.switch[type=checkbox].is-light:checked+label::before,.switch[type=checkbox].is-light:checked+label:before{background:#f5f5f5}.switch[type=checkbox].is-light.is-outlined:checked+label::before,.switch[type=checkbox].is-light.is-outlined:checked+label:before{background-color:transparent;border-color:#f5f5f5!important}.switch[type=checkbox].is-light.is-outlined:checked+label::after,.switch[type=checkbox].is-light.is-outlined:checked+label:after{background:#f5f5f5}.switch[type=checkbox].is-light.is-thin.is-outlined+label::after,.switch[type=checkbox].is-light.is-thin.is-outlined+label:after{box-shadow:none}.switch[type=checkbox].is-unchecked-light+label::before,.switch[type=checkbox].is-unchecked-light+label:before{background:#f5f5f5}.switch[type=checkbox].is-unchecked-light.is-outlined+label::before,.switch[type=checkbox].is-unchecked-light.is-outlined+label:before{background-color:transparent;border-color:#f5f5f5!important}.switch[type=checkbox].is-unchecked-light.is-outlined+label::after,.switch[type=checkbox].is-unchecked-light.is-outlined+label:after{background:#f5f5f5}.switch[type=checkbox].is-dark:checked+label::before,.switch[type=checkbox].is-dark:checked+label:before{background:#363636}.switch[type=checkbox].is-dark.is-outlined:checked+label::before,.switch[type=checkbox].is-dark.is-outlined:checked+label:before{background-color:transparent;border-color:#363636!important}.switch[type=checkbox].is-dark.is-outlined:checked+label::after,.switch[type=checkbox].is-dark.is-outlined:checked+label:after{background:#363636}.switch[type=checkbox].is-dark.is-thin.is-outlined+label::after,.switch[type=checkbox].is-dark.is-thin.is-outlined+label:after{box-shadow:none}.switch[type=checkbox].is-unchecked-dark+label::before,.switch[type=checkbox].is-unchecked-dark+label:before{background:#363636}.switch[type=checkbox].is-unchecked-dark.is-outlined+label::before,.switch[type=checkbox].is-unchecked-dark.is-outlined+label:before{background-color:transparent;border-color:#363636!important}.switch[type=checkbox].is-unchecked-dark.is-outlined+label::after,.switch[type=checkbox].is-unchecked-dark.is-outlined+label:after{background:#363636}.switch[type=checkbox].is-primary:checked+label::before,.switch[type=checkbox].is-primary:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-primary.is-outlined:checked+label::before,.switch[type=checkbox].is-primary.is-outlined:checked+label:before{background-color:transparent;border-color:#00d1b2!important}.switch[type=checkbox].is-primary.is-outlined:checked+label::after,.switch[type=checkbox].is-primary.is-outlined:checked+label:after{background:#00d1b2}.switch[type=checkbox].is-primary.is-thin.is-outlined+label::after,.switch[type=checkbox].is-primary.is-thin.is-outlined+label:after{box-shadow:none}.switch[type=checkbox].is-unchecked-primary+label::before,.switch[type=checkbox].is-unchecked-primary+label:before{background:#00d1b2}.switch[type=checkbox].is-unchecked-primary.is-outlined+label::before,.switch[type=checkbox].is-unchecked-primary.is-outlined+label:before{background-color:transparent;border-color:#00d1b2!important}.switch[type=checkbox].is-unchecked-primary.is-outlined+label::after,.switch[type=checkbox].is-unchecked-primary.is-outlined+label:after{background:#00d1b2}.switch[type=checkbox].is-link:checked+label::before,.switch[type=checkbox].is-link:checked+label:before{background:#3273dc}.switch[type=checkbox].is-link.is-outlined:checked+label::before,.switch[type=checkbox].is-link.is-outlined:checked+label:before{background-color:transparent;border-color:#3273dc!important}.switch[type=checkbox].is-link.is-outlined:checked+label::after,.switch[type=checkbox].is-link.is-outlined:checked+label:after{background:#3273dc}.switch[type=checkbox].is-link.is-thin.is-outlined+label::after,.switch[type=checkbox].is-link.is-thin.is-outlined+label:after{box-shadow:none}.switch[type=checkbox].is-unchecked-link+label::before,.switch[type=checkbox].is-unchecked-link+label:before{background:#3273dc}.switch[type=checkbox].is-unchecked-link.is-outlined+label::before,.switch[type=checkbox].is-unchecked-link.is-outlined+label:before{background-color:transparent;border-color:#3273dc!important}.switch[type=checkbox].is-unchecked-link.is-outlined+label::after,.switch[type=checkbox].is-unchecked-link.is-outlined+label:after{background:#3273dc}.switch[type=checkbox].is-info:checked+label::before,.switch[type=checkbox].is-info:checked+label:before{background:#209cee}.switch[type=checkbox].is-info.is-outlined:checked+label::before,.switch[type=checkbox].is-info.is-outlined:checked+label:before{background-color:transparent;border-color:#209cee!important}.switch[type=checkbox].is-info.is-outlined:checked+label::after,.switch[type=checkbox].is-info.is-outlined:checked+label:after{background:#209cee}.switch[type=checkbox].is-info.is-thin.is-outlined+label::after,.switch[type=checkbox].is-info.is-thin.is-outlined+label:after{box-shadow:none}.switch[type=checkbox].is-unchecked-info+label::before,.switch[type=checkbox].is-unchecked-info+label:before{background:#209cee}.switch[type=checkbox].is-unchecked-info.is-outlined+label::before,.switch[type=checkbox].is-unchecked-info.is-outlined+label:before{background-color:transparent;border-color:#209cee!important}.switch[type=checkbox].is-unchecked-info.is-outlined+label::after,.switch[type=checkbox].is-unchecked-info.is-outlined+label:after{background:#209cee}.switch[type=checkbox].is-success:checked+label::before,.switch[type=checkbox].is-success:checked+label:before{background:#23d160}.switch[type=checkbox].is-success.is-outlined:checked+label::before,.switch[type=checkbox].is-success.is-outlined:checked+label:before{background-color:transparent;border-color:#23d160!important}.switch[type=checkbox].is-success.is-outlined:checked+label::after,.switch[type=checkbox].is-success.is-outlined:checked+label:after{background:#23d160}.switch[type=checkbox].is-success.is-thin.is-outlined+label::after,.switch[type=checkbox].is-success.is-thin.is-outlined+label:after{box-shadow:none}.switch[type=checkbox].is-unchecked-success+label::before,.switch[type=checkbox].is-unchecked-success+label:before{background:#23d160}.switch[type=checkbox].is-unchecked-success.is-outlined+label::before,.switch[type=checkbox].is-unchecked-success.is-outlined+label:before{background-color:transparent;border-color:#23d160!important}.switch[type=checkbox].is-unchecked-success.is-outlined+label::after,.switch[type=checkbox].is-unchecked-success.is-outlined+label:after{background:#23d160}.switch[type=checkbox].is-warning:checked+label::before,.switch[type=checkbox].is-warning:checked+label:before{background:#ffdd57}.switch[type=checkbox].is-warning.is-outlined:checked+label::before,.switch[type=checkbox].is-warning.is-outlined:checked+label:before{background-color:transparent;border-color:#ffdd57!important}.switch[type=checkbox].is-warning.is-outlined:checked+label::after,.switch[type=checkbox].is-warning.is-outlined:checked+label:after{background:#ffdd57}.switch[type=checkbox].is-warning.is-thin.is-outlined+label::after,.switch[type=checkbox].is-warning.is-thin.is-outlined+label:after{box-shadow:none}.switch[type=checkbox].is-unchecked-warning+label::before,.switch[type=checkbox].is-unchecked-warning+label:before{background:#ffdd57}.switch[type=checkbox].is-unchecked-warning.is-outlined+label::before,.switch[type=checkbox].is-unchecked-warning.is-outlined+label:before{background-color:transparent;border-color:#ffdd57!important}.switch[type=checkbox].is-unchecked-warning.is-outlined+label::after,.switch[type=checkbox].is-unchecked-warning.is-outlined+label:after{background:#ffdd57}.switch[type=checkbox].is-danger:checked+label::before,.switch[type=checkbox].is-danger:checked+label:before{background:#ff3860}.switch[type=checkbox].is-danger.is-outlined:checked+label::before,.switch[type=checkbox].is-danger.is-outlined:checked+label:before{background-color:transparent;border-color:#ff3860!important}.switch[type=checkbox].is-danger.is-outlined:checked+label::after,.switch[type=checkbox].is-danger.is-outlined:checked+label:after{background:#ff3860}.switch[type=checkbox].is-danger.is-thin.is-outlined+label::after,.switch[type=checkbox].is-danger.is-thin.is-outlined+label:after{box-shadow:none}.switch[type=checkbox].is-unchecked-danger+label::before,.switch[type=checkbox].is-unchecked-danger+label:before{background:#ff3860}.switch[type=checkbox].is-unchecked-danger.is-outlined+label::before,.switch[type=checkbox].is-unchecked-danger.is-outlined+label:before{background-color:transparent;border-color:#ff3860!important}.switch[type=checkbox].is-unchecked-danger.is-outlined+label::after,.switch[type=checkbox].is-unchecked-danger.is-outlined+label:after{background:#ff3860} \ No newline at end of file diff --git a/static-data/www/shared/node_modules/bulma-switch/dist/css/bulma-switch.sass b/static-data/www/shared/node_modules/bulma-switch/dist/css/bulma-switch.sass deleted file mode 100644 index d836edbf..00000000 --- a/static-data/www/shared/node_modules/bulma-switch/dist/css/bulma-switch.sass +++ /dev/null @@ -1,194 +0,0 @@ -$switch-background: $grey-light !default -$switch-border: .1rem solid transparent !default -$switch-background-active: $primary !default -$switch-radius: $radius !default -$switch-paddle-background: $white !default -$switch-paddle-background-active: $primary !default -$switch-paddle-offset: 0.25rem !default -$switch-paddle-transition: all 0.25s ease-out !default -$switch-focus: 1px dotted $grey-light !default - -=switch-size($size) - $switch-height: $size * 1.5 - $switch-width: $switch-height * 2 - $paddle-height: $switch-height - ($switch-paddle-offset * 2) - $paddle-width: $switch-height - ($switch-paddle-offset * 2) - $paddle-active-offest: $switch-width - $paddle-width - ($switch-paddle-offset * 1.5) - - + label - position: relative - display: initial - font-size: $size - line-height: initial - padding-left: $switch-width + .5 - padding-top: .2rem - cursor: pointer - - &::before, - &:before - position: absolute - display: block - top: 0 - left: 0 - width: $switch-width - height: $switch-height - border: $switch-border - border-radius: $switch-radius - background: $switch-background - content: '' - - &::after, - &:after - display: block - position: absolute - top: ( $switch-height / 2 ) - ( $paddle-height / 2 ) - left: $switch-paddle-offset - width: $paddle-width - height: $paddle-height - transform: translate3d(0, 0, 0) - border-radius: $switch-radius - background: $switch-paddle-background - transition: $switch-paddle-transition - content: '' - - &.is-rtl - + label - padding-left: 0 - padding-right: $switch-width + .5 - &::before, - &:before - left: auto - right: 0 - &::after, - &:after - left: auto - right: $switch-paddle-offset - - &:checked - + label - &::before, - &:before - background: $switch-background-active - &::after - left: $paddle-active-offest - &.is-rtl - + label - &::after, - &:after - left: auto - right: $paddle-active-offest - - &.is-outlined - + label - &::before, - &:before - background-color: transparent - border-color: $switch-background - &::after, - &:after - background: $switch-background - &:checked - + label - &::before, - &:before - background-color: transparent - border-color: $switch-background-active - &::after, - &:after - background: $switch-paddle-background-active - - &.is-thin - + label - &::before, - &:before - top: $switch-height / 2.75 - height: $switch-height / 4 - &::after, - &:after - box-shadow: 0px 0px 3px $grey - - &.is-rounded - + label - &::before, - &:before - border-radius: $radius-large * 4 - &::after, - &:after - border-radius: 50% - - -.switch[type="checkbox"] - outline: 0 - user-select: none - display: inline-block - position: absolute - opacity: 0 - - &:focus - + label - &::before, - &:before, - &::after, - &:after - outline: $switch-focus - - &[disabled] - cursor: not-allowed - + label - opacity: 0.5 - &::before, - &:before - opacity: 0.5 - &::after, - &:after - opacity: 0.5 - &:hover - cursor: not-allowed - - +switch-size($size-normal) - &.is-small - +switch-size($size-small) - &.is-medium - +switch-size($size-medium) - &.is-large - +switch-size($size-large) - - @each $name, $pair in $colors - $color: nth($pair, 1) - $color-invert: nth($pair, 2) - &.is-#{$name} - &:checked - + label - &::before, - &:before - background: $color - &.is-outlined - &:checked - + label - &::before, - &:before - background-color: transparent - border-color: $color !important - &::after, - &:after - background: $color - &.is-thin - &.is-outlined - + label - &::after, - &:after - box-shadow: none - &.is-unchecked-#{$name} - + label - &::before, - &:before - background: $color - &.is-outlined - + label - &::before, - &:before - background-color: transparent - border-color: $color !important - &::after, - &:after - background: $color diff --git a/static-data/www/shared/node_modules/bulma-switch/package.json b/static-data/www/shared/node_modules/bulma-switch/package.json deleted file mode 100644 index 8e4400ff..00000000 --- a/static-data/www/shared/node_modules/bulma-switch/package.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "_from": "bulma-switch", - "_id": "bulma-switch@2.0.0", - "_inBundle": false, - "_integrity": "sha512-myD38zeUfjmdduq+pXabhJEe3x2hQP48l/OI+Y0fO3HdDynZUY/VJygucvEAJKRjr4HxD5DnEm4yx+oDOBXpAA==", - "_location": "/bulma-switch", - "_phantomChildren": {}, - "_requested": { - "type": "tag", - "registry": true, - "raw": "bulma-switch", - "name": "bulma-switch", - "escapedName": "bulma-switch", - "rawSpec": "", - "saveSpec": null, - "fetchSpec": "latest" - }, - "_requiredBy": [ - "#USER", - "/" - ], - "_resolved": "https://registry.npmjs.org/bulma-switch/-/bulma-switch-2.0.0.tgz", - "_shasum": "7a187cd1bb8073e9a542478d936b89315f1ffcd8", - "_spec": "bulma-switch", - "_where": "/home/anonymous/programming/onionr/static-data/www/shared", - "author": { - "name": "Wikiki", - "email": "wikiki@protonmail.com", - "url": "https://wikiki.github.io/bulma-extensions/overview" - }, - "bugs": { - "url": "https://github.com/Wikiki/bulma-switch/issues" - }, - "bundleDependencies": false, - "config": { - "commitizen": { - "path": "node_modules/cz-conventional-changelog" - } - }, - "deprecated": false, - "description": "Display classic checkbox as a switch button, in different colors, sizes, and states ", - "devDependencies": { - "ansi-colors": "^2.0.1", - "autoprefixer": "^8.6.2", - "babel-core": "^6.26.3", - "babel-jest": "^23.0.1", - "babel-loader": "^7.1.4", - "babel-plugin-transform-object-rest-spread": "^6.26.0", - "babel-preset-env": "^1.7.0", - "bulma": "^0.7.1", - "camelcase": "^5.0.0", - "commitizen": "^2.10.1", - "cz-conventional-changelog": "^2.1.0", - "del": "^3.0.0", - "fancy-log": "^1.3.2", - "gulp": "^4.0.0", - "gulp-autoprefixer": "^5.0.0", - "gulp-clean-css": "^3.9.4", - "gulp-concat": "^2.6.1", - "gulp-nop": "0.0.3", - "gulp-postcss": "^7.0.1", - "gulp-sass": "^4.0.1", - "gulp-uglify": "^3.0.0", - "jest": "^23.1.0", - "regenerator-runtime": "^0.11.1", - "semantic-release": "^15.5.2", - "travis-deploy-once": "^5.0.0", - "webpack": "^4.12.0", - "webpack-stream": "^4.0.3" - }, - "files": [ - "dist/**", - "src/**", - "LICENSE", - "README.md" - ], - "homepage": "https://github.com/Wikiki/bulma-switch#readme", - "keywords": [ - "Bulma", - "bulma", - "bulma.io", - "extensions", - "switch", - "checkbox" - ], - "license": "MIT", - "main": "./dist/css/bulma-switch.min.css", - "name": "bulma-switch", - "repository": { - "type": "git", - "url": "git+https://github.com/Wikiki/bulma-switch.git" - }, - "scripts": { - "build": "gulp", - "commit": "git-cz", - "semantic-release": "semantic-release", - "travis-deploy-once": "travis-deploy-once" - }, - "version": "2.0.0" -} diff --git a/static-data/www/shared/node_modules/bulma-switch/src/sass/index.sass b/static-data/www/shared/node_modules/bulma-switch/src/sass/index.sass deleted file mode 100644 index d836edbf..00000000 --- a/static-data/www/shared/node_modules/bulma-switch/src/sass/index.sass +++ /dev/null @@ -1,194 +0,0 @@ -$switch-background: $grey-light !default -$switch-border: .1rem solid transparent !default -$switch-background-active: $primary !default -$switch-radius: $radius !default -$switch-paddle-background: $white !default -$switch-paddle-background-active: $primary !default -$switch-paddle-offset: 0.25rem !default -$switch-paddle-transition: all 0.25s ease-out !default -$switch-focus: 1px dotted $grey-light !default - -=switch-size($size) - $switch-height: $size * 1.5 - $switch-width: $switch-height * 2 - $paddle-height: $switch-height - ($switch-paddle-offset * 2) - $paddle-width: $switch-height - ($switch-paddle-offset * 2) - $paddle-active-offest: $switch-width - $paddle-width - ($switch-paddle-offset * 1.5) - - + label - position: relative - display: initial - font-size: $size - line-height: initial - padding-left: $switch-width + .5 - padding-top: .2rem - cursor: pointer - - &::before, - &:before - position: absolute - display: block - top: 0 - left: 0 - width: $switch-width - height: $switch-height - border: $switch-border - border-radius: $switch-radius - background: $switch-background - content: '' - - &::after, - &:after - display: block - position: absolute - top: ( $switch-height / 2 ) - ( $paddle-height / 2 ) - left: $switch-paddle-offset - width: $paddle-width - height: $paddle-height - transform: translate3d(0, 0, 0) - border-radius: $switch-radius - background: $switch-paddle-background - transition: $switch-paddle-transition - content: '' - - &.is-rtl - + label - padding-left: 0 - padding-right: $switch-width + .5 - &::before, - &:before - left: auto - right: 0 - &::after, - &:after - left: auto - right: $switch-paddle-offset - - &:checked - + label - &::before, - &:before - background: $switch-background-active - &::after - left: $paddle-active-offest - &.is-rtl - + label - &::after, - &:after - left: auto - right: $paddle-active-offest - - &.is-outlined - + label - &::before, - &:before - background-color: transparent - border-color: $switch-background - &::after, - &:after - background: $switch-background - &:checked - + label - &::before, - &:before - background-color: transparent - border-color: $switch-background-active - &::after, - &:after - background: $switch-paddle-background-active - - &.is-thin - + label - &::before, - &:before - top: $switch-height / 2.75 - height: $switch-height / 4 - &::after, - &:after - box-shadow: 0px 0px 3px $grey - - &.is-rounded - + label - &::before, - &:before - border-radius: $radius-large * 4 - &::after, - &:after - border-radius: 50% - - -.switch[type="checkbox"] - outline: 0 - user-select: none - display: inline-block - position: absolute - opacity: 0 - - &:focus - + label - &::before, - &:before, - &::after, - &:after - outline: $switch-focus - - &[disabled] - cursor: not-allowed - + label - opacity: 0.5 - &::before, - &:before - opacity: 0.5 - &::after, - &:after - opacity: 0.5 - &:hover - cursor: not-allowed - - +switch-size($size-normal) - &.is-small - +switch-size($size-small) - &.is-medium - +switch-size($size-medium) - &.is-large - +switch-size($size-large) - - @each $name, $pair in $colors - $color: nth($pair, 1) - $color-invert: nth($pair, 2) - &.is-#{$name} - &:checked - + label - &::before, - &:before - background: $color - &.is-outlined - &:checked - + label - &::before, - &:before - background-color: transparent - border-color: $color !important - &::after, - &:after - background: $color - &.is-thin - &.is-outlined - + label - &::after, - &:after - box-shadow: none - &.is-unchecked-#{$name} - + label - &::before, - &:before - background: $color - &.is-outlined - + label - &::before, - &:before - background-color: transparent - border-color: $color !important - &::after, - &:after - background: $color diff --git a/static-data/www/shared/node_modules/pnotify/README.md b/static-data/www/shared/node_modules/pnotify/README.md deleted file mode 100644 index 607c3d05..00000000 --- a/static-data/www/shared/node_modules/pnotify/README.md +++ /dev/null @@ -1,786 +0,0 @@ -[![npm version](https://badge.fury.io/js/pnotify.svg)](https://www.npmjs.com/package/pnotify) [![Waffle.io - Columns and their card count](https://badge.waffle.io/sciactive/pnotify.svg?columns=all)](https://waffle.io/sciactive/pnotify) [![jsDelivr Hits](https://data.jsdelivr.com/v1/package/npm/pnotify/badge?style=rounded)](https://www.jsdelivr.com/package/npm/pnotify) - -PNotify is a vanilla JavaScript notification and [confirmation/prompt](http://sciactive.com/pnotify/#confirm-module) library. PNotify can provide [desktop notifications](http://sciactive.com/pnotify/#web-notifications) based on the [Web Notifications spec](http://www.w3.org/TR/notifications/) with fall back to an in-browser notice. - -

Demos

- -* http://sciactive.com/pnotify/ for the latest release -* https://sciactive.github.io/pnotify/ for what's in development - -

Table of Contents

- - -- [Getting Started](#getting-started) - - [Migrating from PNotify 3](#migrating-from-pnotify-3) -- [Installation](#installation) - - [Svelte](#svelte) - - [React](#react) - - [Angular](#angular) - - [Angular (Injectable)](#angular-injectable) - - [AngularJS](#angularjs) - - [Vanilla JS (ES5)](#vanilla-js-es5) - - [Vanilla JS (ES6)](#vanilla-js-es6) -- [Styles](#styles) - - [Bright Theme](#bright-theme) - - [Material](#material) - - [Material Icons](#material-icons) - - [Bootstrap](#bootstrap) - - [Font Awesome (Icons)](#font-awesome-icons) -- [Creating Notices](#creating-notices) -- [Options](#options) - - [Changing Defaults](#changing-defaults) -- [Module Options](#module-options) - - [Desktop Module](#desktop-module) - - [Buttons Module](#buttons-module) - - [NonBlock Module](#nonblock-module) - - [Mobile Module](#mobile-module) - - [Animate Module](#animate-module) - - [Confirm Module](#confirm-module) - - [History Module](#history-module) - - [Callbacks Module](#callbacks-module) -- [Static Methods and Properties](#static-methods-and-properties) -- [Instance Methods and Properties](#instance-methods-and-properties) - - [From the Svelte Component API](#from-the-svelte-component-api) - - [Events](#events) -- [Stacks](#stacks) - - [Example Stack](#example-stack) -- [Features](#features) -- [Licensing and Additional Info](#licensing-and-additional-info) - - -# Getting Started - -You can get PNotify using NPM. (You can also use [jsDelivr](https://www.jsdelivr.com/package/npm/pnotify) or [UNPKG](https://unpkg.com/pnotify/).) - -```sh -npm install --save pnotify - -# If you plan to use Material style: -npm install --save material-design-icons - -# If you plan to use the Animate module: -npm install --save animate.css - -# If you plan to use the NonBlock module: -npm install --save nonblockjs -``` - -Inside the pnotify module directory: - -* `src` Svelte components and uncompressed Bright Theme CSS. -* `lib/es` uncompressed ECMAScript modules. -* `lib/umd` uncompressed UMD modules. -* `lib/iife` uncompressed IIFE scripts. -* `dist` compressed Bright Theme CSS. -* `dist/es` compressed ECMAScript modules. -* `dist/umd` compressed UMD modules.liz -* `dist/iife` compressed IIFE scripts. - -## [Migrating from PNotify 3](MIGRATING.md) - -# Installation - -In addition to the JS, be sure to [include a PNotify style](#styles). - -## Svelte - -[PNotify in Svelte](https://codesandbox.io/s/nwoxqkvw6m). Import the Svelte files from `src`: - -```js -import PNotify from 'pnotify/src/PNotify.html'; -import PNotifyButtons from 'pnotify/src/PNotifyButtons.html'; - -PNotify.alert('Notice me, senpai!'); -``` - -## React - -[PNotify in React](https://codesandbox.io/s/wwqzk8472w). Import the ES modules from `dist`: - -```js -import PNotify from 'pnotify/dist/es/PNotify'; -import PNotifyButtons from 'pnotify/dist/es/PNotifyButtons'; - -PNotify.alert('Notice me, senpai!'); -``` - -## Angular - -[PNotify in Angular](https://codesandbox.io/s/l3pzkl64yq). Import the ES modules from `dist` and initiate the modules: - -```ts -import PNotify from 'pnotify/dist/es/PNotify'; -import PNotifyButtons from 'pnotify/dist/es/PNotifyButtons'; - -//... -export class WhateverComponent { - constructor() { - PNotifyButtons; // Initiate the module. Important! - PNotify.alert('Notice me, senpai!'); - } -} -``` - -For IE support, see [this issue](https://github.com/sciactive/pnotify/issues/343). - -## Angular (Injectable) - -[PNotify in Angular](https://codesandbox.io/s/17yr520yj) as an injectable service: - -```ts -// pnotify.service.ts -import { Injectable } from '@angular/core'; -import PNotify from 'pnotify/dist/es/PNotify'; -import PNotifyButtons from 'pnotify/dist/es/PNotifyButtons'; - -@Injectable() -export class PNotifyService { - getPNotify() { - PNotifyButtons; // Initiate the module. Important! - return PNotify; - } -} - -// whatever.module.ts -//... -import { PNotifyService } from './pnotify.service'; -@NgModule({ - declarations: [...], - imports: [...], - providers: [PNotifyService], - bootstrap: [...] -}) -export class WhateverModule {} - -// whatever.component.ts -import { PNotifyService } from './pnotify.service'; -//... -export class WhateverComponent { - pnotify = undefined; - constructor(pnotifyService: PNotifyService) { - this.pnotify = pnotifyService.getPNotify(); - this.pnotify.alert('Notice me, senpai!'); - } -} -``` - -## AngularJS - -[PNotify in AngularJS](https://codesandbox.io/s/o5mp55p2p9). Import the UMD modules from `dist`: - -```js -var angular = require('angular'); -var PNotify = require('pnotify/dist/umd/PNotify'); -var PNotifyButtons = require('pnotify/dist/umd/PNotifyButtons'); - -angular.module('WhateverModule', []) - .value('PNotify', PNotify) - .controller('WhateverController', ['PNotify', function(PNotify) { - PNotify.alert('Notice me, senpai!'); - }]); -``` - -## Vanilla JS (ES5) - -PNotify in vanilla ECMAScript 5. Include the IIFE scripts from `dist`: - -```html - - - -``` - -## Vanilla JS (ES6) - -PNotify in vanilla ECMAScript 6+. Include the ES modules from `dist`: - -```js -import PNotify from 'node_modules/pnotify/dist/es/PNotify.js'; -import PNotifyButtons from 'node_modules/pnotify/dist/es/PNotifyButtons.js'; - -PNotify.alert('Notice me, senpai!'); -``` - -# Styles - -## Bright Theme - -The default, standalone theme, Bright Theme. Include the CSS file in your page: - -```html - -``` - -## Material - -The Material Style module. Requires [material-design-icons](https://www.npmjs.com/package/material-design-icons). Include the module in your JS, and set it as the default: - -```js -import PNotifyStyleMaterial from 'pnotify/dist/es/PNotifyStyleMaterial.js'; -// or -var PNotifyStyleMaterial = require('pnotify/dist/umd/PNotifyStyleMaterial.js'); - -// Set default styling. -PNotify.defaults.styling = 'material'; -// This icon setting requires the Material Icons font. (See below.) -PNotify.defaults.icons = 'material'; -``` - -### Material Icons - -To use the Material Style icons, include the Material Design Icons Font in your page. - -```sh -# The official Google package: -npm install --save material-design-icons - -# OR, An unofficial package that only includes the font: -npm install --save material-design-icon-fonts -``` - -```html - -``` - -Alternatively, you can use the Google Fonts CDN: - -```html - -``` - -## Bootstrap - -To set Bootstrap as the default style, include the appropriate line(s) from below after you import PNotify: - -```js -PNotify.defaults.styling = 'bootstrap3'; // Bootstrap version 3 -PNotify.defaults.icons = 'bootstrap3'; // glyphicons -// or -PNotify.defaults.styling = 'bootstrap4'; // Bootstrap version 4 -``` - -## Font Awesome (Icons) - -To set Font Awesome as the default icons, include the appropriate line from below after you import PNotify: - -```js -PNotify.defaults.icons = 'fontawesome4'; // Font Awesome 4 -// or -PNotify.defaults.icons = 'fontawesome5'; // Font Awesome 5 -``` - -# Creating Notices - -To make a notice, use the helper functions: - -```js -// Manually set the type. -PNotify.alert({ - text: "I'm an alert.", - type: 'notice' -}); - -// Automatically set the type. -PNotify.notice({ - text: "I'm a notice." -}); -PNotify.info({ - text: "I'm an info message." -}); -PNotify.success({ - text: "I'm a success message." -}); -PNotify.error({ - text: "I'm an error message." -}); -``` - -Or you can manually create a new notice with Svelte's component API (if you know what you're doing): - -```js -new PNotify({ - target: document.body, - data: { - text: "I'm an alert.", - type: 'notice' - } -}); -``` - -# Options - -PNotify options and default values. - -`PNotify.defaults = {` -* `title: false`
- The notice's title. -* `titleTrusted: false`
- Whether to trust the title or escape its contents. (Not allow HTML.) -* `text: false`
- The notice's text. -* `textTrusted: false`
- Whether to trust the text or escape its contents. (Not allow HTML.) -* `styling: 'brighttheme'`
- What styling classes to use. (Can be 'brighttheme', 'bootstrap3', 'bootstrap4', or a styling object. See the source in PNotifyStyleMaterial.html for the properties in a style object.) -* `icons: 'brighttheme'`
- What icons classes to use (Can be 'brighttheme', 'bootstrap3', 'fontawesome4', 'fontawesome5', or an icon object. See the source in PNotifyStyleMaterial.html for the properties in an icon object.) -* `addClass: ''`
- Additional classes to be added to the notice. (For custom styling.) -* `cornerClass: ''`
- Class to be added to the notice for corner styling. -* `autoDisplay: true`
- Display the notice when it is created. Turn this off to add notifications to the history without displaying them. -* `width: '360px'`
- Width of the notice. -* `minHeight: '16px'`
- Minimum height of the notice. It will expand to fit content. -* `type: 'notice'`
- Type of the notice. 'notice', 'info', 'success', or 'error'. -* `icon: true`
- Set icon to true to use the default icon for the selected style/type, false for no icon, or a string for your own icon class. -* `animation: 'fade'`
- The animation to use when displaying and hiding the notice. 'none' and 'fade' are supported through CSS. Others are supported through the Animate module and Animate.css. -* `animateSpeed: 'normal'`
- Speed at which the notice animates in and out. 'slow', 'normal', or 'fast'. Respectively, 400ms, 250ms, 100ms. -* `shadow: true`
- Display a drop shadow. -* `hide: true`
- After a delay, close the notice. -* `delay: 8000`
- Delay in milliseconds before the notice is closed. -* `mouseReset: true`
- Reset the hide timer if the mouse moves over the notice. -* `remove: true`
- Remove the notice's elements from the DOM after it is closed. -* `destroy: true`
- Whether to remove the notice from the global array when it is closed. -* `stack: PNotify.defaultStack`
- The stack on which the notices will be placed. Also controls the direction the notices stack. -* `modules: {}`
- This is where options for modules should be defined. - -`}` - -```js -PNotify.defaultStack = { - dir1: 'down', - dir2: 'left', - firstpos1: 25, - firstpos2: 25, - spacing1: 36, - spacing2: 36, - push: 'bottom', - context: document.body -} -``` - -[Learn more about stacks.](#Stacks) - -## Changing Defaults - -```js -PNotify.defaults.width = '400px'; -``` - -Changing a default for modules can be done in a couple ways. - -```js -// This will change the default for every notice, and is the recommended way. -PNotify.modules.History.defaults.maxInStack = 10; - -// This will change the default only for notices that don't have a `modules` option. -PNotify.defaults.modules = { - History: { - maxInStack: 10 - } -}; -``` - -# Module Options - -## Desktop Module - -`Desktop: {` -* `desktop: false`
- Display the notification as a desktop notification. -* `fallback: true`
- If desktop notifications are not supported or allowed, fall back to a regular notice. -* `icon: null`
- The URL of the icon to display. If false, no icon will show. If null, a default icon will show. -* `tag: null`
- Using a tag lets you update an existing notice, or keep from duplicating notices between tabs. If you leave tag null, one will be generated, facilitating the `update` function. -* `title: null`
- Optionally display a different title for the desktop. -* `text: null`
- Optionally display different text for the desktop. -* `options: {}`
- Any additional options to be passed to the Notification constructor. - -`}` - -## Buttons Module - -`Buttons: {` -* `closer: true`
- Provide a button for the user to manually close the notice. -* `closerHover: true`
- Only show the closer button on hover. -* `sticker: true`
- Provide a button for the user to manually stick the notice. -* `stickerHover: true`
- Only show the sticker button on hover. -* `labels: {close: 'Close', stick: 'Stick', unstick: 'Unstick'}`
- Lets you change the displayed text, facilitating internationalization. -* `classes: {closer: null, pinUp: null, pinDown: null}`
- The classes to use for button icons. Leave them null to use the classes from the styling you're using. - -`}` - -> :information_source: In v4, it's no longer possible to show closer/sticker buttons when the notice is nonblocking. - -## NonBlock Module - -Requires [NonBlock.js](https://github.com/sciactive/nonblockjs) 1.0.8 or higher. - -**It is also deprecated and unnecessary in v4.** All it does is add the 'nonblock' class to your notice. You can do the same yourself with `addClass: 'nonblock'`. - -`NonBlock: {` -* `nonblock: false`
- Use NonBlock.js to create a non-blocking notice. It lets the user click elements underneath it. - -`}` - -## Mobile Module - -`Mobile: {` -* `swipeDismiss: true`
- Let the user swipe the notice away. -* `styling: true`
- Styles the notice to look good on mobile. - -`}` - -## Animate Module - -Requires [Animate.css](https://daneden.github.io/animate.css/). - -`Animate: {` -* `animate: false`
- Use animate.css to animate the notice. -* `inClass: ''`
- The class to use to animate the notice in. -* `outClass: ''`
- The class to use to animate the notice out. - -`}` - -The Animate module also creates a method, `attention`, on notices which accepts an attention grabber class and an animation completed callback. - -## Confirm Module - -`Confirm: {` -* `confirm: false`
- Make a confirmation box. -* `focus: null`
- For confirmation boxes, true means the first button or the button with promptTrigger will be focused, and null means focus will change only for modal notices. For prompts, true or null means focus the prompt. When false, focus will not change. -* `prompt: false`
- Make a prompt. -* `promptClass: ''`
- Classes to add to the input element of the prompt. -* `promptValue: ''`
- The value of the prompt. (Note that this is two-way bound to the input.) -* `promptMultiLine: false`
- Whether the prompt should accept multiple lines of text. -* `align: 'right'`
- Where to align the buttons. (right, center, left, justify) - -```js -buttons: [ - { - text: 'Ok', - textTrusted: false, - addClass: '', - primary: true, - // Whether to trigger this button when the user hits enter in a single line - // prompt. Also, focus the button if it is a modal prompt. - promptTrigger: true, - click: (notice, value) => { - notice.close(); - notice.fire('pnotify.confirm', {notice, value}); - } - }, - { - text: 'Cancel', - textTrusted: false, - addClass: '', - click: (notice) => { - notice.close(); - notice.fire('pnotify.cancel', {notice}); - } - } -] -``` -* The buttons to display, and their callbacks. If a button has promptTrigger set to true, it will be triggered when the user hits enter in a prompt (unless they hold shift). - -`}` - -Because the default buttons fire notice events on confirmation and cancellation, you can listen for them like this: - -```js -const notice = PNotify.alert({ - title: 'Confirmation Needed', - text: 'Are you sure?', - hide: false, - modules: { - Confirm: { - confirm: true - } - } -}); -notice.on('pnotify.confirm', () => { - // User confirmed, continue here... -}); -notice.on('pnotify.cancel', () => { - // User canceled, continue here... -}); -``` - -## History Module - -`History: {` -* `history: true`
- Place the notice in the history. -* `maxInStack: Infinity`
- Maximum number of notices to have open in its stack. - -`}` - -The History module also has two methods: - -* `PNotify.modules.History.showLast(stack)`
- Reopen the last closed notice from a stack that was placed in the history. If no stack is provided, it will use the default stack. -* `PNotify.modules.History.showAll(stack)`
- Reopen all notices from a stack that were placed in the history. If no stack is provided, it will also use the default stack. If stack is `true`, it will reopen all notices from every stack. - -> :information_source: In v4, the History module can no longer make a dropdown for you. But hey, it's smaller now. - -## Callbacks Module - -The callback options all expect the value to be a callback function. If the function returns false on the `beforeOpen` or `beforeClose` callback, that event will be canceled. `beforeInit` and `afterInit` will only work for notices created with the helper functions. - -`Callbacks: {` -* `beforeInit`
- Called before the notice has been initialized. Given one argument, the options object. -* `afterInit`
- Called after the notice has been initialized. Given one argument, the notice object. -* `beforeOpen`
- Called before the notice opens. Given one argument, the notice object. -* `afterOpen`
- Called after the notice opens. Given one argument, the notice object. -* `beforeClose`
- Called before the notice closes. Given one argument, the notice object. -* `afterClose`
- Called after the notice closes. Given one argument, the notice object. - -`}` - -# Static Methods and Properties - -* `PNotify.alert(options)`
- Create a notice. -* `PNotify.notice(options)`
- Create a notice with 'notice' type. -* `PNotify.info(options)`
- Create a notice with 'info' type. -* `PNotify.success(options)`
- Create a notice with 'success' type. -* `PNotify.error(options)`
- Create a notice with 'error' type. -* `PNotify.closeAll()`
- Close all notices. -* `PNotify.removeAll()`
- Alias for closeAll(). (Deprecated) -* `PNotify.closeStack(stack)`
- Close all the notices in a stack. -* `PNotify.removeStack(stack)`
- Alias for closeStack(stack). (Deprecated) -* `PNotify.positionAll()`
- Reposition all notices. -* `PNotify.VERSION`
- PNotify version number. -* `PNotify.defaults`
- Defaults for options. -* `PNotify.defaultStack`
- The default stack object. -* `PNotify.notices`
- An array of all active notices. -* `PNotify.modules`
- This object holds all the PNotify modules. -* `PNotify.styling`
- Styling objects. - -# Instance Methods and Properties - -* `notice.open()`
- Open the notice. -* `notice.close()`
- Close the notice. -* `notice.remove()`
- Alias for close(). (Deprecated) -* `notice.update(options)`
- Update the notice with new options. -* `notice.addModuleClass(...classNames)`
- This is for modules to add classes to the notice. -* `notice.removeModuleClass(...classNames)`
- This is for modules to remove classes from the notice. -* `notice.hasModuleClass(...classNames)`
- This is for modules to test classes on the notice. -* `notice.refs.elem`
- The notice's DOM element. -* `notice.refs.container`
- The notice container DOM element. -* `notice.refs.titleContainer`
- The title container DOM element. -* `notice.refs.textContainer`
- The text container DOM element. -* `notice.refs.iconContainer`
- The icon container DOM element. - -## From the [Svelte Component API](https://svelte.technology/guide#component-api) - -* `notice.get(option)`
- Get the value of an option. -* `notice.set(options)`
- You probably want to use `update(options)` instead. It has some special PNotify secret sauce to make sure your notice doesn't break. -* `notice.observe(key, callback[, options])`
- Observe an option. See the Svelte docs for more info. -* `notice.destroy()`
- Removes the component from the DOM and any observers/event listeners. You probably want to use `close()` instead. It will animate the notice out and you can open it again. Once you destroy it, you can't open it again. - -## Events - -* `notice.on(eventName, callback)`
- Assign a callback to an event. Callback receives an `event` argument. -* `notice.fire(eventName, event)`
- Fire an event. - -# Stacks - -A stack is an object used to determine where to position notices. - -Stack properties: - -* `dir1`
- The primary stacking direction. Can be `'up'`, `'down'`, `'right'`, or `'left'`. -* `firstpos1`
- Number of pixels from the edge of the context, relative to `dir1`, the first notice will appear. If undefined, the current position of the notice, whatever that is, will be used. -* `spacing1`
- Number of pixels between notices along `dir1`. If undefined, `25` will be used. -* `dir2`
- The secondary stacking direction. Should be a perpendicular direction to `dir1`. The notices will continue in this direction when they reach the edge of the viewport along `dir1`. -* `firstpos2`
- Number of pixels from the edge of the context, relative to `dir2`, the first notice will appear. If undefined, the current position of the notice, whatever that is, will be used. -* `spacing2`
- Number of pixels between notices along `dir2`. If undefined, `25` will be used. -* `push`
- Where, in the stack, to push new notices. Can be `'top'` or `'bottom'`. -* `modal`
- Whether to create a modal overlay when this stack's notices are open. -* `overlayClose`
- Whether clicking on the modal overlay should close the stack's notices. -* `context`
- The DOM element this stack's notices should appear in. If undefined, `document.body` will be used. - -Stack behavior: - -* If there is no `dir1` property, the notice will be centered in the context. -* If there is a `dir1` and no `dir2`, the notices will be centered along the axis of `dir1`. -* The `firstpos*` values are relative to an edge determined by the corresponding `dir*` value. - * `dirX === 'up'` means `firstposX` is relative to the **bottom** edge. - * `dirX === 'down'` means `firstposX` is relative to the **top** edge. - * `dirX === 'left'` means `firstposX` is relative to the **right** edge. - * `dirX === 'right'` means `firstposX` is relative to the **left** edge. -* Stacks are independent of each other, so a stack doesn't know and doesn't care if it overlaps (and blocks) another stack. -* Stack objects are used and manipulated by PNotify, and therefore, should be a variable when passed. - -> :warning: Calling something like `PNotify.alert({text: 'notice', stack: {dir1: 'down', firstpos1: 25}});` may not do what you want. It will create a notice, but that notice will be in its own stack and will overlap other notices. - -## Example Stack - -Here is an example stack with comments to explain. You can play with it [here](https://codesandbox.io/s/2po6zq9yrr). - -```js -const stackBottomModal = { - dir1: 'up', // With a dir1 of 'up', the stacks will start appearing at the bottom. - // Without a `dir2`, this stack will be horizontally centered, since the `dir1` axis is vertical. - firstpos1: 25, // The notices will appear 25 pixels from the bottom of the context. - // Without a `spacing1`, this stack's notices will be placed 25 pixels apart. - push: 'top', // Each new notice will appear at the bottom of the screen, which is where the 'top' of the stack is. Other notices will be pushed up. - modal: true, // When a notice appears in this stack, a modal overlay will be created. - overlayClose: true, // When the user clicks on the overlay, all notices in this stack will be closed. - context: document.getElementById('page-container') // The notices will be placed in the 'page-container' element. -}; -``` - -If you just want to position a single notice programmatically, and don't want to add any other notices into the stack, you can use something like this: - -```js -PNotify.alert({ - text: "Notice that's positioned in its own stack.", - stack: { - dir1: 'down', dir2: 'right', // Position from the top left corner. - firstpos1: 90, firstpos2: 90 // 90px from the top, 90px from the left. - } -}); -``` - -# Features - -* Rich graphical features and effects. - * Material, Bootstrap 3/4, Font Awesome 4/5, or the stand-alone theme, Bright Theme. - * Mobile styling and swipe support. - * Timed hiding. - * Slick animations with Animate.css. - * Attention getters with Animate.css. -* Highly customizable UI. - * Sticky notices. - * Optional close and stick buttons. - * Non-blocking notices for less intrusive use. - * Notification types: notice, info, success, and error. - * Stacks allow notices to position together or independently. - * Control stack direction and push to top or bottom. - * Modal notices. - * Confirm dialogs, alert buttons, and prompts. - * RTL language support. -* Feature rich API. - * Desktop notifications based on the Web Notifications standard. - * Dynamically update existing notices. - * Put forms and other HTML in notices. - * By default, escapes text to prevent XSS attack. - * Callbacks for lifespan events. - * Notice history for reshowing old notices. -* Universally compatible. - * Works with any frontend library (React, Angular, Svelte, Vue, Ember, etc.). - * Works well with bundlers (Webpack, Rollup, etc.). - * No dependencies for most features. - -# Licensing and Additional Info - -Copyright 2009-2019 Hunter Perrin -Copyright 2015 Google, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -See http://sciactive.com/pnotify/ for more information, and demos. diff --git a/static-data/www/shared/node_modules/pnotify/dist/iife/PNotify.js b/static-data/www/shared/node_modules/pnotify/dist/iife/PNotify.js deleted file mode 100644 index fbc1cb5d..00000000 --- a/static-data/www/shared/node_modules/pnotify/dist/iife/PNotify.js +++ /dev/null @@ -1,2 +0,0 @@ -var _extends=Object.assign||function(t){for(var e=1;et.addpos2&&(t.addpos2=e.offsetHeight);break;case"left":case"right":e.offsetWidth+(parseFloat(e.style.marginLeft,10)||0)+(parseFloat(e.style.marginRight,10)||0)>t.addpos2&&(t.addpos2=e.offsetWidth)}}else if(t.dir1){var u=void 0,f=void 0;switch(t.dir1){case"down":case"up":f=["left","right"],u=t.context.scrollWidth/2-e.offsetWidth/2;break;case"left":case"right":f=["top","bottom"],u=i/2-e.offsetHeight/2}e.style[f[0]]=u+"px",e.style[f[1]]="auto",t.animation||e.style[f[0]]}if(t.dir1)switch("number"==typeof t.nextpos1&&(e.style[o]=t.nextpos1+"px",t.animation||e.style[o]),t.dir1){case"down":case"up":t.nextpos1+=e.offsetHeight+(void 0===t.spacing1?25:t.spacing1);break;case"left":case"right":t.nextpos1+=e.offsetWidth+(void 0===t.spacing1?25:t.spacing1)}else{var d=n/2-e.offsetWidth/2,p=i/2-e.offsetHeight/2;e.style.left=d+"px",e.style.top=p+"px",t.animation||e.style.left}return this}},queuePosition:function(t){return n&&clearTimeout(n),t||(t=10),n=setTimeout(function(){h.positionAll()},t),this},cancelRemove:function(){return this.cancelClose()},cancelClose:function(){var t=this.get(),e=t._timer,i=t._animTimer,n=t._state,o=t.animation;return e&&clearTimeout(e),i&&clearTimeout(i),"closing"===n&&this.set({_state:"open",_animating:!1,_animatingClass:"fade"===o?"ui-pnotify-in ui-pnotify-fade-in":"ui-pnotify-in"}),this},queueRemove:function(){return this.queueClose()},queueClose:function(){var t=this;return this.cancelClose(),this.set({_timer:setTimeout(function(){return t.close(!0)},isNaN(this.get().delay)?0:this.get().delay)}),this},addModuleClass:function(){for(var t=this.get()._moduleClasses,e=arguments.length,i=Array(e),n=0;n .ui-pnotify{position:fixed;z-index:100040}body > .ui-pnotify.ui-pnotify-modal{z-index:100042}.ui-pnotify{position:absolute;height:auto;z-index:1;display:none}.ui-pnotify.ui-pnotify-modal{z-index:3}.ui-pnotify.ui-pnotify-in{display:block}.ui-pnotify.ui-pnotify-initial-hidden{display:block;visibility:hidden}.ui-pnotify.ui-pnotify-move{transition:left .5s ease, top .5s ease, right .5s ease, bottom .5s ease}.ui-pnotify.ui-pnotify-fade-slow{transition:opacity .4s linear;opacity:0}.ui-pnotify.ui-pnotify-fade-slow.ui-pnotify.ui-pnotify-move{transition:opacity .4s linear, left .5s ease, top .5s ease, right .5s ease, bottom .5s ease}.ui-pnotify.ui-pnotify-fade-normal{transition:opacity .25s linear;opacity:0}.ui-pnotify.ui-pnotify-fade-normal.ui-pnotify.ui-pnotify-move{transition:opacity .25s linear, left .5s ease, top .5s ease, right .5s ease, bottom .5s ease}.ui-pnotify.ui-pnotify-fade-fast{transition:opacity .1s linear;opacity:0}.ui-pnotify.ui-pnotify-fade-fast.ui-pnotify.ui-pnotify-move{transition:opacity .1s linear, left .5s ease, top .5s ease, right .5s ease, bottom .5s ease}.ui-pnotify.ui-pnotify-fade-in{opacity:1}.ui-pnotify .ui-pnotify-shadow{-webkit-box-shadow:0px 6px 28px 0px rgba(0,0,0,0.1);-moz-box-shadow:0px 6px 28px 0px rgba(0,0,0,0.1);box-shadow:0px 6px 28px 0px rgba(0,0,0,0.1)}.ui-pnotify-container{background-position:0 0;padding:.8em;height:100%;margin:0}.ui-pnotify-container:after{content:" ";visibility:hidden;display:block;height:0;clear:both}.ui-pnotify-container.ui-pnotify-sharp{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui-pnotify-title{display:block;white-space:pre-line;margin-bottom:.4em;margin-top:0}.ui-pnotify.ui-pnotify-with-icon .ui-pnotify-title,.ui-pnotify.ui-pnotify-with-icon .ui-pnotify-text{margin-left:24px}[dir=rtl] .ui-pnotify.ui-pnotify-with-icon .ui-pnotify-title,[dir=rtl] .ui-pnotify.ui-pnotify-with-icon .ui-pnotify-text{margin-right:24px;margin-left:0}.ui-pnotify-title-bs4{font-size:1.2rem}.ui-pnotify-text{display:block;white-space:pre-line}.ui-pnotify-icon,.ui-pnotify-icon span{display:block;float:left}[dir=rtl] .ui-pnotify-icon,[dir=rtl] .ui-pnotify-icon span{float:right}.ui-pnotify-icon-bs3 > span{position:relative;top:2px}.ui-pnotify-icon-bs4 > span{position:relative;top:4px}.ui-pnotify-modal-overlay{background-color:rgba(0, 0, 0, .4);top:0;left:0;position:absolute;height:100%;width:100%;z-index:2}body > .ui-pnotify-modal-overlay{position:fixed;z-index:100041}',U(document.head,t)}(),this._fragment=function(o,t){for(var s,r,a,c,l,u,f,d,p,m=[],h=X(),y=[],g=X(),e=t._modulesPrependContainer,_=function(t){return t.module.key},i=0;ib[O]?(T[M]=!0,S(N)):(k[O]=!0,m--):(l(H,a),m--)}for(;m--;){v[(H=t[m]).key]||l(H,a)}for(;h;)S(_[h-1]);return _}function nt(t,e){t.d(1),e[t.key]=null}function ot(t){t.parentNode.removeChild(t)}function st(t,e,i,n){t.removeEventListener(e,i,n)}function d(){return document.createComment("")}function s(t,e){t.data=""+e}function r(t,e){for(;t.nextSibling&&t.nextSibling!==e;)t.parentNode.removeChild(t.nextSibling)}function a(t,e){for(var i in e)t[i]=e[i];return t}function p(t){t._lock=!0,y(t._beforecreate),y(t._oncreate),y(t._aftercreate),t._lock=!1}function y(t){for(;t&&t.length;)t.shift()()}function g(){}return a(o.prototype,{destroy:function(t){this.destroy=g,this.fire("destroy"),this.set=g,this._fragment.d(!1!==t),this._fragment=null,this._state={}},get:function(){return this._state},fire:function(t,e){var i=t in this._handlers&&this._handlers[t].slice();if(!i)return;for(var n=0;ne){for(var i="top"===o.push,s=[],r=0,a=i?0:c.notices.length-1;i?a. -*/ - -shutdownBtn = document.getElementById('shutdownNode') -restartBtn = document.getElementById('restartNode') - - -let restartTorBtnControl = function(){ - if (typeof config == "undefined" || typeof config.tor == "undefined"){ - setTimeout(function(){restartTorBtnControl()}, 10) - return - } - var restartTor = document.getElementsByClassName('restartTor')[0] - - if (config.tor.use_existing_tor || ! config.transports.tor){ - restartTor.setAttribute('disabled', true) - return - } - - restartTor.onclick = function(){ - if (restartTor.disabled){ - console.debug("Tor still restarting (or restart_tor event failed)") - return - } - restartTor.disabled = true - PNotify.success({ - text: 'Initializing Tor restart...' - }) - fetch('/daemon-event/restart_tor', { - method: 'POST', - body: {}, - headers: { - "content-type": "application/json", - "token": webpass - }}) - .then((resp) => resp.text()) - .then(function(data) { - PNotify.success({ - text: 'Tor restarting...' - }) - restartTor.disabled = false - }) - } -} -restartTorBtnControl() - -shutdownBtn.onclick = function(){ - if (! nowebpass){ - if (confirm("Really shutdown Onionr?")){ - fetch('/shutdownclean', { - method: 'GET', - headers: { - "token": webpass - }}) - overlay('shutdownNotice') - clearInterval(statsInterval) - } - } -} - -if (document.location.pathname != "/onboarding/"){ - - restartBtn.onclick = function(){ - if (! nowebpass){ - if (confirm("Really restart Onionr?")){ - fetch('/restartclean', { - headers: { - "token": webpass - }}) - PNotify.notice('Node is restarting') - } - } - } - - fetch('/config/get/onboarding.done', { - method: 'GET', - headers: { - "content-type": "application/json", - "token": webpass - }}) - .then((resp) => resp.text()) // Transform the data into text - .then(function(data) { - if (data === 'false'){ - window.location.href = window.location.pathname = "/onboarding/" + window.location.hash - } - }) -} \ No newline at end of file diff --git a/static-data/www/shared/sidebar/sidebar.css b/static-data/www/shared/sidebar/sidebar.css deleted file mode 100644 index 9a3e196c..00000000 --- a/static-data/www/shared/sidebar/sidebar.css +++ /dev/null @@ -1,14 +0,0 @@ -.quickview-body{ - font-size: 1em; - background-color: #282f2f; -} -.quickview-block{ - padding-left: 1em; - padding-top: 5px; - font-size: 1em; -} - -#logfileOutput{ - max-height: 700px; - overflow-y: scroll; -} \ No newline at end of file diff --git a/static-data/www/shared/sidebar/sidebar.html b/static-data/www/shared/sidebar/sidebar.html deleted file mode 100644 index c45452fd..00000000 --- a/static-data/www/shared/sidebar/sidebar.html +++ /dev/null @@ -1,29 +0,0 @@ -
-
- -
- -
-
- Inserting blocks: unknown -
-
- Blocks to upload: unknown -
-
-
-
- -
- -
-

Your log can deanonymize you if share it.

-

-    
-
-
- diff --git a/static-data/www/shared/sidebar/sidebar.js b/static-data/www/shared/sidebar/sidebar.js deleted file mode 100644 index 483d9196..00000000 --- a/static-data/www/shared/sidebar/sidebar.js +++ /dev/null @@ -1,165 +0,0 @@ -fetch('/shared/sidebar/sidebar.html', { - "method": "get", - headers: { - "token": webpass - }}) -.then((resp) => resp.text()) -.then(function(resp) { - document.getElementById('sidebarContainer').innerHTML = resp - var quickviews = bulmaQuickview.attach() - sidebarAddPeerRegister() -}) - -var sidebarActive = false -var lastLogOffset = 0 - -var logActive = false -var maxLogOutputSize = 1000000 -var logfileOutputEl = null - - -async function showLog(){ - fetch('/readfileoffset/onionr.log?offset=' + lastLogOffset, { - method: 'GET', - headers: { - "token": webpass - }}) - .then((resp) => resp.json()) - .then(function(resp){ - let doScroll = function(){ - if (!logActive){ - logfileOutputEl.scrollTop = logfileOutputEl.scrollHeight; - } - } - if (! resp.data){ - doScroll() - return - } - - lastLogOffset = resp['new_offset'] - - var length = (new TextEncoder().encode(logfileOutputEl.innerText)).length - var tempText = logfileOutputEl.innerText - while(length > maxLogOutputSize){ - tempText = tempText.substring(tempText.indexOf("\n") + 1) - length = (new TextEncoder().encode(tempText)).length - logfileOutputEl.innerText = tempText - } - - logfileOutputEl.innerText += resp.data.replace( - /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '') - doScroll() - }) -} - - -function sidebarAddPeerRegister(){ - document.getElementById('addPeerBtn').onclick = function(){ - let newPeer = document.getElementById('addPeerInput').value - - if (! newPeer.includes(".")){ - PNotify.error({text: "Invalid peer address"}) - return - } - fetch('/addpeer/' + newPeer, { - method: 'POST', - headers: { - "token": webpass - }}) - .then(function(resp){ - if (! resp.ok){ - if (resp.status == 409){ - PNotify.notice({text: "Peer already added"}) - throw new Error("Could not add peer " + newPeer + " already added") - } - PNotify.error({text: "Could not add peer. Is your input valid?"}) - throw new Error("Could not add peer " + newPeer) - } - return resp - }) - .then((resp) => resp.text()) - .then(function(data) { - if (data == "success"){ - PNotify.success({ - text: 'Peer added' - }) - return - } - else if(data == "already added"){ - PNotify.notice({ - text: 'Peer already added' - }) - return - } - PNotify.error({text: data}) - - }) - } -} - -window.addEventListener("keydown", function(event) { - var refreshSideBarInterval = null - document.getElementById('logfileOutput').onmouseenter = function(e){ - logActive = true - } - document.getElementById('logfileOutput').onmouseleave = function(e){ - logActive = false - } - - document.getElementsByClassName('closeSidebar')[0].onclick = function(){ - sidebarActive = false - clearInterval(sidebarLogInterval) - clearInterval(refreshSideBarInterval) - } - if (event.key === "s"){ - logfileOutputEl = document.getElementById('logfileOutput') - sidebarActive = true - if (document.activeElement.nodeName == "TEXTAREA" || document.activeElement.nodeName == "INPUT"){ - if (! document.activeElement.hasAttribute("readonly")){ - return - } - } - sidebarLogInterval = setInterval(function(){showLog()}, 1000) - let refreshSideBar = function(){ - if (document.hidden){return} - var existingValue = document.getElementById("insertingBlocks").innerText - var existingUploadValue = document.getElementById("uploadBlocks") - fetch('/getgeneratingblocks', { - "method": "get", - headers: { - "token": webpass - }}) - .then((resp) => resp.text()) - .then(function(resp) { - console.debug(resp.length, existingValue) - if (resp.length <= 2 && existingValue !== "0"){ - document.getElementById("insertingBlocks").innerText = "0" - return - } - if (existingValue === resp.split(',').length){ - return - } - document.getElementById("insertingBlocks").innerText = resp.split(',').length - 1 - }) - fetch('/getblockstoupload', { - "method": "get", - headers: { - "token": webpass - }}) - .then((resp) => resp.text()) - .then(function(resp) { - if (resp.length <= 2 && existingUploadValue !== "0"){ - document.getElementById("uploadBlocks").innerText = "0" - return - } - if (existingUploadValue === resp.split(',').length){ - return - } - document.getElementById("uploadBlocks").innerText = resp.split(',').length - 1 - }) - } - refreshSideBarInterval = setInterval(refreshSideBar, 3000) - - setTimeout(function(){document.getElementsByClassName('sidebarBtn')[0].click()}, 300) - } -}, true) diff --git a/static-data/www/shared/sites.js b/static-data/www/shared/sites.js deleted file mode 100755 index 872b2c30..00000000 --- a/static-data/www/shared/sites.js +++ /dev/null @@ -1,44 +0,0 @@ -/* - Onionr - Private P2P Communication - - handle opening of sites on main page - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see -*/ -function checkHex(str) { - regexp = /^[0-9a-fA-F]+$/ - if (regexp.test(str)){ - return true - } - return false -} - -document.getElementById('openSite').onclick = function(){ - var hash = document.getElementById('siteViewer').value.trim() - if (hash.includes('.onion')){ - PNotify.notice({ - text: 'This is for Onionr sites, not Tor onion services.' - }) - return - } - if (hash.length == 0){ return } - if (checkHex(hash) && hash.length >= 50 || hash.length == 52 || hash.length == 56){ - window.location.href = '/site/' + hash - } - else{ - PNotify.notice({ - text: 'Invalid site hash/ID' - }) - } -} \ No newline at end of file diff --git a/static-data/www/shared/useridenticons.js b/static-data/www/shared/useridenticons.js deleted file mode 100644 index a614767e..00000000 --- a/static-data/www/shared/useridenticons.js +++ /dev/null @@ -1,46 +0,0 @@ -/* - Onionr - Private P2P Communication - - Provides userIcon which generates SVG identicons from a Onionr user pubkey - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ -function toHexString(byteArray) { - // cc-by-sa-4 https://stackoverflow.com/a/44608819 by https://stackoverflow.com/users/1883624/grantpatterson - var s = '0x' - byteArray.forEach(function(byte) { - s += ('0' + (byte & 0xFF).toString(16)).slice(-2) - }) - return s - } - - async function sha256(str) { - const buf = await crypto.subtle.digest("SHA-256", new TextEncoder("utf-8").encode(str)) - return Array.prototype.map.call(new Uint8Array(buf), x=>(('00'+x.toString(16)).slice(-2))).join('') - } - -async function userIcon(pubkey, imgSize=64){ - pubkey = await sha256(base32.decode.asBytes(pubkey)) - let options = { - //foreground: [0,0,0,1], // rgba black - background: [0, 0, 0, 0], // rgba white - //margin: 0.1, - size: imgSize, - format: 'svg' // use SVG instead of PNG - }; - - // create a base64 encoded SVG - let data = new Identicon(pubkey, options).toString(); - return data -} \ No newline at end of file