Compare commits

...

47 Commits

Author SHA1 Message Date
Leon Noe Jovan
909928eec3 added prefix for about 2023-02-22 18:07:11 +01:00
Leon Noe Jovan
f97b83abd7 fix sqlachemy to 1.4 2023-02-21 20:33:50 +01:00
Leon Noe Jovan
36dc08ba10 downgrade to python 3.8 2023-02-21 20:24:54 +01:00
Leon Noe Jovan
0909abefea added about page 2023-02-21 20:07:40 +01:00
Leon Noe Jovan
692de4f7b9 vec informacij o sodelovanju - new link 2023-01-21 18:02:16 +01:00
Leon Noe Jovan
467405bf8e updated subject 2023-01-17 19:20:28 +01:00
Leon Noe Jovan
3d0f272d5e added footer 2023-01-17 19:09:18 +01:00
Leon Noe Jovan
2868cf3548 fixes 2023-01-16 18:52:30 +01:00
Leon Noe Jovan
f627218e41 fixes 2023-01-16 17:52:59 +01:00
Leon Noe Jovan
8506356a13 fixes 2023-01-14 14:02:11 +01:00
Leon Noe Jovan
ce03a21ad7 fixes 2023-01-14 13:56:03 +01:00
Leon Noe Jovan
e6c87bb3f6 fixes 2023-01-14 13:45:33 +01:00
mihasinkec
10e8116d83 Added route prefix support. 2022-11-06 13:51:12 +01:00
Leon Noe Jovan
f671c365a3 reverted menu 2022-02-14 21:56:10 +01:00
Leon Noe Jovan
b19cfa6d48 added check if empty 2022-02-14 17:37:41 +01:00
msinkec
f898ee8d31 Finished manage institution site. Redone how cooperation history works. 2022-02-14 15:01:03 +01:00
Leon Noe Jovan
87f067b077 new menu, manage instutution reorganized 2022-02-13 15:47:19 +01:00
Leon Noe Jovan
e1b1d194fd new menu, manage instutution reorganized 2022-02-13 15:20:20 +01:00
Leon Noe Jovan
ab842809c7 Merge branch 'leon-redesign' of https://gitea.cjvt.si/webapps/portal-oddajanje-solar into leon-redesign 2022-02-12 16:38:37 +01:00
Leon Noe Jovan
e909ee8405 changes in history 2022-02-12 16:38:34 +01:00
msinkec
9ce19a34a7 Merge branch 'leon-redesign' of https://gitea.cjvt.si/mihasinkec/portal-oddajanje-solar into leon-redesign 2022-02-10 10:25:39 +01:00
msinkec
710abf74df endpoint permission updates for institutions, threw out add user from manage institution menu 2022-02-10 10:25:27 +01:00
Leon Noe Jovan
2de5727ea2 api for top upload graph 2022-01-23 22:53:11 +01:00
Leon Noe Jovan
30f96d4fdc nicer admin menu 2022-01-23 22:28:21 +01:00
Leon Noe Jovan
313f95fac8 Merge branch 'leon-redesign' of https://gitea.cjvt.si/webapps/portal-oddajanje-solar into leon-redesign 2022-01-23 22:16:24 +01:00
Leon Noe Jovan
20b2273623 added region to uploads history 2022-01-23 22:15:56 +01:00
msinkec
6cd69c5d4b server name config, top uploads for instituion, institution upload stats endpoint 2022-01-15 10:37:40 +01:00
Leon Noe Jovan
2bbeaacb76 manjsi popravki 2022-01-08 16:25:25 +01:00
msinkec
9f352da395 File codes missing letter fix. 2022-01-06 12:27:10 +01:00
msinkec
fe1285d455 Merge branch leon-redesign 2022-01-06 12:19:41 +01:00
msinkec
31c2d294fe Ekipa tab restructuring, downloaded file names are now codes. 2022-01-06 12:14:58 +01:00
Leon Noe Jovan
48230b623a success messages, graph 2022-01-05 19:33:43 +01:00
Leon Noe Jovan
6c1fdc06fc Merge branch 'leon-redesign' of https://gitea.cjvt.si/webapps/portal-oddajanje-solar into leon-redesign 2022-01-04 18:36:51 +01:00
Leon Noe Jovan
956c307b6c small fixes, added graph 2022-01-04 18:36:42 +01:00
msinkec
743ebba052 Pass len check fix. 2021-12-26 17:55:12 +01:00
msinkec
13a5fdd6f7 Pass len check fix, relative href and src. 2021-12-23 08:51:37 +01:00
msinkec
7c79891983 Added top uploads by user API endpoint. 2021-12-20 11:47:06 +01:00
msinkec
9e93d41bc3 Upload file codes, upload region. 2021-12-20 11:15:01 +01:00
Leon Noe Jovan
a72c5f03cf popravki 2021-12-15 21:23:26 +01:00
msinkec
eb00a806fc Merge push. 2021-12-14 15:36:54 +01:00
msinkec
f543beee1b Download uploaded files. 2021-12-14 15:36:36 +01:00
Leon Noe Jovan
adf8501263 review fixes 2021-12-13 21:01:28 +01:00
Leon Noe Jovan
8fae602660 added back to login button 2021-12-06 19:31:48 +01:00
Leon Noe Jovan
5242985df1 design updates 2021-12-04 18:49:20 +01:00
Leon Noe Jovan
b927a032f8 pogodbe, updates 2021-11-26 13:50:32 +01:00
Leon Noe Jovan
37e227138a fixes 2021-11-17 20:18:28 +01:00
Leon Noe Jovan
32fa0ad3a9 init commit of new design 2021-11-16 18:45:20 +01:00
80 changed files with 5514 additions and 961 deletions

3
.gitignore vendored
View File

@ -1,6 +1,7 @@
uploads/*
!uploads/.gitkeep
.idea/
portal-ds4-ds1/
# Byte-compiled / optimized / DLL files
__pycache__/

View File

@ -13,6 +13,5 @@ WORKDIR /usr/src/portal-webapp
RUN apt-get update && apt-get -y install wkhtmltopdf && \
rm -rf /var/lib/apt/lists/*
RUN pip3 install --no-cache-dir pdfkit flask==1.1.4 flask-dropzone flask-log-request-id flask-login Flask-SQLAlchemy alembic flask-migrate==2.7.0 Flask-script psycopg2 gunicorn pdfkit Werkzeug==1.0.1 PyJWT
RUN pip3 install --no-cache-dir pdfkit markupsafe==2.0.1 flask==1.1.4 flask-dropzone flask-log-request-id flask-login SQLAlchemy==1.4 Flask-SQLAlchemy==2.5.1 alembic flask-migrate==2.7.0 Flask-script psycopg2 gunicorn pdfkit Werkzeug==1.0.1 PyJWT
ENTRYPOINT ["./entrypoint.sh"]

491
app.py
View File

@ -2,6 +2,8 @@ import logging
import os
import re
import configparser
import random
import string
from pathlib import Path
from werkzeug.security import check_password_hash
@ -12,6 +14,10 @@ from flask_script import Manager
from flask_login import LoginManager, login_required, login_user, current_user, logout_user
from portal.model import db, RegisteredUser
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
import portal.solar
# TODO: Integrate Shibboleth login.
@ -26,6 +32,8 @@ config = configparser.ConfigParser()
config.read('config.ini')
config = config['DEFAULT']
SERVER_NAME = config['SERVER_NAME']
ROUTE_PREFIX = config['ROUTE_PREFIX']
MAIL_HOST = config['MAIL_HOST']
MAIL_LOGIN = config['MAIL_LOGIN']
MAIL_PASS = config['MAIL_PASS']
@ -47,6 +55,10 @@ if not UPLOADS_DIR.exists:
UPLOADS_DIR.mkdir(parents=True)
# Override configs with environment variables, if set
if 'PORTALDS4DS1_SERVER_NAME' in os.environ:
SERVER_NAME = os.environ['PORTALDS4DS1_SERVER_NAME']
if 'PORTALDS4DS1_ROUTE_PREFIX' in os.environ:
ROUTE_PREFIX = os.environ['PORTALDS4DS1_ROUTE_PREFIX']
if 'PORTALDS4DS1_MAIL_HOST' in os.environ:
MAIL_HOST = os.environ['PORTALDS4DS1_MAIL_HOST']
if 'PORTALDS4DS1_MAIL_LOGIN' in os.environ:
@ -77,9 +89,11 @@ if 'PORTALDS4DS1_SQL_CONN_STR' in os.environ:
######################
app = Flask(__name__)
app = Flask(__name__, static_url_path = ROUTE_PREFIX + '/static')
#app = Flask(__name__)
app.config.update(
SERVER_NAME = SERVER_NAME,
SECRET_KEY = APP_SECRET_KEY,
UPLOADED_PATH = UPLOADS_DIR,
MAX_CONTENT_LENGTH = MAX_UPLOAD_SIZE,
@ -99,6 +113,7 @@ manager.add_command('db', MigrateCommand)
dropzone = Dropzone(app)
upload_handler_solar = portal.solar.UploadHandlerSolar(
SERVER_NAME = SERVER_NAME,
UPLOADS_DIR=UPLOADS_DIR,
MAIL_HOST=MAIL_HOST,
MAIL_LOGIN=MAIL_LOGIN,
@ -124,11 +139,11 @@ def redirect_url(default='/'):
url_for(default)
@app.route('/')
@app.route(ROUTE_PREFIX + '/')
def index():
if current_user.is_authenticated:
return redirect('/oddaja')
return redirect('/login')
return redirect(ROUTE_PREFIX + '/oddaja/')
return redirect(ROUTE_PREFIX + '/login/')
@login_manager.user_loader
@ -137,17 +152,17 @@ def load_user(user_id):
return user
@app.route('/login')
@app.route(ROUTE_PREFIX + '/login')
def solar_login_get():
return render_template('solar-login.html')
return render_template('solar-login.html', ROUTE_PREFIX=ROUTE_PREFIX)
@app.route('/register')
@app.route(ROUTE_PREFIX + '/register')
def solar_register_get():
return render_template('solar-register.html')
return render_template('solar-register.html', ROUTE_PREFIX=ROUTE_PREFIX)
@app.route('/login', methods=['POST'])
@app.route(ROUTE_PREFIX + '/login', methods=['POST'])
def solar_login_post():
email = request.form.get('email')
password = request.form.get('password')
@ -157,19 +172,19 @@ def solar_login_post():
if not user or not check_password_hash(user.pass_hash, password):
flash('Napačni podatki za prijavo. Poskusite ponovno.')
return redirect('/login')
return redirect(ROUTE_PREFIX + '/login/')
if not user.active:
flash('Vaš uporabniški račun še ni bil aktiviran.')
return redirect('/login')
return redirect(ROUTE_PREFIX + '/login/')
#portal.solar.add_user_session(user.id)
login_user(user, remember=remember)
return redirect('/oddaja')
return redirect(ROUTE_PREFIX + '/oddaja/')
@app.route('/register', methods=['POST'])
@app.route(ROUTE_PREFIX + '/register', methods=['POST'])
def solar_register_post():
name = request.form.get('name')
email = request.form.get('email')
@ -182,38 +197,38 @@ def solar_register_post():
if user:
flash('Uporabniški račun s tem emailom je že registriran.')
return redirect('/register')
return redirect(ROUTE_PREFIX + '/register/')
if not name:
flash('Prazno polje za ime.')
return redirect('/register')
return redirect(ROUTE_PREFIX + '/register/')
if len(name) > 100:
flash('Predolgo ime.')
return redirect('/register')
return redirect(ROUTE_PREFIX + '/register/')
if not email:
flash('Prazno polje za elektronsko pošto.')
return redirect('/register')
return redirect(ROUTE_PREFIX + '/register/')
if len(email) > 100:
flash('Predolgi email naslov')
return redirect('/register')
return redirect(ROUTE_PREFIX + '/register/')
elif not re.search(portal.solar.REGEX_EMAIL, email):
flash('Email napačnega formata.')
return redirect('/register')
return redirect(ROUTE_PREFIX + '/register/')
if not password:
flash('Prazno polje za geslo.')
return redirect('/register')
if len(password) > 8:
return redirect(ROUTE_PREFIX + '/register/')
if len(password) < 8:
flash('Geslo mora biti vsaj 8 znakov dolgo.')
return redirect('/register')
return redirect(ROUTE_PREFIX + '/register/')
if len(password) > 100:
flash('Predolgo geslo.')
return redirect('/register')
return redirect(ROUTE_PREFIX + '/register/')
if institution_role not in ['coordinator', 'mentor', 'other']:
flash('Neveljavna vloga v instituciji.')
return redirect('/register')
flash('Neveljavna vloga.')
return redirect(ROUTE_PREFIX + '/register/')
if not institution:
institution_id = portal.solar.add_institution(institution_name, "")
@ -224,20 +239,22 @@ def solar_register_post():
user_id = portal.solar.register_new_user(name, email, password, active=False)
portal.solar.add_user_to_institution(user_id, institution_id, institution_role)
portal.solar.add_cooperation_history_item(user_id, institution_id, institution_role)
portal.solar.send_admins_new_user_notification_mail(user_id, upload_handler_solar.config)
flash('Podatki so bili poslani v potrditev. Ko bo registracija potrjena, boste o tem obveščeni po e-mailu, ki ste ga posredovali zgoraj.')
return redirect('/login')
flash('Podatki so bili poslani v potrditev. Ko bo registracija potrjena, boste o tem obveščeni po e-mailu. To lahko traja nekaj časa.')
return redirect(ROUTE_PREFIX + '/login/')
@app.route('/logout')
@app.route(ROUTE_PREFIX + '/logout')
@login_required
def logout():
logout_user()
return redirect('/login')
return redirect(ROUTE_PREFIX + '/login/')
@app.route('/<path:text>')
@app.route(ROUTE_PREFIX + '/<path:text>')
@login_required
def solar(text):
is_admin = current_user.role == 'admin'
@ -252,6 +269,7 @@ def solar(text):
if text.startswith('oddaja/') or text == 'oddaja':
return render_template('solar-oddaja.html',
ROUTE_PREFIX=ROUTE_PREFIX,
is_admin=is_admin,
institution=current_user_institution,
institution_contract=institution_contract,
@ -270,9 +288,10 @@ def solar(text):
else:
institution_names.append(institution.name)
return render_template('solar-zgodovina.html', upload_history=upload_items, uploader_names=uploader_names,
institution_names=institution_names, is_admin=is_admin, is_institution_coordinator=current_user_institution_coordinator)
institution_names=institution_names, is_admin=is_admin, is_institution_coordinator=current_user_institution_coordinator,
ROUTE_PREFIX=ROUTE_PREFIX)
elif text.startswith('pogodbe-institucije/') or text.startswith('pogodbe-ucencistarsi/'):
# Check for ownload contract request.
# Check for download contract request.
match = re.match('^pogodbe-(institucije|ucencistarsi)/([a-z0-9_]+\.pdf)$', text)
if match:
contract_type = match.group(1)
@ -299,52 +318,75 @@ def solar(text):
enable_upload_school_contract = False
show_upload_form = False
collaborators = []
institution_id = ""
cooperation_history = dict()
if current_user_institution:
collaborators = portal.solar.get_all_active_institution_users(current_user_institution.id)
show_upload_form = True
contract_school = portal.solar.get_institution_contract(current_user_institution.id)
cooperation_history = portal.solar.get_institution_cooperation_history(current_user_institution.id)
logging.error(cooperation_history)
institution_id = current_user_institution.id
if portal.solar.is_institution_coordinator(current_user_obj.id, current_user_institution.id):
contracts_students = portal.solar.get_institution_student_contracts(current_user_institution.id)
enable_upload_school_contract = True
else:
contracts_students = portal.solar.get_institution_student_contracts(current_user_institution.id, current_user_obj.id)
return render_template('solar-pogodbe.html', contracts_students=contracts_students,
institution_users = portal.solar.get_all_active_institution_users(current_user_institution.id),
#logging.error(institution_users)
role_map = dict()
for institution_user in institution_users[0]:
#logging.error(institution_user)
role_map[institution_user.id] = portal.solar.get_user_institution_role_str(institution_user.id, current_user_institution.id)
return render_template('solar-pogodbe.html',
ROUTE_PREFIX=ROUTE_PREFIX,
contracts_students=contracts_students,
contract_school=contract_school,
enable_upload_school_contract=enable_upload_school_contract,
show_upload_form=show_upload_form,
collaborators=collaborators,
cooperation_history=cooperation_history,
institution_users = institution_users[0],
role_map=role_map,
user_id=current_user.id,
institution_id=institution_id,
is_admin=is_admin, is_institution_coordinator=current_user_institution_coordinator)
elif text.startswith('admin/') or text == 'admin':
users = portal.solar.get_all_users_join_institutions()
inactive_users = portal.solar.get_all_users_join_institutions(active=False)
solar_institutions = portal.solar.get_all_institutions()
cooperation_history = portal.solar.get_cooperation_history()
uploads = portal.solar.get_all_upload_history(-1)
if is_admin:
return render_template('solar-admin.html', users=users, user_cooperation_history=cooperation_history,
return render_template('solar-admin.html', ROUTE_PREFIX=ROUTE_PREFIX, users=users,
institutions=solar_institutions, inactive_users=inactive_users, uploads=uploads)
elif text.startswith('manage-institution/') or text == 'manage-institution':
if portal.solar.is_institution_coordinator(current_user.id, current_user_institution.id):
solar_users = portal.solar.get_all_active_users()
institution_users = portal.solar.get_all_active_institution_users(current_user_institution.id)
return render_template('solar-manage-institution.html', users=solar_users,
institution_users=institution_users)
role_map = dict()
for institution_user in institution_users:
role_map[institution_user.id] = portal.solar.get_user_institution_role_str(institution_user.id, current_user_institution.id)
return render_template('solar-manage-institution.html',
ROUTE_PREFIX=ROUTE_PREFIX,
institution=current_user_institution,
users=solar_users,
institution_users=institution_users,
role_map=role_map)
return '', 404
@app.route('/pogodbe', methods=['POST'])
@app.route(ROUTE_PREFIX + '/pogodbe', methods=['POST'])
@login_required
def solar_upload_contract():
msg = upload_handler_solar.handle_contract_upload(request, current_user.get_id())
flash(msg)
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
@app.route('/adduser', methods=['POST'])
@app.route(ROUTE_PREFIX + '/adduser', methods=['POST'])
@login_required
def solar_add_user():
@ -357,41 +399,41 @@ def solar_add_user():
if not name:
flash('Prazno polje za ime.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
if len(name) > 100:
flash('Predolgo ime.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
if not email:
flash('Prazno polje za elektronsko pošto.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
if len(email) > 100:
flash('Predolg email naslov.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
elif not re.search(portal.solar.REGEX_EMAIL, email):
flash('Email napačnega formata.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
if not password:
flash('Prazno polje za geslo.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
if len(password) > 100:
flash('Predolgo geslo.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
user = portal.solar.get_user_obj_by_email(email)
if user:
#portal.solar.undo_remove_user(user.id)
flash('Uporabnik s tem emailom je že vnešen v sistem.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
portal.solar.register_new_user(name, email, password)
flash('Uporabnik je bil uspešno dodan.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
@app.route('/activateuser', methods=['POST'])
@app.route(ROUTE_PREFIX + '/activateuser', methods=['POST'])
@login_required
def solar_activate_user():
if not portal.solar.is_admin(current_user.id):
@ -400,7 +442,7 @@ def solar_activate_user():
user_id = request.form.get('id')
if not user_id:
flash('Prazno polje za ID uporabnika.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
rowcount = portal.solar.activate_user(user_id)
if rowcount == 0:
@ -409,35 +451,35 @@ def solar_activate_user():
portal.solar.send_user_activation_mail(user_id, upload_handler_solar.config)
flash('Uporabnik je bil aktiviran.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
@app.route('/forgotpass')
@app.route(ROUTE_PREFIX + '/forgotpass')
def solar_forgotpass():
return render_template('solar-forgotpass.html')
return render_template('solar-forgotpass.html', ROUTE_PREFIX=ROUTE_PREFIX)
@app.route('/sendresetpass', methods=['POST'])
@app.route(ROUTE_PREFIX + '/sendresetpass', methods=['POST'])
def solar_sendresetpass():
email = request.form.get('email')
portal.solar.send_resetpass_mail(email, upload_handler_solar.config)
flash('Povezava za ponastavitev gesla je bila poslana na vpisan email naslov.')
return redirect(redirect_url())
flash('Povezava za ponastavitev gesla je bila poslana na vpisani e-naslov.')
return redirect(ROUTE_PREFIX + redirect_url())
@app.route('/resetpass/<token>')
@app.route(ROUTE_PREFIX + '/resetpass/<token>')
def solar_resetpass(token):
user = portal.solar.verify_reset_token(token, upload_handler_solar.config['APP_SECRET_KEY'])
if not user:
return '', 404
return render_template('solar-resetpass.html', user=user, token=token)
return render_template('solar-resetpass.html',ROUTE_PREFIX=ROUTE_PREFIX, user=user, token=token)
@app.route('/resetpass/<token>', methods=['POST'])
@app.route(ROUTE_PREFIX + '/resetpass/<token>', methods=['POST'])
def solar_resetpass_post(token):
new_password = request.form.get('new_password')
user = portal.solar.verify_reset_token(token, upload_handler_solar.config['APP_SECRET_KEY'])
@ -450,16 +492,36 @@ def solar_resetpass_post(token):
return '', 404
flash('Ponastavitev gesla je bila uspešna.')
return redirect('/login')
return redirect(ROUTE_PREFIX + '/login/')
@app.route(ROUTE_PREFIX + '/about')
def solar_about():
return render_template('solar-about.html', ROUTE_PREFIX=ROUTE_PREFIX)
@app.route('/topuploads')
@app.route(ROUTE_PREFIX + '/topuploads')
@login_required
def solar_topuploads_srednje():
def solar_topuploads():
return jsonify(portal.solar.get_top_uploading_institutions())
@app.route('/deluser', methods=['POST'])
@app.route(ROUTE_PREFIX + '/topuploads-institution/<institution_id>')
@login_required
def solar_topuploads_institution(institution_id):
return jsonify(portal.solar.get_top_uploading_users(institution_id))
@app.route(ROUTE_PREFIX + '/uploadstats-institution/<institution_id>')
@login_required
def solar_uploadstats_institution(institution_id):
return jsonify(portal.solar.get_institution_upload_stats(institution_id))
@app.route(ROUTE_PREFIX + '/uploadstats-per-region')
@login_required
def solar_uploadstats_per_region():
return jsonify(portal.solar.get_region_stats())
@app.route(ROUTE_PREFIX + '/deluser', methods=['POST'])
@login_required
def solar_del_user():
if not portal.solar.is_admin(current_user.id):
@ -467,9 +529,9 @@ def solar_del_user():
user_id = request.form.get('user_id')
portal.solar.remove_user(user_id)
flash('Uporabnik je bil odstranjen.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
@app.route('/addinstitution', methods=['POST'])
@app.route(ROUTE_PREFIX + '/addinstitution', methods=['POST'])
@login_required
def add_institution():
if not portal.solar.is_admin(current_user.id):
@ -480,21 +542,21 @@ def add_institution():
if not name:
flash('Prazno polje za naziv.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
if len(name) > 100:
flash('Predolgo ime.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
if not region in portal.solar.VALID_REGIONS:
flash('Neveljavna vrednost za regijo.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
institution_id = portal.solar.add_institution(name, region)
portal.solar.grant_institution_corpus_access(institution_id, "solar") # TODO: throw out
flash('Institucija je bila dodana.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
@app.route('/mergeinstitutions', methods=['POST'])
@app.route(ROUTE_PREFIX + '/mergeinstitutions', methods=['POST'])
@login_required
def merge_institutions():
if not portal.solar.is_admin(current_user.id):
@ -505,18 +567,18 @@ def merge_institutions():
if not id_from or not id_to:
flash('Prazno polje.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
institution_from = portal.solar.get_institution_obj(id_from)
institution_to = portal.solar.get_institution_obj(id_to)
if not institution_from:
flash('Institucija z ID "{}" ne obstaja.'.format(id_from))
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
if not institution_to:
flash('Institucija z ID "{}" ne obstaja.'.format(id_to))
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
portal.solar.transfer_users_institution(institution_from.id, institution_to.id)
@ -525,45 +587,45 @@ def merge_institutions():
portal.solar.remove_institution(institution_from.id)
flash('Instituciji uspešno združeni')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
@app.route('/addcooperationhistoryitem', methods=['POST'])
@login_required
def add_cooperation_history_item():
if not portal.solar.is_admin(current_user.id):
return '', 404
#@app.route(ROUTE_PREFIX + '/addcooperationhistoryitem', methods=['POST'])
#@login_required
#def add_cooperation_history_item():
# if not portal.solar.is_admin(current_user.id):
# return '', 404
#
# user_id = request.form.get('user')
# institution_id = request.form.get('institution')
# role = request.form.get('role')
# school_year = request.form.get('school-year')
# badge_text = request.form.get('badge-text')
#
# user = portal.solar.get_user_obj(user_id)
# institution = portal.solar.get_institution_obj(institution_id)
#
# if not user:
# flash('Uporabnik s tem ID-jem ne obstaja.')
# return redirect(ROUTE_PREFIX + redirect_url())
#
# if not institution:
# flash('Institucija s tem ID-jem ne obstaja.')
# return redirect(ROUTE_PREFIX + redirect_url())
#
# if not role in ['coordinator', 'mentor', 'other']:
# flash('Neveljavna vloga "{}".'.format(role))
# return redirect(ROUTE_PREFIX + redirect_url())
#
# if not school_year or not re.match('[0-9]{4}/[0-9]{2}', school_year):
# flash('Šolsko leto mora biti formata "2021/22".')
# return redirect(ROUTE_PREFIX + redirect_url())
#
# portal.solar.add_cooperation_history_item(user_id, institution_id, role, school_year, badge_text)
#
# flash('Vnos dodan.')
# return redirect(ROUTE_PREFIX + redirect_url())
user_id = request.form.get('user')
institution_id = request.form.get('institution')
role = request.form.get('role')
school_year = request.form.get('school-year')
badge_text = request.form.get('badge-text')
user = portal.solar.get_user_obj(user_id)
institution = portal.solar.get_institution_obj(institution_id)
if not user:
flash('Uporabnik s tem ID-jem ne obstaja.')
return redirect(redirect_url())
if not institution:
flash('Institucija s tem ID-jem ne obstaja.')
return redirect(redirect_url())
if not role in ['coordinator', 'mentor', 'other']:
flash('Neveljavna vloga "{}".'.format(role))
return redirect(redirect_url())
if not school_year or not re.match('[0-9]{4}/[0-9]{2}', school_year):
flash('Šolsko leto mora biti formata "2021/22".')
return redirect(redirect_url())
portal.solar.add_cooperation_history_item(user_id, institution_id, role, school_year, badge_text)
flash('Vnos dodan.')
return redirect(redirect_url())
@app.route('/updateuploaditem', methods=['POST'])
@app.route(ROUTE_PREFIX + '/updateuploaditem', methods=['POST'])
@login_required
def update_upload_item():
if not portal.solar.is_admin(current_user.id):
@ -572,7 +634,7 @@ def update_upload_item():
err_msg = portal.solar.UploadHandlerSolar.check_form(request.form)
if err_msg:
flash(err_msg)
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
item_id = request.form.get('item-id')
program = request.form.get('program')
@ -599,22 +661,22 @@ def update_upload_item():
return '', 404
flash('Vnos spremenjen.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
@app.route('/delcooperationhistoryitem', methods=['POST'])
@login_required
def del_cooperation_history_item():
if not portal.solar.is_admin(current_user.id):
return '', 404
#@app.route(ROUTE_PREFIX + '/delcooperationhistoryitem', methods=['POST'])
#@login_required
#def del_cooperation_history_item():
# if not portal.solar.is_admin(current_user.id):
# return '', 404
#
# entry_id = request.form.get('entry-id')
# portal.solar.del_cooperation_history_item(entry_id)
#
# flash('Vnos odstranjen.')
# return redirect(ROUTE_PREFIX + redirect_url())
entry_id = request.form.get('entry-id')
portal.solar.del_cooperation_history_item(entry_id)
flash('Vnos odstranjen.')
return redirect(redirect_url())
@app.route('/changeinstitutiondata', methods=['POST'])
@app.route(ROUTE_PREFIX + '/changeinstitutiondata', methods=['POST'])
@login_required
def change_institution_data():
if not portal.solar.is_admin(current_user.id):
@ -626,21 +688,21 @@ def change_institution_data():
if not new_name:
flash('Prazno polje za naziv.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
if len(new_name) > 100:
flash('Predolgo ime.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
if not new_region in portal.solar.VALID_REGIONS:
flash('Neveljavna vrednost za regijo.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
portal.solar.update_institution_data(institution_id, new_name, new_region)
flash('Podatki institucije so bili spremenjeni.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
@app.route('/changeuseremail', methods=['POST'])
@app.route(ROUTE_PREFIX + '/changeuseremail', methods=['POST'])
@login_required
def change_user_email():
if not portal.solar.is_admin(current_user.id):
@ -651,17 +713,43 @@ def change_user_email():
if not re.search(portal.solar.REGEX_EMAIL, email):
flash('Email napačnega formata.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
portal.solar.update_user_email(user_id, email)
flash('Email spremenjen.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
@app.route(ROUTE_PREFIX + '/changeuserrole-institution', methods=['POST'])
@login_required
def change_user_role_institution():
institution = portal.solar.get_user_institution(current_user.id)
if not portal.solar.is_admin(current_user.id):
# Institution coordinators can only assign roles of users in their own
# institution.
if institution and portal.solar.is_institution_coordinator(current_user.id, institution.id):
pass
else:
return '', 404
user_id = request.form.get('user-id')
role = request.form.get('role')
if role not in ['coordinator', 'mentor', 'other']:
flash('Neveljavna vloga.')
return redirect(ROUTE_PREFIX + redirect_url())
portal.solar.update_user_institution_role(user_id, institution.id, role)
portal.solar.add_cooperation_history_item(user_id, institution.id, role)
flash('Vloga spremenjena.')
return redirect(ROUTE_PREFIX + redirect_url())
@app.route('/changeuserrole', methods=['POST'])
@app.route(ROUTE_PREFIX + '/changeuserrole', methods=['POST'])
@login_required
def change_user_role():
institution = portal.solar.get_user_institution(current_user.id)
if not portal.solar.is_admin(current_user.id):
return '', 404
@ -670,14 +758,14 @@ def change_user_role():
if not role in ['admin', 'user']:
flash('Neveljavna vloga.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
portal.solar.update_user_role(user_id, role)
flash('Vloga spremenjena.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
@app.route('/changeusername', methods=['POST'])
@app.route(ROUTE_PREFIX + '/changeusername', methods=['POST'])
@login_required
def change_user_name():
if not portal.solar.is_admin(current_user.id):
@ -689,9 +777,9 @@ def change_user_name():
portal.solar.update_user_name(user_id, name)
flash('Ime in priimek spremenjena.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
@app.route('/addusertoinstitution', methods=['POST'])
@app.route(ROUTE_PREFIX + '/addusertoinstitution', methods=['POST'])
@login_required
def add_user_institution_mapping():
institution_id = request.form.get('institution_id')
@ -700,7 +788,7 @@ def add_user_institution_mapping():
if institution:
institution_id = institution.id
if not (portal.solar.is_admin(current_user.id) or portal.solar.is_institution_coordinator(current_user.id, institution_id)):
if not portal.solar.is_admin(current_user.id):
return '', 404
user_id = request.form['user_id']
@ -710,36 +798,145 @@ def add_user_institution_mapping():
if portal.solar.get_user_institution(user_id):
flash('Uporabnik je že dodeljen instituciji.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
portal.solar.add_user_to_institution(user_id, institution_id, role)
portal.solar.add_cooperation_history_item(user_id, institution_id, role)
flash('Uporabnik je bil dodeljen instituciji.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
@app.route('/deluserfrominstitution', methods=['POST'])
@app.route(ROUTE_PREFIX + '/deluserfrominstitution', methods=['POST'])
@login_required
def del_user_institution_mapping():
user_id = request.form['user_id']
institution = portal.solar.get_user_institution(user_id)
if not institution:
flash('Uporabnik ni član nobene institucije.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
if not portal.solar.is_admin(current_user.id) \
and not portal.solar.is_institution_coordinator(current_user.id, institution.id):
flash('Nimate ustreznih pravic za odstranitev uporabnika iz institucije.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
portal.solar.del_user_from_institution(user_id, institution.id)
flash('Uporabnik je bil odstranjen iz institucije.')
return redirect(redirect_url())
return redirect(ROUTE_PREFIX + redirect_url())
@app.route('/upload', methods=['POST'])
@app.route(ROUTE_PREFIX + '/upload', methods=['POST'])
def handle_upload():
if not current_user.is_authenticated:
return '', 404
return upload_handler_solar.handle_upload(request, current_user.get_id())
@app.route(ROUTE_PREFIX + '/getuploadfile/<upload_id>/<file_hash>', methods=['GET'])
@login_required
def get_upload_file(upload_id, file_hash):
is_admin = current_user.role == 'admin'
current_user_institution = portal.solar.get_user_institution(current_user.id)
upload_obj = portal.solar.get_upload_object(upload_id)
if current_user_institution.id != upload_obj.institution:
return '', 404
file_hashes = upload_obj.upload_file_hashes
if file_hash not in upload_obj.upload_file_hashes:
return '', 404
prefix = file_hash[:2]
suffix = file_hash[2:]
safe_path = safe_join(str(upload_handler_solar.get_uploads_subdir('files')), prefix, suffix)
f_name = os.listdir(safe_path)[0]
safe_path = safe_join(safe_path, f_name)
f_suffix = f_name.split('.')[-1]
f_dlname = upload_obj.upload_file_codes[file_hashes.index(file_hash)]
if f_suffix in portal.solar.UploadHandlerSolar.ENABLED_FILETYPES:
f_dlname += '.' + f_suffix
try:
return send_file(safe_path, attachment_filename=f_dlname, as_attachment=True)
except FileNotFoundError:
return '', 404
@app.route(ROUTE_PREFIX + '/institutionadduser', methods=['POST'])
@login_required
def solar_institution_add_user():
current_user_institution = portal.solar.get_user_institution(current_user.id)
if not portal.solar.is_institution_coordinator(current_user.id, current_user_institution.id):
return '', 404
name = request.form.get('name')
email = request.form.get('email')
role = request.form.get('role')
password=''.join(random.choices(string.ascii_lowercase, k=8))
if not name:
flash('Prazno polje za ime.')
return redirect(ROUTE_PREFIX + redirect_url())
if len(name) > 100:
flash('Predolgo ime.')
return redirect(ROUTE_PREFIX + redirect_url())
if not email:
flash('Prazno polje za elektronsko pošto.')
return redirect(ROUTE_PREFIX + redirect_url())
if len(email) > 100:
flash('Predolg email naslov.')
return redirect(ROUTE_PREFIX + redirect_url())
elif not re.search(portal.solar.REGEX_EMAIL, email):
flash('Email napačnega formata.')
return redirect(ROUTE_PREFIX + redirect_url())
if not password:
flash('Prazno polje za geslo.')
return redirect(ROUTE_PREFIX + redirect_url())
if len(password) > 100:
flash('Predolgo geslo.')
return redirect(ROUTE_PREFIX + redirect_url())
user = portal.solar.get_user_obj_by_email(email)
if user:
#portal.solar.undo_remove_user(user.id)
flash('Uporabnik s tem emailom je že vnešen v sistem.')
return redirect(ROUTE_PREFIX + redirect_url())
new_user_id = portal.solar.register_new_user(name, email, password)
portal.solar.add_user_to_institution(new_user_id, current_user_institution.id, role)
portal.solar.add_cooperation_history_item(new_user_id, current_user_institution.id, role)
portal.solar.activate_user(new_user_id)
#token za nastaviti geslo
jwt_token = portal.solar.get_password_reset_token(email, config['APP_SECRET_KEY'])
#pošlji email uporabniku
body = '''
Ustvarjen je bil uporabniški račun na Portalu Šolar.
Geslo lahko nastavite na naslednji povezavi: https://{}/resetpass/{}'''.format(config['SERVER_NAME'], jwt_token)
message = MIMEMultipart()
message['From'] = config['MAIL_LOGIN']
message['To'] = email
message['Subject'] = 'Portal Šolar: Registracija uporabniškega računa'
message.attach(MIMEText(body, "plain"))
text = message.as_string()
# Create a secure SSL context
context = ssl.create_default_context()
try:
with SMTP_SSL(config['MAIL_HOST'], config['SMTP_PORT'], context=context) as server:
server.login(config['MAIL_LOGIN'], config['MAIL_PASS'])
server.sendmail(config['MAIL_LOGIN'], email, text)
except Exception:
traceback.print_exc()
flash('Uporabnik je bil uspešno dodan.')
return redirect(ROUTE_PREFIX + redirect_url())
if __name__ == '__main__':
app.run(debug=True)

View File

@ -1,4 +1,6 @@
[DEFAULT]
SERVER_NAME=localhost:5000
ROUTE_PREFIX=
SQL_CONN_STR=postgresql://portal:randompass123@localhost/portal
MAIL_HOST=posta.cjvt.si
MAIL_LOGIN=oddaja-besedil@cjvt.si
@ -10,8 +12,6 @@ MAX_UPLOAD_SIZE=1000000000
MAX_FILES_PER_UPLOAD=30
UPLOADS_DIR=./uploads
CONTRACT_CLIENT_CONTACT=Testko Tester
DESC_PREVODI=<h2 id="subtitle">Prevodi</h2><p>Strojno prevajanje je ena od uporabnih jezikovnih tehnologij, saj omogoča hitro sporazumevanje med ljudmi iz različnih kultur in jezikovnih okolij. Več o razvoju slovenskega strojnega prevajalnika lahko preberete na tej <a href="https://slovenscina.eu/strojno-prevajanje">povezavi</a>. Za kakovosten strojni prevajalnik so ključnega pomena prevodi, iz kateri se algoritmi umetne inteligence naučijo prevajati. S prispevanjem besedil v korpus prevodov boste pomembno prispevali k razvoju slovenskega strojnega prevajalnika med angleščino in slovenščino. Več informacij o prispevanju besedil najdete <a href="https://slovenscina.eu/zbiranje-besedil">tukaj</a>.</p>
DESC_GIGAFIDA=<h2 id="subtitle">Gigafida</h2><p><a href="https://viri.cjvt.si/gigafida/">Gigafida</a> je referenčni korpus pisne slovenščine. Besedila so izbrana in strojno obdelana z namenom, da bi korpus kot vzorec sodobne standardne slovenščine lahko služil za jezikoslovne in druge humanistične raziskave, izdelavo sodobnih slovarjev, slovnic, učnih gradiv in razvoj jezikovnih tehnologij za slovenščino. S prispevanjem besedil v korpus Gigafida pomembno prispevate k razvoju sodobnih jezikovnih tehnologij za slovenski jezik.</p>
MAIL_SUBJECT=RSDO: pogodba za oddana besedila ({upload_id})
MAIL_BODY=Hvala, ker ste prispevali besedila in na ta način pomagali pri razvoju slovenskega jezika v digitalnem okolju. V prilogi vam pošiljamo pogodbo s seznamom naloženih datotek.

View File

@ -4,6 +4,7 @@ services:
build: .
restart: always
environment:
- PORTALDS4DS1_SERVER_NAME=localhost:5000
- PORTALDS4DS1_SQL_CONN_STR=postgresql://portal:randompass123@db/portal
- PORTALDS4DS1_MAIL_HOST=posta.cjvt.si
- PORTALDS4DS1_MAIL_LOGIN=oddaja-besedil@cjvt.si

View File

@ -0,0 +1,36 @@
"""Altered cooperation history structure.
Revision ID: 0cf2d8f74766
Revises: c7bb822adf9f
Create Date: 2022-02-14 13:04:01.143637
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '0cf2d8f74766'
down_revision = 'c7bb822adf9f'
branch_labels = None
depends_on = None
def upgrade():
# Delete all rows
query = 'DELETE FROM user_cooperation;'
op.execute(query)
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('user_cooperation', sa.Column('timestamp', sa.DateTime(), nullable=False))
op.drop_column('user_cooperation', 'badge_text')
op.drop_column('user_cooperation', 'school_year')
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('user_cooperation', sa.Column('school_year', sa.VARCHAR(), autoincrement=False, nullable=False))
op.add_column('user_cooperation', sa.Column('badge_text', sa.VARCHAR(), autoincrement=False, nullable=True))
op.drop_column('user_cooperation', 'timestamp')
# ### end Alembic commands ###

View File

@ -0,0 +1,28 @@
"""Added upload file names column.
Revision ID: 0d9dd68fd94b
Revises: 44dae32b13af
Create Date: 2021-12-14 10:52:34.326600
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '0d9dd68fd94b'
down_revision = '44dae32b13af'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('upload_solar', sa.Column('upload_file_names', sa.ARRAY(sa.String()), nullable=True))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('upload_solar', 'upload_file_names')
# ### end Alembic commands ###

View File

@ -0,0 +1,30 @@
"""Added upload file codes column.
Revision ID: c7bb822adf9f
Revises: 0d9dd68fd94b
Create Date: 2021-12-20 09:00:57.208921
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'c7bb822adf9f'
down_revision = '0d9dd68fd94b'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('upload_solar', sa.Column('region', sa.String(), nullable=True))
op.add_column('upload_solar', sa.Column('upload_file_codes', sa.ARRAY(sa.String()), nullable=True))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('upload_solar', 'upload_file_codes')
op.drop_column('upload_solar', 'region')
# ### end Alembic commands ###

View File

@ -19,6 +19,7 @@ class UploadSolar(db.Model):
institution = db.Column(db.Integer, sqlalchemy.ForeignKey('institution.id'), nullable=True)
upload_hash = db.Column(db.String, nullable=False)
timestamp = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
region = db.Column(db.String, nullable=True)
program = db.Column(db.String, nullable=True)
subject = db.Column(db.String, nullable=True)
subject_custom = db.Column(db.String, nullable=True)
@ -28,6 +29,8 @@ class UploadSolar(db.Model):
school_year = db.Column(db.String, nullable=True)
grammar_corrections = db.Column(db.String, nullable=True)
upload_file_hashes = db.Column(sqlalchemy.types.ARRAY(db.String), nullable=True)
upload_file_names = db.Column(sqlalchemy.types.ARRAY(db.String), nullable=True)
upload_file_codes = db.Column(sqlalchemy.types.ARRAY(db.String), nullable=True)
class ContractsSolar(db.Model):
@ -68,8 +71,7 @@ class UserCooperationHistory(db.Model):
user = db.Column(db.Integer, sqlalchemy.ForeignKey('registered_user.id'), nullable=False)
institution = db.Column(db.Integer, sqlalchemy.ForeignKey('institution.id'), nullable=False)
role = db.Column(db.String, nullable=False)
school_year = db.Column(db.String, nullable=False)
badge_text = db.Column(db.String, nullable=True)
timestamp = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
class Institution(db.Model):

View File

@ -6,15 +6,11 @@ import traceback
import ssl
from datetime import datetime
from sqlalchemy import desc
from collections import Counter
from sqlalchemy import func
from pathlib import Path
import imaplib
from smtplib import SMTP_SSL
import email
from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
@ -29,10 +25,11 @@ from werkzeug.security import generate_password_hash
from . model import *
VALID_PROGRAMS = {'OS', 'SSG', 'MGP', 'ZG', 'NPI', 'SPI', 'SSI', 'PTI'}
VALID_SUBJECTS = {'slo', 'drug-jez', 'drug-druz', 'drug-narav', 'drug-strok', 'drug-izb'}
VALID_TEXT_TYPES = {'esej-spis', 'prakticno', 'solski-test', 'delo-v-razredu'}
VALID_GRAMMAR_CORRECTIONS = {'popr-ne', 'brez-popr', 'popr-da'}
VALID_SUBJECTS = {'SLO', 'DJP', 'DDP', 'DNP', 'DSP', 'DIP'}
VALID_TEXT_TYPES = {'E', 'PB', 'T', 'R'}
VALID_GRAMMAR_CORRECTIONS = {'DD', 'N', 'DN'}
VALID_REGIONS = {'CE', 'GO', 'KK', 'KP', 'KR', 'LJ', 'MB', 'MS', 'NM', 'PO', 'SG'}
#REGEX_EMAIL = re.compile('^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w{2,3}$')
@ -48,7 +45,6 @@ class ContractCreator:
template_loader = FileSystemLoader(searchpath="./")
template_env = Environment(loader=template_loader)
self.template = template_env.get_template(template_path)
self.pdfkit_options = {
'page-size': 'A4',
'margin-top': '0.75in',
@ -74,7 +70,7 @@ class ContractCreator:
class UploadHandlerSolar():
ENABLED_FILETYPES = ['txt', 'csv', 'pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'xml', 'mxliff', 'tmx', 'jpg', 'jpeg', 'png']
def __init__(self, **kwargs):
self.config = kwargs
@ -154,25 +150,49 @@ class UploadHandlerSolar():
timestamp = datetime.fromtimestamp(upload_metadata['timestamp'])
form_data = upload_metadata['form_data']
file_hashes = upload_metadata['file_hashes_dict']
sorted_f_hashes = list(file_hashes.values())
sorted_f_hashes.sort()
sorted_file_items = sorted(file_hashes.items(), key=lambda item: item[1])
institution_id = get_user_institution(user_id).id
region = form_data['regija']
program = form_data['program']
subject = form_data['predmet'],
subject_custom = form_data['predmet-custom'],
grade = form_data['letnik'],
text_type = form_data['vrsta'],
text_type_custom = form_data['vrsta-custom'],
school_year = form_data['solsko-leto'],
grammar_corrections = form_data['jezikovni-popravki'],
upload_file_codes = []
for i in range(len(sorted_file_items)):
file_code = '{}_{}_{}_{}_{}_{}_{}_{}'.format(
region,
program,
subject[0],
grade[0],
text_type[0],
school_year[0],
grammar_corrections[0],
i)
upload_file_codes.append(file_code)
model_obj = UploadSolar(
upload_user = user_id,
institution = institution_id,
upload_hash=upload_metadata['upload_id'],
timestamp=timestamp,
program=form_data['program'],
subject=form_data['predmet'],
subject_custom=form_data['predmet-custom'],
grade=form_data['letnik'],
text_type=form_data['vrsta'],
text_type_custom=form_data['vrsta-custom'],
school_year=form_data['solsko-leto'],
grammar_corrections=form_data['jezikovni-popravki'],
upload_file_hashes=sorted_f_hashes
region=region,
program=program,
subject=subject,
subject_custom=subject_custom,
grade=grade,
text_type=text_type,
text_type_custom=text_type_custom,
school_year=school_year,
grammar_corrections=grammar_corrections,
upload_file_hashes=[x[1] for x in sorted_file_items],
upload_file_names=[x[0] for x in sorted_file_items],
upload_file_codes=upload_file_codes,
)
UploadHandlerSolar.store_model(model_obj)
@ -218,7 +238,7 @@ class UploadHandlerSolar():
# Store to database.
self.store_metadata(upload_metadata, user_id)
return 'Uspešno ste oddali datotek(e). Št. datotek: {}'.format(len(request.files))
return 'Število uspešno oddanih datotek: {}. Podatki o oddaji so na voljo v zavihku Zgodovina sodelovanja.'.format(len(request.files))
def handle_contract_upload(self, request, user_id):
contract_type = request.form['tip-pogodbe']
@ -282,6 +302,7 @@ class UploadHandlerSolar():
@staticmethod
def check_form(form):
region = form['regija']
program = form['program']
predmet = form['predmet']
letnik = int(form['letnik'])
@ -289,6 +310,8 @@ class UploadHandlerSolar():
solsko_leto = form['solsko-leto']
jezikovni_popravki = form['jezikovni-popravki']
if region not in VALID_REGIONS:
return 'Invalid region "{}"'.format(region)
if program not in VALID_PROGRAMS:
return 'Invalid program "{}"'.format(program)
if predmet not in VALID_SUBJECTS:
@ -393,6 +416,9 @@ def get_upload_history(user_id, n=20):
def get_institution_upload_history(institution_id, n=20):
return UploadSolar.query.filter_by(institution=institution_id).order_by(desc(UploadSolar.timestamp)).limit(n).all()
def get_upload_object(upload_id):
return UploadSolar.query.filter_by(id=upload_id).first()
def get_all_upload_history(n=20):
if n == -1:
return UploadSolar.query.order_by(desc(UploadSolar.timestamp)).all()
@ -433,6 +459,63 @@ def get_top_uploading_institutions():
return dict(sorted(res.items(), key=lambda x:x[1], reverse=True))
def get_top_uploading_users(institution_id):
res = dict()
users = get_all_active_institution_users(institution_id)
for user in users:
uploads = UploadSolar.query.filter_by(upload_user=user.id).all()
for upload in uploads:
if user.name not in res:
res[user.name] = 0
res[user.name] += len(upload.upload_file_hashes)
if len(res) >= 5:
return dict(sorted(res.items(), key=lambda x:x[1], reverse=True)[:5])
return dict(sorted(res.items(), key=lambda x:x[1], reverse=True))
def get_institution_upload_stats(institution_id):
res = {
'region': [],
'program': [],
}
# Region
for region in VALID_REGIONS:
count = UploadSolar.query.filter_by(institution=institution_id, region=region).count()
res['region'].append((region, count))
res['region'] = sorted(res['region'], key=lambda x:x[1], reverse=True)
# Program
for program in VALID_PROGRAMS:
count = UploadSolar.query.filter_by(institution=institution_id, program=program).count()
res['program'].append((program, count))
res['program'] = sorted(res['program'], key=lambda x:x[1], reverse=True)
return res
def get_region_stats():
ret = {'CE': [0,0], 'GO': [0,0], 'KK': [0,0], 'KP': [0,0], 'KR': [0,0], 'LJ': [0,0], 'MB': [0,0], 'MS': [0,0], 'NM': [0,0], 'PO': [0,0], 'SG': [0,0]}
os = db.session.query(UploadSolar.region, func.count(UploadSolar.id)).filter_by(program="OS").group_by(UploadSolar.region).all()
neos = db.session.query(UploadSolar.region, func.count(UploadSolar.id)).filter(sqlalchemy.not_(UploadSolar.program.contains("OS"))).group_by(UploadSolar.region).all()
#logging.error(os)
#logging.error(neos)
for key, val in os:
if key not in VALID_REGIONS:
continue
ret[key][0] = val
for key, val in neos:
if key not in VALID_REGIONS:
continue
ret[key][1] = val
logging.error(ret)
return ret
def get_all_active_users():
# TODO: do filtering purely within an SQL query
res = []
@ -442,8 +525,9 @@ def get_all_active_users():
res.append(user)
return res
def update_upload_item(item_id, program, subject, subject_custom, grade, text_type, text_type_custom, school_year, grammar_corrections):
def update_upload_item(item_id, region, program, subject, subject_custom, grade, text_type, text_type_custom, school_year, grammar_corrections):
rowcount = db.session.query(UploadSolar).filter_by(id=item_id).update({
'region': region,
'program': program,
'subject': subject,
'subject_custom': subject_custom,
@ -468,20 +552,48 @@ def get_institution_contract(institution_id):
def get_institution_cooperation_history(institution_id):
#return CooperationToken.query.join(UserCooperationTokenMapping,
# UserCooperationTokenMapping.cooperation_token == CooperationToken.id).filter(UserCooperationTokenMapping.user == user_id).all()
#
res = dict()
items = db.session.query(UserCooperationHistory.role,
UserCooperationHistory.timestamp,
RegisteredUser.id,
RegisteredUser.name
).select_from(
UserCooperationHistory,
).join(
RegisteredUser,
UserCooperationHistory.user == RegisteredUser.id,
).filter(
UserCooperationHistory.institution == institution_id,
).order_by(UserCooperationHistory.timestamp.desc()).all()
uch_rows = UserCooperationHistory.query.filter_by(institution=institution_id).order_by(UserCooperationHistory.school_year.desc()).all()
for row in uch_rows:
if row.user not in res:
res[row.user] = {
'coordinator': [],
'mentor': [],
'other': []
}
res[row.user][row.role].append((row.school_year, row.badge_text))
return items
res = []
prev_schoolyear = None
item_buff = []
users_seen = set()
for item in items:
timestamp = item.timestamp
year = timestamp.year
month = timestamp.month
if month >= 9 :
school_year = '{}/{}'.format(year, str(year+1)[-2:])
else:
school_year = '{}/{}'.format(year-1, str(year)[-2:])
if school_year != prev_schoolyear:
if len(item_buff) > 0:
res.append((prev_schoolyear, item_buff))
prev_schoolyear = school_year
item_buff = []
users_seen = set()
if not item.id in users_seen:
users_seen.add(item.id)
item_buff.append(item)
if len(item_buff) > 0:
res.append((prev_schoolyear, item_buff))
return res
@ -490,21 +602,20 @@ def get_cooperation_history():
return UserCooperationHistory.query.all()
def add_cooperation_history_item(user_id, institution_id, role, school_year, badge_text):
def add_cooperation_history_item(user_id, institution_id, role):
model_obj = UserCooperationHistory(
user=user_id,
institution=institution_id,
role=role,
school_year=school_year,
badge_text=badge_text
timestamp=datetime.now()
)
db.session.add(model_obj)
db.session.commit()
return model_obj.id
def del_cooperation_history_item(entry_id):
db.session.query(UserCooperationHistory).filter_by(id=entry_id).delete()
db.session.commit()
#def del_cooperation_history_item(entry_id):
# db.session.query(UserCooperationHistory).filter_by(id=entry_id).delete()
# db.session.commit()
def has_user_corpus_access(user_id, corpus_name):
user = RegisteredUser.query.filter_by(id=user_id).first()
@ -540,7 +651,6 @@ def get_user_obj_by_email(email):
def get_institution_obj(institution_id):
return Institution.query.filter_by(id=institution_id).first()
def get_institution_obj_by_name(institution_name):
return Institution.query.filter_by(name=institution_name).first()
@ -609,6 +719,12 @@ def update_user_role(user_id, role):
return rowcount
def update_user_institution_role(user_id, institution_id, role):
rowcount = db.session.query(UserInstitutionMapping).filter_by(user=user_id, institution=institution_id).update({'role': role})
db.session.commit()
return rowcount
def update_user_email(user_id, new_email):
rowcount = db.session.query(RegisteredUser).filter_by(id=user_id).update({'email': new_email})
db.session.commit()
@ -651,6 +767,22 @@ def del_user_from_institution(user_id, institution_id):
db.session.commit()
def get_user_institution_role_str(user_id, institution_id):
res = UserInstitutionMapping.query.filter_by(
user=user_id
).filter_by(
institution=institution_id
).first()
if not res:
return ''
role_str_map = {
'coordinator': 'Koordinator/-ka',
'mentor': 'Mentor/-ica',
'other': 'Druga vloga'
}
return role_str_map[res.role]
def get_all_active_users():
return RegisteredUser.query.filter_by(active=True).order_by(RegisteredUser.id).all()
@ -665,7 +797,6 @@ def get_all_users_join_institutions(active=True):
RegisteredUser.id == UserInstitutionMapping.user).filter(RegisteredUser.active == active).order_by(RegisteredUser.id).all()
def get_all_active_institution_users(institution_id):
return RegisteredUser.query.filter_by(active=True).join(UserInstitutionMapping,
RegisteredUser.id == UserInstitutionMapping.user).filter(UserInstitutionMapping.institution == institution_id).all()
@ -702,9 +833,11 @@ def get_actual_studentparent_contract_filename(f_hash):
def get_password_reset_token(email, key, expires=600):
return jwt.encode({'reset_password': email,
token = jwt.encode({'reset_password': email,
'exp': int(time.time()) + expires},
key=key, algorithm='HS256')
logging.error(token)
return token
def transfer_users_institution(institution_id_from, institution_id_to):
@ -749,12 +882,11 @@ def send_resetpass_mail(email, config):
body = '''
Zahtevali ste ponastavitev gesla vašega uporabniškega računa.
Geslo lahko ponastavite na naslednji povezavi: https://zbiranje.slovenscina.eu/solar/resetpass/{}'''.format(jwt_token)
Geslo lahko ponastavite na naslednji povezavi: https://{}/resetpass/{}'''.format(config['SERVER_NAME'], jwt_token)
message = MIMEMultipart()
message['From'] = config['MAIL_LOGIN']
message['To'] = email
message['Subject'] = 'Ponastavitev gesla'
message['Subject'] = 'Portal Šolar: Ponastavitev gesla'
message.attach(MIMEText(body, "plain"))
text = message.as_string()
@ -803,7 +935,7 @@ def send_user_activation_mail(user_id, config):
message = MIMEMultipart()
message['From'] = config['MAIL_LOGIN']
message['To'] = user.email
message['Subject'] = 'Ponastavitev gesla'
message['Subject'] = 'Portal Šolar: Registracija potrjena'
message.attach(MIMEText(body, "plain"))
text = message.as_string()
@ -817,3 +949,4 @@ def send_user_activation_mail(user_id, config):
except Exception:
traceback.print_exc()

209
static/css/contracts.css Normal file
View File

@ -0,0 +1,209 @@
@import url(https://fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic,900,900italic,300italic,300,100italic,100);
html {
font-family: 'Roboto', sans-serif;
font-size: 16px;
color: #46535B;
}
body {
font-size: 16px;
padding: 0;
margin: 0;
}
h1 {
font-size: 30px;
font-style: normal;
font-weight: 300;
line-height: 35px;
color: #006CB7;
}
h2 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
text-transform: uppercase;
color: #006CB7;
}
h3 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
}
em {
font-weight: 300;
}
.btn {
border: none;
line-height: 2.5rem;
padding: 0 2.5rem;
color: white;
background: #006CB7;
border-radius: 20px;
font-size: 1.125rem;
font-weight: 400;
cursor: pointer;
-webkit-transition: opacity 0.3s ease-out;
transition: opacity 0.3s ease-out;
}
.btn:hover {
opacity: 0.8;
}
.btn:disabled {
cursor: default;
opacity: 0.5;
}
.panel {
background: #F5F5F5;
padding: 40px 60px;
border-radius: 20px;
max-width: 30rem;
}
.panel .panel-logo {
position: absolute;
top: -60px;
left: 0;
right: 0;
display: block;
margin: auto;
background: #F5F5F5;
padding: 20px 30px;
width: 100px;
border-radius: 100%;
text-align: center;
}
.line {
background: #C4C4C4;
height: 2px;
width: 200px;
margin: auto;
}
.a-right {
display: block;
text-align: right;
font-size: 10px;
text-decoration: none;
color: #006CB7;
text-transform: uppercase;
}
.alert {
position: relative;
color: #8D3D3D;
margin-bottom: 2rem;
}
.alert.alert-success {
color: #88B52F;
}
.alert img {
position: relative;
top: 0.25rem;
width: 1.8rem;
}
.alert p {
position: absolute;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
height: 2rem;
left: 3rem;
top: 0;
margin: 0;
text-transform: uppercase;
}
.submit-alert {
background: white;
border: 2px solid #B7DB70;
-webkit-box-sizing: border-box;
box-sizing: border-box;
border-radius: 8px;
}
.submit-alert .btn {
margin-top: 0.5rem;
background: #88B52F;
border-radius: 4px;
}
.contract-item {
position: relative;
margin-left: 3rem;
border-bottom: 1px solid #C4C4C4;
padding-bottom: 1.25rem;
}
.contract-item .contract-item-icon {
position: absolute;
left: -3rem;
top: 0;
width: 2rem;
height: 2rem;
}
.contract-item .contract-item-title {
font-weight: 500;
font-size: 0.875rem;
line-height: 1rem;
}
.contract-item .contract-item-date {
font-weight: normal;
font-size: 0.625rem;
line-height: 0.75rem;
text-transform: uppercase;
}
.contract-item .contract-item-download {
position: absolute;
right: 0;
top: 1rem;
font-size: 0.75rem;
line-height: 0.825rem;
text-transform: uppercase;
color: #006CB7;
text-decoration: none;
}
.team-item {
background: white;
width: 100%;
padding-left: 1rem;
position: relative;
margin-bottom: 1rem;
}
.team-item .team-item-name {
line-height: 3.25rem;
}
.team-item .team-item-name .team-item-role {
color: #848C90;
margin-left: 1rem;
}
/*# sourceMappingURL=contracts.css.map */

View File

@ -0,0 +1,11 @@
{
"version": 3,
"mappings": "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",
"sources": [
"contracts.scss",
"slovenscina-elements.scss",
"slovenscina-theme.scss"
],
"names": [],
"file": "contracts.css"
}

52
static/css/contracts.scss Normal file
View File

@ -0,0 +1,52 @@
@import "slovenscina-elements.scss";
.contract-item {
position:relative;
margin-left:3rem;
border-bottom: 1px solid $grey;
padding-bottom:1.25rem;
.contract-item-icon {
position:absolute;
left:-3rem;
top:0;
width:2rem;
height:2rem;
}
.contract-item-title {
font-weight: 500;
font-size: 0.875rem;
line-height: 1rem;
}
.contract-item-date {
font-weight: normal;
font-size: 0.625rem;
line-height: 0.75rem;
text-transform: uppercase;
}
.contract-item-download {
position:absolute;
right:0;
top:1rem;
font-size: 0.75rem;
line-height: 0.825rem;
text-transform: uppercase;
color:$blue;
text-decoration: none;
}
}
.team-item {
background:white;
width:100%;
padding-left:1rem;
position:relative;
margin-bottom:1rem;
.team-item-name {
line-height:3.25rem;
.team-item-role {
color:$grey-dark;
margin-left:1rem;
}
}
}

46
static/css/footer.css Normal file
View File

@ -0,0 +1,46 @@
footer {
color: #3a464e;
background-color: #d9d9d9;
padding-top: 44px;
padding-bottom: 44px;
font-size: 14px;
}
footer a {
color: inherit;
text-decoration: none;
font-weight: 300;
}
footer a:hover {
color: #006CB7;
}
footer .container {
max-width: 1280px;
padding-right: 4rem;
padding-left: 4rem;
}
footer .container .links-grid {
display: -ms-grid;
display: grid;
-ms-grid-columns: (minmax(0, 1fr))[2];
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 0.875rem;
list-style: none;
margin: 0;
padding: 0;
}
footer .container .logos {
margin-top: 10px;
-webkit-column-gap: 2.75rem;
column-gap: 2.75rem;
place-items: center;
-ms-grid-columns: (minmax(0, 1fr))[2];
grid-template-columns: repeat(2, minmax(0, 1fr));
display: -ms-grid;
display: grid;
}
/*# sourceMappingURL=footer.css.map */

View File

@ -0,0 +1,9 @@
{
"version": 3,
"mappings": "AAAA,AAAA,MAAM,CAAC;EACH,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO;EACzB,WAAW,EAAC,IAAI;EAChB,cAAc,EAAC,IAAI;EACnB,SAAS,EAAC,IAAI;CA6BjB;;AAlCD,AAMI,MANE,CAMF,CAAC,CAAC;EACE,KAAK,EAAC,OAAO;EACb,eAAe,EAAE,IAAI;EACrB,WAAW,EAAE,GAAG;CAInB;;AAbL,AAUQ,MAVF,CAMF,CAAC,AAII,MAAM,CAAC;EACJ,KAAK,EAAC,OAAO;CAChB;;AAZT,AAcI,MAdE,CAcF,UAAU,CAAC;EACP,SAAS,EAAE,MAAM;EACjB,aAAa,EAAE,IAAI;EACnB,YAAY,EAAE,IAAI;CAgBrB;;AAjCL,AAkBQ,MAlBF,CAcF,UAAU,CAIN,WAAW,CAAC;EACR,OAAO,EAAE,IAAI;EACb,qBAAqB,EAAE,yBAAuB;EAC9C,GAAG,EAAE,QAAQ;EACb,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;CACb;;AAzBT,AA0BQ,MA1BF,CAcF,UAAU,CAYN,MAAM,CAAC;EACH,UAAU,EAAC,IAAI;EACf,UAAU,EAAE,OAAO;EACnB,WAAW,EAAE,MAAM;EACnB,qBAAqB,EAAE,yBAAuB;EAC9C,OAAO,EAAE,IAAI;CAChB",
"sources": [
"footer.scss"
],
"names": [],
"file": "footer.css"
}

35
static/css/footer.scss Normal file
View File

@ -0,0 +1,35 @@
footer {
color: #3a464e;
background-color: #d9d9d9;
padding-top:44px;
padding-bottom:44px;
font-size:14px;
a {
color:inherit;
text-decoration: none;
font-weight: 300;
&:hover {
color:#006CB7;
}
}
.container {
max-width: 1280px;
padding-right: 4rem;
padding-left: 4rem;
.links-grid {
display: grid;
grid-template-columns: repeat(2,minmax(0,1fr));
gap: 0.875rem;
list-style: none;
margin: 0;
padding: 0;
}
.logos {
margin-top:10px;
column-gap: 2.75rem;
place-items: center;
grid-template-columns: repeat(2,minmax(0,1fr));
display: grid;
}
}
}

284
static/css/form.css Normal file
View File

@ -0,0 +1,284 @@
@import url(https://fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic,900,900italic,300italic,300,100italic,100);
html {
font-family: 'Roboto', sans-serif;
font-size: 16px;
color: #46535B;
}
body {
font-size: 16px;
padding: 0;
margin: 0;
}
h1 {
font-size: 30px;
font-style: normal;
font-weight: 300;
line-height: 35px;
color: #006CB7;
}
h2 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
text-transform: uppercase;
color: #006CB7;
}
h3 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
}
em {
font-weight: 300;
}
.btn {
border: none;
line-height: 2.5rem;
padding: 0 2.5rem;
color: white;
background: #006CB7;
border-radius: 20px;
font-size: 1.125rem;
font-weight: 400;
cursor: pointer;
-webkit-transition: opacity 0.3s ease-out;
transition: opacity 0.3s ease-out;
}
.btn:hover {
opacity: 0.8;
}
.btn:disabled {
cursor: default;
opacity: 0.5;
}
.panel {
background: #F5F5F5;
padding: 40px 60px;
border-radius: 20px;
max-width: 30rem;
}
.panel .panel-logo {
position: absolute;
top: -60px;
left: 0;
right: 0;
display: block;
margin: auto;
background: #F5F5F5;
padding: 20px 30px;
width: 100px;
border-radius: 100%;
text-align: center;
}
.line {
background: #C4C4C4;
height: 2px;
width: 200px;
margin: auto;
}
.a-right {
display: block;
text-align: right;
font-size: 10px;
text-decoration: none;
color: #006CB7;
text-transform: uppercase;
}
.alert {
position: relative;
color: #8D3D3D;
margin-bottom: 2rem;
}
.alert.alert-success {
color: #88B52F;
}
.alert img {
position: relative;
top: 0.25rem;
width: 1.8rem;
}
.alert p {
position: absolute;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
height: 2rem;
left: 3rem;
top: 0;
margin: 0;
text-transform: uppercase;
}
.submit-alert {
background: white;
border: 2px solid #B7DB70;
-webkit-box-sizing: border-box;
box-sizing: border-box;
border-radius: 8px;
}
.submit-alert .btn {
margin-top: 0.5rem;
background: #88B52F;
border-radius: 4px;
}
.form-wrapper {
margin-bottom: 1rem;
}
.form-wrapper label {
display: block;
font-weight: normal;
font-size: 0.75rem;
line-height: 0.875rem;
text-transform: uppercase;
}
.form-wrapper select {
display: block;
background: #FFFFFF;
border: 1px solid #B6BEC3;
padding: 0.75rem 1rem;
width: 100%;
}
.form-wrapper input[type="text"] {
-webkit-box-sizing: border-box;
box-sizing: border-box;
display: block;
background: #FFFFFF;
border: 1px solid #B6BEC3;
padding: 0.75rem 1rem;
width: 100%;
}
.form-wrapper input[type="radio"] {
float: left;
margin: 0;
margin-right: 0.5rem;
}
.form-wrapper .dropzone {
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding: 0.5rem;
height: 4.5rem;
background: #E0E6EA;
}
.form-wrapper .dropzone .dz-default.dz-message {
-webkit-box-sizing: border-box;
box-sizing: border-box;
display: block;
height: 3.5rem;
text-align: center;
border: 2px dashed white;
}
.form-wrapper .dropzone .dz-default.dz-message span {
display: inline-block;
background: #006CB7;
border-radius: 6px;
color: white;
padding: 0.5rem 0.75rem;
margin-top: 0.5rem;
cursor: pointer;
}
.form-wrapper .dz-preview.dz-file-preview {
position: relative;
background: white;
height: 4.5rem;
margin-top: 1rem;
}
.form-wrapper .dz-preview.dz-file-preview .dz-image {
position: absolute;
left: 1rem;
top: 1rem;
background: url(/static/image/file.svg);
background-repeat: no-repeat;
background-position: center;
width: 2rem;
height: 2rem;
}
.form-wrapper .dz-preview.dz-file-preview .dz-image img {
display: none;
}
.form-wrapper .dz-preview.dz-file-preview .dz-details .dz-filename {
position: absolute;
top: 1.5rem;
left: 4rem;
width: 50%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.form-wrapper .dz-preview.dz-file-preview .dz-details .dz-size {
position: absolute;
top: 1.5rem;
right: 2.5rem;
}
.form-wrapper .dz-preview.dz-file-preview .dz-success-mark, .form-wrapper .dz-preview.dz-file-preview .dz-error-mark {
display: none;
}
.form-wrapper .dz-preview.dz-file-preview .dz-progress {
position: absolute;
left: 50%;
top: 1.5rem;
width: 28%;
border-radius: 10px;
overflow: hidden;
}
.form-wrapper .dz-preview.dz-file-preview .dz-progress .dz-upload {
height: 20px;
display: inline-block;
background: #006CB7;
}
.form-wrapper .dz-preview.dz-file-preview .dz-remove {
position: absolute;
top: 1.5rem;
right: 1rem;
width: 1rem;
height: 1rem;
background: url(/static/image/trash.svg);
background-repeat: no-repeat;
background-position: center;
}
/*# sourceMappingURL=form.css.map */

11
static/css/form.css.map Normal file

File diff suppressed because one or more lines are too long

114
static/css/form.scss Normal file
View File

@ -0,0 +1,114 @@
@import "slovenscina-elements.scss";
.form-wrapper {
margin-bottom:1rem;
label {
display:block;
font-weight: normal;
font-size: 0.75rem;
line-height: 0.875rem;
text-transform: uppercase;
}
select {
display:block;
background: #FFFFFF;
border: 1px solid $grey-border;
padding: 0.75rem 1rem;
width:100%;
}
input[type="text"] {
box-sizing: border-box;
display:block;
background: #FFFFFF;
border: 1px solid $grey-border;
padding: 0.75rem 1rem;
width:100%;
}
input[type="radio"] {
float:left;
margin:0;
margin-right:0.5rem;
}
.dropzone {
box-sizing: border-box;
padding:0.5rem;
height:4.5rem;
background:#E0E6EA;
.dz-default.dz-message {
box-sizing: border-box;
display: block;
height:3.5rem;
text-align: center;
border:2px dashed white;
span {
display: inline-block;
background: $blue;
border-radius: 6px;
color:white;
padding: 0.5rem 0.75rem;
margin-top:0.5rem;
cursor: pointer;
}
}
}
.dz-preview.dz-file-preview {
position:relative;
background:white;
height:4.5rem;
margin-top:1rem;
.dz-image {
position:absolute;
left:1rem;
top:1rem;
background: url(/static/image/file.svg);
background-repeat: no-repeat;
background-position: center;
width:2rem;
height:2rem;
img {
display: none;
}
}
.dz-details {
.dz-filename {
position:absolute;
top:1.5rem;
left:4rem;
width:50%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.dz-size {
position:absolute;
top:1.5rem;
right:2.5rem;
}
}
.dz-success-mark,.dz-error-mark {display:none;}
.dz-progress {
position:absolute;
left:50%;
top: 1.5rem;
width:28%;
border-radius: 10px;
overflow: hidden;
.dz-upload {
height: 20px;
display: inline-block;
background:$blue;
}
}
.dz-remove {
position:absolute;
top:1.5rem;
right:1rem;
width:1rem;
height:1rem;
background: url(/static/image/trash.svg);
background-repeat: no-repeat;
background-position: center;
}
}
}

292
static/css/header.css Normal file
View File

@ -0,0 +1,292 @@
@import url(https://fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic,900,900italic,300italic,300,100italic,100);
html {
font-family: 'Roboto', sans-serif;
font-size: 16px;
color: #46535B;
}
body {
font-size: 16px;
padding: 0;
margin: 0;
}
h1 {
font-size: 30px;
font-style: normal;
font-weight: 300;
line-height: 35px;
color: #006CB7;
}
h2 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
text-transform: uppercase;
color: #006CB7;
}
h3 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
}
em {
font-weight: 300;
}
.btn {
border: none;
line-height: 2.5rem;
padding: 0 2.5rem;
color: white;
background: #006CB7;
border-radius: 20px;
font-size: 1.125rem;
font-weight: 400;
cursor: pointer;
-webkit-transition: opacity 0.3s ease-out;
transition: opacity 0.3s ease-out;
}
.btn:hover {
opacity: 0.8;
}
.btn:disabled {
cursor: default;
opacity: 0.5;
}
.panel {
background: #F5F5F5;
padding: 40px 60px;
border-radius: 20px;
max-width: 30rem;
}
.panel .panel-logo {
position: absolute;
top: -60px;
left: 0;
right: 0;
display: block;
margin: auto;
background: #F5F5F5;
padding: 20px 30px;
width: 100px;
border-radius: 100%;
text-align: center;
}
.line {
background: #C4C4C4;
height: 2px;
width: 200px;
margin: auto;
}
.a-right {
display: block;
text-align: right;
font-size: 10px;
text-decoration: none;
color: #006CB7;
text-transform: uppercase;
}
.alert {
position: relative;
color: #8D3D3D;
margin-bottom: 2rem;
}
.alert.alert-success {
color: #88B52F;
}
.alert img {
position: relative;
top: 0.25rem;
width: 1.8rem;
}
.alert p {
position: absolute;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
height: 2rem;
left: 3rem;
top: 0;
margin: 0;
text-transform: uppercase;
}
.submit-alert {
background: white;
border: 2px solid #B7DB70;
-webkit-box-sizing: border-box;
box-sizing: border-box;
border-radius: 8px;
}
.submit-alert .btn {
margin-top: 0.5rem;
background: #88B52F;
border-radius: 4px;
}
body {
background: #F5F5F5;
}
header {
position: fixed;
top: 0;
width: 100%;
height: 4rem;
background: #006CB7;
z-index: 1000000;
-webkit-box-shadow: 0px 4px 40px rgba(0, 0, 0, 0.2);
box-shadow: 0px 4px 40px rgba(0, 0, 0, 0.2);
}
header .logo {
display: inline-block;
padding: 0.5rem 1.5rem;
}
header .logo img {
height: 3rem;
}
header .menu-items {
float: right;
padding: 1.5rem 1.5rem;
display: inline-block;
}
header .menu-items a {
margin-left: 2rem;
display: inline-block;
color: white;
text-decoration: none;
}
.tab-nav {
margin-top: 2rem;
border-bottom: 1px solid #848C90;
}
.tab-nav a {
position: relative;
top: 1px;
display: inline-block;
font-weight: 500;
text-transform: uppercase;
font-size: 1.125rem;
padding: 0.25rem 2rem;
text-decoration: none;
color: #848C90;
-webkit-transition: color 0.3s ease-out;
transition: color 0.3s ease-out;
}
.tab-nav a.active, .tab-nav a:hover {
color: #006CB7;
border-bottom: 4px solid #006CB7;
}
h1.title {
font-weight: 300;
font-size: 1.5rem;
line-height: 1.75rem;
margin: 0;
color: #006CB7;
}
p.subtitle {
font-size: 14px;
line-height: 150%;
margin-top: 0.5rem;
}
/* Style The Dropdown Button */
.dropbtn {
color: white;
line-height: 4rem;
border: none;
cursor: pointer;
background: none;
padding: 0 1rem;
}
.dropbtn img {
position: relative;
top: 0.75rem;
}
/* The container <div> - needed to position the dropdown content */
.dropdown {
margin-right: 1rem;
float: right;
display: inline-block;
position: relative;
}
/* Dropdown Content (Hidden by Default) */
.dropdown-content {
display: none;
position: absolute;
right: 0;
background-color: #f9f9f9;
min-width: 160px;
-webkit-box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
z-index: 1;
}
/* Links inside the dropdown */
.dropdown-content a {
color: #848C90;
padding: 0.5rem 1rem;
text-decoration: none;
display: block;
}
.dropdown-content a:hover {
background-color: #f1f1f1;
cursor: pointer;
}
.dropdown-content hr {
margin-top: 0;
margin-bottom: 0;
border-top: 1px solid #B6BEC3;
}
/* Show the dropdown menu on hover */
.dropdown:hover .dropdown-content {
display: block;
}
/* Change the background color of the dropdown button when the dropdown content is shown */
.dropdown:hover .dropbtn {
background: rgba(0, 0, 0, 0.2);
}
/*# sourceMappingURL=header.css.map */

11
static/css/header.css.map Normal file
View File

@ -0,0 +1,11 @@
{
"version": 3,
"mappings": "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",
"sources": [
"header.scss",
"slovenscina-elements.scss",
"slovenscina-theme.scss"
],
"names": [],
"file": "header.css"
}

134
static/css/header.scss Normal file
View File

@ -0,0 +1,134 @@
@import "slovenscina-elements.scss";
body {
background: $white;
}
header {
position:fixed;
top:0;
width:100%;
height:4rem;
background:$blue;
z-index: 1000000;
box-shadow: 0px 4px 40px rgba(0, 0, 0, 0.2);
}
header {
.logo {
display: inline-block;
padding:0.5rem 1.5rem;
img {
height:3rem;
}
}
.menu-items {
float:right;
padding: 1.5rem 1.5rem;
display: inline-block;
a {
margin-left:2rem;
display: inline-block;
color:white;
text-decoration: none;
}
}
}
.tab-nav {
margin-top:2rem;
border-bottom:1px solid $grey-dark;
a {
position:relative;
top:1px;
display: inline-block;
font-weight: 500;
text-transform: uppercase;
font-size: 1.125rem;
padding: 0.25rem 2rem;
text-decoration: none;
color: $grey-dark;
transition: color 0.3s ease-out;
&.active,&:hover {
color:$blue;
border-bottom: 4px solid $blue;
}
}
}
h1.title {
font-weight: 300;
font-size: 1.5rem;
line-height: 1.75rem;
margin:0;
color: $blue;
}
p.subtitle {
font-size: 14px;
line-height: 150%;
margin-top:0.5rem;
}
/* Style The Dropdown Button */
.dropbtn {
color: white;
line-height:4rem;
border: none;
cursor: pointer;
background:none;
padding:0 1rem;
img {
position:relative;
top:0.75rem;
}
}
/* The container <div> - needed to position the dropdown content */
.dropdown {
margin-right:1rem;
float:right;
display: inline-block;
position:relative;
}
/* Dropdown Content (Hidden by Default) */
.dropdown-content {
display: none;
position: absolute;
right:0;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
}
/* Links inside the dropdown */
.dropdown-content {
a {
color: $grey-dark;
padding: 0.5rem 1rem;
text-decoration: none;
display: block;
&:hover {
background-color: #f1f1f1;
cursor:pointer;
}
}
hr {
margin-top:0;
margin-bottom:0;
border-top: 1px solid $grey-border;
}
}
/* Show the dropdown menu on hover */
.dropdown:hover .dropdown-content {
display: block;
}
/* Change the background color of the dropdown button when the dropdown content is shown */
.dropdown:hover .dropbtn {
background:rgba(0,0,0,0.2);
}

283
static/css/history.css Normal file
View File

@ -0,0 +1,283 @@
@import url(https://fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic,900,900italic,300italic,300,100italic,100);
html {
font-family: 'Roboto', sans-serif;
font-size: 16px;
color: #46535B;
}
body {
font-size: 16px;
padding: 0;
margin: 0;
}
h1 {
font-size: 30px;
font-style: normal;
font-weight: 300;
line-height: 35px;
color: #006CB7;
}
h2 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
text-transform: uppercase;
color: #006CB7;
}
h3 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
}
em {
font-weight: 300;
}
.btn {
border: none;
line-height: 2.5rem;
padding: 0 2.5rem;
color: white;
background: #006CB7;
border-radius: 20px;
font-size: 1.125rem;
font-weight: 400;
cursor: pointer;
-webkit-transition: opacity 0.3s ease-out;
transition: opacity 0.3s ease-out;
}
.btn:hover {
opacity: 0.8;
}
.btn:disabled {
cursor: default;
opacity: 0.5;
}
.panel {
background: #F5F5F5;
padding: 40px 60px;
border-radius: 20px;
max-width: 30rem;
}
.panel .panel-logo {
position: absolute;
top: -60px;
left: 0;
right: 0;
display: block;
margin: auto;
background: #F5F5F5;
padding: 20px 30px;
width: 100px;
border-radius: 100%;
text-align: center;
}
.line {
background: #C4C4C4;
height: 2px;
width: 200px;
margin: auto;
}
.a-right {
display: block;
text-align: right;
font-size: 10px;
text-decoration: none;
color: #006CB7;
text-transform: uppercase;
}
.alert {
position: relative;
color: #8D3D3D;
margin-bottom: 2rem;
}
.alert.alert-success {
color: #88B52F;
}
.alert img {
position: relative;
top: 0.25rem;
width: 1.8rem;
}
.alert p {
position: absolute;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
height: 2rem;
left: 3rem;
top: 0;
margin: 0;
text-transform: uppercase;
}
.submit-alert {
background: white;
border: 2px solid #B7DB70;
-webkit-box-sizing: border-box;
box-sizing: border-box;
border-radius: 8px;
}
.submit-alert .btn {
margin-top: 0.5rem;
background: #88B52F;
border-radius: 4px;
}
.history-item {
background: white;
min-height: 2.875rem;
max-height: 2.875rem;
padding: 1rem 1.5rem;
position: relative;
-webkit-transition: max-height 1s ease-out;
transition: max-height 1s ease-out;
cursor: pointer;
overflow: hidden;
}
.history-item .history-item-chevron {
position: absolute;
bottom: 1rem;
right: 1rem;
}
.history-item .history-item-date {
text-transform: uppercase;
display: inline-block;
color: #848C90;
line-height: 1rem;
font-weight: 400;
font-size: 0.875rem;
}
.history-item .history-item-uploader {
display: inline-block;
padding-left: 1rem;
margin-left: 1rem;
border-left: 1px solid #848C90;
color: #848C90;
line-height: 1rem;
font-weight: 400;
font-size: 0.875rem;
}
.history-item .history-item-filecount {
position: absolute;
top: 1rem;
right: 1rem;
color: #006CB7;
line-height: 1rem;
font-weight: 400;
font-size: 0.875rem;
}
.history-item .history-item-desc {
position: absolute;
bottom: 1rem;
font-style: normal;
font-weight: normal;
font-size: 1rem;
line-height: 1.25rem;
color: #46535B;
}
.history-item .history-item-desc-full {
display: none;
margin-top: 1rem;
}
.history-item .history-item-files-full {
display: none;
}
.history-item .history-item-files-full .file-item {
position: relative;
height: 3.125rem;
border-bottom: 1px solid #848C90;
}
.history-item .history-item-files-full .file-item:last-child {
border-bottom: none;
}
.history-item .history-item-files-full .file-item .file-icon {
position: absolute;
width: 1.5rem;
height: 1.5rem;
left: 0;
top: 1rem;
}
.history-item .history-item-files-full .file-item .file-name {
position: absolute;
left: 3rem;
top: 1rem;
color: #46535B;
text-decoration: none;
cursor: pointer;
}
.history-item .history-item-files-full .file-item .file-name:hover {
text-decoration: underline;
}
.history-item.open {
max-height: 20rem;
}
.history-item.open .history-item-date {
display: block;
}
.history-item.open .history-item-uploader {
display: block;
padding-left: 0;
margin-left: 0;
border-left: none;
}
.history-item.open .history-item-desc {
display: none;
}
.history-item.open .history-item-desc-full {
display: block;
}
.history-item.open .history-item-files-full {
display: block;
}
.history-item.open .history-item-chevron {
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
}
/*# sourceMappingURL=history.css.map */

View File

@ -0,0 +1,11 @@
{
"version": 3,
"mappings": "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",
"sources": [
"history.scss",
"slovenscina-elements.scss",
"slovenscina-theme.scss"
],
"names": [],
"file": "history.css"
}

108
static/css/history.scss Normal file
View File

@ -0,0 +1,108 @@
@import "slovenscina-elements.scss";
.history-item {
background:white;
min-height:2.875rem;
max-height:2.875rem;
padding:1rem 1.5rem;
position:relative;
transition: max-height 1s ease-out;
cursor:pointer;
overflow:hidden;
.history-item-chevron {
position:absolute;
bottom:1rem;
right:1rem;
}
.history-item-date {
text-transform: uppercase;
display: inline-block;
color:$grey-dark;
line-height: 1rem;
font-weight: 400;
font-size:0.875rem;
}
.history-item-uploader {
display: inline-block;
padding-left:1rem;
margin-left:1rem;
border-left: 1px solid $grey-dark;
color:$grey-dark;
line-height: 1rem;
font-weight: 400;
font-size:0.875rem;
}
.history-item-filecount {
position:absolute;
top:1rem;
right:1rem;
color:$blue;
line-height: 1rem;
font-weight: 400;
font-size:0.875rem;
}
.history-item-desc {
position:absolute;
bottom:1rem;
font-style: normal;
font-weight: normal;
font-size: 1rem;
line-height: 1.25rem;
color:$black;
}
.history-item-desc-full {
display: none;
margin-top:1rem;
}
.history-item-files-full {
display: none;
.file-item {
position:relative;
height:3.125rem;
border-bottom: 1px solid $grey-dark;
&:last-child {
border-bottom:none;
}
.file-icon {
position:absolute;
width:1.5rem;
height:1.5rem;
left:0;
top:1rem;
}
.file-name {
position:absolute;
left:3rem;
top:1rem;
color:$black;
text-decoration: none;
cursor:pointer;
&:hover {
text-decoration: underline;
}
}
}
}
&.open {
max-height: 20rem;
.history-item-date {display:block;}
.history-item-uploader {
display:block;
padding-left:0;
margin-left:0;
border-left: none;
}
.history-item-desc {
display: none;
}
.history-item-desc-full {
display: block;
}
.history-item-files-full {
display: block;
}
.history-item-chevron {
transform:rotate(180deg);
}
}
}

259
static/css/login-styles.css Normal file
View File

@ -0,0 +1,259 @@
@import url(https://fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic,900,900italic,300italic,300,100italic,100);
html {
font-family: 'Roboto', sans-serif;
font-size: 16px;
color: #46535B;
}
body {
font-size: 16px;
padding: 0;
margin: 0;
}
h1 {
font-size: 30px;
font-style: normal;
font-weight: 300;
line-height: 35px;
color: #006CB7;
}
h2 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
text-transform: uppercase;
color: #006CB7;
}
h3 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
}
em {
font-weight: 300;
}
.btn {
border: none;
line-height: 2.5rem;
padding: 0 2.5rem;
color: white;
background: #006CB7;
border-radius: 20px;
font-size: 1.125rem;
font-weight: 400;
cursor: pointer;
-webkit-transition: opacity 0.3s ease-out;
transition: opacity 0.3s ease-out;
}
.btn:hover {
opacity: 0.8;
}
.btn:disabled {
cursor: default;
opacity: 0.5;
}
.panel {
background: #F5F5F5;
padding: 40px 60px;
border-radius: 20px;
max-width: 30rem;
}
.panel .panel-logo {
position: absolute;
top: -60px;
left: 0;
right: 0;
display: block;
margin: auto;
background: #F5F5F5;
padding: 20px 30px;
width: 100px;
border-radius: 100%;
text-align: center;
}
.line {
background: #C4C4C4;
height: 2px;
width: 200px;
margin: auto;
}
.a-right {
display: block;
text-align: right;
font-size: 10px;
text-decoration: none;
color: #006CB7;
text-transform: uppercase;
}
.alert {
position: relative;
color: #8D3D3D;
margin-bottom: 2rem;
}
.alert.alert-success {
color: #88B52F;
}
.alert img {
position: relative;
top: 0.25rem;
width: 1.8rem;
}
.alert p {
position: absolute;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
height: 2rem;
left: 3rem;
top: 0;
margin: 0;
text-transform: uppercase;
}
.submit-alert {
background: white;
border: 2px solid #B7DB70;
-webkit-box-sizing: border-box;
box-sizing: border-box;
border-radius: 8px;
}
.submit-alert .btn {
margin-top: 0.5rem;
background: #88B52F;
border-radius: 4px;
}
.background {
background: #848C90;
padding-bottom: 200px;
width: 100%;
text-align: center;
}
.login-panel {
position: relative;
width: 50%;
margin: auto;
text-align: left;
top: 100px;
-webkit-box-shadow: 0 0 2.5rem 0 rgba(0, 0, 0, 0.25);
box-shadow: 0 0 2.5rem 0 rgba(0, 0, 0, 0.25);
}
.register-button {
position: relative;
margin-top: 2rem;
display: block;
text-decoration: none;
color: #848C90;
}
.register-button img {
width: 2rem;
}
.register-button h3 {
position: absolute;
left: 3rem;
top: 0;
margin: 0;
}
.register-button p {
position: absolute;
left: 3rem;
bottom: 0;
margin: 0;
font-size: 0.875rem;
font-weight: 300;
}
.input-wrapper {
position: relative;
height: 4rem;
}
.input-wrapper .input-icon {
position: absolute;
left: 0;
top: 0.5rem;
display: block;
width: 1.5rem;
}
.input-wrapper .input-floating-label {
position: absolute;
left: 3rem;
right: 0;
display: block;
}
.input-wrapper .input-floating-label input, .input-wrapper .input-floating-label select {
padding: 0.25rem 0;
background: none;
border: none;
display: block;
width: 100%;
border-bottom: 2px solid #C4C4C4;
}
.input-wrapper .input-floating-label input:focus, .input-wrapper .input-floating-label select:focus {
outline: none;
}
.input-wrapper .input-floating-label label {
font-size: 10px;
color: #46535B;
}
.input-wrapper .input-floating-label label.input-hint {
color: #848C90;
}
.back-to-login {
position: relative;
height: 2rem;
}
.back-to-login img {
position: absolute;
top: 0.25rem;
left: 0.5rem;
}
.back-to-login a {
position: relative;
top: 0;
left: 3rem;
text-decoration: none;
color: #46535B;
}
/*# sourceMappingURL=login-styles.css.map */

View File

@ -0,0 +1,11 @@
{
"version": 3,
"mappings": "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",
"sources": [
"login-styles.scss",
"slovenscina-elements.scss",
"slovenscina-theme.scss"
],
"names": [],
"file": "login-styles.css"
}

View File

@ -0,0 +1,99 @@
@import "slovenscina-elements.scss";
.background {
background: $grey-dark;
padding-bottom:200px;
width:100%;
text-align: center;
}
.login-panel {
position:relative;
width:50%;
margin:auto;
text-align: left;
top: 100px;
box-shadow: 0 0 2.5rem 0 rgba(0,0,0,0.25);
}
.register-button {
position:relative;
margin-top:2rem;
display: block;
text-decoration: none;
color:$grey-dark;
img {
width:2rem;
}
h3 {
position:absolute;
left:3rem;
top:0;
margin:0;
}
p {
position:absolute;
left:3rem;
bottom:0;
margin:0;
font-size:0.875rem;
font-weight: 300;
}
}
.input-wrapper {
position:relative;
height:4rem;
.input-icon {
position:absolute;
left:0;
top:0.5rem;
display:block;
width:1.5rem;
}
.input-floating-label {
position:absolute;
left: 3rem;
right:0;
display:block;
input, select {
padding:0.25rem 0;
background: none;
border:none;
display:block;
width:100%;
border-bottom: 2px solid $grey;
&:focus {
outline: none;
}
}
label {
font-size: 10px;
color: $black;
}
label.input-hint {
color:$grey-dark;
}
}
}
.back-to-login {
position:relative;
height:2rem;
img {
position:absolute;
top:0.25rem;
left:0.5rem;
}
a {
position: relative;
top:0;
left:3rem;
text-decoration: none;
color:$black;
}
}

View File

@ -0,0 +1,153 @@
@import url(https://fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic,900,900italic,300italic,300,100italic,100);
html {
font-family: 'Roboto', sans-serif;
font-size: 16px;
color: #46535B;
}
body {
font-size: 16px;
padding: 0;
margin: 0;
}
h1 {
font-size: 30px;
font-style: normal;
font-weight: 300;
line-height: 35px;
color: #006CB7;
}
h2 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
text-transform: uppercase;
color: #006CB7;
}
h3 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
}
em {
font-weight: 300;
}
.btn {
border: none;
line-height: 2.5rem;
padding: 0 2.5rem;
color: white;
background: #006CB7;
border-radius: 20px;
font-size: 1.125rem;
font-weight: 400;
cursor: pointer;
-webkit-transition: opacity 0.3s ease-out;
transition: opacity 0.3s ease-out;
}
.btn:hover {
opacity: 0.8;
}
.btn:disabled {
cursor: default;
opacity: 0.5;
}
.panel {
background: #F5F5F5;
padding: 40px 60px;
border-radius: 20px;
max-width: 30rem;
}
.panel .panel-logo {
position: absolute;
top: -60px;
left: 0;
right: 0;
display: block;
margin: auto;
background: #F5F5F5;
padding: 20px 30px;
width: 100px;
border-radius: 100%;
text-align: center;
}
.line {
background: #C4C4C4;
height: 2px;
width: 200px;
margin: auto;
}
.a-right {
display: block;
text-align: right;
font-size: 10px;
text-decoration: none;
color: #006CB7;
text-transform: uppercase;
}
.alert {
position: relative;
color: #8D3D3D;
margin-bottom: 2rem;
}
.alert.alert-success {
color: #88B52F;
}
.alert img {
position: relative;
top: 0.25rem;
width: 1.8rem;
}
.alert p {
position: absolute;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
height: 2rem;
left: 3rem;
top: 0;
margin: 0;
text-transform: uppercase;
}
.submit-alert {
background: white;
border: 2px solid #B7DB70;
-webkit-box-sizing: border-box;
box-sizing: border-box;
border-radius: 8px;
}
.submit-alert .btn {
margin-top: 0.5rem;
background: #88B52F;
border-radius: 4px;
}
/*# sourceMappingURL=manage-institution.css.map */

View File

@ -0,0 +1,11 @@
{
"version": 3,
"mappings": "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",
"sources": [
"manage-institution.scss",
"slovenscina-elements.scss",
"slovenscina-theme.scss"
],
"names": [],
"file": "manage-institution.css"
}

View File

@ -0,0 +1 @@
@import "slovenscina-elements.scss";

145
static/css/simple-grid.css Normal file
View File

@ -0,0 +1,145 @@
.hidden-sm {
display: none;
}
.container {
width: 90%;
margin-left: auto;
margin-right: auto;
}
@media only screen and (min-width: 33.75em) {
.container {
width: 80%;
}
}
@media only screen and (min-width: 60em) {
.container {
width: 90%;
max-width: 80rem;
}
}
.row {
position: relative;
width: 100%;
}
.row [class^="col"] {
float: left;
margin: 0.5rem 2%;
min-height: 0.125rem;
}
.row::after {
content: "";
display: table;
clear: both;
}
.col-1,
.col-2,
.col-3,
.col-4,
.col-5,
.col-6,
.col-7,
.col-8,
.col-9,
.col-10,
.col-11,
.col-12 {
width: 96%;
}
.col-1-sm {
width: 4.33333%;
}
.col-2-sm {
width: 12.66667%;
}
.col-3-sm {
width: 21%;
}
.col-4-sm {
width: 29.33333%;
}
.col-5-sm {
width: 37.66667%;
}
.col-6-sm {
width: 46%;
}
.col-7-sm {
width: 54.33333%;
}
.col-8-sm {
width: 62.66667%;
}
.col-9-sm {
width: 71%;
}
.col-10-sm {
width: 79.33333%;
}
.col-11-sm {
width: 87.66667%;
}
.col-12-sm {
width: 96%;
}
@media only screen and (min-width: 45em) {
.col-1 {
width: 4.33333%;
}
.col-2 {
width: 12.66667%;
}
.col-3 {
width: 21%;
}
.col-4 {
width: 29.33333%;
}
.col-5 {
width: 37.66667%;
}
.col-6 {
width: 46%;
}
.col-7 {
width: 54.33333%;
}
.col-8 {
width: 62.66667%;
}
.col-9 {
width: 71%;
}
.col-10 {
width: 79.33333%;
}
.col-11 {
width: 87.66667%;
}
.col-12 {
width: 96%;
}
.hidden-sm {
display: block;
}
}
/*# sourceMappingURL=simple-grid.css.map */

View File

@ -0,0 +1,9 @@
{
"version": 3,
"mappings": "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",
"sources": [
"simple-grid.scss"
],
"names": [],
"file": "simple-grid.css"
}

View File

@ -0,0 +1,91 @@
.hidden-sm {
display: none;
}
// grid
$width: 96%;
$gutter: 4%;
$breakpoint-small: 33.75em; // 540px
$breakpoint-med: 45em; // 720px
$breakpoint-large: 60em; // 960px
.container {
width: 90%;
margin-left: auto;
margin-right: auto;
@media only screen and (min-width: $breakpoint-small) {
width: 80%;
}
@media only screen and (min-width: $breakpoint-large) {
width: 90%;
max-width: 80rem;
}
}
.row {
position: relative;
width: 100%;
}
.row [class^="col"] {
float: left;
margin: 0.5rem 2%;
min-height: 0.125rem;
}
.row::after {
content: "";
display: table;
clear: both;
}
.col-1,
.col-2,
.col-3,
.col-4,
.col-5,
.col-6,
.col-7,
.col-8,
.col-9,
.col-10,
.col-11,
.col-12 {
width: $width;
}
.col-1-sm { width:($width / 12) - ($gutter * 11 / 12); }
.col-2-sm { width: ($width / 6) - ($gutter * 10 / 12); }
.col-3-sm { width: ($width / 4) - ($gutter * 9 / 12); }
.col-4-sm { width: ($width / 3) - ($gutter * 8 / 12); }
.col-5-sm { width: ($width / (12 / 5)) - ($gutter * 7 / 12); }
.col-6-sm { width: ($width / 2) - ($gutter * 6 / 12); }
.col-7-sm { width: ($width / (12 / 7)) - ($gutter * 5 / 12); }
.col-8-sm { width: ($width / (12 / 8)) - ($gutter * 4 / 12); }
.col-9-sm { width: ($width / (12 / 9)) - ($gutter * 3 / 12); }
.col-10-sm { width: ($width / (12 / 10)) - ($gutter * 2 / 12); }
.col-11-sm { width: ($width / (12 / 11)) - ($gutter * 1 / 12); }
.col-12-sm { width: $width; }
@media only screen and (min-width: $breakpoint-med) {
.col-1 { width:($width / 12) - ($gutter * 11 / 12); }
.col-2 { width: ($width / 6) - ($gutter * 10 / 12); }
.col-3 { width: ($width / 4) - ($gutter * 9 / 12); }
.col-4 { width: ($width / 3) - ($gutter * 8 / 12); }
.col-5 { width: ($width / (12 / 5)) - ($gutter * 7 / 12); }
.col-6 { width: ($width / 2) - ($gutter * 6 / 12); }
.col-7 { width: ($width / (12 / 7)) - ($gutter * 5 / 12); }
.col-8 { width: ($width / (12 / 8)) - ($gutter * 4 / 12); }
.col-9 { width: ($width / (12 / 9)) - ($gutter * 3 / 12); }
.col-10 { width: ($width / (12 / 10)) - ($gutter * 2 / 12); }
.col-11 { width: ($width / (12 / 11)) - ($gutter * 1 / 12); }
.col-12 { width: $width; }
.hidden-sm {
display: block;
}
}

View File

@ -0,0 +1,192 @@
@import url(https://fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic,900,900italic,300italic,300,100italic,100);
html {
font-family: 'Roboto', sans-serif;
font-size: 16px;
color: #46535B;
}
body {
font-size: 16px;
padding: 0;
margin: 0;
}
h1 {
font-size: 30px;
font-style: normal;
font-weight: 300;
line-height: 35px;
color: #006CB7;
}
h2 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
text-transform: uppercase;
color: #006CB7;
}
h3 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
}
em {
font-weight: 300;
}
.btn {
border: none;
line-height: 2.5rem;
padding: 0 2.5rem;
color: white;
background: #006CB7;
border-radius: 20px;
font-size: 1.125rem;
font-weight: 400;
cursor: pointer;
-webkit-transition: opacity 0.3s ease-out;
transition: opacity 0.3s ease-out;
}
.btn:hover {
opacity: 0.8;
}
.btn:disabled {
cursor: default;
opacity: 0.5;
}
.panel {
background: #F5F5F5;
padding: 40px 60px;
border-radius: 20px;
max-width: 30rem;
}
.panel .panel-logo {
position: absolute;
top: -60px;
left: 0;
right: 0;
display: block;
margin: auto;
background: #F5F5F5;
padding: 20px 30px;
width: 100px;
border-radius: 100%;
text-align: center;
}
.line {
background: #C4C4C4;
height: 2px;
width: 200px;
margin: auto;
}
.a-right {
display: block;
text-align: right;
font-size: 10px;
text-decoration: none;
color: #006CB7;
text-transform: uppercase;
}
.alert {
position: relative;
color: #8D3D3D;
margin-bottom: 2rem;
}
.alert.alert-success {
color: #88B52F;
}
.alert img {
position: relative;
top: 0.25rem;
width: 1.8rem;
}
.alert p {
position: absolute;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
height: 2rem;
left: 3rem;
top: 0;
margin: 0;
text-transform: uppercase;
}
.submit-alert {
background: white;
border: 2px solid #B7DB70;
-webkit-box-sizing: border-box;
box-sizing: border-box;
border-radius: 8px;
}
.submit-alert .btn {
margin-top: 0.5rem;
background: #88B52F;
border-radius: 4px;
}
.tableFixHead {
overflow-y: scroll;
max-height: 306px;
}
.tableFixHead thead th {
position: -webkit-sticky;
position: sticky;
top: 0;
}
table {
border-collapse: collapse;
width: 100%;
}
table th, table td {
padding: 8px 16px;
border: 1px solid #ccc;
}
table th {
background: #eee;
}
table input[type=submit], table a {
font-size: 0.8rem;
background: none;
outline: none;
border: none;
cursor: pointer;
text-decoration: none;
color: #006CB7;
}
table input[type=submit]:hover, table a:hover {
text-decoration: underline;
}
/*# sourceMappingURL=slovenscina-admin.css.map */

View File

@ -0,0 +1,11 @@
{
"version": 3,
"mappings": "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",
"sources": [
"slovenscina-admin.scss",
"slovenscina-elements.scss",
"slovenscina-theme.scss"
],
"names": [],
"file": "slovenscina-admin.css"
}

View File

@ -0,0 +1,33 @@
@import "slovenscina-elements.scss";
.tableFixHead {
overflow-y: scroll;
max-height: 306px;
}
.tableFixHead thead th {
position: sticky;
top: 0;
}
table {
border-collapse: collapse;
width: 100%;
th,td {
padding: 8px 16px;
border: 1px solid #ccc;
}
th {
background: #eee;
}
input[type=submit],a {
font-size: 0.8rem;
background:none;
outline:none;
border:none;
cursor:pointer;
text-decoration: none;
color:$blue;
&:hover {
text-decoration: underline;
}
}
}

View File

@ -0,0 +1,153 @@
@import url(https://fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic,900,900italic,300italic,300,100italic,100);
html {
font-family: 'Roboto', sans-serif;
font-size: 16px;
color: #46535B;
}
body {
font-size: 16px;
padding: 0;
margin: 0;
}
h1 {
font-size: 30px;
font-style: normal;
font-weight: 300;
line-height: 35px;
color: #006CB7;
}
h2 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
text-transform: uppercase;
color: #006CB7;
}
h3 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
}
em {
font-weight: 300;
}
.btn {
border: none;
line-height: 2.5rem;
padding: 0 2.5rem;
color: white;
background: #006CB7;
border-radius: 20px;
font-size: 1.125rem;
font-weight: 400;
cursor: pointer;
-webkit-transition: opacity 0.3s ease-out;
transition: opacity 0.3s ease-out;
}
.btn:hover {
opacity: 0.8;
}
.btn:disabled {
cursor: default;
opacity: 0.5;
}
.panel {
background: #F5F5F5;
padding: 40px 60px;
border-radius: 20px;
max-width: 30rem;
}
.panel .panel-logo {
position: absolute;
top: -60px;
left: 0;
right: 0;
display: block;
margin: auto;
background: #F5F5F5;
padding: 20px 30px;
width: 100px;
border-radius: 100%;
text-align: center;
}
.line {
background: #C4C4C4;
height: 2px;
width: 200px;
margin: auto;
}
.a-right {
display: block;
text-align: right;
font-size: 10px;
text-decoration: none;
color: #006CB7;
text-transform: uppercase;
}
.alert {
position: relative;
color: #8D3D3D;
margin-bottom: 2rem;
}
.alert.alert-success {
color: #88B52F;
}
.alert img {
position: relative;
top: 0.25rem;
width: 1.8rem;
}
.alert p {
position: absolute;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
height: 2rem;
left: 3rem;
top: 0;
margin: 0;
text-transform: uppercase;
}
.submit-alert {
background: white;
border: 2px solid #B7DB70;
-webkit-box-sizing: border-box;
box-sizing: border-box;
border-radius: 8px;
}
.submit-alert .btn {
margin-top: 0.5rem;
background: #88B52F;
border-radius: 4px;
}
/*# sourceMappingURL=slovenscina-elements.css.map */

View File

@ -0,0 +1,10 @@
{
"version": 3,
"mappings": "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",
"sources": [
"slovenscina-elements.scss",
"slovenscina-theme.scss"
],
"names": [],
"file": "slovenscina-elements.css"
}

View File

@ -0,0 +1,125 @@
@import "slovenscina-theme.scss";
h1 {
font-size: 30px;
font-style: normal;
font-weight: 300;
line-height: 35px;
color:$blue;
}
h2 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
text-transform: uppercase;
color:$blue;
}
h3 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
}
em {
font-weight: 300;
}
.btn {
border:none;
line-height: 2.5rem;
padding: 0 2.5rem;
color:white;
background: $blue;
border-radius: 20px;
font-size: 1.125rem;
font-weight: 400;
cursor: pointer;
transition: opacity 0.3s ease-out;
&:hover {
opacity: 0.8;
}
&:disabled {
cursor:default;
opacity:0.5;
}
}
.panel {
background: $white;
padding: 40px 60px;
border-radius: 20px;
max-width:30rem;
.panel-logo {
position:absolute;
top: -60px;
left:0;
right:0;
display:block;
margin:auto;
background: $white;
padding:20px 30px;
width: 100px;
border-radius: 100%;
text-align: center;
}
}
.line {
background: $grey;
height:2px;
width:200px;
margin: auto;
}
.a-right {
display:block;
text-align: right;
font-size:10px;
text-decoration: none;
color:$blue;
text-transform: uppercase;
}
.alert {
position:relative;
color:$red;
margin-bottom:2rem;
&.alert-success {
color:$green;
}
img {
position:relative;
top:0.25rem;
width:1.8rem;
}
p {
position: absolute;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height:2rem;
left:3rem;
top: 0;
margin:0;
text-transform: uppercase;
}
}
.submit-alert {
background:white;
border: 2px solid $green-light;
box-sizing: border-box;
border-radius: 8px;
.btn {
margin-top:0.5rem;
background: $green;
border-radius: 4px;
}
}

View File

@ -0,0 +1,13 @@
@import url(https://fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic,900,900italic,300italic,300,100italic,100);
html {
font-family: 'Roboto', sans-serif;
font-size: 16px;
color: #46535B;
}
body {
font-size: 16px;
padding: 0;
margin: 0;
}
/*# sourceMappingURL=slovenscina-theme.css.map */

View File

@ -0,0 +1,9 @@
{
"version": 3,
"mappings": "AAAA,OAAO,CAAC,uIAAI;AAaZ,AAAA,IAAI,CAAC;EACH,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAC,IAAI;EACd,KAAK,EAZC,OAAO;CAad;;AAED,AAAA,IAAI,CAAC;EACH,SAAS,EAAC,IAAI;EACd,OAAO,EAAC,CAAC;EACT,MAAM,EAAC,CAAC;CACT",
"sources": [
"slovenscina-theme.scss"
],
"names": [],
"file": "slovenscina-theme.css"
}

View File

@ -0,0 +1,24 @@
@import url(https://fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic,900,900italic,300italic,300,100italic,100);
$blue: #006CB7;
$red: #8D3D3D;
$black: #46535B;
$grey: #C4C4C4;
$grey-dark: #848C90;
$grey-border: #B6BEC3;
$white: #F5F5F5;
$green-light: #B7DB70;
$green: #88B52F;
html {
font-family: 'Roboto', sans-serif;
font-size:16px;
color: $black;
}
body {
font-size:16px;
padding:0;
margin:0;
}

105
static/css/styles.css Normal file
View File

@ -0,0 +1,105 @@
@import url(https://fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic,900,900italic,300italic,300,100italic,100);
html {
font-family: 'Roboto', sans-serif;
font-size: 16px;
color: #46535B; }
body {
font-size: 16px;
padding: 0;
margin: 0; }
h1 {
font-size: 30px;
font-style: normal;
font-weight: 300;
line-height: 35px;
color: #006CB7; }
h2 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px;
text-transform: uppercase;
color: #006CB7; }
h3 {
font-size: 18px;
font-style: normal;
font-weight: 300;
line-height: 21px; }
em {
font-weight: 300; }
.btn {
border: none;
line-height: 2.5rem;
padding: 0 2.5rem;
color: white;
background: #006CB7;
border-radius: 20px;
font-size: 1.125rem;
font-weight: 400;
cursor: pointer;
transition: opacity 0.3s ease-out; }
.btn:hover {
opacity: 0.8; }
.panel {
background: #F5F5F5;
padding: 40px 60px;
border-radius: 20px; }
.panel .panel-logo {
position: absolute;
top: -60px;
left: 0;
right: 0;
display: block;
margin: auto;
background: #F5F5F5;
padding: 20px 30px;
width: 100px;
border-radius: 100%;
text-align: center; }
.line {
background: #C4C4C4;
height: 2px;
width: 200px;
margin: auto; }
.a-right {
display: block;
text-align: right;
font-size: 10px;
text-decoration: none;
color: #006CB7;
text-transform: uppercase; }
.alert {
position: relative;
color: #8D3D3D; }
.alert img {
position: relative;
top: 0.25rem;
width: 1.8rem; }
.alert p {
position: absolute;
left: 3rem;
top: 0;
margin: 0;
text-transform: uppercase; }
.submit-alert {
background: white;
border: 2px solid #B7DB70;
box-sizing: border-box;
border-radius: 8px; }
.submit-alert .btn {
margin-top: 0.5rem;
background: #88B52F;
border-radius: 4px; }
/*# sourceMappingURL=styles.css.map */

View File

@ -0,0 +1,7 @@
{
"version": 3,
"mappings": "AAAQ,+IAAuI;AAa/I,IAAK;EACH,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAC,IAAI;EACd,KAAK,EAZC,OAAO;;AAef,IAAK;EACH,SAAS,EAAC,IAAI;EACd,OAAO,EAAC,CAAC;EACT,MAAM,EAAC,CAAC;;ACpBV,EAAG;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;EACjB,KAAK,EDLA,OAAO;;ACOd,EAAG;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,SAAS;EACzB,KAAK,EDbA,OAAO;;ACgBd,EAAG;EACD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;;AAGnB,EAAG;EACD,WAAW,EAAE,GAAG;;AAGlB,IAAK;EACH,MAAM,EAAC,IAAI;EACX,WAAW,EAAE,MAAM;EACnB,OAAO,EAAE,QAAQ;EACjB,KAAK,EAAC,KAAK;EACX,UAAU,EDhCL,OAAO;ECiCZ,aAAa,EAAE,IAAI;EACnB,SAAS,EAAE,QAAQ;EACnB,WAAW,EAAE,GAAG;EAChB,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,qBAAqB;EACjC,UAAQ;IACN,OAAO,EAAE,GAAG;;AAMhB,MAAO;EACL,UAAU,EDxCJ,OAAO;ECyCb,OAAO,EAAE,SAAS;EAClB,aAAa,EAAE,IAAI;EACnB,kBAAY;IACV,QAAQ,EAAC,QAAQ;IACjB,GAAG,EAAE,KAAK;IACV,IAAI,EAAC,CAAC;IACN,KAAK,EAAC,CAAC;IACP,OAAO,EAAC,KAAK;IACb,MAAM,EAAC,IAAI;IACX,UAAU,EDlDN,OAAO;ICmDX,OAAO,EAAC,SAAS;IACjB,KAAK,EAAE,KAAK;IACZ,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,MAAM;;AAKtB,KAAM;EACJ,UAAU,ED/DL,OAAO;ECgEZ,MAAM,EAAC,GAAG;EACV,KAAK,EAAC,KAAK;EACX,MAAM,EAAE,IAAI;;AAGd,QAAS;EACP,OAAO,EAAC,KAAK;EACb,UAAU,EAAE,KAAK;EACjB,SAAS,EAAC,IAAI;EACd,eAAe,EAAE,IAAI;EACrB,KAAK,ED7EA,OAAO;EC8EZ,cAAc,EAAE,SAAS;;AAG3B,MAAO;EACL,QAAQ,EAAC,QAAQ;EACjB,KAAK,EDlFD,OAAO;ECmFX,UAAI;IACF,QAAQ,EAAC,QAAQ;IACjB,GAAG,EAAC,OAAO;IACX,KAAK,EAAC,MAAM;EAEd,QAAE;IACA,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAC,IAAI;IACT,GAAG,EAAE,CAAC;IACN,MAAM,EAAC,CAAC;IACR,cAAc,EAAE,SAAS;;AAI7B,aAAc;EACZ,UAAU,EAAC,KAAK;EAChB,MAAM,EAAE,iBAAsB;EAC9B,UAAU,EAAE,UAAU;EACtB,aAAa,EAAE,GAAG;EAClB,kBAAK;IACH,UAAU,EAAC,MAAM;IACjB,UAAU,EDjGN,OAAO;ICkGX,aAAa,EAAE,GAAG",
"sources": ["slovenscina-theme.scss","slovenscina-elements.scss"],
"names": [],
"file": "styles.css"
}

22
static/css/utils.css Normal file
View File

@ -0,0 +1,22 @@
.text-center {
text-align: center;
}
.m-b-1 {
margin-bottom: 1rem;
}
.m-b-2 {
margin-bottom: 2rem;
}
.m-b-3 {
margin-bottom: 3rem;
}
.set-open-transition {
-webkit-transition: max-height 0.3s ease-out;
transition: max-height 0.3s ease-out;
overflow: hidden;
}
/*# sourceMappingURL=utils.css.map */

9
static/css/utils.css.map Normal file
View File

@ -0,0 +1,9 @@
{
"version": 3,
"mappings": "AAAA,AAAA,YAAY,CAAC;EACX,UAAU,EAAE,MAAM;CACnB;;AAED,AAAA,MAAM,CAAC;EACL,aAAa,EAAC,IAAI;CACnB;;AACD,AAAA,MAAM,CAAC;EACL,aAAa,EAAC,IAAI;CACnB;;AACD,AAAA,MAAM,CAAC;EACL,aAAa,EAAC,IAAI;CACnB;;AAED,AAAA,oBAAoB,CAAC;EACnB,UAAU,EAAE,wBAAwB;EACpC,QAAQ,EAAE,MAAM;CACjB",
"sources": [
"utils.scss"
],
"names": [],
"file": "utils.css"
}

18
static/css/utils.scss Normal file
View File

@ -0,0 +1,18 @@
.text-center {
text-align: center;
}
.m-b-1 {
margin-bottom:1rem;
}
.m-b-2 {
margin-bottom:2rem;
}
.m-b-3 {
margin-bottom:3rem;
}
.set-open-transition {
transition: max-height 0.3s ease-out;
overflow: hidden;
}

BIN
static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

10
static/favicon.svg Normal file
View File

@ -0,0 +1,10 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<rect fill="#006CB7" width="512" height="512"/>
<path fill="#fff" d="M409.26,145.32V69.5l-46.06,55.16c-5.06-1.88-10.5-3.99-16.1-5.71c-16.12-4.52-32.56-7.82-49.17-9.86
c-5.37-0.47-11.2-0.47-17.04-0.47c-64.88,0-87.21,25.27-87.21,51.25c0,29.89,32.44,46.95,107.28,66.27
c89.47,22.07,117.94,63.93,117.94,114.79c0.04,6.77-0.59,13.54-1.87,20.19c41.39-26.92,66.98-64.24,66.98-105.48
c0-43.74-28.79-83.02-74.61-110.33"/>
<path fill="#fff" d="M241.92,278.65c-84.49-19.95-124.47-61.66-124.47-112.6c-0.13-10.68,1.69-21.29,5.37-31.3
c-57.41,27.07-94.76,71.13-94.76,120.89c0,42.02,26.61,79.89,69.32,107.04v79.81l47.38-56.73c23.89,8.63,48.73,14.33,73.98,16.98
c8.56,0.7,17.35,1.17,26.53,1.17c65.66,0,96.39-23.47,96.39-58.45c0-29.26-28.32-50-99.81-66.82"/>
</svg>

After

Width:  |  Height:  |  Size: 852 B

5
static/image/alert.svg Normal file
View File

@ -0,0 +1,5 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15 29.6668C6.86671 29.6668 0.333374 23.1335 0.333374 15.0002C0.333374 6.86683 6.86671 0.333496 15 0.333496C23.1334 0.333496 29.6667 6.86683 29.6667 15.0002C29.6667 23.1335 23.1334 29.6668 15 29.6668ZM15 3.00016C8.33337 3.00016 3.00004 8.3335 3.00004 15.0002C3.00004 21.6668 8.33337 27.0002 15 27.0002C21.6667 27.0002 27 21.6668 27 15.0002C27 8.3335 21.6667 3.00016 15 3.00016Z" fill="#8D3D3D"/>
<path d="M15 16.3335C14.2 16.3335 13.6667 15.8002 13.6667 15.0002V9.66683C13.6667 8.86683 14.2 8.3335 15 8.3335C15.8 8.3335 16.3334 8.86683 16.3334 9.66683V15.0002C16.3334 15.8002 15.8 16.3335 15 16.3335Z" fill="#8D3D3D"/>
<path d="M15 21.6668C14.6 21.6668 14.3334 21.5335 14.0667 21.2668C13.8 21.0002 13.6667 20.7335 13.6667 20.3335C13.6667 20.2002 13.6667 19.9335 13.8 19.8002C13.9334 19.6668 13.9334 19.5335 14.0667 19.4002C14.4667 19.0002 15 18.8668 15.5334 19.1335C15.6667 19.1335 15.6667 19.1335 15.8 19.2668C15.8 19.2668 15.9334 19.4002 16.0667 19.4002C16.2 19.5335 16.3334 19.6668 16.3334 19.8002C16.3334 19.9335 16.3334 20.2002 16.3334 20.3335C16.3334 20.4668 16.3334 20.7335 16.2 20.8668C16.0667 21.0002 16.0667 21.1335 15.9334 21.2668C15.6667 21.5335 15.4 21.6668 15 21.6668Z" fill="#8D3D3D"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,3 @@
<svg width="14" height="8" viewBox="0 0 14 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.7071 0.292893C14.0976 0.683418 14.0976 1.31658 13.7071 1.70711L7.70711 7.70711C7.31658 8.09763 6.68342 8.09763 6.29289 7.70711L0.292893 1.70711C-0.0976315 1.31658 -0.0976315 0.683417 0.292893 0.292893C0.683417 -0.0976317 1.31658 -0.0976317 1.70711 0.292893L7 5.58579L12.2929 0.292893C12.6834 -0.0976312 13.3166 -0.0976311 13.7071 0.292893Z" fill="#848C91"/>
</svg>

After

Width:  |  Height:  |  Size: 516 B

View File

@ -0,0 +1,3 @@
<svg width="8" height="14" viewBox="0 0 8 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.70711 0.292893C8.09763 0.683417 8.09763 1.31658 7.70711 1.70711L2.41421 7L7.70711 12.2929C8.09763 12.6834 8.09763 13.3166 7.70711 13.7071C7.31658 14.0976 6.68342 14.0976 6.29289 13.7071L0.292893 7.70711C-0.0976311 7.31658 -0.0976311 6.68342 0.292893 6.29289L6.29289 0.292893C6.68342 -0.0976311 7.31658 -0.0976311 7.70711 0.292893Z" fill="#46535B"/>
</svg>

After

Width:  |  Height:  |  Size: 506 B

View File

@ -0,0 +1,5 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="32" height="32" rx="4" fill="#B6BEC4"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.6667 11.3333C10.4899 11.3333 10.3204 11.4036 10.1953 11.5286C10.0703 11.6536 10.0001 11.8232 10.0001 12V21.3333C10.0001 21.5101 10.0703 21.6797 10.1953 21.8047C10.3204 21.9298 10.4899 22 10.6667 22H20.0001C20.1769 22 20.3465 21.9298 20.4715 21.8047C20.5965 21.6797 20.6667 21.5101 20.6667 21.3333V17.7733C20.6667 17.4051 20.9652 17.1067 21.3334 17.1067C21.7016 17.1067 22.0001 17.4051 22.0001 17.7733V21.3333C22.0001 21.8638 21.7894 22.3725 21.4143 22.7475C21.0392 23.1226 20.5305 23.3333 20.0001 23.3333H10.6667C10.1363 23.3333 9.62761 23.1226 9.25253 22.7475C8.87746 22.3725 8.66675 21.8638 8.66675 21.3333V12C8.66675 11.4696 8.87746 10.9609 9.25253 10.5858C9.62761 10.2107 10.1363 10 10.6667 10H14.2267C14.5949 10 14.8934 10.2985 14.8934 10.6667C14.8934 11.0349 14.5949 11.3333 14.2267 11.3333H10.6667Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.5287 8.86225C19.789 8.6019 20.2111 8.6019 20.4715 8.86225L23.1382 11.5289C23.3985 11.7893 23.3985 12.2114 23.1382 12.4717L16.4715 19.1384C16.3465 19.2634 16.1769 19.3337 16.0001 19.3337H13.3334C12.9652 19.3337 12.6667 19.0352 12.6667 18.667V16.0003C12.6667 15.8235 12.737 15.6539 12.862 15.5289L19.5287 8.86225ZM14.0001 16.2765V18.0003H15.7239L21.7239 12.0003L20.0001 10.2765L14.0001 16.2765Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

83
static/image/ess.svg Normal file
View File

@ -0,0 +1,83 @@
<svg width="152" height="54" viewBox="0 0 152 54" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M47.2869 52.6665C47.2869 52.7075 47.2803 52.7419 47.2663 52.7704C47.2524 52.799 47.2348 52.8217 47.2128 52.8399C47.1908 52.8582 47.1666 52.8714 47.1388 52.8795C47.1116 52.8875 47.0838 52.8919 47.0566 52.8919H46.8836C46.8286 52.8919 46.7809 52.8861 46.7406 52.8751C46.6995 52.8641 46.6607 52.8436 46.624 52.8143C46.5873 52.7851 46.5499 52.7448 46.514 52.6943C46.4773 52.6438 46.4377 52.5787 46.3967 52.4996L45.1956 50.2637C45.1333 50.1481 45.0695 50.0273 45.0057 49.9007C44.9419 49.7741 44.8825 49.6511 44.8275 49.5318H44.8216C44.8253 49.6775 44.829 49.8268 44.8312 49.9783C44.8326 50.1305 44.8341 50.2813 44.8341 50.4306V52.8034C44.8341 52.818 44.8297 52.8312 44.8209 52.8443C44.8121 52.8575 44.7982 52.8678 44.7776 52.8751C44.7571 52.8824 44.7307 52.8883 44.6977 52.8934C44.6647 52.8985 44.6222 52.9007 44.5709 52.9007C44.5195 52.9007 44.4777 52.8985 44.444 52.8934C44.4103 52.8883 44.3846 52.8824 44.3655 52.8751C44.3465 52.8678 44.3325 52.8582 44.3237 52.8443C44.3149 52.8304 44.3105 52.8173 44.3105 52.8034V49.1761C44.3105 49.0949 44.3333 49.0378 44.3795 49.0034C44.4257 48.969 44.4755 48.9514 44.5305 48.9514H44.7886C44.8495 48.9514 44.9001 48.9566 44.9412 48.9668C44.9822 48.9771 45.0181 48.9939 45.0511 49.0166C45.0841 49.0393 45.1149 49.0722 45.145 49.1139C45.1751 49.1556 45.2073 49.2076 45.2403 49.2705L46.1642 50.9956C46.2214 51.101 46.2757 51.2035 46.3292 51.3037C46.382 51.404 46.4333 51.5028 46.4817 51.6001C46.5301 51.6975 46.5793 51.7933 46.6277 51.887C46.6753 51.9814 46.723 52.0759 46.7699 52.171H46.7728C46.7692 52.0107 46.7663 51.8446 46.7655 51.6711C46.7648 51.4977 46.7641 51.3315 46.7641 51.1712V49.0393C46.7641 49.0246 46.7685 49.0115 46.7772 48.9997C46.786 48.988 46.8 48.9771 46.8205 48.9683C46.841 48.9588 46.8674 48.9529 46.9004 48.9485C46.9334 48.9448 46.9767 48.9427 47.0302 48.9427C47.0772 48.9427 47.1182 48.9441 47.1527 48.9485C47.1871 48.9529 47.2135 48.9595 47.2333 48.9683C47.2524 48.9771 47.2663 48.988 47.2751 48.9997C47.2839 49.0115 47.2883 49.0254 47.2883 49.0393V52.6665H47.2869Z" fill="#646363"/>
<path d="M52.4607 52.6973C52.4768 52.7419 52.4856 52.7778 52.4871 52.8048C52.4878 52.8327 52.4805 52.8531 52.4644 52.8671C52.4482 52.881 52.4211 52.8905 52.3837 52.8941C52.3463 52.8978 52.2957 52.9 52.2327 52.9C52.1696 52.9 52.1197 52.8985 52.0816 52.8956C52.0442 52.8927 52.0156 52.8875 51.9966 52.8802C51.9775 52.8729 51.9636 52.8634 51.954 52.8509C51.9452 52.8385 51.9364 52.8231 51.9284 52.8056L51.5911 51.8483H49.9537L49.6318 52.7931C49.6252 52.8107 49.6171 52.8268 49.6076 52.84C49.5973 52.8531 49.5826 52.8641 49.5628 52.8736C49.5438 52.8824 49.5167 52.889 49.4807 52.8934C49.4448 52.8978 49.3993 52.8993 49.3421 52.8993C49.2835 52.8993 49.2351 52.8971 49.1977 52.8919C49.1603 52.8868 49.1339 52.8773 49.1185 52.8627C49.1031 52.848 49.0965 52.8275 49.0972 52.8004C49.098 52.7726 49.1068 52.7375 49.1229 52.6929L50.4435 49.0415C50.4516 49.0195 50.4618 49.0012 50.475 48.9866C50.4882 48.972 50.5073 48.961 50.533 48.9537C50.5586 48.9456 50.5909 48.9398 50.6305 48.9368C50.6701 48.9339 50.7199 48.9324 50.7808 48.9324C50.8461 48.9324 50.8996 48.9339 50.9421 48.9368C50.9846 48.9398 51.0191 48.9456 51.0455 48.9537C51.0719 48.9617 51.0917 48.9734 51.1064 48.9881C51.121 49.0034 51.132 49.0217 51.1401 49.0444L52.4607 52.6973ZM50.7654 49.4748H50.7625L50.0835 51.434H51.4532L50.7654 49.4748Z" fill="#646363"/>
<path d="M56.3383 52.6548C56.3383 52.6958 56.3361 52.7295 56.3317 52.7565C56.328 52.7844 56.3214 52.807 56.3119 52.8268C56.3031 52.8458 56.2921 52.8597 56.2789 52.8692C56.2657 52.878 56.2496 52.8832 56.232 52.8832H54.4912C54.445 52.8832 54.4003 52.8678 54.3585 52.8363C54.3167 52.8048 54.2961 52.75 54.2961 52.6709V49.032C54.2961 49.0159 54.2998 49.0012 54.3086 48.9895C54.3174 48.9778 54.3306 48.9676 54.3511 48.9603C54.3717 48.9529 54.3988 48.9471 54.4333 48.942C54.4677 48.9368 54.5095 48.9346 54.5579 48.9346C54.6085 48.9346 54.6503 48.9368 54.684 48.942C54.717 48.9471 54.7442 48.9529 54.7647 48.9603C54.7852 48.9676 54.7992 48.9771 54.8072 48.9895C54.8153 49.002 54.8197 49.0159 54.8197 49.032V52.4316H56.232C56.2503 52.4316 56.2657 52.436 56.2789 52.4455C56.2921 52.4543 56.3031 52.4674 56.3119 52.485C56.3214 52.5018 56.3273 52.5253 56.3317 52.5538C56.3361 52.5802 56.3383 52.6146 56.3383 52.6548Z" fill="#646363"/>
<path d="M61.2562 50.8719C61.2562 51.1903 61.2189 51.4765 61.1441 51.7312C61.0685 51.9866 60.9571 52.204 60.8075 52.3833C60.6586 52.5626 60.4717 52.7002 60.2458 52.7961C60.02 52.8919 59.7575 52.9402 59.4575 52.9402C59.1613 52.9402 58.9054 52.8956 58.6891 52.8078C58.4735 52.7192 58.2946 52.5919 58.1538 52.4235C58.013 52.2559 57.9082 52.0466 57.8385 51.7985C57.7696 51.5489 57.7351 51.2628 57.7351 50.9385C57.7351 50.6289 57.7725 50.3472 57.8473 50.0939C57.9221 49.8407 58.035 49.6255 58.1853 49.4484C58.3357 49.2713 58.5226 49.1344 58.7485 49.0378C58.9743 48.9412 59.2368 48.8936 59.5367 48.8936C59.8271 48.8936 60.0794 48.9368 60.2942 49.0239C60.509 49.111 60.6887 49.2376 60.831 49.4052C60.9739 49.5721 61.0803 49.7785 61.1507 50.0251C61.221 50.2718 61.2562 50.5536 61.2562 50.8719ZM60.7019 50.9085C60.7019 50.686 60.6821 50.4789 60.6425 50.2872C60.6029 50.0954 60.5369 49.93 60.4453 49.7887C60.3529 49.6482 60.2297 49.5384 60.0757 49.4587C59.9217 49.3804 59.7311 49.3401 59.5045 49.3401C59.2779 49.3401 59.0873 49.3825 58.9333 49.4674C58.7793 49.5523 58.6546 49.6658 58.5578 49.8078C58.461 49.9498 58.3928 50.1152 58.3511 50.3047C58.3093 50.4943 58.2887 50.6926 58.2887 50.9012C58.2887 51.1318 58.3078 51.3447 58.3467 51.5394C58.3848 51.7341 58.45 51.9017 58.541 52.0422C58.6319 52.1827 58.7543 52.2925 58.9076 52.3701C59.0609 52.4477 59.253 52.4872 59.4839 52.4872C59.7127 52.4872 59.9056 52.4448 60.0618 52.3599C60.2179 52.275 60.3433 52.1601 60.4387 52.0151C60.534 51.8702 60.6022 51.7026 60.6425 51.5123C60.6821 51.3228 60.7019 51.1208 60.7019 50.9085Z" fill="#646363"/>
<path d="M65.408 52.6643C65.408 52.7031 65.4058 52.736 65.4022 52.7631C65.3985 52.7909 65.3912 52.8129 65.3824 52.8319C65.3728 52.8495 65.3618 52.8626 65.3486 52.8714C65.3354 52.8802 65.32 52.8839 65.3017 52.8839H62.9765C62.9237 52.8839 62.8812 52.8678 62.8489 52.8356C62.8167 52.8034 62.8005 52.7514 62.8005 52.6804V52.5684C62.8005 52.5421 62.802 52.5179 62.8049 52.4952C62.8079 52.4733 62.8145 52.4491 62.8247 52.4235C62.835 52.3979 62.8489 52.3701 62.8673 52.3386C62.8856 52.3071 62.9083 52.2706 62.9347 52.2281L64.7518 49.3913H62.956C62.9355 49.3913 62.9186 49.3877 62.9039 49.3789C62.89 49.3708 62.8783 49.3584 62.8695 49.3408C62.8599 49.324 62.8541 49.3013 62.8497 49.2742C62.8453 49.2464 62.8431 49.2149 62.8431 49.1783C62.8431 49.1381 62.8453 49.103 62.8497 49.0751C62.8533 49.0466 62.8599 49.0232 62.8695 49.0056C62.8783 48.9873 62.89 48.9741 62.9039 48.9661C62.9186 48.958 62.9355 48.9536 62.956 48.9536H65.147C65.202 48.9536 65.2445 48.969 65.276 49.0005C65.3076 49.032 65.323 49.0795 65.323 49.1447V49.2632C65.323 49.2954 65.3208 49.324 65.3171 49.3496C65.3134 49.3752 65.3061 49.4008 65.2958 49.4272C65.2856 49.4535 65.2716 49.4821 65.2548 49.5121C65.2379 49.5421 65.2144 49.5779 65.1866 49.6182L63.3784 52.4433H65.3017C65.3362 52.4433 65.3626 52.4601 65.3809 52.4945C65.3985 52.5282 65.408 52.5853 65.408 52.6643ZM64.0735 48.6448C64.031 48.6448 63.9958 48.6441 63.9664 48.6419C63.9378 48.6397 63.9129 48.636 63.8916 48.6294C63.8704 48.6228 63.852 48.6141 63.8366 48.6023C63.8212 48.5906 63.8051 48.5745 63.7868 48.557L63.1356 47.8675C63.1173 47.8478 63.1063 47.8295 63.1019 47.8148C63.0982 47.7995 63.1019 47.787 63.1144 47.7782C63.1268 47.7687 63.1466 47.7629 63.1752 47.7585C63.2038 47.7548 63.2405 47.7526 63.2845 47.7526C63.3454 47.7526 63.3937 47.7541 63.4304 47.757C63.4671 47.7599 63.4964 47.7643 63.5191 47.7695C63.5411 47.7746 63.5587 47.7826 63.5705 47.7921C63.5822 47.8017 63.5947 47.8126 63.6071 47.8229L64.0757 48.3455L64.5626 47.8353C64.5772 47.8192 64.5926 47.8053 64.6095 47.7943C64.6264 47.7834 64.6469 47.7746 64.6704 47.7687C64.6938 47.7629 64.7239 47.7585 64.7606 47.7563C64.7972 47.7541 64.8427 47.7534 64.8977 47.7534C64.9461 47.7534 64.9857 47.7556 65.015 47.7607C65.0443 47.7658 65.0641 47.7731 65.0744 47.7819C65.0847 47.7914 65.0876 47.8031 65.0817 47.8185C65.0766 47.8339 65.0663 47.8507 65.0502 47.8683L64.3719 48.5577C64.3558 48.576 64.3382 48.5906 64.3199 48.6016C64.3015 48.6126 64.2817 48.6221 64.259 48.6294C64.237 48.6367 64.2113 48.6411 64.1813 48.6433C64.1519 48.6441 64.116 48.6448 64.0735 48.6448Z" fill="#646363"/>
<path d="M69.8296 51.7553C69.8296 51.879 69.8142 51.9932 69.7827 52.0971C69.7512 52.201 69.7072 52.2954 69.6507 52.3781C69.5935 52.4608 69.5253 52.534 69.4454 52.597C69.3655 52.6599 69.2753 52.7126 69.1741 52.7551C69.0736 52.7975 68.9666 52.8297 68.8522 52.8509C68.7378 52.8722 68.6066 52.8824 68.4577 52.8824H67.4297C67.3835 52.8824 67.3387 52.867 67.2969 52.8356C67.2551 52.8041 67.2346 52.7492 67.2346 52.6702V49.1644C67.2346 49.0854 67.2551 49.0305 67.2969 48.999C67.3387 48.9675 67.3827 48.9522 67.4297 48.9522H68.3243C68.5596 48.9522 68.7525 48.9741 68.9028 49.0188C69.0531 49.0634 69.1785 49.1278 69.279 49.2135C69.3794 49.2991 69.4549 49.403 69.5063 49.5267C69.5561 49.6497 69.5825 49.7895 69.5825 49.9453C69.5825 50.0383 69.5708 50.1276 69.5488 50.2125C69.5268 50.2974 69.4938 50.3764 69.4498 50.4482C69.4058 50.5199 69.3508 50.5843 69.2848 50.6414C69.2188 50.6985 69.144 50.7446 69.0582 50.7812C69.1653 50.8017 69.2658 50.8382 69.3596 50.8917C69.4527 50.9451 69.5341 51.0139 69.6045 51.0966C69.6742 51.1793 69.7299 51.2766 69.7703 51.3879C69.8098 51.4999 69.8296 51.6221 69.8296 51.7553ZM69.0421 49.9973C69.0421 49.9022 69.0282 49.8158 69.0018 49.739C68.9761 49.6621 68.9343 49.597 68.8779 49.5428C68.8207 49.4894 68.7466 49.4484 68.6557 49.4199C68.5648 49.3913 68.4438 49.3774 68.2942 49.3774H67.7538V50.6502H68.3492C68.4848 50.6502 68.5941 50.6326 68.6769 50.5975C68.7598 50.5623 68.8287 50.514 68.883 50.4547C68.9373 50.3955 68.9776 50.3252 69.0033 50.2454C69.0289 50.1649 69.0421 50.0822 69.0421 49.9973ZM69.279 51.786C69.279 51.6682 69.2606 51.565 69.2232 51.4757C69.1851 51.3864 69.1308 51.3118 69.0582 51.251C68.9864 51.1903 68.8962 51.1442 68.7884 51.1127C68.6806 51.0812 68.5442 51.0659 68.38 51.0659H67.7545V52.4513H68.5134C68.633 52.4513 68.7378 52.4367 68.8265 52.4089C68.9153 52.3811 68.9945 52.3386 69.0619 52.283C69.1294 52.2274 69.1829 52.1578 69.221 52.0751C69.2599 51.9917 69.279 51.8958 69.279 51.786Z" fill="#646363"/>
<path d="M74.6884 52.6973C74.7045 52.7419 74.7133 52.7778 74.714 52.8048C74.7155 52.8327 74.7074 52.8531 74.692 52.8671C74.6759 52.881 74.648 52.8905 74.6114 52.8941C74.5733 52.8978 74.5234 52.9 74.4603 52.9C74.398 52.9 74.3481 52.8985 74.31 52.8956C74.2726 52.8927 74.244 52.8875 74.2249 52.8802C74.2059 52.8729 74.1912 52.8634 74.1824 52.8509C74.1729 52.8385 74.1648 52.8231 74.1568 52.8056L73.8187 51.8483H72.1813L71.8594 52.7931C71.8528 52.8107 71.8448 52.8268 71.8352 52.84C71.8257 52.8531 71.8103 52.8641 71.7905 52.8736C71.7714 52.8824 71.7443 52.889 71.7084 52.8934C71.6732 52.8971 71.627 52.8993 71.5705 52.8993C71.5119 52.8993 71.4635 52.8971 71.4261 52.8919C71.3887 52.8868 71.3623 52.8773 71.3476 52.8627C71.3322 52.848 71.3249 52.8275 71.3264 52.8004C71.3271 52.7726 71.3359 52.7375 71.352 52.6929L72.6734 49.0415C72.6814 49.0195 72.6917 49.0012 72.7049 48.9866C72.7188 48.972 72.7372 48.961 72.7628 48.9537C72.7878 48.9456 72.8207 48.9398 72.8603 48.9368C72.8999 48.9339 72.9498 48.9324 73.0107 48.9324C73.0759 48.9324 73.1295 48.9339 73.172 48.9368C73.2152 48.9398 73.249 48.9456 73.2761 48.9537C73.3025 48.9617 73.3223 48.9734 73.337 48.9881C73.3516 49.0034 73.3619 49.0217 73.3707 49.0444L74.6884 52.6973ZM72.9938 49.4748H72.9909L72.3119 51.434H73.6809L72.9938 49.4748Z" fill="#646363"/>
<path d="M80.4532 52.7917C80.4444 52.8136 80.4341 52.8319 80.4194 52.8466C80.4048 52.8612 80.3857 52.8722 80.36 52.8802C80.3351 52.8883 80.3021 52.8941 80.2625 52.8963C80.2229 52.8993 80.1738 52.9007 80.1151 52.9007C80.0704 52.9007 80.0315 52.9007 79.9978 52.8993C79.9648 52.8985 79.9355 52.8956 79.9113 52.8919C79.8871 52.8875 79.8658 52.8832 79.8489 52.878C79.8321 52.8729 79.8174 52.8663 79.8042 52.8583C79.7925 52.8502 79.7829 52.8407 79.7756 52.829C79.7683 52.8173 79.7617 52.8041 79.7558 52.788L78.4689 49.1374C78.4528 49.0927 78.444 49.0569 78.4433 49.0298C78.4418 49.002 78.4506 48.9815 78.4689 48.9676C78.4865 48.9529 78.5159 48.9441 78.5569 48.9397C78.598 48.9354 78.6523 48.9339 78.7219 48.9339C78.7784 48.9339 78.8238 48.9354 78.8576 48.9383C78.8906 48.9412 78.917 48.9471 78.9346 48.9551C78.9522 48.9632 78.9668 48.9734 78.9756 48.9866C78.9852 48.9998 78.9932 49.0166 79.0013 49.0364L80.1305 52.3445H80.1342L81.2326 49.0422C81.2385 49.0203 81.2458 49.002 81.2539 48.9873C81.2619 48.9727 81.2759 48.9617 81.2964 48.9544C81.3162 48.9463 81.3448 48.9405 81.3815 48.9376C81.4181 48.9346 81.4665 48.9332 81.5274 48.9332C81.5904 48.9332 81.6396 48.9354 81.6762 48.9405C81.7129 48.9456 81.7378 48.9551 81.751 48.9698C81.765 48.9844 81.7694 49.0049 81.7664 49.032C81.7628 49.0598 81.7532 49.0949 81.7371 49.1396L80.4532 52.7917Z" fill="#646363"/>
<path d="M87.5064 52.7917C87.4976 52.8136 87.4873 52.8319 87.4726 52.8466C87.458 52.8612 87.4389 52.8722 87.4132 52.8802C87.3883 52.8883 87.3553 52.8941 87.3157 52.8963C87.2761 52.8993 87.227 52.9007 87.1683 52.9007C87.1236 52.9007 87.0847 52.9007 87.051 52.8993C87.018 52.8985 86.9887 52.8956 86.9645 52.8919C86.9403 52.8875 86.919 52.8832 86.9022 52.878C86.8853 52.8729 86.8706 52.8663 86.8574 52.8583C86.8457 52.8502 86.8362 52.8407 86.8288 52.829C86.8215 52.8173 86.8149 52.8041 86.809 52.788L85.5222 49.1374C85.506 49.0927 85.4972 49.0569 85.4965 49.0298C85.495 49.002 85.5038 48.9815 85.5222 48.9676C85.5398 48.9529 85.5691 48.9441 85.6102 48.9397C85.6512 48.9354 85.7055 48.9339 85.7751 48.9339C85.8316 48.9339 85.8771 48.9354 85.9108 48.9383C85.9438 48.9412 85.9702 48.9471 85.9878 48.9551C86.0054 48.9632 86.02 48.9734 86.0288 48.9866C86.0384 48.9998 86.0464 49.0166 86.0545 49.0364L87.1837 52.3445H87.1874L88.2858 49.0422C88.2917 49.0203 88.299 49.002 88.3071 48.9873C88.3152 48.9727 88.3291 48.9617 88.3496 48.9544C88.3694 48.9463 88.398 48.9405 88.4347 48.9376C88.4713 48.9346 88.5197 48.9332 88.5806 48.9332C88.6437 48.9332 88.6928 48.9354 88.7295 48.9405C88.7661 48.9456 88.7911 48.9551 88.8043 48.9698C88.8182 48.9844 88.8226 49.0049 88.8197 49.032C88.816 49.0598 88.8065 49.0949 88.7903 49.1396L87.5064 52.7917Z" fill="#646363"/>
<path d="M93.2838 52.6973C93.3 52.7419 93.3088 52.7778 93.3095 52.8048C93.311 52.8327 93.3029 52.8531 93.2875 52.8671C93.2714 52.881 93.2435 52.8905 93.2068 52.8941C93.1687 52.8978 93.1188 52.9 93.0558 52.9C92.9935 52.9 92.9436 52.8985 92.9055 52.8956C92.8681 52.8927 92.8395 52.8875 92.8204 52.8802C92.8013 52.8729 92.7867 52.8634 92.7779 52.8509C92.7683 52.8385 92.7603 52.8231 92.7522 52.8056L92.4142 51.8483H90.7768L90.4549 52.7931C90.4483 52.8107 90.4402 52.8268 90.4307 52.84C90.4212 52.8531 90.4058 52.8641 90.386 52.8736C90.3669 52.8824 90.3398 52.889 90.3038 52.8934C90.2686 52.8971 90.2224 52.8993 90.166 52.8993C90.1073 52.8993 90.0589 52.8971 90.0215 52.8919C89.9841 52.8868 89.9577 52.8773 89.9431 52.8627C89.9277 52.848 89.9203 52.8275 89.9218 52.8004C89.9225 52.7726 89.9313 52.7375 89.9475 52.6929L91.2688 49.0415C91.2769 49.0195 91.2872 49.0012 91.3004 48.9866C91.3143 48.972 91.3326 48.961 91.3583 48.9537C91.3832 48.9456 91.4162 48.9398 91.4558 48.9368C91.4954 48.9339 91.5453 48.9324 91.6061 48.9324C91.6714 48.9324 91.7249 48.9339 91.7674 48.9368C91.8107 48.9398 91.8444 48.9456 91.8716 48.9537C91.898 48.9617 91.9178 48.9734 91.9324 48.9881C91.9471 49.0034 91.9574 49.0217 91.9662 49.0444L93.2838 52.6973ZM91.5893 49.4748H91.5863L90.9073 51.434H92.2763L91.5893 49.4748Z" fill="#646363"/>
<path d="M97.2347 51.7802C97.2347 51.9646 97.2003 52.1286 97.1321 52.2727C97.0639 52.4162 96.97 52.5384 96.849 52.6387C96.7288 52.739 96.5865 52.8143 96.423 52.8648C96.2595 52.9153 96.0835 52.941 95.895 52.941C95.7631 52.941 95.6406 52.9293 95.5284 52.9073C95.4155 52.8853 95.315 52.8575 95.227 52.8253C95.1391 52.7931 95.0643 52.7595 95.0049 52.7251C94.9447 52.6907 94.9029 52.6614 94.8795 52.6372C94.8567 52.6131 94.8391 52.5816 94.8281 52.5443C94.8171 52.507 94.812 52.4565 94.812 52.3942C94.812 52.3496 94.8142 52.3123 94.8179 52.283C94.8223 52.2537 94.8281 52.2296 94.8362 52.212C94.8443 52.1937 94.8538 52.1813 94.8663 52.1739C94.8787 52.1666 94.8927 52.1637 94.9095 52.1637C94.9374 52.1637 94.9777 52.1805 95.0298 52.2149C95.0811 52.2493 95.1479 52.2867 95.2285 52.3269C95.3092 52.3679 95.4074 52.4052 95.5218 52.4411C95.6362 52.4769 95.7689 52.4945 95.9192 52.4945C96.0322 52.4945 96.137 52.4791 96.2309 52.4491C96.3255 52.4191 96.4061 52.3759 96.4743 52.3203C96.5425 52.2647 96.5946 52.1966 96.6312 52.1154C96.6679 52.0342 96.6862 51.9419 96.6862 51.8387C96.6862 51.7275 96.6606 51.6324 96.61 51.5533C96.5594 51.4743 96.4919 51.4047 96.4091 51.3454C96.3262 51.2862 96.2309 51.2313 96.1246 51.1815C96.0175 51.1317 95.909 51.0812 95.7975 51.0293C95.6861 50.9773 95.5768 50.9202 95.472 50.8573C95.3664 50.7951 95.2725 50.7204 95.1889 50.6355C95.1053 50.5506 95.0379 50.4511 94.9865 50.3362C94.9352 50.2213 94.9095 50.0844 94.9095 49.9249C94.9095 49.7609 94.9396 49.6145 94.999 49.4857C95.0591 49.3569 95.142 49.2493 95.249 49.1622C95.3554 49.0751 95.4815 49.0085 95.6296 48.9632C95.7763 48.9178 95.9354 48.8951 96.1055 48.8951C96.1928 48.8951 96.28 48.9024 96.3687 48.9178C96.4567 48.9332 96.5396 48.9529 96.6181 48.9785C96.6965 49.0041 96.7654 49.032 96.8263 49.0634C96.8872 49.0949 96.9275 49.1205 96.9466 49.1395C96.9656 49.1586 96.9788 49.1739 96.9847 49.1849C96.9913 49.1959 96.9964 49.2105 97.0001 49.2274C97.0037 49.2442 97.0067 49.2654 97.0089 49.2896C97.0111 49.3137 97.0118 49.3452 97.0118 49.384C97.0118 49.4206 97.0103 49.4528 97.0074 49.4813C97.0045 49.5099 97.0001 49.5333 96.9935 49.5531C96.9869 49.5728 96.9781 49.586 96.9678 49.5955C96.9561 49.6043 96.9443 49.6094 96.9297 49.6094C96.9077 49.6094 96.8725 49.5948 96.8241 49.567C96.7772 49.5384 96.7178 49.5062 96.6496 49.4711C96.5799 49.436 96.4985 49.403 96.4047 49.3737C96.3101 49.3445 96.2045 49.3298 96.0857 49.3298C95.9772 49.3298 95.8811 49.3445 95.7997 49.3737C95.7183 49.403 95.6516 49.4425 95.5988 49.4909C95.5467 49.5392 95.5071 49.597 95.4808 49.6636C95.4544 49.7302 95.4412 49.8012 95.4412 49.8766C95.4412 49.9856 95.4661 50.08 95.5174 50.1591C95.568 50.2374 95.6355 50.3076 95.7191 50.3684C95.8034 50.4291 95.8994 50.4848 96.0072 50.536C96.1143 50.5865 96.2243 50.6377 96.3357 50.689C96.4472 50.7402 96.5572 50.7973 96.6642 50.8587C96.7713 50.9202 96.8674 50.9934 96.9524 51.0776C97.036 51.1617 97.1042 51.2606 97.1555 51.3755C97.2091 51.4889 97.2347 51.6243 97.2347 51.7802ZM96.0432 48.6448C95.9999 48.6448 95.9654 48.6441 95.9361 48.6419C95.9068 48.6397 95.8833 48.636 95.8613 48.6294C95.8393 48.6228 95.8217 48.6141 95.8071 48.6023C95.7917 48.5899 95.7748 48.5745 95.7565 48.557L95.1053 47.8675C95.087 47.8478 95.076 47.8295 95.0716 47.8148C95.0672 47.7995 95.0716 47.787 95.0841 47.7782C95.0965 47.7687 95.1163 47.7629 95.1449 47.7585C95.1735 47.7548 95.2102 47.7526 95.2542 47.7526C95.315 47.7526 95.3634 47.7541 95.4001 47.757C95.4368 47.7599 95.4661 47.7643 95.4881 47.7695C95.5108 47.7746 95.5284 47.7826 95.5402 47.7921C95.5519 47.8017 95.5643 47.8126 95.5768 47.8229L96.0454 48.3455L96.5323 47.8353C96.5469 47.8192 96.5623 47.8053 96.5792 47.7943C96.596 47.7834 96.6166 47.7746 96.6401 47.7687C96.6635 47.7629 96.6928 47.7585 96.7295 47.7563C96.7662 47.7541 96.8116 47.7534 96.8674 47.7534C96.9158 47.7534 96.9546 47.7556 96.9839 47.7607C97.0133 47.7658 97.0331 47.7731 97.0433 47.7819C97.0536 47.7914 97.0565 47.8031 97.0514 47.8185C97.0463 47.8339 97.036 47.8507 97.0191 47.8683L96.3401 48.5577C96.3247 48.576 96.3071 48.5906 96.2888 48.6016C96.2712 48.6126 96.2499 48.6221 96.2279 48.6294C96.2059 48.6367 96.1803 48.6411 96.151 48.6433C96.1216 48.6455 96.0857 48.6448 96.0432 48.6448Z" fill="#646363"/>
<path d="M102.454 50.8719C102.454 51.1903 102.417 51.4765 102.342 51.7312C102.267 51.9859 102.154 52.204 102.005 52.3833C101.856 52.5626 101.669 52.7002 101.444 52.7961C101.218 52.8919 100.956 52.9402 100.655 52.9402C100.36 52.9402 100.103 52.8956 99.8868 52.8078C99.6705 52.7192 99.4923 52.5919 99.3516 52.4235C99.2108 52.2559 99.1059 52.0466 99.0362 51.7985C98.9673 51.5489 98.9329 51.2628 98.9329 50.9385C98.9329 50.6289 98.9703 50.3472 99.0451 50.0939C99.1198 49.8407 99.2328 49.6255 99.3831 49.4484C99.5327 49.2713 99.7211 49.1344 99.9462 49.0378C100.171 48.9412 100.434 48.8936 100.734 48.8936C101.025 48.8936 101.277 48.9368 101.492 49.0239C101.707 49.111 101.886 49.2376 102.029 49.4052C102.172 49.5721 102.279 49.7785 102.348 50.0251C102.419 50.2718 102.454 50.5536 102.454 50.8719ZM101.9 50.9085C101.9 50.686 101.881 50.4789 101.841 50.2872C101.801 50.0954 101.735 49.93 101.643 49.7887C101.551 49.6475 101.427 49.5384 101.273 49.4587C101.119 49.3804 100.929 49.3401 100.702 49.3401C100.476 49.3401 100.285 49.3825 100.131 49.4674C99.977 49.5523 99.8516 49.6658 99.7556 49.8078C99.6595 49.9498 99.5899 50.1152 99.5488 50.3047C99.5077 50.4943 99.4865 50.6926 99.4865 50.9012C99.4865 51.1318 99.5055 51.3447 99.5444 51.5394C99.5833 51.7341 99.6478 51.9017 99.7394 52.0422C99.8304 52.1827 99.9521 52.2925 100.105 52.3701C100.259 52.4477 100.451 52.4872 100.681 52.4872C100.91 52.4872 101.103 52.4448 101.259 52.3599C101.415 52.275 101.54 52.1601 101.636 52.0151C101.731 51.8702 101.799 51.7026 101.84 51.5123C101.88 51.3228 101.9 51.1208 101.9 50.9085Z" fill="#646363"/>
<path d="M109.218 50.1034C109.218 50.3003 109.185 50.4774 109.12 50.6355C109.055 50.7936 108.962 50.9283 108.841 51.0395C108.72 51.1508 108.572 51.2371 108.397 51.2979C108.222 51.3586 108.013 51.3894 107.769 51.3894H107.322V52.8048C107.322 52.8209 107.318 52.8356 107.308 52.8473C107.299 52.859 107.285 52.8692 107.265 52.8766C107.245 52.8839 107.219 52.8897 107.186 52.8948C107.153 52.9 107.11 52.9022 107.06 52.9022C107.01 52.9022 106.967 52.9 106.934 52.8948C106.9 52.8897 106.873 52.8839 106.854 52.8766C106.833 52.8692 106.818 52.8597 106.81 52.8473C106.802 52.8348 106.798 52.8209 106.798 52.8048V49.1776C106.798 49.0964 106.819 49.0393 106.862 49.0049C106.905 48.9705 106.952 48.9529 107.005 48.9529H107.847C107.932 48.9529 108.014 48.9566 108.092 48.9639C108.17 48.9712 108.262 48.9858 108.369 49.0093C108.476 49.0327 108.584 49.0759 108.695 49.1403C108.805 49.2039 108.899 49.2823 108.976 49.3752C109.053 49.4682 109.113 49.5765 109.155 49.6987C109.196 49.8209 109.218 49.9556 109.218 50.1034ZM108.666 50.1459C108.666 49.9856 108.637 49.8524 108.577 49.7448C108.517 49.6372 108.443 49.5574 108.355 49.5048C108.267 49.4521 108.175 49.4184 108.08 49.4045C107.986 49.3898 107.894 49.3833 107.805 49.3833H107.321V50.9597H107.794C107.952 50.9597 108.083 50.9392 108.187 50.899C108.292 50.858 108.38 50.8024 108.451 50.7307C108.521 50.6589 108.575 50.5726 108.612 50.4723C108.649 50.372 108.666 50.263 108.666 50.1459Z" fill="#646363"/>
<path d="M113.822 52.8034C113.822 52.8195 113.818 52.8341 113.812 52.8458C113.806 52.8575 113.793 52.8678 113.773 52.8766C113.752 52.8846 113.724 52.8912 113.688 52.8948C113.651 52.8985 113.603 52.9007 113.542 52.9007C113.489 52.9007 113.446 52.8985 113.412 52.8948C113.378 52.8912 113.352 52.8839 113.331 52.8751C113.312 52.8656 113.295 52.8531 113.285 52.837C113.273 52.8209 113.265 52.8004 113.256 52.7763L112.894 51.8497C112.851 51.7443 112.807 51.6477 112.762 51.5599C112.716 51.4721 112.661 51.3959 112.598 51.3323C112.535 51.2686 112.461 51.2188 112.376 51.183C112.291 51.1471 112.188 51.1303 112.069 51.1303H111.718V52.8041C111.718 52.8202 111.714 52.8348 111.704 52.8465C111.695 52.8583 111.681 52.8685 111.661 52.8758C111.641 52.8831 111.615 52.889 111.582 52.8941C111.549 52.8992 111.506 52.9014 111.456 52.9014C111.406 52.9014 111.363 52.8992 111.329 52.8941C111.296 52.889 111.269 52.8831 111.25 52.8758C111.229 52.8685 111.214 52.859 111.206 52.8465C111.198 52.8341 111.194 52.8202 111.194 52.8041V49.1652C111.194 49.0861 111.214 49.0312 111.256 48.9997C111.298 48.9683 111.342 48.9529 111.389 48.9529H112.226C112.326 48.9529 112.408 48.9551 112.474 48.9602C112.54 48.9654 112.6 48.9712 112.652 48.9771C112.804 49.0034 112.939 49.0451 113.056 49.1015C113.172 49.1578 113.27 49.2296 113.349 49.3167C113.427 49.4038 113.487 49.5033 113.527 49.616C113.567 49.7287 113.586 49.8524 113.586 49.9885C113.586 50.1203 113.569 50.2381 113.533 50.342C113.498 50.4467 113.446 50.5382 113.379 50.618C113.312 50.6977 113.232 50.7673 113.139 50.8265C113.045 50.8851 112.94 50.9349 112.825 50.9751C112.891 51.0037 112.949 51.0395 113.002 51.0827C113.054 51.1266 113.104 51.1786 113.149 51.2393C113.195 51.3001 113.238 51.3696 113.279 51.4486C113.32 51.5277 113.36 51.6162 113.4 51.7158L113.753 52.5816C113.782 52.6548 113.799 52.706 113.808 52.7353C113.817 52.7646 113.822 52.788 113.822 52.8034ZM113.034 50.0427C113.034 49.889 112.999 49.7587 112.93 49.6526C112.861 49.5465 112.745 49.4696 112.583 49.4235C112.532 49.4096 112.475 49.3994 112.411 49.3935C112.347 49.3869 112.264 49.384 112.16 49.384H111.718V50.7087H112.229C112.367 50.7087 112.487 50.6919 112.586 50.6589C112.688 50.6253 112.77 50.5792 112.838 50.5191C112.905 50.4591 112.954 50.3889 112.985 50.3076C113.017 50.2264 113.034 50.1378 113.034 50.0427Z" fill="#646363"/>
<path d="M116.281 52.8034C116.281 52.8195 116.277 52.8341 116.269 52.8458C116.261 52.8575 116.247 52.8678 116.226 52.8751C116.206 52.8824 116.179 52.8883 116.146 52.8934C116.112 52.8985 116.069 52.9007 116.019 52.9007C115.97 52.9007 115.929 52.8985 115.894 52.8934C115.86 52.8883 115.833 52.8824 115.813 52.8751C115.792 52.8678 115.778 52.8583 115.77 52.8458C115.761 52.8334 115.757 52.8195 115.757 52.8034V49.0305C115.757 49.0144 115.761 48.9998 115.771 48.9881C115.781 48.9763 115.795 48.9661 115.816 48.9588C115.838 48.9515 115.865 48.9456 115.899 48.9405C115.932 48.9354 115.972 48.9332 116.018 48.9332C116.069 48.9332 116.111 48.9354 116.145 48.9405C116.179 48.9456 116.205 48.9515 116.226 48.9588C116.245 48.9661 116.26 48.9756 116.268 48.9881C116.276 49.0005 116.281 49.0144 116.281 49.0305V52.8034H116.281Z" fill="#646363"/>
<path d="M121.342 52.8034C121.342 52.8195 121.338 52.8341 121.33 52.8458C121.322 52.8575 121.308 52.8678 121.287 52.8751C121.267 52.8824 121.24 52.8883 121.206 52.8934C121.173 52.8985 121.132 52.9007 121.083 52.9007C121.03 52.9007 120.988 52.8985 120.955 52.8934C120.923 52.8883 120.896 52.8824 120.877 52.8751C120.856 52.8678 120.842 52.8583 120.833 52.8458C120.825 52.8334 120.821 52.8195 120.821 52.8034V51.06H119.029V52.8034C119.029 52.8195 119.024 52.8341 119.016 52.8458C119.008 52.8575 118.994 52.8678 118.974 52.8751C118.953 52.8824 118.927 52.8883 118.893 52.8934C118.859 52.8985 118.817 52.9007 118.766 52.9007C118.718 52.9007 118.676 52.8985 118.642 52.8934C118.607 52.8883 118.58 52.8824 118.56 52.8751C118.54 52.8678 118.525 52.8583 118.517 52.8458C118.509 52.8334 118.504 52.8195 118.504 52.8034V49.0305C118.504 49.0144 118.509 48.9998 118.517 48.9881C118.525 48.9763 118.539 48.9661 118.56 48.9588C118.58 48.9515 118.607 48.9456 118.642 48.9405C118.676 48.9354 118.718 48.9332 118.766 48.9332C118.817 48.9332 118.859 48.9354 118.893 48.9405C118.927 48.9456 118.953 48.9515 118.974 48.9588C118.993 48.9661 119.008 48.9756 119.016 48.9881C119.024 49.0005 119.029 49.0144 119.029 49.0305V50.6041H120.821V49.0305C120.821 49.0144 120.825 48.9998 120.833 48.9881C120.842 48.9756 120.855 48.9661 120.877 48.9588C120.896 48.9515 120.923 48.9456 120.955 48.9405C120.988 48.9354 121.03 48.9332 121.083 48.9332C121.132 48.9332 121.173 48.9354 121.206 48.9405C121.24 48.9456 121.267 48.9515 121.287 48.9588C121.307 48.9661 121.322 48.9756 121.33 48.9881C121.338 49.0005 121.342 49.0144 121.342 49.0305V52.8034Z" fill="#646363"/>
<path d="M126.86 50.8719C126.86 51.1903 126.823 51.4765 126.748 51.7312C126.673 51.9859 126.56 52.204 126.411 52.3833C126.262 52.5626 126.075 52.7002 125.85 52.7961C125.624 52.8919 125.362 52.9402 125.061 52.9402C124.766 52.9402 124.509 52.8956 124.293 52.8078C124.077 52.7192 123.898 52.5919 123.758 52.4235C123.617 52.2559 123.512 52.0466 123.442 51.7985C123.373 51.5489 123.339 51.2628 123.339 50.9385C123.339 50.6289 123.376 50.3472 123.451 50.0939C123.526 49.8407 123.639 49.6255 123.789 49.4484C123.939 49.2713 124.127 49.1344 124.352 49.0378C124.577 48.9412 124.84 48.8936 125.141 48.8936C125.431 48.8936 125.683 48.9368 125.898 49.0239C126.113 49.111 126.292 49.2376 126.435 49.4052C126.578 49.5721 126.685 49.7785 126.754 50.0251C126.826 50.2718 126.86 50.5536 126.86 50.8719ZM126.306 50.9085C126.306 50.686 126.287 50.4789 126.248 50.2872C126.208 50.0954 126.142 49.93 126.05 49.7887C125.957 49.6475 125.834 49.5384 125.68 49.4587C125.526 49.3804 125.336 49.3401 125.109 49.3401C124.882 49.3401 124.692 49.3825 124.538 49.4674C124.384 49.5523 124.258 49.6658 124.162 49.8078C124.066 49.9498 123.997 50.1152 123.956 50.3047C123.914 50.4943 123.893 50.6926 123.893 50.9012C123.893 51.1318 123.912 51.3447 123.951 51.5394C123.99 51.7341 124.055 51.9017 124.146 52.0422C124.237 52.1827 124.359 52.2925 124.512 52.3701C124.665 52.4477 124.857 52.4872 125.088 52.4872C125.316 52.4872 125.509 52.4448 125.666 52.3599C125.822 52.275 125.947 52.1601 126.042 52.0151C126.138 51.8702 126.206 51.7026 126.246 51.5123C126.286 51.3228 126.306 51.1208 126.306 50.9085Z" fill="#646363"/>
<path d="M131.888 50.8595C131.888 51.1998 131.844 51.4969 131.757 51.7509C131.669 52.0049 131.542 52.2157 131.375 52.3825C131.207 52.5494 131.001 52.6745 130.758 52.758C130.515 52.8407 130.224 52.8824 129.888 52.8824H129.055C129.008 52.8824 128.964 52.867 128.922 52.8356C128.88 52.8041 128.86 52.7492 128.86 52.6702V49.1644C128.86 49.0854 128.88 49.0305 128.922 48.999C128.964 48.9675 129.008 48.9522 129.055 48.9522H129.946C130.287 48.9522 130.575 48.9961 130.811 49.0847C131.046 49.1725 131.243 49.2991 131.403 49.4645C131.562 49.6299 131.683 49.8297 131.766 50.0646C131.846 50.2988 131.888 50.5638 131.888 50.8595ZM131.337 50.8807C131.337 50.6684 131.311 50.4701 131.258 50.2871C131.205 50.1042 131.122 49.9453 131.01 49.8114C130.897 49.6775 130.754 49.5736 130.582 49.4989C130.41 49.4235 130.188 49.3862 129.916 49.3862H129.383V52.4455H129.921C130.174 52.4455 130.386 52.414 130.557 52.3511C130.729 52.2888 130.874 52.1922 130.99 52.0627C131.106 51.9332 131.192 51.7707 131.249 51.5753C131.308 51.3798 131.337 51.1478 131.337 50.8807Z" fill="#646363"/>
<path d="M136.843 52.6665C136.843 52.7075 136.835 52.7419 136.822 52.7704C136.808 52.799 136.791 52.8217 136.769 52.8399C136.747 52.8582 136.723 52.8714 136.695 52.8795C136.668 52.8875 136.64 52.8919 136.613 52.8919H136.44C136.386 52.8919 136.338 52.8861 136.297 52.8751C136.257 52.8641 136.218 52.8436 136.181 52.8143C136.144 52.7851 136.107 52.7448 136.071 52.6943C136.034 52.6438 135.995 52.5787 135.954 52.4996L134.752 50.2637C134.69 50.1481 134.626 50.0273 134.562 49.9007C134.499 49.7741 134.439 49.6511 134.385 49.5318H134.378C134.383 49.6775 134.386 49.8268 134.388 49.9783C134.39 50.1298 134.391 50.2813 134.391 50.4306V52.8034C134.391 52.818 134.386 52.8312 134.378 52.8443C134.369 52.8575 134.355 52.8678 134.334 52.8751C134.314 52.8824 134.287 52.8883 134.254 52.8934C134.221 52.8985 134.178 52.9007 134.127 52.9007C134.075 52.9007 134.033 52.8985 134 52.8934C133.967 52.8883 133.941 52.8824 133.921 52.8751C133.902 52.8678 133.888 52.8582 133.88 52.8443C133.871 52.8304 133.866 52.8173 133.866 52.8034V49.1761C133.866 49.0949 133.889 49.0378 133.935 49.0034C133.982 48.969 134.032 48.9514 134.086 48.9514H134.345C134.405 48.9514 134.455 48.9566 134.496 48.9668C134.538 48.9771 134.574 48.9939 134.606 49.0166C134.639 49.0393 134.67 49.0722 134.701 49.1139C134.731 49.1556 134.763 49.2076 134.796 49.2705L135.72 50.9956C135.777 51.101 135.832 51.2035 135.885 51.3037C135.938 51.404 135.989 51.5028 136.038 51.6001C136.087 51.6975 136.136 51.7933 136.184 51.887C136.231 51.9814 136.279 52.0759 136.326 52.171H136.329C136.325 52.0107 136.322 51.8446 136.321 51.6711C136.32 51.4977 136.319 51.3315 136.319 51.1712V49.0393C136.319 49.0246 136.324 49.0115 136.332 48.9997C136.341 48.988 136.356 48.9771 136.376 48.9683C136.396 48.9588 136.423 48.9529 136.456 48.9485C136.489 48.9448 136.533 48.9427 136.587 48.9427C136.633 48.9427 136.674 48.9441 136.709 48.9485C136.743 48.9529 136.769 48.9595 136.789 48.9683C136.808 48.9771 136.822 48.988 136.831 48.9997C136.84 49.0115 136.844 49.0254 136.844 49.0393V52.6665H136.843Z" fill="#646363"/>
<path d="M142.366 50.8719C142.366 51.1903 142.329 51.4765 142.254 51.7312C142.179 51.9859 142.066 52.204 141.918 52.3833C141.769 52.5626 141.582 52.7002 141.356 52.7961C141.13 52.8919 140.868 52.9402 140.568 52.9402C140.272 52.9402 140.016 52.8956 139.799 52.8078C139.583 52.7192 139.405 52.5919 139.264 52.4235C139.123 52.2559 139.018 52.0466 138.949 51.7985C138.88 51.5489 138.845 51.2628 138.845 50.9385C138.845 50.6289 138.883 50.3472 138.957 50.0939C139.032 49.8407 139.145 49.6255 139.295 49.4484C139.445 49.2713 139.633 49.1344 139.859 49.0378C140.084 48.9412 140.346 48.8936 140.647 48.8936C140.937 48.8936 141.189 48.9368 141.404 49.0239C141.619 49.111 141.798 49.2376 141.941 49.4052C142.084 49.5721 142.191 49.7785 142.261 50.0251C142.331 50.2718 142.366 50.5536 142.366 50.8719ZM141.812 50.9085C141.812 50.686 141.793 50.4789 141.753 50.2872C141.714 50.0954 141.648 49.93 141.555 49.7887C141.463 49.6475 141.34 49.5384 141.186 49.4587C141.032 49.3804 140.841 49.3401 140.615 49.3401C140.388 49.3401 140.197 49.3825 140.043 49.4674C139.889 49.5523 139.764 49.6658 139.668 49.8078C139.572 49.9498 139.502 50.1152 139.461 50.3047C139.42 50.4943 139.399 50.6926 139.399 50.9012C139.399 51.1318 139.418 51.3447 139.457 51.5394C139.496 51.7341 139.56 51.9017 139.652 52.0422C139.743 52.1827 139.864 52.2925 140.018 52.3701C140.171 52.4477 140.363 52.4872 140.593 52.4872C140.822 52.4872 141.015 52.4448 141.171 52.3599C141.327 52.275 141.453 52.1601 141.548 52.0151C141.643 51.8702 141.712 51.7026 141.752 51.5123C141.792 51.3228 141.812 51.1208 141.812 50.9085Z" fill="#646363"/>
<path d="M146.481 51.7802C146.481 51.9646 146.446 52.1286 146.378 52.2728C146.31 52.4162 146.216 52.5384 146.095 52.6387C145.975 52.739 145.833 52.8144 145.669 52.8649C145.506 52.9154 145.33 52.941 145.141 52.941C145.009 52.941 144.887 52.9293 144.775 52.9073C144.662 52.8854 144.561 52.8575 144.473 52.8253C144.385 52.7931 144.31 52.7595 144.251 52.7251C144.191 52.6907 144.149 52.6614 144.126 52.6372C144.103 52.6131 144.085 52.5816 144.074 52.5443C144.063 52.507 144.058 52.4565 144.058 52.3943C144.058 52.3496 144.06 52.3123 144.064 52.283C144.068 52.2537 144.074 52.2296 144.082 52.212C144.09 52.1937 144.1 52.1813 144.112 52.174C144.125 52.1666 144.139 52.1637 144.156 52.1637C144.183 52.1637 144.224 52.1805 144.276 52.2149C144.327 52.2493 144.394 52.2867 144.475 52.3269C144.555 52.3679 144.654 52.4052 144.768 52.4411C144.882 52.477 145.015 52.4945 145.165 52.4945C145.278 52.4945 145.383 52.4792 145.477 52.4492C145.572 52.4191 145.652 52.376 145.72 52.3203C145.789 52.2647 145.841 52.1966 145.877 52.1154C145.914 52.0342 145.932 51.942 145.932 51.8388C145.932 51.7275 145.907 51.6324 145.856 51.5533C145.805 51.4743 145.738 51.4047 145.655 51.3455C145.572 51.2862 145.477 51.2313 145.371 51.1815C145.264 51.1318 145.155 51.0813 145.044 51.0293C144.932 50.9773 144.823 50.9202 144.718 50.8573C144.612 50.7951 144.519 50.7204 144.435 50.6355C144.351 50.5506 144.284 50.4511 144.233 50.3362C144.181 50.2213 144.156 50.0844 144.156 49.9249C144.156 49.7609 144.186 49.6146 144.245 49.4857C144.305 49.3569 144.388 49.2493 144.495 49.1622C144.601 49.0752 144.728 49.0086 144.876 48.9632C145.022 48.9178 145.181 48.8951 145.352 48.8951C145.439 48.8951 145.526 48.9024 145.615 48.9178C145.703 48.9332 145.786 48.9529 145.864 48.9785C145.943 49.0042 146.012 49.032 146.072 49.0634C146.133 49.0949 146.174 49.1205 146.193 49.1396C146.212 49.1586 146.225 49.174 146.231 49.1849C146.237 49.1959 146.243 49.2106 146.246 49.2274C146.25 49.2442 146.253 49.2654 146.255 49.2896C146.257 49.3138 146.258 49.3452 146.258 49.384C146.258 49.4206 146.256 49.4528 146.254 49.4814C146.251 49.5099 146.246 49.5333 146.24 49.5531C146.233 49.5728 146.224 49.586 146.214 49.5955C146.202 49.6043 146.19 49.6094 146.176 49.6094C146.154 49.6094 146.119 49.5948 146.07 49.567C146.023 49.5384 145.964 49.5062 145.896 49.4711C145.826 49.436 145.745 49.403 145.651 49.3738C145.556 49.3445 145.451 49.3299 145.332 49.3299C145.223 49.3299 145.127 49.3445 145.046 49.3738C144.964 49.403 144.898 49.4426 144.845 49.4909C144.793 49.5392 144.753 49.597 144.727 49.6636C144.7 49.7302 144.687 49.8012 144.687 49.8766C144.687 49.9856 144.712 50.08 144.764 50.1591C144.814 50.2374 144.882 50.3077 144.965 50.3684C145.049 50.4291 145.146 50.4848 145.253 50.536C145.36 50.5865 145.47 50.6377 145.582 50.689C145.693 50.7402 145.803 50.7973 145.91 50.8588C146.017 50.9202 146.113 50.9934 146.199 51.0776C146.282 51.1618 146.35 51.2606 146.402 51.3755C146.455 51.4889 146.481 51.6243 146.481 51.7802Z" fill="#646363"/>
<path d="M150.833 49.1769C150.833 49.2157 150.831 49.2486 150.826 49.2771C150.822 49.3057 150.815 49.3284 150.807 49.3459C150.798 49.3628 150.787 49.3759 150.773 49.384C150.759 49.392 150.745 49.3964 150.729 49.3964H149.621V52.8048C149.621 52.8209 149.617 52.8356 149.608 52.8473C149.6 52.8597 149.586 52.8692 149.566 52.8766C149.545 52.8839 149.519 52.8897 149.485 52.8948C149.451 52.9 149.409 52.9022 149.359 52.9022C149.31 52.9022 149.269 52.9 149.233 52.8948C149.199 52.8897 149.172 52.8839 149.152 52.8766C149.132 52.8692 149.118 52.8597 149.109 52.8473C149.101 52.8348 149.096 52.8209 149.096 52.8048V49.3964H147.988C147.973 49.3964 147.958 49.3928 147.944 49.384C147.93 49.3759 147.92 49.3635 147.912 49.3459C147.904 49.3284 147.897 49.3057 147.892 49.2771C147.887 49.2486 147.885 49.2157 147.885 49.1769C147.885 49.1381 147.887 49.1044 147.892 49.0751C147.897 49.0459 147.905 49.0217 147.912 49.0041C147.92 48.9858 147.93 48.9727 147.944 48.9646C147.958 48.9566 147.972 48.9522 147.988 48.9522H150.727C150.743 48.9522 150.758 48.9558 150.772 48.9646C150.785 48.9727 150.796 48.9858 150.806 49.0041C150.814 49.0217 150.821 49.0459 150.825 49.0751C150.831 49.1044 150.833 49.1381 150.833 49.1769Z" fill="#646363"/>
<path d="M46.6548 35.9722C46.6548 36.0315 46.6526 36.0798 46.6475 36.12C46.6423 36.1596 46.6343 36.191 46.6247 36.2152C46.6152 36.2393 46.602 36.2576 46.5866 36.2686C46.5712 36.2796 46.5551 36.2854 46.536 36.2854H44.5584C44.4909 36.2854 44.4352 36.2657 44.3897 36.2262C44.3443 36.1866 44.3208 36.1222 44.3208 36.033V32.6063C44.3208 32.517 44.3435 32.4533 44.3897 32.4138C44.4352 32.3743 44.4916 32.3545 44.5584 32.3545H46.5243C46.5426 32.3545 46.5587 32.3596 46.5727 32.3699C46.5873 32.3801 46.5991 32.3977 46.6093 32.4226C46.6196 32.4482 46.6269 32.4804 46.6321 32.5199C46.6372 32.5594 46.6401 32.6099 46.6401 32.6707C46.6401 32.7278 46.6372 32.7753 46.6321 32.8148C46.6269 32.8544 46.6196 32.8858 46.6093 32.91C46.5991 32.9341 46.5873 32.9524 46.5727 32.9634C46.5587 32.9744 46.5426 32.9803 46.5243 32.9803H45.1179V33.9405H46.3079C46.3263 33.9405 46.3431 33.9463 46.3578 33.9573C46.3732 33.9683 46.3857 33.9859 46.3959 34.0086C46.4062 34.032 46.4135 34.0634 46.4187 34.103C46.4238 34.1425 46.426 34.1908 46.426 34.2471C46.426 34.3064 46.4238 34.3547 46.4187 34.3928C46.4135 34.4316 46.4062 34.4623 46.3959 34.4857C46.3857 34.5092 46.3732 34.526 46.3578 34.5355C46.3424 34.5458 46.3263 34.5509 46.3079 34.5509H45.1179V35.6597H46.536C46.5543 35.6597 46.5712 35.6655 46.5866 35.6765C46.602 35.6875 46.6145 35.7051 46.6247 35.7292C46.635 35.7534 46.6423 35.7856 46.6475 35.8251C46.6526 35.8646 46.6548 35.9137 46.6548 35.9722Z" fill="#646363"/>
<path d="M50.2559 36.1457C50.2456 36.1801 50.2324 36.2079 50.2163 36.2291C50.2002 36.2503 50.1738 36.2664 50.1371 36.2774C50.1004 36.2884 50.0506 36.2957 49.9875 36.2986C49.9252 36.3016 49.8423 36.303 49.7411 36.303C49.6598 36.303 49.5901 36.303 49.5329 36.3016C49.475 36.3008 49.4258 36.2979 49.3855 36.2943C49.3445 36.2899 49.3115 36.284 49.2865 36.276C49.2609 36.2679 49.2403 36.2584 49.2227 36.2459C49.2051 36.2335 49.1919 36.2189 49.1831 36.2013C49.1743 36.1845 49.1655 36.1625 49.1575 36.1362L47.9857 32.6517C47.9615 32.5785 47.9461 32.5206 47.941 32.4789C47.9358 32.4357 47.9461 32.4043 47.9718 32.3831C47.9974 32.3618 48.04 32.3487 48.1008 32.3435C48.1617 32.3384 48.2468 32.3362 48.3567 32.3362C48.4499 32.3362 48.5232 32.3384 48.576 32.3421C48.6288 32.3457 48.6691 32.353 48.6977 32.3633C48.7263 32.3735 48.7461 32.3889 48.7571 32.4087C48.7681 32.4284 48.7791 32.454 48.7894 32.4848L49.7477 35.517H49.7507L50.6907 32.5002C50.6988 32.4658 50.7091 32.4379 50.7215 32.4167C50.734 32.3955 50.7545 32.3787 50.7839 32.367C50.8132 32.3552 50.8557 32.3465 50.91 32.3428C50.9642 32.3391 51.0398 32.3369 51.1351 32.3369C51.2282 32.3369 51.3008 32.3399 51.3529 32.3465C51.4042 32.3523 51.4401 32.367 51.4592 32.3904C51.4783 32.4138 51.4849 32.4467 51.4775 32.4892C51.4702 32.5316 51.4548 32.5887 51.4306 32.659L50.2559 36.1457Z" fill="#646363"/>
<path d="M55.8315 36.1823C55.8315 36.2042 55.8278 36.2232 55.819 36.2386C55.811 36.254 55.7919 36.2664 55.7611 36.2767C55.7303 36.2869 55.6856 36.2942 55.6269 36.2979C55.5682 36.3016 55.4883 36.3037 55.3864 36.3037C55.3013 36.3037 55.2331 36.3016 55.1825 36.2979C55.1319 36.2942 55.0916 36.2862 55.0623 36.2752C55.033 36.2642 55.0124 36.2496 55 36.2328C54.9875 36.2159 54.978 36.1947 54.9692 36.1705L54.6165 35.2923C54.5739 35.1935 54.5321 35.1049 54.4918 35.0281C54.4515 34.9512 54.406 34.8868 54.3562 34.8349C54.3063 34.7836 54.2491 34.7441 54.1846 34.7178C54.12 34.6914 54.0445 34.6782 53.9595 34.6782H53.7102V36.1757C53.7102 36.1962 53.7036 36.2145 53.6904 36.2306C53.6772 36.2467 53.6552 36.2598 53.6251 36.2701C53.5943 36.2803 53.554 36.2876 53.5034 36.2942C53.4528 36.3001 53.3875 36.303 53.3083 36.303C53.2313 36.303 53.1668 36.3001 53.1147 36.2942C53.0634 36.2876 53.0223 36.2796 52.9915 36.2701C52.9608 36.2598 52.9402 36.2467 52.9278 36.2306C52.9153 36.2145 52.9094 36.1962 52.9094 36.1757V32.6063C52.9094 32.517 52.9322 32.4533 52.9784 32.4138C53.0238 32.3743 53.0803 32.3545 53.147 32.3545H54.1662C54.2696 32.3545 54.3547 32.3567 54.4222 32.3603C54.4896 32.364 54.5497 32.3699 54.6047 32.3757C54.7631 32.3984 54.9054 32.4365 55.0322 32.4914C55.1591 32.5455 55.2669 32.6172 55.3549 32.7051C55.4436 32.7929 55.5103 32.8976 55.5572 33.0176C55.6034 33.1383 55.6269 33.2767 55.6269 33.4318C55.6269 33.5636 55.61 33.6836 55.577 33.7919C55.5433 33.9002 55.4942 33.9968 55.4289 34.0817C55.3644 34.1666 55.2837 34.2406 55.1884 34.3035C55.0931 34.3664 54.9846 34.4169 54.8628 34.4557C54.9215 34.4843 54.9765 34.5187 55.0286 34.5589C55.0799 34.5992 55.129 34.649 55.1745 34.706C55.2199 34.7639 55.2632 34.8297 55.3035 34.9036C55.3439 34.9776 55.3835 35.061 55.4223 35.154L55.7538 35.929C55.7846 36.0059 55.8044 36.0622 55.8146 36.0974C55.8249 36.1325 55.8315 36.1618 55.8315 36.1823ZM54.7998 33.5153C54.7998 33.3857 54.7705 33.2759 54.7111 33.1874C54.6524 33.0981 54.5563 33.0351 54.4222 32.9993C54.3818 32.989 54.3356 32.981 54.2836 32.9751C54.2322 32.9693 54.1604 32.9663 54.0694 32.9663H53.7102V34.081H54.1178C54.2315 34.081 54.3312 34.0671 54.4163 34.04C54.5013 34.0129 54.5725 33.9742 54.6297 33.9244C54.6869 33.8746 54.7294 33.8161 54.7573 33.7465C54.7851 33.677 54.7998 33.6002 54.7998 33.5153Z" fill="#646363"/>
<path d="M60.8339 34.275C60.8339 34.6007 60.7935 34.8927 60.7122 35.1496C60.6315 35.4072 60.5105 35.6246 60.3499 35.8046C60.1893 35.9839 59.9914 36.1208 59.7545 36.2145C59.5184 36.3089 59.2449 36.3557 58.934 36.3557C58.6282 36.3557 58.3606 36.3155 58.1325 36.2357C57.9038 36.1559 57.7138 36.0337 57.562 35.8698C57.4095 35.7051 57.2959 35.4972 57.2196 35.244C57.1434 34.9908 57.1052 34.6914 57.1052 34.3445C57.1052 34.0269 57.1456 33.7407 57.2269 33.4867C57.3083 33.2328 57.4286 33.0161 57.5892 32.8383C57.749 32.6604 57.9477 32.5236 58.1839 32.4284C58.42 32.3333 58.6949 32.2857 59.0073 32.2857C59.3058 32.2857 59.569 32.3252 59.797 32.4043C60.0258 32.4833 60.2157 32.6048 60.369 32.7688C60.5222 32.9327 60.6381 33.1398 60.7158 33.3901C60.7936 33.6404 60.8339 33.9346 60.8339 34.275ZM59.9943 34.3174C59.9943 34.111 59.9782 33.9229 59.9459 33.7539C59.9136 33.5848 59.8579 33.4399 59.7802 33.3199C59.7025 33.1998 59.5983 33.1062 59.4685 33.0403C59.3387 32.9744 59.1767 32.9415 58.9816 32.9415C58.7844 32.9415 58.6202 32.9781 58.4889 33.052C58.3576 33.1259 58.2506 33.2247 58.1692 33.3477C58.0885 33.4714 58.0313 33.6155 57.9976 33.7809C57.9646 33.9464 57.9477 34.1205 57.9477 34.305C57.9477 34.5194 57.9639 34.7126 57.9961 34.8839C58.0284 35.0552 58.0834 35.2015 58.1604 35.323C58.2374 35.4445 58.3408 35.5367 58.4706 35.6004C58.6004 35.6641 58.7639 35.6963 58.9604 35.6963C59.1576 35.6963 59.3219 35.6597 59.4539 35.5872C59.5859 35.5141 59.6922 35.4152 59.7736 35.2894C59.855 35.1635 59.9122 35.0171 59.9452 34.8502C59.9774 34.6834 59.9943 34.5055 59.9943 34.3174Z" fill="#646363"/>
<path d="M65.1315 33.5489C65.1315 33.7692 65.0971 33.9646 65.0274 34.1352C64.9585 34.305 64.858 34.4484 64.726 34.5648C64.594 34.6812 64.4327 34.7697 64.2406 34.8305C64.0492 34.8912 63.8234 34.9219 63.5638 34.9219H63.2353V36.1764C63.2353 36.1969 63.2287 36.2152 63.2155 36.2313C63.2023 36.2474 63.1803 36.2606 63.1502 36.2708C63.1194 36.2811 63.0791 36.2884 63.0285 36.295C62.9779 36.3008 62.9127 36.3037 62.8335 36.3037C62.7565 36.3037 62.6919 36.3008 62.6399 36.295C62.5886 36.2884 62.5475 36.2803 62.5167 36.2708C62.4859 36.2606 62.4654 36.2474 62.4529 36.2313C62.4404 36.2152 62.4346 36.1969 62.4346 36.1764V32.6407C62.4346 32.5455 62.4595 32.4738 62.5094 32.4269C62.5592 32.3801 62.6245 32.3552 62.7059 32.3552H63.6342C63.7273 32.3552 63.816 32.3589 63.9004 32.3662C63.9847 32.3735 64.0851 32.3882 64.2032 32.4116C64.3213 32.435 64.44 32.4782 64.561 32.5411C64.682 32.6033 64.7847 32.6831 64.8697 32.7797C64.9548 32.8763 65.0201 32.9883 65.0648 33.1164C65.1095 33.2445 65.1315 33.3886 65.1315 33.5489ZM64.2949 33.606C64.2949 33.4684 64.2707 33.355 64.2215 33.2657C64.1724 33.1764 64.113 33.1113 64.0419 33.0681C63.9708 33.0256 63.8967 32.9986 63.8182 32.9876C63.7398 32.9766 63.6591 32.9707 63.5763 32.9707H63.2353V34.3042H63.5946C63.7222 34.3042 63.8292 34.2874 63.9158 34.253C64.0023 34.2186 64.0727 34.1703 64.1269 34.1088C64.1819 34.0473 64.2237 33.9727 64.2516 33.8871C64.2795 33.8014 64.2949 33.7077 64.2949 33.606Z" fill="#646363"/>
<path d="M69.0157 35.1071C69.0157 35.3135 68.9768 35.495 68.9005 35.6509C68.8235 35.8068 68.7187 35.9371 68.5867 36.041C68.4547 36.1449 68.3 36.224 68.124 36.2759C67.9473 36.3286 67.7588 36.355 67.5579 36.355C67.4223 36.355 67.2961 36.3433 67.1788 36.3213C67.0615 36.2994 66.9596 36.2723 66.8701 36.2408C66.7807 36.2093 66.7059 36.1764 66.6465 36.142C66.5863 36.1076 66.5431 36.0776 66.5174 36.0513C66.491 36.0249 66.472 35.9869 66.461 35.9371C66.45 35.8873 66.4448 35.8156 66.4448 35.7234C66.4448 35.6604 66.4463 35.6077 66.4507 35.5653C66.4551 35.5221 66.4617 35.4884 66.4705 35.4614C66.4793 35.435 66.4918 35.416 66.5072 35.405C66.5225 35.394 66.5402 35.3882 66.56 35.3882C66.5885 35.3882 66.6289 35.405 66.6802 35.4387C66.7323 35.4716 66.7983 35.5089 66.8797 35.5492C66.961 35.5894 67.0578 35.6268 67.17 35.6597C67.2822 35.6934 67.4127 35.7102 67.5609 35.7102C67.6584 35.7102 67.7456 35.6985 67.8226 35.6751C67.8996 35.6516 67.9649 35.6187 68.0191 35.5763C68.0727 35.5331 68.1137 35.4811 68.1423 35.4182C68.1709 35.3552 68.1856 35.285 68.1856 35.2081C68.1856 35.1188 68.1614 35.0427 68.1123 34.979C68.0639 34.9154 68.0001 34.8583 67.9216 34.8092C67.8432 34.7602 67.7544 34.7134 67.6554 34.6695C67.5565 34.6255 67.4538 34.5802 67.3482 34.5319C67.2426 34.4836 67.14 34.4279 67.041 34.3657C66.9412 34.3042 66.8525 34.2303 66.7748 34.144C66.6971 34.0576 66.6333 33.9559 66.5841 33.8388C66.5358 33.7209 66.5108 33.5804 66.5108 33.4165C66.5108 33.2284 66.546 33.063 66.6164 32.9195C66.6861 32.7768 66.7807 32.6582 66.8995 32.5646C67.0182 32.4701 67.1583 32.3999 67.3196 32.353C67.4809 32.3069 67.6518 32.2835 67.8329 32.2835C67.926 32.2835 68.0191 32.2901 68.113 32.3047C68.2061 32.3194 68.2934 32.3377 68.374 32.3626C68.4554 32.3867 68.5273 32.4145 68.5904 32.4445C68.6534 32.4745 68.6952 32.5001 68.715 32.5206C68.7355 32.5411 68.7495 32.558 68.7568 32.5726C68.7641 32.5872 68.77 32.6055 68.7744 32.629C68.7788 32.6524 68.7832 32.6817 68.7854 32.7175C68.7876 32.7534 68.7883 32.7966 68.7883 32.8493C68.7883 32.9085 68.7869 32.9576 68.7839 32.9986C68.781 33.0395 68.7759 33.0725 68.7685 33.0988C68.7612 33.1252 68.7517 33.1442 68.7377 33.1566C68.7245 33.1691 68.7069 33.1749 68.6849 33.1749C68.663 33.1749 68.627 33.1603 68.5779 33.1325C68.5288 33.1047 68.4694 33.0732 68.3982 33.0403C68.3271 33.0066 68.2457 32.9766 68.1519 32.9488C68.0587 32.921 67.9561 32.9078 67.8446 32.9078C67.7574 32.9078 67.6811 32.9188 67.6158 32.9393C67.5513 32.9605 67.4963 32.9898 67.4531 33.0278C67.4098 33.0659 67.3768 33.1105 67.3555 33.1632C67.3343 33.2159 67.324 33.2716 67.324 33.3308C67.324 33.4179 67.3482 33.4933 67.3959 33.557C67.4435 33.6207 67.5073 33.6778 67.5873 33.7268C67.6672 33.7758 67.7581 33.8227 67.86 33.8666C67.962 33.9105 68.0646 33.9559 68.1702 34.0042C68.2758 34.0525 68.3792 34.1081 68.4804 34.1703C68.5823 34.2318 68.6725 34.3057 68.7509 34.3921C68.8301 34.4784 68.8939 34.5794 68.9431 34.6958C68.9922 34.8122 69.0157 34.949 69.0157 35.1071Z" fill="#646363"/>
<path d="M73.4381 36.1669C73.4381 36.1896 73.4323 36.2094 73.4213 36.2262C73.4103 36.243 73.389 36.2577 73.3575 36.2686C73.3259 36.2796 73.2827 36.2884 73.2277 36.295C73.1734 36.3008 73.1038 36.3038 73.0209 36.3038C72.8889 36.3038 72.7943 36.2986 72.7364 36.2884C72.6785 36.2782 72.6367 36.2635 72.6117 36.243C72.5861 36.2225 72.5663 36.1984 72.5523 36.1698L71.3623 34.305V36.1698C71.3623 36.1918 71.3557 36.2115 71.3447 36.2277C71.3315 36.2438 71.3109 36.2577 71.2801 36.2686C71.2501 36.2796 71.209 36.2884 71.1584 36.295C71.1078 36.3008 71.0433 36.3038 70.9634 36.3038C70.8871 36.3038 70.8226 36.3008 70.7698 36.295C70.7184 36.2884 70.6774 36.2796 70.6466 36.2686C70.6165 36.2577 70.5945 36.2438 70.5813 36.2277C70.5674 36.2115 70.5615 36.1925 70.5615 36.1698V32.4672C70.5615 32.4445 70.5681 32.4255 70.5813 32.4094C70.5945 32.3933 70.6165 32.3801 70.6466 32.3699C70.6774 32.3596 70.7184 32.3516 70.7698 32.3457C70.8218 32.3391 70.8864 32.3362 70.9634 32.3362C71.0425 32.3362 71.1071 32.3391 71.1584 32.3457C71.209 32.3516 71.2501 32.3596 71.2801 32.3699C71.3109 32.3801 71.3315 32.3933 71.3447 32.4094C71.3564 32.4255 71.3623 32.4445 71.3623 32.4672V34.141L72.5157 32.4701C72.5303 32.4438 72.5472 32.4218 72.567 32.405C72.5868 32.3882 72.6132 32.3743 72.6455 32.364C72.6785 32.3538 72.7203 32.3472 72.7709 32.3428C72.8214 32.3384 72.886 32.3369 72.9659 32.3369C73.0466 32.3369 73.114 32.3399 73.1661 32.3465C73.2189 32.3523 73.2614 32.3611 73.2929 32.3721C73.3245 32.3831 73.3457 32.397 73.3582 32.4131C73.3707 32.4292 73.3758 32.4475 73.3758 32.468C73.3758 32.5024 73.367 32.5375 73.3487 32.5741C73.3311 32.6107 73.2966 32.6678 73.2453 32.7475L72.1644 34.1601L73.3421 35.9371C73.3868 36.0205 73.4139 36.0754 73.422 36.1032C73.433 36.1288 73.4381 36.1508 73.4381 36.1669Z" fill="#646363"/>
<path d="M75.7089 36.1764C75.7089 36.1969 75.7023 36.2152 75.6899 36.2313C75.6759 36.2474 75.6547 36.2606 75.6239 36.2708C75.5938 36.2811 75.5527 36.2884 75.5022 36.295C75.4516 36.3008 75.387 36.3038 75.3071 36.3038C75.2308 36.3038 75.1663 36.3008 75.1135 36.295C75.0622 36.2884 75.0211 36.2803 74.9903 36.2708C74.9603 36.2606 74.9383 36.2474 74.9251 36.2313C74.9111 36.2152 74.9053 36.1969 74.9053 36.1764V32.4643C74.9053 32.4438 74.9119 32.4255 74.9251 32.4094C74.9383 32.3933 74.9603 32.3801 74.9918 32.3699C75.0233 32.3596 75.0651 32.3516 75.115 32.3457C75.1656 32.3391 75.2301 32.3362 75.3071 32.3362C75.3863 32.3362 75.4508 32.3391 75.5022 32.3457C75.5527 32.3516 75.5938 32.3596 75.6239 32.3699C75.6547 32.3801 75.6759 32.3933 75.6899 32.4094C75.7031 32.4255 75.7089 32.4438 75.7089 32.4643V36.1764Z" fill="#646363"/>
<path d="M82.1741 35.1071C82.1741 35.3135 82.1352 35.495 82.059 35.6509C81.982 35.8068 81.8771 35.9371 81.7451 36.041C81.6132 36.1449 81.4584 36.224 81.2824 36.2759C81.1057 36.3286 80.9173 36.355 80.7164 36.355C80.58 36.355 80.4546 36.3433 80.3373 36.3213C80.2199 36.2994 80.1173 36.2723 80.0286 36.2408C79.9391 36.2093 79.8643 36.1764 79.8042 36.142C79.7448 36.1076 79.7015 36.0776 79.6751 36.0513C79.6487 36.0249 79.6297 35.9869 79.6187 35.9371C79.6077 35.8873 79.6025 35.8156 79.6025 35.7234C79.6025 35.6604 79.6047 35.6077 79.6084 35.5653C79.6128 35.5221 79.6194 35.4884 79.6282 35.4614C79.6377 35.435 79.6495 35.416 79.6649 35.405C79.6803 35.394 79.6979 35.3882 79.7177 35.3882C79.7463 35.3882 79.7866 35.405 79.8379 35.4387C79.8892 35.4716 79.956 35.5089 80.0374 35.5492C80.118 35.5894 80.2148 35.6268 80.3277 35.6597C80.4407 35.6934 80.5712 35.7102 80.7193 35.7102C80.8168 35.7102 80.9034 35.6985 80.9803 35.6751C81.0573 35.6516 81.1226 35.6187 81.1769 35.5763C81.2304 35.5331 81.2722 35.4811 81.3 35.4182C81.3286 35.3552 81.3433 35.285 81.3433 35.2081C81.3433 35.1188 81.3191 35.0427 81.27 34.979C81.2216 34.9154 81.1578 34.8583 81.0793 34.8092C81.0009 34.7602 80.9122 34.7134 80.8132 34.6695C80.7142 34.6255 80.6115 34.5802 80.5059 34.5319C80.4003 34.4836 80.2984 34.4279 80.1987 34.3657C80.099 34.3035 80.0102 34.2303 79.9325 34.144C79.8548 34.0576 79.791 33.9559 79.7419 33.8388C79.6935 33.7209 79.6685 33.5804 79.6685 33.4165C79.6685 33.2284 79.7037 33.063 79.7741 32.9195C79.8445 32.7768 79.9384 32.6582 80.0572 32.5646C80.176 32.4701 80.316 32.3999 80.4773 32.353C80.6386 32.3069 80.8095 32.2835 80.9899 32.2835C81.083 32.2835 81.1761 32.2901 81.27 32.3047C81.3631 32.3194 81.4504 32.3377 81.531 32.3626C81.6124 32.3867 81.6843 32.4145 81.7473 32.4445C81.8104 32.4745 81.8522 32.5001 81.872 32.5206C81.8925 32.5411 81.9065 32.558 81.9138 32.5726C81.9211 32.5872 81.927 32.6055 81.9314 32.629C81.9358 32.6524 81.9402 32.6817 81.9424 32.7175C81.9446 32.7534 81.9453 32.7966 81.9453 32.8493C81.9453 32.9085 81.9439 32.9576 81.9409 32.9986C81.938 33.0395 81.9329 33.0725 81.9255 33.0988C81.9182 33.1252 81.9087 33.1442 81.8947 33.1566C81.8815 33.1691 81.8639 33.1749 81.8419 33.1749C81.8199 33.1749 81.784 33.1603 81.7349 33.1325C81.6857 33.1047 81.6264 33.0732 81.5552 33.0403C81.4841 33.0066 81.402 32.9766 81.3088 32.9488C81.2157 32.921 81.1131 32.9078 81.0016 32.9078C80.9144 32.9078 80.8381 32.9188 80.7728 32.9393C80.7076 32.9605 80.654 32.9898 80.61 33.0278C80.566 33.0659 80.5338 33.1105 80.5125 33.1632C80.4913 33.2159 80.4803 33.2716 80.4803 33.3308C80.4803 33.4179 80.5037 33.4933 80.5521 33.557C80.599 33.6207 80.6636 33.6778 80.7442 33.7268C80.8249 33.7758 80.9144 33.8227 81.0163 33.8666C81.1182 33.9105 81.2209 33.9559 81.3272 34.0042C81.4328 34.0525 81.5354 34.1081 81.6374 34.1703C81.7393 34.2325 81.8295 34.3057 81.9079 34.3921C81.9871 34.4784 82.0509 34.5794 82.1 34.6958C82.1492 34.8122 82.1741 34.949 82.1741 35.1071Z" fill="#646363"/>
<path d="M86.5966 36.1669C86.5966 36.1896 86.5907 36.2094 86.5797 36.2262C86.5687 36.243 86.5474 36.2577 86.5159 36.2686C86.4844 36.2796 86.4411 36.2884 86.3861 36.295C86.3319 36.3008 86.2622 36.3038 86.1793 36.3038C86.0474 36.3038 85.9528 36.2986 85.8948 36.2884C85.8369 36.2782 85.7951 36.2635 85.7702 36.243C85.7445 36.2225 85.7247 36.1984 85.7108 36.1698L84.5207 34.305V36.1698C84.5207 36.1918 84.5141 36.2115 84.5031 36.2277C84.4899 36.2438 84.4694 36.2577 84.4386 36.2686C84.4085 36.2796 84.3674 36.2884 84.3168 36.295C84.2662 36.3008 84.2017 36.3038 84.1218 36.3038C84.0455 36.3038 83.981 36.3008 83.9282 36.295C83.8769 36.2884 83.8358 36.2796 83.805 36.2686C83.775 36.2577 83.753 36.2438 83.7398 36.2277C83.7258 36.2115 83.72 36.1925 83.72 36.1698V32.4672C83.72 32.4445 83.7266 32.4255 83.7398 32.4094C83.753 32.3933 83.775 32.3801 83.805 32.3699C83.8358 32.3596 83.8769 32.3516 83.9282 32.3457C83.9803 32.3391 84.0448 32.3362 84.1218 32.3362C84.201 32.3362 84.2655 32.3391 84.3168 32.3457C84.3674 32.3516 84.4085 32.3596 84.4386 32.3699C84.4694 32.3801 84.4899 32.3933 84.5031 32.4094C84.5148 32.4255 84.5207 32.4445 84.5207 32.4672V34.141L85.6741 32.4701C85.6888 32.4438 85.7056 32.4218 85.7254 32.405C85.7452 32.3882 85.7716 32.3743 85.8039 32.364C85.8369 32.3538 85.8787 32.3472 85.9293 32.3428C85.9799 32.3384 86.0444 32.3369 86.1243 32.3369C86.205 32.3369 86.2725 32.3399 86.3245 32.3465C86.3773 32.3523 86.4199 32.3611 86.4514 32.3721C86.4829 32.3831 86.5042 32.397 86.5166 32.4131C86.5291 32.4292 86.5342 32.4475 86.5342 32.468C86.5342 32.5024 86.5254 32.5375 86.5071 32.5741C86.4895 32.6107 86.455 32.6678 86.4037 32.7475L85.3229 34.1601L86.5005 35.9371C86.5452 36.0205 86.5724 36.0754 86.5804 36.1032C86.5914 36.1288 86.5966 36.1508 86.5966 36.1669Z" fill="#646363"/>
<path d="M90.2276 35.9517C90.2276 36.0125 90.2247 36.0637 90.2195 36.1047C90.2144 36.1457 90.2071 36.1808 90.1968 36.2079C90.1865 36.2357 90.1748 36.2547 90.1587 36.2672C90.1433 36.2796 90.1257 36.2855 90.1059 36.2855H88.3013C88.2338 36.2855 88.1781 36.2657 88.1326 36.2262C88.0872 36.1867 88.0637 36.1223 88.0637 36.033V32.4643C88.0637 32.4438 88.0703 32.4255 88.0835 32.4094C88.0967 32.3933 88.1187 32.3801 88.1488 32.3699C88.1796 32.3596 88.2206 32.3516 88.272 32.3457C88.324 32.3391 88.3886 32.3362 88.4656 32.3362C88.5447 32.3362 88.6093 32.3391 88.6606 32.3457C88.7112 32.3516 88.7523 32.3596 88.7823 32.3699C88.8131 32.3801 88.8344 32.3933 88.8483 32.4094C88.8615 32.4255 88.8674 32.4438 88.8674 32.4643V35.6268H90.1059C90.1257 35.6268 90.144 35.6319 90.1587 35.6429C90.1741 35.6539 90.1865 35.6721 90.1968 35.6978C90.2078 35.7234 90.2144 35.757 90.2195 35.798C90.2247 35.839 90.2276 35.891 90.2276 35.9517Z" fill="#646363"/>
<path d="M94.8603 35.9876C94.8845 36.0608 94.9007 36.1179 94.9058 36.161C94.9117 36.2035 94.9036 36.2357 94.8816 36.2562C94.8596 36.2774 94.82 36.2906 94.7628 36.2957C94.7063 36.3008 94.6279 36.303 94.5289 36.303C94.4248 36.303 94.3448 36.3016 94.2869 36.2986C94.229 36.2957 94.185 36.2899 94.1542 36.2803C94.1241 36.2716 94.1029 36.2584 94.0904 36.2423C94.0779 36.2262 94.0684 36.205 94.0596 36.1786L93.7956 35.3889H92.3159L92.0666 36.1574C92.0578 36.1859 92.0483 36.2094 92.0343 36.2291C92.0211 36.2481 91.9999 36.2635 91.9705 36.2745C91.9412 36.2855 91.8994 36.2935 91.8459 36.2972C91.7923 36.3008 91.7212 36.303 91.634 36.303C91.5408 36.303 91.4675 36.3001 91.4147 36.2943C91.3627 36.2877 91.326 36.273 91.3055 36.2496C91.2857 36.2262 91.2783 36.1933 91.2842 36.1508C91.2908 36.1084 91.3055 36.0513 91.3297 35.981L92.5439 32.4936C92.5564 32.4592 92.5703 32.4314 92.5872 32.4101C92.6026 32.3889 92.629 32.3728 92.6642 32.3618C92.6994 32.3508 92.7485 32.3435 92.8116 32.3406C92.8746 32.3377 92.9575 32.3362 93.0609 32.3362C93.1812 32.3362 93.2765 32.3377 93.3476 32.3406C93.4187 32.3435 93.4737 32.3508 93.514 32.3618C93.5536 32.3728 93.5822 32.3896 93.5991 32.4116C93.616 32.4343 93.6306 32.4643 93.6431 32.5031L94.8603 35.9876ZM93.0528 33.1047H93.0499L92.4926 34.7756H93.6094L93.0528 33.1047Z" fill="#646363"/>
<path d="M99.6178 34.2625C99.6178 34.6233 99.5709 34.9315 99.4763 35.1876C99.3824 35.4438 99.2475 35.6531 99.07 35.8148C98.8933 35.9773 98.6792 36.0959 98.4262 36.172C98.1732 36.2481 97.8726 36.2862 97.5243 36.2862H96.5843C96.5168 36.2862 96.4611 36.2664 96.4156 36.2269C96.3702 36.1874 96.3467 36.123 96.3467 36.0337V32.607C96.3467 32.5177 96.3694 32.454 96.4156 32.4145C96.4611 32.375 96.5175 32.3552 96.5843 32.3552H97.5947C97.9459 32.3552 98.2436 32.3962 98.4878 32.4782C98.7327 32.5602 98.938 32.6816 99.106 32.8427C99.2739 33.0037 99.4 33.2027 99.488 33.4399C99.5745 33.6763 99.6178 33.9507 99.6178 34.2625ZM98.7899 34.2903C98.7899 34.1037 98.7687 33.931 98.7247 33.7707C98.6807 33.6104 98.611 33.4721 98.5142 33.355C98.4182 33.2371 98.2942 33.1457 98.1432 33.0798C97.9921 33.0139 97.7934 32.981 97.5478 32.981H97.143V35.6538H97.5595C97.7788 35.6538 97.9635 35.6253 98.1131 35.5689C98.2634 35.5118 98.3888 35.427 98.4893 35.312C98.5905 35.1979 98.6645 35.0552 98.7151 34.8854C98.765 34.7156 98.7899 34.5165 98.7899 34.2903Z" fill="#646363"/>
<path d="M105.961 35.9693C105.961 36.0278 105.958 36.0776 105.953 36.1178C105.948 36.1588 105.941 36.1918 105.931 36.2167C105.92 36.2423 105.909 36.2598 105.892 36.2701C105.877 36.2803 105.861 36.2855 105.843 36.2855H103.521C103.44 36.2855 103.377 36.262 103.333 36.2152C103.289 36.1691 103.268 36.101 103.268 36.0117V35.8778C103.268 35.8375 103.27 35.8002 103.275 35.7673C103.281 35.7336 103.289 35.6999 103.302 35.6655C103.314 35.6311 103.331 35.5938 103.355 35.5536C103.377 35.5126 103.407 35.4643 103.441 35.4079L104.969 32.9898H103.454C103.429 32.9898 103.408 32.9839 103.391 32.9729C103.374 32.962 103.36 32.9437 103.348 32.9195C103.337 32.8954 103.329 32.8624 103.324 32.8222C103.319 32.7819 103.316 32.7329 103.316 32.6765C103.316 32.6158 103.319 32.5645 103.324 32.5236C103.329 32.4826 103.338 32.4482 103.348 32.4233C103.36 32.3977 103.374 32.3801 103.391 32.3706C103.408 32.3603 103.429 32.3552 103.454 32.3552H105.63C105.713 32.3552 105.774 32.3764 105.814 32.4189C105.854 32.4613 105.873 32.5214 105.873 32.5982V32.7475C105.873 32.8017 105.87 32.8492 105.865 32.8888C105.86 32.9283 105.851 32.9664 105.838 33.0044C105.824 33.0417 105.807 33.0805 105.785 33.12C105.763 33.1596 105.735 33.2064 105.7 33.2613L104.196 35.6458H105.843C105.881 35.6458 105.911 35.6699 105.931 35.719C105.951 35.7658 105.961 35.85 105.961 35.9693Z" fill="#646363"/>
<path d="M110.638 35.9876C110.662 36.0608 110.678 36.1179 110.683 36.161C110.689 36.2035 110.681 36.2357 110.659 36.2562C110.637 36.2774 110.598 36.2906 110.54 36.2957C110.484 36.3008 110.405 36.303 110.306 36.303C110.202 36.303 110.122 36.3016 110.065 36.2986C110.007 36.2957 109.963 36.2899 109.932 36.2803C109.902 36.2716 109.88 36.2584 109.868 36.2423C109.856 36.2262 109.846 36.205 109.837 36.1786L109.573 35.3889H108.093L107.844 36.1574C107.835 36.1859 107.826 36.2094 107.812 36.2291C107.799 36.2481 107.777 36.2635 107.748 36.2745C107.719 36.2855 107.677 36.2935 107.623 36.2972C107.57 36.3008 107.499 36.303 107.412 36.303C107.318 36.303 107.245 36.3001 107.192 36.2943C107.14 36.2877 107.104 36.273 107.083 36.2496C107.063 36.2262 107.056 36.1933 107.062 36.1508C107.068 36.1084 107.083 36.0513 107.107 35.981L108.322 32.4936C108.334 32.4592 108.348 32.4314 108.365 32.4101C108.38 32.3889 108.407 32.3728 108.442 32.3618C108.477 32.3508 108.526 32.3435 108.589 32.3406C108.652 32.3377 108.735 32.3362 108.838 32.3362C108.959 32.3362 109.054 32.3377 109.125 32.3406C109.196 32.3435 109.251 32.3508 109.292 32.3618C109.331 32.3728 109.36 32.3896 109.377 32.4116C109.394 32.4343 109.408 32.4643 109.421 32.5031L110.638 35.9876ZM108.831 33.1047H108.828L108.271 34.7756H109.388L108.831 33.1047Z" fill="#646363"/>
<path d="M47.2421 43.4433C47.2421 43.4652 47.2385 43.4843 47.2297 43.4996C47.2216 43.515 47.2025 43.5274 47.1717 43.5377C47.1409 43.5479 47.0962 43.5553 47.0375 43.5589C46.9789 43.5626 46.899 43.5648 46.797 43.5648C46.712 43.5648 46.6438 43.5626 46.5932 43.5589C46.5426 43.5553 46.5023 43.5472 46.4729 43.5362C46.4436 43.5252 46.4231 43.5106 46.4106 43.4938C46.3981 43.4769 46.3886 43.4557 46.3798 43.4316L46.0271 42.5533C45.9846 42.4545 45.9428 42.3659 45.9025 42.2891C45.8621 42.2122 45.8167 42.1478 45.7668 42.0959C45.7169 42.0446 45.6597 42.0051 45.5952 41.9788C45.5307 41.9524 45.4552 41.9392 45.3701 41.9392H45.1208V43.4367C45.1208 43.4572 45.1142 43.4755 45.101 43.4916C45.0878 43.5077 45.0658 43.5209 45.0357 43.5311C45.0049 43.5413 44.9646 43.5487 44.914 43.5553C44.8634 43.5611 44.7982 43.564 44.719 43.564C44.642 43.564 44.5774 43.5611 44.5254 43.5553C44.4741 43.5487 44.433 43.5406 44.4022 43.5311C44.3714 43.5209 44.3509 43.5077 44.3384 43.4916C44.3259 43.4755 44.3201 43.4572 44.3201 43.4367V39.8673C44.3201 39.778 44.3428 39.7143 44.389 39.6748C44.4345 39.6353 44.4909 39.6155 44.5576 39.6155H45.5769C45.6803 39.6155 45.7653 39.6177 45.8328 39.6214C45.9003 39.625 45.9604 39.6309 46.0154 39.6367C46.1738 39.6594 46.316 39.6975 46.4429 39.7524C46.5697 39.8065 46.6775 39.8783 46.7655 39.9661C46.8542 40.0539 46.921 40.1586 46.9679 40.2786C47.0141 40.3994 47.0375 40.5377 47.0375 40.6928C47.0375 40.8246 47.0207 40.9446 46.9877 41.0529C46.954 41.1613 46.9048 41.2579 46.8396 41.3428C46.775 41.4277 46.6944 41.5016 46.5991 41.5645C46.5037 41.6275 46.3952 41.678 46.2735 41.7168C46.3321 41.7453 46.3871 41.7797 46.4392 41.8199C46.4905 41.8602 46.5397 41.91 46.5851 41.9671C46.6306 42.0249 46.6738 42.0907 46.7142 42.1647C46.7545 42.2386 46.7941 42.322 46.833 42.415L47.1644 43.19C47.1952 43.2669 47.215 43.3232 47.2253 43.3584C47.2355 43.3935 47.2421 43.4235 47.2421 43.4433ZM46.2104 40.7763C46.2104 40.6467 46.1811 40.537 46.1217 40.4484C46.063 40.3591 45.967 40.2962 45.8328 40.2603C45.7925 40.2501 45.7463 40.242 45.6942 40.2362C45.6429 40.2303 45.571 40.2274 45.4801 40.2274H45.1208V41.342H45.5285C45.6421 41.342 45.7419 41.3281 45.8269 41.301C45.912 41.274 45.9831 41.2352 46.0403 41.1854C46.0975 41.1356 46.14 41.0771 46.1679 41.0076C46.1958 40.938 46.2104 40.8619 46.2104 40.7763Z" fill="#646363"/>
<path d="M51.0991 43.234C51.0991 43.2932 51.0969 43.3415 51.0918 43.3818C51.0867 43.4213 51.0786 43.4528 51.0691 43.4769C51.0595 43.5011 51.0463 43.5194 51.0309 43.5304C51.0155 43.5413 50.9994 43.5472 50.9803 43.5472H49.0027C48.9353 43.5472 48.8795 43.5274 48.8341 43.4879C48.7886 43.4484 48.7651 43.384 48.7651 43.2947V39.868C48.7651 39.7787 48.7879 39.715 48.8341 39.6755C48.8795 39.636 48.936 39.6162 49.0027 39.6162H50.9686C50.9869 39.6162 51.0031 39.6214 51.017 39.6316C51.0317 39.6419 51.0434 39.6594 51.0537 39.6843C51.0639 39.7099 51.0713 39.7421 51.0764 39.7816C51.0815 39.8212 51.0845 39.8717 51.0845 39.9324C51.0845 39.9895 51.0815 40.0371 51.0764 40.0766C51.0713 40.1161 51.0639 40.1476 51.0537 40.1717C51.0434 40.1959 51.0317 40.2142 51.017 40.2252C51.0031 40.2361 50.9869 40.242 50.9686 40.242H49.5629V41.2022H50.753C50.7713 41.2022 50.7882 41.2081 50.8029 41.2191C50.8183 41.23 50.8307 41.2476 50.841 41.2703C50.8513 41.2937 50.8586 41.3252 50.8637 41.3647C50.8689 41.4042 50.8711 41.4525 50.8711 41.5089C50.8711 41.5682 50.8689 41.6165 50.8637 41.6545C50.8586 41.6933 50.8513 41.7241 50.841 41.7475C50.8307 41.7709 50.8183 41.7877 50.8029 41.7973C50.7875 41.8075 50.7713 41.8126 50.753 41.8126H49.5629V42.9214H50.9811C50.9994 42.9214 51.0163 42.9273 51.0317 42.9383C51.0471 42.9492 51.0595 42.9668 51.0698 42.991C51.0801 43.0151 51.0874 43.0473 51.0925 43.0868C51.0962 43.1264 51.0991 43.1754 51.0991 43.234Z" fill="#646363"/>
<path d="M55.8051 40.2266C55.8051 40.2852 55.8022 40.3357 55.7971 40.3781C55.7919 40.4213 55.7846 40.4543 55.7758 40.4799C55.7663 40.5055 55.7553 40.5231 55.7421 40.5333C55.7289 40.5436 55.7128 40.5487 55.6952 40.5487C55.6688 40.5487 55.6262 40.5311 55.5668 40.4945C55.5082 40.4579 55.4297 40.4184 55.3329 40.376C55.2361 40.3335 55.1195 40.294 54.9846 40.2574C54.8497 40.2208 54.6928 40.2032 54.5146 40.2032C54.3239 40.2032 54.1509 40.2362 53.9969 40.302C53.8429 40.3679 53.7109 40.4609 53.6017 40.5816C53.4924 40.7024 53.4074 40.8466 53.3487 41.0156C53.29 41.1847 53.2607 41.3713 53.2607 41.5762C53.2607 41.8009 53.2908 41.9985 53.3502 42.1698C53.4096 42.3411 53.4939 42.4845 53.6017 42.5994C53.7087 42.7151 53.8385 42.8022 53.9896 42.8607C54.1406 42.9193 54.3078 42.9493 54.4904 42.9493C54.5799 42.9493 54.6678 42.939 54.7551 42.9185C54.8424 42.8988 54.923 42.868 54.9985 42.8278V41.9166H54.2528C54.2162 41.9166 54.1883 41.8939 54.1678 41.8478C54.148 41.8024 54.1377 41.7248 54.1377 41.6158C54.1377 41.5587 54.1399 41.5111 54.145 41.473C54.1502 41.435 54.1575 41.4035 54.1678 41.3808C54.178 41.3574 54.1905 41.3406 54.2044 41.3296C54.2191 41.3186 54.2352 41.3128 54.2528 41.3128H55.583C55.6152 41.3128 55.6438 41.3186 55.6695 41.3296C55.6951 41.3406 55.7171 41.3574 55.7362 41.3794C55.7553 41.4013 55.7699 41.4284 55.7809 41.4599C55.7912 41.4913 55.7963 41.5272 55.7963 41.5675V43.1322C55.7963 43.193 55.7853 43.2457 55.7648 43.2918C55.7435 43.3372 55.6996 43.373 55.6336 43.3994C55.5676 43.4257 55.4862 43.4528 55.3886 43.4813C55.2911 43.5099 55.1899 43.534 55.0858 43.5545C54.9817 43.575 54.8761 43.5897 54.769 43.5999C54.6627 43.6102 54.5557 43.6153 54.4479 43.6153C54.1333 43.6153 53.8525 43.5699 53.6039 43.4799C53.3553 43.3899 53.1449 43.2589 52.9725 43.0876C52.8002 42.9163 52.6682 42.7077 52.5766 42.4618C52.4849 42.2159 52.4395 41.9371 52.4395 41.6253C52.4395 41.3033 52.4878 41.0142 52.5854 40.758C52.6829 40.5018 52.8208 40.2845 52.9989 40.1044C53.1779 39.9251 53.3934 39.7882 53.6457 39.6931C53.8979 39.598 54.1795 39.5504 54.4904 39.5504C54.6605 39.5504 54.816 39.5621 54.956 39.5855C55.0961 39.6089 55.2178 39.6367 55.3227 39.6704C55.4275 39.7033 55.514 39.7399 55.583 39.778C55.6519 39.8161 55.7003 39.8497 55.7274 39.8783C55.7545 39.9068 55.7743 39.9463 55.7868 39.9983C55.7985 40.0488 55.8051 40.1256 55.8051 40.2266Z" fill="#646363"/>
<path d="M58.3496 43.4374C58.3496 43.4579 58.343 43.4762 58.3298 43.4923C58.3166 43.5084 58.2953 43.5216 58.2645 43.5318C58.2344 43.5421 58.1934 43.5494 58.1428 43.556C58.0922 43.5619 58.0277 43.5648 57.9477 43.5648C57.8707 43.5648 57.8062 43.5619 57.7549 43.556C57.7028 43.5494 57.6625 43.5414 57.6317 43.5318C57.6016 43.5216 57.5796 43.5084 57.5664 43.4923C57.5532 43.4762 57.5466 43.4579 57.5466 43.4374V39.7253C57.5466 39.7048 57.5532 39.6865 57.5664 39.6704C57.5796 39.6543 57.6016 39.6411 57.6332 39.6309C57.6647 39.6206 57.7057 39.6126 57.7563 39.6067C57.8069 39.6002 57.8707 39.5972 57.9477 39.5972C58.0269 39.5972 58.0922 39.6002 58.1428 39.6067C58.1934 39.6126 58.2344 39.6206 58.2645 39.6309C58.2953 39.6411 58.3166 39.6543 58.3298 39.6704C58.343 39.6865 58.3496 39.7048 58.3496 39.7253V43.4374Z" fill="#646363"/>
<path d="M63.6857 41.536C63.6857 41.8617 63.6454 42.1537 63.564 42.4106C63.4833 42.6682 63.3623 42.8856 63.2017 43.0656C63.0411 43.2449 62.8432 43.3818 62.6063 43.4755C62.3702 43.5699 62.0967 43.6167 61.7858 43.6167C61.48 43.6167 61.2124 43.5765 60.9843 43.4967C60.7556 43.4169 60.5656 43.2947 60.4139 43.1308C60.2613 42.9661 60.1477 42.7582 60.0714 42.505C59.9952 42.2518 59.957 41.9524 59.957 41.6055C59.957 41.2879 59.9974 41.0017 60.0788 40.7477C60.1601 40.4938 60.2804 40.2771 60.441 40.0993C60.6008 39.9214 60.7996 39.7846 61.0357 39.6894C61.2718 39.5943 61.5468 39.5467 61.8591 39.5467C62.1576 39.5467 62.4208 39.5862 62.6489 39.6653C62.8776 39.7443 63.0675 39.8658 63.2208 40.0298C63.374 40.1937 63.4899 40.4008 63.5676 40.6511C63.6454 40.9014 63.6857 41.1957 63.6857 41.536ZM62.8454 41.5784C62.8454 41.372 62.8292 41.184 62.797 41.0149C62.7647 40.8458 62.709 40.7009 62.6313 40.5809C62.5535 40.4608 62.4494 40.3672 62.3196 40.3013C62.1898 40.2354 62.0278 40.2025 61.8327 40.2025C61.6355 40.2025 61.4712 40.2391 61.34 40.313C61.2087 40.3869 61.1017 40.4857 61.0203 40.6087C60.9396 40.7324 60.8824 40.8766 60.8487 41.042C60.8157 41.2074 60.7988 41.3816 60.7988 41.566C60.7988 41.7804 60.815 41.9737 60.8472 42.1449C60.8795 42.3162 60.9345 42.4626 61.0115 42.584C61.0885 42.7055 61.1918 42.7978 61.3216 42.8614C61.4514 42.9251 61.6149 42.9573 61.8115 42.9573C62.0087 42.9573 62.173 42.9207 62.3049 42.8483C62.4369 42.7751 62.5433 42.6763 62.6247 42.5504C62.706 42.4245 62.7632 42.2781 62.7962 42.1112C62.8292 41.9444 62.8454 41.7665 62.8454 41.5784Z" fill="#646363"/>
<path d="M68.5347 43.2676C68.5347 43.3137 68.5259 43.3555 68.5105 43.3921C68.4944 43.4287 68.4717 43.4594 68.4446 43.4835C68.4174 43.5077 68.3844 43.5253 68.347 43.5362C68.3096 43.5472 68.2715 43.5531 68.2326 43.5531H67.8917C67.8205 43.5531 67.7597 43.5458 67.7076 43.5319C67.6563 43.5172 67.6086 43.4916 67.5646 43.4543C67.5206 43.4169 67.4788 43.3657 67.4385 43.302C67.3982 43.2384 67.352 43.1557 67.3014 43.0547L66.321 41.2169C66.2646 41.1078 66.2066 40.9893 66.148 40.8634C66.0893 40.7375 66.0365 40.6138 65.9896 40.4945H65.9837C65.9918 40.6402 65.9984 40.7851 66.002 40.93C66.0057 41.0749 66.0079 41.2242 66.0079 41.3779V43.4345C66.0079 43.4543 66.002 43.4726 65.991 43.4887C65.9801 43.5048 65.9603 43.5187 65.9331 43.5297C65.9053 43.5406 65.8686 43.5494 65.8217 43.556C65.7755 43.5619 65.7153 43.5648 65.642 43.5648C65.5709 43.5648 65.5122 43.5619 65.4653 43.556C65.4191 43.5494 65.3824 43.5406 65.356 43.5297C65.3296 43.5187 65.3113 43.5048 65.301 43.4887C65.2908 43.4726 65.2856 43.4543 65.2856 43.4345V39.9017C65.2856 39.8066 65.3135 39.7348 65.3692 39.688C65.425 39.6411 65.4932 39.6163 65.5746 39.6163H66.0035C66.0805 39.6163 66.1458 39.6228 66.1986 39.636C66.2514 39.6492 66.299 39.6712 66.3401 39.7012C66.3811 39.7312 66.4207 39.7736 66.4574 39.827C66.4941 39.8805 66.5315 39.9471 66.5703 40.0254L67.3373 41.4621C67.3821 41.5492 67.426 41.6348 67.4693 41.719C67.5126 41.8031 67.5551 41.8873 67.5954 41.9715C67.6358 42.0556 67.6754 42.1383 67.7142 42.2188C67.7524 42.2994 67.7905 42.3806 67.8264 42.4618H67.8293C67.8235 42.3198 67.8191 42.172 67.8154 42.0183C67.8125 41.8646 67.811 41.7175 67.811 41.5777V39.7334C67.811 39.7136 67.8169 39.6953 67.8286 39.6792C67.8411 39.6631 67.8609 39.6485 67.8895 39.636C67.9181 39.6236 67.9555 39.6155 68.0024 39.6104C68.0493 39.6053 68.1087 39.6031 68.182 39.6031C68.251 39.6031 68.3089 39.6053 68.3558 39.6104C68.4028 39.6155 68.438 39.6243 68.4636 39.636C68.4893 39.6477 68.5069 39.6624 68.5164 39.6792C68.5267 39.6953 68.5318 39.7136 68.5318 39.7334V43.2676H68.5347Z" fill="#646363"/>
<path d="M73.5525 43.2493C73.5767 43.3225 73.5928 43.3796 73.5979 43.4228C73.6038 43.4652 73.5957 43.4974 73.5737 43.5179C73.5517 43.5392 73.5121 43.5523 73.4549 43.5575C73.3985 43.5626 73.32 43.5648 73.221 43.5648C73.1169 43.5648 73.037 43.5633 72.9791 43.5604C72.9211 43.5575 72.8771 43.5516 72.8463 43.5421C72.8163 43.5333 72.795 43.5201 72.7825 43.504C72.7701 43.4879 72.7605 43.4667 72.7517 43.4404L72.4878 42.6507H71.008L70.7587 43.4191C70.7499 43.4477 70.7404 43.4711 70.7265 43.4909C70.7133 43.5099 70.692 43.5253 70.6627 43.5362C70.6333 43.5472 70.5915 43.5553 70.538 43.5589C70.4845 43.5626 70.4134 43.5648 70.3261 43.5648C70.233 43.5648 70.1596 43.5619 70.1069 43.556C70.0548 43.5494 70.0181 43.5348 69.9976 43.5114C69.9778 43.4879 69.9705 43.455 69.9763 43.4126C69.9829 43.3701 69.9976 43.313 70.0218 43.2428L71.2361 39.7553C71.2485 39.7209 71.2625 39.6931 71.2793 39.6719C71.2947 39.6507 71.3211 39.6346 71.3563 39.6236C71.3915 39.6126 71.4407 39.6053 71.5037 39.6024C71.5668 39.5994 71.6496 39.598 71.753 39.598C71.8733 39.598 71.9686 39.5994 72.0397 39.6024C72.1109 39.6053 72.1659 39.6126 72.2062 39.6236C72.2458 39.6346 72.2744 39.6514 72.2912 39.6733C72.3081 39.696 72.3228 39.726 72.3352 39.7648L73.5525 43.2493ZM71.745 40.3664H71.7428L71.1855 42.0373H72.3022L71.745 40.3664Z" fill="#646363"/>
<path d="M77.2027 43.2127C77.2027 43.2735 77.1998 43.3247 77.1946 43.3657C77.1895 43.4067 77.1822 43.4418 77.1719 43.4689C77.1616 43.4967 77.1499 43.5157 77.1338 43.5282C77.1184 43.5406 77.1008 43.5465 77.081 43.5465H75.2764C75.2089 43.5465 75.1532 43.5267 75.1077 43.4872C75.0623 43.4477 75.0388 43.3833 75.0388 43.294V39.7253C75.0388 39.7048 75.0454 39.6865 75.0586 39.6704C75.0718 39.6543 75.0938 39.6411 75.1239 39.6309C75.1547 39.6206 75.1957 39.6126 75.2471 39.6067C75.2991 39.6002 75.3637 39.5972 75.4407 39.5972C75.5198 39.5972 75.5844 39.6002 75.6357 39.6067C75.6863 39.6126 75.7274 39.6206 75.7574 39.6309C75.7882 39.6411 75.8095 39.6543 75.8234 39.6704C75.8366 39.6865 75.8425 39.7048 75.8425 39.7253V42.8878H77.081C77.1008 42.8878 77.1191 42.8929 77.1338 42.9039C77.1492 42.9149 77.1616 42.9332 77.1719 42.9588C77.1829 42.9844 77.1895 43.0181 77.1946 43.059C77.1998 43.1 77.2027 43.152 77.2027 43.2127Z" fill="#646363"/>
<path d="M81.856 43.2676C81.856 43.3137 81.848 43.3555 81.8318 43.3921C81.8157 43.4287 81.7937 43.4594 81.7666 43.4835C81.7387 43.5077 81.7064 43.5253 81.669 43.5362C81.6309 43.5472 81.5928 43.5531 81.5547 43.5531H81.2137C81.1426 43.5531 81.081 43.5458 81.0296 43.5319C80.9783 43.5172 80.9299 43.4916 80.8866 43.4543C80.8434 43.4169 80.8016 43.3657 80.7605 43.302C80.7195 43.2384 80.6747 43.1557 80.6234 43.0547L79.643 41.2169C79.5866 41.1078 79.5286 40.9893 79.47 40.8634C79.4113 40.7375 79.3585 40.6138 79.3116 40.4945H79.305C79.3138 40.6402 79.3197 40.7851 79.3233 40.93C79.327 41.0749 79.3292 41.2242 79.3292 41.3779V43.4345C79.3292 43.4543 79.3241 43.4726 79.3131 43.4887C79.3021 43.5048 79.283 43.5187 79.2551 43.5297C79.228 43.5406 79.1906 43.5494 79.1444 43.556C79.0982 43.5619 79.0374 43.5648 78.9648 43.5648C78.8936 43.5648 78.835 43.5619 78.7888 43.556C78.7426 43.5494 78.7059 43.5406 78.6795 43.5297C78.6531 43.5187 78.6348 43.5048 78.6245 43.4887C78.6143 43.4726 78.6091 43.4543 78.6091 43.4345V39.9017C78.6091 39.8066 78.637 39.7348 78.6927 39.688C78.7485 39.6411 78.8174 39.6163 78.898 39.6163H79.327C79.404 39.6163 79.4692 39.6228 79.522 39.636C79.5748 39.6492 79.6225 39.6712 79.6636 39.7012C79.7046 39.7312 79.7435 39.7736 79.7809 39.827C79.8168 39.8805 79.8549 39.9471 79.8931 40.0254L80.6601 41.4621C80.7048 41.5492 80.7488 41.6348 80.7928 41.719C80.8368 41.8031 80.8778 41.8873 80.9189 41.9715C80.96 42.0556 80.9988 42.1383 81.0377 42.2188C81.0766 42.2994 81.114 42.3806 81.1499 42.4618H81.1528C81.147 42.3198 81.1418 42.172 81.1389 42.0183C81.136 41.8646 81.1345 41.7175 81.1345 41.5777V39.7334C81.1345 39.7136 81.1404 39.6953 81.1521 39.6792C81.1646 39.6631 81.1851 39.6485 81.213 39.636C81.2415 39.6236 81.2789 39.6155 81.3251 39.6104C81.3721 39.6053 81.4322 39.6031 81.5048 39.6031C81.5745 39.6031 81.6316 39.6053 81.6786 39.6104C81.7248 39.6155 81.7607 39.6243 81.7856 39.636C81.8113 39.6485 81.8296 39.6624 81.8392 39.6792C81.8494 39.6953 81.8546 39.7136 81.8546 39.7334V43.2676H81.856Z" fill="#646363"/>
<path d="M84.4531 43.4374C84.4531 43.4579 84.4465 43.4762 84.434 43.4923C84.4201 43.5084 84.3988 43.5216 84.368 43.5318C84.3379 43.5421 84.2969 43.5494 84.2463 43.556C84.1957 43.5619 84.1312 43.5648 84.0512 43.5648C83.975 43.5648 83.9105 43.5619 83.8577 43.556C83.8063 43.5494 83.7653 43.5414 83.7345 43.5318C83.7044 43.5216 83.6824 43.5084 83.6692 43.4923C83.6553 43.4762 83.6494 43.4579 83.6494 43.4374V39.7253C83.6494 39.7048 83.656 39.6865 83.6692 39.6704C83.6824 39.6543 83.7044 39.6411 83.7359 39.6309C83.7675 39.6206 83.8093 39.6126 83.8591 39.6067C83.9097 39.6002 83.9742 39.5972 84.0512 39.5972C84.1304 39.5972 84.195 39.6002 84.2463 39.6067C84.2969 39.6126 84.3379 39.6206 84.368 39.6309C84.3988 39.6411 84.4201 39.6543 84.434 39.6704C84.4472 39.6865 84.4531 39.7048 84.4531 39.7253V43.4374Z" fill="#646363"/>
<path d="M91.5056 43.4433C91.5056 43.4652 91.5019 43.4843 91.4931 43.4996C91.485 43.515 91.466 43.5274 91.4359 43.5377C91.4051 43.5479 91.3604 43.5553 91.301 43.5589C91.2423 43.5626 91.1624 43.5648 91.0612 43.5648C90.9761 43.5648 90.9079 43.5626 90.8573 43.5589C90.8068 43.5553 90.7664 43.5472 90.7371 43.5362C90.7078 43.5252 90.6872 43.5106 90.6748 43.4938C90.6623 43.4769 90.6528 43.4557 90.644 43.4316L90.292 42.5533C90.2487 42.4545 90.2077 42.3659 90.1666 42.2891C90.1263 42.2122 90.0816 42.1478 90.031 42.0959C89.9818 42.0446 89.9239 42.0051 89.8594 41.9788C89.7948 41.9524 89.7193 41.9392 89.6343 41.9392H89.3842V43.4367C89.3842 43.4572 89.3776 43.4755 89.3644 43.4916C89.3512 43.5077 89.3292 43.5209 89.2992 43.5311C89.2691 43.5413 89.228 43.5487 89.1774 43.5553C89.1268 43.5611 89.0616 43.564 88.9824 43.564C88.9054 43.564 88.8409 43.5611 88.7888 43.5553C88.7375 43.5487 88.6957 43.5406 88.6656 43.5311C88.6356 43.5209 88.6143 43.5077 88.6018 43.4916C88.5894 43.4755 88.5835 43.4572 88.5835 43.4367V39.8673C88.5835 39.778 88.6062 39.7143 88.6524 39.6748C88.6979 39.6353 88.7543 39.6155 88.8211 39.6155H89.8403C89.9444 39.6155 90.0295 39.6177 90.097 39.6214C90.1637 39.625 90.2245 39.6309 90.2788 39.6367C90.4379 39.6594 90.5802 39.6975 90.707 39.7524C90.8339 39.8065 90.9409 39.8783 91.0289 39.9661C91.1169 40.0539 91.1851 40.1586 91.2313 40.2786C91.2775 40.3986 91.301 40.5377 91.301 40.6928C91.301 40.8246 91.2848 40.9446 91.2511 41.0529C91.2181 41.1613 91.169 41.2579 91.1037 41.3428C91.0392 41.4277 90.9593 41.5016 90.8632 41.5645C90.7679 41.6275 90.6601 41.678 90.5384 41.7168C90.597 41.7453 90.652 41.7797 90.7041 41.8199C90.7562 41.8602 90.8053 41.91 90.85 41.9671C90.8955 42.0249 90.9387 42.0907 90.9798 42.1647C91.0209 42.2386 91.0597 42.322 91.0986 42.415L91.43 43.19C91.4608 43.2669 91.4806 43.3232 91.4909 43.3584C91.5012 43.3935 91.5056 43.4235 91.5056 43.4433ZM90.4731 40.7763C90.4731 40.6467 90.4438 40.537 90.3851 40.4484C90.3265 40.3598 90.2297 40.2962 90.0962 40.2603C90.0552 40.2501 90.009 40.242 89.9576 40.2362C89.9063 40.2303 89.8344 40.2274 89.7428 40.2274H89.3842V41.342H89.7919C89.9056 41.342 90.0053 41.3281 90.0904 41.301C90.1754 41.274 90.2465 41.2352 90.303 41.1854C90.3602 41.1356 90.4027 41.0771 90.4313 41.0076C90.4599 40.938 90.4731 40.8619 90.4731 40.7763Z" fill="#646363"/>
<path d="M96.2536 43.2493C96.2778 43.3225 96.294 43.3796 96.2991 43.4228C96.305 43.4652 96.2969 43.4974 96.2749 43.5179C96.2529 43.5392 96.2133 43.5523 96.1561 43.5575C96.0997 43.5626 96.0212 43.5648 95.9222 43.5648C95.8181 43.5648 95.7382 43.5633 95.6802 43.5604C95.6223 43.5575 95.5783 43.5516 95.5475 43.5421C95.5174 43.5333 95.4962 43.5201 95.4837 43.504C95.4712 43.4879 95.4617 43.4667 95.4529 43.4404L95.1889 42.6507H93.7092L93.4599 43.4191C93.4511 43.4477 93.4416 43.4711 93.4276 43.4909C93.4144 43.5099 93.3932 43.5253 93.3638 43.5362C93.3345 43.5472 93.2927 43.5553 93.2392 43.5589C93.1857 43.5626 93.1145 43.5648 93.0273 43.5648C92.9341 43.5648 92.8608 43.5619 92.808 43.556C92.756 43.5494 92.7193 43.5348 92.6988 43.5114C92.679 43.4879 92.6716 43.455 92.6775 43.4126C92.6841 43.3701 92.6988 43.313 92.723 43.2428L93.9373 39.7553C93.9497 39.7209 93.9637 39.6931 93.9805 39.6719C93.9959 39.6507 94.0223 39.6346 94.0575 39.6236C94.0927 39.6126 94.1418 39.6053 94.2049 39.6024C94.268 39.5994 94.3508 39.598 94.4542 39.598C94.5745 39.598 94.6698 39.5994 94.7409 39.6024C94.812 39.6053 94.867 39.6126 94.9074 39.6236C94.947 39.6346 94.9756 39.6514 94.9924 39.6733C95.0093 39.696 95.0239 39.726 95.0364 39.7648L96.2536 43.2493ZM94.4461 40.3664H94.4432L93.8859 42.0373H95.0027L94.4461 40.3664Z" fill="#646363"/>
<path d="M100.159 43.231C100.159 43.2896 100.156 43.3393 100.151 43.3796C100.146 43.4206 100.138 43.4535 100.129 43.4784C100.118 43.504 100.106 43.5216 100.09 43.5318C100.075 43.5421 100.058 43.5472 100.04 43.5472H97.7186C97.6372 43.5472 97.5748 43.5238 97.5308 43.4769C97.4868 43.4308 97.4656 43.3628 97.4656 43.2735V43.1395C97.4656 43.0993 97.4678 43.062 97.4729 43.029C97.478 42.9954 97.4868 42.9617 97.4993 42.9273C97.511 42.8929 97.5286 42.8556 97.5521 42.8153C97.5748 42.7743 97.6042 42.726 97.6386 42.6697L99.166 40.2515H97.6511C97.6269 40.2515 97.6056 40.2457 97.5888 40.2347C97.5719 40.2237 97.5572 40.2054 97.5455 40.1813C97.5345 40.1571 97.5264 40.1242 97.5213 40.0839C97.5162 40.0437 97.514 39.9946 97.514 39.9383C97.514 39.8775 97.5162 39.8263 97.5213 39.7853C97.5264 39.7443 97.5352 39.7099 97.5455 39.685C97.5572 39.6594 97.5712 39.6419 97.5888 39.6323C97.6056 39.6221 97.6269 39.617 97.6511 39.617H99.8274C99.9103 39.617 99.9719 39.6382 100.011 39.6806C100.051 39.7231 100.071 39.7831 100.071 39.86V40.0093C100.071 40.0634 100.068 40.111 100.063 40.1505C100.058 40.19 100.048 40.2281 100.036 40.2662C100.022 40.3035 100.005 40.3423 99.9829 40.3818C99.9601 40.4213 99.9323 40.4682 99.8971 40.523L98.3939 42.9075H100.04C100.079 42.9075 100.108 42.9317 100.129 42.9807C100.149 43.0276 100.159 43.1117 100.159 43.231Z" fill="#646363"/>
<path d="M103.607 43.4074C103.597 43.4418 103.585 43.4696 103.568 43.4909C103.552 43.5121 103.525 43.5282 103.489 43.5392C103.453 43.5501 103.403 43.5575 103.34 43.5604C103.277 43.5633 103.195 43.5648 103.093 43.5648C103.013 43.5648 102.943 43.5648 102.885 43.5633C102.827 43.5619 102.778 43.5597 102.738 43.556C102.697 43.5516 102.664 43.5458 102.639 43.5377C102.613 43.5297 102.592 43.5201 102.574 43.5077C102.557 43.4953 102.544 43.4806 102.535 43.463C102.525 43.4455 102.517 43.4243 102.509 43.3979L101.337 39.9134C101.313 39.8402 101.298 39.7824 101.293 39.7407C101.287 39.6975 101.298 39.666 101.323 39.6448C101.348 39.6236 101.392 39.6104 101.452 39.6053C101.513 39.6002 101.598 39.598 101.708 39.598C101.802 39.598 101.875 39.6002 101.928 39.6038C101.98 39.6075 102.021 39.6148 102.049 39.625C102.078 39.6353 102.098 39.6507 102.109 39.6704C102.12 39.6909 102.131 39.7158 102.141 39.7465L103.099 42.7787H103.103L104.043 39.7619C104.051 39.7275 104.061 39.6997 104.073 39.6785C104.086 39.6572 104.107 39.6404 104.136 39.6287C104.165 39.617 104.208 39.6082 104.262 39.6045C104.317 39.6009 104.392 39.5987 104.487 39.5987C104.581 39.5987 104.654 39.6016 104.705 39.6082C104.757 39.6141 104.792 39.6287 104.812 39.6521C104.832 39.6755 104.838 39.7085 104.831 39.7509C104.823 39.7934 104.808 39.8505 104.784 39.9207L103.607 43.4074Z" fill="#646363"/>
<path d="M109.686 41.536C109.686 41.8617 109.646 42.1537 109.564 42.4106C109.484 42.6682 109.363 42.8856 109.202 43.0656C109.042 43.2449 108.844 43.3818 108.608 43.4755C108.371 43.5699 108.098 43.6167 107.787 43.6167C107.481 43.6167 107.214 43.5765 106.985 43.4967C106.757 43.4169 106.567 43.2947 106.415 43.1308C106.263 42.9661 106.149 42.7582 106.072 42.505C105.996 42.2518 105.958 41.9524 105.958 41.6055C105.958 41.2879 105.999 41.0017 106.08 40.7477C106.161 40.4938 106.282 40.2771 106.442 40.0993C106.603 39.9214 106.801 39.7846 107.038 39.6894C107.274 39.5943 107.548 39.5467 107.86 39.5467C108.159 39.5467 108.422 39.5862 108.65 39.6653C108.878 39.7443 109.069 39.8658 109.222 40.0298C109.375 40.1937 109.491 40.4008 109.57 40.6511C109.648 40.9014 109.686 41.1957 109.686 41.536ZM108.846 41.5784C108.846 41.372 108.83 41.184 108.797 41.0149C108.765 40.8458 108.71 40.7009 108.632 40.5809C108.553 40.4608 108.449 40.3672 108.319 40.3013C108.19 40.2354 108.028 40.2025 107.832 40.2025C107.635 40.2025 107.472 40.2391 107.34 40.313C107.207 40.3869 107.101 40.4857 107.019 40.6087C106.939 40.7324 106.881 40.8766 106.848 41.042C106.814 41.2074 106.798 41.3816 106.798 41.566C106.798 41.7804 106.814 41.9737 106.846 42.1449C106.878 42.3162 106.933 42.4626 107.01 42.584C107.087 42.7055 107.192 42.7978 107.321 42.8614C107.451 42.9251 107.614 42.9573 107.811 42.9573C108.008 42.9573 108.173 42.9207 108.305 42.8483C108.437 42.7758 108.543 42.6763 108.624 42.5504C108.706 42.4245 108.762 42.2781 108.796 42.1112C108.83 41.9444 108.846 41.7665 108.846 41.5784Z" fill="#646363"/>
<path d="M112.442 42.453C112.442 42.6316 112.425 42.7919 112.392 42.9346C112.358 43.0773 112.302 43.1988 112.222 43.2991C112.142 43.3994 112.036 43.4762 111.907 43.5282C111.776 43.5809 111.616 43.6072 111.426 43.6072C111.365 43.6072 111.305 43.6028 111.244 43.5933C111.185 43.5838 111.13 43.5728 111.08 43.5582C111.03 43.5436 110.987 43.5289 110.95 43.5128C110.914 43.4967 110.889 43.4821 110.877 43.4689C110.865 43.4557 110.855 43.4418 110.847 43.4279C110.838 43.414 110.832 43.395 110.826 43.3716C110.82 43.3481 110.815 43.3196 110.813 43.2852C110.811 43.2508 110.81 43.2076 110.81 43.1549C110.81 43.0861 110.812 43.0276 110.815 42.98C110.818 42.9324 110.823 42.8951 110.83 42.8673C110.837 42.8402 110.847 42.8212 110.861 42.8095C110.874 42.7985 110.891 42.7926 110.911 42.7926C110.928 42.7926 110.95 42.7992 110.975 42.8124C110.999 42.8256 111.026 42.8395 111.057 42.8534C111.087 42.8673 111.123 42.8812 111.164 42.8944C111.204 42.9076 111.252 42.9141 111.307 42.9141C111.361 42.9141 111.409 42.9068 111.45 42.8914C111.492 42.8761 111.527 42.8497 111.555 42.8124C111.582 42.7751 111.602 42.7246 111.617 42.6616C111.632 42.5994 111.638 42.5182 111.638 42.4186V39.7195C111.638 39.699 111.645 39.6814 111.657 39.666C111.671 39.6507 111.692 39.6382 111.722 39.628C111.751 39.6177 111.792 39.6104 111.845 39.6053C111.897 39.6002 111.962 39.598 112.04 39.598C112.116 39.598 112.181 39.6002 112.232 39.6053C112.282 39.6104 112.324 39.6185 112.355 39.628C112.387 39.6375 112.409 39.6507 112.422 39.666C112.436 39.6814 112.442 39.699 112.442 39.7195V42.453Z" fill="#646363"/>
<path d="M47.5993 28.5831C47.5993 28.6658 47.5956 28.7353 47.5883 28.7909C47.5809 28.8466 47.5707 28.8919 47.556 28.9263C47.5413 28.9607 47.5237 28.9856 47.5025 29.0017C47.4812 29.0178 47.457 29.0251 47.4313 29.0251H44.6383C44.5437 29.0251 44.4645 28.9973 44.4 28.9417C44.3355 28.8861 44.3032 28.7953 44.3032 28.6694V23.8324C44.3032 23.7065 44.3355 23.6158 44.4 23.5602C44.4645 23.5045 44.5437 23.4767 44.6383 23.4767H47.4137C47.4394 23.4767 47.4621 23.484 47.4827 23.4979C47.5032 23.5118 47.5201 23.5375 47.534 23.5733C47.5479 23.6092 47.5589 23.6546 47.5663 23.7109C47.5736 23.7673 47.5773 23.8375 47.5773 23.9232C47.5773 24.0029 47.5736 24.071 47.5663 24.1266C47.5589 24.1823 47.5487 24.2276 47.534 24.262C47.5193 24.2964 47.5025 24.3213 47.4827 24.3374C47.4629 24.3535 47.4394 24.3608 47.4137 24.3608H45.4288V25.7163H47.1087C47.1344 25.7163 47.1578 25.7243 47.1798 25.7397C47.2018 25.7551 47.2194 25.78 47.2334 25.8129C47.2473 25.8458 47.2583 25.8897 47.2656 25.9461C47.2729 26.0025 47.2766 26.0698 47.2766 26.1496C47.2766 26.2323 47.2729 26.3011 47.2656 26.3552C47.2583 26.4094 47.248 26.4533 47.2334 26.4862C47.2187 26.5192 47.2011 26.5426 47.1798 26.5572C47.1586 26.5719 47.1344 26.5784 47.1087 26.5784H45.4288V28.144H47.4306C47.4563 28.144 47.4797 28.152 47.5017 28.1674C47.5237 28.1827 47.5413 28.2084 47.5553 28.2428C47.5692 28.2772 47.5802 28.3218 47.5875 28.3782C47.5949 28.4345 47.5993 28.4996 47.5993 28.5831Z" fill="#646363"/>
<path d="M52.6831 28.8275C52.6684 28.8758 52.6501 28.9153 52.6274 28.9453C52.6046 28.9754 52.5672 28.998 52.5159 29.0141C52.4646 29.0302 52.3942 29.0398 52.3055 29.0441C52.2167 29.0485 52.1009 29.0507 51.9572 29.0507C51.8428 29.0507 51.7445 29.05 51.6631 29.0485C51.5817 29.0471 51.5121 29.0434 51.4549 29.0376C51.3977 29.0317 51.3507 29.0229 51.3155 29.0119C51.2804 29.001 51.2496 28.9863 51.2254 28.9688C51.2012 28.9512 51.1821 28.9307 51.1696 28.9066C51.1572 28.8824 51.1447 28.8517 51.133 28.8143L49.4787 23.8953C49.4443 23.7921 49.4237 23.7109 49.4164 23.6509C49.4091 23.5909 49.4237 23.5455 49.4596 23.5155C49.4956 23.4855 49.5564 23.4672 49.6422 23.4599C49.728 23.4525 49.8483 23.4489 50.003 23.4489C50.135 23.4489 50.2376 23.4518 50.3124 23.4577C50.3872 23.4635 50.4444 23.473 50.484 23.4877C50.5236 23.5023 50.5522 23.5235 50.5676 23.5521C50.583 23.5806 50.5984 23.6165 50.6131 23.6589L51.9667 27.939H51.9711L53.299 23.6809C53.3108 23.6326 53.3247 23.5931 53.3423 23.5631C53.3599 23.533 53.3885 23.5096 53.4303 23.4921C53.4721 23.4745 53.5315 23.4635 53.6085 23.4577C53.6855 23.4518 53.7918 23.4489 53.9267 23.4489C54.0587 23.4489 54.1606 23.4533 54.2339 23.4621C54.3073 23.4708 54.3571 23.4913 54.3843 23.5243C54.4114 23.5572 54.4202 23.6033 54.4099 23.6633C54.3997 23.7233 54.3777 23.8031 54.3432 23.9034L52.6831 28.8275Z" fill="#646363"/>
<path d="M60.5545 28.8788C60.5545 28.9102 60.5487 28.9366 60.5377 28.9578C60.5267 28.979 60.4988 28.9973 60.4563 29.0112C60.4138 29.0251 60.35 29.0354 60.2671 29.0412C60.1842 29.0471 60.0706 29.05 59.9276 29.05C59.8073 29.05 59.7113 29.0471 59.6394 29.0412C59.5676 29.0354 59.5111 29.0251 59.47 29.009C59.429 28.9929 59.3989 28.9732 59.3821 28.949C59.3652 28.9249 59.3505 28.8956 59.3388 28.8612L58.8402 27.6221C58.78 27.4823 58.7214 27.3579 58.6642 27.2489C58.607 27.1398 58.5432 27.0498 58.4728 26.9766C58.4024 26.9034 58.3218 26.8485 58.2301 26.8112C58.1384 26.7739 58.0321 26.7556 57.9119 26.7556H57.5599V28.87C57.5599 28.8985 57.5504 28.9241 57.532 28.9468C57.5137 28.9695 57.4829 28.9885 57.4396 29.0025C57.3964 29.0164 57.3392 29.0281 57.2681 29.0368C57.1969 29.0456 57.1045 29.05 56.9931 29.05C56.8846 29.05 56.7936 29.0456 56.7203 29.0368C56.647 29.0281 56.589 29.0171 56.5465 29.0025C56.504 28.9878 56.4732 28.9695 56.4563 28.9468C56.4395 28.9241 56.4307 28.8985 56.4307 28.87V23.8309C56.4307 23.7051 56.4629 23.6143 56.5275 23.5587C56.592 23.5031 56.6712 23.4753 56.7658 23.4753H58.2052C58.3511 23.4753 58.4713 23.4782 58.5659 23.484C58.6605 23.4899 58.7463 23.4972 58.824 23.5053C59.0477 23.5367 59.2486 23.5909 59.4275 23.6685C59.6064 23.746 59.7582 23.8463 59.8829 23.9707C60.0075 24.0952 60.1029 24.2423 60.1688 24.4128C60.2348 24.5833 60.2678 24.778 60.2678 24.9983C60.2678 25.1842 60.2444 25.3533 60.1967 25.5062C60.1491 25.6592 60.0801 25.7961 59.9885 25.9161C59.8968 26.0361 59.7839 26.1408 59.649 26.2293C59.514 26.3179 59.3608 26.3896 59.1892 26.4438C59.2721 26.484 59.3505 26.5323 59.4231 26.5894C59.4957 26.6465 59.5646 26.716 59.6292 26.7973C59.6937 26.8785 59.7546 26.9715 59.8117 27.0761C59.8689 27.1808 59.9247 27.2986 59.9797 27.4296L60.4482 28.5231C60.4915 28.6314 60.5201 28.7112 60.534 28.7609C60.5479 28.8107 60.5545 28.8502 60.5545 28.8788ZM59.0983 25.1132C59.0983 24.9302 59.0565 24.7758 58.9736 24.6499C58.8908 24.524 58.7544 24.4355 58.5652 24.3843C58.508 24.3696 58.4427 24.3586 58.3694 24.3499C58.2961 24.3411 58.1956 24.3367 58.0666 24.3367H57.5599V25.9102H58.1355C58.2961 25.9102 58.4361 25.8912 58.5564 25.8524C58.6767 25.8136 58.7771 25.7595 58.857 25.6892C58.937 25.6189 58.9971 25.5355 59.0374 25.4382C59.0778 25.3408 59.0983 25.234 59.0983 25.1132Z" fill="#646363"/>
<path d="M67.6174 26.1854C67.6174 26.6458 67.5602 27.0571 67.4458 27.4208C67.3314 27.7846 67.1606 28.092 66.9347 28.3452C66.7089 28.5984 66.4288 28.7909 66.0944 28.9241C65.76 29.0573 65.3751 29.1232 64.9366 29.1232C64.5039 29.1232 64.127 29.0668 63.8044 28.9541C63.4818 28.8414 63.2134 28.6687 62.9985 28.4374C62.7837 28.2062 62.6224 27.9112 62.5153 27.554C62.4083 27.1969 62.354 26.7739 62.354 26.285C62.354 25.8363 62.4112 25.4323 62.5256 25.0737C62.64 24.7151 62.8108 24.4099 63.0367 24.1581C63.2625 23.9063 63.5426 23.7138 63.877 23.5792C64.2114 23.4445 64.5978 23.3779 65.0392 23.3779C65.4601 23.3779 65.8319 23.4335 66.1545 23.5455C66.4772 23.6575 66.7463 23.8287 66.9626 24.06C67.1789 24.2913 67.3424 24.584 67.4524 24.9368C67.5624 25.2896 67.6174 25.7053 67.6174 26.1854ZM66.431 26.2454C66.431 25.9541 66.4082 25.6885 66.362 25.4499C66.3158 25.2113 66.2381 25.0071 66.1281 24.8365C66.0181 24.666 65.8707 24.535 65.6874 24.4421C65.5041 24.3491 65.2753 24.303 64.9996 24.303C64.7217 24.303 64.49 24.355 64.3038 24.4596C64.1175 24.5643 63.9672 24.7033 63.8528 24.8775C63.7384 25.0517 63.657 25.2559 63.6101 25.4887C63.5632 25.7214 63.539 25.968 63.539 26.2286C63.539 26.5316 63.5617 26.8039 63.6079 27.0454C63.6541 27.2869 63.7311 27.4933 63.8396 27.6653C63.9481 27.8373 64.0948 27.9676 64.2781 28.0576C64.4614 28.1476 64.6916 28.193 64.9696 28.193C65.2475 28.193 65.4792 28.1417 65.6654 28.0385C65.8517 27.9354 66.002 27.7956 66.1164 27.6184C66.2308 27.4413 66.3122 27.2349 66.3591 26.9985C66.406 26.7621 66.431 26.5118 66.431 26.2454Z" fill="#646363"/>
<path d="M73.6843 25.1608C73.6843 25.4726 73.6359 25.7485 73.5384 25.9885C73.4409 26.2286 73.2993 26.4306 73.1131 26.5953C72.9268 26.76 72.6988 26.8851 72.4275 26.9707C72.1562 27.0564 71.838 27.0995 71.4713 27.0995H71.0072V28.8707C71.0072 28.8993 70.9976 28.9249 70.9793 28.9476C70.961 28.9702 70.9302 28.9893 70.8869 29.0032C70.8436 29.0171 70.7864 29.0288 70.7153 29.0376C70.6442 29.0464 70.5518 29.0508 70.4403 29.0508C70.3318 29.0508 70.2409 29.0464 70.1676 29.0376C70.0942 29.0288 70.0363 29.0178 69.9938 29.0032C69.9513 28.9885 69.9205 28.9702 69.9036 28.9476C69.8867 28.9249 69.8779 28.8993 69.8779 28.8707V23.8793C69.8779 23.7446 69.9131 23.6443 69.9835 23.577C70.0539 23.5096 70.1463 23.476 70.2607 23.476H71.571C71.703 23.476 71.8284 23.4811 71.9472 23.4914C72.066 23.5016 72.2083 23.5228 72.3747 23.5558C72.5412 23.5887 72.7091 23.6494 72.8792 23.738C73.0493 23.8266 73.1952 23.9385 73.3155 24.0747C73.4357 24.2108 73.5274 24.3689 73.5905 24.5504C73.6535 24.7319 73.6843 24.9346 73.6843 25.1608ZM72.503 25.242C72.503 25.0473 72.4686 24.8878 72.3996 24.7619C72.3307 24.636 72.2464 24.5431 72.1459 24.4831C72.0455 24.423 71.9406 24.385 71.8299 24.3696C71.7192 24.3542 71.6055 24.3462 71.4882 24.3462H71.0072V26.2286H71.5138C71.6942 26.2286 71.8453 26.2045 71.967 26.1554C72.0887 26.1064 72.1885 26.039 72.2654 25.952C72.3424 25.8649 72.4018 25.7602 72.4414 25.6387C72.481 25.5172 72.503 25.3855 72.503 25.242Z" fill="#646363"/>
<path d="M79.167 27.3608C79.167 27.6521 79.1128 27.9083 79.0035 28.1286C78.8942 28.3489 78.7469 28.5326 78.5606 28.6797C78.3744 28.8268 78.1566 28.938 77.9073 29.012C77.658 29.0859 77.3918 29.1232 77.108 29.1232C76.9159 29.1232 76.7377 29.1078 76.5735 29.0764C76.4092 29.0449 76.2633 29.0068 76.1372 28.9629C76.011 28.919 75.9062 28.8722 75.8211 28.8239C75.7361 28.7756 75.6759 28.7324 75.6385 28.6951C75.6011 28.6577 75.5748 28.6043 75.5594 28.534C75.544 28.4638 75.5359 28.3635 75.5359 28.2318C75.5359 28.1432 75.5388 28.0686 75.5447 28.0085C75.5506 27.9485 75.5601 27.9002 75.5726 27.8629C75.585 27.8256 75.6026 27.7992 75.6239 27.7839C75.6451 27.7685 75.6701 27.7604 75.6994 27.7604C75.7397 27.7604 75.7962 27.7839 75.8688 27.8314C75.9414 27.879 76.036 27.931 76.1504 27.988C76.2648 28.0451 76.4019 28.0971 76.561 28.1447C76.7201 28.1922 76.9042 28.2157 77.1131 28.2157C77.251 28.2157 77.3735 28.1996 77.4827 28.1666C77.592 28.1337 77.6836 28.0876 77.7599 28.0276C77.8361 27.9676 77.8941 27.8929 77.9337 27.8043C77.9733 27.7158 77.9938 27.617 77.9938 27.5087C77.9938 27.3828 77.9593 27.2752 77.8904 27.1852C77.8215 27.0951 77.732 27.0154 77.622 26.9451C77.512 26.8749 77.3867 26.809 77.2459 26.7475C77.1051 26.686 76.9606 26.6209 76.8118 26.5521C76.6629 26.4833 76.5185 26.4057 76.3777 26.3186C76.2369 26.2315 76.1122 26.1269 76.0015 26.0054C75.8908 25.8839 75.8021 25.7404 75.7331 25.5743C75.6642 25.4082 75.6297 25.2098 75.6297 24.9785C75.6297 24.7129 75.6789 24.4787 75.7779 24.2774C75.8769 24.0761 76.0096 23.9085 76.1775 23.7753C76.3454 23.6421 76.5427 23.5433 76.7707 23.4774C76.9988 23.4116 77.24 23.3786 77.4944 23.3786C77.6264 23.3786 77.7577 23.3889 77.8897 23.4086C78.0217 23.4284 78.1448 23.4555 78.2592 23.4899C78.3736 23.5243 78.4755 23.5631 78.5643 23.6055C78.653 23.648 78.7117 23.6838 78.7403 23.7124C78.7689 23.7409 78.7879 23.7651 78.7982 23.7856C78.8084 23.8061 78.8165 23.8317 78.8239 23.8646C78.8312 23.8975 78.8363 23.9393 78.8392 23.989C78.8422 24.0388 78.8436 24.101 78.8436 24.1757C78.8436 24.2584 78.8414 24.3286 78.837 24.3857C78.8326 24.4428 78.8253 24.4904 78.8158 24.527C78.8063 24.5636 78.7916 24.5914 78.7725 24.6082C78.7535 24.625 78.7285 24.6338 78.697 24.6338C78.6655 24.6338 78.6156 24.6141 78.5467 24.5738C78.4778 24.5335 78.3934 24.4904 78.293 24.4428C78.1925 24.3952 78.0766 24.3528 77.9447 24.314C77.8127 24.2752 77.6682 24.2562 77.5106 24.2562C77.3874 24.2562 77.2803 24.2715 77.1887 24.3015C77.097 24.3315 77.0208 24.3733 76.9592 24.426C76.8976 24.4787 76.8521 24.5423 76.8213 24.617C76.7905 24.6916 76.7758 24.7699 76.7758 24.8526C76.7758 24.9756 76.8096 25.0817 76.877 25.1725C76.9445 25.2632 77.0347 25.3423 77.1476 25.4125C77.2605 25.4828 77.3888 25.5487 77.5318 25.6102C77.6748 25.6716 77.8215 25.7368 77.9703 25.8056C78.1192 25.8744 78.2651 25.9519 78.4088 26.039C78.5525 26.1261 78.6794 26.2308 78.7909 26.3523C78.9023 26.4738 78.9925 26.6165 79.0614 26.7812C79.1304 26.9458 79.167 27.1376 79.167 27.3608Z" fill="#646363"/>
<path d="M85.4109 28.8575C85.4109 28.889 85.4029 28.9168 85.3875 28.941C85.3721 28.9651 85.342 28.9856 85.2973 29.001C85.2525 29.0163 85.1917 29.0288 85.1147 29.0376C85.0377 29.0463 84.9402 29.0507 84.8228 29.0507C84.6366 29.0507 84.5024 29.0434 84.421 29.0295C84.3396 29.0156 84.281 28.9937 84.245 28.9651C84.2091 28.9366 84.1812 28.9022 84.1614 28.8619L82.4815 26.2286V28.8619C82.4815 28.8934 82.4727 28.9205 82.4559 28.9432C82.439 28.9658 82.4089 28.9856 82.3657 29.001C82.3224 29.0163 82.2652 29.0288 82.1941 29.0376C82.123 29.0463 82.0306 29.0507 81.9191 29.0507C81.8106 29.0507 81.7197 29.0463 81.6463 29.0376C81.573 29.0288 81.5151 29.0171 81.4726 29.001C81.43 28.9849 81.3985 28.9658 81.3802 28.9432C81.3618 28.9205 81.3523 28.8934 81.3523 28.8619V23.634C81.3523 23.6026 81.3618 23.5755 81.3802 23.5528C81.3985 23.5301 81.4293 23.5111 81.4726 23.4972C81.5158 23.4833 81.5737 23.4716 81.6463 23.4628C81.7189 23.454 81.8106 23.4496 81.9191 23.4496C82.0306 23.4496 82.1222 23.454 82.1941 23.4628C82.2659 23.4716 82.3231 23.4825 82.3657 23.4972C82.4082 23.5118 82.439 23.5301 82.4559 23.5528C82.4727 23.5755 82.4815 23.6026 82.4815 23.634V25.9973L84.1101 23.6384C84.1299 23.6011 84.1548 23.5704 84.1834 23.5462C84.212 23.5221 84.2494 23.5023 84.2949 23.4884C84.3404 23.4745 84.3997 23.4643 84.4709 23.4584C84.542 23.4525 84.6344 23.4496 84.7458 23.4496C84.8602 23.4496 84.9548 23.454 85.0296 23.4628C85.1044 23.4716 85.1638 23.4833 85.2078 23.4994C85.2518 23.5155 85.2833 23.5345 85.3002 23.5572C85.3171 23.5799 85.3259 23.6055 85.3259 23.634C85.3259 23.6824 85.3127 23.7329 85.287 23.7841C85.2613 23.8353 85.2122 23.9173 85.1411 24.0285L83.6159 26.0229L85.2789 28.5318C85.342 28.6489 85.3801 28.7272 85.3926 28.7653C85.4051 28.8034 85.4109 28.8341 85.4109 28.8575Z" fill="#646363"/>
<path d="M92.0367 28.6043C92.0712 28.7075 92.0924 28.7887 92.1012 28.8487C92.11 28.9088 92.0983 28.9541 92.0668 28.9841C92.0352 29.0141 91.9795 29.0324 91.8988 29.0398C91.8182 29.0471 91.7082 29.0507 91.5681 29.0507C91.4222 29.0507 91.3086 29.0485 91.2264 29.0441C91.1443 29.0398 91.0827 29.031 91.0395 29.0185C90.9962 29.0061 90.9661 28.9878 90.9493 28.9651C90.9324 28.9424 90.9177 28.9124 90.906 28.8751L90.532 27.7604H88.4437L88.0917 28.8451C88.08 28.8853 88.0653 28.919 88.0463 28.9461C88.0272 28.9732 87.9979 28.9944 87.9561 29.0105C87.9143 29.0266 87.8556 29.0368 87.7801 29.0427C87.7046 29.0485 87.6048 29.0515 87.4817 29.0515C87.3497 29.0515 87.247 29.0471 87.1722 29.0383C87.0974 29.0295 87.0461 29.009 87.0175 28.9761C86.9889 28.9432 86.9786 28.897 86.9874 28.837C86.9962 28.777 87.0175 28.6972 87.052 28.597L88.7663 23.6736C88.7832 23.6253 88.8037 23.5857 88.8265 23.5557C88.8492 23.5257 88.8859 23.503 88.9357 23.4869C88.9856 23.4708 89.0552 23.4613 89.144 23.4569C89.2327 23.4525 89.35 23.4503 89.4959 23.4503C89.6646 23.4503 89.7995 23.4525 89.9 23.4569C90.0004 23.4613 90.0781 23.4716 90.1339 23.4869C90.1896 23.5023 90.2299 23.5265 90.2541 23.5579C90.2783 23.5894 90.2996 23.6326 90.3165 23.6867L92.0367 28.6043ZM89.4849 24.5343H89.4805L88.6945 26.8931H90.271L89.4849 24.5343Z" fill="#646363"/>
<path d="M101.972 26.9575C101.972 27.2979 101.922 27.6023 101.821 27.8709C101.721 28.1395 101.573 28.3672 101.378 28.5531C101.183 28.739 100.943 28.8802 100.657 28.9775C100.371 29.0749 100.041 29.1232 99.6683 29.1232C99.3186 29.1232 99.0055 29.0793 98.7276 28.9922C98.4497 28.9051 98.215 28.7726 98.0229 28.5955C97.8308 28.4184 97.6841 28.1974 97.5822 27.9331C97.4803 27.6689 97.4297 27.3593 97.4297 27.0044V23.6297C97.4297 23.6011 97.4385 23.5755 97.4554 23.5528C97.4722 23.5301 97.503 23.5111 97.5477 23.4972C97.5925 23.4833 97.6504 23.4716 97.7215 23.4628C97.7927 23.454 97.885 23.4496 97.9965 23.4496C98.105 23.4496 98.1952 23.454 98.2671 23.4628C98.3389 23.4716 98.3961 23.4825 98.4387 23.4972C98.4812 23.5118 98.5127 23.5301 98.5311 23.5528C98.5494 23.5755 98.5589 23.6011 98.5589 23.6297V26.9063C98.5589 27.1266 98.586 27.3176 98.6403 27.4786C98.6946 27.6397 98.773 27.7736 98.8742 27.8797C98.9754 27.9858 99.0979 28.0649 99.2394 28.1176C99.3809 28.1703 99.5393 28.1966 99.7138 28.1966C99.8913 28.1966 100.05 28.1695 100.19 28.1154C100.33 28.0612 100.45 27.9815 100.547 27.8775C100.644 27.7736 100.719 27.6448 100.773 27.4918C100.826 27.3389 100.852 27.1654 100.852 26.9707V23.6304C100.852 23.6018 100.861 23.5762 100.877 23.5535C100.894 23.5309 100.924 23.5118 100.968 23.4979C101.011 23.484 101.069 23.4723 101.141 23.4635C101.214 23.4547 101.306 23.4503 101.414 23.4503C101.523 23.4503 101.613 23.4547 101.683 23.4635C101.752 23.4723 101.809 23.4833 101.852 23.4979C101.895 23.5126 101.925 23.5309 101.942 23.5535C101.959 23.5762 101.968 23.6018 101.968 23.6304V26.9575H101.972Z" fill="#646363"/>
<path d="M109.083 28.6299C109.083 28.6958 109.071 28.7543 109.048 28.8056C109.026 28.8568 108.995 28.9 108.956 28.9344C108.917 28.9688 108.872 28.9937 108.818 29.0098C108.765 29.0259 108.711 29.0332 108.657 29.0332H108.176C108.075 29.0332 107.989 29.0229 107.916 29.0032C107.844 28.9834 107.776 28.9468 107.715 28.8941C107.653 28.8414 107.594 28.7697 107.536 28.6797C107.479 28.5897 107.415 28.4733 107.343 28.3298L105.959 25.7353C105.879 25.5809 105.797 25.4147 105.714 25.2354C105.631 25.0561 105.557 24.8834 105.491 24.7143H105.482C105.494 24.92 105.502 25.1256 105.508 25.3298C105.513 25.534 105.516 25.7448 105.516 25.9622V28.8656C105.516 28.8941 105.508 28.9197 105.493 28.9424C105.477 28.9651 105.45 28.9849 105.411 29.0002C105.373 29.0156 105.321 29.0281 105.255 29.0368C105.189 29.0456 105.104 29.05 105.001 29.05C104.9 29.05 104.818 29.0456 104.752 29.0368C104.686 29.0281 104.634 29.0163 104.597 29.0002C104.559 28.9841 104.534 28.9651 104.52 28.9424C104.506 28.9197 104.499 28.8941 104.499 28.8656V23.8785C104.499 23.7438 104.538 23.6436 104.617 23.5762C104.695 23.5089 104.792 23.4752 104.907 23.4752H105.513C105.621 23.4752 105.713 23.4848 105.788 23.503C105.862 23.5213 105.928 23.5521 105.987 23.5953C106.046 23.6384 106.101 23.6977 106.153 23.7731C106.205 23.8485 106.258 23.9422 106.312 24.0542L107.395 26.0822C107.458 26.2052 107.52 26.3259 107.582 26.4445C107.644 26.5631 107.703 26.6816 107.76 26.8002C107.817 26.9188 107.873 27.0351 107.928 27.15C107.983 27.2649 108.035 27.3784 108.087 27.4933H108.092C108.083 27.2935 108.076 27.0842 108.072 26.8675C108.069 26.6509 108.066 26.443 108.066 26.2454V23.6421C108.066 23.6136 108.075 23.588 108.092 23.5653C108.108 23.5426 108.137 23.5221 108.177 23.5052C108.218 23.4884 108.27 23.476 108.336 23.4687C108.402 23.4613 108.487 23.4577 108.59 23.4577C108.688 23.4577 108.769 23.4613 108.835 23.4687C108.901 23.476 108.952 23.4877 108.988 23.5052C109.024 23.5228 109.048 23.5426 109.063 23.5653C109.078 23.588 109.084 23.6136 109.084 23.6421V28.6299H109.083Z" fill="#646363"/>
<path d="M112.749 28.87C112.749 28.8985 112.74 28.9241 112.721 28.9468C112.703 28.9695 112.672 28.9885 112.629 29.0024C112.586 29.0163 112.528 29.028 112.457 29.0368C112.386 29.0456 112.294 29.05 112.182 29.05C112.074 29.05 111.983 29.0456 111.91 29.0368C111.836 29.028 111.778 29.0171 111.736 29.0024C111.693 28.9878 111.662 28.9695 111.643 28.9468C111.625 28.9241 111.615 28.8985 111.615 28.87V23.6297C111.615 23.6011 111.625 23.5755 111.643 23.5528C111.662 23.5301 111.693 23.5111 111.738 23.4972C111.783 23.4833 111.841 23.4716 111.912 23.4628C111.983 23.454 112.074 23.4496 112.182 23.4496C112.294 23.4496 112.385 23.454 112.457 23.4628C112.529 23.4716 112.586 23.4825 112.629 23.4972C112.671 23.5118 112.703 23.5301 112.721 23.5528C112.74 23.5755 112.749 23.6011 112.749 23.6297V28.87Z" fill="#646363"/>
<path d="M116.991 27.4808C116.991 27.7326 116.968 27.9588 116.92 28.1608C116.872 28.3628 116.792 28.534 116.68 28.6753C116.567 28.8165 116.418 28.9249 116.235 28.9988C116.052 29.0727 115.825 29.11 115.556 29.11C115.47 29.11 115.385 29.1034 115.3 29.091C115.215 29.0785 115.138 29.0617 115.069 29.042C114.999 29.0222 114.937 29.0002 114.886 28.9775C114.835 28.9549 114.8 28.9336 114.783 28.9153C114.765 28.897 114.751 28.8773 114.739 28.8575C114.728 28.8378 114.718 28.8114 114.709 28.7785C114.7 28.7455 114.695 28.7046 114.692 28.6563C114.69 28.6079 114.688 28.5465 114.688 28.4718C114.688 28.3745 114.69 28.2925 114.695 28.2252C114.699 28.1578 114.706 28.1051 114.716 28.0664C114.725 28.0276 114.74 28.0005 114.759 27.9851C114.778 27.9697 114.802 27.9617 114.83 27.9617C114.856 27.9617 114.886 27.9712 114.92 27.9895C114.955 28.0078 114.994 28.0276 115.036 28.0473C115.079 28.0671 115.129 28.0868 115.187 28.1051C115.244 28.1234 115.311 28.133 115.388 28.133C115.465 28.133 115.533 28.122 115.592 28.1007C115.651 28.0795 115.699 28.0422 115.738 27.9895C115.777 27.9368 115.806 27.8658 115.826 27.7773C115.846 27.6887 115.856 27.5745 115.856 27.434V23.6216C115.856 23.5931 115.866 23.5682 115.884 23.5462C115.902 23.5243 115.932 23.5067 115.974 23.4928C116.016 23.4789 116.074 23.4679 116.148 23.4606C116.222 23.4533 116.314 23.4496 116.423 23.4496C116.531 23.4496 116.622 23.4533 116.693 23.4606C116.765 23.4679 116.823 23.4782 116.867 23.4928C116.911 23.5074 116.944 23.525 116.962 23.5462C116.98 23.5674 116.99 23.5923 116.99 23.6216V27.4808H116.991Z" fill="#646363"/>
<path d="M123.874 28.6043C123.909 28.7075 123.93 28.7887 123.939 28.8487C123.947 28.9088 123.936 28.9541 123.904 28.9841C123.873 29.0141 123.817 29.0324 123.736 29.0398C123.656 29.0471 123.546 29.0507 123.406 29.0507C123.26 29.0507 123.146 29.0485 123.064 29.0441C122.982 29.0398 122.92 29.031 122.877 29.0185C122.834 29.0061 122.804 28.9878 122.787 28.9651C122.77 28.9424 122.755 28.9124 122.743 28.8751L122.369 27.7604H120.281L119.929 28.8451C119.917 28.8853 119.903 28.919 119.884 28.9461C119.865 28.9732 119.835 28.9944 119.793 29.0105C119.752 29.0266 119.693 29.0368 119.617 29.0427C119.542 29.0485 119.442 29.0515 119.319 29.0515C119.187 29.0515 119.084 29.0471 119.01 29.0383C118.935 29.0295 118.883 29.009 118.855 28.9761C118.826 28.9432 118.816 28.897 118.825 28.837C118.834 28.777 118.855 28.6972 118.889 28.597L120.604 23.6736C120.621 23.6253 120.641 23.5857 120.664 23.5557C120.687 23.5257 120.723 23.503 120.773 23.4869C120.823 23.4708 120.893 23.4613 120.981 23.4569C121.07 23.4525 121.187 23.4503 121.333 23.4503C121.502 23.4503 121.637 23.4525 121.737 23.4569C121.838 23.4613 121.916 23.4716 121.971 23.4869C122.027 23.5023 122.067 23.5265 122.092 23.5579C122.116 23.5894 122.137 23.6326 122.154 23.6867L123.874 28.6043ZM121.322 24.5343H121.318L120.532 26.8931H122.108L121.322 24.5343Z" fill="#646363"/>
<path d="M38.0784 18.6507H0.665039V43.5472H38.0784V18.6507Z" fill="#164194"/>
<path d="M18.5758 24.0761L19.3662 23.5001L20.1538 24.0761L19.8546 23.1459L20.6553 22.5699H19.6669L19.3662 21.6294L19.0612 22.5699H18.0742L18.8749 23.1459L18.5758 24.0761Z" fill="#FFED00"/>
<path d="M14.4886 25.171L15.2776 24.5965L16.0673 25.171L15.7667 24.2415L16.5689 23.6663H15.5804L15.2776 22.7236L14.9755 23.6663H13.9863L14.7893 24.2415L14.4886 25.171Z" fill="#FFED00"/>
<path d="M12.2881 25.7141L11.986 26.6575L10.999 26.656L11.7997 27.232L11.5006 28.1622L12.2881 27.5855L13.0771 28.1622L12.7765 27.232L13.5794 26.656H12.5902L12.2881 25.7141Z" fill="#FFED00"/>
<path d="M11.1926 31.6599L11.9816 32.233L11.681 31.3042L12.4817 30.729H11.4948L11.1926 29.7863L10.8905 30.7319L9.90137 30.729L10.7043 31.3042L10.4037 32.233L11.1926 31.6599Z" fill="#FFED00"/>
<path d="M12.5902 34.8144L12.2881 33.8732L11.986 34.8151L10.999 34.8144L11.7997 35.3889L11.5006 36.3206L12.2881 35.7439L13.0771 36.3206L12.7772 35.3889L13.5794 34.8144H12.5902Z" fill="#FFED00"/>
<path d="M15.5848 37.8041L15.2842 36.8644L14.9836 37.8063L13.9944 37.8041L14.7973 38.3801L14.4952 39.3103L15.2842 38.7343L16.0747 39.3103L15.774 38.3801L16.5747 37.8041H15.5848Z" fill="#FFED00"/>
<path d="M19.6676 38.888L19.3662 37.9446L19.0656 38.888H18.0771L18.8771 39.4618L18.5765 40.3913L19.3662 39.8183L20.1538 40.3913L19.8546 39.4618L20.6568 38.888H19.6676Z" fill="#FFED00"/>
<path d="M23.7482 37.8041L23.4446 36.8644L23.141 37.8063L22.1548 37.8041L22.9577 38.3801L22.6571 39.3103L23.4446 38.7343L24.2351 39.3103L23.9344 38.3801L24.7366 37.8041H23.7482Z" fill="#FFED00"/>
<path d="M26.7413 34.8144L26.4414 33.8732L26.1408 34.8151L25.1516 34.8144L25.9545 35.3889L25.651 36.3206L26.4414 35.7439L27.2297 36.3206L26.9298 35.3889L27.732 34.8144H26.7413Z" fill="#FFED00"/>
<path d="M28.8157 30.718H27.8265L27.523 29.7753L27.2223 30.7187L26.2332 30.718L27.0368 31.2925L26.7362 32.2228L27.523 31.6475L28.3134 32.2228L28.0143 31.2925L28.8157 30.718Z" fill="#FFED00"/>
<path d="M25.6517 28.1484L26.4407 27.5738L27.2304 28.1484L26.929 27.2181L27.7312 26.6436H26.7421L26.4407 25.7017L26.1401 26.6458L25.1516 26.6436L25.9538 27.2181L25.6517 28.1484Z" fill="#FFED00"/>
<path d="M23.4585 22.7236L23.1557 23.6677L22.1672 23.6655L22.968 24.2415L22.6673 25.1718L23.4585 24.5972L24.246 25.1718L23.9461 24.2415L24.7498 23.6655H23.7606L23.4585 22.7236Z" fill="#FFED00"/>
<path d="M32.0921 11.8851C33.772 13.5619 35.8897 14.5338 38.0785 14.8068V9.59138C37.2162 9.37035 36.3993 8.92975 35.7254 8.25642C33.7236 6.25764 33.7192 3.02051 35.7108 1.0166H25.2192L19.7982 3.88486L18.2745 1.0166H12.4567L15.2571 6.28911L10.7145 8.69189L6.63755 1.0166H0.821289L6.17339 11.0947L8.5807 15.6287L26.9307 5.91877L20.7184 17.6128H35.2657L35.7812 16.6431L28.9699 13.0371L30.5926 9.98001C31.0076 10.6548 31.5048 11.2974 32.0921 11.8851Z" fill="#5F9AC6"/>
<path d="M38.0784 52.8817V47.2688L32.6699 44.5836H15.9881C16.0658 45.101 16.068 45.6389 15.9778 46.1827C15.5166 48.9771 12.8717 50.8705 10.0684 50.4086C7.29302 49.9505 5.4078 47.3508 5.82356 44.5836H0.665039V46.2735C0.895284 48.8343 2.08831 51.1808 3.9288 52.8817H17.8828C19.5063 51.3864 20.6626 49.362 21.0498 47.0178C21.1862 46.2003 21.2141 45.3908 21.1569 44.5989L24.2622 46.1403L20.9039 52.8817H26.6439L28.8657 48.4252L33.4677 50.7116L32.3861 52.8817H38.0784Z" fill="#5F9AC6"/>
</svg>

After

Width:  |  Height:  |  Size: 110 KiB

7
static/image/file.svg Normal file
View File

@ -0,0 +1,7 @@
<svg width="18" height="22" viewBox="0 0 18 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.87868 0.87868C1.44129 0.31607 2.20435 0 3 0H11C11.2652 0 11.5196 0.105357 11.7071 0.292893L17.7071 6.29289C17.8946 6.48043 18 6.73478 18 7V19C18 19.7957 17.6839 20.5587 17.1213 21.1213C16.5587 21.6839 15.7957 22 15 22H3C2.20435 22 1.44129 21.6839 0.87868 21.1213C0.31607 20.5587 0 19.7957 0 19V3C0 2.20435 0.31607 1.44129 0.87868 0.87868ZM3 2C2.73478 2 2.48043 2.10536 2.29289 2.29289C2.10536 2.48043 2 2.73478 2 3V19C2 19.2652 2.10536 19.5196 2.29289 19.7071C2.48043 19.8946 2.73478 20 3 20H15C15.2652 20 15.5196 19.8946 15.7071 19.7071C15.8946 19.5196 16 19.2652 16 19V7.41421L10.5858 2H3Z" fill="#006CB7"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11 0C11.5523 0 12 0.447715 12 1V6H17C17.5523 6 18 6.44772 18 7C18 7.55228 17.5523 8 17 8H11C10.4477 8 10 7.55228 10 7V1C10 0.447715 10.4477 0 11 0Z" fill="#006CB7"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 12C4 11.4477 4.44772 11 5 11H13C13.5523 11 14 11.4477 14 12C14 12.5523 13.5523 13 13 13H5C4.44772 13 4 12.5523 4 12Z" fill="#006CB7"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 16C4 15.4477 4.44772 15 5 15H13C13.5523 15 14 15.4477 14 16C14 16.5523 13.5523 17 13 17H5C4.44772 17 4 16.5523 4 16Z" fill="#006CB7"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 8C4 7.44772 4.44772 7 5 7H7C7.55228 7 8 7.44772 8 8C8 8.55228 7.55228 9 7 9H5C4.44772 9 4 8.55228 4 8Z" fill="#006CB7"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,3 @@
<svg width="84" height="68" viewBox="0 0 84 68" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M70.5773 14.0998V0L61.2523 9.90788C55.5732 8.0324 49.1389 6.96077 42.3177 6.92846C39.5976 7.41691 37.0641 8.30531 35.0728 9.52887C32.1261 11.3395 30.7423 13.5548 30.7423 16.4536C30.7423 17.8381 31.7831 19.8281 36.7724 22.1191C38.9769 23.1314 41.3947 23.9282 43.6859 24.6078C44.1748 24.7529 44.7212 24.9089 45.2881 25.0707C46.9002 25.531 48.6777 26.0384 49.7688 26.4749C50.3128 26.6925 50.9257 26.926 51.5891 27.1789L51.5892 27.1789L51.5899 27.1792C54.8363 28.4164 59.2939 30.1152 62.8313 32.6669C67.7809 36.2372 71.4433 41.674 71.4433 49.7938C71.4433 50.8957 71.3731 51.9819 71.2341 53.0479C79.107 48.1686 84 41.3361 84 33.7731C84 26.002 78.834 19.002 70.5773 14.0998ZM12.9897 53.1856V67.1134L21.806 57.3175C27.7981 59.4216 34.6804 60.6184 42 60.6184C43.4856 60.6184 44.9532 60.5691 46.399 60.473L46.3705 60.2349C50.5048 59.7388 53.2834 58.2414 54.9723 56.5219C56.6194 54.8448 57.5876 52.608 57.5876 49.7938C57.5876 46.6227 56.4871 45.1748 54.7254 43.9041C52.7993 42.5147 50.4943 41.6232 47.3688 40.4145L47.3687 40.4144L47.3687 40.4144L47.3684 40.4143L47.3669 40.4137C46.516 40.0847 45.6043 39.7321 44.6229 39.3395C44.2108 39.1747 43.5896 38.9982 42.5362 38.6989L42.5357 38.6988C41.8252 38.4969 40.918 38.2392 39.7458 37.8915C37.2471 37.1503 34.0901 36.134 30.9905 34.7108C25.3715 32.1306 16.8866 26.7598 16.8866 16.4536C16.8866 14.9059 17.0383 13.4376 17.3212 12.0486C6.82395 16.9288 0 24.8416 0 33.7731C0 41.4075 4.98579 48.2975 12.9897 53.1856Z" fill="#ffffff"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

5
static/image/menu.svg Normal file
View File

@ -0,0 +1,5 @@
<svg width="7" height="27" viewBox="0 0 7 27" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="3.5" cy="3.5" r="2.5" stroke="#F5F5F5" stroke-width="2"/>
<circle cx="3.5" cy="13.5" r="2.5" stroke="#F5F5F5" stroke-width="2"/>
<circle cx="3.5" cy="23.5" r="2.5" stroke="#F5F5F5" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 325 B

48
static/image/mk.svg Normal file
View File

@ -0,0 +1,48 @@
<svg width="194" height="29" viewBox="0 0 194 29" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_145_278)">
<path d="M48.1688 7.05167H49.9588C51.3013 7.05167 52.0173 6.78723 52.0173 5.28875C52.0173 3.79027 51.3371 3.63161 49.9588 3.63161H48.1688V7.05167ZM48.1688 11.5824H47.2201V2.9617H50.1199C52.1247 2.9617 53.0376 3.56109 53.0376 5.35927C53.0834 5.63387 53.0732 5.91471 53.0077 6.18541C52.9423 6.45612 52.8227 6.71129 52.6562 6.93606C52.4896 7.16083 52.2792 7.35072 52.0374 7.49466C51.7956 7.6386 51.5271 7.73371 51.2476 7.77447L53.145 11.6353H52.0889L50.1199 7.88024H48.1688V11.5824Z" fill="black"/>
<path d="M54.8993 11.6353V2.97934H60.1798V3.75502H55.8301V6.87539H59.5891V7.65107H55.8301V10.8596H60.1798V11.6353H54.8993Z" fill="black"/>
<path d="M62.9722 7.28085H64.7622C66.1047 7.28085 66.8207 7.01641 66.8207 5.51793C66.8207 4.01945 66.1405 3.75501 64.7622 3.75501H62.9722V7.28085ZM62.9722 11.6353H62.0414V2.9617H64.798C66.8207 2.9617 67.7157 3.57872 67.7157 5.44741C67.7157 7.31611 66.8207 8.07416 64.798 8.07416H63.008L62.9722 11.6353Z" fill="black"/>
<path d="M75.1799 8.62067C75.2517 9.05259 75.2177 9.49515 75.0809 9.91156C74.944 10.328 74.7083 10.7062 74.3932 11.0148C74.0781 11.3234 73.6927 11.5535 73.2691 11.686C72.8456 11.8184 72.3961 11.8494 71.9579 11.7763C71.5525 11.8259 71.141 11.7831 70.755 11.6512C70.3691 11.5194 70.0191 11.302 69.732 11.0158C69.4448 10.7296 69.2283 10.3823 69.099 10.0007C68.9698 9.61901 68.9313 9.21322 68.9865 8.81459V2.9617H69.9173V8.65593C69.9173 10.3131 70.6154 10.983 72.0295 10.983C73.4436 10.983 74.1596 10.3131 74.1596 8.65593V2.9617H75.1799V8.62067Z" fill="black"/>
<path d="M80.3352 7.59817H78.2588V10.8596H80.3352C81.5345 10.8596 82.1252 10.3483 82.1252 9.22006C82.1252 8.09179 81.5345 7.59817 80.3352 7.59817ZM80.2099 3.75501H78.2588V6.84012H80.2099C81.3018 6.84012 81.9999 6.46991 81.9999 5.30638C81.9999 4.14286 81.3555 3.75501 80.2099 3.75501ZM80.1204 11.6353H77.3101V2.9617H80.1204C82.1073 2.9617 82.9128 3.73738 82.9128 5.21824C82.9836 5.61573 82.9139 6.02514 82.7151 6.37809C82.5164 6.73103 82.2007 7.00613 81.8209 7.15744C82.2407 7.30411 82.5954 7.5903 82.8241 7.96675C83.0528 8.34321 83.1411 8.7864 83.0739 9.22006C83.0739 10.8596 82.1968 11.5824 80.1204 11.5824" fill="black"/>
<path d="M84.9712 11.6353V2.97934H85.902V10.8596H90.0011V11.6353H84.9712Z" fill="black"/>
<path d="M92.4713 2.9617H91.5405V11.6353H92.4713V2.9617Z" fill="black"/>
<path d="M94.9058 2.97934H95.8366V6.78724H96.66L99.524 2.97934H100.598L97.4297 7.15745L100.67 11.6353H99.5419L96.6063 7.58056H95.8366V11.6353H94.9058V2.97934Z" fill="black"/>
<path d="M103.211 8.8146H106.451L104.858 3.84317L103.211 8.8146ZM106.791 9.57265H102.961L102.298 11.6882H101.332L104.214 3.03223H105.467L108.366 11.6353H107.4L106.791 9.57265Z" fill="black"/>
<path d="M114.56 11.7763C113.743 11.7943 112.93 11.6628 112.161 11.3885L112.43 10.5775C113.171 10.8377 113.952 10.9689 114.739 10.9654C116.01 10.9654 116.529 10.648 116.529 9.41399C116.529 8.17995 116.135 8.03892 114.739 7.65107C113.343 7.26323 112.304 6.62858 112.304 5.16536C112.304 3.70214 113.182 2.82068 115.043 2.82068C115.801 2.82761 116.552 2.96483 117.263 3.22615L117.102 4.00183C116.455 3.7607 115.77 3.63532 115.079 3.63162C113.754 3.63162 113.289 4.05472 113.289 5.09484C113.289 6.13496 113.844 6.45229 114.972 6.85776C117.048 7.47478 117.567 7.95077 117.567 9.41399C117.567 11.1769 116.779 11.8468 114.667 11.8468" fill="black"/>
<path d="M119.268 11.6353V2.97934H120.216V10.8596H124.315V11.6353H119.268Z" fill="black"/>
<path d="M130.67 7.28086C130.67 4.5836 130.097 3.63162 128.271 3.63162C126.445 3.63162 125.873 4.56597 125.873 7.28086C125.873 9.99575 126.428 10.9654 128.271 10.9654C130.115 10.9654 130.67 9.9605 130.67 7.28086ZM124.888 7.28086C124.888 3.91369 125.98 2.76779 128.289 2.76779C130.598 2.76779 131.654 3.89606 131.654 7.2456C131.654 10.5951 130.67 11.7763 128.343 11.7763C126.016 11.7763 124.942 10.6833 124.942 7.33375" fill="black"/>
<path d="M132.567 2.97934H133.516L135.879 10.7362H135.932L138.277 2.97934H139.172L136.541 11.6353H135.216L132.567 2.97934Z" fill="black"/>
<path d="M140.515 11.6353V2.97934H145.795V3.75502H141.464V6.87539H145.223V7.65107H141.464V10.8596H145.795V11.6353H140.515Z" fill="black"/>
<path d="M148.57 3.94893H148.516V11.6353H147.675V2.9617H149.035L152.991 10.648H153.045V2.9617H153.904V11.6353H152.526L148.57 3.94893Z" fill="black"/>
<path d="M157.269 2.9617H156.338V11.6353H157.269V2.9617Z" fill="black"/>
<path d="M160.903 2.9617V10.9477C161.011 11.6255 160.842 12.318 160.433 12.8732C160.023 13.4284 159.407 13.8011 158.719 13.9094L158.469 13.1337C158.95 13.0435 159.376 12.772 159.657 12.3769C159.938 11.9817 160.051 11.4943 159.972 11.0182V2.9617H160.903Z" fill="black"/>
<path d="M163.91 8.8146H167.15L165.557 3.84317L163.91 8.8146ZM167.49 9.57265H163.66L162.997 11.6882H162.031L164.93 3.03223H166.183L169.065 11.6353H168.099L167.49 9.57265Z" fill="black"/>
<path d="M48.9565 17.5058L50.7465 21.4371H50.8002L52.5723 17.5058H54.5592V26.1793H53.0019V19.7623H52.9482L51.4446 23.1295H49.9947L48.4732 19.7623H48.4195V26.1793H46.9159V17.5058H48.9565Z" fill="black"/>
<path d="M58.1033 17.5058H56.4028V26.1793H58.1033V17.5058Z" fill="black"/>
<path d="M61.558 19.6742H61.5043V26.1793H59.9828V17.5058H62.2382L65.2096 24.2049H65.2812V17.5058H66.8027V26.1793H64.5294L61.558 19.6742Z" fill="black"/>
<path d="M70.3828 17.5058H68.6823V26.1793H70.3828V17.5058Z" fill="black"/>
<path d="M74.4103 26.3204C73.5425 26.3324 72.6783 26.2074 71.8506 25.9502L72.1728 24.5046C72.9252 24.7447 73.7091 24.8753 74.4998 24.8924C75.3232 24.8924 75.896 24.6632 75.896 23.7818C75.896 22.9003 75.5559 22.865 74.4103 22.5477C72.7993 22.0894 71.9222 21.5605 71.9222 19.8857C71.9222 18.2109 72.9425 17.3647 74.9473 17.3647C75.7449 17.3592 76.5357 17.5089 77.2743 17.8055L77.0774 19.1982C76.4101 18.941 75.6997 18.8095 74.9831 18.8103C74.2313 18.8103 73.6943 18.9337 73.6943 19.7447C73.6943 20.5556 74.2134 20.7672 75.2516 21.0669C77.0416 21.5957 77.686 22.0894 77.686 23.6584C77.686 25.5799 76.7552 26.3204 74.4103 26.3204Z" fill="black"/>
<path d="M82.161 18.969V26.1793H80.4426V18.969H78.1514V17.5058H84.4522V18.969H82.161Z" fill="black"/>
<path d="M88.5691 18.9514H87.3519V21.3842H88.5691C89.7505 21.3842 90.0548 21.0669 90.0548 20.1325C90.0548 19.1982 89.6789 18.9514 88.5691 18.9514ZM90.3591 22.4772L92.3102 26.1441H90.3412L88.6407 22.7416H87.3519V26.1441H85.5619V17.5058H88.6049C91.0035 17.5058 91.7195 18.4049 91.7195 20.0796C91.7873 20.5818 91.6856 21.0919 91.4301 21.5315C91.1746 21.9711 90.7794 22.3158 90.3054 22.5125" fill="black"/>
<path d="M95.6576 26.3204C94.7835 26.3377 93.9126 26.2127 93.08 25.9502L93.3843 24.5046C94.1366 24.7447 94.9206 24.8753 95.7113 24.8924C96.5347 24.8924 97.1075 24.6632 97.1075 23.7818C97.1075 22.9003 96.7673 22.865 95.6218 22.5477C94.0108 22.0894 93.1337 21.5605 93.1337 19.8857C93.1337 18.2109 94.154 17.3647 96.1588 17.3647C96.9563 17.3592 97.7472 17.5089 98.4858 17.8055L98.2889 19.1982C97.6215 18.941 96.9111 18.8095 96.1946 18.8103C95.4428 18.8103 94.9058 18.9337 94.9058 19.7447C94.9058 20.5556 95.4249 20.7672 96.4631 21.0669C98.253 21.5957 98.8974 22.0894 98.8974 23.6584C98.8974 25.5799 97.9666 26.3204 95.6218 26.3204" fill="black"/>
<path d="M103.408 18.969V26.1793H101.69V18.969H99.3986V17.5058H105.699V18.969H103.408Z" fill="black"/>
<path d="M111.141 26.1793H108.563L106.183 17.5058H107.991L109.852 24.6985H109.924L111.803 17.5058H113.522L111.141 26.1793Z" fill="black"/>
<path d="M119.518 21.8073C119.518 19.4979 119.142 18.828 117.728 18.828C116.314 18.828 115.938 19.4802 115.938 21.8073C115.938 24.1344 116.314 24.8571 117.728 24.8571C119.142 24.8571 119.518 24.1167 119.518 21.8073ZM114.148 21.8073C114.148 18.2815 115.33 17.3119 117.728 17.3119C120.127 17.3119 121.308 18.3167 121.308 21.772C121.308 25.2274 120.18 26.2675 117.728 26.2675C115.276 26.2675 114.148 25.2802 114.148 21.8073Z" fill="black"/>
<path d="M125.139 26.1793V24.6985L129.077 18.9514H125.318V17.5058H130.992V18.9514L127 24.7337H131.082V26.1793H125.139Z" fill="black"/>
<path d="M134.357 22.9179H136.559L135.485 19.0043L134.357 22.9179ZM136.953 24.3283H133.963L133.462 26.0912H131.672L134.339 17.4353H136.631L139.316 26.0912H137.526L136.953 24.3283Z" fill="black"/>
<path d="M143.003 17.5058H144.721V21.014H145.205L147.55 17.5058H149.465L146.583 21.631L149.608 26.1793H147.585L145.169 22.3714H144.721V26.1793H143.003V17.5058Z" fill="black"/>
<path d="M156.983 17.5058V23.0766C156.983 25.3684 155.766 26.3204 153.6 26.3204C151.434 26.3204 150.36 25.4389 150.36 23.1295V17.5058H152.15V22.9179C152.15 24.4517 152.687 24.8395 153.761 24.8395C154.835 24.8395 155.39 24.4164 155.39 23.0766V17.5058H156.983Z" fill="black"/>
<path d="M158.755 26.1793V17.5058H160.473V24.6985H164.125V26.1793H158.755Z" fill="black"/>
<path d="M167.597 18.969V26.1793H165.897V18.969H163.588V17.5058H169.889V18.969H167.597Z" fill="black"/>
<path d="M177.639 17.5058V23.0766C177.639 25.3684 176.422 26.3204 174.256 26.3204C172.09 26.3204 170.981 25.4389 170.981 23.1295V17.5058H172.771V22.9179C172.771 24.4517 173.308 24.8395 174.382 24.8395C175.456 24.8395 176.01 24.4164 176.01 23.0766V17.5058H177.639Z" fill="black"/>
<path d="M182.347 18.9514H181.13V21.3842H182.347C183.528 21.3842 183.833 21.0669 183.833 20.1325C183.833 19.1982 183.439 18.9514 182.347 18.9514ZM184.137 22.4772L186.16 26.1793H184.191L182.401 22.7769H181.094V26.1793H179.304V17.5058H182.347C184.746 17.5058 185.462 18.4049 185.462 20.0796C185.529 20.5818 185.428 21.0919 185.172 21.5315C184.917 21.9711 184.522 22.3158 184.048 22.5125" fill="black"/>
<path d="M192.228 21.8073C192.228 19.4979 191.852 18.828 190.438 18.828C189.024 18.828 188.648 19.4802 188.648 21.8073C188.648 24.1344 189.024 24.8571 190.438 24.8571C191.852 24.8571 192.228 24.1167 192.228 21.8073ZM186.858 21.8073C186.858 18.2815 188.039 17.3119 190.438 17.3119C192.837 17.3119 194.018 18.3167 194.018 21.772C194.018 25.2274 192.89 26.2675 190.438 26.2675C187.986 26.2675 186.858 25.2802 186.858 21.8073Z" fill="black"/>
<path d="M14.1231 2.69727L13.1028 2.57387L13.7293 3.38481L13.067 4.17812L14.1231 4.07235L14.5348 5.0067L14.9465 4.07235L15.931 4.17812L15.3403 3.38481L15.931 2.57387L14.9465 2.69727L14.5348 1.76293L14.1231 2.69727ZM11.3307 6.43466L10.2925 6.32888L10.919 7.05168L10.2567 7.84499L11.3307 7.73922L11.7245 8.8146L12.1362 7.86262L13.1386 7.9684L12.53 7.05168L13.1207 6.25837L12.1183 6.36414L11.7066 5.44743L11.3307 6.43466ZM8.44879 2.69727L7.41059 2.57387L8.03709 3.38481L7.37479 4.17812L8.44879 4.07235L8.94999 5.0067L9.34379 4.07235L10.3462 4.17812L9.66599 3.38481L10.2567 2.57387L9.25429 2.69727L8.94999 1.76293L8.44879 2.69727ZM14.32 21.9836C13.1028 21.9836 13.067 22.6711 11.6529 22.6711C10.2388 22.6711 10.0777 21.9836 8.93209 21.9836C7.78649 21.9836 7.71489 22.6711 6.15759 22.6711C7.64066 24.3927 9.56197 25.6947 11.7245 26.4438C13.8512 25.7195 15.7382 24.4399 17.184 22.7416C15.6804 22.7416 15.6446 22.0541 14.3916 22.0541M17.1124 21.7192C17.4568 21.709 17.7964 21.6373 18.1148 21.5076L18.7055 20.5204C18.2136 20.7755 17.6682 20.9143 17.1124 20.9258C15.7878 20.9258 15.7162 20.2383 14.3916 20.2383C13.067 20.2383 13.0312 20.9258 11.6887 20.9258C10.3462 20.9258 10.3283 20.2383 9.00369 20.2383C7.67909 20.2383 7.55379 20.9258 6.30079 20.9258C5.74821 20.9008 5.20904 20.7499 4.7256 20.4851C4.90205 20.837 5.09929 21.1784 5.31629 21.5076C5.63299 21.6171 5.96525 21.6766 6.30079 21.6839C7.71489 21.6839 7.67909 20.9964 9.00369 20.9964C10.3283 20.9964 10.4357 21.7192 11.6887 21.7192C12.9417 21.7192 13.1386 20.9964 14.3916 20.9964C15.6446 20.9964 15.7878 21.7192 17.1124 21.7192ZM9.32589 14.7909L7.67909 12.6049L3.6874 17.8936C3.71982 18.1947 3.81441 18.4862 3.96537 18.75C4.11632 19.0138 4.32045 19.2444 4.5652 19.4276C4.80996 19.6109 5.09018 19.743 5.38864 19.8157C5.6871 19.8884 5.99751 19.9002 6.30079 19.8505C7.44639 19.8505 7.67909 19.1629 9.00369 19.1629C10.3283 19.1629 10.4715 19.8505 11.7245 19.8505C12.9775 19.8505 13.0312 19.1629 14.3916 19.1629C15.752 19.1629 15.931 19.8505 17.1124 19.8505C17.4187 19.8871 17.7293 19.863 18.026 19.7794C18.3226 19.6958 18.5993 19.5546 18.8396 19.3639C19.0798 19.1733 19.2789 18.9372 19.425 18.6695C19.571 18.4018 19.6611 18.108 19.69 17.8055L15.752 12.6049L14.0873 14.7909L11.7245 10.1015L9.32589 14.7909ZM21.8559 2.97934L21.0504 15.5842C20.8844 18.2238 19.9142 20.7527 18.2665 22.841C16.6188 24.9292 14.3701 26.4797 11.814 27.29C9.23913 26.4952 6.96868 24.9518 5.30102 22.8625C3.63335 20.7733 2.64652 18.2361 2.4702 15.5842L1.6647 2.97934C1.41221 3.07349 1.16695 3.18543 0.930799 3.3143L1.7005 15.6547C1.87032 18.4944 2.92339 21.2137 4.71671 23.4435C6.51004 25.6733 8.95671 27.3056 11.7245 28.1185C14.4824 27.2914 16.9182 25.6548 18.7063 23.4275C20.4944 21.2002 21.5495 18.4885 21.7306 15.6547L22.5003 3.3143C22.2659 3.18211 22.0203 3.07005 21.7664 2.97934M22.6077 15.69C22.4227 18.7472 21.2753 21.6718 19.3248 24.0571C17.3744 26.4425 14.7179 28.1702 11.7245 29C8.7284 28.1693 6.06839 26.4424 4.1123 24.0579C2.1562 21.6735 1.00067 18.7494 0.805499 15.69L0 2.80305C3.62222 0.96174 7.63928 0.000946045 11.7155 0.000946045C15.7918 0.000946045 19.8089 0.96174 23.4311 2.80305L22.6077 15.69Z" fill="#67A2BE"/>
</g>
<defs>
<clipPath id="clip0_145_278">
<rect width="194" height="29" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5 12C4.44772 12 4 12.4477 4 13V20C4 20.5523 4.44772 21 5 21H19C19.5523 21 20 20.5523 20 20V13C20 12.4477 19.5523 12 19 12H5ZM2 13C2 11.3431 3.34315 10 5 10H19C20.6569 10 22 11.3431 22 13V20C22 21.6569 20.6569 23 19 23H5C3.34315 23 2 21.6569 2 20V13Z" fill="#006CB7"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 3C10.9391 3 9.92172 3.42143 9.17157 4.17157C8.42143 4.92172 8 5.93913 8 7V11C8 11.5523 7.55228 12 7 12C6.44772 12 6 11.5523 6 11V7C6 5.4087 6.63214 3.88258 7.75736 2.75736C8.88258 1.63214 10.4087 1 12 1C13.5913 1 15.1174 1.63214 16.2426 2.75736C17.3679 3.88258 18 5.4087 18 7V11C18 11.5523 17.5523 12 17 12C16.4477 12 16 11.5523 16 11V7C16 5.93913 15.5786 4.92172 14.8284 4.17157C14.0783 3.42143 13.0609 3 12 3Z" fill="#006CB7"/>
</svg>

After

Width:  |  Height:  |  Size: 912 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

12
static/image/register.svg Normal file
View File

@ -0,0 +1,12 @@
<svg width="46" height="47" viewBox="0 0 46 47" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21.1498 10.4492C23.3595 10.4492 25.3602 11.3447 26.8086 12.7931C28.2571 14.2416 29.1525 16.2423 29.1525 18.452C29.1525 20.6616 28.2571 22.6623 26.8086 24.1108C26.209 24.7096 25.5153 25.2144 24.7509 25.6002C27.475 26.2666 29.9097 27.6725 31.83 29.5928C34.5638 32.3257 36.2542 36.102 36.2542 40.273C36.2542 40.7834 35.8402 41.1974 35.3298 41.1974C34.8194 41.1974 34.4054 40.7834 34.4054 40.273C34.4054 36.6124 32.9216 33.2983 30.523 30.8998C28.1245 28.5012 24.8104 27.0174 21.1498 27.0174C17.4893 27.0174 14.1751 28.5012 11.7766 30.8998C9.37801 33.2983 7.89417 36.6124 7.89417 40.273C7.89417 40.7834 7.48021 41.1974 6.96979 41.1974C6.45937 41.1974 6.04541 40.7834 6.04541 40.273C6.04541 36.102 7.73582 32.3257 10.4696 29.5928C12.3899 27.6725 14.8246 26.2666 17.5487 25.6002C16.7843 25.2144 16.0906 24.7096 15.491 24.1108C14.0425 22.6623 13.1471 20.6616 13.1471 18.452C13.1471 16.2423 14.0425 14.2416 15.491 12.7931C16.9394 11.3447 18.9401 10.4492 21.1498 10.4492ZM25.5016 14.1001C24.3884 12.9868 22.8491 12.298 21.1498 12.298C19.4506 12.298 17.9113 12.9868 16.798 14.1001C15.6847 15.2134 14.9958 16.7527 14.9958 18.452C14.9958 20.1512 15.6847 21.6897 16.798 22.8038C17.9113 23.9171 19.4506 24.6059 21.1498 24.6059C22.8491 24.6059 24.3884 23.9171 25.5016 22.8038C26.6149 21.6897 27.3038 20.1512 27.3038 18.452C27.3038 16.7527 26.6149 15.2134 25.5016 14.1001Z" fill="#848C91"/>
<g clip-path="url(#clip0_3:140)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M41.441 9.67357C41.441 9.98072 41.192 10.2297 40.8849 10.2297H31.4467C31.1395 10.2297 30.8905 9.98072 30.8905 9.67357C30.8905 9.36642 31.1395 9.11742 31.4467 9.11742H40.8849C41.192 9.11742 41.441 9.36642 41.441 9.67357Z" fill="#848C91"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M36.1658 4.39833C36.4729 4.39833 36.7219 4.64733 36.7219 4.95448L36.7219 14.3927C36.7219 14.6998 36.4729 14.9488 36.1658 14.9488C35.8586 14.9488 35.6096 14.6998 35.6096 14.3927L35.6096 4.95448C35.6096 4.64733 35.8586 4.39833 36.1658 4.39833Z" fill="#848C91"/>
</g>
<defs>
<clipPath id="clip0_3:140">
<rect width="13.3476" height="13.3476" fill="white" transform="translate(36.1658 0.235352) rotate(45)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.14074 12C2.25003 12.1889 2.39492 12.4296 2.57441 12.7075C3.03543 13.4213 3.71817 14.3706 4.60454 15.3161C6.39552 17.2264 8.89951 19 12 19C15.1005 19 17.6045 17.2264 19.3955 15.3161C20.2818 14.3706 20.9646 13.4213 21.4256 12.7075C21.6051 12.4296 21.75 12.1889 21.8593 12C21.75 11.8111 21.6051 11.5704 21.4256 11.2925C20.9646 10.5787 20.2818 9.6294 19.3955 8.68394C17.6045 6.77356 15.1005 5 12 5C8.89951 5 6.39552 6.77356 4.60454 8.68394C3.71817 9.6294 3.03543 10.5787 2.57441 11.2925C2.39492 11.5704 2.25003 11.8111 2.14074 12ZM23 12C23.8944 11.5528 23.8943 11.5524 23.8941 11.5521L23.8925 11.5489L23.889 11.542L23.8777 11.5198C23.8681 11.5013 23.8546 11.4753 23.8372 11.4424C23.8025 11.3767 23.752 11.2832 23.686 11.166C23.5542 10.9316 23.3601 10.6015 23.1057 10.2075C22.5979 9.42131 21.8432 8.3706 20.8545 7.31606C18.8955 5.22644 15.8995 3 12 3C8.10049 3 5.10448 5.22644 3.14546 7.31606C2.15683 8.3706 1.40207 9.42131 0.894336 10.2075C0.63985 10.6015 0.445792 10.9316 0.313971 11.166C0.248023 11.2832 0.19754 11.3767 0.162753 11.4424C0.145357 11.4753 0.131875 11.5013 0.122338 11.5198L0.11099 11.542L0.107539 11.5489L0.10637 11.5512C0.106186 11.5516 0.105573 11.5528 1 12L0.105573 11.5528C-0.0351909 11.8343 -0.0351909 12.1657 0.105573 12.4472L1 12C0.105573 12.4472 0.105389 12.4468 0.105573 12.4472L0.107539 12.4511L0.11099 12.458L0.122338 12.4802C0.131875 12.4987 0.145357 12.5247 0.162753 12.5576C0.19754 12.6233 0.248023 12.7168 0.313971 12.834C0.445792 13.0684 0.63985 13.3985 0.894336 13.7925C1.40207 14.5787 2.15683 15.6294 3.14546 16.6839C5.10448 18.7736 8.10049 21 12 21C15.8995 21 18.8955 18.7736 20.8545 16.6839C21.8432 15.6294 22.5979 14.5787 23.1057 13.7925C23.3601 13.3985 23.5542 13.0684 23.686 12.834C23.752 12.7168 23.8025 12.6233 23.8372 12.5576C23.8546 12.5247 23.8681 12.4987 23.8777 12.4802L23.889 12.458L23.8925 12.4511L23.8936 12.4488C23.8938 12.4484 23.8944 12.4472 23 12ZM23 12L23.8944 12.4472C24.0352 12.1657 24.0348 11.8336 23.8941 11.5521L23 12Z" fill="#848C91"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 10C10.8954 10 10 10.8954 10 12C10 13.1046 10.8954 14 12 14C13.1046 14 14 13.1046 14 12C14 10.8954 13.1046 10 12 10ZM8 12C8 9.79086 9.79086 8 12 8C14.2091 8 16 9.79086 16 12C16 14.2091 14.2091 16 12 16C9.79086 16 8 14.2091 8 12Z" fill="#848C91"/>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

5
static/image/success.svg Normal file
View File

@ -0,0 +1,5 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15 29.6668C6.86671 29.6668 0.333374 23.1335 0.333374 15.0002C0.333374 6.86683 6.86671 0.333496 15 0.333496C23.1334 0.333496 29.6667 6.86683 29.6667 15.0002C29.6667 23.1335 23.1334 29.6668 15 29.6668ZM15 3.00016C8.33337 3.00016 3.00004 8.3335 3.00004 15.0002C3.00004 21.6668 8.33337 27.0002 15 27.0002C21.6667 27.0002 27 21.6668 27 15.0002C27 8.3335 21.6667 3.00016 15 3.00016Z" fill="#88B52F"/>
<path d="M15 16.3335C14.2 16.3335 13.6667 15.8002 13.6667 15.0002V9.66683C13.6667 8.86683 14.2 8.3335 15 8.3335C15.8 8.3335 16.3334 8.86683 16.3334 9.66683V15.0002C16.3334 15.8002 15.8 16.3335 15 16.3335Z" fill="#88B52F"/>
<path d="M15 21.6668C14.6 21.6668 14.3334 21.5335 14.0667 21.2668C13.8 21.0002 13.6667 20.7335 13.6667 20.3335C13.6667 20.2002 13.6667 19.9335 13.8 19.8002C13.9334 19.6668 13.9334 19.5335 14.0667 19.4002C14.4667 19.0002 15 18.8668 15.5334 19.1335C15.6667 19.1335 15.6667 19.1335 15.8 19.2668C15.8 19.2668 15.9334 19.4002 16.0667 19.4002C16.2 19.5335 16.3334 19.6668 16.3334 19.8002C16.3334 19.9335 16.3334 20.2002 16.3334 20.3335C16.3334 20.4668 16.3334 20.7335 16.2 20.8668C16.0667 21.0002 16.0667 21.1335 15.9334 21.2668C15.6667 21.5335 15.4 21.6668 15 21.6668Z" fill="#88B52F"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

6
static/image/trash.svg Normal file
View File

@ -0,0 +1,6 @@
<svg width="14" height="15" viewBox="0 0 14 15" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.333252 3.49984C0.333252 3.13165 0.631729 2.83317 0.999919 2.83317H12.9999C13.3681 2.83317 13.6666 3.13165 13.6666 3.49984C13.6666 3.86803 13.3681 4.1665 12.9999 4.1665H0.999919C0.631729 4.1665 0.333252 3.86803 0.333252 3.49984Z" fill="#848C91"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.66659 1.49984C5.48977 1.49984 5.32021 1.57007 5.19518 1.6951C5.07016 1.82012 4.99992 1.98969 4.99992 2.1665V2.83317H8.99992V2.1665C8.99992 1.98969 8.92968 1.82012 8.80466 1.6951C8.67963 1.57007 8.51006 1.49984 8.33325 1.49984H5.66659ZM10.3333 2.83317V2.1665C10.3333 1.63607 10.1225 1.12736 9.74747 0.75229C9.37239 0.377218 8.86369 0.166504 8.33325 0.166504H5.66659C5.13615 0.166504 4.62744 0.377218 4.25237 0.75229C3.8773 1.12736 3.66659 1.63607 3.66659 2.1665V2.83317H2.33325C1.96506 2.83317 1.66659 3.13165 1.66659 3.49984V12.8332C1.66659 13.3636 1.8773 13.8723 2.25237 14.2474C2.62744 14.6225 3.13615 14.8332 3.66659 14.8332H10.3333C10.8637 14.8332 11.3724 14.6225 11.7475 14.2474C12.1225 13.8723 12.3333 13.3636 12.3333 12.8332V3.49984C12.3333 3.13165 12.0348 2.83317 11.6666 2.83317H10.3333ZM2.99992 4.1665V12.8332C2.99992 13.01 3.07016 13.1795 3.19518 13.3046C3.32021 13.4296 3.48977 13.4998 3.66659 13.4998H10.3333C10.5101 13.4998 10.6796 13.4296 10.8047 13.3046C10.9297 13.1795 10.9999 13.01 10.9999 12.8332V4.1665H2.99992Z" fill="#848C91"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.66659 6.1665C6.03478 6.1665 6.33325 6.46498 6.33325 6.83317V10.8332C6.33325 11.2014 6.03478 11.4998 5.66659 11.4998C5.2984 11.4998 4.99992 11.2014 4.99992 10.8332V6.83317C4.99992 6.46498 5.2984 6.1665 5.66659 6.1665Z" fill="#848C91"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.33325 6.1665C8.70144 6.1665 8.99992 6.46498 8.99992 6.83317V10.8332C8.99992 11.2014 8.70144 11.4998 8.33325 11.4998C7.96506 11.4998 7.66659 11.2014 7.66659 10.8332V6.83317C7.66659 6.46498 7.96506 6.1665 8.33325 6.1665Z" fill="#848C91"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

4
static/image/user.svg Normal file
View File

@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.46447 15.4645C5.40215 14.5268 6.67392 14 8 14H16C17.3261 14 18.5979 14.5268 19.5355 15.4645C20.4732 16.4021 21 17.6739 21 19V21C21 21.5523 20.5523 22 20 22C19.4477 22 19 21.5523 19 21V19C19 18.2044 18.6839 17.4413 18.1213 16.8787C17.5587 16.3161 16.7956 16 16 16H8C7.20435 16 6.44129 16.3161 5.87868 16.8787C5.31607 17.4413 5 18.2044 5 19V21C5 21.5523 4.55228 22 4 22C3.44772 22 3 21.5523 3 21V19C3 17.6739 3.52678 16.4021 4.46447 15.4645Z" fill="#006CB7"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 4C10.3431 4 9 5.34315 9 7C9 8.65685 10.3431 10 12 10C13.6569 10 15 8.65685 15 7C15 5.34315 13.6569 4 12 4ZM7 7C7 4.23858 9.23858 2 12 2C14.7614 2 17 4.23858 17 7C17 9.76142 14.7614 12 12 12C9.23858 12 7 9.76142 7 7Z" fill="#006CB7"/>
</svg>

After

Width:  |  Height:  |  Size: 908 B

View File

@ -16,9 +16,7 @@ label {
body,
html {
height: 100%;
margin: 0;
overflow-y: hidden;
}
html {

109
templates/solar-about.html Normal file
View File

@ -0,0 +1,109 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Portal za oddajanje besedil</title>
<!--<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/style.css" type="text/css">-->
<script src="{{ROUTE_PREFIX}}/static/chart.js"></script>
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/header.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/form.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/simple-grid.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/history.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/footer.css" type="text/css">
</head>
<body>
<header>
<div class="logo"><a href="{{ROUTE_PREFIX}}/"><img src="{{ROUTE_PREFIX}}/static/image/logo-white.svg"/></a></div>
<div class="menu-items">
<a href="{{ROUTE_PREFIX}}/oddaja">Oddaja besedil</a>
{% if is_institution_coordinator %}
<a href="{{ROUTE_PREFIX}}/manage-institution">Upravljaj z ekipo</a>
{% endif %}
{% if is_admin %}
<a href="{{ROUTE_PREFIX}}/admin">Administracijski meni</a>
{% endif %}
<a href="https://rsdo.slovenscina.eu/zbiranje-besedil-za-korpus-solar" target="_blank">Več informacij o sodelovanju</a>
<a href="{{ROUTE_PREFIX}}/logout">Odjava</a>
</div>
</header>
<div class="container" style="margin-top:8rem;">
<div class="row">
<div class="col-12">
<h1 class="title">O orodju</h1>
<p class="subtitle"></p>
</div>
</div>
<div class="row">
<div class="col-8">
<p>Portal za oddajo besedil je nastal v okviru projekta Razvoj slovenščine v digitalnem okolju (RSDO), ki sta ga med letoma 2020 in 2023 sofinancirali Republika Slovenija in Evropska unija iz Evropskega sklada za regionalni razvoj. (<em>Operacija se je izvajala v okviru Operativnega programa za izvajanje evropske kohezijske politike v obdobju 20142020.</em>)</p>
<p>Portal je bil razvit z namenom hitrega in enostavnega zbiranja besedil učencev in učenk slovenskih šol, kar bo zagotavljalo učinkovito in kontinuirano nadgradnjo razvojnega korpusa Šolar. Gre za pomenljiv jezikovni vir, saj ponuja uvid v razvoj pisne kompetence šolajoče se populacije in omogoča pripravo didaktičnih gradiv ter orodij, ki opismenjevanje in pismenost podpirajo in razvijajo.</p>
<p>Zasnova portala: Špela Arhar Holdt, Eva Pori, Iztok Kosem</p>
<p>Razvoj portala: Mihael Šinkec, Leon Noe Jovan</p>
<p>Evalvacija portala: Polonca Šek Mertük, Tomaž Petek, Tina Munda, Maja Bajd, Andreja Černe Novak, Metka Gselman Sedak, Liljana Hajdinjak Zelko, Vanja Jesenek, Petra Kodre, Tadej Madjar, Tjaša Markežič, Polona Medvešek, Milena Mohorko, Andreja Robek Perpar, Lidija Skoporec Knafelj, Iris Strelec, Karla Urleb</p>
<p>Oblikovanje: Samo Kramberger</p>
 
<p>Citiranje portala za raziskovalne namene: Špela Arhar Holdt, Eva Pori, Iztok Kosem, Mihael Šinkec, Leon Noe Jovan, Samo Kramberger (2022): Portal za oddajo šolskih besedil za pripravo korpusa Šolar (Kazalnik projekta Razvoj slovenščine v digitalnem okolju), v1.0, <a href="https://zbiranje.cjvt.si/solar/login/" target="_blank">https://zbiranje.cjvt.si/solar/login/</a>, dostop.</p>
</div>
</div>
</div>
<br/><br/><br/><br/><br/><br/><br/>
<footer>
<div class="container">
<div class="row">
<div class="col-6">
<p class="mb-3.5 font-medium text-sm">slovenščina.eu</p>
<ul class="text-sm font-light gap-3.5 grid md:grid-cols-2 links-grid">
<li><a class="hover:text-primary" href="https://slovenscina.eu/prevajalnik">Prevajalnik</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razpoznavalnik">Razpoznavalnik</a></li>
<li><a class="hover:text-primary" href="http://terminoloski.slovenscina.eu">Terminološki portal</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/prepoznavanje-imenskih-entitet">Prepoznavanje imenskih entitet</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/ekstrakcija-povezav">Ekstrakcija povezav</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odkrivanje-koreferencnosti">Odkrivanje koreferenčnosti</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/povzemanje">Povzemanje</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odgovarjanje-na-vprasanja">Odgovarjanje na vprašanja</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razdvoumljanje">Razdvoumljanje</a></li>
</ul>
</div>
<div class="col-6">
<div class="row">
<div class="col-4" style="margin-top:0;">
<p><a href="https://rsdo.slovenscina.eu/" style="font-weight:400;">PROJEKT RSDO</a></p>
</div>
<div class="col-8">
<div>
<div class="logos">
<img src="{{ROUTE_PREFIX}}/static/image/mk.svg" alt="Ministrstvo za kulturo Republike Slovenije">
<img src="{{ROUTE_PREFIX}}/static/image/ess.svg" alt="Evropski sklad za regionalni razvoj">
</div>
<p style="font-size:12px;margin-top:10px;font-weight:300;">Naložbo sofinancirata Republika Slovenija in Evropska unija iz Evropskega sklada za regionalni razvoj</p>
<p style="font-size:12px;">
<a style="font-weight:400;" href="https://www.eu-skladi.si">https://www.eu-skladi.si</a>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</footer>
</body>
</html>

View File

@ -3,6 +3,12 @@
<head>
<meta charset="UTF-8">
<title>Admin panel - Šolar</title>
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/header.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/form.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/simple-grid.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/manage-institution.css" type="text/css">
<style>
.tableFixHead {
overflow-y: scroll;
@ -30,7 +36,22 @@
</style>
</head>
<body>
<a href="../oddaja">Nazaj na oddajo</a>
<header>
<div class="logo"><a href="{{ROUTE_PREFIX}}/"><img src="{{ROUTE_PREFIX}}/static/image/logo-white.svg"/></a></div>
<div class="menu-items">
<a href="{{ROUTE_PREFIX}}/oddaja">Oddaja besedil</a>
{% if is_institution_coordinator %}
<a href="{{ROUTE_PREFIX}}/manage-institution">Upravljaj z ekipo</a>
{% endif %}
{% if is_admin %}
<a href="{{ROUTE_PREFIX}}/admin">Administracijski meni</a>
{% endif %}
<a href="https://rsdo.slovenscina.eu/zbiranje-besedil-za-korpus-solar" target="_blank">Več informacij o sodelovanju</a>
<a href="{{ROUTE_PREFIX}}/about">O orodju</a>
<a href="{{ROUTE_PREFIX}}/logout">Odjava</a>
</div>
</header>
<div class="container" style="margin-top:8rem;">
{% with messages = get_flashed_messages() %}
{% if messages %}
<div style="background: blue;">
@ -49,7 +70,7 @@
<th>Email</th>
<th>Vloga</th>
<th>ID institucije</th>
<th>Vloga v instituciji</th>
<th>Vloga pri zbiranju</th>
</tr>
</thead>
<tbody>
@ -65,7 +86,7 @@
</table>
</div>
<h3>Dodaj uporabnika</h3>
<form action="../adduser" method="post">
<form action="{{ROUTE_PREFIX}}/adduser" method="post">
<label for="name">Ime in priimek:</label><br>
<input type="text" id="name" name="name"><br>
<label for="email">Email:</label><br>
@ -75,7 +96,7 @@
<input type="submit" value="Dodaj">
</form>
<h3>Spremeni email uporabnika</h3>
<form action="../changeuseremail" method="post">
<form action="{{ROUTE_PREFIX}}/changeuseremail" method="post">
<label for="user-id">ID uporabnika:</label><br>
<input type="text" id="user-id" name="user-id"><br>
<label for="email">Nov email:</label><br>
@ -83,7 +104,7 @@
<input type="submit" value="Spremeni">
</form>
<h3>Spremeni ime in priimek uporabnika</h3>
<form action="../changeusername" method="post">
<form action="{{ROUTE_PREFIX}}/changeusername" method="post">
<label for="user-id">ID uporabnika:</label><br>
<input type="text" id="user-id" name="user-id"><br>
<label for="name">Ime in priimek:</label><br>
@ -91,18 +112,18 @@
<input type="submit" value="Spremeni">
</form>
<h3>Odstrani uporabnika</h3>
<form action="../deluser" method="post">
<form action="{{ROUTE_PREFIX}}/deluser" method="post">
<label for="user_id">ID uporabnika:</label><br>
<input type="text" id="user_id" name="user_id"><br>
<input type="submit" value="Odstrani">
</form>
<h3>Dodeli uporabnika instituciji</h3>
<form action="../addusertoinstitution" method="post">
<form action="{{ROUTE_PREFIX}}/addusertoinstitution" method="post">
<label for="user_id">ID uporabnika:</label>
<input type="text" id="user_id" name="user_id"><br>
<label for="institution_id">ID institucije:</label>
<input type="text" id="institution_id" name="institution_id"><br>
<label for="role">Vloga v instituciji:</label>
<label for="role">Vloga pri zbiranju:</label>
<select name="role" id="role">
<option value="coordinator">Koordinator/-ka</option>
<option value="mentor">Mentor/-ica</option>
@ -111,13 +132,13 @@
<input type="submit" value="Dodeli">
</form>
<h3>Odstrani uporabnika iz institucije</h3>
<form action="../deluserfrominstitution" method="post">
<form action="{{ROUTE_PREFIX}}/deluserfrominstitution" method="post">
<label for="user_id">ID uporabnika:</label>
<input type="text" id="user_id" name="user_id"><br>
<input type="submit" value="Odstrani">
</form>
<h3>Spremeni vlogo uporabniškega računa</h3>
<form action="../changeuserrole" method="post">
<form action="{{ROUTE_PREFIX}}/changeuserrole" method="post">
<label for="user-id">ID uporabnika:</label>
<input type="text" id="user-id" name="user-id"><br>
<label for="role">Vloga:</label>
@ -136,7 +157,8 @@
<th>Ime in priimek</th>
<th>Email</th>
<th>Institucija</th>
<th>Vloga v instituciji</th>
<th>Vloga pri zbiranju</th>
<th>Akcije</th>
</tr>
</thead>
<tbody>
@ -147,20 +169,21 @@
<td>{{item[0].email}}</td>
<td>{{item[1].institution}}</td>
<td>{{item[1].role}}</td>
<td>
<form action="{{ROUTE_PREFIX}}/activateuser" method="post">
<input type="hidden" id="id" name="id" value="{{item[0].id}}">
<input type="submit" value="Aktiviraj">
</form>
</td>
</tr>
{% endfor %}
</table>
</div>
<h3>Aktiviraj uporabnika</h3>
<form action="../activateuser" method="post">
<label for="id">ID uporabnika:</label>
<input type="text" id="id" name="id"><br>
<input type="submit" value="Aktiviraj">
</form>
<div> </div>
<h2>Institucije</h2>
<h3>Dodaj institucijo</h3>
<form action="../addinstitution" method="post">
<form action="{{ROUTE_PREFIX}}/addinstitution" method="post">
<label for="name">Naziv:</label>
<input type="text" id="name" name="name"><br>
<label for="region">Regija:</label>
@ -200,7 +223,7 @@
</table>
</div>
<h3>Združi instituciji</h3>
<form action="../mergeinstitutions" method="post">
<form action="{{ROUTE_PREFIX}}/mergeinstitutions" method="post">
<label for="id-from">Institucijo z ID</label>
<input type="text" id="id-from" name="id-from">
<label for="id-to">združi v institucijo z ID</label>
@ -208,7 +231,7 @@
<input type="submit" value="Združi">
</form>
<h3>Spremeni podatke institucije</h3>
<form action="../changeinstitutiondata" method="post">
<form action="{{ROUTE_PREFIX}}/changeinstitutiondata" method="post">
<label for="id">ID institucije</label>
<input type="text" id="id" name="id"><br>
<label for="name">Nov naziv:</label>
@ -229,52 +252,8 @@
</select>
<input type="submit" value="Spremeni">
</form>
<h2>Zgodovina sodelovanja</h2>
<div class="tableFixHead">
<table>
<thead>
<tr>
<th>ID</th>
<th>ID uporabnika</th>
<th>ID institucije</th>
<th>Vloga</th>
<th>Šolsko leto</th>
<th>Besedilo značke</th>
</tr>
</thead>
<tbody>
{% for item in user_cooperation_history %}
<tr>
<td>{{item.id}}</td>
<td>{{item.user}}</td>
<td>{{item.institution}}</td>
<td>{{item.role}}</td>
<td>{{item.school_year}}</td>
<td>{{item.badge_text}}</td>
</tr>
{% endfor %}
</table>
</div>
<h3>Dodaj vnos</h3>
<form action="../addcooperationhistoryitem" method="post">
<label for="user">ID uporabnika</label>
<input type="text" id="user" name="user"><br>
<label for="institution">ID institucije</label>
<input type="text" id="institution" name="institution"><br>
<label for="role">Vloga</label>
<select name="role" id="role">
<option value="coordinator">Koordinator/-ka</option>
<option value="mentor">Mentor/-ica</option>
<option value="other">Druga vloga</option>
</select><br>
<label for="school-year">Šolsko leto (npr. "2021/22")</label>
<input type="text" id="school-year" name="school-year"><br>
<label for="badge-text">Besedilo značke</label>
<input type="text" id="badge-text" name="badge-text"><br>
<input type="submit" value="Dodaj">
</form>
<h3>Odstrani vnos</h3>
<form action="../delcooperationhistoryitem" method="post">
<form action="{{ROUTE_PREFIX}}/delcooperationhistoryitem" method="post">
<label for="entry-id">ID vnosa</label>
<input type="text" id="entry-id" name="entry-id"><br>
<input type="submit" value="Odstrani">
@ -320,7 +299,7 @@
</table>
</div>
<h3>Posodobi podatke nalaganja</h3>
<form action="../updateuploaditem" method="post">
<form action="{{ROUTE_PREFIX}}/updateuploaditem" method="post">
<label for="item-id">ID nalaganja</label>
<input type="text" id="item-id" name="item-id"/><br>
<label for="program">Program</label>
@ -389,6 +368,7 @@
<button id="button-submit" type="submit">Posodobi</button>
</form>
</div>
<script>
var selectPredmet = document.getElementById("predmet");
var selectVrsta = document.getElementById("vrsta");

View File

@ -3,38 +3,89 @@
<head>
<meta charset="UTF-8">
<title>Portal ŠOLAR</title>
<link rel="stylesheet" href="/static/style.css" type="text/css">
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/login-styles.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/utils.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/footer.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/simple-grid.css" type="text/css">
</head>
<body>
<div id="main-window">
<div id="rect1">
<div style="padding: 50px;">
<div id="logo-container">
<img src="/static/image/logo.svg" alt="logo"/>
</div>
<a href="../login" class="contract-item-button" style="float: none;">Nazaj na prijavo</a>
<h3 id="title" style="font-size: 27px; text-align: left;">Pozabljeno geslo - ŠOLAR</h3>
<div>
{% with messages = get_flashed_messages() %}
{% if messages %}
<div>
{{ messages[0] }}
</div>
{% endif %}
{% endwith %}
<form method="POST" action="../sendresetpass">
<div>
<div>
<input type="email" name="email" placeholder="Email" autofocus="">
</div>
<div class="background">
<div class="panel login-panel">
<div class="panel-logo">
<img src="{{ROUTE_PREFIX}}/static/image/logo.svg" alt="logo"/>
</div>
<h1 class="m-b-3">Pozabljeno geslo - ŠOLAR</h1>
<div>
<form method="POST" action="{{ROUTE_PREFIX}}/sendresetpass" class="m-b-2">
<div class="input-wrapper">
<img src="{{ROUTE_PREFIX}}/static/image/user.svg" alt="user" class="input-icon"/>
<div class="input-floating-label">
<label>E-mail</label>
<input type="text" name="email">
</div>
</div>
<button class="button-general" style="margin-top: 20px;">Pošlji</button>
</form>
<button class="btn" style="margin-left: 46px;">Pošlji</button>
</form>
{% with messages = get_flashed_messages() %}
{% if messages %}
<div class="alert alert-success">
<img src="{{ROUTE_PREFIX}}/static/image/success.svg" alt="alert"/>
<p>{{ messages[0] }}</p>
</div>
{% endif %}
{% endwith %}
<div class="back-to-login">
<img src="{{ROUTE_PREFIX}}/static/image/chevron-left.svg"/>
<a href="{{ROUTE_PREFIX}}/login">Nazaj na prijavo</a>
</div>
</div>
</div>
<div id="rect2" class="mock-side">
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-6">
<p class="mb-3.5 font-medium text-sm">slovenščina.eu</p>
<ul class="text-sm font-light gap-3.5 grid md:grid-cols-2 links-grid">
<li><a class="hover:text-primary" href="https://slovenscina.eu/prevajalnik">Prevajalnik</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razpoznavalnik">Razpoznavalnik</a></li>
<li><a class="hover:text-primary" href="http://terminoloski.slovenscina.eu">Terminološki portal</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/prepoznavanje-imenskih-entitet">Prepoznavanje imenskih entitet</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/ekstrakcija-povezav">Ekstrakcija povezav</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odkrivanje-koreferencnosti">Odkrivanje koreferenčnosti</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/povzemanje">Povzemanje</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odgovarjanje-na-vprasanja">Odgovarjanje na vprašanja</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razdvoumljanje">Razdvoumljanje</a></li>
</ul>
</div>
<div class="col-6">
<div class="row">
<div class="col-4" style="margin-top:0;">
<p><a href="https://rsdo.slovenscina.eu/" style="font-weight:400;">PROJEKT RSDO</a></p>
</div>
<div class="col-8">
<div>
<div class="logos">
<img src="{{ROUTE_PREFIX}}/static/image/mk.svg" alt="Ministrstvo za kulturo Republike Slovenije">
<img src="{{ROUTE_PREFIX}}/static/image/ess.svg" alt="Evropski sklad za regionalni razvoj">
</div>
<p style="font-size:12px;margin-top:10px;font-weight:300;">Naložbo sofinancirata Republika Slovenija in Evropska unija iz Evropskega sklada za regionalni razvoj</p>
<p style="font-size:12px;">
<a style="font-weight:400;" href="https://www.eu-skladi.si">https://www.eu-skladi.si</a>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</footer>
</body>

View File

@ -3,63 +3,109 @@
<head>
<meta charset="UTF-8">
<title>Portal ŠOLAR</title>
<link rel="stylesheet" href="/static/style.css" type="text/css">
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/login-styles.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/utils.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/footer.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/simple-grid.css" type="text/css">
</head>
<body>
<div id="main-window">
<div id="rect1">
<div style="padding: 25px;">
<div id="logo-container">
<img src="/static/image/logo.svg" alt="logo"/>
<div class="background">
<div class="panel login-panel">
<div class="panel-logo">
<img src="{{ROUTE_PREFIX}}/static/image/logo.svg" alt="logo"/>
</div>
<h2 class="text-center">Portal za oddajanje besedil</h2>
<div class="line"></div>
<h1 class="text-center">Korpus ŠOLAR</h1>
<div class="text-center m-b-3"><em>Zbiranje besedil za korpus Šolar poteka <a href="https://rsdo.slovenscina.eu/zbiranje-besedil-za-korpus-solar" target="_blank" style="color:#006CB7">po naslednjem postopku</a>, ki prinaša tudi točke za napredovanje v pedagoški naziv.</em></div>
<h1 class="m-b-3">Prijava</h1>
{% with messages = get_flashed_messages() %}
{% if messages %}
{% if "potrditev" in messages[0] or "uspešna" in messages[0] %}
<div class="alert alert-success">
<img src="{{ROUTE_PREFIX}}/static/image/success.svg" alt="alert"/>
<p>{{ messages[0] }}</p>
</div>
<h1 id="title">Portal za oddajanje besedil</h1>
<h2 id="subtitle">Korpus Šolar</h2>
<div class="form-text"><em>Zbiranje besedil za korpus Šolar poteka po naslednjem postopku, ki prinaša tudi točke za napredovanje.</em></div>
<h3 id="title" style="font-size: 27px; text-align: left;">Prijava</h3>
<div>
{% with messages = get_flashed_messages() %}
{% if messages %}
<div>
{{ messages[0] }}
{% else %}
<div class="alert">
<img src="{{ROUTE_PREFIX}}/static/image/alert.svg" alt="alert"/>
<p>{{ messages[0] }}</p>
</div>
{% endif %}
{% endif %}
{% endwith %}
<div>
<form method="POST" action="{{ROUTE_PREFIX}}/login" class="m-b-2">
<div class="input-wrapper">
<img src="{{ROUTE_PREFIX}}/static/image/user.svg" alt="user" class="input-icon"/>
<div class="input-floating-label">
<label>E-mail</label>
<input type="text" name="email">
</div>
{% endif %}
{% endwith %}
<form method="POST" action="../login">
<div>
</div>
<div class="input-wrapper">
<img src="{{ROUTE_PREFIX}}/static/image/password.svg" alt="user" class="input-icon"/>
<div class="input-floating-label">
<label>Geslo</label>
<input type="password" name="password">
</div>
</div>
<a href="{{ROUTE_PREFIX}}/forgotpass" class="a-right m-b-1">Pozabljeno geslo</a>
<button class="btn" style="margin-left: 46px;">PRIJAVA</button>
</form>
</div>
<a href="{{ROUTE_PREFIX}}/register" class="register-button">
<img src="{{ROUTE_PREFIX}}/static/image/register.svg" alt="register"/>
<h3>Registracija</h3>
<p>Še nimate uporabniškega računa? Registrirajte se!</p>
</a>
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-6">
<p class="mb-3.5 font-medium text-sm">slovenščina.eu</p>
<ul class="text-sm font-light gap-3.5 grid md:grid-cols-2 links-grid">
<li><a class="hover:text-primary" href="https://slovenscina.eu/prevajalnik">Prevajalnik</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razpoznavalnik">Razpoznavalnik</a></li>
<li><a class="hover:text-primary" href="http://terminoloski.slovenscina.eu">Terminološki portal</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/prepoznavanje-imenskih-entitet">Prepoznavanje imenskih entitet</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/ekstrakcija-povezav">Ekstrakcija povezav</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odkrivanje-koreferencnosti">Odkrivanje koreferenčnosti</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/povzemanje">Povzemanje</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odgovarjanje-na-vprasanja">Odgovarjanje na vprašanja</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razdvoumljanje">Razdvoumljanje</a></li>
</ul>
</div>
<div class="col-6">
<div class="row">
<div class="col-4" style="margin-top:0;">
<p><a href="https://rsdo.slovenscina.eu/" style="font-weight:400;">PROJEKT RSDO</a></p>
</div>
<div class="col-8">
<div>
<img src="../static/image/user.png" alt="user" style="float: left; width: 10%;"/>
<input type="email" name="email" placeholder="Email" autofocus=""
style="float: right; width: 85%; margin-bottom: 20px; margin-top: 10px;">
<div class="logos">
<img src="{{ROUTE_PREFIX}}/static/image/mk.svg" alt="Ministrstvo za kulturo Republike Slovenije">
<img src="{{ROUTE_PREFIX}}/static/image/ess.svg" alt="Evropski sklad za regionalni razvoj">
</div>
<p style="font-size:12px;margin-top:10px;font-weight:300;">Naložbo sofinancirata Republika Slovenija in Evropska unija iz Evropskega sklada za regionalni razvoj</p>
<p style="font-size:12px;">
<a style="font-weight:400;" href="https://www.eu-skladi.si">https://www.eu-skladi.si</a>
</p>
</div>
</div>
<div>
<div>
<img src="/static/image/password.png" alt="user" style="float: left; width: 10%; margin-top: 20px;"/>
<input type="password" name="password" placeholder="Geslo"
style="float: right; width: 85%; margin-bottom: 20px; margin-top: 10px;">
</div>
</div>
<button class="button-general" style="margin-top: 30px; margin-bottom: 20px;">PRIJAVA</button>
</form>
<a href="../forgotpass" class="contract-item-button">Pozabljeno geslo</a>
<a href="../register" class="contract-item-button"
style="-webkit-appearance: button;
-moz-appearance: button;
appearance: button;
margin-top: 80px;
text-decoration: none;
color: #46535b;
width: 100%;"
><img src="../static/image/register.png" alt="user" style="float: left; width: 15%; margin-right: 25px;"/>
Registracija<br><div style="font-size: 11px; margin-top: 10px;">Še nimate uporabniškega računa? Registrirajte se!</div></a>
</div>
</div>
</div>
</div>
<div id="rect2" class="mock-side">
</div>
</div>
</footer>
</body>

View File

@ -3,100 +3,168 @@
<head>
<meta charset="UTF-8">
<title>Upravljanje institucije - Šolar</title>
<style>
.tableFixHead {
overflow-y: scroll;
max-height: 306px;
}
.tableFixHead thead th {
position: sticky;
top: 0;
}
table {
border-collapse: collapse;
width: 100%;
}
th,
td {
padding: 8px 16px;
border: 1px solid #ccc;
}
th {
background: #eee;
}
h2 {
color: blue;
}
</style>
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/header.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/form.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/simple-grid.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/slovenscina-admin.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/manage-institution.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/footer.css" type="text/css">
</head>
<body>
<a href="../oddaja">Nazaj na oddajo</a>
<header>
<div class="logo"><a href="{{ROUTE_PREFIX}}/"><img src="{{ROUTE_PREFIX}}/static/image/logo-white.svg"/></a></div>
<div class="menu-items">
<a href="{{ROUTE_PREFIX}}/oddaja">Oddaja besedil</a>
{% if is_institution_coordinator %}
<a href="{{ROUTE_PREFIX}}/manage-institution">Upravljaj z ekipo</a>
{% endif %}
{% if is_admin %}
<a href="{{ROUTE_PREFIX}}/admin">Administracijski meni</a>
{% endif %}
<a href="https://rsdo.slovenscina.eu/zbiranje-besedil-za-korpus-solar" target="_blank">Več informacij o sodelovanju</a>
<a href="{{ROUTE_PREFIX}}/about">O orodju</a>
<a href="{{ROUTE_PREFIX}}/logout">Odjava</a>
</div>
</header>
<div class="container" style="margin-top:8rem;">
{% with messages = get_flashed_messages() %}
{% if messages %}
<div style="background: blue;">
<div>
{{ messages[0] }}
</div>
{% endif %}
{% endwith %}
<h3>Seznam vseh aktivnih uporabnikov</h3>
<div class="tableFixHead">
<table>
<thead>
<tr>
<th>ID</th>
<th>Ime in priimek</th>
<th>Email</th>
</tr>
</thead>
<tbody>
{% for item in users %}
<tr>
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td>{{item.email}}</td>
</tr>
{% endfor %}
</table>
<div class="row">
<div class="col-12">
<h1>{{institution.name}}</h1>
<h3>Seznam uporabnikov v vaši instituciji</h3>
<table class="tableFixHead">
<thead>
<tr>
<th>Ime in priimek</th>
<th>Email</th>
<th>Vloga</th>
<th>Akcije</th>
</tr>
</thead>
<tbody>
{% for item in institution_users %}
<tr>
<td>{{item.name}}</td>
<td>{{item.email}}</td>
<td>
<div>
<a href="javascript:void(0);" onclick="toggleEditForm(this)" class="toggle-edit-role">Spremeni</a>
{{role_map[item.id]}}
</div>
<form action="{{ROUTE_PREFIX}}/changeuserrole-institution" method="post" style="display:none;">
<input type="hidden" id="user-id" name="user-id" value="{{item.id}}"/>
<select class="role" name="role">
<option value="coordinator">Koordinator/-ka</option>
<option value="mentor">Mentor/-ica</option>
<option value="other">Druga vloga</option>
</select>
<input type="submit" value="Shrani"/>
</form>
</td>
<td>
<form action="{{ROUTE_PREFIX}}/deluserfrominstitution" method="post">
<input type="hidden" id="user_id" name="user_id" value="{{item.id}}">
<input type="submit" value="Odstrani uporabnika">
</form>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<h3>Seznam uporabnikov v vaši instituciji</h3>
<div class="tableFixHead">
<table>
<thead>
<tr>
<th>ID</th>
<th>Ime in priimek</th>
<th>Email</th>
</tr>
</thead>
<tbody>
{% for item in institution_users %}
<tr>
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td>{{item.email}}</td>
</tr>
{% endfor %}
</table>
</div>
<form action="/institutionadduser" method="POST">
<div class="row">
<div class="col-6">
<h1>Dodaj uporabnika</h1>
<div class="form-wrapper">
<label for="regija">Ime</label>
<input type="text" name="name" />
</div>
<div class="form-wrapper">
<label for="regija">Email</label>
<input type="text" name="email" />
</div>
<div class="form-wrapper">
<label for="regija">Vloga</label>
<select class="role" name="role">
<option value="coordinator">Koordinator/-ka</option>
<option value="mentor">Mentor/-ica</option>
<option value="other">Druga vloga</option>
</select>
</div>
<input type="submit" class="btn" value="Dodaj"/>
</div>
</div>
</form>
<br>
<h3>Dodaj uporabnika instituciji</h3>
<form action="../addusertoinstitution" method="post">
<label for="user_id">ID uporabnika:</label>
<input type="text" id="user_id" name="user_id"><br>
<label for="role">Vloga v instituciji:</label>
<select name="role" id="role">
<option value="coordinator">Koordinator/-ka</option>
<option value="mentor">Mentor/-ica</option>
<option value="other">Druga vloga</option>
</select>
<input type="submit" value="Dodeli">
</form>
<h3>Odstrani uporabnika iz institucije</h3>
<form action="../deluserfrominstitution" method="post">
<label for="user_id">ID uporabnika:</label>
<input type="text" id="user_id" name="user_id"><br>
<input type="submit" value="Odstrani">
</form>
<div> </div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-6">
<p class="mb-3.5 font-medium text-sm">slovenščina.eu</p>
<ul class="text-sm font-light gap-3.5 grid md:grid-cols-2 links-grid">
<li><a class="hover:text-primary" href="https://slovenscina.eu/prevajalnik">Prevajalnik</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razpoznavalnik">Razpoznavalnik</a></li>
<li><a class="hover:text-primary" href="http://terminoloski.slovenscina.eu">Terminološki portal</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/prepoznavanje-imenskih-entitet">Prepoznavanje imenskih entitet</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/ekstrakcija-povezav">Ekstrakcija povezav</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odkrivanje-koreferencnosti">Odkrivanje koreferenčnosti</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/povzemanje">Povzemanje</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odgovarjanje-na-vprasanja">Odgovarjanje na vprašanja</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razdvoumljanje">Razdvoumljanje</a></li>
</ul>
</div>
<div class="col-6">
<div class="row">
<div class="col-4" style="margin-top:0;">
<p><a href="https://rsdo.slovenscina.eu/" style="font-weight:400;">PROJEKT RSDO</a></p>
</div>
<div class="col-8">
<div>
<div class="logos">
<img src="{{ROUTE_PREFIX}}/static/image/mk.svg" alt="Ministrstvo za kulturo Republike Slovenije">
<img src="{{ROUTE_PREFIX}}/static/image/ess.svg" alt="Evropski sklad za regionalni razvoj">
</div>
<p style="font-size:12px;margin-top:10px;font-weight:300;">Naložbo sofinancirata Republika Slovenija in Evropska unija iz Evropskega sklada za regionalni razvoj</p>
<p style="font-size:12px;">
<a style="font-weight:400;" href="https://www.eu-skladi.si">https://www.eu-skladi.si</a>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</footer>
</body>
<script>
var toggleEditForm = function(el) {
var td = el.closest("td");
el.closest("div").style.display = "none";
td.querySelector("form").style.display = "block";
};
</script>
</html>

View File

@ -3,136 +3,318 @@
<head>
<meta charset="UTF-8">
<title>Portal za oddajanje besedil</title>
<!--{{ dropzone.load_css() }}-->
<link rel="stylesheet" href="/static/dropzone.css" type="text/css">
{{ dropzone.style('position: absolute;
top: -0.5px;
width: 388px;
height: 732px;
left: 385px;
background: linear-gradient(198.62deg, rgba(255, 255, 255, 0.49) -1.62%, rgba(255, 255, 255, 0.73) -1.61%, rgba(255, 255, 255, 0.41) 79.34%);
box-shadow: 20px 4px 40px rgba(0, 0, 0, 0.25);
border: 0px;
backdrop-filter: blur(20px);
border-radius: 0px 20px 20px 0px;') }}
<link rel="stylesheet" href="/static/style.css" type="text/css">
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/header.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/form.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/simple-grid.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/utils.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/footer.css" type="text/css">
</head>
<body>
<a href="../logout">Odjavi se</a>
{% if is_institution_coordinator %}
<br><a href="../manage-institution">Upravljaj z institucijo</a>
{% endif %}
{% if is_admin %}
<br><a href="../admin">Administracijski meni</a>
{% endif %}
<br><a href="mailto:email@example.com">Pomoč</a>
<div class="bg"></div>
<div id="main-window">
<div id="rect1">
<div id="logo-container">
<img src="/static/image/logo.svg" alt="logo"/>
<header>
<div class="logo"><a href="{{ROUTE_PREFIX}}/"><img src="{{ROUTE_PREFIX}}/static/image/logo-white.svg"/></a></div>
<div class="menu-items">
{% if is_institution_coordinator %}
<a href="{{ROUTE_PREFIX}}/manage-institution">Upravljaj z ekipo</a>
{% endif %}
{% if is_admin %}
<a href="{{ROUTE_PREFIX}}/admin">Administracijski meni</a>
{% endif %}
<a href="https://rsdo.slovenscina.eu/zbiranje-besedil-za-korpus-solar" target="_blank">Več informacij o sodelovanju</a>
<a href="{{ROUTE_PREFIX}}/about">O orodju</a>
<a href="{{ROUTE_PREFIX}}/logout">Odjava</a>
</div>
</header>
<div class="container" style="margin-top:8rem;">
<div class="row">
<div class="col-12">
<h1 class="title">Korpus Šolar</h1>
<p class="subtitle" style="width:60%">Prosimo, določite podatke o besedilih, ki jih želite oddati, in nato naložite besedila. Če oddajate besedila, ki so nastala v različnih razredih, se razlikujejo glede učiteljskih popravkov in podobno, jih oddajte v ločenih paketih.</p>
<div class="tab-nav">
<a href="{{ROUTE_PREFIX}}/oddaja" class="active">Oddaja besedil</a>
<a href="{{ROUTE_PREFIX}}/zgodovina">Zgodovina sodelovanja</a>
<a href="{{ROUTE_PREFIX}}/pogodbe">Ekipa</a>
</div>
</div>
<form id="my-dropzone" class="dropzone">
<div style="position: relative; right: 390px;">
<h1 id="title" style="font-size: 25px;">Korpus ŠOLAR</h1>
</div>
<div class="selection-tabs">
<button id="button-oddaja" class="selection-tab-button selected">ODDAJA</button>
<button id="button-zgodovina" class="selection-tab-button">ZGODOVINA</button>
<button id="button-pogodbe" class="selection-tab-button">POGODBE</button>
<div class="row">
<div class="col-6">
{% if not institution %}
<div class="alert">
<img src="{{ROUTE_PREFIX}}/static/image/alert.svg" alt="alert"/>
<p>Niste član nobene institucije!</p>
</div>
{% elif not institution_contract %}
<!--<div class="alert">
<img src="{{ROUTE_PREFIX}}/static/image/alert.svg" alt="alert"/>
<p>Pogodba s šolo še ni naložena!</p>
</div>-->
{% endif %}
<div class="alert" id="error-message">
<img src="{{ROUTE_PREFIX}}/static/image/alert.svg" alt="alert"/>
<p></p>
</div>
<div class="alert alert-success" id="success-message">
<img src="{{ROUTE_PREFIX}}/static/image/success.svg" alt="alert"/>
<p></p>
</div>
</div>
</div>
<form id="form-oddaja">
<div class="row">
<div class="col-6">
<div class="form-wrapper">
<label for="regija">Regija</label>
<select id="regija" name="regija">
<option value="CE" selected="selected">Celje (CE)</option>
<option value="GO">Nova Gorica (GO)</option>
<option value="KK">Krško (KK)</option>
<option value="KP">Koper (KP)</option>
<option value="KR">Kranj (KR)</option>
<option value="LJ">Ljubljana (LJ)</option>
<option value="MB">Maribor (MB)</option>
<option value="MS">Murska Sobota (MS)</option>
<option value="NM">Novo Mesto (NM)</option>
<option value="PO">Postojna (PO)</option>
<option value="SG">Slovenj Gradec (SG)</option>
</select>
</div>
</div>
<div class="col-6">
<p></p>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-wrapper">
<label for="program">Program</label>
<select id="program" name="program">
<option value="OS" selected="selected">Osnovnošolski (OŠ)</option>
<option value="SSG">Splošna in strokovna gimnazija (SGG)</option>
<option value="MGP">Mednarodni gimnazijski programi (MGP)</option>
<option value="ZG">Zasebne gimnazije (ZG)</option>
<option value="NPI">Nižje poklicno izobraževanje (NPI)</option>
<option value="SPI">Srednje poklicno izobraževanje (SPI)</option>
<option value="SSI">Srednje strokovno izobraževanje (SSI)</option>
<option value="PTI">Poklicno-tehniško izobraževanje (PTI)</option>
</select>
</div>
</div>
<div class="col-6">
<p></p>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-wrapper">
<label for="predmet">Predmet</label>
<select id="predmet" name="predmet">
<option value="SLO" selected="selected">Slovenščina (SLO)</option>
<option value="DJP">Drugi jezikoslovni predmeti (vtipkajte ime predmeta) (DJP)</option>
<option value="DDP">Drugi družboslovni predmeti (vtipkajte ime predmeta) (DDP)</option>
<option value="DNP">Drugi naravoslovni predmeti (vtipkajte ime predmeta) (DNP)</option>
<option value="DSP">Drugi strokovni predmeti (vtipkajte ime predmeta) (DSP)</option>
<option value="DIP">Drugi izbirni ali dodatni predmeti (vtipkajte ime predmeta) (DIP)</option>
</select>
</div>
</div>
<div class="col-6">
<p></p>
</div>
</div>
{% if not institution %}
<div class="warning">Niste član nobene institucije!</div>
{% elif not institution_contract %}
<div class="warning">Pogodba s šolo še ni naložena!</div>
{% endif %}
<div id="data-confirm-notification" class="message-notification" style="display: none;">Prosimo, preverite in potrdite vnešene podatke.</div>
<label for="program">PROGRAM</label>
<select id="program" name="program">
<option value="OS" selected="selected">Osnovnošolski (OŠ)</option>
<option value="SSG">Splošna in strokovna gimnazija (SGG)</option>
<option value="MGP">Mednarodni gimnazijski programi (MGP)</option>
<option value="ZG">Zasebne gimnazije (ZG)</option>
<option value="NPI">Nižje poklicno izobraževanje (NPI)</option>
<option value="SPI">Srednje poklicno izobraževanje (SPI)</option>
<option value="SSI">Srednje strokovno izobraževanje (SSI)</option>
<option value="PTI">Poklicno-tehnično izobraževanje (PTI)</option>
</select>
<label for="predmet">PREDMET</label>
<select id="predmet" name="predmet">
<option value="slo" selected="selected">Slovenščina</option>
<option value="drug-jez">Drugi jezikoslovni predmeti</option>
<option value="drug-druz">Drugi družboslovni predmeti</option>
<option value="drug-narav">Drugi naravoslovni predmeti</option>
<option value="drug-strok">Drugi strokovni predmeti</option>
<option value="drug-izb">Drugi izbirni ali dodatni predmeti</option>
</select>
<div id="predmet-custom-box" style="display: none;">
<div class="row set-open-transition">
<div class="col-6">
<div class="form-wrapper" id="predmet-custom-box">
<label for="predmet-custom">Ime predmeta:</label>
<input type="text" id="predmet-custom" name="predmet-custom"/>
</div>
</div>
<div class="col-6">
<p></p>
</div>
</div>
<label for="letnik">LETNIK</label>
<select id="letnik" name="letnik">
<option value="1" selected="selected">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
<div class="row">
<div class="col-6">
<div class="form-wrapper">
<label for="letnik">Razred/Letnik</label>
<select id="letnik" name="letnik">
<option value="1" selected="selected">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
</div>
</div>
<div class="col-6">
<p></p>
</div>
</div>
<label for="vrsta">VRSTA BESEDILA</label>
<select id="vrsta" name="vrsta">
<option value="esej-spis" selected="selected">Esej ali spis</option>
<option value="prakticno">Praktično besedilo (npr. vabila, prošnje ipd. pri pouku slovenščine), napisano za oceno</option>
<option value="solski-test">Šolski test</option>
<option value="delo-v-razredu">Delo v razredu, ne za oceno</option>
</select>
<div id="vrsta-custom-box" style="display: none;">
<div class="row">
<div class="col-6">
<div class="form-wrapper" >
<label for="vrsta">Vrsta besedila</label>
<select id="vrsta" name="vrsta">
<option value="E" selected="selected">Esej ali spis (E)</option>
<option value="PB">Praktično besedilo, napisano za oceno - npr. vabilo, prošnja ali podobno (PE)</option>
<option value="T">Šolski test (T)</option>
<option value="R">Delo v razredu, ne za oceno (vtipkajte besedilno vrsto) (R)</option>
</select>
</div>
</div>
<div class="col-6">
<p></p>
</div>
</div>
<div class="row set-open-transition">
<div class="col-6">
<div class="form-wrapper" id="vrsta-custom-box">
<label for="vrsta-custom">Vtipkajte besedilno vrsto:</label>
<input type="text" id="vrsta-custom" name="vrsta-custom"/>
</div>
<label for="solsko-leto">ŠOLSKO LETO</label>
<select id="solsko-leto" name="solsko-leto">
<option value="20-21" selected="selected">2020/21</option>
<option value="21-22">2021/22</option>
</select>
<label for="jezikovni-popravki">JEZIKOVNI POPRAVKI</label>
<select id="jezikovni-popravki" name="jezikovni-popravki">
<option value="popr-ne" selected="selected">Besedilo vsebuje učiteljske popravke in strinjam se z njihovo vključitvijo v korpus</option>
<option value="brez-popr">Besedilo ne vsebuje učiteljskih popravkov</option>
<option value="popr-da">Besedilo vsebuje učiteljske popravke in ne strinjam se z njihovo vključitvijo v korpus</option>
</select>
<button id="button-submit" type="submit">Oddaj</button>
</div>
<div class="dropzone-previews">
<div class="col-6">
<p></p>
</div>
</form>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-wrapper">
<label for="solsko-leto">Šolsko leto</label>
<select id="solsko-leto" name="solsko-leto">
<option value="20-21" selected="selected">2020/21</option>
<option value="21-22">2021/22</option>
</select>
</div>
</div>
<div class="col-6">
<p></p>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-wrapper">
<label for="jezikovni-popravki">Jezikovni popravki</label>
<select id="jezikovni-popravki" name="jezikovni-popravki">
<option value="DD" selected="selected">Besedilo vsebuje učiteljske popravke in strinjam se z njihovo vključitvijo v korpus. (DD)</option>
<option value="N">Besedilo ne vsebuje učiteljskih popravkov. (N)</option>
<option value="DN">Besedilo vsebuje učiteljske popravke in ne strinjam se z njihovo vključitvijo v korpus. (DN)</option>
</select>
</div>
</div>
<div class="col-6">
<p></p>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-wrapper">
<div id="dropzone-previews" class="dropzone-previews"></div>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-wrapper">
<label for="jezikovni-popravki">Datoteka</label>
<div id="my-dropzone" class="dropzone"></div>
</div>
</div>
<div class="col-6">
<p>Oddate lahko eno ali (hkrati) več besedil, ki ustrezajo izbranim podatkom. Sprejemljivi formati so: txt, csv, pdf, doc, docx, xls, xlsx, ppt, pptx, jpg, jpeg, png.</p>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-wrapper">
<button id="button-submit" type="button" class="btn">Oddaj</button>
</div>
</div>
<div class="col-6">
</div>
</div>
<div class="row submit-alert" id="data-confirm-notification">
<div class="col-6">
<button id="button-submit-final" type="button" class="btn">Potrdi in oddaj</button>
</div>
<div class="col-6">
<p>Prosimo, preverite, če so vneseni podatki ustrezni in besedila prava. Naknadno spreminjanje ne bo več mogoče.</p>
</div>
</div>
</form>
</div>
<div id="popup-terms" style="display: none">
<div id="popup-terms-text">
</div>
<button id="button-submit-cancel" class="button-terms" style="background: #ff2d2d;">Prekliči</button>
<button id="button-submit-final" class="button-terms">Oddaj</button>
</div>
<br/><br/><br/><br/><br/><br/><br/>
<footer>
<div class="container">
<div class="row">
<div class="col-6">
<p class="mb-3.5 font-medium text-sm">slovenščina.eu</p>
<ul class="text-sm font-light gap-3.5 grid md:grid-cols-2 links-grid">
<li><a class="hover:text-primary" href="https://slovenscina.eu/prevajalnik">Prevajalnik</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razpoznavalnik">Razpoznavalnik</a></li>
<li><a class="hover:text-primary" href="http://terminoloski.slovenscina.eu">Terminološki portal</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/prepoznavanje-imenskih-entitet">Prepoznavanje imenskih entitet</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/ekstrakcija-povezav">Ekstrakcija povezav</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odkrivanje-koreferencnosti">Odkrivanje koreferenčnosti</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/povzemanje">Povzemanje</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odgovarjanje-na-vprasanja">Odgovarjanje na vprašanja</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razdvoumljanje">Razdvoumljanje</a></li>
</ul>
</div>
<div class="col-6">
<div class="row">
<div class="col-4" style="margin-top:0;">
<p><a href="https://rsdo.slovenscina.eu/" style="font-weight:400;">PROJEKT RSDO</a></p>
</div>
<div class="col-8">
<div>
<div class="logos">
<img src="{{ROUTE_PREFIX}}/static/image/mk.svg" alt="Ministrstvo za kulturo Republike Slovenije">
<img src="{{ROUTE_PREFIX}}/static/image/ess.svg" alt="Evropski sklad za regionalni razvoj">
</div>
<p style="font-size:12px;margin-top:10px;font-weight:300;">Naložbo sofinancirata Republika Slovenija in Evropska unija iz Evropskega sklada za regionalni razvoj</p>
<p style="font-size:12px;">
<a style="font-weight:400;" href="https://www.eu-skladi.si">https://www.eu-skladi.si</a>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</footer>
<!--{{ dropzone.load_js() }}-->
<script src="/static/dropzone.js"></script>
<script src="{{ROUTE_PREFIX}}/static/dropzone.js"></script>
<script>
/////////////////////////
// Dropzone //
@ -142,26 +324,66 @@
var btnSubmit = document.getElementById("button-submit");
var btnSubmitFinal = document.getElementById("button-submit-final");
var btnSubmitCancel = document.getElementById("button-submit-cancel");
var btnZgodovina = document.getElementById("button-zgodovina");
var btnPogodbe = document.getElementById("button-pogodbe");
var elemTermsPopup = document.getElementById("popup-terms");
var termsScrollbox = document.getElementById("popup-terms-text");
var dataConfirmNotification = document.getElementById("data-confirm-notification");
var scrollboxTriggered = false;
var form = document.forms["my-dropzone"];
var errorMessage = document.getElementById("error-message");
var successMessage = document.getElementById("success-message");
var form = document.forms["form-oddaja"];
{% if not institution %}
btnSubmit.disabled = true;
btnSubmit.disabled = true;
{% endif %}
function isEmptyOrSpaces(str){
return str == null || str.match(/^ *$/) !== null;
}
const reEmail = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
function showError(str) {
errorMessage.querySelector("p").textContent = str;
errorMessage.style.display = "block";
window.scroll({
top: 0,
behavior: 'smooth'
});
}
function showSuccess(str) {
successMessage.querySelector("p").textContent = str;
successMessage.style.display = "block";
window.scroll({
top: 0,
behavior: 'smooth'
});
}
//onready
selectPredmet.addEventListener("change", function(e) {
var predmetCustomBox = document.getElementById("predmet-custom-box").closest('.row');
if (selectPredmet.value.startsWith("D")) {
predmetCustomBox.style.maxHeight = "150px";
} else {
predmetCustomBox.style.maxHeight = "0px";
}
});
selectVrsta.addEventListener("change", function(e) {
var vrstaCustomBox = document.getElementById("vrsta-custom-box").closest('.row');
if (selectVrsta.value == "R") {
vrstaCustomBox.style.maxHeight = "150px";
} else {
vrstaCustomBox.style.maxHeight = "0px";
}
});
var event = new CustomEvent("change");
selectPredmet.dispatchEvent(event);
selectVrsta.dispatchEvent(event);
Dropzone.options.myDropzone = { // The camelized version of the ID of the form element
url: "../upload",
url: "{{ROUTE_PREFIX}}/upload",
autoProcessQueue: false,
uploadMultiple: true,
parallelUploads: 20,
@ -170,38 +392,24 @@
timeout: 5000000, // milliseconds
acceptedFiles: ".txt, .csv, .pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .jpg, .jpeg, .png",
maxFiles: 20,
dictDefaultMessage: `Kliknite ali odložite datoteke sem.`,
previewsContainer: "#dropzone-previews",
dictDefaultMessage: "Kliknite to polje ali povlecite datoteke vanj.",
dictFallbackMessage: "Vaš brskalnik ne podpira izbiranje datotek z odlaganjem (\"drag & drop\").",
dictInvalidFileType: "Datoteka je napačnega formata.",
dictFileTooBig: "Datoteke je prevelika {{filesize}}. Največja dovoljena velikost: {{maxFilesize}}MiB.",
dictResponseError: "Napaka strežnika: {{statusCode}}",
dictMaxFilesExceeded: "Ne morete naložiti več datotek.",
dictCancelUpload: "Prekini prenos",
dictRemoveFile: "Odstrani datoteko",
dictCancelUpload: "",
dictRemoveFile: "",
dictCancelUploadConfirmation: "Ali res želite odstraniti to datoteko?",
dictUploadCanceled: "Prenos prekinjen",
addRemoveLinks: true,
// The setting up of the dropzone
init: function() {
var dz = this;
selectPredmet.addEventListener("change", function(e) {
var predmetCustomBox = document.getElementById("predmet-custom-box");
if (selectPredmet.value.startsWith("drug")) {
predmetCustomBox.style.display = "inherit";
} else {
predmetCustomBox.style.display = "none";
}
});
selectVrsta.addEventListener("change", function(e) {
var vrstaCustomBox = document.getElementById("vrsta-custom-box");
if (selectVrsta.value == "delo-v-razredu") {
vrstaCustomBox.style.display = "inherit";
} else {
vrstaCustomBox.style.display = "none";
}
});
dataConfirmNotification.style.display = "none";
errorMessage.style.display = "none";
successMessage.style.display = "none";
btnSubmit.addEventListener("click", function(e) {
// Make sure that the form isn't actually being sent.
@ -209,6 +417,7 @@
e.stopPropagation();
// Check form validity.
var regija = form["regija"].value;
var program = form["program"].value;
var predmet = form["predmet"].value;
var predmetCustom = form["predmet-custom"].value;
@ -218,27 +427,22 @@
var solskoLeto = form["solsko-leto"].value;
var jezikovniPopravki = form["jezikovni-popravki"].value;
if (predmet.startsWith("drug") && isEmptyOrSpaces(predmetCustom)) {
alert("Polje za predmet ne more biti prazno!");
} else if (vrsta === "delo-v-razredu" && isEmptyOrSpaces(vrstaCustom)) {
alert("Polje za vrsto besedila ne more biti prazno!");
if (predmet.startsWith("D") && isEmptyOrSpaces(predmetCustom)) {
showError("Polje za predmet ne more biti prazno!");
} else if (vrsta === "R" && isEmptyOrSpaces(vrstaCustom)) {
showError("Polje za vrsto besedila ne more biti prazno!");
} else if (dataConfirmNotification.style.display == "none") {
dataConfirmNotification.style.display = "inherit";
btnSubmit.textContent = "Potrdi";
btnSubmit.style.display = "none";
} else {
// Then make terms popup visible
//btnSubmit.disabled = true;
//btnSubmitFinal.disabled = true;
//elemTermsPopup.style.display = "inline";
//scrollboxtriggered = false;
// Hand off data to dropzone
dz.processQueue();
//dz.processQueue();
// Clear fields and hide popup agian
dataConfirmNotification.style.display = "none";
btnSubmit.textContent = "Oddaj";
form.reset();
//form.reset();
}
});
@ -247,73 +451,56 @@
btnSubmitFinal.addEventListener("click", function(e) {
// Hand off data to dropzone
dz.processQueue();
// Clear fields and hide popup agian
btnSubmit.disabled = false;
elemTermsPopup.style.display = "none";
dataConfirmNotification.style.display = "none";
btnSubmit.textContent = "Oddaj";
form.reset();
scrollboxTriggered = false;
});
btnSubmitCancel.addEventListener("click", function(e) {
btnSubmit.disabled = false;
scrollboxTriggered = false;
elemTermsPopup.style.display = "none";
});
btnZgodovina.addEventListener("click", function(e) {
e.preventDefault();
e.stopPropagation();
window.location.replace("../zgodovina");
});
btnPogodbe.addEventListener("click", function(e) {
e.preventDefault();
e.stopPropagation();
window.location.replace("../pogodbe");
});
// Enable final submit button only if user scrolls to the end of the terms.
function checkScrollboxTrigger(event) {
var element = event.target;
if (!scrollboxTriggered
&& element.scrollHeight - element.scrollTop <= element.clientHeight + 50
) {
scrollboxTriggered = true;
btnSubmitFinal.disabled = false;
}
}
termsScrollbox.addEventListener('scroll', function(event) {
checkScrollboxTrigger(event);
});
termsScrollbox.addEventListener("mouseenter", function(event) {
checkScrollboxTrigger(event);
});
// Listen to the sendingmultiple event. In this case, it's the sendingmultiple event instead
// Listen to the sendingmultiple event. In this case, it's the sendingmultiple event instead
// of the sending event because uploadMultiple is set to true.
this.on("sendingmultiple", function() {
// Gets triggered when the form is actually being sent.
// Hide the success button or the complete form.
});
this.on("successmultiple", function(files, response) {
showSuccess(response);
dz.removeAllFiles();
dataConfirmNotification.style.display = "none";
btnSubmit.style.display = "";
return;
// Gets triggered when the files have successfully been sent.
// Redirect user or notify of success.
alert("Odgovor strežnika: " + response);
location.reload();
});
this.on("errormultiple", function(files, response) {
// Gets triggered when there was an error sending the files.
// Maybe show form again, and notify user of error
});
this.on("sending", function(file, xhr, formData) {
formData.append("regija",form["regija"].value);
formData.append("program",form["program"].value);
formData.append("predmet",form["predmet"].value);
formData.append("predmet-custom",form["predmet-custom"].value);
formData.append("letnik",form["letnik"].value);
formData.append("vrsta",form["vrsta"].value);
formData.append("vrsta-custom",form["vrsta-custom"].value);
formData.append("solsko-leto",form["solsko-leto"].value);
formData.append("jezikovni-popravki",form["jezikovni-popravki"].value);
});
},
uploadprogress: function(file, progress, bytesSent) {
if (file.previewElement) {
//console.log(progress);
var progressElement = file.previewElement.querySelector("[data-dz-uploadprogress]");
progressElement.style.width = progress + "%";
//progressElement.querySelector(".progress-text").textContent = progress + "%";
}
}
}
</script>
</body>

View File

@ -3,170 +3,290 @@
<head>
<meta charset="UTF-8">
<title>Portal za oddajanje besedil</title>
<link rel="stylesheet" href="/static/style.css" type="text/css">
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/header.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/form.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/simple-grid.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/contracts.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/footer.css" type="text/css">
</head>
<body>
<a href="../logout">Odjavi se</a>
{% if is_institution_coordinator %}
<br><a href="../manage-institution">Upravljaj z institucijo</a>
{% endif %}
{% if is_admin %}
<br><a href="../admin">Administracijski meni</a>
{% endif %}
<br><a href="mailto:email@example.com">Pomoč</a>
<div class="bg"></div>
<div id="main-window">
<div id="rect1">
<div style="padding: 20px;">
<div id="logo-container">
<img src="/static/image/logo.svg" alt="logo"/>
</div>
<h1 id="title" style="font-size: 25px; position: relative;">Korpus ŠOLAR</h1>
<div class="selection-tabs">
<button onclick="window.location.replace('../oddaja');" class="selection-tab-button">ODDAJA</button>
<button onclick="window.location.replace('../zgodovina');" class="selection-tab-button">ZGODOVINA</button>
<button onclick="window.location.replace('../pogodbe');" class="selection-tab-button selected">POGODBE</button>
</div>
</div>
{% with messages = get_flashed_messages() %}
{% if messages %}
<div class="message-notification">
{{ messages[0] }}
</div>
<div id="contract-container" style="height: 250px;">
{% else %}
<div id="contract-container">
<header>
<div class="logo"><a href="{{ROUTE_PREFIX}}/"><img src="{{ROUTE_PREFIX}}/static/image/logo-white.svg"/></a></div>
<div class="menu-items">
{% if is_institution_coordinator %}
<a href="{{ROUTE_PREFIX}}/manage-institution">Upravljaj z ekipo</a>
{% endif %}
{% endwith %}
{% if is_admin %}
<a href="{{ROUTE_PREFIX}}/admin">Administracijski meni</a>
{% endif %}
<a href="https://rsdo.slovenscina.eu/zbiranje-besedil-za-korpus-solar" target="_blank">Več informacij o sodelovanju</a>
<a href="{{ROUTE_PREFIX}}/about">O orodju</a>
<a href="{{ROUTE_PREFIX}}/logout">Odjava</a>
</div>
</header>
<div class="container" style="margin-top:8rem;">
<div class="row">
<div class="col-12">
<h1 class="title">Korpus Šolar</h1>
<p class="subtitle"></p>
{% if contract_school %}
<div class="contract-item">
<img src="/static/image/contract.png" alt="contract" class="contract-item-icon"/>
<div class="contract-item-title">Pogodba s šolo</div>
<div class="contract-item-data">{{contract_school.original_filename}}</div>
<div class="contract-item-data">DODANO: {{contract_school.timestamp}}</div>
<a href="../pogodbe-institucije/{{ contract_school.file_contract }}.pdf" class="contract-item-button">Prenesi</a>
<div class="tab-nav">
<a href="{{ROUTE_PREFIX}}/oddaja">Oddaja besedil</a>
<a href="{{ROUTE_PREFIX}}/zgodovina">Zgodovina sodelovanja</a>
<a href="{{ROUTE_PREFIX}}/pogodbe" class="active">Ekipa</a>
</div>
</br>
{% endif %}
{% for item in contracts_students %}
<div class="contract-item">
<img src="/static/image/contract.png" alt="contract" class="contract-item-icon"/>
<div class="contract-item-title" style="font-size: 12px;">{{item.original_filename}}</div>
<div class="contract-item-data">Pogodba o prenosu lastništva</div>
<div class="contract-item-data">DODANO: {{item.timestamp}}</div>
<a href="../pogodbe-ucencistarsi/{{ item.file_contract }}.pdf" class="contract-item-button">Prenesi</a>
</div>
</div>
<!--<div class="row">
<div class="col-12">
<h2>Sodelujoči</h2>
</div>
</div>-->
<div class="row">
<div class="col-6">
<h2>Sodelujoči</h2>
{% for u in institution_users %}
<div class="team-item">
<div class="team-item-name">{{u.name}} <span class="team-item-role">{{role_map[u.id]}}</span></div>
</div>
</br>
{% endfor %}
</div>
</br>
</br>
{% if show_upload_form %}
<div style="padding: 20px; position: absolute; top: 500px; width: 89%;">
<div class="section-desc">Oddaj pogodbo</div>
<form action="../pogodbe" method="post" enctype="multipart/form-data">
{% if enable_upload_school_contract %}
<div style="display:flex; flex-direction: row; justify-content: left; align-items: center">
<label style="width: 80%; text-align: right;" for="sola">Pogodba s šolo</label>
<input style="width: 20%;" type="radio" id="sola" name="tip-pogodbe" value="sola">
{% if cooperation_history |length > 0 %}
<h2 style="margin-top:2rem">Zgodovina sprememb</h2>
{% for item in cooperation_history %}
<div class="team-item">
<div class="team-item-name">
{{item.name}}
<span class="team-item-role" style="margin-left:0">{{item.timestamp.strftime('%d. %m. %Y')}} postane {% if item.role == "coordinator"%}koordinator/-ka{% elif item.role == "mentor" %}mentor/-ica{% elif item.role == "other" %}druga vloga{% endif %}</span>
</div>
{% else %}
<div style="display:flex; flex-direction: row; justify-content: left; align-items: center">
<label style="width: 80%; text-align: right;" for="sola">Pogodba s šolo</label>
<input style="width: 20%;"type="radio" id="sola" name="tip-pogodbe" value="sola" disabled>
</div>
{% endif %}
<div style="display:flex; flex-direction: row; justify-content: left; align-items: center">
<label style="width: 80%; text-align: right;" for="ucenci-starsi">Pogodba z učenci / starši</label>
<input style="width: 20%;" type="radio" id="ucenci-starsi" name="tip-pogodbe" value="ucenci-starsi" checked>
</div>
<input style="font-size: 10px;" type="file" id="file-contract" name="file[]" multiple="">
<button style="float: right;" type="submit">Oddaj pogodbo</button>
</form>
</div>
{% endif %}
</div>
<div id="rect2" class="mock-side">
<div id="collaborators-container">
<div class="container-title">Sodelujoči</div>
<div style="overflow-y: auto;">
{% for collaborator in collaborators %}
<div class="collaborators-item">
<div class="collaborators-item-name">{{collaborator.name}}</div>
{% if collaborator.id in cooperation_history %}
{% if cooperation_history[collaborator.id]["coordinator"]|length > 0 %}
<div class="collaborators-item-years"><b>Vodenje:</b> {% for item in cooperation_history[collaborator.id]["coordinator"] %}
{% if loop.index != 1 %}, {% endif %}
{{item[0]}}
{% endfor %}</div>
{% endif %}
{% if cooperation_history[collaborator.id]["mentor"]|length > 0 %}
<div class="collaborators-item-years"><b>Mentorstvo:</b> {% for item in cooperation_history[collaborator.id]["mentor"] %}
{% if loop.index != 1 %}, {% endif %}
{{item[0]}}
{% endfor %}</div>
{% endif %}
{% if cooperation_history[collaborator.id]["other"]|length > 0 %}
<div class="collaborators-item-years"><b>Drugo:</b> {% for item in cooperation_history[collaborator.id]["other"] %}
{% if loop.index != 1 %}, {% endif %}
{{item[0]}}
{% endfor %}</div>
{% endif %}
{% endif %}
</div>
{% endfor %}
</div>
{% endfor %}
{% endif %}
</div>
<div id="awards-container">
<div class="container-title">Sodelovanje v letih</div>
<div style="overflow-y: auto; margin: auto; width: 100%; height: 200px;">
{% if cooperation_history.keys()|length > 0 %}
{% if user_id in cooperation_history %}
{% for item in cooperation_history[user_id]['coordinator'] %}
<div style="border-bottom: 2px solid #c4c4c4; min-height: 50px; margin-bottom: 10px;">
<img src="/static/image/star.png" alt="star" style="float: left; width: 40px;"/>
<div class="collaborators-item-name"
style="float: right; width: 250px; text-align: left; margin-left: 20px;text-overflow: ellipsis; overflow: hidden; white-space: nowrap;">
{{item[1]}}
</div>
<div class="collaborators-item-name"
style="float: right; width: 250px; text-align: left; margin-left: 20px;">
{{item[0]}}
</div>
</div>
{% endfor %}
{% for item in cooperation_history[user_id]['mentor'] %}
<div style="border-bottom: 2px solid #c4c4c4; min-height: 50px; margin-bottom: 10px;">
<img src="/static/image/star.png" alt="star" style="float: left; width: 40px;"/>
<div class="collaborators-item-name"
style="float: right; width: 250px; text-align: left; margin-left: 20px;text-overflow: ellipsis; overflow: hidden; white-space: nowrap;">
{{item[1]}}
</div>
<div class="collaborators-item-name"
style="float: right; width: 250px; text-align: left; margin-left: 20px;">
{{item[0]}}
</div>
</div>
{% endfor %}
{% for item in cooperation_history[user_id]['other'] %}
<div style="border-bottom: 2px solid #c4c4c4; min-height: 50px; margin-bottom: 10px;">
<img src="/static/image/star.png" alt="star" style="float: left; width: 40px;"/>
<div class="collaborators-item-name"
style="float: right; width: 250px; text-align: left; margin-left: 20px;text-overflow: ellipsis; overflow: hidden; white-space: nowrap;">
{{item[1]}}
</div>
<div class="collaborators-item-name"
style="float: right; width: 250px; text-align: left; margin-left: 20px;">
{{item[0]}}
</div>
</div>
{% endfor %}
{% endif %}
{% endif %}
<div class="col-6">
<div id="my_dataviz_title">
<h2>Število oddaj na uporabnika</h2>
<div id="my_dataviz"></div>
</div>
<div id="my_dataviz__region_title">
<h2>Število vseh oddaj po regijah</h2>
<div id="my_dataviz_region">
</div>
<div>
<div style="display:inline-block;width:12px;height:12px;background:#006CB7"></div>
<p style="display:inline-block">Osnovne šole</p>
<div style="margin-left:32px;display:inline-block;width:12px;height:12px;background:#B86D00"></div>
<p style="display:inline-block">Srednje šole</p>
</div>
</div>
</div>
</div>
</div>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<footer>
<div class="container">
<div class="row">
<div class="col-6">
<p class="mb-3.5 font-medium text-sm">slovenščina.eu</p>
<ul class="text-sm font-light gap-3.5 grid md:grid-cols-2 links-grid">
<li><a class="hover:text-primary" href="https://slovenscina.eu/prevajalnik">Prevajalnik</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razpoznavalnik">Razpoznavalnik</a></li>
<li><a class="hover:text-primary" href="http://terminoloski.slovenscina.eu">Terminološki portal</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/prepoznavanje-imenskih-entitet">Prepoznavanje imenskih entitet</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/ekstrakcija-povezav">Ekstrakcija povezav</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odkrivanje-koreferencnosti">Odkrivanje koreferenčnosti</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/povzemanje">Povzemanje</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odgovarjanje-na-vprasanja">Odgovarjanje na vprašanja</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razdvoumljanje">Razdvoumljanje</a></li>
</ul>
</div>
<div class="col-6">
<div class="row">
<div class="col-4" style="margin-top:0;">
<p><a href="https://rsdo.slovenscina.eu/" style="font-weight:400;">PROJEKT RSDO</a></p>
</div>
<div class="col-8">
<div>
<div class="logos">
<img src="{{ROUTE_PREFIX}}/static/image/mk.svg" alt="Ministrstvo za kulturo Republike Slovenije">
<img src="{{ROUTE_PREFIX}}/static/image/ess.svg" alt="Evropski sklad za regionalni razvoj">
</div>
<p style="font-size:12px;margin-top:10px;font-weight:300;">Naložbo sofinancirata Republika Slovenija in Evropska unija iz Evropskega sklada za regionalni razvoj</p>
<p style="font-size:12px;">
<a style="font-weight:400;" href="https://www.eu-skladi.si">https://www.eu-skladi.si</a>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</footer>
</body>
<script src="https://d3js.org/d3.v6.js"></script>
<style>
#my_dataviz .tick line{
visibility:hidden;
}
#my_dataviz path.domain{
visibility:hidden;
}
#my_dataviz_region .tick line{
visibility:hidden;
}
#my_dataviz_region path.domain{
visibility:hidden;
}
</style>
<script>
var data;
// Parse the Data
d3.json("/topuploads-institution/{{institution_id}}").then(function(jsondata) {
if(Object.keys(jsondata).length < 1) {
document.getElementById("my_dataviz_title").remove();
return;
}
data = [];
console.log(Object.keys(jsondata).length);
var margin = {top: 20, right: 0, bottom: 40, left: 0};
var width = document.getElementById("my_dataviz").clientWidth - margin.left - margin.right;
var height = Object.keys(jsondata).length * 56;
var svg = d3.select("#my_dataviz")
.append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.style("overflow","visible")
.append("g")
.attr("transform",
"translate(" + margin.left + "," + margin.top + ")");
for(var key in jsondata) {
data.push({'name': key, 'value':jsondata[key]});
}
console.log(data);
// Add X axis
var x = d3.scaleLinear()
.domain([0,d3.max(data, function (d) { return d.value})])
.range([ 0, width]);
svg.append("g")
.attr("transform", "translate(0," + height + ")")
.call(d3.axisBottom(x)/*.ticks(5)*/)
.selectAll("text")
.style("text-anchor", "center");
// Y axis
var y = d3.scaleBand()
.range([ 0, data.length*56 ])
.domain(data.map(function(d) { return d.name; }))
.padding(0);
svg.append("g")
.call(d3.axisLeft(y))
.selectAll("text")
.style("text-anchor", "start")
.style("font-size", "14px")
.attr("transform", "translate(8,-36)");
//Bars
svg.selectAll("myRect")
.data(data)
.enter()
.append("rect")
.attr("x", x(0) )
.attr("y", function(d) { return y(d.name); })
.attr("width", function(d) { return x(d.value); })
.attr("height", 32 )
.attr("fill", "#006CB7");
})
</script>
<script>
var data;
// Parse the Data
d3.json("/uploadstats-per-region").then(function(jsondata) {
data = [];
console.log(Object.keys(jsondata).length);
var margin = {top: 20, right: 0, bottom: 40, left: 0};
var width = document.getElementById("my_dataviz_region").clientWidth - margin.left - margin.right;
var height = Object.keys(jsondata).length * 56;
var svg = d3.select("#my_dataviz_region")
.append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.style("overflow","visible")
.append("g")
.attr("transform",
"translate(" + margin.left + "," + margin.top + ")");
for(var key in jsondata) {
data.push({'name': key, 'value':jsondata[key]});
}
console.log(data);
// Add X axis
var x = d3.scaleLinear()
.domain([0,d3.max(data, function (d) { return Math.max(...d.value)})])
.range([ 0, width]);
svg.append("g")
.attr("transform", "translate(0," + height + ")")
.call(d3.axisBottom(x))
.selectAll("text")
.style("text-anchor", "center");
// Y axis
var y = d3.scaleBand()
.range([ 0, data.length*56 ])
.domain(data.map(function(d) { return d.name; }))
.padding(0);
svg.append("g")
.call(d3.axisLeft(y))
.selectAll("text")
.style("text-anchor", "start")
.style("font-size", "14px")
.attr("transform", "translate(8,-36)");
//Bars
svg.selectAll("myRect")
.data(data)
.enter()
.append("rect")
.attr("x", x(0) )
.attr("y", function(d) { return y(d.name); })
.attr("width", function(d) { return x(d.value[0]); })
.attr("height", 16 )
.attr("fill", "#006CB7");
svg.selectAll("myRect")
.data(data)
.enter()
.append("rect")
.attr("x", x(0) )
.attr("y", function(d) { return y(d.name); })
.attr("width", function(d) { return x(d.value[1]); })
.attr("height", 16 )
.attr("transform", "translate(0,16)")
.attr("fill", "#B86D00");
})
</script>
</html>

View File

@ -3,67 +3,128 @@
<head>
<meta charset="UTF-8">
<title>Portal ŠOLAR</title>
<link rel="stylesheet" href="/static/style.css" type="text/css">
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/login-styles.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/utils.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/footer.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/simple-grid.css" type="text/css">
</head>
<body>
<div id="main-window">
<div id="rect1">
<div style="padding: 50px;">
<div id="logo-container">
<img src="/static/image/logo.svg" alt="logo"/>
<div class="background">
<div class="panel login-panel">
<div class="panel-logo">
<img src="{{ROUTE_PREFIX}}/static/image/logo.svg" alt="logo"/>
</div>
<h2 class="text-center">Portal za oddajanje besedil</h2>
<div class="line"></div>
<h1 class="text-center">Korpus ŠOLAR</h1>
<div class="text-center m-b-3"><em>Zbiranje besedil za korpus Šolar poteka <a href="https://rsdo.slovenscina.eu/zbiranje-besedil-za-korpus-solar" target="_blank" style="color:#006CB7">po naslednjem postopku</a>, ki prinaša tudi točke za napredovanje v pedagoški naziv.</em></div>
<h1 class="m-b-3">Registracija</h1>
{% with messages = get_flashed_messages() %}
{% if messages %}
<div class="alert">
<img src="{{ROUTE_PREFIX}}/static/image/alert.svg" alt="alert"/>
<p>{{ messages[0] }}</p>
</div>
{% endif %}
{% endwith %}
<div>
<form method="POST" action="{{ROUTE_PREFIX}}/register" class="m-b-2">
<div class="input-wrapper">
<img src="{{ROUTE_PREFIX}}/static/image/user.svg" alt="user" class="input-icon"/>
<div class="input-floating-label">
<label>Ime in priimek</label>
<input type="name" name="name" autofocus="">
</div>
</div>
<h1 id="title">Portal za oddajanje besedil</h1>
<h2 id="subtitle">Korpus Šolar</h2>
<div class="form-text"><em>Zbiranje besedil za korpus Šolar poteka po naslednjem postopku, ki prinaša tudi točke za napredovanje.</em></div>
<a href="../login" class="contract-item-button" style="float: none;">Nazaj na prijavo</a>
<h3 id="title" style="font-size: 27px; text-align: left;">Registracija</h3>
<div>
{% with messages = get_flashed_messages() %}
{% if messages %}
<div>
{{ messages[0] }}
</div>
{% endif %}
{% endwith %}
<form method="POST" action="../register">
<div>
<div>
<input type="name" name="name" placeholder="Ime in priimek" autofocus="">
</div>
</div>
<div>
<div>
<input type="email" name="email" placeholder="Email" autofocus="">
</div>
</div>
<div>
<div>
<input type="password" name="password" placeholder="Geslo">
</div>
</div>
<div>
<div>
<input type="institution" name="institution" placeholder="Naziv institucije" autofocus="">
</div>
</div>
<label for="role">Vloga v instituciji</label>
<div class="input-wrapper">
<img src="{{ROUTE_PREFIX}}/static/image/user.svg" alt="user" class="input-icon"/>
<div class="input-floating-label">
<label>Email</label>
<input type="email" name="email">
</div>
</div>
<div class="input-wrapper">
<img src="{{ROUTE_PREFIX}}/static/image/password.svg" alt="user" class="input-icon"/>
<div class="input-floating-label">
<label>Geslo</label>
<input type="password" name="password">
<label class="input-hint">Geslo naj bo dolgo vsaj 8 znakov.</label>
</div>
</div>
<div class="input-wrapper">
<img src="{{ROUTE_PREFIX}}/static/image/user.svg" alt="user" class="input-icon"/>
<div class="input-floating-label">
<label>Naziv institucije</label>
<input type="institution" name="institution">
</div>
</div>
<div class="input-wrapper">
<img src="{{ROUTE_PREFIX}}/static/image/password.svg" alt="user" class="input-icon"/>
<div class="input-floating-label">
<label>Vloga pri zbiranju</label>
<select id="role" name="role" >
<option value="coordinator">Koordinator/-ka</option>
<option value="mentor">Mentor/-ica</option>
<option value="other">Druga vloga</option>
</select>
<button class="button-general" style="margin-top: 20px;">REGISTRACIJA</button>
</form>
</div>
</div>
<button class="btn" style="margin-left: 46px;">REGISTRACIJA</button>
</form>
</div>
<div class="back-to-login">
<img src="{{ROUTE_PREFIX}}/static/image/chevron-left.svg"/>
<a href="{{ROUTE_PREFIX}}/login">Nazaj na prijavo</a>
</div>
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-6">
<p class="mb-3.5 font-medium text-sm">slovenščina.eu</p>
<ul class="text-sm font-light gap-3.5 grid md:grid-cols-2 links-grid">
<li><a class="hover:text-primary" href="https://slovenscina.eu/prevajalnik">Prevajalnik</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razpoznavalnik">Razpoznavalnik</a></li>
<li><a class="hover:text-primary" href="http://terminoloski.slovenscina.eu">Terminološki portal</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/prepoznavanje-imenskih-entitet">Prepoznavanje imenskih entitet</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/ekstrakcija-povezav">Ekstrakcija povezav</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odkrivanje-koreferencnosti">Odkrivanje koreferenčnosti</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/povzemanje">Povzemanje</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odgovarjanje-na-vprasanja">Odgovarjanje na vprašanja</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razdvoumljanje">Razdvoumljanje</a></li>
</ul>
</div>
<div class="col-6">
<div class="row">
<div class="col-4" style="margin-top:0;">
<p><a href="https://rsdo.slovenscina.eu/" style="font-weight:400;">PROJEKT RSDO</a></p>
</div>
<div class="col-8">
<div>
<div class="logos">
<img src="{{ROUTE_PREFIX}}/static/image/mk.svg" alt="Ministrstvo za kulturo Republike Slovenije">
<img src="{{ROUTE_PREFIX}}/static/image/ess.svg" alt="Evropski sklad za regionalni razvoj">
</div>
<p style="font-size:12px;margin-top:10px;font-weight:300;">Naložbo sofinancirata Republika Slovenija in Evropska unija iz Evropskega sklada za regionalni razvoj</p>
<p style="font-size:12px;">
<a style="font-weight:400;" href="https://www.eu-skladi.si">https://www.eu-skladi.si</a>
</p>
</div>
</div>
</div>
</div>
</div>
<div id="rect2" class="mock-side">
</div>
</div>
</footer>
</body>

View File

@ -3,36 +3,81 @@
<head>
<meta charset="UTF-8">
<title>Portal ŠOLAR</title>
<link rel="stylesheet" href="/static/style.css" type="text/css">
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/login-styles.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/utils.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/footer.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/simple-grid.css" type="text/css">
</head>
<body>
<div id="main-window">
<div id="rect1">
<div style="padding: 50px;">
<div id="logo-container">
<img src="/static/image/logo.svg" alt="logo"/>
<div class="background">
<div class="panel login-panel">
<div class="panel-logo">
<img src="{{ROUTE_PREFIX}}/static/image/logo.svg" alt="logo"/>
</div>
<h1 class="m-b-3">Ponastavitev gesla - ŠOLAR</h1>
<div>
<form method="POST" action="" class="m-b-2">
<div class="input-wrapper">
<img src="{{ROUTE_PREFIX}}/static/image/password.svg" alt="user" class="input-icon"/>
<div class="input-floating-label">
<label>Novo geslo</label>
<input type="password" name="new_password">
<label class="input-hint">Geslo naj bo dolgo vsaj 8 znakov.</label>
</div>
</div>
<h3 id="title" style="font-size: 27px; text-align: left;">Ponastavitev gesla - ŠOLAR</h3>
<div>
{% with messages = get_flashed_messages() %}
{% if messages %}
<button class="btn" style="margin-left: 46px;">Ponastavi</button>
</form>
{% with messages = get_flashed_messages() %}
{% if messages %}
<div class="alert">
<img src="{{ROUTE_PREFIX}}/static/image/alert.svg" alt="alert"/>
<p>{{ messages[0] }}</p>
</div>
{% endif %}
{% endwith %}
</div>
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-6">
<p class="mb-3.5 font-medium text-sm">slovenščina.eu</p>
<ul class="text-sm font-light gap-3.5 grid md:grid-cols-2 links-grid">
<li><a class="hover:text-primary" href="https://slovenscina.eu/prevajalnik">Prevajalnik</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razpoznavalnik">Razpoznavalnik</a></li>
<li><a class="hover:text-primary" href="http://terminoloski.slovenscina.eu">Terminološki portal</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/prepoznavanje-imenskih-entitet">Prepoznavanje imenskih entitet</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/ekstrakcija-povezav">Ekstrakcija povezav</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odkrivanje-koreferencnosti">Odkrivanje koreferenčnosti</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/povzemanje">Povzemanje</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odgovarjanje-na-vprasanja">Odgovarjanje na vprašanja</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razdvoumljanje">Razdvoumljanje</a></li>
</ul>
</div>
<div class="col-6">
<div class="row">
<div class="col-4" style="margin-top:0;">
<p><a href="https://rsdo.slovenscina.eu/" style="font-weight:400;">PROJEKT RSDO</a></p>
</div>
<div class="col-8">
<div>
{{ messages[0] }}
</div>
{% endif %}
{% endwith %}
<form method="POST" action="">
<div>
<div>
<input type="password" name="new_password" placeholder="Novo geslo">
<div class="logos">
<img src="{{ROUTE_PREFIX}}/static/image/mk.svg" alt="Ministrstvo za kulturo Republike Slovenije">
<img src="{{ROUTE_PREFIX}}/static/image/ess.svg" alt="Evropski sklad za regionalni razvoj">
</div>
<p style="font-size:12px;margin-top:10px;font-weight:300;">Naložbo sofinancirata Republika Slovenija in Evropska unija iz Evropskega sklada za regionalni razvoj</p>
<p style="font-size:12px;">
<a style="font-weight:400;" href="https://www.eu-skladi.si">https://www.eu-skladi.si</a>
</p>
</div>
<button class="button-general" style="margin-top: 20px;">PONASTAVI</button>
</form>
</div>
</div>
</div>
</div>
<div id="rect2" class="mock-side">
</div>
</div>
</footer>
</body>

View File

@ -3,120 +3,254 @@
<head>
<meta charset="UTF-8">
<title>Portal za oddajanje besedil</title>
<link rel="stylesheet" href="/static/style.css" type="text/css">
<script src="/static/chart.js"></script>
<!--<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/style.css" type="text/css">-->
<script src="{{ROUTE_PREFIX}}/static/chart.js"></script>
<link rel="icon" href="/static/favicon.ico" type="image/x-icon" >
<link rel="icon" href="static/favicon.svg" sizes="any" type="image/svg+xml">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/header.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/form.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/simple-grid.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/history.css" type="text/css">
<link rel="stylesheet" href="{{ROUTE_PREFIX}}/static/css/footer.css" type="text/css">
</head>
<body>
<a href="../logout">Odjavi se</a>
{% if is_institution_coordinator %}
<br><a href="../manage-institution">Upravljaj z institucijo</a>
{% endif %}
{% if is_admin %}
<br><a href="../admin">Administracijski meni</a>
{% endif %}
<br><a href="mailto:email@example.com">Pomoč</a>
<div class="bg"></div>
<div id="main-window">
<div id="rect1">
<div style="padding: 20px;">
<div id="logo-container">
<img src="/static/image/logo.svg" alt="logo"/>
</div>
<h1 id="title" style="font-size: 25px; position: relative;">Korpus ŠOLAR</h1>
<div class="selection-tabs">
<button onclick="window.location.replace('../oddaja');" class="selection-tab-button">ODDAJA</button>
<button onclick="window.location.replace('../zgodovina');" class="selection-tab-button selected">ZGODOVINA</button>
<button onclick="window.location.replace('../pogodbe');" class="selection-tab-button">POGODBE</button>
<header>
<div class="logo"><a href="{{ROUTE_PREFIX}}/"><img src="{{ROUTE_PREFIX}}/static/image/logo-white.svg"/></a></div>
<div class="menu-items">
{% if is_institution_coordinator %}
<a href="{{ROUTE_PREFIX}}/manage-institution">Upravljaj z ekipo</a>
{% endif %}
{% if is_admin %}
<a href="{{ROUTE_PREFIX}}/admin">Administracijski meni</a>
{% endif %}
<a href="https://rsdo.slovenscina.eu/zbiranje-besedil-za-korpus-solar" target="_blank">Več informacij o sodelovanju</a>
<a href="{{ROUTE_PREFIX}}/about">O orodju</a>
<a href="{{ROUTE_PREFIX}}/logout">Odjava</a>
</div>
</header>
<div class="container" style="margin-top:8rem;">
<div class="row">
<div class="col-12">
<h1 class="title">Korpus Šolar</h1>
<p class="subtitle"></p>
<div class="tab-nav">
<a href="{{ROUTE_PREFIX}}/oddaja">Oddaja besedil</a>
<a href="{{ROUTE_PREFIX}}/zgodovina" class="active">Zgodovina sodelovanja</a>
<a href="{{ROUTE_PREFIX}}/pogodbe">Ekipa</a>
</div>
</div>
<div id="history-container" style="padding: 20px;">
{% for item in upload_history %}
<div class="history-item">
<div class="history-item-date">{{ item.timestamp }}</div>
<div class="history-item-uploader">{{ uploader_names[loop.index - 1] }}</div>
<div class="history-item-filecount">Št. datotek: {{ item.upload_file_hashes|length }}</div>
<div class="history-item-desc">
[
{% set began = False %}
{% if institution_names[loop.index - 1] %}
{% if began %}, {% endif %} {{ institution_names[loop.index - 1] }}
{% set began = True %}
{% endif %}
{% if item.program %}
{% if began %}, {% endif %} {{ item.program }}
{% set began = True %}
{% endif %}
{% if item.subject %}
{% if began %}, {% endif %} {{ item.subject }}
{% set began = True %}
{% endif %}
{% if item.subject_custom %}
{% if began %}, {% endif %} {{ item.subject_custom }}
{% set began = True %}
{% endif %}
{% if item.grade %}
{% if began %}, {% endif %} {{ item.grade }}
{% set began = True %}
{% endif %}
{% if item.text_type %}
{% if began %}, {% endif %} {{ item.text_type }}
{% set began = True %}
{% endif %}
{% if item.text_type_custom %}
{% if began %}, {% endif %} {{ item.text_type_custom }}
{% set began = True %}
{% endif %}
{% if item.school_year %}
{% if began %}, {% endif %} {{ item.school_year }}
{% set began = True %}
{% endif %}
{% if item.grammar_corrections %}
{% if began %}, {% endif %} {{ item.grammar_corrections }}
{% set began = True %}
{% endif %}
]
</div>
<!--<div class="row">
<div class="col-12">
<h2>Zgodovina naloženih datotek</h2>
</div>
</div>-->
{% set map_program = {
"OS" : "Osnovna šola",
"SSG" : "Splošna in strokovna gimnazija",
"MGP" : "Mednarodni gimnazijski programi",
"ZG" : "Zasebne gimnazije",
"NPI" : "Nižje poklicno izobraževanje",
"SPI" : "Srednje poklicno izobraževanje",
"SSI" : "Srednje strokovno izobraževanje",
"PTI" : "Poklicno-tehnično izobraževanje"
}%}
{% set map_subject = {
"SLO" : "Slovenščina",
"DJP" : "Drugi jezikoslovni predmeti",
"DDP" : "Drugi družboslovni predmeti",
"DNP" : "Drugi naravoslovni predmeti",
"DSP" : "Drugi strokovni predmeti",
"DIP" : "Drugi izbirni ali dodatni predmeti",
}%}
{% set map_text_type = {
"E" : "Esej ali spis",
"PB" : "Praktično besedilo, napisano za oceno",
"T" : "Šolski test",
"R" : "Delo v razredu, ne za oceno",
}%}
{% set map_grammar_corrections = {
"DD" : "Besedilo vsebuje učiteljske popravke",
"N" : "Besedilo ne vsebuje učiteljskih popravkov",
"DN" : "Besedilo vsebuje učiteljske popravke in ne strinjam se z njihovo vključitvijo v korpus",
}%}
{% set map_regions = {
"CE" : "Celje",
"GO" : "Nova Gorica",
"KK" : "Krško",
"KP" : "Koper",
"KR" : "Kranj",
"LJ" : "Ljubljana",
"MB" : "Maribor",
"MS" : "Murska Sobota",
"NM" : "Novo Mesto",
"PO" : "Postojna",
"SG" : "Slovenj Gradec",
}%}
{% if upload_history|length == 0 %}
<div class="row">
<div class="col-6">
<p>Zgodovina sodelovanja je trenutno še prazna.</p>
</div>
</div>
{% endif %}
{% for item in upload_history %}
{% set item_values = [] %}
{% if institution_names[loop.index - 1] %}
{% set item_values = item_values + [institution_names[loop.index - 1]] %}
{% endif %}
{% if item.region %}
{% set item_values = item_values + [map_regions[item.region]] %}
{% endif %}
{% if item.program %}
{% set item_values = item_values + [map_program[item.program]] %}
{% endif %}
{% if item.subject %}
{% set item_values = item_values + [map_subject[item.subject]] %}
{% endif %}
{% if item.subject_custom %}
{% set item_values = item_values + [item.subject_custom] %}
{% endif %}
{% if item.grade %}
{% set item_values = item_values + [item.grade ~ ". razred"] %}
{% endif %}
{% if item.text_type %}
{% set item_values = item_values + [map_text_type[item.text_type]] %}
{% endif %}
{% if item.text_type_custom %}
{% set item_values = item_values + [item.text_type_custom] %}
{% endif %}
{% if item.school_year %}
{% set item_values = item_values + ['20' ~ item.school_year | replace("-", "/")] %}
{% endif %}
{% if item.grammar_corrections %}
{% set item_values = item_values + [map_grammar_corrections[item.grammar_corrections]] %}
{% endif %}
<div class="row">
<div class="col-12">
<div class="history-item">
<div class="history-item-date">Dodano {{ item.timestamp.strftime('%d. %m. %Y') }}</div>
<div class="history-item-uploader">{{ uploader_names[loop.index - 1] }}</div>
<div class="history-item-filecount">Št. datotek: {{ item.upload_file_hashes|length }}</div>
<div class="history-item-chevron"><img src="{{ROUTE_PREFIX}}/static/image/chevron-down.svg"/></div>
<div class="history-item-desc">
{{ item_values | join(" | ") |truncate(120) }}
</div>
<div class="row">
<div class="col-6" style="margin:0">
<div class="history-item-desc-full">
{% for v in item_values %}
{{v}}<br>
{% endfor %}
</div>
</div>
<div class="col-6" style="margin:0">
<div class="history-item-files-full">
{% if item.upload_file_names != None %}
{% for f_name in item.upload_file_names %}
<div class="file-item">
<div class="file-icon"><img src="{{ROUTE_PREFIX}}/static/image/file.svg"/></div>
<a href="getuploadfile/{{item.id}}/{{item.upload_file_hashes[loop.index - 1]}}" class="file-name" {% if item.upload_file_codes != None %}download="{{item.upload_file_codes[loop.index - 1]}}.{{f_name.split('.')[1]}}"{%endif%}>
{% if item.upload_file_codes != None %}
{{item.upload_file_codes[loop.index - 1]}}.{{f_name.split('.')[1]}}
{%else%}
{{f_name}}
{% endif %}
</a>
</br>
{% if item.upload_file_codes != None %}
<!--<div>{{item.upload_file_codes[loop.index - 1]}}</div>-->
{% endif %}
</div>
{% endfor %}
{% else %}
{% for f_hash in item.upload_file_hashes %}
<div class="file-item">
<div class="file-icon"><img src="{{ROUTE_PREFIX}}/static/image/file.svg"/></div>
<a href="getuploadfile/{{item.id}}/{{f_hash}}" class="file-name">{{f_hash}}</a>
</div>
{% endfor %}
{% endif %}
</div>
</div>
</div>
</br>
{% endfor %}
</div>
</div>
</div>
<div id="rect2" class="mock-side">
<canvas id="myChart" width="400" height="400"></canvas>
<script>
function drawChart(data) {
var ctx = document.getElementById('myChart').getContext('2d');
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: Object.keys(data),
datasets: [{
label: 'št. naloženih datotek',
data: Object.values(data),
backgroundColor: 'rgba(54, 162, 235, 1.0)',
borderWidth: 1
}]
},
options: {
plugins: {
title: {
display: true,
text: ''
}
},
scales: {
y: {
beginAtZero: true
}
},
indexAxis: 'y'
}
});
}
fetch('../topuploads').then(r => r.json()).then(j => drawChart(j));
</script>
</div>
{% endfor %}
</div>
<br/><br/><br/><br/><br/><br/><br/>
<footer>
<div class="container">
<div class="row">
<div class="col-6">
<p class="mb-3.5 font-medium text-sm">slovenščina.eu</p>
<ul class="text-sm font-light gap-3.5 grid md:grid-cols-2 links-grid">
<li><a class="hover:text-primary" href="https://slovenscina.eu/prevajalnik">Prevajalnik</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razpoznavalnik">Razpoznavalnik</a></li>
<li><a class="hover:text-primary" href="http://terminoloski.slovenscina.eu">Terminološki portal</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/prepoznavanje-imenskih-entitet">Prepoznavanje imenskih entitet</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/ekstrakcija-povezav">Ekstrakcija povezav</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odkrivanje-koreferencnosti">Odkrivanje koreferenčnosti</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/povzemanje">Povzemanje</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/odgovarjanje-na-vprasanja">Odgovarjanje na vprašanja</a></li>
<li><a class="hover:text-primary" href="https://slovenscina.eu/razdvoumljanje">Razdvoumljanje</a></li>
</ul>
</div>
<div class="col-6">
<div class="row">
<div class="col-4" style="margin-top:0;">
<p><a href="https://rsdo.slovenscina.eu/" style="font-weight:400;">PROJEKT RSDO</a></p>
</div>
<div class="col-8">
<div>
<div class="logos">
<img src="{{ROUTE_PREFIX}}/static/image/mk.svg" alt="Ministrstvo za kulturo Republike Slovenije">
<img src="{{ROUTE_PREFIX}}/static/image/ess.svg" alt="Evropski sklad za regionalni razvoj">
</div>
<p style="font-size:12px;margin-top:10px;font-weight:300;">Naložbo sofinancirata Republika Slovenija in Evropska unija iz Evropskega sklada za regionalni razvoj</p>
<p style="font-size:12px;">
<a style="font-weight:400;" href="https://www.eu-skladi.si">https://www.eu-skladi.si</a>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</footer>
<script>
var toggleOpen = function() {
this.classList.toggle("open");
};
var elements = document.getElementsByClassName("history-item");
for (var i = 0; i < elements.length; i++) {
elements[i].addEventListener('click', toggleOpen, false);
}
var files = document.getElementsByClassName("file-item");
for (var i = 0; i < files.length; i++) {
files[i].addEventListener('click', function(e) {
e.stopPropagation();
}, false);
}
</script>
</body>
</html>