diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 000000000..353145117
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,39 @@
+---
+name: Bug/Problem report
+about: Create a report to help us improve Calibre-Web
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+
+**Describe the bug/problem**
+A clear and concise description of what the bug is. If you are asking for support, please check our [Wiki](https://github.com/janeczku/calibre-web/wiki) if your question is already answered there.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Logfile**
+Add content of calibre-web.log file or the relevant error, try to reproduce your problem with "debug" log-level to get more output.
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**Environment (please complete the following information):**
+ - OS: [e.g. Windows 10/Raspberry Pi OS]
+ - Python version: [e.g. python2.7]
+ - Calibre-Web version: [e.g. 0.6.8 or 087c4c59 (git rev-parse --short HEAD)]:
+ - Docker container: [None/Technosoft2000/Linuxuser]:
+ - Special Hardware: [e.g. Rasperry Pi Zero]
+ - Browser: [e.g. Chrome 83.0.4103.97, Safari 13.3.7, Firefox 68.0.1 ESR]
+
+**Additional context**
+Add any other context about the problem here. [e.g. access via reverse proxy, database background sync, special database location]
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 000000000..6b2b9afcd
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,22 @@
+---
+name: Feature request
+about: Suggest an idea for Calibre-Web
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.gitignore b/.gitignore
index 0ce147573..f06dcd446 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,9 +7,11 @@ __pycache__/
# Distribution / packaging
.Python
env/
+venv/
eggs/
dist/
build/
+vendor/
.eggs/
*.egg-info/
.installed.cfg
@@ -19,16 +21,12 @@ build/
# calibre-web
*.db
*.log
-config.ini
-cps/static/[0-9]*
.idea/
*.bak
*.log.*
-tags
settings.yaml
gdrive_credentials
-
-vendor
client_secrets.json
+
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 000000000..ce2bd7803
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,46 @@
+## How to contribute to Calibre-Web
+
+First of all, we would like to thank you for reading this text. We are happy you are willing to contribute to Calibre-Web.
+
+### **General**
+
+**Communication language** is English. Google translated texts are not as bad as you might think, they are usually understandable, so don't worry if you generate your post that way.
+
+**Calibre-Web** is not **Calibre**. If you are having a question regarding Calibre please post this at their [repository](https://github.com/kovidgoyal/calibre).
+
+**Docker-Containers** of Calibre-Web are maintained by different persons than the people who drive Calibre-Web. If we come to the conclusion during our analysis that the problem is related to Docker, we might ask you to open a new issue at the repository of the Docker Container.
+
+If you are having **Basic Installation Problems** with python or its dependencies, please consider using your favorite search engine to find a solution. In case you can't find a solution, we are happy to help you.
+
+We can offer only very limited support regarding configuration of **Reverse-Proxy Installations**, **OPDS-Reader** or other programs in combination with Calibre-Web.
+
+### **Translation**
+
+Some of the user languages in Calibre-Web having missing translations. We are happy to add the missing texts if you translate them. Create a Pull Request, create an issue with the .po file attached, or write an email to "ozzie.fernandez.isaacs@googlemail.com" with attached translation file. To display all book languages in your native language an additional file is used (iso_language_names.py). The content of this file is auto-generated with the corresponding translations of Calibre, please do not edit this file on your own.
+
+### **Documentation**
+
+The Calibre-Web documentation is hosted in the Github [Wiki](https://github.com/janeczku/calibre-web/wiki). The Wiki is open to everybody, if you find a problem, feel free to correct it. If information is missing, you are welcome to add it. The content will be reviewed time by time. Please try to be consistent with the form with the other Wiki pages (e.g. the project name is Calibre-Web with 2 capital letters and a dash in between).
+
+### **Reporting a bug**
+
+Do not open up a GitHub issue if the bug is a **security vulnerability** in Calibre-Web. Instead, please write an email to "ozzie.fernandez.isaacs@googlemail.com".
+
+Ensure the ***bug was not already reported** by searching on GitHub under [Issues](https://github.com/janeczku/calibre-web/issues). Please also check if a solution for your problem can be found in the [wiki](https://github.com/janeczku/calibre-web/wiki).
+
+If you're unable to find an **open issue** addressing the problem, open a [new one](https://github.com/janeczku/calibre-web/issues/new?assignees=&labels=&template=bug_report.md&title=). Be sure to include a **title** and **clear description**, as much relevant information as possible, the **issue form** helps you providing the right information. Deleting the form and just pasting the stack trace doesn't speed up fixing the problem. If your issue could be resolved, consider closing the issue.
+
+### **Feature Request**
+
+If there is a feature missing in Calibre-Web and you can't find a feature request in the [Issues](https://github.com/janeczku/calibre-web/issues) section, you could create a [feature request](https://github.com/janeczku/calibre-web/issues/new?assignees=&labels=&template=feature_request.md&title=).
+We will not extend Calibre-Web with any more login abilities or add further files storages, or file syncing ability. Furthermore Calibre-Web is made for home usage for company in-house usage, so requests regarding any sorts of social interaction capability, payment routines, search engine or web site analytics integration will not be implemented.
+
+### **Contributing code to Calibre-Web**
+
+Open a new GitHub pull request with the patch. Ensure the PR description clearly describes the problem and solution. Include the relevant issue number if applicable.
+
+In case your code enhances features of Calibre-Web: Create your pull request for the development branch if your enhancement consists of more than some lines of code in a local section of Calibre-Webs code. This makes it easier to test it and check all implication before it's made public.
+
+Please check if your code runs on Python 2.7 (still necessary in 2020) and mainly on python 3. If possible and the feature is related to operating system functions, try to check it on Windows and Linux.
+Calibre-Web is automatically tested on Linux in combination with python 3.7. The code for testing is in a [separate repo](https://github.com/OzzieIsaacs/calibre-web-test) on Github. It uses unit tests and performs real system tests with selenium; it would be great if you could consider also writing some tests.
+A static code analysis is done by Codacy, but it's partly broken and doesn't run automatically. You could check your code with ESLint before contributing, a configuration file can be found in the projects root folder.
diff --git a/README.md b/README.md
index 5f7747093..4ee209f85 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@ Calibre-Web is a web app providing a clean interface for browsing, reading and d
- full graphical setup
- User management with fine-grained per-user permissions
- Admin interface
-- User Interface in dutch, english, french, german, hungarian, italian, japanese, khmer, polish, russian, simplified chinese, spanish, swedish, ukrainian
+- User Interface in czech, dutch, english, finnish, french, german, greek, hungarian, italian, japanese, khmer, polish, russian, simplified chinese, spanish, swedish, turkish, ukrainian
- OPDS feed for eBook reader apps
- Filter and search by titles, authors, tags, series and language
- Create a custom book collection (shelves)
@@ -21,16 +21,18 @@ Calibre-Web is a web app providing a clean interface for browsing, reading and d
- Restrict eBook download to logged-in users
- Support for public user registration
- Send eBooks to Kindle devices with the click of a button
+- Sync your Kobo devices through Calibre-Web with your Calibre library
- Support for reading eBooks directly in the browser (.txt, .epub, .pdf, .cbr, .cbt, .cbz)
-- Upload new books in many formats
-- Support for Calibre custom columns
-- Ability to hide content based on categories for certain users
+- Upload new books in many formats, including audio formats (.mp3, .m4a, .m4b)
+- Support for Calibre Custom Columns
+- Ability to hide content based on categories and Custom Column content per user
- Self-update capability
- "Magic Link" login to make it easy to log on eReaders
+- Login via LDAP, google/github oauth and via proxy authentication
## Quick start
-1. Install dependencies by running `pip install --target vendor -r requirements.txt`.
+1. Install dependencies by running `pip3 install --target vendor -r requirements.txt` (python3.x) or `pip install --target vendor -r requirements.txt` (python2.7).
2. Execute the command: `python cps.py` (or `nohup python cps.py` - recommended if you want to exit the terminal window)
3. Point your browser to `http://localhost:8083` or `http://localhost:8083/opds` for the OPDS catalog
4. Set `Location of Calibre database` to the path of the folder where your Calibre library (metadata.db) lives, push "submit" button\
@@ -46,29 +48,27 @@ Please note that running the above install command can fail on some versions of
## Requirements
-Python 2.7+, python 3.x+
+python 3.x+, (Python 2.7+)
Optionally, to enable on-the-fly conversion from one ebook format to another when using the send-to-kindle feature, or during editing of ebooks metadata:
[Download and install](https://calibre-ebook.com/download) the Calibre desktop program for your platform and enter the folder including program name (normally /opt/calibre/ebook-convert, or C:\Program Files\calibre\ebook-convert.exe) in the field "calibre's converter tool" on the setup page.
-\*** DEPRECATED \*** Support will be removed in future releases
-
-[Download](http://www.amazon.com/gp/feature.html?docId=1000765211) Amazon's KindleGen tool for your platform and place the binary named `kindlegen` in the `vendor` folder.
+[Download](https://github.com/pgaskin/kepubify/releases/latest) Kepubify tool for your platform and place the binary starting with `kepubify` in Linux: `\opt\kepubify` Windows: `C:\Program Files\kepubify`.
## Docker Images
Pre-built Docker images are available in these Docker Hub repositories:
#### **Technosoft2000 - x64**
-+ Docker Hub - [https://hub.docker.com/r/technosoft2000/calibre-web/](https://hub.docker.com/r/technosoft2000/calibre-web/)
++ Docker Hub - [https://hub.docker.com/r/technosoft2000/calibre-web](https://hub.docker.com/r/technosoft2000/calibre-web)
+ Github - [https://github.com/Technosoft2000/docker-calibre-web](https://github.com/Technosoft2000/docker-calibre-web)
Includes the Calibre `ebook-convert` binary.
+ The "path to convertertool" should be set to `/opt/calibre/ebook-convert`
#### **LinuxServer - x64, armhf, aarch64**
-+ Docker Hub - [https://hub.docker.com/r/linuxserver/calibre-web/](https://hub.docker.com/r/linuxserver/calibre-web/)
++ Docker Hub - [https://hub.docker.com/r/linuxserver/calibre-web](https://hub.docker.com/r/linuxserver/calibre-web)
+ Github - [https://github.com/linuxserver/docker-calibre-web](https://github.com/linuxserver/docker-calibre-web)
+ Github - (Optional Calibre layer) - [https://github.com/linuxserver/docker-calibre-web/tree/calibre](https://github.com/linuxserver/docker-calibre-web/tree/calibre)
@@ -83,3 +83,7 @@ Pre-built Docker images are available in these Docker Hub repositories:
# Wiki
For further information, How To's and FAQ please check the [Wiki](https://github.com/janeczku/calibre-web/wiki)
+
+# Contributing to Calibre-Web
+
+Please have a look at our [Contributing Guidelines](https://github.com/janeczku/calibre-web/blob/master/CONTRIBUTING.md)
diff --git a/cps.py b/cps.py
index ca7d7230b..20aa9cac8 100755
--- a/cps.py
+++ b/cps.py
@@ -31,7 +31,7 @@ else:
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'vendor'))
-from cps import create_app
+from cps import create_app, config
from cps import web_server
from cps.opds import opds
from cps.web import web
@@ -41,6 +41,14 @@ from cps.shelf import shelf
from cps.admin import admi
from cps.gdrive import gdrive
from cps.editbooks import editbook
+
+try:
+ from cps.kobo import kobo, get_kobo_activated
+ from cps.kobo_auth import kobo_auth
+ kobo_available = get_kobo_activated()
+except ImportError:
+ kobo_available = False
+
try:
from cps.oauth_bb import oauth
oauth_available = True
@@ -56,8 +64,12 @@ def main():
app.register_blueprint(about)
app.register_blueprint(shelf)
app.register_blueprint(admi)
- app.register_blueprint(gdrive)
+ if config.config_use_google_drive:
+ app.register_blueprint(gdrive)
app.register_blueprint(editbook)
+ if kobo_available:
+ app.register_blueprint(kobo)
+ app.register_blueprint(kobo_auth)
if oauth_available:
app.register_blueprint(oauth)
success = web_server.start()
diff --git a/cps/__init__.py b/cps/__init__.py
old mode 100755
new mode 100644
index abcc4cbb4..03945b576
--- a/cps/__init__.py
+++ b/cps/__init__.py
@@ -33,7 +33,7 @@ from flask_login import LoginManager
from flask_babel import Babel
from flask_principal import Principal
-from . import logger, cache_buster, cli, config_sql, ub, db, services
+from . import config_sql, logger, cache_buster, cli, ub, db
from .reverseproxy import ReverseProxied
from .server import WebServer
@@ -57,17 +57,22 @@ mimetypes.add_type('application/ogg', '.ogg')
mimetypes.add_type('application/ogg', '.oga')
app = Flask(__name__)
+app.config.update(
+ SESSION_COOKIE_HTTPONLY=True,
+ SESSION_COOKIE_SAMESITE='Lax',
+ REMEMBER_COOKIE_SAMESITE='Lax', # will be available in flask-login 0.5.1 earliest
+)
+
lm = LoginManager()
lm.login_view = 'web.login'
lm.anonymous_user = ub.Anonymous
-
+lm.session_protection = 'strong'
ub.init_db(cli.settingspath)
# pylint: disable=no-member
config = config_sql.load_configuration(ub.session)
-searched_ids = {}
web_server = WebServer()
babel = Babel()
@@ -75,6 +80,11 @@ _BABEL_TRANSLATIONS = set()
log = logger.create()
+from . import services
+
+db.CalibreDB.setup_db(config, cli.settingspath)
+
+calibre_db = db.CalibreDB()
def create_app():
app.wsgi_app = ReverseProxied(app.wsgi_app)
@@ -82,17 +92,16 @@ def create_app():
if sys.version_info < (3, 0):
app.static_folder = app.static_folder.decode('utf-8')
app.root_path = app.root_path.decode('utf-8')
- app.instance_path = app.instance_path .decode('utf-8')
+ app.instance_path = app.instance_path.decode('utf-8')
cache_buster.init_cache_busting(app)
log.info('Starting Calibre Web...')
Principal(app)
lm.init_app(app)
- app.secret_key = os.getenv('SECRET_KEY', 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT')
+ app.secret_key = os.getenv('SECRET_KEY', config_sql.get_flask_session_key(ub.session))
web_server.init_app(app, config)
- db.setup_db(config)
babel.init_app(app)
_BABEL_TRANSLATIONS.update(str(item) for item in babel.list_translations())
@@ -116,14 +125,13 @@ def get_locale():
if user.nickname != 'Guest': # if the account is the guest account bypass the config lang settings
return user.locale
- preferred = set()
+ preferred = list()
if request.accept_languages:
for x in request.accept_languages.values():
try:
- preferred.add(str(LC.parse(x.replace('-', '_'))))
+ preferred.append(str(LC.parse(x.replace('-', '_'))))
except (UnknownLocaleError, ValueError) as e:
- log.warning('Could not parse locale "%s": %s', x, e)
- # preferred.append('en')
+ log.debug('Could not parse locale "%s": %s', x, e)
return negotiate_locale(preferred or ['en'], _BABEL_TRANSLATIONS)
@@ -135,6 +143,4 @@ def get_timezone():
from .updater import Updater
updater_thread = Updater()
-
-
-__all__ = ['app']
+updater_thread.start()
diff --git a/cps/about.py b/cps/about.py
index 630243f4e..f9c58738c 100644
--- a/cps/about.py
+++ b/cps/about.py
@@ -22,6 +22,7 @@
from __future__ import division, print_function, unicode_literals
import sys
+import platform
import sqlite3
from collections import OrderedDict
@@ -29,7 +30,7 @@ import babel, pytz, requests, sqlalchemy
import werkzeug, flask, flask_login, flask_principal, jinja2
from flask_babel import gettext as _
-from . import db, converter, uploader, server, isoLanguages
+from . import db, calibre_db, converter, uploader, server, isoLanguages, constants
from .web import render_title_template
try:
from flask_login import __version__ as flask_loginVersion
@@ -42,13 +43,22 @@ try:
except ImportError:
unidecode_version = _(u'not installed')
+try:
+ from flask_dance import __version__ as flask_danceVersion
+except ImportError:
+ flask_danceVersion = None
+
from . import services
about = flask.Blueprint('about', __name__)
_VERSIONS = OrderedDict(
+ Platform = '{0[0]} {0[2]} {0[3]} {0[4]} {0[5]}'.format(platform.uname()),
Python=sys.version,
+ Calibre_Web=constants.STABLE_VERSION['version'] + ' - '
+ + constants.NIGHTLY_VERSION[0].replace('%','%%') + ' - '
+ + constants.NIGHTLY_VERSION[1].replace('%','%%'),
WebServer=server.VERSION,
Flask=flask.__version__,
Flask_Login=flask_loginVersion,
@@ -63,19 +73,29 @@ _VERSIONS = OrderedDict(
iso639=isoLanguages.__version__,
pytz=pytz.__version__,
Unidecode = unidecode_version,
- Flask_SimpleLDAP = u'installed' if bool(services.ldap) else u'not installed',
- Goodreads = u'installed' if bool(services.goodreads_support) else u'not installed',
+ Flask_SimpleLDAP = u'installed' if bool(services.ldap) else None,
+ python_LDAP = services.ldapVersion if bool(services.ldapVersion) else None,
+ Goodreads = u'installed' if bool(services.goodreads_support) else None,
+ jsonschema = services.SyncToken.__version__ if bool(services.SyncToken) else None,
+ flask_dance = flask_danceVersion
)
_VERSIONS.update(uploader.get_versions())
+def collect_stats():
+ _VERSIONS['ebook converter'] = _(converter.get_calibre_version())
+ _VERSIONS['unrar'] = _(converter.get_unrar_version())
+ _VERSIONS['kepubify'] = _(converter.get_kepubify_version())
+ return _VERSIONS
+
@about.route("/stats")
@flask_login.login_required
def stats():
- counter = db.session.query(db.Books).count()
- authors = db.session.query(db.Authors).count()
- categorys = db.session.query(db.Tags).count()
- series = db.session.query(db.Series).count()
- _VERSIONS['ebook converter'] = _(converter.get_version())
- return render_title_template('stats.html', bookcounter=counter, authorcounter=authors, versions=_VERSIONS,
+ counter = calibre_db.session.query(db.Books).count()
+ authors = calibre_db.session.query(db.Authors).count()
+ categorys = calibre_db.session.query(db.Tags).count()
+ series = calibre_db.session.query(db.Series).count()
+ return render_title_template('stats.html', bookcounter=counter, authorcounter=authors, versions=collect_stats(),
categorycounter=categorys, seriecounter=series, title=_(u"Statistics"), page="stat")
+
+
diff --git a/cps/admin.py b/cps/admin.py
index 1862dda8c..531d855d3 100644
--- a/cps/admin.py
+++ b/cps/admin.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
@@ -23,6 +22,7 @@
from __future__ import division, print_function, unicode_literals
import os
+import re
import base64
import json
import time
@@ -34,31 +34,35 @@ from flask import Blueprint, flash, redirect, url_for, abort, request, make_resp
from flask_login import login_required, current_user, logout_user
from flask_babel import gettext as _
from sqlalchemy import and_
-from sqlalchemy.exc import IntegrityError
+from sqlalchemy.exc import IntegrityError, OperationalError, InvalidRequestError
from sqlalchemy.sql.expression import func
-from werkzeug.security import generate_password_hash
from . import constants, logger, helper, services
-from . import db, ub, web_server, get_locale, config, updater_thread, babel, gdriveutils
-from .helper import speaking_language, check_valid_domain, send_test_mail, generate_random_password, send_registration_mail
+from . import db, calibre_db, ub, web_server, get_locale, config, updater_thread, babel, gdriveutils
+from .helper import check_valid_domain, send_test_mail, reset_password, generate_password_hash
from .gdriveutils import is_gdrive_ready, gdrive_support
-from .web import admin_required, render_title_template, before_request, unconfigured, login_required_if_no_ano
+from .web import admin_required, render_title_template, before_request, unconfigured
+from . import debug_info
+
+log = logger.create()
feature_support = {
- 'ldap': False, # bool(services.ldap),
- 'goodreads': bool(services.goodreads_support)
+ 'ldap': bool(services.ldap),
+ 'goodreads': bool(services.goodreads_support),
+ 'kobo': bool(services.kobo)
}
-# try:
-# import rarfile
-# feature_support['rar'] = True
-# except ImportError:
-# feature_support['rar'] = False
+try:
+ import rarfile
+ feature_support['rar'] = True
+except (ImportError, SyntaxError):
+ feature_support['rar'] = False
try:
from .oauth_bb import oauth_check, oauthblueprints
feature_support['oauth'] = True
-except ImportError:
+except ImportError as err:
+ log.debug('Cannot import Flask-Dance, login with Oauth will not work: %s', err)
feature_support['oauth'] = False
oauthblueprints = []
oauth_check = {}
@@ -66,7 +70,7 @@ except ImportError:
feature_support['gdrive'] = gdrive_support
admi = Blueprint('admin', __name__)
-log = logger.create()
+
@admi.route("/admin")
@@ -80,12 +84,12 @@ def admin_forbidden():
@admin_required
def shutdown():
task = int(request.args.get("parameter").strip())
+ showtext = {}
if task in (0, 1): # valid commandos received
# close all database connections
- db.dispose()
+ calibre_db.dispose()
ub.dispose()
- showtext = {}
if task == 0:
showtext['text'] = _(u'Server restarted, please reload page')
else:
@@ -96,10 +100,12 @@ def shutdown():
if task == 2:
log.warning("reconnecting to calibre database")
- db.setup_db(config)
- return '{}'
+ calibre_db.reconnect_db(config, ub.app_DB_path)
+ showtext['text'] = _(u'Reconnect successful')
+ return json.dumps(showtext)
- abort(404)
+ showtext['text'] = _(u'Unknown command')
+ return json.dumps(showtext), 400
@admi.route("/admin/view")
@@ -126,7 +132,9 @@ def admin():
allUser = ub.session.query(ub.User).all()
email_settings = config.get_mail_settings()
+ kobo_support = feature_support['kobo'] and config.config_kobo_sync
return render_title_template("admin.html", allUser=allUser, email=email_settings, config=config, commit=commit,
+ feature_support=feature_support, kobo_support=kobo_support,
title=_(u"Admin page"), page="admin")
@@ -143,9 +151,12 @@ def configuration():
@login_required
@admin_required
def view_configuration():
- readColumn = db.session.query(db.Custom_Columns)\
- .filter(and_(db.Custom_Columns.datatype == 'bool',db.Custom_Columns.mark_for_delete == 0)).all()
+ readColumn = calibre_db.session.query(db.Custom_Columns)\
+ .filter(and_(db.Custom_Columns.datatype == 'bool', db.Custom_Columns.mark_for_delete == 0)).all()
+ restrictColumns= calibre_db.session.query(db.Custom_Columns)\
+ .filter(and_(db.Custom_Columns.datatype == 'text', db.Custom_Columns.mark_for_delete == 0)).all()
return render_title_template("config_view_edit.html", conf=config, readColumns=readColumn,
+ restrictColumns=restrictColumns,
title=_(u"UI Configuration"), page="uiconfig")
@@ -153,7 +164,6 @@ def view_configuration():
@login_required
@admin_required
def update_view_configuration():
- reboot_required = False
to_save = request.form.to_dict()
_config_string = lambda x: config.set_from_dictionary(to_save, x, lambda y: y.strip() if y else y)
@@ -161,57 +171,54 @@ def update_view_configuration():
_config_string("config_calibre_web_title")
_config_string("config_columns_to_ignore")
- _config_string("config_mature_content_tags")
- reboot_required |= _config_string("config_title_regex")
+ if _config_string("config_title_regex"):
+ calibre_db.update_title_sort(config)
_config_int("config_read_column")
_config_int("config_theme")
_config_int("config_random_books")
_config_int("config_books_per_page")
_config_int("config_authors_max")
+ _config_int("config_restricted_column")
config.config_default_role = constants.selected_roles(to_save)
config.config_default_role &= ~constants.ROLE_ANONYMOUS
config.config_default_show = sum(int(k[5:]) for k in to_save if k.startswith('show_'))
- if "Show_mature_content" in to_save:
- config.config_default_show |= constants.MATURE_CONTENT
+ if "Show_detail_random" in to_save:
+ config.config_default_show |= constants.DETAIL_RANDOM
config.save()
flash(_(u"Calibre-Web configuration updated"), category="success")
before_request()
- if reboot_required:
- db.dispose()
- ub.dispose()
- web_server.stop(True)
return view_configuration()
-@admi.route("/ajax/editdomain", methods=['POST'])
+@admi.route("/ajax/editdomain/", methods=['POST'])
@login_required
@admin_required
-def edit_domain():
+def edit_domain(allow):
# POST /post
# name: 'username', //name of field (column in db)
# pk: 1 //primary key (record id)
# value: 'superuser!' //new value
vals = request.form.to_dict()
answer = ub.session.query(ub.Registration).filter(ub.Registration.id == vals['pk']).first()
- # domain_name = request.args.get('domain')
answer.domain = vals['value'].replace('*', '%').replace('?', '_').lower()
ub.session.commit()
return ""
-@admi.route("/ajax/adddomain", methods=['POST'])
+@admi.route("/ajax/adddomain/", methods=['POST'])
@login_required
@admin_required
-def add_domain():
+def add_domain(allow):
domain_name = request.form.to_dict()['domainname'].replace('*', '%').replace('?', '_').lower()
- check = ub.session.query(ub.Registration).filter(ub.Registration.domain == domain_name).first()
+ check = ub.session.query(ub.Registration).filter(ub.Registration.domain == domain_name)\
+ .filter(ub.Registration.allow == allow).first()
if not check:
- new_domain = ub.Registration(domain=domain_name)
+ new_domain = ub.Registration(domain=domain_name, allow=allow)
ub.session.add(new_domain)
ub.session.commit()
return ""
@@ -225,24 +232,245 @@ def delete_domain():
ub.session.query(ub.Registration).filter(ub.Registration.id == domain_id).delete()
ub.session.commit()
# If last domain was deleted, add all domains by default
- if not ub.session.query(ub.Registration).count():
- new_domain = ub.Registration(domain="%.%")
+ if not ub.session.query(ub.Registration).filter(ub.Registration.allow==1).count():
+ new_domain = ub.Registration(domain="%.%",allow=1)
ub.session.add(new_domain)
ub.session.commit()
return ""
-@admi.route("/ajax/domainlist")
+@admi.route("/ajax/domainlist/")
@login_required
@admin_required
-def list_domain():
- answer = ub.session.query(ub.Registration).all()
+def list_domain(allow):
+ answer = ub.session.query(ub.Registration).filter(ub.Registration.allow == allow).all()
json_dumps = json.dumps([{"domain": r.domain.replace('%', '*').replace('_', '?'), "id": r.id} for r in answer])
js = json.dumps(json_dumps.replace('"', "'")).lstrip('"').strip('"')
response = make_response(js.replace("'", '"'))
response.headers["Content-Type"] = "application/json; charset=utf-8"
return response
+@admi.route("/ajax/editrestriction/", methods=['POST'])
+@login_required
+@admin_required
+def edit_restriction(res_type):
+ element = request.form.to_dict()
+ if element['id'].startswith('a'):
+ if res_type == 0: # Tags as template
+ elementlist = config.list_allowed_tags()
+ elementlist[int(element['id'][1:])]=element['Element']
+ config.config_allowed_tags = ','.join(elementlist)
+ config.save()
+ if res_type == 1: # CustomC
+ elementlist = config.list_allowed_column_values()
+ elementlist[int(element['id'][1:])]=element['Element']
+ config.config_allowed_column_value = ','.join(elementlist)
+ config.save()
+ if res_type == 2: # Tags per user
+ usr_id = os.path.split(request.referrer)[-1]
+ if usr_id.isdigit() == True:
+ usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
+ else:
+ usr = current_user
+ elementlist = usr.list_allowed_tags()
+ elementlist[int(element['id'][1:])]=element['Element']
+ usr.allowed_tags = ','.join(elementlist)
+ ub.session.commit()
+ if res_type == 3: # CColumn per user
+ usr_id = os.path.split(request.referrer)[-1]
+ if usr_id.isdigit() == True:
+ usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
+ else:
+ usr = current_user
+ elementlist = usr.list_allowed_column_values()
+ elementlist[int(element['id'][1:])]=element['Element']
+ usr.allowed_column_value = ','.join(elementlist)
+ ub.session.commit()
+ if element['id'].startswith('d'):
+ if res_type == 0: # Tags as template
+ elementlist = config.list_denied_tags()
+ elementlist[int(element['id'][1:])]=element['Element']
+ config.config_denied_tags = ','.join(elementlist)
+ config.save()
+ if res_type == 1: # CustomC
+ elementlist = config.list_denied_column_values()
+ elementlist[int(element['id'][1:])]=element['Element']
+ config.config_denied_column_value = ','.join(elementlist)
+ config.save()
+ if res_type == 2: # Tags per user
+ usr_id = os.path.split(request.referrer)[-1]
+ if usr_id.isdigit() == True:
+ usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
+ else:
+ usr = current_user
+ elementlist = usr.list_denied_tags()
+ elementlist[int(element['id'][1:])]=element['Element']
+ usr.denied_tags = ','.join(elementlist)
+ ub.session.commit()
+ if res_type == 3: # CColumn per user
+ usr_id = os.path.split(request.referrer)[-1]
+ if usr_id.isdigit() == True:
+ usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
+ else:
+ usr = current_user
+ elementlist = usr.list_denied_column_values()
+ elementlist[int(element['id'][1:])]=element['Element']
+ usr.denied_column_value = ','.join(elementlist)
+ ub.session.commit()
+ return ""
+
+def restriction_addition(element, list_func):
+ elementlist = list_func()
+ if elementlist == ['']:
+ elementlist = []
+ if not element['add_element'] in elementlist:
+ elementlist += [element['add_element']]
+ return ','.join(elementlist)
+
+
+def restriction_deletion(element, list_func):
+ elementlist = list_func()
+ if element['Element'] in elementlist:
+ elementlist.remove(element['Element'])
+ return ','.join(elementlist)
+
+
+@admi.route("/ajax/addrestriction/", methods=['POST'])
+@login_required
+@admin_required
+def add_restriction(res_type):
+ element = request.form.to_dict()
+ if res_type == 0: # Tags as template
+ if 'submit_allow' in element:
+ config.config_allowed_tags = restriction_addition(element, config.list_allowed_tags)
+ config.save()
+ elif 'submit_deny' in element:
+ config.config_denied_tags = restriction_addition(element, config.list_denied_tags)
+ config.save()
+ if res_type == 1: # CCustom as template
+ if 'submit_allow' in element:
+ config.config_allowed_column_value = restriction_addition(element, config.list_denied_column_values)
+ config.save()
+ elif 'submit_deny' in element:
+ config.config_denied_column_value = restriction_addition(element, config.list_allowed_column_values)
+ config.save()
+ if res_type == 2: # Tags per user
+ usr_id = os.path.split(request.referrer)[-1]
+ if usr_id.isdigit() == True:
+ usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
+ else:
+ usr = current_user
+ if 'submit_allow' in element:
+ usr.allowed_tags = restriction_addition(element, usr.list_allowed_tags)
+ ub.session.commit()
+ elif 'submit_deny' in element:
+ usr.denied_tags = restriction_addition(element, usr.list_denied_tags)
+ ub.session.commit()
+ if res_type == 3: # CustomC per user
+ usr_id = os.path.split(request.referrer)[-1]
+ if usr_id.isdigit() == True:
+ usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
+ else:
+ usr = current_user
+ if 'submit_allow' in element:
+ usr.allowed_column_value = restriction_addition(element, usr.list_allowed_column_values)
+ ub.session.commit()
+ elif 'submit_deny' in element:
+ usr.denied_column_value = restriction_addition(element, usr.list_denied_column_values)
+ ub.session.commit()
+ return ""
+
+@admi.route("/ajax/deleterestriction/", methods=['POST'])
+@login_required
+@admin_required
+def delete_restriction(res_type):
+ element = request.form.to_dict()
+ if res_type == 0: # Tags as template
+ if element['id'].startswith('a'):
+ config.config_allowed_tags = restriction_deletion(element, config.list_allowed_tags)
+ config.save()
+ elif element['id'].startswith('d'):
+ config.config_denied_tags = restriction_deletion(element, config.list_denied_tags)
+ config.save()
+ elif res_type == 1: # CustomC as template
+ if element['id'].startswith('a'):
+ config.config_allowed_column_value = restriction_deletion(element, config.list_allowed_column_values)
+ config.save()
+ elif element['id'].startswith('d'):
+ config.config_denied_column_value = restriction_deletion(element, config.list_denied_column_values)
+ config.save()
+ elif res_type == 2: # Tags per user
+ usr_id = os.path.split(request.referrer)[-1]
+ if usr_id.isdigit() == True:
+ usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
+ else:
+ usr = current_user
+ if element['id'].startswith('a'):
+ usr.allowed_tags = restriction_deletion(element, usr.list_allowed_tags)
+ ub.session.commit()
+ elif element['id'].startswith('d'):
+ usr.denied_tags = restriction_deletion(element, usr.list_denied_tags)
+ ub.session.commit()
+ elif res_type == 3: # Columns per user
+ usr_id = os.path.split(request.referrer)[-1]
+ if usr_id.isdigit() == True: # select current user if admins are editing their own rights
+ usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
+ else:
+ usr = current_user
+ if element['id'].startswith('a'):
+ usr.allowed_column_value = restriction_deletion(element, usr.list_allowed_column_values)
+ ub.session.commit()
+ elif element['id'].startswith('d'):
+ usr.denied_column_value = restriction_deletion(element, usr.list_denied_column_values)
+ ub.session.commit()
+ return ""
+
+
+@admi.route("/ajax/listrestriction/")
+@login_required
+@admin_required
+def list_restriction(res_type):
+ if res_type == 0: # Tags as template
+ restrict = [{'Element': x, 'type':_('Deny'), 'id': 'd'+str(i) }
+ for i,x in enumerate(config.list_denied_tags()) if x != '' ]
+ allow = [{'Element': x, 'type':_('Allow'), 'id': 'a'+str(i) }
+ for i,x in enumerate(config.list_allowed_tags()) if x != '']
+ json_dumps = restrict + allow
+ elif res_type == 1: # CustomC as template
+ restrict = [{'Element': x, 'type':_('Deny'), 'id': 'd'+str(i) }
+ for i,x in enumerate(config.list_denied_column_values()) if x != '' ]
+ allow = [{'Element': x, 'type':_('Allow'), 'id': 'a'+str(i) }
+ for i,x in enumerate(config.list_allowed_column_values()) if x != '']
+ json_dumps = restrict + allow
+ elif res_type == 2: # Tags per user
+ usr_id = os.path.split(request.referrer)[-1]
+ if usr_id.isdigit() == True:
+ usr = ub.session.query(ub.User).filter(ub.User.id == usr_id).first()
+ else:
+ usr = current_user
+ restrict = [{'Element': x, 'type':_('Deny'), 'id': 'd'+str(i) }
+ for i,x in enumerate(usr.list_denied_tags()) if x != '' ]
+ allow = [{'Element': x, 'type':_('Allow'), 'id': 'a'+str(i) }
+ for i,x in enumerate(usr.list_allowed_tags()) if x != '']
+ json_dumps = restrict + allow
+ elif res_type == 3: # CustomC per user
+ usr_id = os.path.split(request.referrer)[-1]
+ if usr_id.isdigit() == True:
+ usr = ub.session.query(ub.User).filter(ub.User.id==usr_id).first()
+ else:
+ usr = current_user
+ restrict = [{'Element': x, 'type':_('Deny'), 'id': 'd'+str(i) }
+ for i,x in enumerate(usr.list_denied_column_values()) if x != '' ]
+ allow = [{'Element': x, 'type':_('Allow'), 'id': 'a'+str(i) }
+ for i,x in enumerate(usr.list_allowed_column_values()) if x != '']
+ json_dumps = restrict + allow
+ else:
+ json_dumps=""
+ js = json.dumps(json_dumps)
+ response = make_response(js.replace("'", '"'))
+ response.headers["Content-Type"] = "application/json; charset=utf-8"
+ return response
+
@admi.route("/config", methods=["GET", "POST"])
@unconfigured
@@ -253,19 +481,23 @@ def basic_configuration():
return _configuration_result()
-def _configuration_update_helper():
- reboot_required = False
- db_change = False
- to_save = request.form.to_dict()
+def _config_int(to_save, x, func=int):
+ return config.set_from_dictionary(to_save, x, func)
- _config_string = lambda x: config.set_from_dictionary(to_save, x, lambda y: y.strip() if y else y)
- _config_int = lambda x: config.set_from_dictionary(to_save, x, int)
- _config_checkbox = lambda x: config.set_from_dictionary(to_save, x, lambda y: y == "on", False)
- _config_checkbox_int = lambda x: config.set_from_dictionary(to_save, x, lambda y: 1 if (y == "on") else 0, 0)
- db_change |= _config_string("config_calibre_dir")
+def _config_checkbox(to_save, x):
+ return config.set_from_dictionary(to_save, x, lambda y: y == "on", False)
- # Google drive setup
+
+def _config_checkbox_int(to_save, x):
+ return config.set_from_dictionary(to_save, x, lambda y: 1 if (y == "on") else 0, 0)
+
+
+def _config_string(to_save, x):
+ return config.set_from_dictionary(to_save, x, lambda y: y.strip() if y else y)
+
+
+def _configuration_gdrive_helper(to_save):
if not os.path.isfile(gdriveutils.SETTINGS_YAML):
config.config_use_google_drive = False
@@ -275,7 +507,7 @@ def _configuration_update_helper():
with open(gdriveutils.CLIENT_SECRETS, 'r') as settings:
gdrive_secrets = json.load(settings)['web']
if not gdrive_secrets:
- return _configuration_result('client_secrets.json is not configured for web application')
+ return _configuration_result(_('client_secrets.json Is Not Configured For Web Application'))
gdriveutils.update_settings(
gdrive_secrets['client_id'],
gdrive_secrets['client_secret'],
@@ -284,107 +516,216 @@ def _configuration_update_helper():
# always show google drive settings, but in case of error deny support
config.config_use_google_drive = (not gdriveError) and ("config_use_google_drive" in to_save)
- if _config_string("config_google_drive_folder"):
+ if _config_string(to_save, "config_google_drive_folder"):
gdriveutils.deleteDatabaseOnChange()
+ return gdriveError
- reboot_required |= _config_int("config_port")
+def _configuration_oauth_helper(to_save):
+ active_oauths = 0
+ reboot_required = False
+ for element in oauthblueprints:
+ if to_save["config_" + str(element['id']) + "_oauth_client_id"] != element['oauth_client_id'] \
+ or to_save["config_" + str(element['id']) + "_oauth_client_secret"] != element['oauth_client_secret']:
+ reboot_required = True
+ element['oauth_client_id'] = to_save["config_" + str(element['id']) + "_oauth_client_id"]
+ element['oauth_client_secret'] = to_save["config_" + str(element['id']) + "_oauth_client_secret"]
+ if to_save["config_" + str(element['id']) + "_oauth_client_id"] \
+ and to_save["config_" + str(element['id']) + "_oauth_client_secret"]:
+ active_oauths += 1
+ element["active"] = 1
+ else:
+ element["active"] = 0
+ ub.session.query(ub.OAuthProvider).filter(ub.OAuthProvider.id == element['id']).update(
+ {"oauth_client_id": to_save["config_" + str(element['id']) + "_oauth_client_id"],
+ "oauth_client_secret": to_save["config_" + str(element['id']) + "_oauth_client_secret"],
+ "active": element["active"]})
+ return reboot_required
- reboot_required |= _config_string("config_keyfile")
- if config.config_keyfile and not os.path.isfile(config.config_keyfile):
- return _configuration_result('Keyfile location is not valid, please enter correct path', gdriveError)
-
- reboot_required |= _config_string("config_certfile")
- if config.config_certfile and not os.path.isfile(config.config_certfile):
- return _configuration_result('Certfile location is not valid, please enter correct path', gdriveError)
-
- _config_checkbox_int("config_uploading")
- _config_checkbox_int("config_anonbrowse")
- _config_checkbox_int("config_public_reg")
-
- _config_int("config_ebookconverter")
- _config_string("config_calibre")
- _config_string("config_converterpath")
-
- if _config_int("config_login_type"):
- reboot_required |= config.config_login_type != constants.LOGIN_STANDARD
-
- #LDAP configurator,
- if config.config_login_type == constants.LOGIN_LDAP:
- _config_string("config_ldap_provider_url")
- _config_int("config_ldap_port")
- _config_string("config_ldap_schema")
- _config_string("config_ldap_dn")
- _config_string("config_ldap_user_object")
- if not config.config_ldap_provider_url or not config.config_ldap_port or not config.config_ldap_dn or not config.config_ldap_user_object:
- return _configuration_result('Please enter a LDAP provider, port, DN and user object identifier', gdriveError)
-
- _config_string("config_ldap_serv_username")
- if not config.config_ldap_serv_username or "config_ldap_serv_password" not in to_save:
- return _configuration_result('Please enter a LDAP service account and password', gdriveError)
- config.set_from_dictionary(to_save, "config_ldap_serv_password", base64.b64encode)
-
- _config_checkbox("config_ldap_use_ssl")
- _config_checkbox("config_ldap_use_tls")
- _config_checkbox("config_ldap_openldap")
- _config_checkbox("config_ldap_require_cert")
- _config_string("config_ldap_cert_path")
- if config.config_ldap_cert_path and not os.path.isfile(config.config_ldap_cert_path):
- return _configuration_result('LDAP Certfile location is not valid, please enter correct path', gdriveError)
-
- # Remote login configuration
- _config_checkbox("config_remote_login")
- if not config.config_remote_login:
- ub.session.query(ub.RemoteAuthToken).delete()
-
- # Goodreads configuration
- _config_checkbox("config_use_goodreads")
- _config_string("config_goodreads_api_key")
- _config_string("config_goodreads_api_secret")
- if services.goodreads_support:
- services.goodreads_support.connect(config.config_goodreads_api_key,
- config.config_goodreads_api_secret,
- config.config_use_goodreads)
-
- _config_int("config_updatechannel")
-
- # GitHub OAuth configuration
- if config.config_login_type == constants.LOGIN_OAUTH:
- active_oauths = 0
-
- for element in oauthblueprints:
- if to_save["config_"+str(element['id'])+"_oauth_client_id"] \
- and to_save["config_"+str(element['id'])+"_oauth_client_secret"]:
- active_oauths += 1
- element["active"] = 1
- ub.session.query(ub.OAuthProvider).filter(ub.OAuthProvider.id == element['id']).update(
- {"oauth_client_id":to_save["config_"+str(element['id'])+"_oauth_client_id"],
- "oauth_client_secret":to_save["config_"+str(element['id'])+"_oauth_client_secret"],
- "active":1})
- if to_save["config_" + str(element['id']) + "_oauth_client_id"] != element['oauth_client_id'] \
- or to_save["config_" + str(element['id']) + "_oauth_client_secret"] != element['oauth_client_secret']:
- reboot_required = True
- element['oauth_client_id'] = to_save["config_"+str(element['id'])+"_oauth_client_id"]
- element['oauth_client_secret'] = to_save["config_"+str(element['id'])+"_oauth_client_secret"]
- else:
- ub.session.query(ub.OAuthProvider).filter(ub.OAuthProvider.id == element['id']).update(
- {"active":0})
- element["active"] = 0
-
- _config_int("config_log_level")
- _config_string("config_logfile")
+def _configuration_logfile_helper(to_save, gdriveError):
+ reboot_required = False
+ reboot_required |= _config_int(to_save, "config_log_level")
+ reboot_required |= _config_string(to_save, "config_logfile")
if not logger.is_valid_logfile(config.config_logfile):
- return _configuration_result('Logfile location is not valid, please enter correct path', gdriveError)
+ return reboot_required, \
+ _configuration_result(_('Logfile Location is not Valid, Please Enter Correct Path'), gdriveError)
- reboot_required |= _config_checkbox_int("config_access_log")
- reboot_required |= _config_string("config_access_logfile")
+ reboot_required |= _config_checkbox_int(to_save, "config_access_log")
+ reboot_required |= _config_string(to_save, "config_access_logfile")
if not logger.is_valid_logfile(config.config_access_logfile):
- return _configuration_result('Access Logfile location is not valid, please enter correct path', gdriveError)
+ return reboot_required, \
+ _configuration_result(_('Access Logfile Location is not Valid, Please Enter Correct Path'), gdriveError)
+ return reboot_required, None
- # Rarfile Content configuration
- _config_string("config_rarfile_location")
- unrar_status = helper.check_unrar(config.config_rarfile_location)
- if unrar_status:
- return _configuration_result(unrar_status, gdriveError)
+def _configuration_ldap_helper(to_save, gdriveError):
+ reboot_required = False
+ reboot_required |= _config_string(to_save, "config_ldap_provider_url")
+ reboot_required |= _config_int(to_save, "config_ldap_port")
+ reboot_required |= _config_int(to_save, "config_ldap_authentication")
+ reboot_required |= _config_string(to_save, "config_ldap_dn")
+ reboot_required |= _config_string(to_save, "config_ldap_serv_username")
+ reboot_required |= _config_string(to_save, "config_ldap_user_object")
+ reboot_required |= _config_string(to_save, "config_ldap_group_object_filter")
+ reboot_required |= _config_string(to_save, "config_ldap_group_members_field")
+ reboot_required |= _config_string(to_save, "config_ldap_member_user_object")
+ reboot_required |= _config_checkbox(to_save, "config_ldap_openldap")
+ reboot_required |= _config_int(to_save, "config_ldap_encryption")
+ reboot_required |= _config_string(to_save, "config_ldap_cacert_path")
+ reboot_required |= _config_string(to_save, "config_ldap_cert_path")
+ reboot_required |= _config_string(to_save, "config_ldap_key_path")
+ _config_string(to_save, "config_ldap_group_name")
+ if "config_ldap_serv_password" in to_save and to_save["config_ldap_serv_password"] != "":
+ reboot_required |= 1
+ config.set_from_dictionary(to_save, "config_ldap_serv_password", base64.b64encode, encode='UTF-8')
+ config.save()
+
+ if not config.config_ldap_provider_url \
+ or not config.config_ldap_port \
+ or not config.config_ldap_dn \
+ or not config.config_ldap_user_object:
+ return reboot_required, _configuration_result(_('Please Enter a LDAP Provider, '
+ 'Port, DN and User Object Identifier'), gdriveError)
+
+ if config.config_ldap_authentication > constants.LDAP_AUTH_ANONYMOUS:
+ if config.config_ldap_authentication > constants.LDAP_AUTH_UNAUTHENTICATE:
+ if not config.config_ldap_serv_username or not bool(config.config_ldap_serv_password):
+ return reboot_required, _configuration_result('Please Enter a LDAP Service Account and Password',
+ gdriveError)
+ else:
+ if not config.config_ldap_serv_username:
+ return reboot_required, _configuration_result('Please Enter a LDAP Service Account', gdriveError)
+
+ if config.config_ldap_group_object_filter:
+ if config.config_ldap_group_object_filter.count("%s") != 1:
+ return reboot_required, \
+ _configuration_result(_('LDAP Group Object Filter Needs to Have One "%s" Format Identifier'),
+ gdriveError)
+ if config.config_ldap_group_object_filter.count("(") != config.config_ldap_group_object_filter.count(")"):
+ return reboot_required, _configuration_result(_('LDAP Group Object Filter Has Unmatched Parenthesis'),
+ gdriveError)
+
+ if config.config_ldap_user_object.count("%s") != 1:
+ return reboot_required, \
+ _configuration_result(_('LDAP User Object Filter needs to Have One "%s" Format Identifier'),
+ gdriveError)
+ if config.config_ldap_user_object.count("(") != config.config_ldap_user_object.count(")"):
+ return reboot_required, _configuration_result(_('LDAP User Object Filter Has Unmatched Parenthesis'),
+ gdriveError)
+
+ if to_save["ldap_import_user_filter"] == '0':
+ config.config_ldap_member_user_object = ""
+ else:
+ if config.config_ldap_member_user_object.count("%s") != 1:
+ return reboot_required, \
+ _configuration_result(_('LDAP Member User Filter needs to Have One "%s" Format Identifier'),
+ gdriveError)
+ if config.config_ldap_member_user_object.count("(") != config.config_ldap_member_user_object.count(")"):
+ return reboot_required, _configuration_result(_('LDAP Member User Filter Has Unmatched Parenthesis'),
+ gdriveError)
+
+ if config.config_ldap_cacert_path or config.config_ldap_cert_path or config.config_ldap_key_path:
+ if not (os.path.isfile(config.config_ldap_cacert_path) and
+ os.path.isfile(config.config_ldap_cert_path) and
+ os.path.isfile(config.config_ldap_key_path)):
+ return reboot_required, \
+ _configuration_result(_('LDAP CACertificate, Certificate or Key Location is not Valid, '
+ 'Please Enter Correct Path'),
+ gdriveError)
+ return reboot_required, None
+
+
+def _configuration_update_helper():
+ reboot_required = False
+ db_change = False
+ to_save = request.form.to_dict()
+ gdriveError = None
+
+ to_save['config_calibre_dir'] = re.sub('[\\/]metadata\.db$',
+ '',
+ to_save['config_calibre_dir'],
+ flags=re.IGNORECASE)
+ try:
+ db_change |= _config_string(to_save, "config_calibre_dir")
+
+ # Google drive setup
+ gdriveError = _configuration_gdrive_helper(to_save)
+
+ reboot_required |= _config_int(to_save, "config_port")
+
+ reboot_required |= _config_string(to_save, "config_keyfile")
+ if config.config_keyfile and not os.path.isfile(config.config_keyfile):
+ return _configuration_result(_('Keyfile Location is not Valid, Please Enter Correct Path'), gdriveError)
+
+ reboot_required |= _config_string(to_save, "config_certfile")
+ if config.config_certfile and not os.path.isfile(config.config_certfile):
+ return _configuration_result(_('Certfile Location is not Valid, Please Enter Correct Path'), gdriveError)
+
+ _config_checkbox_int(to_save, "config_uploading")
+ # Reboot on config_anonbrowse with enabled ldap, as decoraters are changed in this case
+ reboot_required |= (_config_checkbox_int(to_save, "config_anonbrowse")
+ and config.config_login_type == constants.LOGIN_LDAP)
+ _config_checkbox_int(to_save, "config_public_reg")
+ _config_checkbox_int(to_save, "config_register_email")
+ reboot_required |= _config_checkbox_int(to_save, "config_kobo_sync")
+ _config_int(to_save, "config_external_port")
+ _config_checkbox_int(to_save, "config_kobo_proxy")
+
+ if "config_upload_formats" in to_save:
+ to_save["config_upload_formats"] = ','.join(
+ helper.uniq([x.lstrip().rstrip().lower() for x in to_save["config_upload_formats"].split(',')]))
+ _config_string(to_save, "config_upload_formats")
+ constants.EXTENSIONS_UPLOAD = config.config_upload_formats.split(',')
+
+ _config_string(to_save, "config_calibre")
+ _config_string(to_save, "config_converterpath")
+ _config_string(to_save, "config_kepubifypath")
+
+ reboot_required |= _config_int(to_save, "config_login_type")
+
+ #LDAP configurator,
+ if config.config_login_type == constants.LOGIN_LDAP:
+ reboot, message = _configuration_ldap_helper(to_save, gdriveError)
+ if message:
+ return message
+ reboot_required |= reboot
+
+ # Remote login configuration
+
+ _config_checkbox(to_save, "config_remote_login")
+ if not config.config_remote_login:
+ ub.session.query(ub.RemoteAuthToken).filter(ub.RemoteAuthToken.token_type==0).delete()
+
+ # Goodreads configuration
+ _config_checkbox(to_save, "config_use_goodreads")
+ _config_string(to_save, "config_goodreads_api_key")
+ _config_string(to_save, "config_goodreads_api_secret")
+ if services.goodreads_support:
+ services.goodreads_support.connect(config.config_goodreads_api_key,
+ config.config_goodreads_api_secret,
+ config.config_use_goodreads)
+
+ _config_int(to_save, "config_updatechannel")
+
+ # Reverse proxy login configuration
+ _config_checkbox(to_save, "config_allow_reverse_proxy_header_login")
+ _config_string(to_save, "config_reverse_proxy_login_header_name")
+
+ # OAuth configuration
+ if config.config_login_type == constants.LOGIN_OAUTH:
+ reboot_required |= _configuration_oauth_helper(to_save)
+
+ reboot, message = _configuration_logfile_helper(to_save, gdriveError)
+ if message:
+ return message
+ reboot_required |= reboot
+ # Rarfile Content configuration
+ _config_string(to_save, "config_rarfile_location")
+ if "config_rarfile_location" in to_save:
+ unrar_status = helper.check_unrar(config.config_rarfile_location)
+ if unrar_status:
+ return _configuration_result(unrar_status, gdriveError)
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ _configuration_result(_(u"Settings DB is not Writeable"), gdriveError)
try:
metadata_db = os.path.join(config.config_calibre_dir, "metadata.db")
@@ -395,9 +736,10 @@ def _configuration_update_helper():
return _configuration_result('%s' % e, gdriveError)
if db_change:
- # reload(db)
- if not db.setup_db(config):
- return _configuration_result('DB location is not valid, please enter correct path', gdriveError)
+ if not calibre_db.setup_db(config, ub.app_DB_path):
+ return _configuration_result(_('DB Location is not Valid, Please Enter Correct Path'), gdriveError)
+ if not os.access(os.path.join(config.config_calibre_dir, "metadata.db"), os.W_OK):
+ flash(_(u"DB is not Writeable"), category="warning")
config.save()
flash(_(u"Calibre-Web configuration updated"), category="success")
@@ -415,14 +757,15 @@ def _configuration_result(error_flash=None, gdriveError=None):
if gdriveError:
gdriveError = _(gdriveError)
else:
- if config.config_use_google_drive and not gdrive_authenticate:
+ # if config.config_use_google_drive and\
+ if not gdrive_authenticate and gdrive_support:
gdrivefolders = gdriveutils.listRootFolders()
show_back_button = current_user.is_authenticated
show_login_button = config.db_configured and not current_user.is_authenticated
if error_flash:
config.load()
- flash(_(error_flash), category="error")
+ flash(error_flash, category="error")
show_login_button = False
return render_title_template("config_edit.html", config=config, provider=oauthblueprints,
@@ -432,62 +775,165 @@ def _configuration_result(error_flash=None, gdriveError=None):
title=_(u"Basic Configuration"), page="config")
+def _handle_new_user(to_save, content,languages, translations, kobo_support):
+ content.default_language = to_save["default_language"]
+ # content.mature_content = "Show_mature_content" in to_save
+ content.locale = to_save.get("locale", content.locale)
+
+ content.sidebar_view = sum(int(key[5:]) for key in to_save if key.startswith('show_'))
+ if "show_detail_random" in to_save:
+ content.sidebar_view |= constants.DETAIL_RANDOM
+
+ content.role = constants.selected_roles(to_save)
+
+ if not to_save["nickname"] or not to_save["email"] or not to_save["password"]:
+ flash(_(u"Please fill out all fields!"), category="error")
+ return render_title_template("user_edit.html", new_user=1, content=content, translations=translations,
+ registered_oauth=oauth_check, kobo_support=kobo_support,
+ title=_(u"Add new user"))
+ content.password = generate_password_hash(to_save["password"])
+ existing_user = ub.session.query(ub.User).filter(func.lower(ub.User.nickname) == to_save["nickname"].lower()) \
+ .first()
+ existing_email = ub.session.query(ub.User).filter(ub.User.email == to_save["email"].lower()) \
+ .first()
+ if not existing_user and not existing_email:
+ content.nickname = to_save["nickname"]
+ if config.config_public_reg and not check_valid_domain(to_save["email"]):
+ flash(_(u"E-mail is not from valid domain"), category="error")
+ return render_title_template("user_edit.html", new_user=1, content=content, translations=translations,
+ registered_oauth=oauth_check, kobo_support=kobo_support,
+ title=_(u"Add new user"))
+ else:
+ content.email = to_save["email"]
+ else:
+ flash(_(u"Found an existing account for this e-mail address or nickname."), category="error")
+ return render_title_template("user_edit.html", new_user=1, content=content, translations=translations,
+ languages=languages, title=_(u"Add new user"), page="newuser",
+ kobo_support=kobo_support, registered_oauth=oauth_check)
+ try:
+ content.allowed_tags = config.config_allowed_tags
+ content.denied_tags = config.config_denied_tags
+ content.allowed_column_value = config.config_allowed_column_value
+ content.denied_column_value = config.config_denied_column_value
+ ub.session.add(content)
+ ub.session.commit()
+ flash(_(u"User '%(user)s' created", user=content.nickname), category="success")
+ return redirect(url_for('admin.admin'))
+ except IntegrityError:
+ ub.session.rollback()
+ flash(_(u"Found an existing account for this e-mail address or nickname."), category="error")
+ except OperationalError:
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
+
+
+def _handle_edit_user(to_save, content,languages, translations, kobo_support):
+ if "delete" in to_save:
+ if ub.session.query(ub.User).filter(ub.User.role.op('&')(constants.ROLE_ADMIN) == constants.ROLE_ADMIN,
+ ub.User.id != content.id).count():
+ ub.session.query(ub.User).filter(ub.User.id == content.id).delete()
+ ub.session.commit()
+ flash(_(u"User '%(nick)s' deleted", nick=content.nickname), category="success")
+ return redirect(url_for('admin.admin'))
+ else:
+ flash(_(u"No admin user remaining, can't delete user", nick=content.nickname), category="error")
+ return redirect(url_for('admin.admin'))
+ else:
+ if not ub.session.query(ub.User).filter(ub.User.role.op('&')(constants.ROLE_ADMIN) == constants.ROLE_ADMIN,
+ ub.User.id != content.id).count() and \
+ not 'admin_role' in to_save:
+ flash(_(u"No admin user remaining, can't remove admin role", nick=content.nickname), category="error")
+ return redirect(url_for('admin.admin'))
+
+ if "password" in to_save and to_save["password"]:
+ content.password = generate_password_hash(to_save["password"])
+ anonymous = content.is_anonymous
+ content.role = constants.selected_roles(to_save)
+ if anonymous:
+ content.role |= constants.ROLE_ANONYMOUS
+ else:
+ content.role &= ~constants.ROLE_ANONYMOUS
+
+ val = [int(k[5:]) for k in to_save if k.startswith('show_')]
+ sidebar = ub.get_sidebar_config()
+ for element in sidebar:
+ value = element['visibility']
+ if value in val and not content.check_visibility(value):
+ content.sidebar_view |= value
+ elif not value in val and content.check_visibility(value):
+ content.sidebar_view &= ~value
+
+ if "Show_detail_random" in to_save:
+ content.sidebar_view |= constants.DETAIL_RANDOM
+ else:
+ content.sidebar_view &= ~constants.DETAIL_RANDOM
+
+ if "default_language" in to_save:
+ content.default_language = to_save["default_language"]
+ if "locale" in to_save and to_save["locale"]:
+ content.locale = to_save["locale"]
+ if to_save["email"] and to_save["email"] != content.email:
+ existing_email = ub.session.query(ub.User).filter(ub.User.email == to_save["email"].lower()) \
+ .first()
+ if not existing_email:
+ content.email = to_save["email"]
+ else:
+ flash(_(u"Found an existing account for this e-mail address."), category="error")
+ return render_title_template("user_edit.html",
+ translations=translations,
+ languages=languages,
+ mail_configured=config.get_mail_server_configured(),
+ kobo_support=kobo_support,
+ new_user=0,
+ content=content,
+ registered_oauth=oauth_check,
+ title=_(u"Edit User %(nick)s", nick=content.nickname), page="edituser")
+ if "nickname" in to_save and to_save["nickname"] != content.nickname:
+ # Query User nickname, if not existing, change
+ if not ub.session.query(ub.User).filter(ub.User.nickname == to_save["nickname"]).scalar():
+ content.nickname = to_save["nickname"]
+ else:
+ flash(_(u"This username is already taken"), category="error")
+ return render_title_template("user_edit.html",
+ translations=translations,
+ languages=languages,
+ mail_configured=config.get_mail_server_configured(),
+ new_user=0, content=content,
+ registered_oauth=oauth_check,
+ kobo_support=kobo_support,
+ title=_(u"Edit User %(nick)s", nick=content.nickname),
+ page="edituser")
+
+ if "kindle_mail" in to_save and to_save["kindle_mail"] != content.kindle_mail:
+ content.kindle_mail = to_save["kindle_mail"]
+ try:
+ ub.session.commit()
+ flash(_(u"User '%(nick)s' updated", nick=content.nickname), category="success")
+ except IntegrityError:
+ ub.session.rollback()
+ flash(_(u"An unknown error occured."), category="error")
+ except OperationalError:
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
+
+
@admi.route("/admin/user/new", methods=["GET", "POST"])
@login_required
@admin_required
def new_user():
content = ub.User()
- languages = speaking_language()
+ languages = calibre_db.speaking_language()
translations = [LC('en')] + babel.list_translations()
+ kobo_support = feature_support['kobo'] and config.config_kobo_sync
if request.method == "POST":
to_save = request.form.to_dict()
- content.default_language = to_save["default_language"]
- content.mature_content = "Show_mature_content" in to_save
- content.locale = to_save.get("locale", content.locale)
-
- content.sidebar_view = sum(int(key[5:]) for key in to_save if key.startswith('show_'))
- if "show_detail_random" in to_save:
- content.sidebar_view |= constants.DETAIL_RANDOM
-
- content.role = constants.selected_roles(to_save)
-
- if not to_save["nickname"] or not to_save["email"] or not to_save["password"]:
- flash(_(u"Please fill out all fields!"), category="error")
- return render_title_template("user_edit.html", new_user=1, content=content, translations=translations,
- registered_oauth=oauth_check, title=_(u"Add new user"))
- content.password = generate_password_hash(to_save["password"])
- existing_user = ub.session.query(ub.User).filter(func.lower(ub.User.nickname) == to_save["nickname"].lower())\
- .first()
- existing_email = ub.session.query(ub.User).filter(ub.User.email == to_save["email"].lower())\
- .first()
- if not existing_user and not existing_email:
- content.nickname = to_save["nickname"]
- if config.config_public_reg and not check_valid_domain(to_save["email"]):
- flash(_(u"E-mail is not from valid domain"), category="error")
- return render_title_template("user_edit.html", new_user=1, content=content, translations=translations,
- registered_oauth=oauth_check, title=_(u"Add new user"))
- else:
- content.email = to_save["email"]
- else:
- flash(_(u"Found an existing account for this e-mail address or nickname."), category="error")
- return render_title_template("user_edit.html", new_user=1, content=content, translations=translations,
- languages=languages, title=_(u"Add new user"), page="newuser",
- registered_oauth=oauth_check)
- try:
- ub.session.add(content)
- ub.session.commit()
- flash(_(u"User '%(user)s' created", user=content.nickname), category="success")
- return redirect(url_for('admin.admin'))
- except IntegrityError:
- ub.session.rollback()
- flash(_(u"Found an existing account for this e-mail address or nickname."), category="error")
+ _handle_new_user(to_save, content, languages, translations, kobo_support)
else:
content.role = config.config_default_role
content.sidebar_view = config.config_default_show
- content.mature_content = bool(config.config_default_show & constants.MATURE_CONTENT)
return render_title_template("user_edit.html", new_user=1, content=content, translations=translations,
languages=languages, title=_(u"Add new user"), page="newuser",
- registered_oauth=oauth_check)
+ kobo_support=kobo_support, registered_oauth=oauth_check)
@admi.route("/admin/mailsettings")
@@ -495,8 +941,7 @@ def new_user():
@admin_required
def edit_mailsettings():
content = config.get_mail_settings()
- # log.debug("edit_mailsettings %r", content)
- return render_title_template("email_edit.html", content=content, title=_(u"Edit e-mail server settings"),
+ return render_title_template("email_edit.html", content=content, title=_(u"Edit E-mail Server Settings"),
page="mailset")
@@ -505,29 +950,32 @@ def edit_mailsettings():
@admin_required
def update_mailsettings():
to_save = request.form.to_dict()
- log.debug("update_mailsettings %r", to_save)
+ # log.debug("update_mailsettings %r", to_save)
- _config_string = lambda x: config.set_from_dictionary(to_save, x, lambda y: y.strip() if y else y)
- _config_int = lambda x: config.set_from_dictionary(to_save, x, int)
-
- _config_string("mail_server")
- _config_int("mail_port")
- _config_int("mail_use_ssl")
- _config_string("mail_login")
- _config_string("mail_password")
- _config_string("mail_from")
- config.save()
+ _config_string(to_save, "mail_server")
+ _config_int(to_save, "mail_port")
+ _config_int(to_save, "mail_use_ssl")
+ _config_string(to_save, "mail_login")
+ _config_string(to_save, "mail_password")
+ _config_string(to_save, "mail_from")
+ _config_int(to_save, "mail_size", lambda y: int(y)*1024*1024)
+ try:
+ config.save()
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
+ return edit_mailsettings()
if to_save.get("test"):
- if current_user.kindle_mail:
- result = send_test_mail(current_user.kindle_mail, current_user.nickname)
+ if current_user.email:
+ result = send_test_mail(current_user.email, current_user.nickname)
if result is None:
- flash(_(u"Test e-mail successfully send to %(kindlemail)s", kindlemail=current_user.kindle_mail),
+ flash(_(u"Test e-mail successfully send to %(kindlemail)s", kindlemail=current_user.email),
category="success")
else:
flash(_(u"There was an error sending the Test e-mail: %(res)s", res=result), category="error")
else:
- flash(_(u"Please configure your kindle e-mail address first..."), category="error")
+ flash(_(u"Please configure your e-mail address first..."), category="error")
else:
flash(_(u"E-mail server settings updated"), category="success")
@@ -539,116 +987,41 @@ def update_mailsettings():
@admin_required
def edit_user(user_id):
content = ub.session.query(ub.User).filter(ub.User.id == int(user_id)).first() # type: ub.User
- downloads = list()
- languages = speaking_language()
+ if not content or (not config.config_anonbrowse and content.nickname == "Guest"):
+ flash(_(u"User not found"), category="error")
+ return redirect(url_for('admin.admin'))
+ languages = calibre_db.speaking_language()
translations = babel.list_translations() + [LC('en')]
- for book in content.downloads:
- downloadbook = db.session.query(db.Books).filter(db.Books.id == book.book_id).first()
- if downloadbook:
- downloads.append(downloadbook)
- else:
- ub.delete_download(book.book_id)
- # ub.session.query(ub.Downloads).filter(book.book_id == ub.Downloads.book_id).delete()
- # ub.session.commit()
+ kobo_support = feature_support['kobo'] and config.config_kobo_sync
if request.method == "POST":
to_save = request.form.to_dict()
- if "delete" in to_save:
- if ub.session.query(ub.User).filter(and_(ub.User.role.op('&')
- (constants.ROLE_ADMIN)== constants.ROLE_ADMIN,
- ub.User.id != content.id)).count():
- ub.session.query(ub.User).filter(ub.User.id == content.id).delete()
- ub.session.commit()
- flash(_(u"User '%(nick)s' deleted", nick=content.nickname), category="success")
- return redirect(url_for('admin.admin'))
- else:
- flash(_(u"No admin user remaining, can't delete user", nick=content.nickname), category="error")
- return redirect(url_for('admin.admin'))
- else:
- if "password" in to_save and to_save["password"]:
- content.password = generate_password_hash(to_save["password"])
- anonymous = content.is_anonymous
- content.role = constants.selected_roles(to_save)
- if anonymous:
- content.role |= constants.ROLE_ANONYMOUS
- else:
- content.role &= ~constants.ROLE_ANONYMOUS
-
- val = [int(k[5:]) for k in to_save if k.startswith('show_')]
- sidebar = ub.get_sidebar_config()
- for element in sidebar:
- value = element['visibility']
- if value in val and not content.check_visibility(value):
- content.sidebar_view |= value
- elif not value in val and content.check_visibility(value):
- content.sidebar_view &= ~value
-
- if "Show_detail_random" in to_save:
- content.sidebar_view |= constants.DETAIL_RANDOM
- else:
- content.sidebar_view &= ~constants.DETAIL_RANDOM
-
- content.mature_content = "Show_mature_content" in to_save
-
- if "default_language" in to_save:
- content.default_language = to_save["default_language"]
- if "locale" in to_save and to_save["locale"]:
- content.locale = to_save["locale"]
- if to_save["email"] and to_save["email"] != content.email:
- existing_email = ub.session.query(ub.User).filter(ub.User.email == to_save["email"].lower()) \
- .first()
- if not existing_email:
- content.email = to_save["email"]
- else:
- flash(_(u"Found an existing account for this e-mail address."), category="error")
- return render_title_template("user_edit.html", translations=translations, languages=languages,
- new_user=0, content=content, downloads=downloads, registered_oauth=oauth_check,
- title=_(u"Edit User %(nick)s", nick=content.nickname), page="edituser")
- if "nickname" in to_save and to_save["nickname"] != content.nickname:
- # Query User nickname, if not existing, change
- if not ub.session.query(ub.User).filter(ub.User.nickname == to_save["nickname"]).scalar():
- content.nickname = to_save["nickname"]
- else:
- flash(_(u"This username is already taken"), category="error")
- return render_title_template("user_edit.html",
- translations=translations,
- languages=languages,
- new_user=0, content=content,
- downloads=downloads,
- registered_oauth=oauth_check,
- title=_(u"Edit User %(nick)s",
- nick=content.nickname),
- page="edituser")
-
- if "kindle_mail" in to_save and to_save["kindle_mail"] != content.kindle_mail:
- content.kindle_mail = to_save["kindle_mail"]
- try:
- ub.session.commit()
- flash(_(u"User '%(nick)s' updated", nick=content.nickname), category="success")
- except IntegrityError:
- ub.session.rollback()
- flash(_(u"An unknown error occured."), category="error")
- return render_title_template("user_edit.html", translations=translations, languages=languages, new_user=0,
- content=content, downloads=downloads, registered_oauth=oauth_check,
+ _handle_edit_user(to_save, content, languages, translations, kobo_support)
+ return render_title_template("user_edit.html",
+ translations=translations,
+ languages=languages,
+ new_user=0,
+ content=content,
+ registered_oauth=oauth_check,
+ mail_configured=config.get_mail_server_configured(),
+ kobo_support=kobo_support,
title=_(u"Edit User %(nick)s", nick=content.nickname), page="edituser")
@admi.route("/admin/resetpassword/")
@login_required
@admin_required
-def reset_password(user_id):
- if not config.config_public_reg:
- abort(404)
+def reset_user_password(user_id):
if current_user is not None and current_user.is_authenticated:
- existing_user = ub.session.query(ub.User).filter(ub.User.id == user_id).first()
- password = generate_random_password()
- existing_user.password = generate_password_hash(password)
- try:
- ub.session.commit()
- send_registration_mail(existing_user.email, existing_user.nickname, password, True)
- flash(_(u"Password for user %(user)s reset", user=existing_user.nickname), category="success")
- except Exception:
- ub.session.rollback()
+ ret, message = reset_password(user_id)
+ if ret == 1:
+ log.debug(u"Password for user %s reset", message)
+ flash(_(u"Password for user %(user)s reset", user=message), category="success")
+ elif ret == 0:
+ log.error(u"An unknown error occurred. Please try again later.")
flash(_(u"An unknown error occurred. Please try again later."), category="error")
+ else:
+ log.error(u"Please configure the SMTP mail settings first...")
+ flash(_(u"Please configure the SMTP mail settings first..."), category="error")
return redirect(url_for('admin.admin'))
@@ -659,8 +1032,12 @@ def view_logfile():
logfiles = {}
logfiles[0] = logger.get_logfile(config.config_logfile)
logfiles[1] = logger.get_accesslogfile(config.config_access_logfile)
- return render_title_template("logviewer.html",title=_(u"Logfile viewer"), accesslog_enable=config.config_access_log,
- logfiles=logfiles, page="logfile")
+ return render_title_template("logviewer.html",
+ title=_(u"Logfile viewer"),
+ accesslog_enable=config.config_access_log,
+ log_enable=bool(config.config_logfile != logger.LOG_TO_STDOUT),
+ logfiles=logfiles,
+ page="logfile")
@admi.route("/ajax/log/")
@@ -678,10 +1055,33 @@ def send_logfile(logtype):
else:
return ""
+@admi.route("/admin/logdownload/")
+@login_required
+@admin_required
+def download_log(logtype):
+ if logtype == 0:
+ file_name = logger.get_logfile(config.config_logfile)
+ elif logtype == 1:
+ file_name = logger.get_accesslogfile(config.config_access_logfile)
+ else:
+ abort(404)
+ if logger.is_valid_logfile(file_name):
+ return debug_info.assemble_logfiles(file_name)
+ abort(404)
+
+
+@admi.route("/admin/debug")
+@login_required
+@admin_required
+def download_debug():
+ return debug_info.send_debug()
+
@admi.route("/get_update_status", methods=['GET'])
-@login_required_if_no_ano
+@login_required
+@admin_required
def get_update_status():
+ log.info(u"Update status requested")
return updater_thread.get_available_updates(request.method, locale=get_locale())
@@ -704,11 +1104,12 @@ def get_updater_status():
"8": _(u'Update failed:') + u' ' + _(u'HTTP Error'),
"9": _(u'Update failed:') + u' ' + _(u'Connection error'),
"10": _(u'Update failed:') + u' ' + _(u'Timeout while establishing connection'),
- "11": _(u'Update failed:') + u' ' + _(u'General error')
+ "11": _(u'Update failed:') + u' ' + _(u'General error'),
+ "12": _(u'Update failed:') + u' ' + _(u'Update File Could Not be Saved in Temp Dir')
}
status['text'] = text
updater_thread.status = 0
- updater_thread.start()
+ updater_thread.resume()
status['status'] = updater_thread.get_update_status()
elif request.method == "GET":
try:
diff --git a/cps/cache_buster.py b/cps/cache_buster.py
index 02aa7187d..99614dfa8 100644
--- a/cps/cache_buster.py
+++ b/cps/cache_buster.py
@@ -1,3 +1,5 @@
+# -*- coding: utf-8 -*-
+
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
# Copyright (C) 2016-2019 jkrehm andy29485 OzzieIsaacs
#
diff --git a/cps/cli.py b/cps/cli.py
index e76a12cc8..c94cb89d2 100644
--- a/cps/cli.py
+++ b/cps/cli.py
@@ -34,7 +34,7 @@ def version_info():
parser = argparse.ArgumentParser(description='Calibre Web is a web app'
- ' providing a interface for browsing, reading and downloading eBooks\n', prog='cps.py')
+ ' providing a interface for browsing, reading and downloading eBooks\n', prog='cps.py')
parser.add_argument('-p', metavar='path', help='path and name to settings db, e.g. /opt/cw.db')
parser.add_argument('-g', metavar='path', help='path and name to gdrive db, e.g. /opt/gd.db')
parser.add_argument('-c', metavar='path',
@@ -43,7 +43,7 @@ parser.add_argument('-k', metavar='path',
help='path and name to SSL keyfile, e.g. /opt/test.key, works only in combination with certfile')
parser.add_argument('-v', '--version', action='version', help='Shows version number and exits Calibre-web',
version=version_info())
-parser.add_argument('-i', metavar='ip-adress', help='Server IP-Adress to listen')
+parser.add_argument('-i', metavar='ip-address', help='Server IP-Address to listen')
parser.add_argument('-s', metavar='user:pass', help='Sets specific username to new password')
args = parser.parse_args()
diff --git a/cps/comic.py b/cps/comic.py
old mode 100755
new mode 100644
index c950df67d..7e3c7d475
--- a/cps/comic.py
+++ b/cps/comic.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
@@ -19,10 +18,17 @@
from __future__ import division, print_function, unicode_literals
import os
+import io
from . import logger, isoLanguages
from .constants import BookMeta
+try:
+ from PIL import Image as PILImage
+ use_PIL = True
+except ImportError as e:
+ use_PIL = False
+
log = logger.create()
@@ -30,22 +36,51 @@ log = logger.create()
try:
from comicapi.comicarchive import ComicArchive, MetaDataStyle
use_comic_meta = True
-except ImportError as e:
- log.debug('cannot import comicapi, extracting comic metadata will not work: %s', e)
+ try:
+ from comicapi import __version__ as comic_version
+ except ImportError:
+ comic_version = ''
+except (ImportError, LookupError) as e:
+ log.debug('Cannot import comicapi, extracting comic metadata will not work: %s', e)
import zipfile
import tarfile
+ try:
+ import rarfile
+ use_rarfile = True
+ except (ImportError, SyntaxError) as e:
+ log.debug('Cannot import rarfile, extracting cover files from rar files will not work: %s', e)
+ use_rarfile = False
use_comic_meta = False
+def _cover_processing(tmp_file_name, img, extension):
+ if use_PIL:
+ # convert to jpg because calibre only supports jpg
+ if extension in ('.png', '.webp'):
+ imgc = PILImage.open(io.BytesIO(img))
+ im = imgc.convert('RGB')
+ tmp_bytesio = io.BytesIO()
+ im.save(tmp_bytesio, format='JPEG')
+ img = tmp_bytesio.getvalue()
-def extractCover(tmp_file_name, original_file_extension):
+ if not img:
+ return None
+
+ tmp_cover_name = os.path.join(os.path.dirname(tmp_file_name), 'cover.jpg')
+ with open(tmp_cover_name, 'wb') as f:
+ f.write(img)
+ return tmp_cover_name
+
+
+
+def _extractCover(tmp_file_name, original_file_extension, rarExecutable):
+ cover_data = extension = None
if use_comic_meta:
- archive = ComicArchive(tmp_file_name)
- cover_data = None
+ archive = ComicArchive(tmp_file_name, rar_exe_path=rarExecutable)
for index, name in enumerate(archive.getPageNameList()):
ext = os.path.splitext(name)
if len(ext) > 1:
extension = ext[1].lower()
- if extension == '.jpg' or extension == '.jpeg':
+ if extension in ('.jpg', '.jpeg', '.png', '.webp'):
cover_data = archive.getPage(index)
break
else:
@@ -55,7 +90,7 @@ def extractCover(tmp_file_name, original_file_extension):
ext = os.path.splitext(name)
if len(ext) > 1:
extension = ext[1].lower()
- if extension == '.jpg' or extension == '.jpeg':
+ if extension in ('.jpg', '.jpeg', '.png', '.webp'):
cover_data = cf.read(name)
break
elif original_file_extension.upper() == '.CBT':
@@ -64,23 +99,28 @@ def extractCover(tmp_file_name, original_file_extension):
ext = os.path.splitext(name)
if len(ext) > 1:
extension = ext[1].lower()
- if extension == '.jpg' or extension == '.jpeg':
+ if extension in ('.jpg', '.jpeg', '.png', '.webp'):
cover_data = cf.extractfile(name).read()
break
- prefix = os.path.dirname(tmp_file_name)
- if cover_data:
- tmp_cover_name = prefix + '/cover' + extension
- image = open(tmp_cover_name, 'wb')
- image.write(cover_data)
- image.close()
- else:
- tmp_cover_name = None
- return tmp_cover_name
+ elif original_file_extension.upper() == '.CBR' and use_rarfile:
+ try:
+ rarfile.UNRAR_TOOL = rarExecutable
+ cf = rarfile.RarFile(tmp_file_name)
+ for name in cf.getnames():
+ ext = os.path.splitext(name)
+ if len(ext) > 1:
+ extension = ext[1].lower()
+ if extension in ('.jpg', '.jpeg', '.png', '.webp'):
+ cover_data = cf.read(name)
+ break
+ except Exception as e:
+ log.debug('Rarfile failed with error: %s', e)
+ return _cover_processing(tmp_file_name, cover_data, extension)
-def get_comic_info(tmp_file_path, original_file_name, original_file_extension):
+def get_comic_info(tmp_file_path, original_file_name, original_file_extension, rarExecutable):
if use_comic_meta:
- archive = ComicArchive(tmp_file_path)
+ archive = ComicArchive(tmp_file_path, rar_exe_path=rarExecutable)
if archive.seemsToBeAComicArchive():
if archive.hasMetadata(MetaDataStyle.CIX):
style = MetaDataStyle.CIX
@@ -92,36 +132,29 @@ def get_comic_info(tmp_file_path, original_file_name, original_file_extension):
# if style is not None:
loadedMetadata = archive.readMetadata(style)
- lang = loadedMetadata.language
- if lang:
- if len(lang) == 2:
- loadedMetadata.language = isoLanguages.get(part1=lang).name
- elif len(lang) == 3:
- loadedMetadata.language = isoLanguages.get(part3=lang).name
- else:
- loadedMetadata.language = ""
+ lang = loadedMetadata.language or ""
+ loadedMetadata.language = isoLanguages.get_lang3(lang)
- return BookMeta(
+ return BookMeta(
file_path=tmp_file_path,
extension=original_file_extension,
title=loadedMetadata.title or original_file_name,
- author=" & ".join([credit["person"] for credit in loadedMetadata.credits if credit["role"] == "Writer"]) or u"Unknown",
- cover=extractCover(tmp_file_path, original_file_extension),
+ author=" & ".join([credit["person"] for credit in loadedMetadata.credits if credit["role"] == "Writer"]) or u'Unknown',
+ cover=_extractCover(tmp_file_path, original_file_extension, rarExecutable),
description=loadedMetadata.comments or "",
tags="",
series=loadedMetadata.series or "",
series_id=loadedMetadata.issue or "",
languages=loadedMetadata.language)
- else:
- return BookMeta(
- file_path=tmp_file_path,
- extension=original_file_extension,
- title=original_file_name,
- author=u"Unknown",
- cover=extractCover(tmp_file_path, original_file_extension),
- description="",
- tags="",
- series="",
- series_id="",
- languages="")
+ return BookMeta(
+ file_path=tmp_file_path,
+ extension=original_file_extension,
+ title=original_file_name,
+ author=u'Unknown',
+ cover=_extractCover(tmp_file_path, original_file_extension, rarExecutable),
+ description="",
+ tags="",
+ series="",
+ series_id="",
+ languages="")
diff --git a/cps/config_sql.py b/cps/config_sql.py
index 809e97d80..877ad1c20 100644
--- a/cps/config_sql.py
+++ b/cps/config_sql.py
@@ -19,18 +19,26 @@
from __future__ import division, print_function, unicode_literals
import os
-import json
import sys
-from sqlalchemy import exc, Column, String, Integer, SmallInteger, Boolean
+from sqlalchemy import exc, Column, String, Integer, SmallInteger, Boolean, BLOB, JSON
from sqlalchemy.ext.declarative import declarative_base
-from . import constants, cli, logger
+from . import constants, cli, logger, ub
log = logger.create()
_Base = declarative_base()
+class _Flask_Settings(_Base):
+ __tablename__ = 'flask_settings'
+
+ id = Column(Integer, primary_key=True)
+ flask_session_key = Column(BLOB, default="")
+
+ def __init__(self, key):
+ self.flask_session_key = key
+
# Baseclass for representing settings in app.db with email server settings and Calibre database settings
# (application settings)
@@ -38,15 +46,17 @@ class _Settings(_Base):
__tablename__ = 'settings'
id = Column(Integer, primary_key=True)
- mail_server = Column(String, default='mail.example.org')
+ mail_server = Column(String, default=constants.DEFAULT_MAIL_SERVER)
mail_port = Column(Integer, default=25)
mail_use_ssl = Column(SmallInteger, default=0)
mail_login = Column(String, default='mail@example.com')
mail_password = Column(String, default='mypassword')
mail_from = Column(String, default='automailer ')
+ mail_size = Column(Integer, default=25*1024*1024)
config_calibre_dir = Column(String)
config_port = Column(Integer, default=constants.DEFAULT_PORT)
+ config_external_port = Column(Integer, default=constants.DEFAULT_PORT)
config_certfile = Column(String)
config_keyfile = Column(String)
@@ -68,44 +78,58 @@ class _Settings(_Base):
config_anonbrowse = Column(SmallInteger, default=0)
config_public_reg = Column(SmallInteger, default=0)
config_remote_login = Column(Boolean, default=False)
-
+ config_kobo_sync = Column(Boolean, default=False)
config_default_role = Column(SmallInteger, default=0)
- config_default_show = Column(SmallInteger, default=6143)
+ config_default_show = Column(SmallInteger, default=constants.ADMIN_USER_SIDEBAR)
config_columns_to_ignore = Column(String)
+ config_denied_tags = Column(String, default="")
+ config_allowed_tags = Column(String, default="")
+ config_restricted_column = Column(SmallInteger, default=0)
+ config_denied_column_value = Column(String, default="")
+ config_allowed_column_value = Column(String, default="")
+
config_use_google_drive = Column(Boolean, default=False)
config_google_drive_folder = Column(String)
- config_google_drive_watch_changes_response = Column(String)
+ config_google_drive_watch_changes_response = Column(JSON, default={})
config_use_goodreads = Column(Boolean, default=False)
config_goodreads_api_key = Column(String)
config_goodreads_api_secret = Column(String)
-
+ config_register_email = Column(Boolean, default=False)
config_login_type = Column(Integer, default=0)
- # config_oauth_provider = Column(Integer)
+ config_kobo_proxy = Column(Boolean, default=False)
- config_ldap_provider_url = Column(String, default='localhost')
+ config_ldap_provider_url = Column(String, default='example.org')
config_ldap_port = Column(SmallInteger, default=389)
- config_ldap_schema = Column(String, default='ldap')
- config_ldap_serv_username = Column(String)
- config_ldap_serv_password = Column(String)
- config_ldap_use_ssl = Column(Boolean, default=False)
- config_ldap_use_tls = Column(Boolean, default=False)
- config_ldap_require_cert = Column(Boolean, default=False)
- config_ldap_cert_path = Column(String)
- config_ldap_dn = Column(String)
- config_ldap_user_object = Column(String)
- config_ldap_openldap = Column(Boolean, default=False)
+ config_ldap_authentication = Column(SmallInteger, default=constants.LDAP_AUTH_SIMPLE)
+ config_ldap_serv_username = Column(String, default='cn=admin,dc=example,dc=org')
+ config_ldap_serv_password = Column(String, default="")
+ config_ldap_encryption = Column(SmallInteger, default=0)
+ config_ldap_cacert_path = Column(String, default="")
+ config_ldap_cert_path = Column(String, default="")
+ config_ldap_key_path = Column(String, default="")
+ config_ldap_dn = Column(String, default='dc=example,dc=org')
+ config_ldap_user_object = Column(String, default='uid=%s')
+ config_ldap_member_user_object = Column(String, default='') #
+ config_ldap_openldap = Column(Boolean, default=True)
+ config_ldap_group_object_filter = Column(String, default='(&(objectclass=posixGroup)(cn=%s))')
+ config_ldap_group_members_field = Column(String, default='memberUid')
+ config_ldap_group_name = Column(String, default='calibreweb')
- config_ebookconverter = Column(Integer, default=0)
- config_converterpath = Column(String)
+ config_kepubifypath = Column(String, default=None)
+ config_converterpath = Column(String, default=None)
config_calibre = Column(String)
- config_rarfile_location = Column(String)
+ config_rarfile_location = Column(String, default=None)
+ config_upload_formats = Column(String, default=','.join(constants.EXTENSIONS_UPLOAD))
config_updatechannel = Column(Integer, default=constants.UPDATE_STABLE)
+ config_reverse_proxy_login_header_name = Column(String)
+ config_allow_reverse_proxy_header_login = Column(Boolean, default=False)
+
def __repr__(self):
return self.__class__.__name__
@@ -120,6 +144,22 @@ class _ConfigSQL(object):
self.config_calibre_dir = None
self.load()
+ change = False
+ if self.config_converterpath == None:
+ change = True
+ self.config_converterpath = autodetect_calibre_binary()
+
+ if self.config_kepubifypath == None:
+ change = True
+ self.config_kepubifypath = autodetect_kepubify_binary()
+
+ if self.config_rarfile_location == None:
+ change = True
+ self.config_rarfile_location = autodetect_unrar_binary()
+ if change:
+ self.save()
+
+
def _read_from_storage(self):
if self._settings is None:
log.debug("_ConfigSQL._read_from_storage")
@@ -176,12 +216,21 @@ class _ConfigSQL(object):
def show_detail_random(self):
return self.show_element_new_user(constants.DETAIL_RANDOM)
- def show_mature_content(self):
- return self.show_element_new_user(constants.MATURE_CONTENT)
+ def list_denied_tags(self):
+ mct = self.config_denied_tags or ""
+ return [t.strip() for t in mct.split(",")]
- def mature_content_tags(self):
- mct = self.config_mature_content_tags.split(",")
- return [t.strip() for t in mct]
+ def list_allowed_tags(self):
+ mct = self.config_allowed_tags or ""
+ return [t.strip() for t in mct.split(",")]
+
+ def list_denied_column_values(self):
+ mct = self.config_denied_column_value or ""
+ return [t.strip() for t in mct.split(",")]
+
+ def list_allowed_column_values(self):
+ mct = self.config_allowed_column_value or ""
+ return [t.strip() for t in mct.split(",")]
def get_log_level(self):
return logger.get_level_name(self.config_log_level)
@@ -189,7 +238,11 @@ class _ConfigSQL(object):
def get_mail_settings(self):
return {k:v for k, v in self.__dict__.items() if k.startswith('mail_')}
- def set_from_dictionary(self, dictionary, field, convertor=None, default=None):
+ def get_mail_server_configured(self):
+ return not bool(self.mail_server == constants.DEFAULT_MAIL_SERVER)
+
+
+ def set_from_dictionary(self, dictionary, field, convertor=None, default=None, encode=None):
'''Possibly updates a field of this object.
The new value, if present, is grabbed from the given dictionary, and optionally passed through a convertor.
@@ -205,7 +258,10 @@ class _ConfigSQL(object):
return False
if convertor is not None:
- new_value = convertor(new_value)
+ if encode:
+ new_value = convertor(new_value.encode(encode))
+ else:
+ new_value = convertor(new_value)
current_value = self.__dict__.get(field)
if current_value == new_value:
@@ -227,17 +283,19 @@ class _ConfigSQL(object):
v = column.default.arg
setattr(self, k, v)
- if self.config_google_drive_watch_changes_response:
- self.config_google_drive_watch_changes_response = json.loads(self.config_google_drive_watch_changes_response)
-
have_metadata_db = bool(self.config_calibre_dir)
if have_metadata_db:
if not self.config_use_google_drive:
db_file = os.path.join(self.config_calibre_dir, 'metadata.db')
have_metadata_db = os.path.isfile(db_file)
self.db_configured = have_metadata_db
-
- logger.setup(self.config_logfile, self.config_log_level)
+ constants.EXTENSIONS_UPLOAD = [x.lstrip().rstrip().lower() for x in self.config_upload_formats.split(',')]
+ logfile = logger.setup(self.config_logfile, self.config_log_level)
+ if logfile != self.config_logfile:
+ log.warning("Log path %s not valid, falling back to default", self.config_logfile)
+ self.config_logfile = logfile
+ self._session.merge(s)
+ self._session.commit()
def save(self):
'''Apply all configuration values to the underlying storage.'''
@@ -246,8 +304,7 @@ class _ConfigSQL(object):
for k, v in self.__dict__.items():
if k[0] == '_':
continue
- if hasattr(s, k): # and getattr(s, k, None) != v:
- # log.debug("_Settings save '%s' = %r", k, v)
+ if hasattr(s, k):
setattr(s, k, v)
log.debug("_ConfigSQL updating storage")
@@ -255,7 +312,9 @@ class _ConfigSQL(object):
self._session.commit()
self.load()
- def invalidate(self):
+ def invalidate(self, error=None):
+ if error:
+ log.error(error)
log.warning("invalidating configuration")
self.db_configured = False
self.config_calibre_dir = None
@@ -270,12 +329,18 @@ def _migrate_table(session, orm_class):
try:
session.query(column).first()
except exc.OperationalError as err:
- log.debug("%s: %s", column_name, err)
+ log.debug("%s: %s", column_name, err.args[0])
if column.default is not None:
if sys.version_info < (3, 0):
- if isinstance(column.default.arg,unicode):
+ if isinstance(column.default.arg, unicode):
column.default.arg = column.default.arg.encode('utf-8')
- column_default = "" if column.default is None else ("DEFAULT %r" % column.default.arg)
+ if column.default is None:
+ column_default = ""
+ else:
+ if isinstance(column.default.arg, bool):
+ column_default = ("DEFAULT %r" % int(column.default.arg))
+ else:
+ column_default = ("DEFAULT %r" % column.default.arg)
alter_table = "ALTER TABLE %s ADD COLUMN `%s` %s %s" % (orm_class.__tablename__,
column_name,
column.type,
@@ -287,22 +352,47 @@ def _migrate_table(session, orm_class):
if changed:
session.commit()
+
def autodetect_calibre_binary():
if sys.platform == "win32":
- calibre_path = ["C:\\program files\calibre\calibre-convert.exe",
- "C:\\program files(x86)\calibre\calibre-convert.exe"]
+ calibre_path = ["C:\\program files\\calibre\\ebook-convert.exe",
+ "C:\\program files(x86)\\calibre\\ebook-convert.exe",
+ "C:\\program files(x86)\\calibre2\\ebook-convert.exe",
+ "C:\\program files\\calibre2\\ebook-convert.exe"]
else:
calibre_path = ["/opt/calibre/ebook-convert"]
for element in calibre_path:
if os.path.isfile(element) and os.access(element, os.X_OK):
return element
- return None
+ return ""
+def autodetect_unrar_binary():
+ if sys.platform == "win32":
+ calibre_path = ["C:\\program files\\WinRar\\unRAR.exe",
+ "C:\\program files(x86)\\WinRar\\unRAR.exe"]
+ else:
+ calibre_path = ["/usr/bin/unrar"]
+ for element in calibre_path:
+ if os.path.isfile(element) and os.access(element, os.X_OK):
+ return element
+ return ""
+
+def autodetect_kepubify_binary():
+ if sys.platform == "win32":
+ calibre_path = ["C:\\program files\\kepubify\\kepubify-windows-64Bit.exe",
+ "C:\\program files(x86)\\kepubify\\kepubify-windows-64Bit.exe"]
+ else:
+ calibre_path = ["/opt/kepubify/kepubify-linux-64bit", "/opt/kepubify/kepubify-linux-32bit"]
+ for element in calibre_path:
+ if os.path.isfile(element) and os.access(element, os.X_OK):
+ return element
+ return ""
def _migrate_database(session):
# make sure the table is created, if it does not exist
_Base.metadata.create_all(session.bind)
_migrate_table(session, _Settings)
+ _migrate_table(session, _Flask_Settings)
def load_configuration(session):
@@ -311,5 +401,20 @@ def load_configuration(session):
if not session.query(_Settings).count():
session.add(_Settings())
session.commit()
+ conf = _ConfigSQL(session)
+ # Migrate from global restrictions to user based restrictions
+ if bool(conf.config_default_show & constants.MATURE_CONTENT) and conf.config_denied_tags == "":
+ conf.config_denied_tags = conf.config_mature_content_tags
+ conf.save()
+ session.query(ub.User).filter(ub.User.mature_content != True). \
+ update({"denied_tags": conf.config_mature_content_tags}, synchronize_session=False)
+ session.commit()
+ return conf
- return _ConfigSQL(session)
+def get_flask_session_key(session):
+ flask_settings = session.query(_Flask_Settings).one_or_none()
+ if flask_settings == None:
+ flask_settings = _Flask_Settings(os.urandom(32))
+ session.add(flask_settings)
+ session.commit()
+ return flask_settings.flask_session_key
diff --git a/cps/constants.py b/cps/constants.py
index 97b134035..c1bcbe592 100644
--- a/cps/constants.py
+++ b/cps/constants.py
@@ -80,9 +80,12 @@ MATURE_CONTENT = 1 << 11
SIDEBAR_PUBLISHER = 1 << 12
SIDEBAR_RATING = 1 << 13
SIDEBAR_FORMAT = 1 << 14
+SIDEBAR_ARCHIVED = 1 << 15
+SIDEBAR_DOWNLOAD = 1 << 16
+SIDEBAR_LIST = 1 << 17
-ADMIN_USER_ROLES = sum(r for r in ALL_ROLES.values()) & ~ROLE_EDIT_SHELFS & ~ROLE_ANONYMOUS
-ADMIN_USER_SIDEBAR = (SIDEBAR_FORMAT << 1) - 1
+ADMIN_USER_ROLES = sum(r for r in ALL_ROLES.values()) & ~ROLE_ANONYMOUS
+ADMIN_USER_SIDEBAR = (SIDEBAR_LIST << 1) - 1
UPDATE_STABLE = 0 << 0
AUTO_UPDATE_STABLE = 1 << 0
@@ -92,25 +95,28 @@ AUTO_UPDATE_NIGHTLY = 1 << 2
LOGIN_STANDARD = 0
LOGIN_LDAP = 1
LOGIN_OAUTH = 2
-# LOGIN_OAUTH_GOOGLE = 3
+LDAP_AUTH_ANONYMOUS = 0
+LDAP_AUTH_UNAUTHENTICATE = 1
+LDAP_AUTH_SIMPLE = 0
+
+DEFAULT_MAIL_SERVER = "mail.example.org"
DEFAULT_PASSWORD = "admin123"
DEFAULT_PORT = 8083
+env_CALIBRE_PORT = os.environ.get("CALIBRE_PORT", DEFAULT_PORT)
try:
- env_CALIBRE_PORT = os.environ.get("CALIBRE_PORT", DEFAULT_PORT)
DEFAULT_PORT = int(env_CALIBRE_PORT)
except ValueError:
print('Environment variable CALIBRE_PORT has invalid value (%s), faling back to default (8083)' % env_CALIBRE_PORT)
del env_CALIBRE_PORT
-EXTENSIONS_AUDIO = {'mp3', 'm4a', 'm4b'}
-EXTENSIONS_CONVERT = {'pdf', 'epub', 'mobi', 'azw3', 'docx', 'rtf', 'fb2', 'lit', 'lrf', 'txt', 'htmlz', 'rtf', 'odt'}
-EXTENSIONS_UPLOAD = {'txt', 'pdf', 'epub', 'mobi', 'azw', 'azw3', 'cbr', 'cbz', 'cbt', 'djvu', 'prc', 'doc', 'docx',
- 'fb2', 'html', 'rtf', 'odt', 'mp3', 'm4a', 'm4b'}
-# EXTENSIONS_READER = set(['txt', 'pdf', 'epub', 'zip', 'cbz', 'tar', 'cbt'] +
-# (['rar','cbr'] if feature_support['rar'] else []))
+EXTENSIONS_AUDIO = {'mp3', 'mp4', 'ogg', 'opus', 'wav', 'flac', 'm4a', 'm4b'}
+EXTENSIONS_CONVERT_FROM = ['pdf', 'epub', 'mobi', 'azw3', 'docx', 'rtf', 'fb2', 'lit', 'lrf', 'txt', 'htmlz', 'rtf', 'odt','cbz','cbr']
+EXTENSIONS_CONVERT_TO = ['pdf', 'epub', 'mobi', 'azw3', 'docx', 'rtf', 'fb2', 'lit', 'lrf', 'txt', 'htmlz', 'rtf', 'odt']
+EXTENSIONS_UPLOAD = {'txt', 'pdf', 'epub', 'kepub', 'mobi', 'azw', 'azw3', 'cbr', 'cbz', 'cbt', 'djvu', 'prc', 'doc', 'docx',
+ 'fb2', 'html', 'rtf', 'lit', 'odt', 'mp3', 'mp4', 'ogg', 'opus', 'wav', 'flac', 'm4a', 'm4b'}
def has_flag(value, bit_flag):
@@ -124,7 +130,7 @@ def selected_roles(dictionary):
BookMeta = namedtuple('BookMeta', 'file_path, extension, title, author, cover, description, tags, series, '
'series_id, languages')
-STABLE_VERSION = {'version': '0.6.5 Beta'}
+STABLE_VERSION = {'version': '0.6.10 Beta'}
NIGHTLY_VERSION = {}
NIGHTLY_VERSION[0] = '$Format:%H$'
diff --git a/cps/converter.py b/cps/converter.py
index d3482e5f9..2ff736662 100644
--- a/cps/converter.py
+++ b/cps/converter.py
@@ -29,8 +29,8 @@ log = logger.create()
# _() necessary to make babel aware of string for translation
_NOT_CONFIGURED = _('not configured')
-_NOT_INSTALLED = 'not installed'
-_EXECUTION_ERROR = 'Execution permissions missing'
+_NOT_INSTALLED = _('not installed')
+_EXECUTION_ERROR = _('Execution permissions missing')
def _get_command_version(path, pattern, argument=None):
@@ -48,10 +48,15 @@ def _get_command_version(path, pattern, argument=None):
return _NOT_INSTALLED
-def get_version():
- version = None
- if config.config_ebookconverter == 1:
- version = _get_command_version(config.config_converterpath, r'Amazon kindlegen\(')
- elif config.config_ebookconverter == 2:
- version = _get_command_version(config.config_converterpath, r'ebook-convert.*\(calibre', '--version')
- return version or _NOT_CONFIGURED
+def get_calibre_version():
+ return _get_command_version(config.config_converterpath, r'ebook-convert.*\(calibre', '--version') \
+ or _NOT_CONFIGURED
+
+
+def get_unrar_version():
+ return _get_command_version(config.config_rarfile_location, r'UNRAR.*\d') or _NOT_CONFIGURED
+
+def get_kepubify_version():
+ return _get_command_version(config.config_kepubifypath, r'kepubify\s','--version') or _NOT_CONFIGURED
+
+
diff --git a/cps/db.py b/cps/db.py
old mode 100755
new mode 100644
index b9853896a..f648a7947
--- a/cps/db.py
+++ b/cps/db.py
@@ -22,59 +22,77 @@ import sys
import os
import re
import ast
+import json
+from datetime import datetime
from sqlalchemy import create_engine
-from sqlalchemy import Table, Column, ForeignKey
-from sqlalchemy import String, Integer, Boolean
+from sqlalchemy import Table, Column, ForeignKey, CheckConstraint
+from sqlalchemy import String, Integer, Boolean, TIMESTAMP, Float
from sqlalchemy.orm import relationship, sessionmaker, scoped_session
-from sqlalchemy.ext.declarative import declarative_base
+from sqlalchemy.orm.collections import InstrumentedList
+from sqlalchemy.ext.declarative import declarative_base, DeclarativeMeta
+from sqlalchemy.pool import StaticPool
+from flask_login import current_user
+from sqlalchemy.sql.expression import and_, true, false, text, func, or_
+from sqlalchemy.ext.associationproxy import association_proxy
+from babel import Locale as LC
+from babel.core import UnknownLocaleError
+from flask_babel import gettext as _
+from . import logger, ub, isoLanguages
+from .pagination import Pagination
-session = None
-cc_exceptions = ['datetime', 'comments', 'float', 'composite', 'series']
+from weakref import WeakSet
+
+try:
+ import unidecode
+ use_unidecode = True
+except ImportError:
+ use_unidecode = False
+
+cc_exceptions = ['datetime', 'comments', 'composite', 'series']
cc_classes = {}
-
Base = declarative_base()
books_authors_link = Table('books_authors_link', Base.metadata,
- Column('book', Integer, ForeignKey('books.id'), primary_key=True),
- Column('author', Integer, ForeignKey('authors.id'), primary_key=True)
- )
+ Column('book', Integer, ForeignKey('books.id'), primary_key=True),
+ Column('author', Integer, ForeignKey('authors.id'), primary_key=True)
+ )
books_tags_link = Table('books_tags_link', Base.metadata,
- Column('book', Integer, ForeignKey('books.id'), primary_key=True),
- Column('tag', Integer, ForeignKey('tags.id'), primary_key=True)
- )
+ Column('book', Integer, ForeignKey('books.id'), primary_key=True),
+ Column('tag', Integer, ForeignKey('tags.id'), primary_key=True)
+ )
books_series_link = Table('books_series_link', Base.metadata,
- Column('book', Integer, ForeignKey('books.id'), primary_key=True),
- Column('series', Integer, ForeignKey('series.id'), primary_key=True)
- )
+ Column('book', Integer, ForeignKey('books.id'), primary_key=True),
+ Column('series', Integer, ForeignKey('series.id'), primary_key=True)
+ )
books_ratings_link = Table('books_ratings_link', Base.metadata,
- Column('book', Integer, ForeignKey('books.id'), primary_key=True),
- Column('rating', Integer, ForeignKey('ratings.id'), primary_key=True)
- )
+ Column('book', Integer, ForeignKey('books.id'), primary_key=True),
+ Column('rating', Integer, ForeignKey('ratings.id'), primary_key=True)
+ )
books_languages_link = Table('books_languages_link', Base.metadata,
- Column('book', Integer, ForeignKey('books.id'), primary_key=True),
- Column('lang_code', Integer, ForeignKey('languages.id'), primary_key=True)
- )
+ Column('book', Integer, ForeignKey('books.id'), primary_key=True),
+ Column('lang_code', Integer, ForeignKey('languages.id'), primary_key=True)
+ )
books_publishers_link = Table('books_publishers_link', Base.metadata,
- Column('book', Integer, ForeignKey('books.id'), primary_key=True),
- Column('publisher', Integer, ForeignKey('publishers.id'), primary_key=True)
- )
+ Column('book', Integer, ForeignKey('books.id'), primary_key=True),
+ Column('publisher', Integer, ForeignKey('publishers.id'), primary_key=True)
+ )
class Identifiers(Base):
__tablename__ = 'identifiers'
id = Column(Integer, primary_key=True)
- type = Column(String)
- val = Column(String)
- book = Column(Integer, ForeignKey('books.id'))
+ type = Column(String(collation='NOCASE'), nullable=False, default="isbn")
+ val = Column(String(collation='NOCASE'), nullable=False)
+ book = Column(Integer, ForeignKey('books.id'), nullable=False)
def __init__(self, val, id_type, book):
self.val = val
@@ -82,41 +100,61 @@ class Identifiers(Base):
self.book = book
def formatType(self):
- if self.type == "amazon":
+ format_type = self.type.lower()
+ if format_type == 'amazon':
return u"Amazon"
- elif self.type == "isbn":
+ elif format_type.startswith("amazon_"):
+ return u"Amazon.{0}".format(format_type[7:])
+ elif format_type == "isbn":
return u"ISBN"
- elif self.type == "doi":
+ elif format_type == "doi":
return u"DOI"
- elif self.type == "goodreads":
+ elif format_type == "douban":
+ return u"Douban"
+ elif format_type == "goodreads":
return u"Goodreads"
- elif self.type == "google":
+ elif format_type == "google":
return u"Google Books"
- elif self.type == "kobo":
+ elif format_type == "kobo":
return u"Kobo"
- if self.type == "lubimyczytac":
+ elif format_type == "litres":
+ return u"ЛитРес"
+ elif format_type == "issn":
+ return u"ISSN"
+ elif format_type == "isfdb":
+ return u"ISFDB"
+ if format_type == "lubimyczytac":
return u"Lubimyczytac"
else:
return self.type
def __repr__(self):
- if self.type == "amazon":
- return u"https://amzn.com/{0}".format(self.val)
- elif self.type == "isbn":
- return u"http://www.worldcat.org/isbn/{0}".format(self.val)
- elif self.type == "doi":
- return u"http://dx.doi.org/{0}".format(self.val)
- elif self.type == "goodreads":
- return u"http://www.goodreads.com/book/show/{0}".format(self.val)
- elif self.type == "douban":
+ format_type = self.type.lower()
+ if format_type == "amazon" or format_type == "asin":
+ return u"https://amazon.com/dp/{0}".format(self.val)
+ elif format_type.startswith('amazon_'):
+ return u"https://amazon.{0}/dp/{1}".format(format_type[7:], self.val)
+ elif format_type == "isbn":
+ return u"https://www.worldcat.org/isbn/{0}".format(self.val)
+ elif format_type == "doi":
+ return u"https://dx.doi.org/{0}".format(self.val)
+ elif format_type == "goodreads":
+ return u"https://www.goodreads.com/book/show/{0}".format(self.val)
+ elif format_type == "douban":
return u"https://book.douban.com/subject/{0}".format(self.val)
- elif self.type == "google":
+ elif format_type == "google":
return u"https://books.google.com/books?id={0}".format(self.val)
- elif self.type == "kobo":
+ elif format_type == "kobo":
return u"https://www.kobo.com/ebook/{0}".format(self.val)
- elif self.type == "lubimyczytac":
- return u" http://lubimyczytac.pl/ksiazka/{0}".format(self.val)
- elif self.type == "url":
+ elif format_type == "lubimyczytac":
+ return u"https://lubimyczytac.pl/ksiazka/{0}/ksiazka".format(self.val)
+ elif format_type == "litres":
+ return u"https://www.litres.ru/{0}".format(self.val)
+ elif format_type == "issn":
+ return u"https://portal.issn.org/resource/ISSN/{0}".format(self.val)
+ elif format_type == "isfdb":
+ return u"http://www.isfdb.org/cgi-bin/pl.cgi?{0}".format(self.val)
+ elif format_type == "url":
return u"{0}".format(self.val)
else:
return u""
@@ -126,13 +164,16 @@ class Comments(Base):
__tablename__ = 'comments'
id = Column(Integer, primary_key=True)
- text = Column(String)
- book = Column(Integer, ForeignKey('books.id'))
+ text = Column(String(collation='NOCASE'), nullable=False)
+ book = Column(Integer, ForeignKey('books.id'), nullable=False)
def __init__(self, text, book):
self.text = text
self.book = book
+ def get(self):
+ return self.text
+
def __repr__(self):
return u"".format(self.text)
@@ -141,11 +182,14 @@ class Tags(Base):
__tablename__ = 'tags'
id = Column(Integer, primary_key=True, autoincrement=True)
- name = Column(String)
+ name = Column(String(collation='NOCASE'), unique=True, nullable=False)
def __init__(self, name):
self.name = name
+ def get(self):
+ return self.name
+
def __repr__(self):
return u"".format(self.name)
@@ -154,15 +198,18 @@ class Authors(Base):
__tablename__ = 'authors'
id = Column(Integer, primary_key=True)
- name = Column(String)
- sort = Column(String)
- link = Column(String)
+ name = Column(String(collation='NOCASE'), unique=True, nullable=False)
+ sort = Column(String(collation='NOCASE'))
+ link = Column(String, nullable=False, default="")
def __init__(self, name, sort, link):
self.name = name
self.sort = sort
self.link = link
+ def get(self):
+ return self.name
+
def __repr__(self):
return u"".format(self.name, self.sort, self.link)
@@ -171,13 +218,16 @@ class Series(Base):
__tablename__ = 'series'
id = Column(Integer, primary_key=True)
- name = Column(String)
- sort = Column(String)
+ name = Column(String(collation='NOCASE'), unique=True, nullable=False)
+ sort = Column(String(collation='NOCASE'))
def __init__(self, name, sort):
self.name = name
self.sort = sort
+ def get(self):
+ return self.name
+
def __repr__(self):
return u"".format(self.name, self.sort)
@@ -186,11 +236,14 @@ class Ratings(Base):
__tablename__ = 'ratings'
id = Column(Integer, primary_key=True)
- rating = Column(Integer)
+ rating = Column(Integer, CheckConstraint('rating>-1 AND rating<11'), unique=True)
def __init__(self, rating):
self.rating = rating
+ def get(self):
+ return self.rating
+
def __repr__(self):
return u"".format(self.rating)
@@ -199,11 +252,17 @@ class Languages(Base):
__tablename__ = 'languages'
id = Column(Integer, primary_key=True)
- lang_code = Column(String)
+ lang_code = Column(String(collation='NOCASE'), nullable=False, unique=True)
def __init__(self, lang_code):
self.lang_code = lang_code
+ def get(self):
+ if self.language_name:
+ return self.language_name
+ else:
+ return self.lang_code
+
def __repr__(self):
return u"".format(self.lang_code)
@@ -212,25 +271,29 @@ class Publishers(Base):
__tablename__ = 'publishers'
id = Column(Integer, primary_key=True)
- name = Column(String)
- sort = Column(String)
+ name = Column(String(collation='NOCASE'), nullable=False, unique=True)
+ sort = Column(String(collation='NOCASE'))
def __init__(self, name, sort):
self.name = name
self.sort = sort
+ def get(self):
+ return self.name
+
def __repr__(self):
return u"".format(self.name, self.sort)
class Data(Base):
__tablename__ = 'data'
+ __table_args__ = {'schema': 'calibre'}
id = Column(Integer, primary_key=True)
- book = Column(Integer, ForeignKey('books.id'))
- format = Column(String)
- uncompressed_size = Column(Integer)
- name = Column(String)
+ book = Column(Integer, ForeignKey('books.id'), nullable=False)
+ format = Column(String(collation='NOCASE'), nullable=False)
+ uncompressed_size = Column(Integer, nullable=False)
+ name = Column(String, nullable=False)
def __init__(self, book, book_format, uncompressed_size, name):
self.book = book
@@ -238,6 +301,10 @@ class Data(Base):
self.uncompressed_size = uncompressed_size
self.name = name
+ # ToDo: Check
+ def get(self):
+ return self.name
+
def __repr__(self):
return u"".format(self.book, self.format, self.uncompressed_size, self.name)
@@ -245,22 +312,25 @@ class Data(Base):
class Books(Base):
__tablename__ = 'books'
- DEFAULT_PUBDATE = "0101-01-01 00:00:00+00:00"
+ DEFAULT_PUBDATE = datetime(101, 1, 1, 0, 0, 0, 0) # ("0101-01-01 00:00:00+00:00")
- id = Column(Integer, primary_key=True)
- title = Column(String)
- sort = Column(String)
- author_sort = Column(String)
- timestamp = Column(String)
- pubdate = Column(String)
- series_index = Column(String)
- last_modified = Column(String)
- path = Column(String)
- has_cover = Column(Integer)
+ id = Column(Integer, primary_key=True, autoincrement=True)
+ title = Column(String(collation='NOCASE'), nullable=False, default='Unknown')
+ sort = Column(String(collation='NOCASE'))
+ author_sort = Column(String(collation='NOCASE'))
+ timestamp = Column(TIMESTAMP, default=datetime.utcnow)
+ pubdate = Column(TIMESTAMP, default=DEFAULT_PUBDATE)
+ series_index = Column(String, nullable=False, default="1.0")
+ last_modified = Column(TIMESTAMP, default=datetime.utcnow)
+ path = Column(String, default="", nullable=False)
+ has_cover = Column(Integer, default=0)
uuid = Column(String)
+ isbn = Column(String(collation='NOCASE'), default="")
+ # Iccn = Column(String(collation='NOCASE'), default="")
+ flags = Column(Integer, nullable=False, default=1)
authors = relationship('Authors', secondary=books_authors_link, backref='books')
- tags = relationship('Tags', secondary=books_tags_link, backref='books',order_by="Tags.name")
+ tags = relationship('Tags', secondary=books_tags_link, backref='books', order_by="Tags.name")
comments = relationship('Comments', backref='books')
data = relationship('Data', backref='books')
series = relationship('Series', secondary=books_series_link, backref='books')
@@ -279,7 +349,8 @@ class Books(Base):
self.series_index = series_index
self.last_modified = last_modified
self.path = path
- self.has_cover = has_cover
+ self.has_cover = (has_cover != None)
+
def __repr__(self):
return u"".format(self.title, self.sort, self.author_sort,
@@ -288,7 +359,8 @@ class Books(Base):
@property
def atom_timestamp(self):
- return (self.timestamp or '').replace(' ', 'T')
+ return (self.timestamp.strftime('%Y-%m-%dT%H:%M:%S+00:00') or '')
+
class Custom_Columns(Base):
__tablename__ = 'custom_columns'
@@ -310,121 +382,387 @@ class Custom_Columns(Base):
return display_dict
-def update_title_sort(config, conn=None):
- # user defined sort function for calibre databases (Series, etc.)
- def _title_sort(title):
- # calibre sort stuff
- title_pat = re.compile(config.config_title_regex, re.IGNORECASE)
- match = title_pat.search(title)
- if match:
- prep = match.group(1)
- title = title.replace(prep, '') + ', ' + prep
- return title.strip()
+class AlchemyEncoder(json.JSONEncoder):
- conn = conn or session.connection().connection.connection
- conn.create_function("title_sort", 1, _title_sort)
+ def default(self, obj):
+ if isinstance(obj.__class__, DeclarativeMeta):
+ # an SQLAlchemy class
+ fields = {}
+ for field in [x for x in dir(obj) if not x.startswith('_') and x != 'metadata']:
+ if field == 'books':
+ continue
+ data = obj.__getattribute__(field)
+ try:
+ if isinstance(data, str):
+ data = data.replace("'", "\'")
+ elif isinstance(data, InstrumentedList):
+ el = list()
+ for ele in data:
+ if ele.get:
+ el.append(ele.get())
+ else:
+ el.append(json.dumps(ele, cls=AlchemyEncoder))
+ data = ",".join(el)
+ if data == '[]':
+ data = ""
+ else:
+ json.dumps(data)
+ fields[field] = data
+ except:
+ fields[field] = ""
+ # a json-encodable dict
+ return fields
+
+ return json.JSONEncoder.default(self, obj)
-def setup_db(config):
- dispose()
+class CalibreDB():
+ _init = False
+ engine = None
+ config = None
+ session_factory = None
+ # This is a WeakSet so that references here don't keep other CalibreDB
+ # instances alive once they reach the end of their respective scopes
+ instances = WeakSet()
- if not config.config_calibre_dir:
- config.invalidate()
- return False
+ def __init__(self):
+ """ Initialize a new CalibreDB session
+ """
+ self.session = None
+ if self._init:
+ self.initSession()
- dbpath = os.path.join(config.config_calibre_dir, "metadata.db")
- if not os.path.exists(dbpath):
- config.invalidate()
- return False
+ self.instances.add(self)
- try:
- engine = create_engine('sqlite:///{0}'.format(dbpath),
- echo=False,
- isolation_level="SERIALIZABLE",
- connect_args={'check_same_thread': False})
- conn = engine.connect()
- except:
- config.invalidate()
- return False
- config.db_configured = True
- update_title_sort(config, conn.connection)
- # conn.connection.create_function('lower', 1, lcase)
- # conn.connection.create_function('upper', 1, ucase)
+ def initSession(self):
+ self.session = self.session_factory()
+ self.update_title_sort(self.config)
- if not cc_classes:
- cc = conn.execute("SELECT id, datatype FROM custom_columns")
+ @classmethod
+ def setup_db(cls, config, app_db_path):
+ cls.config = config
+ cls.dispose()
+
+ if not config.config_calibre_dir:
+ config.invalidate()
+ return False
+
+ dbpath = os.path.join(config.config_calibre_dir, "metadata.db")
+ if not os.path.exists(dbpath):
+ config.invalidate()
+ return False
+
+ try:
+ cls.engine = create_engine('sqlite://',
+ echo=False,
+ isolation_level="SERIALIZABLE",
+ connect_args={'check_same_thread': False},
+ poolclass=StaticPool)
+ cls.engine.execute("attach database '{}' as calibre;".format(dbpath))
+ cls.engine.execute("attach database '{}' as app_settings;".format(app_db_path))
+
+ conn = cls.engine.connect()
+ # conn.text_factory = lambda b: b.decode(errors = 'ignore') possible fix for #1302
+ except Exception as e:
+ config.invalidate(e)
+ return False
+
+ config.db_configured = True
+
+ if not cc_classes:
+ cc = conn.execute("SELECT id, datatype FROM custom_columns")
+
+ cc_ids = []
+ books_custom_column_links = {}
+ for row in cc:
+ if row.datatype not in cc_exceptions:
+ if row.datatype == 'series':
+ dicttable = {'__tablename__': 'books_custom_column_' + str(row.id) + '_link',
+ 'id': Column(Integer, primary_key=True),
+ 'book': Column(Integer, ForeignKey('books.id'),
+ primary_key=True),
+ 'map_value': Column('value', Integer,
+ ForeignKey('custom_column_' +
+ str(row.id) + '.id'),
+ primary_key=True),
+ 'extra': Column(Float),
+ 'asoc': relationship('custom_column_' + str(row.id), uselist=False),
+ 'value': association_proxy('asoc', 'value')
+ }
+ books_custom_column_links[row.id] = type(str('books_custom_column_' + str(row.id) + '_link'),
+ (Base,), dicttable)
+ else:
+ books_custom_column_links[row.id] = Table('books_custom_column_' + str(row.id) + '_link',
+ Base.metadata,
+ Column('book', Integer, ForeignKey('books.id'),
+ primary_key=True),
+ Column('value', Integer,
+ ForeignKey('custom_column_' +
+ str(row.id) + '.id'),
+ primary_key=True)
+ )
+ cc_ids.append([row.id, row.datatype])
- cc_ids = []
- books_custom_column_links = {}
- for row in cc:
- if row.datatype not in cc_exceptions:
- books_custom_column_links[row.id] = Table('books_custom_column_' + str(row.id) + '_link', Base.metadata,
- Column('book', Integer, ForeignKey('books.id'),
- primary_key=True),
- Column('value', Integer,
- ForeignKey('custom_column_' + str(row.id) + '.id'),
- primary_key=True)
- )
- cc_ids.append([row.id, row.datatype])
- if row.datatype == 'bool':
ccdict = {'__tablename__': 'custom_column_' + str(row.id),
- 'id': Column(Integer, primary_key=True),
- 'book': Column(Integer, ForeignKey('books.id')),
- 'value': Column(Boolean)}
- elif row.datatype == 'int':
- ccdict = {'__tablename__': 'custom_column_' + str(row.id),
- 'id': Column(Integer, primary_key=True),
- 'book': Column(Integer, ForeignKey('books.id')),
- 'value': Column(Integer)}
+ 'id': Column(Integer, primary_key=True)}
+ if row.datatype == 'float':
+ ccdict['value'] = Column(Float)
+ elif row.datatype == 'int':
+ ccdict['value'] = Column(Integer)
+ elif row.datatype == 'bool':
+ ccdict['value'] = Column(Boolean)
+ else:
+ ccdict['value'] = Column(String)
+ if row.datatype in ['float', 'int', 'bool']:
+ ccdict['book'] = Column(Integer, ForeignKey('books.id'))
+ cc_classes[row.id] = type(str('custom_column_' + str(row.id)), (Base,), ccdict)
+
+ for cc_id in cc_ids:
+ if (cc_id[1] == 'bool') or (cc_id[1] == 'int') or (cc_id[1] == 'float'):
+ setattr(Books,
+ 'custom_column_' + str(cc_id[0]),
+ relationship(cc_classes[cc_id[0]],
+ primaryjoin=(
+ Books.id == cc_classes[cc_id[0]].book),
+ backref='books'))
+ elif (cc_id[1] == 'series'):
+ setattr(Books,
+ 'custom_column_' + str(cc_id[0]),
+ relationship(books_custom_column_links[cc_id[0]],
+ backref='books'))
else:
- ccdict = {'__tablename__': 'custom_column_' + str(row.id),
- 'id': Column(Integer, primary_key=True),
- 'value': Column(String)}
- cc_classes[row.id] = type(str('Custom_Column_' + str(row.id)), (Base,), ccdict)
+ setattr(Books,
+ 'custom_column_' + str(cc_id[0]),
+ relationship(cc_classes[cc_id[0]],
+ secondary=books_custom_column_links[cc_id[0]],
+ backref='books'))
- for cc_id in cc_ids:
- if (cc_id[1] == 'bool') or (cc_id[1] == 'int'):
- setattr(Books, 'custom_column_' + str(cc_id[0]), relationship(cc_classes[cc_id[0]],
- primaryjoin=(
- Books.id == cc_classes[cc_id[0]].book),
- backref='books'))
- else:
- setattr(Books, 'custom_column_' + str(cc_id[0]), relationship(cc_classes[cc_id[0]],
- secondary=books_custom_column_links[cc_id[0]],
- backref='books'))
+ cls.session_factory = scoped_session(sessionmaker(autocommit=False,
+ autoflush=True,
+ bind=cls.engine))
+ for inst in cls.instances:
+ inst.initSession()
+
+ cls._init = True
+ return True
+
+ def get_book(self, book_id):
+ return self.session.query(Books).filter(Books.id == book_id).first()
+
+ def get_filtered_book(self, book_id, allow_show_archived=False):
+ return self.session.query(Books).filter(Books.id == book_id). \
+ filter(self.common_filters(allow_show_archived)).first()
+
+ def get_book_by_uuid(self, book_uuid):
+ return self.session.query(Books).filter(Books.uuid == book_uuid).first()
+
+ def get_book_format(self, book_id, format):
+ return self.session.query(Data).filter(Data.book == book_id).filter(Data.format == format).first()
+
+ # Language and content filters for displaying in the UI
+ def common_filters(self, allow_show_archived=False):
+ if not allow_show_archived:
+ archived_books = (
+ ub.session.query(ub.ArchivedBook)
+ .filter(ub.ArchivedBook.user_id == int(current_user.id))
+ .filter(ub.ArchivedBook.is_archived == True)
+ .all()
+ )
+ archived_book_ids = [archived_book.book_id for archived_book in archived_books]
+ archived_filter = Books.id.notin_(archived_book_ids)
+ else:
+ archived_filter = true()
+
+ if current_user.filter_language() != "all":
+ lang_filter = Books.languages.any(Languages.lang_code == current_user.filter_language())
+ else:
+ lang_filter = true()
+ negtags_list = current_user.list_denied_tags()
+ postags_list = current_user.list_allowed_tags()
+ neg_content_tags_filter = false() if negtags_list == [''] else Books.tags.any(Tags.name.in_(negtags_list))
+ pos_content_tags_filter = true() if postags_list == [''] else Books.tags.any(Tags.name.in_(postags_list))
+ if self.config.config_restricted_column:
+ pos_cc_list = current_user.allowed_column_value.split(',')
+ pos_content_cc_filter = true() if pos_cc_list == [''] else \
+ getattr(Books, 'custom_column_' + str(self.config.config_restricted_column)). \
+ any(cc_classes[self.config.config_restricted_column].value.in_(pos_cc_list))
+ neg_cc_list = current_user.denied_column_value.split(',')
+ neg_content_cc_filter = false() if neg_cc_list == [''] else \
+ getattr(Books, 'custom_column_' + str(self.config.config_restricted_column)). \
+ any(cc_classes[self.config.config_restricted_column].value.in_(neg_cc_list))
+ else:
+ pos_content_cc_filter = true()
+ neg_content_cc_filter = false()
+ return and_(lang_filter, pos_content_tags_filter, ~neg_content_tags_filter,
+ pos_content_cc_filter, ~neg_content_cc_filter, archived_filter)
+
+ # Fill indexpage with all requested data from database
+ def fill_indexpage(self, page, pagesize, database, db_filter, order, *join):
+ return self.fill_indexpage_with_archived_books(page, pagesize, database, db_filter, order, False, *join)
+
+ def fill_indexpage_with_archived_books(self, page, pagesize, database, db_filter, order, allow_show_archived,
+ *join):
+ pagesize = pagesize or self.config.config_books_per_page
+ if current_user.show_detail_random():
+ randm = self.session.query(Books) \
+ .filter(self.common_filters(allow_show_archived)) \
+ .order_by(func.random()) \
+ .limit(self.config.config_random_books)
+ else:
+ randm = false()
+ off = int(int(pagesize) * (page - 1))
+ query = self.session.query(database) \
+ .join(*join, isouter=True) \
+ .filter(db_filter) \
+ .filter(self.common_filters(allow_show_archived))
+ pagination = Pagination(page, pagesize,
+ len(query.all()))
+ entries = query.order_by(*order).offset(off).limit(pagesize).all()
+ for book in entries:
+ book = self.order_authors(book)
+ return entries, randm, pagination
+
+ # Orders all Authors in the list according to authors sort
+ def order_authors(self, entry):
+ sort_authors = entry.author_sort.split('&')
+ authors_ordered = list()
+ error = False
+ ids = [a.id for a in entry.authors]
+ for auth in sort_authors:
+ results = self.session.query(Authors).filter(Authors.sort == auth.lstrip().strip()).all()
+ # ToDo: How to handle not found authorname
+ if not len(results):
+ error = True
+ break
+ for r in results:
+ if r.id in ids:
+ authors_ordered.append(r)
+ if not error:
+ entry.authors = authors_ordered
+ return entry
+
+ def get_typeahead(self, database, query, replace=('', ''), tag_filter=true()):
+ query = query or ''
+ self.session.connection().connection.connection.create_function("lower", 1, lcase)
+ entries = self.session.query(database).filter(tag_filter). \
+ filter(func.lower(database.name).ilike("%" + query + "%")).all()
+ json_dumps = json.dumps([dict(name=r.name.replace(*replace)) for r in entries])
+ return json_dumps
+
+ def check_exists_book(self, authr, title):
+ self.session.connection().connection.connection.create_function("lower", 1, lcase)
+ q = list()
+ authorterms = re.split(r'\s*&\s*', authr)
+ for authorterm in authorterms:
+ q.append(Books.authors.any(func.lower(Authors.name).ilike("%" + authorterm + "%")))
+
+ return self.session.query(Books) \
+ .filter(and_(Books.authors.any(and_(*q)), func.lower(Books.title).ilike("%" + title + "%"))).first()
+
+ # read search results from calibre-database and return it (function is used for feed and simple search
+ def get_search_results(self, term, offset=None, order=None, limit=None):
+ order = order or [Books.sort]
+ pagination = None
+ term.strip().lower()
+ self.session.connection().connection.connection.create_function("lower", 1, lcase)
+ q = list()
+ authorterms = re.split("[, ]+", term)
+ for authorterm in authorterms:
+ q.append(Books.authors.any(func.lower(Authors.name).ilike("%" + authorterm + "%")))
+ result = self.session.query(Books).filter(self.common_filters(True)).filter(
+ or_(Books.tags.any(func.lower(Tags.name).ilike("%" + term + "%")),
+ Books.series.any(func.lower(Series.name).ilike("%" + term + "%")),
+ Books.authors.any(and_(*q)),
+ Books.publishers.any(func.lower(Publishers.name).ilike("%" + term + "%")),
+ func.lower(Books.title).ilike("%" + term + "%")
+ )).order_by(*order).all()
+ result_count = len(result)
+ if offset != None and limit != None:
+ offset = int(offset)
+ limit_all = offset + int(limit)
+ pagination = Pagination((offset / (int(limit)) + 1), limit, result_count)
+ else:
+ offset = 0
+ limit_all = result_count
+
+ ub.store_ids(result)
+ return result[offset:limit_all], result_count, pagination
+
+ # Creates for all stored languages a translated speaking name in the array for the UI
+ def speaking_language(self, languages=None):
+ from . import get_locale
+
+ if not languages:
+ languages = self.session.query(Languages) \
+ .join(books_languages_link) \
+ .join(Books) \
+ .filter(self.common_filters()) \
+ .group_by(text('books_languages_link.lang_code')).all()
+ for lang in languages:
+ try:
+ cur_l = LC.parse(lang.lang_code)
+ lang.name = cur_l.get_language_name(get_locale())
+ except UnknownLocaleError:
+ lang.name = _(isoLanguages.get(part3=lang.lang_code).name)
+ return languages
+
+ def update_title_sort(self, config, conn=None):
+ # user defined sort function for calibre databases (Series, etc.)
+ def _title_sort(title):
+ # calibre sort stuff
+ title_pat = re.compile(config.config_title_regex, re.IGNORECASE)
+ match = title_pat.search(title)
+ if match:
+ prep = match.group(1)
+ title = title[len(prep):] + ', ' + prep
+ return title.strip()
+
+ conn = conn or self.session.connection().connection.connection
+ conn.create_function("title_sort", 1, _title_sort)
+
+ @classmethod
+ def dispose(cls):
+ # global session
+
+ for inst in cls.instances:
+ old_session = inst.session
+ inst.session = None
+ if old_session:
+ try:
+ old_session.close()
+ except:
+ pass
+ if old_session.bind:
+ try:
+ old_session.bind.dispose()
+ except Exception:
+ pass
+
+ for attr in list(Books.__dict__.keys()):
+ if attr.startswith("custom_column_"):
+ setattr(Books, attr, None)
+
+ for db_class in cc_classes.values():
+ Base.metadata.remove(db_class.__table__)
+ cc_classes.clear()
+
+ for table in reversed(Base.metadata.sorted_tables):
+ name = table.key
+ if name.startswith("custom_column_") or name.startswith("books_custom_column_"):
+ if table is not None:
+ Base.metadata.remove(table)
+
+ def reconnect_db(self, config, app_db_path):
+ self.dispose()
+ self.engine.dispose()
+ self.setup_db(config, app_db_path)
- global session
- Session = scoped_session(sessionmaker(autocommit=False,
- autoflush=False,
- bind=engine))
- session = Session()
- return True
-
-
-def dispose():
- global session
-
- old_session = session
- session = None
- if old_session:
- try: old_session.close()
- except: pass
- if old_session.bind:
- try: old_session.bind.dispose()
- except: pass
-
- for attr in list(Books.__dict__.keys()):
- if attr.startswith("custom_column_"):
- setattr(Books, attr, None)
-
- for db_class in cc_classes.values():
- Base.metadata.remove(db_class.__table__)
- cc_classes.clear()
-
- for table in reversed(Base.metadata.sorted_tables):
- name = table.key
- if name.startswith("custom_column_") or name.startswith("books_custom_column_"):
- if table is not None:
- Base.metadata.remove(table)
+def lcase(s):
+ try:
+ return unidecode.unidecode(s.lower())
+ except Exception as e:
+ log = logger.create()
+ log.exception(e)
+ return s.lower()
diff --git a/cps/debug_info.py b/cps/debug_info.py
new file mode 100644
index 000000000..75ef3bb8a
--- /dev/null
+++ b/cps/debug_info.py
@@ -0,0 +1,55 @@
+# -*- coding: utf-8 -*-
+
+# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
+# Copyright (C) 2012-2019 cervinko, idalin, SiphonSquirrel, ouzklcn, akushsky,
+# OzzieIsaacs, bodybybuddha, jkrehm, matthazinski, janeczku
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+import shutil
+import glob
+import zipfile
+import json
+import io
+import os
+
+from flask import send_file
+
+from . import logger, config
+from .about import collect_stats
+
+log = logger.create()
+
+def assemble_logfiles(file_name):
+ log_list = glob.glob(file_name + '*')
+ wfd = io.StringIO()
+ for f in log_list:
+ with open(f, 'r') as fd:
+ shutil.copyfileobj(fd, wfd)
+ return send_file(wfd,
+ as_attachment=True,
+ attachment_filename=os.path.basename(file_name))
+
+def send_debug():
+ file_list = glob.glob(logger.get_logfile(config.config_logfile) + '*')
+ file_list.extend(glob.glob(logger.get_accesslogfile(config.config_access_logfile) + '*'))
+ memory_zip = io.BytesIO()
+ with zipfile.ZipFile(memory_zip, 'w', compression=zipfile.ZIP_DEFLATED) as zf:
+ zf.writestr('libs.txt', json.dumps(collect_stats()))
+ for fp in file_list:
+ zf.write(fp, os.path.basename(fp))
+ memory_zip.seek(0)
+ return send_file(memory_zip,
+ as_attachment=True,
+ attachment_filename="Calibre-Web-debug-pack.zip")
diff --git a/cps/editbooks.py b/cps/editbooks.py
index f0156f71c..7d207ed3d 100644
--- a/cps/editbooks.py
+++ b/cps/editbooks.py
@@ -22,18 +22,21 @@
from __future__ import division, print_function, unicode_literals
import os
-import datetime
+from datetime import datetime
import json
-from shutil import move, copyfile
+from shutil import copyfile
from uuid import uuid4
from flask import Blueprint, request, flash, redirect, url_for, abort, Markup, Response
from flask_babel import gettext as _
from flask_login import current_user, login_required
+from sqlalchemy.exc import OperationalError
from . import constants, logger, isoLanguages, gdriveutils, uploader, helper
-from . import config, get_locale, db, ub, worker
-from .helper import order_authors, common_filters
+from . import config, get_locale, ub, db
+from . import calibre_db
+from .services.worker import WorkerThread
+from .tasks.upload import TaskUpload
from .web import login_required_if_no_ano, render_title_template, edit_required, upload_required
@@ -47,7 +50,7 @@ def modify_database_object(input_elements, db_book_object, db_object, db_session
# passing input_elements not as a list may lead to undesired results
if not isinstance(input_elements, list):
raise TypeError(str(input_elements) + " should be passed as a list")
-
+ changed = False
input_elements = [x for x in input_elements if x != '']
# we have all input element (authors, series, tags) names now
# 1. search for elements to remove
@@ -88,6 +91,7 @@ def modify_database_object(input_elements, db_book_object, db_object, db_session
if len(del_elements) > 0:
for del_element in del_elements:
db_book_object.remove(del_element)
+ changed = True
if len(del_element.books) == 0:
db_session.delete(del_element)
# if there are elements to add, we add them now!
@@ -114,102 +118,176 @@ def modify_database_object(input_elements, db_book_object, db_object, db_session
else: # db_type should be tag or language
new_element = db_object(add_element)
if db_element is None:
+ changed = True
db_session.add(new_element)
db_book_object.append(new_element)
else:
if db_type == 'custom':
if db_element.value != add_element:
new_element.value = add_element
- # new_element = db_element
elif db_type == 'languages':
if db_element.lang_code != add_element:
db_element.lang_code = add_element
- # new_element = db_element
elif db_type == 'series':
if db_element.name != add_element:
- db_element.name = add_element # = add_element # new_element = db_object(add_element, add_element)
+ db_element.name = add_element
db_element.sort = add_element
- # new_element = db_element
elif db_type == 'author':
if db_element.name != add_element:
db_element.name = add_element
db_element.sort = add_element.replace('|', ',')
- # new_element = db_element
elif db_type == 'publisher':
if db_element.name != add_element:
db_element.name = add_element
db_element.sort = None
- # new_element = db_element
elif db_element.name != add_element:
db_element.name = add_element
- # new_element = db_element
# add element to book
+ changed = True
db_book_object.append(db_element)
+ return changed
-@editbook.route("/delete//", defaults={'book_format': ""})
-@editbook.route("/delete///")
+def modify_identifiers(input_identifiers, db_identifiers, db_session):
+ """Modify Identifiers to match input information.
+ input_identifiers is a list of read-to-persist Identifiers objects.
+ db_identifiers is a list of already persisted list of Identifiers objects."""
+ changed = False
+ error = False
+ input_dict = dict([(identifier.type.lower(), identifier) for identifier in input_identifiers])
+ if len(input_identifiers) != len(input_dict):
+ error = True
+ db_dict = dict([(identifier.type.lower(), identifier) for identifier in db_identifiers ])
+ # delete db identifiers not present in input or modify them with input val
+ for identifier_type, identifier in db_dict.items():
+ if identifier_type not in input_dict.keys():
+ db_session.delete(identifier)
+ changed = True
+ else:
+ input_identifier = input_dict[identifier_type]
+ identifier.type = input_identifier.type
+ identifier.val = input_identifier.val
+ # add input identifiers not present in db
+ for identifier_type, identifier in input_dict.items():
+ if identifier_type not in db_dict.keys():
+ db_session.add(identifier)
+ changed = True
+ return changed, error
+
+@editbook.route("/ajax/delete/")
@login_required
-def delete_book(book_id, book_format):
+def delete_book_from_details(book_id):
+ return Response(delete_book(book_id,"", True), mimetype='application/json')
+
+
+@editbook.route("/delete/", defaults={'book_format': ""})
+@editbook.route("/delete//")
+@login_required
+def delete_book_ajax(book_id, book_format):
+ return delete_book(book_id,book_format, False)
+
+def delete_book(book_id, book_format, jsonResponse):
+ warning = {}
if current_user.role_delete_books():
- book = db.session.query(db.Books).filter(db.Books.id == book_id).first()
+ book = calibre_db.get_book(book_id)
if book:
- helper.delete_book(book, config.config_calibre_dir, book_format=book_format.upper())
- if not book_format:
- # delete book from Shelfs, Downloads, Read list
- ub.session.query(ub.BookShelf).filter(ub.BookShelf.book_id == book_id).delete()
- ub.session.query(ub.ReadBook).filter(ub.ReadBook.book_id == book_id).delete()
- ub.delete_download(book_id)
- ub.session.commit()
-
- # check if only this book links to:
- # author, language, series, tags, custom columns
- modify_database_object([u''], book.authors, db.Authors, db.session, 'author')
- modify_database_object([u''], book.tags, db.Tags, db.session, 'tags')
- modify_database_object([u''], book.series, db.Series, db.session, 'series')
- modify_database_object([u''], book.languages, db.Languages, db.session, 'languages')
- modify_database_object([u''], book.publishers, db.Publishers, db.session, 'publishers')
-
- cc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all()
- for c in cc:
- cc_string = "custom_column_" + str(c.id)
- if not c.is_multiple:
- if len(getattr(book, cc_string)) > 0:
- if c.datatype == 'bool' or c.datatype == 'integer':
- del_cc = getattr(book, cc_string)[0]
- getattr(book, cc_string).remove(del_cc)
- db.session.delete(del_cc)
- elif c.datatype == 'rating':
- del_cc = getattr(book, cc_string)[0]
- getattr(book, cc_string).remove(del_cc)
- if len(del_cc.books) == 0:
- db.session.delete(del_cc)
- else:
- del_cc = getattr(book, cc_string)[0]
- getattr(book, cc_string).remove(del_cc)
- db.session.delete(del_cc)
+ try:
+ result, error = helper.delete_book(book, config.config_calibre_dir, book_format=book_format.upper())
+ if not result:
+ if jsonResponse:
+ return json.dumps({"location": url_for("editbook.edit_book"),
+ "type": "alert",
+ "format": "",
+ "error": error}),
else:
- modify_database_object([u''], getattr(book, cc_string), db.cc_classes[c.id],
- db.session, 'custom')
- db.session.query(db.Books).filter(db.Books.id == book_id).delete()
- else:
- db.session.query(db.Data).filter(db.Data.book == book.id).filter(db.Data.format == book_format).delete()
- db.session.commit()
+ flash(error, category="error")
+ return redirect(url_for('editbook.edit_book', book_id=book_id))
+ if error:
+ if jsonResponse:
+ warning = {"location": url_for("editbook.edit_book"),
+ "type": "warning",
+ "format": "",
+ "error": error}
+ else:
+ flash(error, category="warning")
+ if not book_format:
+ # delete book from Shelfs, Downloads, Read list
+ ub.session.query(ub.BookShelf).filter(ub.BookShelf.book_id == book_id).delete()
+ ub.session.query(ub.ReadBook).filter(ub.ReadBook.book_id == book_id).delete()
+ ub.delete_download(book_id)
+ ub.session.commit()
+
+ # check if only this book links to:
+ # author, language, series, tags, custom columns
+ modify_database_object([u''], book.authors, db.Authors, calibre_db.session, 'author')
+ modify_database_object([u''], book.tags, db.Tags, calibre_db.session, 'tags')
+ modify_database_object([u''], book.series, db.Series, calibre_db.session, 'series')
+ modify_database_object([u''], book.languages, db.Languages, calibre_db.session, 'languages')
+ modify_database_object([u''], book.publishers, db.Publishers, calibre_db.session, 'publishers')
+
+ cc = calibre_db.session.query(db.Custom_Columns).\
+ filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all()
+ for c in cc:
+ cc_string = "custom_column_" + str(c.id)
+ if not c.is_multiple:
+ if len(getattr(book, cc_string)) > 0:
+ if c.datatype == 'bool' or c.datatype == 'integer' or c.datatype == 'float':
+ del_cc = getattr(book, cc_string)[0]
+ getattr(book, cc_string).remove(del_cc)
+ log.debug('remove ' + str(c.id))
+ calibre_db.session.delete(del_cc)
+ calibre_db.session.commit()
+ elif c.datatype == 'rating':
+ del_cc = getattr(book, cc_string)[0]
+ getattr(book, cc_string).remove(del_cc)
+ if len(del_cc.books) == 0:
+ log.debug('remove ' + str(c.id))
+ calibre_db.session.delete(del_cc)
+ calibre_db.session.commit()
+ else:
+ del_cc = getattr(book, cc_string)[0]
+ getattr(book, cc_string).remove(del_cc)
+ log.debug('remove ' + str(c.id))
+ calibre_db.session.delete(del_cc)
+ calibre_db.session.commit()
+ else:
+ modify_database_object([u''], getattr(book, cc_string), db.cc_classes[c.id],
+ calibre_db.session, 'custom')
+ calibre_db.session.query(db.Books).filter(db.Books.id == book_id).delete()
+ else:
+ calibre_db.session.query(db.Data).filter(db.Data.book == book.id).\
+ filter(db.Data.format == book_format).delete()
+ calibre_db.session.commit()
+ except Exception as e:
+ log.exception(e)
+ calibre_db.session.rollback()
else:
# book not found
log.error('Book with id "%s" could not be deleted: not found', book_id)
if book_format:
- return redirect(url_for('editbook.edit_book', book_id=book_id))
+ if jsonResponse:
+ return json.dumps([warning, {"location": url_for("editbook.edit_book", book_id=book_id),
+ "type": "success",
+ "format": book_format,
+ "message": _('Book Format Successfully Deleted')}])
+ else:
+ flash(_('Book Format Successfully Deleted'), category="success")
+ return redirect(url_for('editbook.edit_book', book_id=book_id))
else:
- return redirect(url_for('web.index'))
+ if jsonResponse:
+ return json.dumps([warning, {"location": url_for('web.index'),
+ "type": "success",
+ "format": book_format,
+ "message": _('Book Successfully Deleted')}])
+ else:
+ flash(_('Book Successfully Deleted'), category="success")
+ return redirect(url_for('web.index'))
def render_edit_book(book_id):
- db.update_title_sort(config)
- cc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all()
- book = db.session.query(db.Books)\
- .filter(db.Books.id == book_id).filter(common_filters()).first()
-
+ calibre_db.update_title_sort(config)
+ cc = calibre_db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all()
+ book = calibre_db.get_filtered_book(book_id)
if not book:
flash(_(u"Error opening eBook. File does not exist or file is not accessible"), category="error")
return redirect(url_for("web.index"))
@@ -217,7 +295,7 @@ def render_edit_book(book_id):
for lang in book.languages:
lang.language_name = isoLanguages.get_language_name(get_locale(), lang.lang_code)
- book = order_authors(book)
+ book = calibre_db.order_authors(book)
author_names = []
for authr in book.authors:
@@ -225,27 +303,129 @@ def render_edit_book(book_id):
# Option for showing convertbook button
valid_source_formats=list()
- if config.config_ebookconverter == 2:
+ allowed_conversion_formats = list()
+ kepub_possible=None
+ if config.config_converterpath:
for file in book.data:
- if file.format.lower() in constants.EXTENSIONS_CONVERT:
+ if file.format.lower() in constants.EXTENSIONS_CONVERT_FROM:
valid_source_formats.append(file.format.lower())
+ if config.config_kepubifypath and 'epub' in [file.format.lower() for file in book.data]:
+ kepub_possible = True
+ if not config.config_converterpath:
+ valid_source_formats.append('epub')
# Determine what formats don't already exist
- allowed_conversion_formats = constants.EXTENSIONS_CONVERT.copy()
- for file in book.data:
- try:
- allowed_conversion_formats.remove(file.format.lower())
- except Exception:
- log.warning('%s already removed from list.', file.format.lower())
-
+ if config.config_converterpath:
+ allowed_conversion_formats = constants.EXTENSIONS_CONVERT_TO[:]
+ for file in book.data:
+ if file.format.lower() in allowed_conversion_formats:
+ allowed_conversion_formats.remove(file.format.lower())
+ if kepub_possible:
+ allowed_conversion_formats.append('kepub')
return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc,
title=_(u"edit metadata"), page="editbook",
conversion_formats=allowed_conversion_formats,
+ config=config,
source_formats=valid_source_formats)
+def edit_book_ratings(to_save, book):
+ changed = False
+ if to_save["rating"].strip():
+ old_rating = False
+ if len(book.ratings) > 0:
+ old_rating = book.ratings[0].rating
+ ratingx2 = int(float(to_save["rating"]) * 2)
+ if ratingx2 != old_rating:
+ changed = True
+ is_rating = calibre_db.session.query(db.Ratings).filter(db.Ratings.rating == ratingx2).first()
+ if is_rating:
+ book.ratings.append(is_rating)
+ else:
+ new_rating = db.Ratings(rating=ratingx2)
+ book.ratings.append(new_rating)
+ if old_rating:
+ book.ratings.remove(book.ratings[0])
+ else:
+ if len(book.ratings) > 0:
+ book.ratings.remove(book.ratings[0])
+ changed = True
+ return changed
+
+def edit_book_tags(tags, book):
+ input_tags = tags.split(',')
+ input_tags = list(map(lambda it: it.strip(), input_tags))
+ # Remove duplicates
+ input_tags = helper.uniq(input_tags)
+ return modify_database_object(input_tags, book.tags, db.Tags, calibre_db.session, 'tags')
+
+
+def edit_book_series(series, book):
+ input_series = [series.strip()]
+ input_series = [x for x in input_series if x != '']
+ return modify_database_object(input_series, book.series, db.Series, calibre_db.session, 'series')
+
+
+def edit_book_series_index(series_index, book):
+ # Add default series_index to book
+ modif_date = False
+ series_index = series_index or '1'
+ if book.series_index != series_index:
+ book.series_index = series_index
+ modif_date = True
+ return modif_date
+
+# Handle book comments/description
+def edit_book_comments(comments, book):
+ modif_date = False
+ if len(book.comments):
+ if book.comments[0].text != comments:
+ book.comments[0].text = comments
+ modif_date = True
+ else:
+ if comments:
+ book.comments.append(db.Comments(text=comments, book=book.id))
+ modif_date = True
+ return modif_date
+
+
+def edit_book_languages(languages, book, upload=False):
+ input_languages = languages.split(',')
+ unknown_languages = []
+ if not upload:
+ input_l = isoLanguages.get_language_codes(get_locale(), input_languages, unknown_languages)
+ else:
+ input_l = isoLanguages.get_valid_language_codes(get_locale(), input_languages, unknown_languages)
+ for l in unknown_languages:
+ log.error('%s is not a valid language', l)
+ flash(_(u"%(langname)s is not a valid language", langname=l), category="warning")
+ # ToDo: Not working correct
+ if upload and len(input_l) == 1:
+ # If the language of the file is excluded from the users view, it's not imported, to allow the user to view
+ # the book it's language is set to the filter language
+ if input_l[0] != current_user.filter_language() and current_user.filter_language() != "all":
+ input_l[0] = calibre_db.session.query(db.Languages). \
+ filter(db.Languages.lang_code == current_user.filter_language()).first().lang_code
+ # Remove duplicates
+ input_l = helper.uniq(input_l)
+ return modify_database_object(input_l, book.languages, db.Languages, calibre_db.session, 'languages')
+
+
+def edit_book_publisher(to_save, book):
+ changed = False
+ if to_save["publisher"]:
+ publisher = to_save["publisher"].rstrip().strip()
+ if len(book.publishers) == 0 or (len(book.publishers) > 0 and publisher != book.publishers[0].name):
+ changed |= modify_database_object([publisher], book.publishers, db.Publishers, calibre_db.session,
+ 'publisher')
+ elif len(book.publishers):
+ changed |= modify_database_object([], book.publishers, db.Publishers, calibre_db.session, 'publisher')
+ return changed
+
+
def edit_cc_data(book_id, book, to_save):
- cc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all()
+ changed = False
+ cc = calibre_db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all()
for c in cc:
cc_string = "custom_column_" + str(c.id)
if not c.is_multiple:
@@ -254,7 +434,7 @@ def edit_cc_data(book_id, book, to_save):
else:
cc_db_value = None
if to_save[cc_string].strip():
- if c.datatype == 'int' or c.datatype == 'bool':
+ if c.datatype == 'int' or c.datatype == 'bool' or c.datatype == 'float':
if to_save[cc_string] == 'None':
to_save[cc_string] = None
elif c.datatype == 'bool':
@@ -264,14 +444,17 @@ def edit_cc_data(book_id, book, to_save):
if cc_db_value is not None:
if to_save[cc_string] is not None:
setattr(getattr(book, cc_string)[0], 'value', to_save[cc_string])
+ changed = True
else:
del_cc = getattr(book, cc_string)[0]
getattr(book, cc_string).remove(del_cc)
- db.session.delete(del_cc)
+ calibre_db.session.delete(del_cc)
+ changed = True
else:
cc_class = db.cc_classes[c.id]
new_cc = cc_class(value=to_save[cc_string], book=book_id)
- db.session.add(new_cc)
+ calibre_db.session.add(new_cc)
+ changed = True
else:
if c.datatype == 'rating':
@@ -282,16 +465,18 @@ def edit_cc_data(book_id, book, to_save):
del_cc = getattr(book, cc_string)[0]
getattr(book, cc_string).remove(del_cc)
if len(del_cc.books) == 0:
- db.session.delete(del_cc)
+ calibre_db.session.delete(del_cc)
+ changed = True
cc_class = db.cc_classes[c.id]
- new_cc = db.session.query(cc_class).filter(
+ new_cc = calibre_db.session.query(cc_class).filter(
cc_class.value == to_save[cc_string].strip()).first()
# if no cc val is found add it
if new_cc is None:
new_cc = cc_class(value=to_save[cc_string].strip())
- db.session.add(new_cc)
- db.session.flush()
- new_cc = db.session.query(cc_class).filter(
+ calibre_db.session.add(new_cc)
+ changed = True
+ calibre_db.session.flush()
+ new_cc = calibre_db.session.query(cc_class).filter(
cc_class.value == to_save[cc_string].strip()).first()
# add cc value to book
getattr(book, cc_string).append(new_cc)
@@ -301,13 +486,17 @@ def edit_cc_data(book_id, book, to_save):
del_cc = getattr(book, cc_string)[0]
getattr(book, cc_string).remove(del_cc)
if not del_cc.books or len(del_cc.books) == 0:
- db.session.delete(del_cc)
+ calibre_db.session.delete(del_cc)
+ changed = True
else:
input_tags = to_save[cc_string].split(',')
input_tags = list(map(lambda it: it.strip(), input_tags))
- modify_database_object(input_tags, getattr(book, cc_string), db.cc_classes[c.id], db.session,
- 'custom')
- return cc
+ changed |= modify_database_object(input_tags,
+ getattr(book, cc_string),
+ db.cc_classes[c.id],
+ calibre_db.session,
+ 'custom')
+ return changed
def upload_single_file(request, book, book_id):
# Check and handle Uploaded file
@@ -315,9 +504,11 @@ def upload_single_file(request, book, book_id):
requested_file = request.files['btn-upload-format']
# check for empty request
if requested_file.filename != '':
+ if not current_user.role_upload():
+ abort(403)
if '.' in requested_file.filename:
file_ext = requested_file.filename.rsplit('.', 1)[-1].lower()
- if file_ext not in constants.EXTENSIONS_UPLOAD:
+ if file_ext not in constants.EXTENSIONS_UPLOAD and '' not in constants.EXTENSIONS_UPLOAD:
flash(_("File extension '%(ext)s' is not allowed to be uploaded to this server", ext=file_ext),
category="error")
return redirect(url_for('web.show_book', book_id=book.id))
@@ -343,22 +534,31 @@ def upload_single_file(request, book, book_id):
return redirect(url_for('web.show_book', book_id=book.id))
file_size = os.path.getsize(saved_filename)
- is_format = db.session.query(db.Data).filter(db.Data.book == book_id).\
- filter(db.Data.format == file_ext.upper()).first()
+ is_format = calibre_db.get_book_format(book_id, file_ext.upper())
# Format entry already exists, no need to update the database
if is_format:
log.warning('Book format %s already existing', file_ext.upper())
else:
- db_format = db.Data(book_id, file_ext.upper(), file_size, file_name)
- db.session.add(db_format)
- db.session.commit()
- db.update_title_sort(config)
+ try:
+ db_format = db.Data(book_id, file_ext.upper(), file_size, file_name)
+ calibre_db.session.add(db_format)
+ calibre_db.session.commit()
+ calibre_db.update_title_sort(config)
+ except OperationalError as e:
+ calibre_db.session.rollback()
+ log.error('Database error: %s', e)
+ flash(_(u"Database error: %(error)s.", error=e), category="error")
+ return redirect(url_for('web.show_book', book_id=book.id))
# Queue uploader info
uploadText=_(u"File format %(ext)s added to %(book)s", ext=file_ext.upper(), book=book.title)
- worker.add_upload(current_user.nickname,
- "" + uploadText + " ")
+ WorkerThread.add(current_user.nickname, TaskUpload(
+ "" + uploadText + " "))
+
+ return uploader.process(
+ saved_filename, *os.path.splitext(requested_file.filename),
+ rarExecutable=config.config_rarfile_location)
def upload_cover(request, book):
@@ -366,11 +566,13 @@ def upload_cover(request, book):
requested_file = request.files['btn-upload-cover']
# check for empty request
if requested_file.filename != '':
- if helper.save_cover(requested_file, book.path) is True:
+ if not current_user.role_upload():
+ abort(403)
+ ret, message = helper.save_cover(requested_file, book.path)
+ if ret is True:
return True
else:
- # ToDo Message not always coorect
- flash(_(u"Cover is not a supported imageformat (jpg/png/webp), can't save"), category="error")
+ flash(message, category="error")
return False
return None
@@ -379,48 +581,54 @@ def upload_cover(request, book):
@login_required_if_no_ano
@edit_required
def edit_book(book_id):
+ modif_date = False
# Show form
if request.method != 'POST':
return render_edit_book(book_id)
# create the function for sorting...
- db.update_title_sort(config)
- book = db.session.query(db.Books)\
- .filter(db.Books.id == book_id).filter(common_filters()).first()
+ calibre_db.update_title_sort(config)
+ book = calibre_db.get_filtered_book(book_id, allow_show_archived=True)
# Book not found
if not book:
flash(_(u"Error opening eBook. File does not exist or file is not accessible"), category="error")
return redirect(url_for("web.index"))
- upload_single_file(request, book, book_id)
+ meta = upload_single_file(request, book, book_id)
if upload_cover(request, book) is True:
book.has_cover = 1
+ modif_date = True
try:
to_save = request.form.to_dict()
+ merge_metadata(to_save, meta)
# Update book
edited_books_id = None
+
#handle book title
if book.title != to_save["book_title"].rstrip().strip():
if to_save["book_title"] == '':
- to_save["book_title"] = _(u'unknown')
+ to_save["book_title"] = _(u'Unknown')
book.title = to_save["book_title"].rstrip().strip()
edited_books_id = book.id
+ modif_date = True
# handle author(s)
input_authors = to_save["author_name"].split('&')
input_authors = list(map(lambda it: it.strip().replace(',', '|'), input_authors))
+ # Remove duplicates in authors list
+ input_authors = helper.uniq(input_authors)
# we have all author names now
if input_authors == ['']:
- input_authors = [_(u'unknown')] # prevent empty Author
+ input_authors = [_(u'Unknown')] # prevent empty Author
- modify_database_object(input_authors, book.authors, db.Authors, db.session, 'author')
+ modif_date |= modify_database_object(input_authors, book.authors, db.Authors, calibre_db.session, 'author')
# Search for each author if author is in database, if not, authorname and sorted authorname is generated new
# everything then is assembled for sorted author field in database
sort_authors_list = list()
for inp in input_authors:
- stored_author = db.session.query(db.Authors).filter(db.Authors.name == inp).first()
+ stored_author = calibre_db.session.query(db.Authors).filter(db.Authors.name == inp).first()
if not stored_author:
stored_author = helper.get_sorted_author(inp)
else:
@@ -430,7 +638,7 @@ def edit_book(book_id):
if book.author_sort != sort_authors:
edited_books_id = book.id
book.author_sort = sort_authors
-
+ modif_date = True
if config.config_use_google_drive:
gdriveutils.updateGdriveCalibreFromLocal()
@@ -440,79 +648,62 @@ def edit_book(book_id):
error = helper.update_dir_stucture(edited_books_id, config.config_calibre_dir, input_authors[0])
if not error:
- if to_save["cover_url"]:
- if helper.save_cover_from_url(to_save["cover_url"], book.path) is True:
- book.has_cover = 1
- else:
- flash(_(u"Cover is not a jpg file, can't save"), category="error")
+ if "cover_url" in to_save:
+ if to_save["cover_url"]:
+ if not current_user.role_upload():
+ return "", (403)
+ if to_save["cover_url"].endswith('/static/generic_cover.jpg'):
+ book.has_cover = 0
+ else:
+ result, error = helper.save_cover_from_url(to_save["cover_url"], book.path)
+ if result is True:
+ book.has_cover = 1
+ modif_date = True
+ else:
+ flash(error, category="error")
- if book.series_index != to_save["series_index"]:
- book.series_index = to_save["series_index"]
+ # Add default series_index to book
+ modif_date |= edit_book_series_index(to_save["series_index"], book)
# Handle book comments/description
- if len(book.comments):
- book.comments[0].text = to_save["description"]
- else:
- book.comments.append(db.Comments(text=to_save["description"], book=book.id))
+ modif_date |= edit_book_comments(to_save["description"], book)
+ # Handle identifiers
+ input_identifiers = identifier_list(to_save, book)
+ modification, warning = modify_identifiers(input_identifiers, book.identifiers, calibre_db.session)
+ if warning:
+ flash(_("Identifiers are not Case Sensitive, Overwriting Old Identifier"), category="warning")
+ modif_date |= modification
# Handle book tags
- input_tags = to_save["tags"].split(',')
- input_tags = list(map(lambda it: it.strip(), input_tags))
- modify_database_object(input_tags, book.tags, db.Tags, db.session, 'tags')
+ modif_date |= edit_book_tags(to_save['tags'], book)
# Handle book series
- input_series = [to_save["series"].strip()]
- input_series = [x for x in input_series if x != '']
- modify_database_object(input_series, book.series, db.Series, db.session, 'series')
+ modif_date |= edit_book_series(to_save["series"], book)
if to_save["pubdate"]:
try:
- book.pubdate = datetime.datetime.strptime(to_save["pubdate"], "%Y-%m-%d")
+ book.pubdate = datetime.strptime(to_save["pubdate"], "%Y-%m-%d")
except ValueError:
book.pubdate = db.Books.DEFAULT_PUBDATE
else:
book.pubdate = db.Books.DEFAULT_PUBDATE
- if to_save["publisher"]:
- publisher = to_save["publisher"].rstrip().strip()
- if len(book.publishers) == 0 or (len(book.publishers) > 0 and publisher != book.publishers[0].name):
- modify_database_object([publisher], book.publishers, db.Publishers, db.session, 'publisher')
- elif len(book.publishers):
- modify_database_object([], book.publishers, db.Publishers, db.session, 'publisher')
-
+ # handle book publisher
+ modif_date |= edit_book_publisher(to_save, book)
# handle book languages
- input_languages = to_save["languages"].split(',')
- unknown_languages = []
- input_l = isoLanguages.get_language_codes(get_locale(), input_languages, unknown_languages)
- for l in unknown_languages:
- log.error('%s is not a valid language', l)
- flash(_(u"%(langname)s is not a valid language", langname=l), category="error")
- modify_database_object(list(input_l), book.languages, db.Languages, db.session, 'languages')
+ modif_date |= edit_book_languages(to_save['languages'], book)
# handle book ratings
- if to_save["rating"].strip():
- old_rating = False
- if len(book.ratings) > 0:
- old_rating = book.ratings[0].rating
- ratingx2 = int(float(to_save["rating"]) * 2)
- if ratingx2 != old_rating:
- is_rating = db.session.query(db.Ratings).filter(db.Ratings.rating == ratingx2).first()
- if is_rating:
- book.ratings.append(is_rating)
- else:
- new_rating = db.Ratings(rating=ratingx2)
- book.ratings.append(new_rating)
- if old_rating:
- book.ratings.remove(book.ratings[0])
- else:
- if len(book.ratings) > 0:
- book.ratings.remove(book.ratings[0])
+ modif_date |= edit_book_ratings(to_save, book)
# handle cc data
- edit_cc_data(book_id, book, to_save)
+ modif_date |= edit_cc_data(book_id, book, to_save)
- db.session.commit()
+ if modif_date:
+ book.last_modified = datetime.utcnow()
+ calibre_db.session.merge(book)
+ calibre_db.session.commit()
if config.config_use_google_drive:
gdriveutils.updateGdriveCalibreFromLocal()
if "detail_view" in to_save:
@@ -521,16 +712,43 @@ def edit_book(book_id):
flash(_("Metadata successfully updated"), category="success")
return render_edit_book(book_id)
else:
- db.session.rollback()
+ calibre_db.session.rollback()
flash(error, category="error")
return render_edit_book(book_id)
except Exception as e:
log.exception(e)
- db.session.rollback()
+ calibre_db.session.rollback()
flash(_("Error editing book, please check logfile for details"), category="error")
return redirect(url_for('web.show_book', book_id=book.id))
+def merge_metadata(to_save, meta):
+ if to_save['author_name'] == _(u'Unknown'):
+ to_save['author_name'] = ''
+ if to_save['book_title'] == _(u'Unknown'):
+ to_save['book_title'] = ''
+ for s_field, m_field in [
+ ('tags', 'tags'), ('author_name', 'author'), ('series', 'series'),
+ ('series_index', 'series_id'), ('languages', 'languages'),
+ ('book_title', 'title')]:
+ to_save[s_field] = to_save[s_field] or getattr(meta, m_field, '')
+ to_save["description"] = to_save["description"] or Markup(
+ getattr(meta, 'description', '')).unescape()
+
+def identifier_list(to_save, book):
+ """Generate a list of Identifiers from form information"""
+ id_type_prefix = 'identifier-type-'
+ id_val_prefix = 'identifier-val-'
+ result = []
+ for type_key, type_value in to_save.items():
+ if not type_key.startswith(id_type_prefix):
+ continue
+ val_key = id_val_prefix + type_key[len(id_type_prefix):]
+ if val_key not in to_save.keys():
+ continue
+ result.append(db.Identifiers(to_save[val_key], type_value, book.id))
+ return result
+
@editbook.route("/upload", methods=["GET", "POST"])
@login_required_if_no_ano
@upload_required
@@ -539,158 +757,155 @@ def upload():
abort(404)
if request.method == 'POST' and 'btn-upload' in request.files:
for requested_file in request.files.getlist("btn-upload"):
- # create the function for sorting...
- db.update_title_sort(config)
- db.session.connection().connection.connection.create_function('uuid4', 0, lambda: str(uuid4()))
+ try:
+ modif_date = False
+ # create the function for sorting...
+ calibre_db.update_title_sort(config)
+ calibre_db.session.connection().connection.connection.create_function('uuid4', 0, lambda: str(uuid4()))
- # check if file extension is correct
- if '.' in requested_file.filename:
- file_ext = requested_file.filename.rsplit('.', 1)[-1].lower()
- if file_ext not in constants.EXTENSIONS_UPLOAD:
- flash(
- _("File extension '%(ext)s' is not allowed to be uploaded to this server",
- ext=file_ext), category="error")
- return redirect(url_for('web.index'))
- else:
- flash(_('File to be uploaded must have an extension'), category="error")
- return redirect(url_for('web.index'))
+ # check if file extension is correct
+ if '.' in requested_file.filename:
+ file_ext = requested_file.filename.rsplit('.', 1)[-1].lower()
+ if file_ext not in constants.EXTENSIONS_UPLOAD and '' not in constants.EXTENSIONS_UPLOAD:
+ flash(
+ _("File extension '%(ext)s' is not allowed to be uploaded to this server",
+ ext=file_ext), category="error")
+ return Response(json.dumps({"location": url_for("web.index")}), mimetype='application/json')
+ else:
+ flash(_('File to be uploaded must have an extension'), category="error")
+ return Response(json.dumps({"location": url_for("web.index")}), mimetype='application/json')
- # extract metadata from file
- meta = uploader.upload(requested_file)
- title = meta.title
- authr = meta.author
- tags = meta.tags
- series = meta.series
- series_index = meta.series_id
- title_dir = helper.get_valid_filename(title)
- author_dir = helper.get_valid_filename(authr)
- filepath = os.path.join(config.config_calibre_dir, author_dir, title_dir)
- saved_filename = os.path.join(filepath, title_dir + meta.extension.lower())
-
- if title != u'Unknown' and authr != u'Unknown':
- entry = helper.check_exists_book(authr, title)
- if entry:
- book_html = flash(_(u"Uploaded book probably exists in the library, consider to change before upload new: ")
- + Markup(render_title_template('book_exists_flash.html', entry=entry)), category="warning")
-
- # check if file path exists, otherwise create it, copy file to calibre path and delete temp file
- if not os.path.exists(filepath):
+ # extract metadata from file
try:
- os.makedirs(filepath)
- except OSError:
- flash(_(u"Failed to create path %(path)s (Permission denied).", path=filepath), category="error")
- return redirect(url_for('web.index'))
- try:
- copyfile(meta.file_path, saved_filename)
- except OSError:
- flash(_(u"Failed to store file %(file)s (Permission denied).", file=saved_filename), category="error")
- return redirect(url_for('web.index'))
- try:
- os.unlink(meta.file_path)
- except OSError:
- flash(_(u"Failed to delete file %(file)s (Permission denied).", file= meta.file_path),
- category="warning")
+ meta = uploader.upload(requested_file, config.config_rarfile_location)
+ except (IOError, OSError):
+ log.error("File %s could not saved to temp dir", requested_file.filename)
+ flash(_(u"File %(filename)s could not saved to temp dir",
+ filename= requested_file.filename), category="error")
+ return Response(json.dumps({"location": url_for("web.index")}), mimetype='application/json')
+ title = meta.title
+ authr = meta.author
- if meta.cover is None:
- has_cover = 0
- copyfile(os.path.join(constants.STATIC_DIR, 'generic_cover.jpg'),
- os.path.join(filepath, "cover.jpg"))
- else:
- has_cover = 1
- move(meta.cover, os.path.join(filepath, "cover.jpg"))
+ if title != _(u'Unknown') and authr != _(u'Unknown'):
+ entry = calibre_db.check_exists_book(authr, title)
+ if entry:
+ log.info("Uploaded book probably exists in library")
+ flash(_(u"Uploaded book probably exists in the library, consider to change before upload new: ")
+ + Markup(render_title_template('book_exists_flash.html', entry=entry)), category="warning")
- # handle authors
- is_author = db.session.query(db.Authors).filter(db.Authors.name == authr).first()
- if is_author:
- db_author = is_author
- else:
- db_author = db.Authors(authr, helper.get_sorted_author(authr), "")
- db.session.add(db_author)
+ # handle authors
+ input_authors = authr.split('&')
+ # handle_authors(input_authors)
+ input_authors = list(map(lambda it: it.strip().replace(',', '|'), input_authors))
+ # Remove duplicates in authors list
+ input_authors = helper.uniq(input_authors)
- # handle series
- db_series = None
- is_series = db.session.query(db.Series).filter(db.Series.name == series).first()
- if is_series:
- db_series = is_series
- elif series != '':
- db_series = db.Series(series, "")
- db.session.add(db_series)
+ # we have all author names now
+ if input_authors == ['']:
+ input_authors = [_(u'Unknown')] # prevent empty Author
- # add language actually one value in list
- input_language = meta.languages
- db_language = None
- if input_language != "":
- input_language = isoLanguages.get(name=input_language).part3
- hasLanguage = db.session.query(db.Languages).filter(db.Languages.lang_code == input_language).first()
- if hasLanguage:
- db_language = hasLanguage
+ sort_authors_list=list()
+ db_author = None
+ for inp in input_authors:
+ stored_author = calibre_db.session.query(db.Authors).filter(db.Authors.name == inp).first()
+ if not stored_author:
+ if not db_author:
+ db_author = db.Authors(inp, helper.get_sorted_author(inp), "")
+ calibre_db.session.add(db_author)
+ calibre_db.session.commit()
+ sort_author = helper.get_sorted_author(inp)
+ else:
+ if not db_author:
+ db_author = stored_author
+ sort_author = stored_author.sort
+ sort_authors_list.append(sort_author)
+ sort_authors = ' & '.join(sort_authors_list)
+
+ title_dir = helper.get_valid_filename(title)
+ author_dir = helper.get_valid_filename(db_author.name)
+
+ # combine path and normalize path from windows systems
+ path = os.path.join(author_dir, title_dir).replace('\\', '/')
+ # Calibre adds books with utc as timezone
+ db_book = db.Books(title, "", sort_authors, datetime.utcnow(), datetime(101, 1, 1),
+ '1', datetime.utcnow(), path, meta.cover, db_author, [], "")
+
+ modif_date |= modify_database_object(input_authors, db_book.authors, db.Authors, calibre_db.session,
+ 'author')
+
+ # Add series_index to book
+ modif_date |= edit_book_series_index(meta.series_id, db_book)
+
+ # add languages
+ modif_date |= edit_book_languages(meta.languages, db_book, upload=True)
+
+ # handle tags
+ modif_date |= edit_book_tags(meta.tags, db_book)
+
+ # handle series
+ modif_date |= edit_book_series(meta.series, db_book)
+
+ # Add file to book
+ file_size = os.path.getsize(meta.file_path)
+ db_data = db.Data(db_book, meta.extension.upper()[1:], file_size, title_dir)
+ db_book.data.append(db_data)
+ calibre_db.session.add(db_book)
+
+ # flush content, get db_book.id available
+ calibre_db.session.flush()
+
+ # Comments needs book id therfore only possible after flush
+ modif_date |= edit_book_comments(Markup(meta.description).unescape(), db_book)
+
+ book_id = db_book.id
+ title = db_book.title
+
+ error = helper.update_dir_structure_file(book_id,
+ config.config_calibre_dir,
+ input_authors[0],
+ meta.file_path,
+ title_dir + meta.extension)
+
+ # move cover to final directory, including book id
+ if meta.cover:
+ coverfile = meta.cover
else:
- db_language = db.Languages(input_language)
- db.session.add(db_language)
+ coverfile = os.path.join(constants.STATIC_DIR, 'generic_cover.jpg')
+ new_coverpath = os.path.join(config.config_calibre_dir, db_book.path, "cover.jpg")
+ try:
+ copyfile(coverfile, new_coverpath)
+ if meta.cover:
+ os.unlink(meta.cover)
+ except OSError as e:
+ log.error("Failed to move cover file %s: %s", new_coverpath, e)
+ flash(_(u"Failed to Move Cover File %(file)s: %(error)s", file=new_coverpath,
+ error=e),
+ category="error")
- # combine path and normalize path from windows systems
- path = os.path.join(author_dir, title_dir).replace('\\', '/')
- db_book = db.Books(title, "", db_author.sort, datetime.datetime.now(), datetime.datetime(101, 1, 1),
- series_index, datetime.datetime.now(), path, has_cover, db_author, [], db_language)
- db_book.authors.append(db_author)
- if db_series:
- db_book.series.append(db_series)
- if db_language is not None:
- db_book.languages.append(db_language)
- file_size = os.path.getsize(saved_filename)
- db_data = db.Data(db_book, meta.extension.upper()[1:], file_size, title_dir)
+ # save data to database, reread data
+ calibre_db.session.commit()
- # handle tags
- input_tags = tags.split(',')
- input_tags = list(map(lambda it: it.strip(), input_tags))
- if input_tags[0] !="":
- modify_database_object(input_tags, db_book.tags, db.Tags, db.session, 'tags')
+ if config.config_use_google_drive:
+ gdriveutils.updateGdriveCalibreFromLocal()
+ if error:
+ flash(error, category="error")
+ uploadText=_(u"File %(file)s uploaded", file=title)
+ WorkerThread.add(current_user.nickname, TaskUpload(
+ "" + uploadText + " "))
- # flush content, get db_book.id available
- db_book.data.append(db_data)
- db.session.add(db_book)
- db.session.flush()
-
- # add comment
- book_id = db_book.id
- upload_comment = Markup(meta.description).unescape()
- if upload_comment != "":
- db.session.add(db.Comments(upload_comment, book_id))
-
- # save data to database, reread data
- db.session.commit()
- db.update_title_sort(config)
- book = db.session.query(db.Books).filter(db.Books.id == book_id).filter(common_filters()).first()
-
- # upload book to gdrive if nesseccary and add "(bookid)" to folder name
- if config.config_use_google_drive:
- gdriveutils.updateGdriveCalibreFromLocal()
- error = helper.update_dir_stucture(book.id, config.config_calibre_dir)
- db.session.commit()
- if config.config_use_google_drive:
- gdriveutils.updateGdriveCalibreFromLocal()
- if error:
- flash(error, category="error")
- uploadText=_(u"File %(file)s uploaded", file=book.title)
- worker.add_upload(current_user.nickname,
- "" + uploadText + " ")
-
- # create data for displaying display Full language name instead of iso639.part3language
- if db_language is not None:
- book.languages[0].language_name = _(meta.languages)
- author_names = []
- for author in db_book.authors:
- author_names.append(author.name)
- if len(request.files.getlist("btn-upload")) < 2:
- if current_user.role_edit() or current_user.role_admin():
- resp = {"location": url_for('editbook.edit_book', book_id=db_book.id)}
- return Response(json.dumps(resp), mimetype='application/json')
- else:
- resp = {"location": url_for('web.show_book', book_id=db_book.id)}
- return Response(json.dumps(resp), mimetype='application/json')
+ if len(request.files.getlist("btn-upload")) < 2:
+ if current_user.role_edit() or current_user.role_admin():
+ resp = {"location": url_for('editbook.edit_book', book_id=book_id)}
+ return Response(json.dumps(resp), mimetype='application/json')
+ else:
+ resp = {"location": url_for('web.show_book', book_id=book_id)}
+ return Response(json.dumps(resp), mimetype='application/json')
+ except OperationalError as e:
+ calibre_db.session.rollback()
+ log.error("Database error: %s", e)
+ flash(_(u"Database error: %(error)s.", error=e), category="error")
return Response(json.dumps({"location": url_for("web.index")}), mimetype='application/json')
-
@editbook.route("/admin/book/convert/", methods=['POST'])
@login_required_if_no_ano
@edit_required
@@ -701,7 +916,7 @@ def convert_bookformat(book_id):
if (book_format_from is None) or (book_format_to is None):
flash(_(u"Source or destination format for conversion missing"), category="error")
- return redirect(request.environ["HTTP_REFERER"])
+ return redirect(url_for('editbook.edit_book', book_id=book_id))
log.info('converting: book id: %s from: %s to: %s', book_id, book_format_from, book_format_to)
rtn = helper.convert_book_format(book_id, config.config_calibre_dir, book_format_from.upper(),
@@ -713,4 +928,114 @@ def convert_bookformat(book_id):
category="success")
else:
flash(_(u"There was an error converting this book: %(res)s", res=rtn), category="error")
- return redirect(request.environ["HTTP_REFERER"])
+ return redirect(url_for('editbook.edit_book', book_id=book_id))
+
+@editbook.route("/ajax/editbooks/ ", methods=['POST'])
+@login_required_if_no_ano
+@edit_required
+def edit_list_book(param):
+ vals = request.form.to_dict()
+ book = calibre_db.get_book(vals['pk'])
+ if param =='series_index':
+ edit_book_series_index(vals['value'], book)
+ elif param =='tags':
+ edit_book_tags(vals['value'], book)
+ elif param =='series':
+ edit_book_series(vals['value'], book)
+ elif param =='publishers':
+ vals['publisher'] = vals['value']
+ edit_book_publisher(vals, book)
+ elif param =='languages':
+ edit_book_languages(vals['value'], book)
+ elif param =='author_sort':
+ book.author_sort = vals['value']
+ elif param =='title':
+ book.title = vals['value']
+ helper.update_dir_stucture(book.id, config.config_calibre_dir)
+ elif param =='sort':
+ book.sort = vals['value']
+ # ToDo: edit books
+ elif param =='authors':
+ input_authors = vals['value'].split('&')
+ input_authors = list(map(lambda it: it.strip().replace(',', '|'), input_authors))
+ modify_database_object(input_authors, book.authors, db.Authors, calibre_db.session, 'author')
+ sort_authors_list = list()
+ for inp in input_authors:
+ stored_author = calibre_db.session.query(db.Authors).filter(db.Authors.name == inp).first()
+ if not stored_author:
+ stored_author = helper.get_sorted_author(inp)
+ else:
+ stored_author = stored_author.sort
+ sort_authors_list.append(helper.get_sorted_author(stored_author))
+ sort_authors = ' & '.join(sort_authors_list)
+ if book.author_sort != sort_authors:
+ book.author_sort = sort_authors
+ helper.update_dir_stucture(book.id, config.config_calibre_dir, input_authors[0])
+ book.last_modified = datetime.utcnow()
+ calibre_db.session.commit()
+ return ""
+
+@editbook.route("/ajax/sort_value//")
+@login_required
+def get_sorted_entry(field, bookid):
+ if field == 'title' or field == 'authors':
+ book = calibre_db.get_filtered_book(bookid)
+ if book:
+ if field == 'title':
+ return json.dumps({'sort': book.sort})
+ elif field == 'authors':
+ return json.dumps({'author_sort': book.author_sort})
+ return ""
+
+
+@editbook.route("/ajax/simulatemerge", methods=['POST'])
+@login_required
+@edit_required
+def simulate_merge_list_book():
+ vals = request.get_json().get('Merge_books')
+ if vals:
+ to_book = calibre_db.get_book(vals[0]).title
+ vals.pop(0)
+ if to_book:
+ for book_id in vals:
+ from_book = []
+ from_book.append(calibre_db.get_book(book_id).title)
+ return json.dumps({'to': to_book, 'from': from_book})
+ return ""
+
+
+@editbook.route("/ajax/mergebooks", methods=['POST'])
+@login_required
+@edit_required
+def merge_list_book():
+ vals = request.get_json().get('Merge_books')
+ to_file = list()
+ if vals:
+ # load all formats from target book
+ to_book = calibre_db.get_book(vals[0])
+ vals.pop(0)
+ if to_book:
+ for file in to_book.data:
+ to_file.append(file.format)
+ to_name = helper.get_valid_filename(to_book.title) + ' - ' + \
+ helper.get_valid_filename(to_book.authors[0].name)
+ for book_id in vals:
+ from_book = calibre_db.get_book(book_id)
+ if from_book:
+ for element in from_book.data:
+ if element.format not in to_file:
+ # create new data entry with: book_id, book_format, uncompressed_size, name
+ filepath_new = os.path.normpath(os.path.join(config.config_calibre_dir,
+ to_book.path,
+ to_name + "." + element.format.lower()))
+ filepath_old = os.path.normpath(os.path.join(config.config_calibre_dir,
+ from_book.path,
+ element.name + "." + element.format.lower()))
+ copyfile(filepath_old, filepath_new)
+ to_book.data.append(db.Data(to_book.id,
+ element.format,
+ element.uncompressed_size,
+ to_name))
+ delete_book(from_book.id,"", True) # json_resp =
+ return json.dumps({'success': True})
+ return ""
diff --git a/cps/epub.py b/cps/epub.py
index d315abf65..583e4eda1 100644
--- a/cps/epub.py
+++ b/cps/epub.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
@@ -23,9 +22,11 @@ import zipfile
from lxml import etree
from . import isoLanguages
+from .helper import split_authors
from .constants import BookMeta
+
def extractCover(zipFile, coverFile, coverpath, tmp_file_name):
if coverFile is None:
return None
@@ -65,34 +66,26 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension):
tmp = p.xpath('dc:%s/text()' % s, namespaces=ns)
if len(tmp) > 0:
if s == 'creator':
- epub_metadata[s] = ' & '.join(p.xpath('dc:%s/text()' % s, namespaces=ns))
+ epub_metadata[s] = ' & '.join(split_authors(tmp))
elif s == 'subject':
- epub_metadata[s] = ', '.join(p.xpath('dc:%s/text()' % s, namespaces=ns))
+ epub_metadata[s] = ', '.join(tmp)
else:
- epub_metadata[s] = p.xpath('dc:%s/text()' % s, namespaces=ns)[0]
+ epub_metadata[s] = tmp[0]
else:
- epub_metadata[s] = "Unknown"
+ epub_metadata[s] = u'Unknown'
- if epub_metadata['subject'] == "Unknown":
+ if epub_metadata['subject'] == u'Unknown':
epub_metadata['subject'] = ''
- if epub_metadata['description'] == "Unknown":
+ if epub_metadata['description'] == u'Unknown':
description = tree.xpath("//*[local-name() = 'description']/text()")
if len(description) > 0:
epub_metadata['description'] = description
else:
epub_metadata['description'] = ""
- if epub_metadata['language'] == "Unknown":
- epub_metadata['language'] = ""
- else:
- lang = epub_metadata['language'].split('-', 1)[0].lower()
- if len(lang) == 2:
- epub_metadata['language'] = isoLanguages.get(part1=lang).name
- elif len(lang) == 3:
- epub_metadata['language'] = isoLanguages.get(part3=lang).name
- else:
- epub_metadata['language'] = ""
+ lang = epub_metadata['language'].split('-', 1)[0].lower()
+ epub_metadata['language'] = isoLanguages.get_lang3(lang)
series = tree.xpath("/pkg:package/pkg:metadata/pkg:meta[@name='calibre:series']/@content", namespaces=ns)
if len(series) > 0:
@@ -123,9 +116,14 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension):
markupTree = etree.fromstring(markup)
# no matter xhtml or html with no namespace
imgsrc = markupTree.xpath("//*[local-name() = 'img']/@src")
- # imgsrc maybe startwith "../"" so fullpath join then relpath to cwd
- filename = os.path.relpath(os.path.join(os.path.dirname(os.path.join(coverpath, coversection[0])), imgsrc[0]))
- coverfile = extractCover(epubZip, filename, "", tmp_file_path)
+ # Alternative image source
+ if not len(imgsrc):
+ imgsrc = markupTree.xpath("//attribute::*[contains(local-name(), 'href')]")
+ if len(imgsrc):
+ # imgsrc maybe startwith "../"" so fullpath join then relpath to cwd
+ filename = os.path.relpath(os.path.join(os.path.dirname(os.path.join(coverpath, coversection[0])),
+ imgsrc[0]))
+ coverfile = extractCover(epubZip, filename, "", tmp_file_path)
else:
coverfile = extractCover(epubZip, coversection[0], coverpath, tmp_file_path)
diff --git a/cps/fb2.py b/cps/fb2.py
index cd61b5116..bdb3d1d50 100644
--- a/cps/fb2.py
+++ b/cps/fb2.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
diff --git a/cps/gdrive.py b/cps/gdrive.py
index 263c829ba..90b83e648 100644
--- a/cps/gdrive.py
+++ b/cps/gdrive.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
@@ -23,6 +22,7 @@
from __future__ import division, print_function, unicode_literals
import os
+import sys
import hashlib
import json
import tempfile
@@ -34,18 +34,17 @@ from flask import Blueprint, flash, request, redirect, url_for, abort
from flask_babel import gettext as _
from flask_login import login_required
-try:
- from googleapiclient.errors import HttpError
-except ImportError:
- pass
-
-from . import logger, gdriveutils, config, db
+from . import logger, gdriveutils, config, ub, calibre_db
from .web import admin_required
-
gdrive = Blueprint('gdrive', __name__)
log = logger.create()
+try:
+ from googleapiclient.errors import HttpError
+except ImportError as err:
+ log.debug("Cannot import googleapiclient, using GDrive will not work: %s", err)
+
current_milli_time = lambda: int(round(time() * 1000))
gdrive_watch_callback_token = 'target=calibreweb-watch_files'
@@ -73,7 +72,7 @@ def google_drive_callback():
credentials = gdriveutils.Gauth.Instance().auth.flow.step2_exchange(auth_code)
with open(gdriveutils.CREDENTIALS, 'w') as f:
f.write(credentials.to_json())
- except ValueError as error:
+ except (ValueError, AttributeError) as error:
log.error(error)
return redirect(url_for('admin.configuration'))
@@ -94,8 +93,7 @@ def watch_gdrive():
try:
result = gdriveutils.watchChange(gdriveutils.Gdrive.Instance().drive, notification_id,
'web_hook', address, gdrive_watch_callback_token, current_milli_time() + 604800*1000)
- config.config_google_drive_watch_changes_response = json.dumps(result)
- # after save(), config_google_drive_watch_changes_response will be a json object, not string
+ config.config_google_drive_watch_changes_response = result
config.save()
except HttpError as e:
reason=json.loads(e.content)['error']['errors'][0]
@@ -118,41 +116,45 @@ def revoke_watch_gdrive():
last_watch_response['resourceId'])
except HttpError:
pass
- config.config_google_drive_watch_changes_response = None
+ config.config_google_drive_watch_changes_response = {}
config.save()
return redirect(url_for('admin.configuration'))
@gdrive.route("/gdrive/watch/callback", methods=['GET', 'POST'])
def on_received_watch_confirmation():
+ if not config.config_google_drive_watch_changes_response:
+ return ''
+ if request.headers.get('X-Goog-Channel-Token') != gdrive_watch_callback_token \
+ or request.headers.get('X-Goog-Resource-State') != 'change' \
+ or not request.data:
+ return '' # redirect(url_for('admin.configuration'))
+
log.debug('%r', request.headers)
- if request.headers.get('X-Goog-Channel-Token') == gdrive_watch_callback_token \
- and request.headers.get('X-Goog-Resource-State') == 'change' \
- and request.data:
+ log.debug('%r', request.data)
+ log.info('Change received from gdrive')
- data = request.data
-
- def updateMetaData():
- log.info('Change received from gdrive')
- log.debug('%r', data)
- try:
- j = json.loads(data)
- log.info('Getting change details')
- response = gdriveutils.getChangeById(gdriveutils.Gdrive.Instance().drive, j['id'])
- log.debug('%r', response)
- if response:
- dbpath = os.path.join(config.config_calibre_dir, "metadata.db")
- if not response['deleted'] and response['file']['title'] == 'metadata.db' and response['file']['md5Checksum'] != hashlib.md5(dbpath):
- tmpDir = tempfile.gettempdir()
- log.info('Database file updated')
- copyfile(dbpath, os.path.join(tmpDir, "metadata.db_" + str(current_milli_time())))
- log.info('Backing up existing and downloading updated metadata.db')
- gdriveutils.downloadFile(None, "metadata.db", os.path.join(tmpDir, "tmp_metadata.db"))
- log.info('Setting up new DB')
- # prevent error on windows, as os.rename does on exisiting files
- move(os.path.join(tmpDir, "tmp_metadata.db"), dbpath)
- db.setup_db(config)
- except Exception as e:
- log.exception(e)
- updateMetaData()
+ try:
+ j = json.loads(request.data)
+ log.info('Getting change details')
+ response = gdriveutils.getChangeById(gdriveutils.Gdrive.Instance().drive, j['id'])
+ log.debug('%r', response)
+ if response:
+ if sys.version_info < (3, 0):
+ dbpath = os.path.join(config.config_calibre_dir, "metadata.db")
+ else:
+ dbpath = os.path.join(config.config_calibre_dir, "metadata.db").encode()
+ if not response['deleted'] and response['file']['title'] == 'metadata.db' \
+ and response['file']['md5Checksum'] != hashlib.md5(dbpath):
+ tmpDir = tempfile.gettempdir()
+ log.info('Database file updated')
+ copyfile(dbpath, os.path.join(tmpDir, "metadata.db_" + str(current_milli_time())))
+ log.info('Backing up existing and downloading updated metadata.db')
+ gdriveutils.downloadFile(None, "metadata.db", os.path.join(tmpDir, "tmp_metadata.db"))
+ log.info('Setting up new DB')
+ # prevent error on windows, as os.rename does on exisiting files
+ move(os.path.join(tmpDir, "tmp_metadata.db"), dbpath)
+ calibre_db.reconnect_db(config, ub.app_DB_path)
+ except Exception as e:
+ log.exception(e)
return ''
diff --git a/cps/gdriveutils.py b/cps/gdriveutils.py
index d950f7385..3e00c9af3 100644
--- a/cps/gdriveutils.py
+++ b/cps/gdriveutils.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
@@ -21,6 +20,8 @@ from __future__ import division, print_function, unicode_literals
import os
import json
import shutil
+import chardet
+import ssl
from flask import Response, stream_with_context
from sqlalchemy import create_engine
@@ -28,14 +29,18 @@ from sqlalchemy import Column, UniqueConstraint
from sqlalchemy import String, Integer
from sqlalchemy.orm import sessionmaker, scoped_session
from sqlalchemy.ext.declarative import declarative_base
+from sqlalchemy.exc import OperationalError, InvalidRequestError
try:
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from pydrive.auth import RefreshError
from apiclient import errors
+ from httplib2 import ServerNotFoundError
gdrive_support = True
-except ImportError:
+ importError = None
+except ImportError as err:
+ importError = err
gdrive_support = False
from . import logger, cli, config
@@ -47,6 +52,12 @@ CREDENTIALS = os.path.join(_CONFIG_DIR, 'gdrive_credentials')
CLIENT_SECRETS = os.path.join(_CONFIG_DIR, 'client_secrets.json')
log = logger.create()
+if gdrive_support:
+ logger.get('googleapiclient.discovery_cache').setLevel(logger.logging.ERROR)
+ if not logger.is_debug_enabled():
+ logger.get('googleapiclient.discovery').setLevel(logger.logging.ERROR)
+else:
+ log.debug("Cannot import pydrive,httplib2, using gdrive will not work: %s", importError)
class Singleton:
@@ -94,7 +105,11 @@ class Singleton:
@Singleton
class Gauth:
def __init__(self):
- self.auth = GoogleAuth(settings_file=SETTINGS_YAML)
+ try:
+ self.auth = GoogleAuth(settings_file=SETTINGS_YAML)
+ except NameError as error:
+ log.error(error)
+ self.auth = None
@Singleton
@@ -189,14 +204,18 @@ def getDrive(drive=None, gauth=None):
return drive
def listRootFolders():
- drive = getDrive(Gdrive.Instance().drive)
- folder = "'root' in parents and mimeType = 'application/vnd.google-apps.folder' and trashed = false"
- fileList = drive.ListFile({'q': folder}).GetList()
+ try:
+ drive = getDrive(Gdrive.Instance().drive)
+ folder = "'root' in parents and mimeType = 'application/vnd.google-apps.folder' and trashed = false"
+ fileList = drive.ListFile({'q': folder}).GetList()
+ except ServerNotFoundError as e:
+ log.info("GDrive Error %s" % e)
+ fileList = []
return fileList
def getEbooksFolder(drive):
- return getFolderInFolder('root',config.config_google_drive_folder,drive)
+ return getFolderInFolder('root', config.config_google_drive_folder, drive)
def getFolderInFolder(parentId, folderName, drive):
@@ -226,7 +245,7 @@ def getEbooksFolderId(drive=None):
gDriveId.path = '/'
session.merge(gDriveId)
session.commit()
- return
+ return gDriveId.gdrive_id
def getFile(pathId, fileName, drive):
@@ -471,8 +490,13 @@ def getChangeById (drive, change_id):
# Deletes the local hashes database to force search for new folder names
def deleteDatabaseOnChange():
- session.query(GdriveId).delete()
- session.commit()
+ try:
+ session.query(GdriveId).delete()
+ session.commit()
+ except (OperationalError, InvalidRequestError):
+ session.rollback()
+ log.info(u"GDrive DB is not Writeable")
+
def updateGdriveCalibreFromLocal():
copyToDrive(Gdrive.Instance().drive, config.config_calibre_dir, False, True)
@@ -580,8 +604,12 @@ def get_error_text(client_secrets=None):
if not os.path.isfile(CLIENT_SECRETS):
return 'client_secrets.json is missing or not readable'
- with open(CLIENT_SECRETS, 'r') as settings:
- filedata = json.load(settings)
+ try:
+ with open(CLIENT_SECRETS, 'r') as settings:
+ filedata = json.load(settings)
+ except PermissionError:
+ return 'client_secrets.json is missing or not readable'
+
if 'web' not in filedata:
return 'client_secrets.json is not configured for web application'
if 'redirect_uris' not in filedata['web']:
diff --git a/cps/helper.py b/cps/helper.py
index 9771d57a9..9845df97b 100644
--- a/cps/helper.py
+++ b/cps/helper.py
@@ -21,26 +21,26 @@ from __future__ import division, print_function, unicode_literals
import sys
import os
import io
-import json
import mimetypes
-import random
import re
import shutil
+import glob
import time
+import zipfile
+import json
import unicodedata
from datetime import datetime, timedelta
from tempfile import gettempdir
import requests
-from babel import Locale as LC
-from babel.core import UnknownLocaleError
from babel.dates import format_datetime
from babel.units import format_unit
-from flask import send_from_directory, make_response, redirect, abort
+from flask import send_from_directory, make_response, redirect, abort, url_for, send_file
from flask_babel import gettext as _
from flask_login import current_user
-from sqlalchemy.sql.expression import true, false, and_, or_, text, func
+from sqlalchemy.sql.expression import true, false, and_, text
from werkzeug.datastructures import Headers
+from werkzeug.security import generate_password_hash
try:
from urllib.parse import quote
@@ -55,17 +55,19 @@ except ImportError:
try:
from PIL import Image as PILImage
+ from PIL import UnidentifiedImageError
use_PIL = True
except ImportError:
use_PIL = False
-from . import logger, config, get_locale, db, ub, isoLanguages, worker
+from . import calibre_db
+from .tasks.convert import TaskConvert
+from . import logger, config, get_locale, db, ub
from . import gdriveutils as gd
from .constants import STATIC_DIR as _STATIC_DIR
-from .pagination import Pagination
from .subproc_wrapper import process_wait
-from .worker import STAT_WAITING, STAT_FAIL, STAT_STARTED, STAT_FINISH_SUCCESS
-from .worker import TASK_EMAIL, TASK_CONVERT, TASK_UPLOAD, TASK_CONVERT_ANY
+from .services.worker import WorkerThread, STAT_WAITING, STAT_FAIL, STAT_STARTED, STAT_FINISH_SUCCESS
+from .tasks.mail import TaskEmail
log = logger.create()
@@ -73,48 +75,44 @@ log = logger.create()
# Convert existing book entry to new format
def convert_book_format(book_id, calibrepath, old_book_format, new_book_format, user_id, kindle_mail=None):
- book = db.session.query(db.Books).filter(db.Books.id == book_id).first()
- data = db.session.query(db.Data).filter(db.Data.book == book.id).filter(db.Data.format == old_book_format).first()
+ book = calibre_db.get_book(book_id)
+ data = calibre_db.get_book_format(book.id, old_book_format)
+ file_path = os.path.join(calibrepath, book.path, data.name)
if not data:
error_message = _(u"%(format)s format not found for book id: %(book)d", format=old_book_format, book=book_id)
log.error("convert_book_format: %s", error_message)
return error_message
if config.config_use_google_drive:
- df = gd.getFileFromEbooksFolder(book.path, data.name + "." + old_book_format.lower())
- if df:
- datafile = os.path.join(calibrepath, book.path, data.name + u"." + old_book_format.lower())
- if not os.path.exists(os.path.join(calibrepath, book.path)):
- os.makedirs(os.path.join(calibrepath, book.path))
- df.GetContentFile(datafile)
- else:
+ if not gd.getFileFromEbooksFolder(book.path, data.name + "." + old_book_format.lower()):
error_message = _(u"%(format)s not found on Google Drive: %(fn)s",
format=old_book_format, fn=data.name + "." + old_book_format.lower())
return error_message
- file_path = os.path.join(calibrepath, book.path, data.name)
- if os.path.exists(file_path + "." + old_book_format.lower()):
- # read settings and append converter task to queue
- if kindle_mail:
- settings = config.get_mail_settings()
- settings['subject'] = _('Send to Kindle') # pretranslate Subject for e-mail
- settings['body'] = _(u'This e-mail has been sent via Calibre-Web.')
- # text = _(u"%(format)s: %(book)s", format=new_book_format, book=book.title)
- else:
- settings = dict()
- text = (u"%s -> %s: %s" % (old_book_format, new_book_format, book.title))
- settings['old_book_format'] = old_book_format
- settings['new_book_format'] = new_book_format
- worker.add_convert(file_path, book.id, user_id, text, settings, kindle_mail)
- return None
else:
- error_message = _(u"%(format)s not found: %(fn)s",
- format=old_book_format, fn=data.name + "." + old_book_format.lower())
- return error_message
+ if not os.path.exists(file_path + "." + old_book_format.lower()):
+ error_message = _(u"%(format)s not found: %(fn)s",
+ format=old_book_format, fn=data.name + "." + old_book_format.lower())
+ return error_message
+ # read settings and append converter task to queue
+ if kindle_mail:
+ settings = config.get_mail_settings()
+ settings['subject'] = _('Send to Kindle') # pretranslate Subject for e-mail
+ settings['body'] = _(u'This e-mail has been sent via Calibre-Web.')
+ else:
+ settings = dict()
+ txt = (u"%s -> %s: %s" % (
+ old_book_format,
+ new_book_format,
+ "" + book.title + " "))
+ settings['old_book_format'] = old_book_format
+ settings['new_book_format'] = new_book_format
+ WorkerThread.add(user_id, TaskConvert(file_path, book.id, txt, settings, kindle_mail, user_id))
+ return None
def send_test_mail(kindle_mail, user_name):
- worker.add_email(_(u'Calibre-Web test e-mail'), None, None,
- config.get_mail_settings(), kindle_mail, user_name,
- _(u"Test e-mail"), _(u'This e-mail has been sent via Calibre-Web.'))
+ WorkerThread.add(user_name, TaskEmail(_(u'Calibre-Web test e-mail'), None, None,
+ config.get_mail_settings(), kindle_mail, _(u"Test e-mail"),
+ _(u'This e-mail has been sent via Calibre-Web.')))
return
@@ -124,14 +122,21 @@ def send_registration_mail(e_mail, user_name, default_password, resend=False):
if not resend:
text += "Your new account at Calibre-Web has been created. Thanks for joining us!\r\n"
text += "Please log in to your account using the following informations:\r\n"
- text += "User name: %s\n" % user_name
+ text += "User name: %s\r\n" % user_name
text += "Password: %s\r\n" % default_password
text += "Don't forget to change your password after first login.\r\n"
text += "Sincerely\r\n\r\n"
text += "Your Calibre-Web team"
- worker.add_email(_(u'Get Started with Calibre-Web'), None, None,
- config.get_mail_settings(), e_mail, None,
- _(u"Registration e-mail for user: %(name)s", name=user_name), text)
+ WorkerThread.add(None, TaskEmail(
+ subject=_(u'Get Started with Calibre-Web'),
+ filepath=None,
+ attachment=None,
+ settings=config.get_mail_settings(),
+ recipient=e_mail,
+ taskMessage=_(u"Registration e-mail for user: %(name)s", name=user_name),
+ text=text
+ ))
+
return
@@ -140,36 +145,53 @@ def check_send_to_kindle(entry):
returns all available book formats for sending to Kindle
"""
if len(entry.data):
- bookformats=list()
- if config.config_ebookconverter == 0:
+ bookformats = list()
+ if not config.config_converterpath:
# no converter - only for mobi and pdf formats
for ele in iter(entry.data):
- if 'MOBI' in ele.format:
- bookformats.append({'format':'Mobi','convert':0,'text':_('Send %(format)s to Kindle',format='Mobi')})
- if 'PDF' in ele.format:
- bookformats.append({'format':'Pdf','convert':0,'text':_('Send %(format)s to Kindle',format='Pdf')})
- if 'AZW' in ele.format:
- bookformats.append({'format':'Azw','convert':0,'text':_('Send %(format)s to Kindle',format='Azw')})
- '''if 'AZW3' in ele.format:
- bookformats.append({'format':'Azw3','convert':0,'text':_('Send %(format)s to Kindle',format='Azw3')})'''
+ if ele.uncompressed_size < config.mail_size:
+ if 'MOBI' in ele.format:
+ bookformats.append({'format': 'Mobi',
+ 'convert': 0,
+ 'text': _('Send %(format)s to Kindle', format='Mobi')})
+ if 'PDF' in ele.format:
+ bookformats.append({'format': 'Pdf',
+ 'convert': 0,
+ 'text': _('Send %(format)s to Kindle', format='Pdf')})
+ if 'AZW' in ele.format:
+ bookformats.append({'format': 'Azw',
+ 'convert': 0,
+ 'text': _('Send %(format)s to Kindle', format='Azw')})
else:
formats = list()
for ele in iter(entry.data):
- formats.append(ele.format)
+ if ele.uncompressed_size < config.mail_size:
+ formats.append(ele.format)
if 'MOBI' in formats:
- bookformats.append({'format': 'Mobi','convert':0,'text':_('Send %(format)s to Kindle',format='Mobi')})
+ bookformats.append({'format': 'Mobi',
+ 'convert': 0,
+ 'text': _('Send %(format)s to Kindle', format='Mobi')})
if 'AZW' in formats:
- bookformats.append({'format': 'Azw','convert':0,'text':_('Send %(format)s to Kindle',format='Azw')})
+ bookformats.append({'format': 'Azw',
+ 'convert': 0,
+ 'text': _('Send %(format)s to Kindle', format='Azw')})
if 'PDF' in formats:
- bookformats.append({'format': 'Pdf','convert':0,'text':_('Send %(format)s to Kindle',format='Pdf')})
- if config.config_ebookconverter >= 1:
+ bookformats.append({'format': 'Pdf',
+ 'convert': 0,
+ 'text': _('Send %(format)s to Kindle', format='Pdf')})
+ if config.config_converterpath:
if 'EPUB' in formats and not 'MOBI' in formats:
- bookformats.append({'format': 'Mobi','convert':1,
- 'text':_('Convert %(orig)s to %(format)s and send to Kindle',orig='Epub',format='Mobi')})
- '''if config.config_ebookconverter == 2:
- if 'EPUB' in formats and not 'AZW3' in formats:
- bookformats.append({'format': 'Azw3','convert':1,
- 'text':_('Convert %(orig)s to %(format)s and send to Kindle',orig='Epub',format='Azw3')})'''
+ bookformats.append({'format': 'Mobi',
+ 'convert':1,
+ 'text': _('Convert %(orig)s to %(format)s and send to Kindle',
+ orig='Epub',
+ format='Mobi')})
+ if 'AZW3' in formats and not 'MOBI' in formats:
+ bookformats.append({'format': 'Mobi',
+ 'convert': 2,
+ 'text': _('Convert %(orig)s to %(format)s and send to Kindle',
+ orig='Azw3',
+ format='Mobi')})
return bookformats
else:
log.error(u'Cannot find book entry %d', entry.id)
@@ -194,18 +216,21 @@ def check_read_formats(entry):
# 3: If Pdf file is existing, it's directly send to kindle email
def send_mail(book_id, book_format, convert, kindle_mail, calibrepath, user_id):
"""Send email with attachments"""
- book = db.session.query(db.Books).filter(db.Books.id == book_id).first()
+ book = calibre_db.get_book(book_id)
- if convert:
+ if convert == 1:
# returns None if success, otherwise errormessage
return convert_book_format(book_id, calibrepath, u'epub', book_format.lower(), user_id, kindle_mail)
+ if convert == 2:
+ # returns None if success, otherwise errormessage
+ return convert_book_format(book_id, calibrepath, u'azw3', book_format.lower(), user_id, kindle_mail)
for entry in iter(book.data):
if entry.format.upper() == book_format.upper():
converted_file_name = entry.name + '.' + book_format.lower()
- worker.add_email(_(u"Send to Kindle"), book.path, converted_file_name,
- config.get_mail_settings(), kindle_mail, user_id,
- _(u"E-mail: %(book)s", book=book.title), _(u'This e-mail has been sent via Calibre-Web.'))
+ WorkerThread.add(user_id, TaskEmail(_(u"Send to Kindle"), book.path, converted_file_name,
+ config.get_mail_settings(), kindle_mail,
+ _(u"E-mail: %(book)s", book=book.title), _(u'This e-mail has been sent via Calibre-Web.')))
return
return _(u"The requested file could not be read. Maybe wrong permissions?")
@@ -219,22 +244,22 @@ def get_valid_filename(value, replace_whitespace=True):
value = value[:-1]+u'_'
value = value.replace("/", "_").replace(":", "_").strip('\0')
if use_unidecode:
- value = (unidecode.unidecode(value)).strip()
+ value = (unidecode.unidecode(value))
else:
value = value.replace(u'§', u'SS')
value = value.replace(u'ß', u'ss')
value = unicodedata.normalize('NFKD', value)
re_slugify = re.compile(r'[\W\s-]', re.UNICODE)
if isinstance(value, str): # Python3 str, Python2 unicode
- value = re_slugify.sub('', value).strip()
+ value = re_slugify.sub('', value)
else:
- value = unicode(re_slugify.sub('', value).strip())
+ value = unicode(re_slugify.sub('', value))
if replace_whitespace:
# *+:\"/<>? are replaced by _
- value = re.sub(r'[\*\+:\\\"/<>\?]+', u'_', value, flags=re.U)
+ value = re.sub(r'[*+:\\\"/<>?]+', u'_', value, flags=re.U)
# pipe has to be replaced with comma
- value = re.sub(r'[\|]+', u',', value, flags=re.U)
- value = value[:128]
+ value = re.sub(r'[|]+', u',', value, flags=re.U)
+ value = value[:128].strip()
if not value:
raise ValueError("Filename cannot be empty")
if sys.version_info.major == 3:
@@ -243,6 +268,22 @@ def get_valid_filename(value, replace_whitespace=True):
return value.decode('utf-8')
+def split_authors(values):
+ authors_list = []
+ for value in values:
+ authors = re.split('[&;]', value)
+ for author in authors:
+ commas = author.count(',')
+ if commas == 1:
+ author_split = author.split(',')
+ authors_list.append(author_split[1].strip() + ' ' + author_split[0].strip())
+ elif commas > 1:
+ authors_list.extend([x.strip() for x in author.split(',')])
+ else:
+ authors_list.append(author.strip())
+ return authors_list
+
+
def get_sorted_author(value):
try:
if ',' not in value:
@@ -250,7 +291,10 @@ def get_sorted_author(value):
combined = "(" + ")|(".join(regexes) + ")"
value = value.split(" ")
if re.match(combined, value[-1].upper()):
- value2 = value[-2] + ", " + " ".join(value[:-2]) + " " + value[-1]
+ if len(value) > 1:
+ value2 = value[-2] + ", " + " ".join(value[:-2]) + " " + value[-1]
+ else:
+ value2 = value[0]
elif len(value) == 1:
value2 = value[0]
else:
@@ -259,7 +303,10 @@ def get_sorted_author(value):
value2 = value
except Exception as ex:
log.error("Sorting author %s failed: %s", value, ex)
- value2 = value
+ if isinstance(list, value2):
+ value2 = value[0]
+ else:
+ value2 = value
return value2
@@ -272,79 +319,108 @@ def delete_book_file(book, calibrepath, book_format=None):
for file in os.listdir(path):
if file.upper().endswith("."+book_format):
os.remove(os.path.join(path, file))
+ return True, None
else:
if os.path.isdir(path):
- if len(next(os.walk(path))[1]):
- log.error("Deleting book %s failed, path has subfolders: %s", book.id, book.path)
- return False
- shutil.rmtree(path, ignore_errors=True)
- return True
+ try:
+ for root, folders, files in os.walk(path):
+ for f in files:
+ os.unlink(os.path.join(root, f))
+ if len(folders):
+ log.warning("Deleting book {} failed, path {} has subfolders: {}".format(book.id,
+ book.path, folders))
+ return True, _("Deleting bookfolder for book %(id)s failed, path has subfolders: %(path)s",
+ id=book.id,
+ path=book.path)
+ shutil.rmtree(path)
+ except (IOError, OSError) as e:
+ log.error("Deleting book %s failed: %s", book.id, e)
+ return False, _("Deleting book %(id)s failed: %(message)s", id=book.id, message=e)
+ authorpath = os.path.join(calibrepath, os.path.split(book.path)[0])
+ if not os.listdir(authorpath):
+ try:
+ shutil.rmtree(authorpath)
+ except (IOError, OSError) as e:
+ log.error("Deleting authorpath for book %s failed: %s", book.id, e)
+ return True, None
else:
log.error("Deleting book %s failed, book path not valid: %s", book.id, book.path)
- return False
+ return True, _("Deleting book %(id)s, book path not valid: %(path)s",
+ id=book.id,
+ path=book.path)
-def update_dir_structure_file(book_id, calibrepath, first_author):
- localbook = db.session.query(db.Books).filter(db.Books.id == book_id).first()
- path = os.path.join(calibrepath, localbook.path)
+# Moves files in file storage during author/title rename, or from temp dir to file storage
+def update_dir_structure_file(book_id, calibrepath, first_author, orignal_filepath, db_filename):
+ # get book database entry from id, if original path overwrite source with original_filepath
+ localbook = calibre_db.get_book(book_id)
+ if orignal_filepath:
+ path = orignal_filepath
+ else:
+ path = os.path.join(calibrepath, localbook.path)
+ # Create (current) authordir and titledir from database
authordir = localbook.path.split('/')[0]
+ titledir = localbook.path.split('/')[1]
+
+ # Create new_authordir from parameter or from database
+ # Create new titledir from database and add id
if first_author:
new_authordir = get_valid_filename(first_author)
else:
new_authordir = get_valid_filename(localbook.authors[0].name)
-
- titledir = localbook.path.split('/')[1]
new_titledir = get_valid_filename(localbook.title) + " (" + str(book_id) + ")"
- if titledir != new_titledir:
+ if titledir != new_titledir or authordir != new_authordir or orignal_filepath:
+ new_path = os.path.join(calibrepath, new_authordir, new_titledir)
+ new_name = get_valid_filename(localbook.title) + ' - ' + get_valid_filename(new_authordir)
try:
- new_title_path = os.path.join(os.path.dirname(path), new_titledir)
- if not os.path.exists(new_title_path):
- os.renames(path, new_title_path)
+ if orignal_filepath:
+ if not os.path.isdir(new_path):
+ os.makedirs(new_path)
+ shutil.move(os.path.normcase(path), os.path.normcase(os.path.join(new_path, db_filename)))
+ log.debug("Moving title: %s to %s/%s", path, new_path, new_name)
+ # Check new path is not valid path
else:
- log.info("Copying title: %s into existing: %s", path, new_title_path)
- for dir_name, __, file_list in os.walk(path):
- for file in file_list:
- os.renames(os.path.join(dir_name, file),
- os.path.join(new_title_path + dir_name[len(path):], file))
- path = new_title_path
- localbook.path = localbook.path.split('/')[0] + '/' + new_titledir
+ if not os.path.exists(new_path):
+ # move original path to new path
+ log.debug("Moving title: %s to %s", path, new_path)
+ shutil.move(os.path.normcase(path), os.path.normcase(new_path))
+ else: # path is valid copy only files to new location (merge)
+ log.info("Moving title: %s into existing: %s", path, new_path)
+ # Take all files and subfolder from old path (strange command)
+ for dir_name, __, file_list in os.walk(path):
+ for file in file_list:
+ shutil.move(os.path.normcase(os.path.join(dir_name, file)),
+ os.path.normcase(os.path.join(new_path + dir_name[len(path):], file)))
+ # os.unlink(os.path.normcase(os.path.join(dir_name, file)))
+ # change location in database to new author/title path
+ localbook.path = os.path.join(new_authordir, new_titledir).replace('\\','/')
except OSError as ex:
- log.error("Rename title from: %s to %s: %s", path, new_title_path, ex)
+ log.error("Rename title from: %s to %s: %s", path, new_path, ex)
log.debug(ex, exc_info=True)
return _("Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s",
- src=path, dest=new_title_path, error=str(ex))
- if authordir != new_authordir:
+ src=path, dest=new_path, error=str(ex))
+
+ # Rename all files from old names to new names
try:
- new_author_path = os.path.join(calibrepath, new_authordir, os.path.basename(path))
- os.renames(path, new_author_path)
- localbook.path = new_authordir + '/' + localbook.path.split('/')[1]
- except OSError as ex:
- log.error("Rename author from: %s to %s: %s", path, new_author_path, ex)
- log.debug(ex, exc_info=True)
- return _("Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s",
- src=path, dest=new_author_path, error=str(ex))
- # Rename all files from old names to new names
- if authordir != new_authordir or titledir != new_titledir:
- try:
- new_name = get_valid_filename(localbook.title) + ' - ' + get_valid_filename(new_authordir)
- path_name = os.path.join(calibrepath, new_authordir, os.path.basename(path))
for file_format in localbook.data:
- os.renames(os.path.join(path_name, file_format.name + '.' + file_format.format.lower()),
- os.path.join(path_name, new_name + '.' + file_format.format.lower()))
+ shutil.move(os.path.normcase(
+ os.path.join(new_path, file_format.name + '.' + file_format.format.lower())),
+ os.path.normcase(os.path.join(new_path, new_name + '.' + file_format.format.lower())))
file_format.name = new_name
+ if not orignal_filepath and len(os.listdir(os.path.dirname(path))) == 0:
+ shutil.rmtree(os.path.dirname(path))
except OSError as ex:
- log.error("Rename file in path %s to %s: %s", path, new_name, ex)
+ log.error("Rename file in path %s to %s: %s", new_path, new_name, ex)
log.debug(ex, exc_info=True)
return _("Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s",
- src=path, dest=new_name, error=str(ex))
+ src=new_path, dest=new_name, error=str(ex))
return False
-
def update_dir_structure_gdrive(book_id, first_author):
error = False
- book = db.session.query(db.Books).filter(db.Books.id == book_id).first()
+ book = calibre_db.get_book(book_id)
path = book.path
authordir = book.path.split('/')[0]
@@ -364,7 +440,7 @@ def update_dir_structure_gdrive(book_id, first_author):
path = book.path
gd.updateDatabaseOnEdit(gFile['id'], book.path) # only child folder affected
else:
- error = _(u'File %(file)s not found on Google Drive', file=book.path) # file not found
+ error = _(u'File %(file)s not found on Google Drive', file=book.path) # file not found
if authordir != new_authordir:
gFile = gd.getFileFromEbooksFolder(os.path.dirname(book.path), new_titledir)
@@ -374,7 +450,7 @@ def update_dir_structure_gdrive(book_id, first_author):
path = book.path
gd.updateDatabaseOnEdit(gFile['id'], book.path)
else:
- error = _(u'File %(file)s not found on Google Drive', file=authordir) # file not found
+ error = _(u'File %(file)s not found on Google Drive', file=authordir) # file not found
# Rename all files from old names to new names
if authordir != new_authordir or titledir != new_titledir:
@@ -390,7 +466,7 @@ def update_dir_structure_gdrive(book_id, first_author):
def delete_book_gdrive(book, book_format):
- error= False
+ error = None
if book_format:
name = ''
for entry in book.data:
@@ -398,27 +474,57 @@ def delete_book_gdrive(book, book_format):
name = entry.name + '.' + book_format
gFile = gd.getFileFromEbooksFolder(book.path, name)
else:
- gFile = gd.getFileFromEbooksFolder(os.path.dirname(book.path),book.path.split('/')[1])
+ gFile = gd.getFileFromEbooksFolder(os.path.dirname(book.path), book.path.split('/')[1])
if gFile:
gd.deleteDatabaseEntry(gFile['id'])
gFile.Trash()
else:
- error =_(u'Book path %(path)s not found on Google Drive', path=book.path) # file not found
- return error
+ error = _(u'Book path %(path)s not found on Google Drive', path=book.path) # file not found
+
+ return error is None, error
+
+
+def reset_password(user_id):
+ existing_user = ub.session.query(ub.User).filter(ub.User.id == user_id).first()
+ if not existing_user:
+ return 0, None
+ if not config.get_mail_server_configured():
+ return 2, None
+ try:
+ password = generate_random_password()
+ existing_user.password = generate_password_hash(password)
+ ub.session.commit()
+ send_registration_mail(existing_user.email, existing_user.nickname, password, True)
+ return 1, existing_user.nickname
+ except Exception:
+ ub.session.rollback()
+ return 0, None
def generate_random_password():
s = "abcdefghijklmnopqrstuvwxyz01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%&*()?"
passlen = 8
- return "".join(random.sample(s,passlen ))
+ if sys.version_info < (3, 0):
+ return "".join(s[ord(c) % len(s)] for c in os.urandom(passlen))
+ else:
+ return "".join(s[c % len(s)] for c in os.urandom(passlen))
-################################## External interface
-def update_dir_stucture(book_id, calibrepath, first_author = None):
+def uniq(inpt):
+ output = []
+ for x in inpt:
+ if x not in output:
+ output.append(x)
+ return output
+
+# ################################# External interface #################################
+
+
+def update_dir_stucture(book_id, calibrepath, first_author=None, orignal_filepath=None, db_filename=None):
if config.config_use_google_drive:
return update_dir_structure_gdrive(book_id, first_author)
else:
- return update_dir_structure_file(book_id, calibrepath, first_author)
+ return update_dir_structure_file(book_id, calibrepath, first_author, orignal_filepath, db_filename)
def delete_book(book, calibrepath, book_format):
@@ -428,38 +534,64 @@ def delete_book(book, calibrepath, book_format):
return delete_book_file(book, calibrepath, book_format)
-def get_book_cover(book_id):
- book = db.session.query(db.Books).filter(db.Books.id == book_id).first()
- if book.has_cover:
+def get_cover_on_failure(use_generic_cover):
+ if use_generic_cover:
+ return send_from_directory(_STATIC_DIR, "generic_cover.jpg")
+ else:
+ return None
+
+def get_book_cover(book_id):
+ book = calibre_db.get_filtered_book(book_id, allow_show_archived=True)
+ return get_book_cover_internal(book, use_generic_cover_on_failure=True)
+
+
+def get_book_cover_with_uuid(book_uuid,
+ use_generic_cover_on_failure=True):
+ book = calibre_db.get_book_by_uuid(book_uuid)
+ return get_book_cover_internal(book, use_generic_cover_on_failure)
+
+
+def get_book_cover_internal(book, use_generic_cover_on_failure):
+ if book and book.has_cover:
if config.config_use_google_drive:
try:
if not gd.is_gdrive_ready():
- return send_from_directory(_STATIC_DIR, "generic_cover.jpg")
- path=gd.get_cover_via_gdrive(book.path)
+ return get_cover_on_failure(use_generic_cover_on_failure)
+ path = gd.get_cover_via_gdrive(book.path)
if path:
return redirect(path)
else:
log.error('%s/cover.jpg not found on Google Drive', book.path)
- return send_from_directory(_STATIC_DIR, "generic_cover.jpg")
+ return get_cover_on_failure(use_generic_cover_on_failure)
except Exception as e:
log.exception(e)
# traceback.print_exc()
- return send_from_directory(_STATIC_DIR,"generic_cover.jpg")
+ return get_cover_on_failure(use_generic_cover_on_failure)
else:
cover_file_path = os.path.join(config.config_calibre_dir, book.path)
if os.path.isfile(os.path.join(cover_file_path, "cover.jpg")):
return send_from_directory(cover_file_path, "cover.jpg")
else:
- return send_from_directory(_STATIC_DIR,"generic_cover.jpg")
+ return get_cover_on_failure(use_generic_cover_on_failure)
else:
- return send_from_directory(_STATIC_DIR,"generic_cover.jpg")
+ return get_cover_on_failure(use_generic_cover_on_failure)
# saves book cover from url
def save_cover_from_url(url, book_path):
- img = requests.get(url)
- return save_cover(img, book_path)
+ try:
+ img = requests.get(url, timeout=(10, 200)) # ToDo: Error Handling
+ img.raise_for_status()
+ return save_cover(img, book_path)
+ except (requests.exceptions.HTTPError,
+ requests.exceptions.ConnectionError,
+ requests.exceptions.Timeout) as ex:
+ log.info(u'Cover Download Error %s', ex)
+ return False, _("Error Downloading Cover")
+ except UnidentifiedImageError as ex:
+ log.info(u'File Format Error %s', ex)
+ return False, _("Cover Format Error")
def save_cover_from_filestorage(filepath, saved_filename, img):
@@ -474,16 +606,13 @@ def save_cover_from_filestorage(filepath, saved_filename, img):
os.makedirs(filepath)
except OSError:
log.error(u"Failed to create path for cover")
- return False
+ return False, _(u"Failed to create path for cover")
try:
img.save(os.path.join(filepath, saved_filename))
- except IOError:
- log.error(u"Cover-file is not a valid image file")
- return False
- except OSError:
- log.error(u"Failed to store cover-file")
- return False
- return True
+ except (IOError, OSError):
+ log.error(u"Cover-file is not a valid image file, or could not be stored")
+ return False, _(u"Cover-file is not a valid image file, or could not be stored")
+ return True, None
# saves book cover to gdrive or locally
@@ -493,10 +622,10 @@ def save_cover(img, book_path):
if use_PIL:
if content_type not in ('image/jpeg', 'image/png', 'image/webp'):
log.error("Only jpg/jpeg/png/webp files are supported as coverfile")
- return False
+ return False, _("Only jpg/jpeg/png/webp files are supported as coverfile")
# convert to jpg because calibre only supports jpg
if content_type in ('image/png', 'image/webp'):
- if hasattr(img,'stream'):
+ if hasattr(img, 'stream'):
imgc = PILImage.open(img.stream)
else:
imgc = PILImage.open(io.BytesIO(img.content))
@@ -505,25 +634,25 @@ def save_cover(img, book_path):
im.save(tmp_bytesio, format='JPEG')
img._content = tmp_bytesio.getvalue()
else:
- if content_type not in ('image/jpeg'):
+ if content_type not in 'image/jpeg':
log.error("Only jpg/jpeg files are supported as coverfile")
- return False
+ return False, _("Only jpg/jpeg files are supported as coverfile")
if config.config_use_google_drive:
tmpDir = gettempdir()
- if save_cover_from_filestorage(tmpDir, "uploaded_cover.jpg", img) is True:
+ ret, message = save_cover_from_filestorage(tmpDir, "uploaded_cover.jpg", img)
+ if ret is True:
gd.uploadFileToEbooksFolder(os.path.join(book_path, 'cover.jpg'),
os.path.join(tmpDir, "uploaded_cover.jpg"))
log.info("Cover is saved on Google Drive")
- return True
+ return True, None
else:
- return False
+ return False, message
else:
return save_cover_from_filestorage(os.path.join(config.config_calibre_dir, book_path), "cover.jpg", img)
-
-def do_download_file(book, book_format, data, headers):
+def do_download_file(book, book_format, client, data, headers):
if config.config_use_google_drive:
startTime = time.time()
df = gd.getFileFromEbooksFolder(book.path, data.name + "." + book_format)
@@ -537,42 +666,47 @@ def do_download_file(book, book_format, data, headers):
if not os.path.isfile(os.path.join(filename, data.name + "." + book_format)):
# ToDo: improve error handling
log.error('File not found: %s', os.path.join(filename, data.name + "." + book_format))
+
+ if client == "kobo" and book_format == "kepub":
+ headers["Content-Disposition"] = headers["Content-Disposition"].replace(".kepub", ".kepub.epub")
+
response = make_response(send_from_directory(filename, data.name + "." + book_format))
- response.headers = headers
+ # ToDo Check headers parameter
+ for element in headers:
+ response.headers[element[0]] = element[1]
return response
##################################
-
def check_unrar(unrarLocation):
if not unrarLocation:
return
if not os.path.exists(unrarLocation):
- return 'Unrar binary file not found'
+ return _('Unrar binary file not found')
try:
if sys.version_info < (3, 0):
unrarLocation = unrarLocation.encode(sys.getfilesystemencoding())
unrarLocation = [unrarLocation]
for lines in process_wait(unrarLocation):
- value = re.search('UNRAR (.*) freeware', lines)
+ value = re.search('UNRAR (.*) freeware', lines, re.IGNORECASE)
if value:
version = value.group(1)
log.debug("unrar version %s", version)
- except OSError as err:
+ break
+ except (OSError, UnicodeDecodeError) as err:
log.exception(err)
- return 'Error excecuting UnRar'
-
+ return _('Error excecuting UnRar')
def json_serial(obj):
"""JSON serializer for objects not serializable by default json code"""
- if isinstance(obj, (datetime)):
+ if isinstance(obj, datetime):
return obj.isoformat()
- if isinstance(obj, (timedelta)):
+ if isinstance(obj, timedelta):
return {
'__type__': 'timedelta',
'days': obj.days,
@@ -580,7 +714,7 @@ def json_serial(obj):
'microseconds': obj.microseconds,
}
# return obj.isoformat()
- raise TypeError ("Type %s not serializable" % type(obj))
+ raise TypeError("Type %s not serializable" % type(obj))
# helper function for displaying the runtime of tasks
@@ -602,169 +736,83 @@ def format_runtime(runtime):
# helper function to apply localize status information in tasklist entries
def render_task_status(tasklist):
- renderedtasklist=list()
- for task in tasklist:
- if task['user'] == current_user.nickname or current_user.role_admin():
- if task['formStarttime']:
- task['starttime'] = format_datetime(task['formStarttime'], format='short', locale=get_locale())
- # task2['formStarttime'] = ""
- else:
- if 'starttime' not in task:
- task['starttime'] = ""
-
- if 'formRuntime' not in task:
- task['runtime'] = ""
- else:
- task['runtime'] = format_runtime(task['formRuntime'])
+ renderedtasklist = list()
+ for num, user, added, task in tasklist:
+ if user == current_user.nickname or current_user.role_admin():
+ ret = {}
+ if task.start_time:
+ ret['starttime'] = format_datetime(task.start_time, format='short', locale=get_locale())
+ ret['runtime'] = format_runtime(task.runtime)
# localize the task status
- if isinstance( task['stat'], int ):
- if task['stat'] == STAT_WAITING:
- task['status'] = _(u'Waiting')
- elif task['stat'] == STAT_FAIL:
- task['status'] = _(u'Failed')
- elif task['stat'] == STAT_STARTED:
- task['status'] = _(u'Started')
- elif task['stat'] == STAT_FINISH_SUCCESS:
- task['status'] = _(u'Finished')
+ if isinstance(task.stat, int):
+ if task.stat == STAT_WAITING:
+ ret['status'] = _(u'Waiting')
+ elif task.stat == STAT_FAIL:
+ ret['status'] = _(u'Failed')
+ elif task.stat == STAT_STARTED:
+ ret['status'] = _(u'Started')
+ elif task.stat == STAT_FINISH_SUCCESS:
+ ret['status'] = _(u'Finished')
else:
- task['status'] = _(u'Unknown Status')
+ ret['status'] = _(u'Unknown Status')
- # localize the task type
- if isinstance( task['taskType'], int ):
- if task['taskType'] == TASK_EMAIL:
- task['taskMessage'] = _(u'E-mail: ') + task['taskMess']
- elif task['taskType'] == TASK_CONVERT:
- task['taskMessage'] = _(u'Convert: ') + task['taskMess']
- elif task['taskType'] == TASK_UPLOAD:
- task['taskMessage'] = _(u'Upload: ') + task['taskMess']
- elif task['taskType'] == TASK_CONVERT_ANY:
- task['taskMessage'] = _(u'Convert: ') + task['taskMess']
- else:
- task['taskMessage'] = _(u'Unknown Task: ') + task['taskMess']
-
- renderedtasklist.append(task)
+ ret['taskMessage'] = "{}: {}".format(_(task.name), task.message)
+ ret['progress'] = "{} %".format(int(task.progress * 100))
+ ret['user'] = user
+ renderedtasklist.append(ret)
return renderedtasklist
-# Language and content filters for displaying in the UI
-def common_filters():
- if current_user.filter_language() != "all":
- lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language())
- else:
- lang_filter = true()
- content_rating_filter = false() if current_user.mature_content else \
- db.Books.tags.any(db.Tags.name.in_(config.mature_content_tags()))
- return and_(lang_filter, ~content_rating_filter)
-
def tags_filters():
- return ~(false() if current_user.mature_content else \
- db.Tags.name.in_(config.mature_content_tags()))
- # return db.session.query(db.Tags).filter(~content_rating_filter).order_by(db.Tags.name).all()
+ negtags_list = current_user.list_denied_tags()
+ postags_list = current_user.list_allowed_tags()
+ neg_content_tags_filter = false() if negtags_list == [''] else db.Tags.name.in_(negtags_list)
+ pos_content_tags_filter = true() if postags_list == [''] else db.Tags.name.in_(postags_list)
+ return and_(pos_content_tags_filter, ~neg_content_tags_filter)
-# Creates for all stored languages a translated speaking name in the array for the UI
-def speaking_language(languages=None):
- if not languages:
- languages = db.session.query(db.Languages).all()
- for lang in languages:
- try:
- cur_l = LC.parse(lang.lang_code)
- lang.name = cur_l.get_language_name(get_locale())
- except UnknownLocaleError:
- lang.name = _(isoLanguages.get(part3=lang.lang_code).name)
- return languages
-
# checks if domain is in database (including wildcards)
# example SELECT * FROM @TABLE WHERE 'abcdefg' LIKE Name;
# from https://code.luasoftware.com/tutorials/flask/execute-raw-sql-in-flask-sqlalchemy/
def check_valid_domain(domain_text):
- domain_text = domain_text.split('@', 1)[-1].lower()
- sql = "SELECT * FROM registration WHERE :domain LIKE domain;"
+ # domain_text = domain_text.split('@', 1)[-1].lower()
+ sql = "SELECT * FROM registration WHERE (:domain LIKE domain and allow = 1);"
result = ub.session.query(ub.Registration).from_statement(text(sql)).params(domain=domain_text).all()
- return len(result)
+ if not len(result):
+ return False
+ sql = "SELECT * FROM registration WHERE (:domain LIKE domain and allow = 0);"
+ result = ub.session.query(ub.Registration).from_statement(text(sql)).params(domain=domain_text).all()
+ return not len(result)
-# Orders all Authors in the list according to authors sort
-def order_authors(entry):
- sort_authors = entry.author_sort.split('&')
- authors_ordered = list()
- error = False
- for auth in sort_authors:
- # ToDo: How to handle not found authorname
- result = db.session.query(db.Authors).filter(db.Authors.sort == auth.lstrip().strip()).first()
- if not result:
- error = True
- break
- authors_ordered.append(result)
- if not error:
- entry.authors = authors_ordered
- return entry
-
-
-# Fill indexpage with all requested data from database
-def fill_indexpage(page, database, db_filter, order, *join):
- if current_user.show_detail_random():
- randm = db.session.query(db.Books).filter(common_filters())\
- .order_by(func.random()).limit(config.config_random_books)
- else:
- randm = false()
- off = int(int(config.config_books_per_page) * (page - 1))
- pagination = Pagination(page, config.config_books_per_page,
- len(db.session.query(database).filter(db_filter).filter(common_filters()).all()))
- entries = db.session.query(database).join(*join, isouter=True).filter(db_filter).filter(common_filters()).\
- order_by(*order).offset(off).limit(config.config_books_per_page).all()
- for book in entries:
- book = order_authors(book)
- return entries, randm, pagination
-
-
-def get_typeahead(database, query, replace=('',''), tag_filter=true()):
- db.session.connection().connection.connection.create_function("lower", 1, lcase)
- entries = db.session.query(database).filter(tag_filter).filter(func.lower(database.name).ilike("%" + query + "%")).all()
- json_dumps = json.dumps([dict(name=r.name.replace(*replace)) for r in entries])
- return json_dumps
-
-# read search results from calibre-database and return it (function is used for feed and simple search
-def get_search_results(term):
- db.session.connection().connection.connection.create_function("lower", 1, lcase)
- q = list()
- authorterms = re.split("[, ]+", term)
- for authorterm in authorterms:
- q.append(db.Books.authors.any(func.lower(db.Authors.name).ilike("%" + authorterm + "%")))
-
- db.Books.authors.any(func.lower(db.Authors.name).ilike("%" + term + "%"))
-
- return db.session.query(db.Books).filter(common_filters()).filter(
- or_(db.Books.tags.any(func.lower(db.Tags.name).ilike("%" + term + "%")),
- db.Books.series.any(func.lower(db.Series.name).ilike("%" + term + "%")),
- db.Books.authors.any(and_(*q)),
- db.Books.publishers.any(func.lower(db.Publishers.name).ilike("%" + term + "%")),
- func.lower(db.Books.title).ilike("%" + term + "%")
- )).all()
-
-def get_cc_columns():
- tmpcc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all()
+def get_cc_columns(filter_config_custom_read=False):
+ tmpcc = calibre_db.session.query(db.Custom_Columns)\
+ .filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all()
+ cc = []
+ r = None
if config.config_columns_to_ignore:
- cc = []
- for col in tmpcc:
- r = re.compile(config.config_columns_to_ignore)
- if r.match(col.label):
- cc.append(col)
- else:
- cc = tmpcc
+ r = re.compile(config.config_columns_to_ignore)
+
+ for col in tmpcc:
+ if filter_config_custom_read and config.config_read_column and config.config_read_column == col.id:
+ continue
+ if r and r.match(col.name):
+ continue
+ cc.append(col)
+
return cc
-def get_download_link(book_id, book_format):
+
+def get_download_link(book_id, book_format, client):
book_format = book_format.split(".")[0]
- book = db.session.query(db.Books).filter(db.Books.id == book_id).filter(common_filters()).first()
+ book = calibre_db.get_filtered_book(book_id)
if book:
- data = db.session.query(db.Data).filter(db.Data.book == book.id)\
- .filter(db.Data.format == book_format.upper()).first()
+ data1 = calibre_db.get_book_format(book.id, book_format.upper())
else:
abort(404)
- if data:
+ if data1:
# collect downloaded books only for registered user and not for anonymous user
if current_user.is_authenticated:
ub.update_download(book_id, int(current_user.id))
@@ -774,28 +822,9 @@ def get_download_link(book_id, book_format):
file_name = get_valid_filename(file_name)
headers = Headers()
headers["Content-Type"] = mimetypes.types_map.get('.' + book_format, "application/octet-stream")
- headers["Content-Disposition"] = "attachment; filename*=UTF-8''%s.%s" % (quote(file_name.encode('utf-8')),
- book_format)
- return do_download_file(book, book_format, data, headers)
+ headers["Content-Disposition"] = "attachment; filename=%s.%s; filename*=UTF-8''%s.%s" % (
+ quote(file_name.encode('utf-8')), book_format, quote(file_name.encode('utf-8')), book_format)
+ return do_download_file(book, book_format, client, data1, headers)
else:
abort(404)
-def check_exists_book(authr,title):
- db.session.connection().connection.connection.create_function("lower", 1, lcase)
- q = list()
- authorterms = re.split(r'\s*&\s*', authr)
- for authorterm in authorterms:
- q.append(db.Books.authors.any(func.lower(db.Authors.name).ilike("%" + authorterm + "%")))
-
- return db.session.query(db.Books).filter(
- and_(db.Books.authors.any(and_(*q)),
- func.lower(db.Books.title).ilike("%" + title + "%")
- )).first()
-
-############### Database Helper functions
-
-def lcase(s):
- try:
- return unidecode.unidecode(s.lower())
- except Exception as e:
- log.exception(e)
diff --git a/cps/isoLanguages.py b/cps/isoLanguages.py
index 3281f98dc..4c0aefc3c 100644
--- a/cps/isoLanguages.py
+++ b/cps/isoLanguages.py
@@ -57,12 +57,36 @@ def get_language_name(locale, lang_code):
def get_language_codes(locale, language_names, remainder=None):
language_names = set(x.strip().lower() for x in language_names if x)
-
+ languages = list()
for k, v in get_language_names(locale).items():
v = v.lower()
if v in language_names:
+ languages.append(k)
language_names.remove(v)
- yield k
-
if remainder is not None:
remainder.extend(language_names)
+ return languages
+
+def get_valid_language_codes(locale, language_names, remainder=None):
+ languages = list()
+ if "" in language_names:
+ language_names.remove("")
+ for k, v in get_language_names(locale).items():
+ if k in language_names:
+ languages.append(k)
+ language_names.remove(k)
+ if remainder is not None and len(language_names):
+ remainder.extend(language_names)
+ return languages
+
+def get_lang3(lang):
+ try:
+ if len(lang) == 2:
+ ret_value = get(part1=lang).part3
+ elif len(lang) == 3:
+ ret_value = lang
+ else:
+ ret_value = ""
+ except KeyError:
+ ret_value = lang
+ return ret_value
diff --git a/cps/iso_language_names.py b/cps/iso_language_names.py
index c8690d377..52e50667e 100644
--- a/cps/iso_language_names.py
+++ b/cps/iso_language_names.py
@@ -8,6 +8,8 @@
from __future__ import unicode_literals
+# This file is autogenerated, do NOT add, change, or delete ANY string
+# If you need help or assistance for adding a new language, please contact the project team
# map iso639 language codes to language names, translated
@@ -432,6 +434,379 @@ LANGUAGE_NAMES = {
"zxx": "brak kontekstu językowego",
"zza": "zazaki"
},
+ "el": {
+ "abk": "Αμπχαζιανά",
+ "ace": "Ατσενέζικα",
+ "ach": "Ακόλο",
+ "ada": "Αντάνγκμε",
+ "ady": "Αντύγκε",
+ "aar": "Αφάρ",
+ "afh": "Αφριχίλι",
+ "afr": "Αφρικάανς",
+ "ain": "Αϊνού (Ιαπωνία)",
+ "aka": "Ακάν",
+ "akk": "Akkadian",
+ "sqi": "Αλβανικά",
+ "ale": "Aleut",
+ "amh": "Amharic",
+ "anp": "Angika",
+ "ara": "Αραβικά",
+ "arg": "Αραγωνικά ",
+ "arp": "Αραπάχο",
+ "arw": "Arawak",
+ "hye": "Αρμένικα",
+ "asm": "Assamese",
+ "ast": "Asturian",
+ "ava": "Αβαρικά",
+ "ave": "Avestan",
+ "awa": "Awadhi",
+ "aym": "Aymara",
+ "aze": "Αζερμπαϊτζιανά",
+ "ban": "Balinese",
+ "bal": "Baluchi",
+ "bam": "Bambara",
+ "bas": "Basa (Cameroon)",
+ "bak": "Bashkir",
+ "eus": "Βασκικά",
+ "bej": "Beja",
+ "bel": "Λευκωρωσικά",
+ "bem": "Bemba (Zambia)",
+ "ben": "Μπενγκάλι",
+ "bho": "Bhojpuri",
+ "bik": "Bikol",
+ "byn": "Bilin",
+ "bin": "Bini",
+ "bis": "Bislama",
+ "zbl": "Blissymbols",
+ "bos": "Βοσνιακά",
+ "bra": "Braj",
+ "bre": "Βρετονικά",
+ "bug": "Buginese",
+ "bul": "Βουλγάρικα",
+ "bua": "Buriat",
+ "mya": "Burmese",
+ "cad": "Caddo",
+ "cat": "Καταλανικά",
+ "ceb": "Cebuano",
+ "chg": "Chagatai",
+ "cha": "Chamorro",
+ "che": "Τσετσενικά",
+ "chr": "Cherokee",
+ "chy": "Cheyenne",
+ "chb": "Chibcha",
+ "zho": "Κινέζικα",
+ "chn": "Chinook jargon",
+ "chp": "Chipewyan",
+ "cho": "Choctaw",
+ "chk": "Chuukese",
+ "chv": "Chuvash",
+ "cop": "Κοπτικά",
+ "cor": "Cornish",
+ "cos": "Κορσικανικά",
+ "cre": "Cree",
+ "mus": "Creek",
+ "hrv": "Κροατικά",
+ "ces": "Τσέχικα",
+ "dak": "Dakota",
+ "dan": "Δανέζικα",
+ "dar": "Dargwa",
+ "del": "Delaware",
+ "div": "Dhivehi",
+ "din": "Dinka",
+ "doi": "Dogri (macrolanguage)",
+ "dgr": "Dogrib",
+ "dua": "Duala",
+ "nld": "Ολλανδικά",
+ "dyu": "Dyula",
+ "dzo": "Dzongkha",
+ "efi": "Efik",
+ "egy": "Αρχαία Αιγυπτιακά",
+ "eka": "Ekajuk",
+ "elx": "Elamite",
+ "eng": "Αγγλικά",
+ "myv": "Erzya",
+ "epo": "Εσπεράντο",
+ "est": "Εσθονικά",
+ "ewe": "Ewe",
+ "ewo": "Ewondo",
+ "fan": "Fang (Equatorial Guinea)",
+ "fat": "Fanti",
+ "fao": "Faroese",
+ "fij": "Fijian",
+ "fil": "Filipino",
+ "fin": "Φινλανδικά",
+ "fon": "Fon",
+ "fra": "Γαλλικά",
+ "fur": "Friulian",
+ "ful": "Fulah",
+ "gaa": "Ga",
+ "glg": "Galician",
+ "lug": "Ganda",
+ "gay": "Gayo",
+ "gba": "Gbaya (Central African Republic)",
+ "gez": "Geez",
+ "kat": "Γεωργιανά",
+ "deu": "Γερμανικά",
+ "gil": "Gilbertese",
+ "gon": "Gondi",
+ "gor": "Gorontalo",
+ "got": "Γοτθικά",
+ "grb": "Grebo",
+ "grn": "Guarani",
+ "guj": "Gujarati",
+ "gwi": "Gwichʼin",
+ "hai": "Haida",
+ "hau": "Hausa",
+ "haw": "Hawaiian",
+ "heb": "Εβραϊκά",
+ "her": "Herero",
+ "hil": "Hiligaynon",
+ "hin": "Ινδικά",
+ "hmo": "Hiri Motu",
+ "hit": "Hittite",
+ "hmn": "Hmong",
+ "hun": "Ουγγρικά",
+ "hup": "Hupa",
+ "iba": "Iban",
+ "isl": "Ισλανδικά",
+ "ido": "Ido",
+ "ibo": "Igbo",
+ "ilo": "Iloko",
+ "ind": "Ινδονησιακά",
+ "inh": "Ingush",
+ "ina": "Interlingua (International Auxiliary Language Association)",
+ "ile": "Interlingue",
+ "iku": "Inuktitut",
+ "ipk": "Inupiaq",
+ "gle": "Ιρλανδέζικα",
+ "ita": "Ιταλικά",
+ "jpn": "Γιαπωνέζικα",
+ "jav": "Javanese",
+ "jrb": "Judeo-Arabic",
+ "jpr": "Judeo-Persian",
+ "kbd": "Kabardian",
+ "kab": "Kabyle",
+ "kac": "Kachin",
+ "kal": "Kalaallisut",
+ "xal": "Kalmyk",
+ "kam": "Kamba (Kenya)",
+ "kan": "Kannada",
+ "kau": "Kanuri",
+ "kaa": "Kara-Kalpak",
+ "krc": "Karachay-Balkar",
+ "krl": "Karelian",
+ "kas": "Kashmiri",
+ "csb": "Kashubian",
+ "kaw": "Kawi",
+ "kaz": "Kazakh",
+ "kha": "Khasi",
+ "kho": "Khotanese",
+ "kik": "Kikuyu",
+ "kmb": "Kimbundu",
+ "kin": "Kinyarwanda",
+ "kir": "Kirghiz",
+ "tlh": "Κλίγκον",
+ "kom": "Komi",
+ "kon": "Kongo",
+ "kok": "Konkani (macrolanguage)",
+ "kor": "Κορεάτικα",
+ "kos": "Kosraean",
+ "kpe": "Kpelle",
+ "kua": "Kuanyama",
+ "kum": "Kumyk",
+ "kur": "Κουρδικά",
+ "kru": "Kurukh",
+ "kut": "Kutenai",
+ "lad": "Ladino",
+ "lah": "Lahnda",
+ "lam": "Lamba",
+ "lao": "Lao",
+ "lat": "Λατινικά",
+ "lav": "Λετονέζικα",
+ "lez": "Lezghian",
+ "lim": "Limburgan",
+ "lin": "Lingala",
+ "lit": "Λιθουανικά",
+ "jbo": "Lojban",
+ "loz": "Lozi",
+ "lub": "Luba-Katanga",
+ "lua": "Luba-Lulua",
+ "lui": "Luiseno",
+ "smj": "Lule Sami",
+ "lun": "Lunda",
+ "luo": "Luo (Kenya and Tanzania)",
+ "lus": "Lushai",
+ "ltz": "Luxembourgish",
+ "mkd": "Σλαβομακεδονικά",
+ "mad": "Madurese",
+ "mag": "Magahi",
+ "mai": "Maithili",
+ "mak": "Makasar",
+ "mlg": "Malagasy",
+ "msa": "Malay (macrolanguage)",
+ "mal": "Malayalam",
+ "mlt": "Maltese",
+ "mnc": "Manchu",
+ "mdr": "Mandar",
+ "man": "Mandingo",
+ "mni": "Manipuri",
+ "glv": "Manx",
+ "mri": "Maori",
+ "arn": "Mapudungun",
+ "mar": "Marathi",
+ "chm": "Mari (Russia)",
+ "mah": "Marshallese",
+ "mwr": "Marwari",
+ "mas": "Masai",
+ "men": "Mende (Sierra Leone)",
+ "mic": "Mi'kmaq",
+ "min": "Minangkabau",
+ "mwl": "Mirandese",
+ "moh": "Mohawk",
+ "mdf": "Moksha",
+ "lol": "Mongo",
+ "mon": "Μογγολικά",
+ "mos": "Mossi",
+ "mul": "Πολλαπλές γλώσσες",
+ "nqo": "N'Ko",
+ "nau": "Nauru",
+ "nav": "Navajo",
+ "ndo": "Ndonga",
+ "nap": "Neapolitan",
+ "nia": "Nias",
+ "niu": "Niuean",
+ "zxx": "Χωρίς γλωσσολογικό περιεχόμενο",
+ "nog": "Nogai",
+ "nor": "Νορβηγικά",
+ "nob": "Norwegian Bokmål",
+ "nno": "Νορβηγικά Nynorsk",
+ "nym": "Nyamwezi",
+ "nya": "Nyanja",
+ "nyn": "Nyankole",
+ "nyo": "Nyoro",
+ "nzi": "Nzima",
+ "oci": "Occitan (post 1500)",
+ "oji": "Ojibwa",
+ "orm": "Oromo",
+ "osa": "Osage",
+ "oss": "Ossetian",
+ "pal": "Pahlavi",
+ "pau": "Palauan",
+ "pli": "Pali",
+ "pam": "Pampanga",
+ "pag": "Pangasinan",
+ "pan": "Panjabi",
+ "pap": "Papiamento",
+ "fas": "Περσικά",
+ "phn": "Φοινικικά",
+ "pon": "Pohnpeian",
+ "pol": "Πολωνέζικα",
+ "por": "Πορτογαλικά",
+ "pus": "Pashto",
+ "que": "Quechua",
+ "raj": "Rajasthani",
+ "rap": "Rapanui",
+ "ron": "Ρουμάνικα",
+ "roh": "Romansh",
+ "rom": "Romany",
+ "run": "Rundi",
+ "rus": "Ρώσικα",
+ "smo": "Samoan",
+ "sad": "Sandawe",
+ "sag": "Sango",
+ "san": "Σανσκριτικά",
+ "sat": "Santali",
+ "srd": "Sardinian",
+ "sas": "Sasak",
+ "sco": "Σκωτσέζικα",
+ "sel": "Selkup",
+ "srp": "Σερβικά",
+ "srr": "Serer",
+ "shn": "Shan",
+ "sna": "Shona",
+ "scn": "Sicilian",
+ "sid": "Sidamo",
+ "bla": "Siksika",
+ "snd": "Sindhi",
+ "sin": "Sinhala",
+ "den": "Slave (Athapascan)",
+ "slk": "Σλοβακικά",
+ "slv": "Σλοβενικά",
+ "sog": "Σογδιανά",
+ "som": "Σομαλικά",
+ "snk": "Soninke",
+ "spa": "Ισπανικά",
+ "srn": "Sranan Tongo",
+ "suk": "Sukuma",
+ "sux": "Sumerian",
+ "sun": "Sundanese",
+ "sus": "Susu",
+ "swa": "Swahili (macrolanguage)",
+ "ssw": "Swati",
+ "swe": "Σουηδικά",
+ "syr": "Συριακά",
+ "tgl": "Tagalog",
+ "tah": "Tahitian",
+ "tgk": "Tajik",
+ "tmh": "Tamashek",
+ "tam": "Ταμίλ",
+ "tat": "Tatar",
+ "tel": "Telugu",
+ "ter": "Tereno",
+ "tet": "Tetum",
+ "tha": "Ταϊλανδέζικη",
+ "bod": "Θιβετιανά",
+ "tig": "Tigre",
+ "tir": "Tigrinya",
+ "tem": "Timne",
+ "tiv": "Tiv",
+ "tli": "Tlingit",
+ "tpi": "Tok Pisin",
+ "tkl": "Τοκελάου",
+ "tog": "Tonga (Nyasa)",
+ "ton": "Tonga (Tonga Islands)",
+ "tsi": "Tsimshian",
+ "tso": "Tsonga",
+ "tsn": "Tswana",
+ "tum": "Tumbuka",
+ "tur": "Τουρκικά",
+ "tuk": "Τουρκμένικα",
+ "tvl": "Tuvalu",
+ "tyv": "Tuvinian",
+ "twi": "Twi",
+ "udm": "Udmurt",
+ "uga": "Ugaritic",
+ "uig": "Uighur",
+ "ukr": "Ουκρανικά",
+ "umb": "Umbundu",
+ "mis": "Uncoded languages",
+ "und": "Απροσδιόριστη",
+ "urd": "Urdu",
+ "uzb": "Uzbek",
+ "vai": "Vai",
+ "ven": "Venda",
+ "vie": "Βιετναμέζικα",
+ "vol": "Volapük",
+ "vot": "Votic",
+ "wln": "Walloon",
+ "war": "Waray (Philippines)",
+ "was": "Washo",
+ "cym": "Ουαλικά",
+ "wal": "Wolaytta",
+ "wol": "Wolof",
+ "xho": "Xhosa",
+ "sah": "Yakut",
+ "yao": "Yao",
+ "yap": "Yapese",
+ "yid": "Yiddish",
+ "yor": "Yoruba",
+ "zap": "Zapotec",
+ "zza": "Zaza",
+ "zen": "Zenaga",
+ "zha": "Zhuang",
+ "zul": "Zulu",
+ "zun": "Zuni"
+ },
"nl": {
"aar": "Afar; Hamitisch",
"abk": "Abchazisch",
@@ -852,6 +1227,379 @@ LANGUAGE_NAMES = {
"zxx": "Geen linguïstische inhoud",
"zza": "Zaza"
},
+ "tr": {
+ "abk": "Abhazca",
+ "ace": "Achinese",
+ "ach": "Acoli",
+ "ada": "Adangme",
+ "ady": "Adyghe",
+ "aar": "Afar",
+ "afh": "Afrihili",
+ "afr": "Afrikanca",
+ "ain": "Ainu (Japonca)",
+ "aka": "Akanca (Afrika dili)",
+ "akk": "Akatça",
+ "sqi": "Albanian",
+ "ale": "Alaskaca",
+ "amh": "Etiyopyaca",
+ "anp": "Angika",
+ "ara": "Arapça",
+ "arg": "Aragonca (İspanya)",
+ "arp": "Arapaho (Kuzey Amerika yerlileri)",
+ "arw": "Arawak (Surinam)",
+ "hye": "Ermenice",
+ "asm": "Assamese (Hindistan)",
+ "ast": "Asturyasca",
+ "ava": "Avarca",
+ "ave": "Avestan (Eski İran)",
+ "awa": "Awadhi (Hindistan)",
+ "aym": "Aymara (Güney Amerika)",
+ "aze": "Azerice",
+ "ban": "Balice (Bali adaları)",
+ "bal": "Belucice (İran)",
+ "bam": "Bambara (Mali)",
+ "bas": "Basa (Kamerun)",
+ "bak": "Başkırca",
+ "eus": "Baskça",
+ "bej": "Beja (Eritre; Sudan)",
+ "bel": "Beyaz Rusça",
+ "bem": "Bemba (Zambia)",
+ "ben": "Bengalce",
+ "bho": "Bhojpuri (Hindistan)",
+ "bik": "Bikol (Filipinler)",
+ "byn": "Bilin",
+ "bin": "Bini (Afrika)",
+ "bis": "Bislama (Vanuatu; Kuzey Pasifik)",
+ "zbl": "Blis Sembolleri",
+ "bos": "Boşnakça",
+ "bra": "Braj (Hindistan)",
+ "bre": "Bretonca",
+ "bug": "Buginese (Endonezya)",
+ "bul": "Bulgarca",
+ "bua": "Buriat (Moğolistan)",
+ "mya": "Burmaca",
+ "cad": "Caddo (Kuzey Amerika yerlileri)",
+ "cat": "Katalanca",
+ "ceb": "Cebuano (Filipinler)",
+ "chg": "Çağatayca",
+ "cha": "Chamorro (Guam adaları)",
+ "che": "Çeçence",
+ "chr": "Cherokee (Kuzey Amerika yerlileri)",
+ "chy": "Cheyenne (kuzey Amerika yerlileri)",
+ "chb": "Chibcha (Kolombiya)",
+ "zho": "Çince",
+ "chn": "Chinook lehçesi (Kuzey Batı Amerika kıyıları)",
+ "chp": "Chipewyan (Kuzey Amerika yerlileri)",
+ "cho": "Choctaw (Kuzey Amerika yerlileri)",
+ "chk": "Chuukese",
+ "chv": "Çuvaş (Türkçe)",
+ "cop": "Kıptice (Eski Mısır)",
+ "cor": "Cornish (Kelt)",
+ "cos": "Korsikaca",
+ "cre": "Cree (Kuzey Amerika yerlileri)",
+ "mus": "Creek",
+ "hrv": "Hırvatça",
+ "ces": "Çekçe",
+ "dak": "Dakota (Kuzey Amerika yerlileri)",
+ "dan": "Danimarkaca; Danca",
+ "dar": "Dargwa (Dağıstan)",
+ "del": "Delaware (Kuzey Amerika yerlileri)",
+ "div": "Dhivehi",
+ "din": "Dinka (Sudan)",
+ "doi": "Dogri (makro dili)",
+ "dgr": "Dogrib (Kanada)",
+ "dua": "Duala (Afrika)",
+ "nld": "Flâmanca (Hollanda dili)",
+ "dyu": "Dyula (Burkina Faso; Mali)",
+ "dzo": "Dzongkha (Butan)",
+ "efi": "Efik (Afrika)",
+ "egy": "Mısırca (Eski)",
+ "eka": "Ekajuk (Afrika)",
+ "elx": "Elamca",
+ "eng": "İngilizce",
+ "myv": "Erzya dili",
+ "epo": "Esperanto",
+ "est": "Estonca",
+ "ewe": "Ewe (Afrika)",
+ "ewo": "Ewondo (Afrika)",
+ "fan": "Fang (Ekvatoryal Guinea)",
+ "fat": "Fanti (Afrika)",
+ "fao": "Faroece",
+ "fij": "Fiji dili",
+ "fil": "Filipince",
+ "fin": "Fince",
+ "fon": "Fon (Benin)",
+ "fra": "Fransızca",
+ "fur": "Friulian (İtalya)",
+ "ful": "Fulah (Afrika)",
+ "gaa": "Ganaca",
+ "glg": "Galce",
+ "lug": "Ganda Dili",
+ "gay": "Gayo (Sumatra)",
+ "gba": "Gbaya (Orta Afrika Cumhuriyeti)",
+ "gez": "Geez (Etiyopya)",
+ "kat": "Gürcüce",
+ "deu": "Almanca",
+ "gil": "Kiribati dili",
+ "gon": "Gondi (Hindistan)",
+ "gor": "Gorontalo (Endonezya)",
+ "got": "Gotik",
+ "grb": "Grebo (Liberya)",
+ "grn": "Guarani (Paraguay)",
+ "guj": "Gucaratça",
+ "gwi": "Gwichʼin",
+ "hai": "Haida (Kuzey Amerika yerlileri)",
+ "hau": "Hausa Dili",
+ "haw": "Havai Dili",
+ "heb": "İbranice",
+ "her": "Herero Dili",
+ "hil": "Hiligaynon",
+ "hin": "Hintçe",
+ "hmo": "Hiri Motu",
+ "hit": "Hititçe",
+ "hmn": "Hmong",
+ "hun": "Macarca",
+ "hup": "Hupa",
+ "iba": "Iban",
+ "isl": "İzlandaca",
+ "ido": "Ido Dili",
+ "ibo": "Igbo Dili",
+ "ilo": "Iloko",
+ "ind": "Endonezyaca",
+ "inh": "İnguşca",
+ "ina": "Interlingua (Uluslararası Yardımcı Dil Kurumu)",
+ "ile": "Interlingue",
+ "iku": "Inuktitut",
+ "ipk": "Inupiak Dili",
+ "gle": "İrlandaca",
+ "ita": "İtalyanca",
+ "jpn": "Japonca",
+ "jav": "Cava Dili",
+ "jrb": "Yahudi-Arapçası",
+ "jpr": "Yahudi-Farsça",
+ "kbd": "Kabardian",
+ "kab": "Kabyle",
+ "kac": "Kachin",
+ "kal": "Kalaallisut",
+ "xal": "Kalmyk",
+ "kam": "Kamba (Kenya)",
+ "kan": "Kannada",
+ "kau": "Kanuri Dili",
+ "kaa": "Kara-Kalpak",
+ "krc": "Karachay-Balkar",
+ "krl": "Karelian",
+ "kas": "Keşmirce",
+ "csb": "Kashubian (Lehçe diyalekti)",
+ "kaw": "Kawi",
+ "kaz": "Kazakça",
+ "kha": "Khasi",
+ "kho": "Khotanese",
+ "kik": "Kikuyu Dili",
+ "kmb": "Kimbundu",
+ "kin": "Kinyarwanda",
+ "kir": "Kırgızca",
+ "tlh": "Klingon",
+ "kom": "Komi Dili",
+ "kon": "Kongo Dili",
+ "kok": "Konkani (makro dil)",
+ "kor": "Korece",
+ "kos": "Kosraean",
+ "kpe": "Kpelle",
+ "kua": "Kuanyama Dili",
+ "kum": "Kumyk",
+ "kur": "Kürtçe",
+ "kru": "Kurukh",
+ "kut": "Kutenai",
+ "lad": "Ladino",
+ "lah": "Lahnda",
+ "lam": "Lamba",
+ "lao": "Laos Dili",
+ "lat": "Latince",
+ "lav": "Letonca",
+ "lez": "Lezghian",
+ "lim": "Liburg Dili",
+ "lin": "Lingala Dili",
+ "lit": "Litvanyaca",
+ "jbo": "Lojban dili",
+ "loz": "Lozi",
+ "lub": "Luba Katanga Dili",
+ "lua": "Luba-Lulua",
+ "lui": "Luiseno",
+ "smj": "Lule Sami",
+ "lun": "Lunda",
+ "luo": "Luo (Kenya ve Tanzanya)",
+ "lus": "Lushai",
+ "ltz": "Lüksemburg Dili",
+ "mkd": "Makedonca",
+ "mad": "Madurese",
+ "mag": "Magahi",
+ "mai": "Maithili dili",
+ "mak": "Makasar",
+ "mlg": "Madagaskar Dili",
+ "msa": "Malay (makro dili)",
+ "mal": "Malayalam",
+ "mlt": "Maltaca",
+ "mnc": "Manchu",
+ "mdr": "Mandar",
+ "man": "Mandingo",
+ "mni": "Manipuri dili",
+ "glv": "Manx (Galler)",
+ "mri": "Maori Dili",
+ "arn": "Mapudungun",
+ "mar": "Marathi",
+ "chm": "Mari (Rusya)",
+ "mah": "Marshall Dili",
+ "mwr": "Marwari",
+ "mas": "Masai",
+ "men": "Mende (Sierra Leone)",
+ "mic": "Mi'kmak",
+ "min": "Minangkabau",
+ "mwl": "Mirandese",
+ "moh": "Mohawk",
+ "mdf": "Moşka",
+ "lol": "Mongo",
+ "mon": "Moğol Dili",
+ "mos": "Mossi",
+ "mul": "Çoklu diller",
+ "nqo": "N'Ko",
+ "nau": "Nauru",
+ "nav": "Navajo Dili",
+ "ndo": "Ndonga Dili",
+ "nap": "Neapolitan",
+ "nia": "Nias",
+ "niu": "Niuean",
+ "zxx": "Hiçbir dil içeriği yok",
+ "nog": "Nogai",
+ "nor": "Norveçce",
+ "nob": "Norveççe Bokmal",
+ "nno": "Norveççe Nynorsk",
+ "nym": "Nyamwezi",
+ "nya": "Nyanja",
+ "nyn": "Nyankole",
+ "nyo": "Nyoro",
+ "nzi": "Nzima",
+ "oci": "Oksitanca (1500 sonrası)",
+ "oji": "Ojibwa Dili",
+ "orm": "Oromo Dili",
+ "osa": "Osage",
+ "oss": "Osetya Dili",
+ "pal": "Pehlevi",
+ "pau": "Palauan",
+ "pli": "Pali Dili",
+ "pam": "Pampanga",
+ "pag": "Pangasinan",
+ "pan": "Pencabi Dili",
+ "pap": "Papiamento",
+ "fas": "Farsça",
+ "phn": "Fenikçe",
+ "pon": "Pohnpeian",
+ "pol": "Polonyaca",
+ "por": "Portekizce",
+ "pus": "Pushto",
+ "que": "Quechua",
+ "raj": "Rajasthani",
+ "rap": "Rapanui",
+ "ron": "Rumence",
+ "roh": "Romanca",
+ "rom": "Çingene Dili",
+ "run": "Kirundi",
+ "rus": "Rusça",
+ "smo": "Samoa Dili",
+ "sad": "Sandawe",
+ "sag": "Sangho",
+ "san": "Sanskritçe",
+ "sat": "Santali dili",
+ "srd": "Sardinya",
+ "sas": "Sasak",
+ "sco": "İskoç lehçesi",
+ "sel": "Selkup",
+ "srp": "Sırpça",
+ "srr": "Serer",
+ "shn": "Shan",
+ "sna": "Shona",
+ "scn": "Sicilyalı",
+ "sid": "Sidamo",
+ "bla": "Siksika (Kuzey Amerika yerlileri)",
+ "snd": "Sindhi",
+ "sin": "Sinhala Dili",
+ "den": "Slave (Athapascan; Kuzey Amerika yerlileri)",
+ "slk": "Slovakça",
+ "slv": "Slovence",
+ "sog": "Sogdian",
+ "som": "Somali Dili",
+ "snk": "Soninke",
+ "spa": "İspanyolca",
+ "srn": "Sranan Tongo",
+ "suk": "Sukuma",
+ "sux": "Sümerce",
+ "sun": "Sudan Dili",
+ "sus": "Susu",
+ "swa": "Swahili (makro dil)",
+ "ssw": "Siswati",
+ "swe": "İsveçce",
+ "syr": "Süryanice",
+ "tgl": "Tagalog",
+ "tah": "Tahitice",
+ "tgk": "Tacikçe",
+ "tmh": "Tamashek",
+ "tam": "Tamilce",
+ "tat": "Tatarca",
+ "tel": "Telugu",
+ "ter": "Tereno",
+ "tet": "Tetum",
+ "tha": "Taylandça",
+ "bod": "Tibetçe",
+ "tig": "Tigre",
+ "tir": "Tigrinya Dili",
+ "tem": "Timne",
+ "tiv": "Tiv",
+ "tli": "Tlingit",
+ "tpi": "Tok Pisin",
+ "tkl": "Tokelau",
+ "tog": "Tonga (Nyasa)",
+ "ton": "Tonga",
+ "tsi": "Tsimshian",
+ "tso": "Tsonga",
+ "tsn": "Setswana",
+ "tum": "Tumbuka",
+ "tur": "Türkçe",
+ "tuk": "Türkmence",
+ "tvl": "Tuvalu",
+ "tyv": "Tuvinian",
+ "twi": "Twi",
+ "udm": "Udmurt",
+ "uga": "Ugarit Çivi Yazısı",
+ "uig": "Uygurca",
+ "ukr": "Ukraynaca",
+ "umb": "Umbundu",
+ "mis": "Şifresiz diller",
+ "und": "Belirlenemeyen",
+ "urd": "Urduca",
+ "uzb": "Özbekçe",
+ "vai": "Vai",
+ "ven": "Venda Dili",
+ "vie": "Vietnamca",
+ "vol": "Volapük",
+ "vot": "Votic",
+ "wln": "Valonca",
+ "war": "Waray (Filipinler)",
+ "was": "Vasho",
+ "cym": "Gal Dili",
+ "wal": "Wolaytta",
+ "wol": "Wolof",
+ "xho": "Xhosa",
+ "sah": "Yakut",
+ "yao": "Yao",
+ "yap": "Yapese",
+ "yid": "Yidiş",
+ "yor": "Yoruba",
+ "zap": "Zapotec",
+ "zza": "Zaza",
+ "zen": "Zenaga",
+ "zha": "Zuang Dili",
+ "zul": "Zulu",
+ "zun": "Zuni"
+ },
"fr": {
"aar": "afar",
"abk": "abkhaze",
@@ -2532,6 +3280,426 @@ LANGUAGE_NAMES = {
"zxx": "No linguistic content",
"zza": "扎扎其语"
},
+ "fi": {
+ "aar": "afar",
+ "abk": "abhaasi",
+ "ace": "aceh",
+ "ach": "atšoli",
+ "ada": "adangme",
+ "ady": "adyge",
+ "afh": "afrihili",
+ "afr": "afrikaans",
+ "ain": "Ainu (Japan)",
+ "aka": "Akan",
+ "akk": "akkadi",
+ "ale": "aleutti",
+ "alt": "Altai; Southern",
+ "amh": "amhara",
+ "ang": "English; Old (ca. 450-1100)",
+ "anp": "angika",
+ "ara": "arabia",
+ "arc": "Aramaic; Official (700-300 BCE)",
+ "arg": "aragonia",
+ "arn": "Mapudungun",
+ "arp": "arapaho",
+ "arw": "arawak",
+ "asm": "asami",
+ "ast": "asturia",
+ "ava": "avaari",
+ "ave": "avestan",
+ "awa": "awadhi",
+ "aym": "Aymara",
+ "aze": "azeri",
+ "bak": "baškiiri",
+ "bal": "belutši",
+ "bam": "Bambara",
+ "ban": "bali",
+ "bas": "Basa (Cameroon)",
+ "bej": "beja",
+ "bel": "valkovenäjä",
+ "bem": "Bemba (Zambia)",
+ "ben": "bengali",
+ "bho": "bhojpuri",
+ "bik": "bikol",
+ "bin": "bini",
+ "bis": "bislama",
+ "bla": "mustajalka (siksika)",
+ "bod": "tiibetti",
+ "bos": "bosnia",
+ "bra": "bradž",
+ "bre": "bretoni",
+ "bua": "burjaatti",
+ "bug": "bugi",
+ "bul": "bulgaria",
+ "byn": "Bilin",
+ "cad": "caddo",
+ "car": "Carib; Galibi",
+ "cat": "katalaani",
+ "ceb": "cebuano",
+ "ces": "tšekki",
+ "cha": "chamorro",
+ "chb": "chibcha",
+ "che": "tšetšeeni",
+ "chg": "Chagatai",
+ "chk": "chuuk",
+ "chm": "mari (Venäjä)",
+ "chn": "chinook-jargon",
+ "cho": "choctaw",
+ "chp": "chipewyan",
+ "chr": "cherokee",
+ "chu": "Slavonic; Old",
+ "chv": "tšuvassi",
+ "chy": "cheyenne",
+ "cop": "kopti",
+ "cor": "korni",
+ "cos": "korsika",
+ "cre": "cree",
+ "crh": "krimintataari",
+ "csb": "kašubi",
+ "cym": "kymri",
+ "dak": "dakota",
+ "dan": "tanska",
+ "dar": "dargva",
+ "del": "delaware",
+ "den": "athapaski-slavi",
+ "deu": "saksa",
+ "dgr": "dogrib",
+ "din": "Dinka",
+ "div": "Dhivehi",
+ "doi": "Dogri (macrolanguage)",
+ "dsb": "alasorbi",
+ "dua": "duala",
+ "dum": "Dutch; Middle (ca. 1050-1350)",
+ "dyu": "dyula",
+ "dzo": "dzongkha",
+ "efi": "efik",
+ "egy": "muinaisegypti",
+ "eka": "ekajuk",
+ "ell": "nykykreikka",
+ "elx": "elami",
+ "eng": "englanti",
+ "enm": "keskienglanti",
+ "epo": "esperanto",
+ "est": "viro",
+ "eus": "baski",
+ "ewe": "ewe",
+ "ewo": "ewondo",
+ "fan": "Fang (Equatorial Guinea)",
+ "fao": "fääri",
+ "fas": "persia",
+ "fat": "fanti",
+ "fij": "fidži",
+ "fil": "filipino",
+ "fin": "suomi",
+ "fon": "fon",
+ "fra": "ranska",
+ "frm": "French; Middle (ca. 1400-1600)",
+ "fro": "French; Old (842-ca. 1400)",
+ "frr": "Frisian; Northern",
+ "frs": "Frisian; Eastern",
+ "fry": "Frisian; Western",
+ "ful": "fulani",
+ "fur": "friuli",
+ "gaa": "gã",
+ "gay": "gayo",
+ "gba": "Gbaya (Central African Republic)",
+ "gez": "ge'ez",
+ "gil": "kiribati",
+ "gla": "Gaelic; Scottish",
+ "gle": "iiri",
+ "glg": "galicia",
+ "glv": "manksi",
+ "gmh": "German; Middle High (ca. 1050-1500)",
+ "goh": "German; Old High (ca. 750-1050)",
+ "gon": "gondi",
+ "gor": "gorontalo",
+ "got": "gootti",
+ "grb": "grebo",
+ "grc": "muinaiskreikka",
+ "grn": "guarani",
+ "gsw": "German; Swiss",
+ "guj": "gujarati",
+ "gwi": "Gwichʼin",
+ "hai": "haida",
+ "hat": "Creole; Haitian",
+ "hau": "hausa",
+ "haw": "havaiji",
+ "heb": "heprea",
+ "her": "herero",
+ "hil": "hiligaynon",
+ "hin": "hindi",
+ "hit": "heetti",
+ "hmn": "hmong",
+ "hmo": "hiri-motu",
+ "hrv": "kroatia",
+ "hsb": "Sorbian; Upper",
+ "hun": "unkari",
+ "hup": "hupa",
+ "hye": "armenia",
+ "iba": "Iban",
+ "ibo": "igbo",
+ "ido": "ido",
+ "iii": "Yi; Sichuan",
+ "iku": "inuktitut",
+ "ile": "interlingue",
+ "ilo": "iloko",
+ "ina": "interlingua",
+ "ind": "indonesia",
+ "inh": "inguuši",
+ "ipk": "iñupiaq",
+ "isl": "islanti",
+ "ita": "italia",
+ "jav": "jaava",
+ "jbo": "lojban",
+ "jpn": "japani",
+ "jpr": "juutalaispersia",
+ "jrb": "juutalaisarabia",
+ "kaa": "karakalpakki",
+ "kab": "kabyyli",
+ "kac": "kachin",
+ "kal": "grönlanti",
+ "kam": "Kamba (Kenya)",
+ "kan": "kannada",
+ "kas": "kashmiri",
+ "kat": "georgia",
+ "kau": "kanuri",
+ "kaw": "kavi",
+ "kaz": "kazakki",
+ "kbd": "kabardi",
+ "kha": "Khasi",
+ "khm": "Khmer; Central",
+ "kho": "khotani",
+ "kik": "kikuyu",
+ "kin": "ruanda",
+ "kir": "kirgiisi",
+ "kmb": "kimbundu",
+ "kok": "Konkani (macrolanguage)",
+ "kom": "komi",
+ "kon": "Kongo",
+ "kor": "korea",
+ "kos": "kosrae",
+ "kpe": "kpelle",
+ "krc": "karatšai-balkaari",
+ "krl": "karjala",
+ "kru": "kurukh",
+ "kua": "kuanjama",
+ "kum": "kumykki",
+ "kur": "kurdi",
+ "kut": "kutenai",
+ "lad": "ladino",
+ "lah": "lahnda",
+ "lam": "lamba",
+ "lao": "lao",
+ "lat": "latina",
+ "lav": "latvia",
+ "lez": "lezgi",
+ "lim": "Limburgan",
+ "lin": "lingala",
+ "lit": "liettua",
+ "lol": "mongo",
+ "loz": "lozi",
+ "ltz": "Luxemburg",
+ "lua": "luba (Lulua)",
+ "lub": "luba (Katanga)",
+ "lug": "Ganda",
+ "lui": "luiseño",
+ "lun": "lunda",
+ "luo": "luo",
+ "lus": "lushai",
+ "mad": "madura",
+ "mag": "magahi",
+ "mah": "Marshallese",
+ "mai": "maithili",
+ "mak": "Makasar",
+ "mal": "malayalam",
+ "man": "mandingo",
+ "mar": "marathi",
+ "mas": "masai",
+ "mdf": "mokša",
+ "mdr": "mandar",
+ "men": "Mende (Sierra Leone)",
+ "mga": "keski-iiri",
+ "mic": "Mi'kmaq",
+ "min": "minangkabau",
+ "mis": "Uncoded languages",
+ "mkd": "makedonia",
+ "mlg": "malagassi",
+ "mlt": "malta",
+ "mnc": "mantšu",
+ "mni": "manipuri",
+ "moh": "mohawk",
+ "mon": "Mongolian",
+ "mos": "mossi",
+ "mri": "maori",
+ "msa": "Malay (macrolanguage)",
+ "mul": "monia kieliä",
+ "mus": "muskogi",
+ "mwl": "mirandês",
+ "mwr": "marwari",
+ "mya": "burma",
+ "myv": "ersä",
+ "nap": "napoli",
+ "nau": "nauru",
+ "nav": "Navajo",
+ "nbl": "ndebele; eteländebele",
+ "nde": "ndebele; pohjoisndebele",
+ "ndo": "ndonga",
+ "nds": "German; Low",
+ "nep": "nepali",
+ "new": "Bhasa; Nepal",
+ "nia": "nias",
+ "niu": "niue",
+ "nld": "hollanti",
+ "nno": "norja (uusnorja)",
+ "nob": "Norwegian Bokmål",
+ "nog": "nogai",
+ "non": "muinaisnorja",
+ "nor": "norja",
+ "nqo": "N'Ko",
+ "nso": "Sotho; Northern",
+ "nwc": "Newari; Old",
+ "nya": "Nyanja",
+ "nym": "nyamwezi",
+ "nyn": "nyankole",
+ "nyo": "Nyoro",
+ "nzi": "nzima",
+ "oci": "Occitan (post 1500)",
+ "oji": "Ojibwa",
+ "ori": "oriya",
+ "orm": "oromo",
+ "osa": "osage",
+ "oss": "Ossetian",
+ "ota": "osmaninturkki",
+ "pag": "pangasinan",
+ "pal": "pahlavi",
+ "pam": "pampanga",
+ "pan": "Panjabi",
+ "pap": "papiamentu",
+ "pau": "palau",
+ "peo": "Persian; Old (ca. 600-400 B.C.)",
+ "phn": "foinikia",
+ "pli": "Pali",
+ "pol": "puola",
+ "pon": "pohnpei",
+ "por": "portugali",
+ "pro": "muinaisprovensaali",
+ "pus": "pašto",
+ "que": "Quechua",
+ "raj": "rajasthani",
+ "rap": "rapanui",
+ "rar": "Maori; Cook Islands",
+ "roh": "Romansh",
+ "rom": "romani",
+ "ron": "romania",
+ "run": "rundi",
+ "rup": "Romanian; Macedo-",
+ "rus": "venäjä",
+ "sad": "sandawe",
+ "sag": "Sango",
+ "sah": "jakuutti",
+ "sam": "Aramaic; Samaritan",
+ "san": "sanskrit",
+ "sas": "Sasak",
+ "sat": "santali",
+ "scn": "sisilia",
+ "sco": "skotti",
+ "sel": "selkuppi",
+ "sga": "muinaisiiri",
+ "shn": "shan",
+ "sid": "sidamo",
+ "sin": "Sinhala",
+ "slk": "slovakki",
+ "slv": "sloveeni",
+ "sma": "eteläsaame",
+ "sme": "pohjoissaame",
+ "smj": "luulajansaame",
+ "smn": "inarinsaame",
+ "smo": "samoa",
+ "sms": "koltansaami",
+ "sna": "shona",
+ "snd": "sindhi",
+ "snk": "soninke",
+ "sog": "sogdi",
+ "som": "somali",
+ "sot": "eteläsotho",
+ "spa": "espanja",
+ "sqi": "albania",
+ "srd": "sardi",
+ "srn": "Sranan Tongo",
+ "srp": "serbia",
+ "srr": "Serer",
+ "ssw": "swazi",
+ "suk": "sukuma",
+ "sun": "sunda",
+ "sus": "susu",
+ "sux": "sumeri",
+ "swa": "Swahili (macrolanguage)",
+ "swe": "ruotsi",
+ "syc": "Syriac; Classical",
+ "syr": "syyria",
+ "tah": "tahiti",
+ "tam": "tamili",
+ "tat": "tataari",
+ "tel": "Telugu",
+ "tem": "temne",
+ "ter": "tereno",
+ "tet": "tetum",
+ "tgk": "tadžikki",
+ "tgl": "tagalog",
+ "tha": "thai",
+ "tig": "tigre",
+ "tir": "tigrinya",
+ "tiv": "tiv",
+ "tkl": "tokelau",
+ "tlh": "Klingon",
+ "tli": "tlinglit",
+ "tmh": "Tamashek",
+ "tog": "Malawin tonga",
+ "ton": "Tongan tonga",
+ "tpi": "tok-pisin",
+ "tsi": "tsimshian",
+ "tsn": "tswana",
+ "tso": "tsonga",
+ "tuk": "turkmeeni",
+ "tum": "tumbuka",
+ "tur": "turkki",
+ "tvl": "tuvalu",
+ "twi": "twi",
+ "tyv": "tuva",
+ "udm": "udmurtti",
+ "uga": "ugarit",
+ "uig": "uiguuri",
+ "ukr": "ukraina",
+ "umb": "umbundu",
+ "und": "määrittämätön",
+ "urd": "urdu",
+ "uzb": "uzbekki",
+ "vai": "vai",
+ "ven": "venda",
+ "vie": "vietnam",
+ "vol": "volapük",
+ "vot": "vatja",
+ "wal": "Wolaytta",
+ "war": "Waray (Philippines)",
+ "was": "washo",
+ "wln": "valloni",
+ "wol": "wolof",
+ "xal": "Kalmyk",
+ "xho": "xhosa",
+ "yao": "mien",
+ "yap": "yap",
+ "yid": "jiddiš",
+ "yor": "yoruba",
+ "zap": "Zapotec",
+ "zbl": "Blissymbols",
+ "zen": "zenaga",
+ "zha": "Zhuang",
+ "zho": "kiina",
+ "zul": "zulu",
+ "zun": "zuni",
+ "zxx": "No linguistic content",
+ "zza": "Zaza"
+ },
"it": {
"aar": "Afar",
"abk": "Abkhazian",
@@ -4515,7 +5683,7 @@ LANGUAGE_NAMES = {
"pon": "Pohnpeian",
"por": "Portuguese",
"pro": "Provençal; Old (to 1500)",
- "pus": "Pushto",
+ "pus": "Pashto",
"que": "Quechua",
"raj": "Rajasthani",
"rap": "Rapanui",
@@ -5052,6 +6220,426 @@ LANGUAGE_NAMES = {
"zxx": "No linguistic content",
"zza": "Zaza"
},
+ "cs": {
+ "aar": "afarština",
+ "abk": "abchazajština",
+ "ace": "atěžština",
+ "ach": "ačoli (luoština)",
+ "ada": "adangmeština",
+ "ady": "adyghe",
+ "afh": "afrihilijština",
+ "afr": "afrikánština",
+ "ain": "ainu (Japonsko)",
+ "aka": "akanština",
+ "akk": "akkadština",
+ "ale": "aleutština",
+ "alt": "altajština; jižní",
+ "amh": "Amharština",
+ "ang": "Angličtina; stará (asi 450-1100)",
+ "anp": "angika",
+ "ara": "arabština",
+ "arc": "aramejština; oficiální (700-300 př. n. l.)",
+ "arg": "aragonská španělština",
+ "arn": "mapudungun",
+ "arp": "arapaho",
+ "arw": "arawacké jazyky",
+ "asm": "ásámština",
+ "ast": "asturština",
+ "ava": "avarština",
+ "ave": "avestština",
+ "awa": "avadhština (avadhí)",
+ "aym": "aymarština",
+ "aze": "azerbajdžánština",
+ "bak": "Baskirština",
+ "bal": "balúčština",
+ "bam": "bambarština",
+ "ban": "balijština",
+ "bas": "basa (Kamerun)",
+ "bej": "bedža",
+ "bel": "běloruština",
+ "bem": "bemba (Zambie)",
+ "ben": "bengálština",
+ "bho": "bhódžpurština",
+ "bik": "bikolština",
+ "bin": "bini",
+ "bis": "bislamština",
+ "bla": "siksika",
+ "bod": "tibetština",
+ "bos": "bosenština",
+ "bra": "bradžština",
+ "bre": "bretonština",
+ "bua": "burjatština",
+ "bug": "bugiština",
+ "bul": "bulharština",
+ "byn": "bilin",
+ "cad": "caddo",
+ "car": "carib; Galibi",
+ "cat": "katalánština",
+ "ceb": "cebuánština",
+ "ces": "Čeština",
+ "cha": "čamoro",
+ "chb": "čibča",
+ "che": "čečenština",
+ "chg": "Chagatai",
+ "chk": "čukčtina",
+ "chm": "Mari (Russia)",
+ "chn": "činuk pidžin",
+ "cho": "choctawština",
+ "chp": "čipeva",
+ "chr": "čerokézština",
+ "chu": "Slavonic; Old",
+ "chv": "čuvaština",
+ "chy": "čejenština",
+ "cop": "koptština",
+ "cor": "kornština",
+ "cos": "korsičtina",
+ "cre": "krí",
+ "crh": "Turkish; Crimean",
+ "csb": "kašubština",
+ "cym": "velština",
+ "dak": "dakotština",
+ "dan": "dánština",
+ "dar": "dargwa",
+ "del": "delawarština",
+ "den": "atabaské jazyky",
+ "deu": "Němčina",
+ "dgr": "dogrib",
+ "din": "dinkština",
+ "div": "Dhivehi",
+ "doi": "Dogri (macrolanguage)",
+ "dsb": "Sorbian; Lower",
+ "dua": "dualština",
+ "dum": "Dutch; Middle (ca. 1050-1350)",
+ "dyu": "djula",
+ "dzo": "Bhútánština",
+ "efi": "efik",
+ "egy": "egyptština (starověká)",
+ "eka": "ekajuk",
+ "ell": "řečtina; moderní (1453-)",
+ "elx": "elamština",
+ "eng": "Angličtina",
+ "enm": "Angličtina; středověká (1100-1500)",
+ "epo": "esperanto",
+ "est": "estonština",
+ "eus": "baskičtina",
+ "ewe": "eweština",
+ "ewo": "ewondo",
+ "fan": "Fang (Equatorial Guinea)",
+ "fao": "faerština",
+ "fas": "perština",
+ "fat": "fantiština",
+ "fij": "Fidži",
+ "fil": "Filipino",
+ "fin": "finština",
+ "fon": "fonština",
+ "fra": "francouzština",
+ "frm": "French; Middle (ca. 1400-1600)",
+ "fro": "French; Old (842-ca. 1400)",
+ "frr": "Frisian; Northern",
+ "frs": "Frisian; Eastern",
+ "fry": "Frisian; Western",
+ "ful": "fulahština",
+ "fur": "furlanština",
+ "gaa": "ga",
+ "gay": "gayo",
+ "gba": "Gbaya (Central African Republic)",
+ "gez": "etiopština",
+ "gil": "kiribatština",
+ "gla": "Gaelic; Scottish",
+ "gle": "irština",
+ "glg": "Galician",
+ "glv": "manština",
+ "gmh": "German; Middle High (ca. 1050-1500)",
+ "goh": "German; Old High (ca. 750-1050)",
+ "gon": "góndština",
+ "gor": "gorontalo",
+ "got": "gótština",
+ "grb": "grebo",
+ "grc": "řečtina; starověká (do 1453)",
+ "grn": "Guaranština",
+ "gsw": "German; Swiss",
+ "guj": "Gudžarátština",
+ "gwi": "Gwichʼin",
+ "hai": "haida",
+ "hat": "Creole; Haitian",
+ "hau": "Hausa",
+ "haw": "havajština",
+ "heb": "hebrejština",
+ "her": "herero",
+ "hil": "hiligayonština",
+ "hin": "hindština",
+ "hit": "chetitština",
+ "hmn": "hmongština",
+ "hmo": "hiri motu",
+ "hrv": "chorvatština",
+ "hsb": "Sorbian; Upper",
+ "hun": "maďarština",
+ "hup": "hupa",
+ "hye": "arménština",
+ "iba": "iban",
+ "ibo": "igbo",
+ "ido": "ido",
+ "iii": "Yi; Sichuan",
+ "iku": "Inuktitutština",
+ "ile": "Interlingue",
+ "ilo": "ilokánština",
+ "ina": "Interlingua (Mezinárodní pomocná jazyková asociace)",
+ "ind": "indonézština",
+ "inh": "inguština",
+ "ipk": "Inupiakština",
+ "isl": "islandština",
+ "ita": "italština",
+ "jav": "jávština",
+ "jbo": "lojban",
+ "jpn": "japonština",
+ "jpr": "judeo-perština",
+ "jrb": "judeo-arabština",
+ "kaa": "karakalpačtina",
+ "kab": "kabulí",
+ "kac": "kačjinština",
+ "kal": "Kalaallisut",
+ "kam": "Kamba (Kenya)",
+ "kan": "Kannadština",
+ "kas": "kašmírština",
+ "kat": "Gruzínština",
+ "kau": "kanuri",
+ "kaw": "kawi",
+ "kaz": "Kazachština",
+ "kbd": "kabardština",
+ "kha": "Khasi",
+ "khm": "Khmer; Central",
+ "kho": "chotánština",
+ "kik": "Kikuyu",
+ "kin": "Kinyarwandština",
+ "kir": "Kirgizština",
+ "kmb": "kimbundština",
+ "kok": "Konkani (macrolanguage)",
+ "kom": "komijština",
+ "kon": "Kongo",
+ "kor": "korejština",
+ "kos": "kosrajština",
+ "kpe": "kpelle",
+ "krc": "karachay-balkarština",
+ "krl": "karelština",
+ "kru": "kurukh",
+ "kua": "Kuanyama",
+ "kum": "kumyčtina",
+ "kur": "kurdština",
+ "kut": "kutenai",
+ "lad": "ladino",
+ "lah": "lahnda",
+ "lam": "lambština",
+ "lao": "Laoština",
+ "lat": "latina",
+ "lav": "Latvian",
+ "lez": "lezgiština",
+ "lim": "Limburgan",
+ "lin": "Ngalština",
+ "lit": "litevština",
+ "lol": "mongština",
+ "loz": "lozština",
+ "ltz": "Luxembourgish",
+ "lua": "luba-luluaština",
+ "lub": "lubu-katanžština",
+ "lug": "Ganda",
+ "lui": "luiseňo",
+ "lun": "lundština",
+ "luo": "luoština (Keňa a Tanzanie)",
+ "lus": "lušáí",
+ "mad": "madurština",
+ "mag": "magahština",
+ "mah": "Marshallese",
+ "mai": "maithilština",
+ "mak": "makasarština",
+ "mal": "Malabarština",
+ "man": "mandingština",
+ "mar": "maráthština",
+ "mas": "masajština",
+ "mdf": "moksha",
+ "mdr": "mandarínština",
+ "men": "Mende (Sierra Leone)",
+ "mga": "irština; středověká (900-1200)",
+ "mic": "Mi'kmaq",
+ "min": "minangkabau",
+ "mis": "Uncoded languages",
+ "mkd": "makedonština",
+ "mlg": "Malgaština",
+ "mlt": "maltézština",
+ "mnc": "manchu",
+ "mni": "manipurština",
+ "moh": "mohawk",
+ "mon": "mongolština",
+ "mos": "mosi",
+ "mri": "maorština",
+ "msa": "Malay (macrolanguage)",
+ "mul": "násobné jazyky",
+ "mus": "krík",
+ "mwl": "mirandština",
+ "mwr": "márvárština",
+ "mya": "Barmština",
+ "myv": "erzya",
+ "nap": "neapolština",
+ "nau": "naurština",
+ "nav": "navažština",
+ "nbl": "Ndebele; South",
+ "nde": "Ndebele; North",
+ "ndo": "ndondština",
+ "nds": "German; Low",
+ "nep": "nepálština",
+ "new": "Bhasa; Nepal",
+ "nia": "nias",
+ "niu": "niue",
+ "nld": "holandština",
+ "nno": "Norwegian Nynorsk",
+ "nob": "Norwegian Bokmål",
+ "nog": "nogai",
+ "non": "norština; stará",
+ "nor": "norština",
+ "nqo": "N'Ko",
+ "nso": "Sotho; Northern",
+ "nwc": "Newari; Old",
+ "nya": "Nyanja",
+ "nym": "ňamwežština",
+ "nyn": "nyankolština",
+ "nyo": "Nyoro",
+ "nzi": "nzima",
+ "oci": "Occitan (post 1500)",
+ "oji": "Ojibwa",
+ "ori": "orija",
+ "orm": "Oromo (Afan)",
+ "osa": "osagština",
+ "oss": "Ossetian",
+ "ota": "turečtina; osmanská (1500-1928)",
+ "pag": "pangsinan",
+ "pal": "pahlaví",
+ "pam": "pampangau",
+ "pan": "Panjabi",
+ "pap": "papiamento",
+ "pau": "palauština",
+ "peo": "Persian; Old (ca. 600-400 B.C.)",
+ "phn": "Slovinština",
+ "pli": "páli",
+ "pol": "Polština",
+ "pon": "pohnpeiština",
+ "por": "portugalština",
+ "pro": "provensálština; stará (do 1500)",
+ "pus": "pašto",
+ "que": "kečuánština",
+ "raj": "rádžasthánština",
+ "rap": "rapanuiština",
+ "rar": "Maori; Cook Islands",
+ "roh": "Romansh",
+ "rom": "římština",
+ "ron": "rumunština",
+ "run": "Kirundi",
+ "rup": "Romanian; Macedo-",
+ "rus": "Ruština",
+ "sad": "sandawština",
+ "sag": "sangoština",
+ "sah": "jakutština",
+ "sam": "Aramaic; Samaritan",
+ "san": "sanskrt",
+ "sas": "sačtina",
+ "sat": "santálí",
+ "scn": "sicilština",
+ "sco": "skotština",
+ "sel": "selkupština",
+ "sga": "irština; stará (do 900)",
+ "shn": "šanština",
+ "sid": "sidamo",
+ "sin": "Sinhálština",
+ "slk": "Slovenština",
+ "slv": "slovinština",
+ "sma": "Sami; Southern",
+ "sme": "Sami; Northern",
+ "smj": "lule sami",
+ "smn": "Sami; Inari",
+ "smo": "Samoyština",
+ "sms": "Sami; Skolt",
+ "sna": "šonština",
+ "snd": "sindhština",
+ "snk": "sonikština",
+ "sog": "sogdijština",
+ "som": "somálština",
+ "sot": "sotština; jižní",
+ "spa": "španělština",
+ "sqi": "albánština",
+ "srd": "sardinština",
+ "srn": "Sranan Tongo",
+ "srp": "srbština",
+ "srr": "Serer",
+ "ssw": "Siswatština",
+ "suk": "sukuma",
+ "sun": "Sundanština",
+ "sus": "susu",
+ "sux": "sumerština",
+ "swa": "svahilština (makrojazyk)",
+ "swe": "švédština",
+ "syc": "Syriac; Classical",
+ "syr": "syrština",
+ "tah": "tahitština",
+ "tam": "Tamilština",
+ "tat": "tatarština",
+ "tel": "Telugu",
+ "tem": "temne",
+ "ter": "tereno",
+ "tet": "tetumština",
+ "tgk": "Tádžičtina",
+ "tgl": "Tagalog",
+ "tha": "thajština",
+ "tig": "tigrejština",
+ "tir": "Tigrinijština",
+ "tiv": "tivština",
+ "tkl": "tokelauština",
+ "tlh": "Klingon",
+ "tli": "tlingit",
+ "tmh": "Tamashek",
+ "tog": "tongština (nyasa)",
+ "ton": "Tonga",
+ "tpi": "tok pisin",
+ "tsi": "tsimshijské jazyky",
+ "tsn": "Setswanština",
+ "tso": "Tsonga",
+ "tuk": "turkmenistánština",
+ "tum": "tumbukština",
+ "tur": "turečtina",
+ "tvl": "tuvalština",
+ "twi": "ťwiština",
+ "tyv": "tuvština",
+ "udm": "udmurtština",
+ "uga": "ugaritština",
+ "uig": "Uighurština",
+ "ukr": "ukrajinština",
+ "umb": "umbundu",
+ "und": "neurčitý",
+ "urd": "urdština",
+ "uzb": "uzbekistánština",
+ "vai": "vai",
+ "ven": "vendština",
+ "vie": "vietnamština",
+ "vol": "volapük",
+ "vot": "votiatština",
+ "wal": "Wolaytta",
+ "war": "Waray (Philippines)",
+ "was": "washo",
+ "wln": "valonština",
+ "wol": "volofština",
+ "xal": "Kalmyk",
+ "xho": "xhoština",
+ "yao": "jaoština",
+ "yap": "japština",
+ "yid": "Jidiš",
+ "yor": "jorubština",
+ "zap": "Zapotec",
+ "zbl": "Blissymbols",
+ "zen": "zenaga",
+ "zha": "Zhuang",
+ "zho": "čínština",
+ "zul": "Zulu",
+ "zun": "zunijština",
+ "zxx": "bez lingvistického obsahu",
+ "zza": "zaza"
+ },
"es": {
"aar": "Afar",
"abk": "Abkhazian",
@@ -5355,7 +6943,7 @@ LANGUAGE_NAMES = {
"pon": "Pohnpeian",
"por": "Portuguese",
"pro": "Provençal; Old (to 1500)",
- "pus": "Pushto",
+ "pus": "Pashto",
"que": "Quechua",
"raj": "Rajasthani",
"rap": "Rapanui",
@@ -5775,7 +7363,7 @@ LANGUAGE_NAMES = {
"pon": "Pohnpeian",
"por": "Portuguese",
"pro": "Provençal; Old (to 1500)",
- "pus": "Pushto",
+ "pus": "Pashto",
"que": "Quechua",
"raj": "Rajasthani",
"rap": "Rapanui",
diff --git a/cps/jinjia.py b/cps/jinjia.py
index ffd6832c9..688d1fbad 100644
--- a/cps/jinjia.py
+++ b/cps/jinjia.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
@@ -26,7 +25,7 @@
from __future__ import division, print_function, unicode_literals
import datetime
import mimetypes
-import re
+from uuid import uuid4
from babel.dates import format_date
from flask import Blueprint, request, url_for
@@ -45,6 +44,8 @@ log = logger.create()
def url_for_other_page(page):
args = request.view_args.copy()
args['page'] = page
+ for get, val in request.args.items():
+ args[get] = val
return url_for(request.endpoint, **args)
@@ -77,18 +78,18 @@ def mimetype_filter(val):
@jinjia.app_template_filter('formatdate')
def formatdate_filter(val):
try:
- conformed_timestamp = re.sub(r"[:]|([-](?!((\d{2}[:]\d{2})|(\d{4}))$))", '', val)
- formatdate = datetime.datetime.strptime(conformed_timestamp[:15], "%Y%m%d %H%M%S")
- return format_date(formatdate, format='medium', locale=get_locale())
+ return format_date(val, format='medium', locale=get_locale())
except AttributeError as e:
- log.error('Babel error: %s, Current user locale: %s, Current User: %s', e, current_user.locale, current_user.nickname)
- return formatdate
+ log.error('Babel error: %s, Current user locale: %s, Current User: %s', e,
+ current_user.locale,
+ current_user.nickname
+ )
+ return val
+
@jinjia.app_template_filter('formatdateinput')
def format_date_input(val):
- conformed_timestamp = re.sub(r"[:]|([-](?!((\d{2}[:]\d{2})|(\d{4}))$))", '', val)
- date_obj = datetime.datetime.strptime(conformed_timestamp[:15], "%Y%m%d %H%M%S")
- input_date = date_obj.isoformat().split('T', 1)[0] # Hack to support dates <1900
+ input_date = val.isoformat().split('T', 1)[0] # Hack to support dates <1900
return '' if input_date == "0101-01-01" else input_date
@@ -110,8 +111,25 @@ def yesno(value, yes, no):
return yes if value else no
-'''@jinjia.app_template_filter('canread')
-def canread(ext):
- if isinstance(ext, db.Data):
- ext = ext.format
- return ext.lower() in EXTENSIONS_READER'''
+@jinjia.app_template_filter('formatfloat')
+def formatfloat(value, decimals=1):
+ formatedstring = '%d' % value
+ if (value % 1) != 0:
+ formatedstring = ('%s.%d' % (formatedstring, (value % 1) * 10**decimals)).rstrip('0')
+ return formatedstring
+
+
+@jinjia.app_template_filter('formatseriesindex')
+def formatseriesindex_filter(series_index):
+ if series_index:
+ if int(series_index) - series_index == 0:
+ return int(series_index)
+ else:
+ return series_index
+ return 0
+
+@jinjia.app_template_filter('uuidfilter')
+def uuidfilter(var):
+ return uuid4()
+
+
diff --git a/cps/kobo.py b/cps/kobo.py
new file mode 100644
index 000000000..a9c0f936b
--- /dev/null
+++ b/cps/kobo.py
@@ -0,0 +1,1118 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
+# Copyright (C) 2018-2019 shavitmichael, OzzieIsaacs
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+import base64
+import datetime
+import sys
+import os
+import uuid
+from time import gmtime, strftime
+
+try:
+ from urllib import unquote
+except ImportError:
+ from urllib.parse import unquote
+
+from flask import (
+ Blueprint,
+ request,
+ make_response,
+ jsonify,
+ current_app,
+ url_for,
+ redirect,
+ abort
+)
+from flask_login import current_user
+from werkzeug.datastructures import Headers
+from sqlalchemy import func
+from sqlalchemy.sql.expression import and_, or_
+from sqlalchemy.exc import StatementError
+import requests
+
+from . import config, logger, kobo_auth, db, calibre_db, helper, shelf as shelf_lib, ub
+from .helper import get_download_link
+from .services import SyncToken as SyncToken
+from .web import download_required
+from .kobo_auth import requires_kobo_auth, get_auth_token
+
+KOBO_FORMATS = {"KEPUB": ["KEPUB"], "EPUB": ["EPUB3", "EPUB"]}
+KOBO_STOREAPI_URL = "https://storeapi.kobo.com"
+KOBO_IMAGEHOST_URL = "https://kbimages1-a.akamaihd.net"
+
+kobo = Blueprint("kobo", __name__, url_prefix="/kobo/")
+kobo_auth.disable_failed_auth_redirect_for_blueprint(kobo)
+kobo_auth.register_url_value_preprocessor(kobo)
+
+log = logger.create()
+
+
+def get_store_url_for_current_request():
+ # Programmatically modify the current url to point to the official Kobo store
+ __, __, request_path_with_auth_token = request.full_path.rpartition("/kobo/")
+ __, __, request_path = request_path_with_auth_token.rstrip("?").partition(
+ "/"
+ )
+ return KOBO_STOREAPI_URL + "/" + request_path
+
+
+CONNECTION_SPECIFIC_HEADERS = [
+ "connection",
+ "content-encoding",
+ "content-length",
+ "transfer-encoding",
+]
+
+def get_kobo_activated():
+ return config.config_kobo_sync
+
+
+def make_request_to_kobo_store(sync_token=None):
+ outgoing_headers = Headers(request.headers)
+ outgoing_headers.remove("Host")
+ if sync_token:
+ sync_token.set_kobo_store_header(outgoing_headers)
+
+ store_response = requests.request(
+ method=request.method,
+ url=get_store_url_for_current_request(),
+ headers=outgoing_headers,
+ data=request.get_data(),
+ allow_redirects=False,
+ timeout=(2, 10)
+ )
+ return store_response
+
+
+def redirect_or_proxy_request():
+ if config.config_kobo_proxy:
+ if request.method == "GET":
+ return redirect(get_store_url_for_current_request(), 307)
+ else:
+ # The Kobo device turns other request types into GET requests on redirects, so we instead proxy to the Kobo store ourselves.
+ store_response = make_request_to_kobo_store()
+
+ response_headers = store_response.headers
+ for header_key in CONNECTION_SPECIFIC_HEADERS:
+ response_headers.pop(header_key, default=None)
+
+ return make_response(
+ store_response.content, store_response.status_code, response_headers.items()
+ )
+ else:
+ return make_response(jsonify({}))
+
+
+def convert_to_kobo_timestamp_string(timestamp):
+ try:
+ return timestamp.strftime("%Y-%m-%dT%H:%M:%SZ")
+ except AttributeError as exc:
+ log.debug("Timestamp not valid: {}".format(exc))
+ return datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ")
+
+
+@kobo.route("/v1/library/sync")
+@requires_kobo_auth
+@download_required
+def HandleSyncRequest():
+ sync_token = SyncToken.SyncToken.from_headers(request.headers)
+ log.info("Kobo library sync request received.")
+ if not current_app.wsgi_app.is_proxied:
+ log.debug('Kobo: Received unproxied request, changed request port to external server port')
+
+ # TODO: Limit the number of books return per sync call, and rely on the sync-continuatation header
+ # instead so that the device triggers another sync.
+
+ new_books_last_modified = sync_token.books_last_modified
+ new_books_last_created = sync_token.books_last_created
+ new_reading_state_last_modified = sync_token.reading_state_last_modified
+ sync_results = []
+
+ # We reload the book database so that the user get's a fresh view of the library
+ # in case of external changes (e.g: adding a book through Calibre).
+ calibre_db.reconnect_db(config, ub.app_DB_path)
+
+ archived_books = (
+ ub.session.query(ub.ArchivedBook)
+ .filter(ub.ArchivedBook.user_id == int(current_user.id))
+ .all()
+ )
+
+ # We join-in books that have had their Archived bit recently modified in order to either:
+ # * Restore them to the user's device.
+ # * Delete them from the user's device.
+ # (Ideally we would use a join for this logic, however cross-database joins don't look trivial in SqlAlchemy.)
+ recently_restored_or_archived_books = []
+ archived_book_ids = {}
+ new_archived_last_modified = datetime.datetime.min
+ for archived_book in archived_books:
+ if archived_book.last_modified > sync_token.archive_last_modified:
+ recently_restored_or_archived_books.append(archived_book.book_id)
+ if archived_book.is_archived:
+ archived_book_ids[archived_book.book_id] = True
+ new_archived_last_modified = max(
+ new_archived_last_modified, archived_book.last_modified)
+
+ # sqlite gives unexpected results when performing the last_modified comparison without the datetime cast.
+ # It looks like it's treating the db.Books.last_modified field as a string and may fail
+ # the comparison because of the +00:00 suffix.
+ changed_entries = (
+ calibre_db.session.query(db.Books)
+ .join(db.Data)
+ .filter(or_(func.datetime(db.Books.last_modified) > sync_token.books_last_modified,
+ db.Books.id.in_(recently_restored_or_archived_books)))
+ .filter(db.Data.format.in_(KOBO_FORMATS))
+ .all()
+ )
+
+ reading_states_in_new_entitlements = []
+ for book in changed_entries:
+ kobo_reading_state = get_or_create_reading_state(book.id)
+ entitlement = {
+ "BookEntitlement": create_book_entitlement(book, archived=(book.id in archived_book_ids)),
+ "BookMetadata": get_metadata(book),
+ }
+
+ if kobo_reading_state.last_modified > sync_token.reading_state_last_modified:
+ entitlement["ReadingState"] = get_kobo_reading_state_response(book, kobo_reading_state)
+ new_reading_state_last_modified = max(new_reading_state_last_modified, kobo_reading_state.last_modified)
+ reading_states_in_new_entitlements.append(book.id)
+
+ if book.timestamp > sync_token.books_last_created:
+ sync_results.append({"NewEntitlement": entitlement})
+ else:
+ sync_results.append({"ChangedEntitlement": entitlement})
+
+ new_books_last_modified = max(
+ book.last_modified, new_books_last_modified
+ )
+ new_books_last_created = max(book.timestamp, new_books_last_created)
+
+ changed_reading_states = (
+ ub.session.query(ub.KoboReadingState)
+ .filter(and_(func.datetime(ub.KoboReadingState.last_modified) > sync_token.reading_state_last_modified,
+ ub.KoboReadingState.user_id == current_user.id,
+ ub.KoboReadingState.book_id.notin_(reading_states_in_new_entitlements))))
+ for kobo_reading_state in changed_reading_states.all():
+ book = calibre_db.session.query(db.Books).filter(db.Books.id == kobo_reading_state.book_id).one_or_none()
+ if book:
+ sync_results.append({
+ "ChangedReadingState": {
+ "ReadingState": get_kobo_reading_state_response(book, kobo_reading_state)
+ }
+ })
+ new_reading_state_last_modified = max(new_reading_state_last_modified, kobo_reading_state.last_modified)
+
+ sync_shelves(sync_token, sync_results)
+
+ sync_token.books_last_created = new_books_last_created
+ sync_token.books_last_modified = new_books_last_modified
+ sync_token.archive_last_modified = new_archived_last_modified
+ sync_token.reading_state_last_modified = new_reading_state_last_modified
+
+ return generate_sync_response(sync_token, sync_results)
+
+
+def generate_sync_response(sync_token, sync_results):
+ extra_headers = {}
+ if config.config_kobo_proxy:
+ # Merge in sync results from the official Kobo store.
+ try:
+ store_response = make_request_to_kobo_store(sync_token)
+
+ store_sync_results = store_response.json()
+ sync_results += store_sync_results
+ sync_token.merge_from_store_response(store_response)
+ extra_headers["x-kobo-sync"] = store_response.headers.get("x-kobo-sync")
+ extra_headers["x-kobo-sync-mode"] = store_response.headers.get("x-kobo-sync-mode")
+ extra_headers["x-kobo-recent-reads"] = store_response.headers.get("x-kobo-recent-reads")
+
+ except Exception as e:
+ log.error("Failed to receive or parse response from Kobo's sync endpoint: " + str(e))
+ sync_token.to_headers(extra_headers)
+
+ response = make_response(jsonify(sync_results), extra_headers)
+
+ return response
+
+
+@kobo.route("/v1/library//metadata")
+@requires_kobo_auth
+@download_required
+def HandleMetadataRequest(book_uuid):
+ if not current_app.wsgi_app.is_proxied:
+ log.debug('Kobo: Received unproxied request, changed request port to external server port')
+ log.info("Kobo library metadata request received for book %s" % book_uuid)
+ book = calibre_db.get_book_by_uuid(book_uuid)
+ if not book or not book.data:
+ log.info(u"Book %s not found in database", book_uuid)
+ return redirect_or_proxy_request()
+
+ metadata = get_metadata(book)
+ return jsonify([metadata])
+
+
+def get_download_url_for_book(book, book_format):
+ if not current_app.wsgi_app.is_proxied:
+ if ':' in request.host and not request.host.endswith(']'):
+ host = "".join(request.host.split(':')[:-1])
+ else:
+ host = request.host
+
+ return "{url_scheme}://{url_base}:{url_port}/kobo/{auth_token}/download/{book_id}/{book_format}".format(
+ url_scheme=request.scheme,
+ url_base=host,
+ url_port=config.config_external_port,
+ auth_token=get_auth_token(),
+ book_id=book.id,
+ book_format=book_format.lower()
+ )
+ return url_for(
+ "web.download_link",
+ book_id=book.id,
+ book_format=book_format.lower(),
+ _external=True,
+ )
+
+
+def create_book_entitlement(book, archived):
+ book_uuid = book.uuid
+ return {
+ "Accessibility": "Full",
+ "ActivePeriod": {"From": convert_to_kobo_timestamp_string(datetime.datetime.now())},
+ "Created": convert_to_kobo_timestamp_string(book.timestamp),
+ "CrossRevisionId": book_uuid,
+ "Id": book_uuid,
+ "IsRemoved": archived,
+ "IsHiddenFromArchive": False,
+ "IsLocked": False,
+ "LastModified": convert_to_kobo_timestamp_string(book.last_modified),
+ "OriginCategory": "Imported",
+ "RevisionId": book_uuid,
+ "Status": "Active",
+ }
+
+
+def current_time():
+ return strftime("%Y-%m-%dT%H:%M:%SZ", gmtime())
+
+
+def get_description(book):
+ if not book.comments:
+ return None
+ return book.comments[0].text
+
+
+# TODO handle multiple authors
+def get_author(book):
+ if not book.authors:
+ return {"Contributors": None}
+ if len(book.authors) > 1:
+ author_list = []
+ autor_roles = []
+ for author in book.authors:
+ autor_roles.append({"Name":author.name, "Role":"Author"})
+ author_list.append(author.name)
+ return {"ContributorRoles": autor_roles, "Contributors":author_list}
+ return {"ContributorRoles": [{"Name":book.authors[0].name, "Role":"Author"}], "Contributors": book.authors[0].name}
+
+
+def get_publisher(book):
+ if not book.publishers:
+ return None
+ return book.publishers[0].name
+
+
+def get_series(book):
+ if not book.series:
+ return None
+ return book.series[0].name
+
+def get_seriesindex(book):
+ return book.series_index or 1
+
+
+def get_metadata(book):
+ download_urls = []
+ kepub = [data for data in book.data if data.format == 'KEPUB']
+
+ for book_data in kepub if len(kepub) > 0 else book.data:
+ if book_data.format not in KOBO_FORMATS:
+ continue
+ for kobo_format in KOBO_FORMATS[book_data.format]:
+ # log.debug('Id: %s, Format: %s' % (book.id, kobo_format))
+ download_urls.append(
+ {
+ "Format": kobo_format,
+ "Size": book_data.uncompressed_size,
+ "Url": get_download_url_for_book(book, book_data.format),
+ # The Kobo forma accepts platforms: (Generic, Android)
+ "Platform": "Generic",
+ # "DrmType": "None", # Not required
+ }
+ )
+
+ book_uuid = book.uuid
+ metadata = {
+ "Categories": ["00000000-0000-0000-0000-000000000001",],
+ # "Contributors": get_author(book),
+ "CoverImageId": book_uuid,
+ "CrossRevisionId": book_uuid,
+ "CurrentDisplayPrice": {"CurrencyCode": "USD", "TotalAmount": 0},
+ "CurrentLoveDisplayPrice": {"TotalAmount": 0},
+ "Description": get_description(book),
+ "DownloadUrls": download_urls,
+ "EntitlementId": book_uuid,
+ "ExternalIds": [],
+ "Genre": "00000000-0000-0000-0000-000000000001",
+ "IsEligibleForKoboLove": False,
+ "IsInternetArchive": False,
+ "IsPreOrder": False,
+ "IsSocialEnabled": True,
+ "Language": "en",
+ "PhoneticPronunciations": {},
+ # TODO: Fix book.pubdate to return a datetime object so that we can easily
+ # convert it to the format Kobo devices expect.
+ "PublicationDate": book.pubdate,
+ "Publisher": {"Imprint": "", "Name": get_publisher(book),},
+ "RevisionId": book_uuid,
+ "Title": book.title,
+ "WorkId": book_uuid,
+ }
+ metadata.update(get_author(book))
+
+ if get_series(book):
+ if sys.version_info < (3, 0):
+ name = get_series(book).encode("utf-8")
+ else:
+ name = get_series(book)
+ metadata["Series"] = {
+ "Name": get_series(book),
+ "Number": get_seriesindex(book), # ToDo Check int() ?
+ "NumberFloat": float(get_seriesindex(book)),
+ # Get a deterministic id based on the series name.
+ "Id": uuid.uuid3(uuid.NAMESPACE_DNS, name),
+ }
+
+ return metadata
+
+
+@kobo.route("/v1/library/tags", methods=["POST", "DELETE"])
+@requires_kobo_auth
+# Creates a Shelf with the given items, and returns the shelf's uuid.
+def HandleTagCreate():
+ # catch delete requests, otherwise the are handeld in the book delete handler
+ if request.method == "DELETE":
+ abort(405)
+ name, items = None, None
+ try:
+ shelf_request = request.json
+ name = shelf_request["Name"]
+ items = shelf_request["Items"]
+ if not name:
+ raise TypeError
+ except (KeyError, TypeError):
+ log.debug("Received malformed v1/library/tags request.")
+ abort(400, description="Malformed tags POST request. Data has empty 'Name', missing 'Name' or 'Items' field")
+
+ shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.name == name, ub.Shelf.user_id ==
+ current_user.id).one_or_none()
+ if shelf and not shelf_lib.check_shelf_edit_permissions(shelf):
+ abort(401, description="User is unauthaurized to create shelf.")
+
+ if not shelf:
+ shelf = ub.Shelf(user_id=current_user.id, name=name, uuid=str(uuid.uuid4()))
+ ub.session.add(shelf)
+
+ items_unknown_to_calibre = add_items_to_shelf(items, shelf)
+ if items_unknown_to_calibre:
+ log.debug("Received request to add unknown books to a collection. Silently ignoring items.")
+ ub.session.commit()
+
+ return make_response(jsonify(str(shelf.uuid)), 201)
+
+
+@kobo.route("/v1/library/tags/", methods=["DELETE", "PUT"])
+@requires_kobo_auth
+def HandleTagUpdate(tag_id):
+ shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.uuid == tag_id,
+ ub.Shelf.user_id == current_user.id).one_or_none()
+ if not shelf:
+ log.debug("Received Kobo tag update request on a collection unknown to CalibreWeb")
+ if config.config_kobo_proxy:
+ return redirect_or_proxy_request()
+ else:
+ abort(404, description="Collection isn't known to CalibreWeb")
+
+ if not shelf_lib.check_shelf_edit_permissions(shelf):
+ abort(401, description="User is unauthaurized to edit shelf.")
+
+ if request.method == "DELETE":
+ shelf_lib.delete_shelf_helper(shelf)
+ else:
+ name = None
+ try:
+ shelf_request = request.json
+ name = shelf_request["Name"]
+ except (KeyError, TypeError):
+ log.debug("Received malformed v1/library/tags rename request.")
+ abort(400, description="Malformed tags POST request. Data is missing 'Name' field")
+
+ shelf.name = name
+ ub.session.merge(shelf)
+ ub.session.commit()
+ return make_response(' ', 200)
+
+
+# Adds items to the given shelf.
+def add_items_to_shelf(items, shelf):
+ book_ids_already_in_shelf = set([book_shelf.book_id for book_shelf in shelf.books])
+ items_unknown_to_calibre = []
+ for item in items:
+ try:
+ if item["Type"] != "ProductRevisionTagItem":
+ items_unknown_to_calibre.append(item)
+ continue
+
+ book = calibre_db.get_book_by_uuid(item["RevisionId"])
+ if not book:
+ items_unknown_to_calibre.append(item)
+ continue
+
+ book_id = book.id
+ if book_id not in book_ids_already_in_shelf:
+ shelf.books.append(ub.BookShelf(book_id=book_id))
+ except KeyError:
+ items_unknown_to_calibre.append(item)
+ return items_unknown_to_calibre
+
+
+@kobo.route("/v1/library/tags//items", methods=["POST"])
+@requires_kobo_auth
+def HandleTagAddItem(tag_id):
+ items = None
+ try:
+ tag_request = request.json
+ items = tag_request["Items"]
+ except (KeyError, TypeError):
+ log.debug("Received malformed v1/library/tags//items/delete request.")
+ abort(400, description="Malformed tags POST request. Data is missing 'Items' field")
+
+ shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.uuid == tag_id,
+ ub.Shelf.user_id == current_user.id).one_or_none()
+ if not shelf:
+ log.debug("Received Kobo request on a collection unknown to CalibreWeb")
+ abort(404, description="Collection isn't known to CalibreWeb")
+
+ if not shelf_lib.check_shelf_edit_permissions(shelf):
+ abort(401, description="User is unauthaurized to edit shelf.")
+
+ items_unknown_to_calibre = add_items_to_shelf(items, shelf)
+ if items_unknown_to_calibre:
+ log.debug("Received request to add an unknown book to a collection. Silently ignoring item.")
+
+ ub.session.merge(shelf)
+ ub.session.commit()
+
+ return make_response('', 201)
+
+
+@kobo.route("/v1/library/tags//items/delete", methods=["POST"])
+@requires_kobo_auth
+def HandleTagRemoveItem(tag_id):
+ items = None
+ try:
+ tag_request = request.json
+ items = tag_request["Items"]
+ except (KeyError, TypeError):
+ log.debug("Received malformed v1/library/tags//items/delete request.")
+ abort(400, description="Malformed tags POST request. Data is missing 'Items' field")
+
+ shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.uuid == tag_id,
+ ub.Shelf.user_id == current_user.id).one_or_none()
+ if not shelf:
+ log.debug(
+ "Received a request to remove an item from a Collection unknown to CalibreWeb.")
+ abort(404, description="Collection isn't known to CalibreWeb")
+
+ if not shelf_lib.check_shelf_edit_permissions(shelf):
+ abort(401, description="User is unauthaurized to edit shelf.")
+
+ items_unknown_to_calibre = []
+ for item in items:
+ try:
+ if item["Type"] != "ProductRevisionTagItem":
+ items_unknown_to_calibre.append(item)
+ continue
+
+ book = calibre_db.get_book_by_uuid(item["RevisionId"])
+ if not book:
+ items_unknown_to_calibre.append(item)
+ continue
+
+ shelf.books.filter(ub.BookShelf.book_id == book.id).delete()
+ except KeyError:
+ items_unknown_to_calibre.append(item)
+ ub.session.commit()
+
+ if items_unknown_to_calibre:
+ log.debug("Received request to remove an unknown book to a collecition. Silently ignoring item.")
+
+ return make_response('', 200)
+
+
+# Add new, changed, or deleted shelves to the sync_results.
+# Note: Public shelves that aren't owned by the user aren't supported.
+def sync_shelves(sync_token, sync_results):
+ new_tags_last_modified = sync_token.tags_last_modified
+
+ for shelf in ub.session.query(ub.ShelfArchive).filter(func.datetime(ub.ShelfArchive.last_modified) > sync_token.tags_last_modified,
+ ub.ShelfArchive.user_id == current_user.id):
+ new_tags_last_modified = max(shelf.last_modified, new_tags_last_modified)
+
+ sync_results.append({
+ "DeletedTag": {
+ "Tag": {
+ "Id": shelf.uuid,
+ "LastModified": convert_to_kobo_timestamp_string(shelf.last_modified)
+ }
+ }
+ })
+
+ for shelf in ub.session.query(ub.Shelf).filter(func.datetime(ub.Shelf.last_modified) > sync_token.tags_last_modified,
+ ub.Shelf.user_id == current_user.id):
+ if not shelf_lib.check_shelf_view_permissions(shelf):
+ continue
+
+ new_tags_last_modified = max(shelf.last_modified, new_tags_last_modified)
+
+ tag = create_kobo_tag(shelf)
+ if not tag:
+ continue
+
+ if shelf.created > sync_token.tags_last_modified:
+ sync_results.append({
+ "NewTag": tag
+ })
+ else:
+ sync_results.append({
+ "ChangedTag": tag
+ })
+ sync_token.tags_last_modified = new_tags_last_modified
+ ub.session.commit()
+
+
+# Creates a Kobo "Tag" object from a ub.Shelf object
+def create_kobo_tag(shelf):
+ tag = {
+ "Created": convert_to_kobo_timestamp_string(shelf.created),
+ "Id": shelf.uuid,
+ "Items": [],
+ "LastModified": convert_to_kobo_timestamp_string(shelf.last_modified),
+ "Name": shelf.name,
+ "Type": "UserTag"
+ }
+ for book_shelf in shelf.books:
+ book = calibre_db.get_book(book_shelf.book_id)
+ if not book:
+ log.info(u"Book (id: %s) in BookShelf (id: %s) not found in book database", book_shelf.book_id, shelf.id)
+ continue
+ tag["Items"].append(
+ {
+ "RevisionId": book.uuid,
+ "Type": "ProductRevisionTagItem"
+ }
+ )
+ return {"Tag": tag}
+
+
+@kobo.route("/v1/library//state", methods=["GET", "PUT"])
+@requires_kobo_auth
+def HandleStateRequest(book_uuid):
+ book = calibre_db.get_book_by_uuid(book_uuid)
+ if not book or not book.data:
+ log.info(u"Book %s not found in database", book_uuid)
+ return redirect_or_proxy_request()
+
+ kobo_reading_state = get_or_create_reading_state(book.id)
+
+ if request.method == "GET":
+ return jsonify([get_kobo_reading_state_response(book, kobo_reading_state)])
+ else:
+ update_results_response = {"EntitlementId": book_uuid}
+
+ try:
+ request_data = request.json
+ request_reading_state = request_data["ReadingStates"][0]
+
+ request_bookmark = request_reading_state["CurrentBookmark"]
+ if request_bookmark:
+ current_bookmark = kobo_reading_state.current_bookmark
+ current_bookmark.progress_percent = request_bookmark["ProgressPercent"]
+ current_bookmark.content_source_progress_percent = request_bookmark["ContentSourceProgressPercent"]
+ location = request_bookmark["Location"]
+ if location:
+ current_bookmark.location_value = location["Value"]
+ current_bookmark.location_type = location["Type"]
+ current_bookmark.location_source = location["Source"]
+ update_results_response["CurrentBookmarkResult"] = {"Result": "Success"}
+
+ request_statistics = request_reading_state["Statistics"]
+ if request_statistics:
+ statistics = kobo_reading_state.statistics
+ statistics.spent_reading_minutes = int(request_statistics["SpentReadingMinutes"])
+ statistics.remaining_time_minutes = int(request_statistics["RemainingTimeMinutes"])
+ update_results_response["StatisticsResult"] = {"Result": "Success"}
+
+ request_status_info = request_reading_state["StatusInfo"]
+ if request_status_info:
+ book_read = kobo_reading_state.book_read_link
+ new_book_read_status = get_ub_read_status(request_status_info["Status"])
+ if new_book_read_status == ub.ReadBook.STATUS_IN_PROGRESS \
+ and new_book_read_status != book_read.read_status:
+ book_read.times_started_reading += 1
+ book_read.last_time_started_reading = datetime.datetime.utcnow()
+ book_read.read_status = new_book_read_status
+ update_results_response["StatusInfoResult"] = {"Result": "Success"}
+ except (KeyError, TypeError, ValueError, StatementError):
+ log.debug("Received malformed v1/library//state request.")
+ ub.session.rollback()
+ abort(400, description="Malformed request data is missing 'ReadingStates' key")
+
+ ub.session.merge(kobo_reading_state)
+ ub.session.commit()
+ return jsonify({
+ "RequestResult": "Success",
+ "UpdateResults": [update_results_response],
+ })
+
+
+def get_read_status_for_kobo(ub_book_read):
+ enum_to_string_map = {
+ None: "ReadyToRead",
+ ub.ReadBook.STATUS_UNREAD: "ReadyToRead",
+ ub.ReadBook.STATUS_FINISHED: "Finished",
+ ub.ReadBook.STATUS_IN_PROGRESS: "Reading",
+ }
+ return enum_to_string_map[ub_book_read.read_status]
+
+
+def get_ub_read_status(kobo_read_status):
+ string_to_enum_map = {
+ None: None,
+ "ReadyToRead": ub.ReadBook.STATUS_UNREAD,
+ "Finished": ub.ReadBook.STATUS_FINISHED,
+ "Reading": ub.ReadBook.STATUS_IN_PROGRESS,
+ }
+ return string_to_enum_map[kobo_read_status]
+
+
+def get_or_create_reading_state(book_id):
+ book_read = ub.session.query(ub.ReadBook).filter(ub.ReadBook.book_id == book_id,
+ ub.ReadBook.user_id == current_user.id).one_or_none()
+ if not book_read:
+ book_read = ub.ReadBook(user_id=current_user.id, book_id=book_id)
+ if not book_read.kobo_reading_state:
+ kobo_reading_state = ub.KoboReadingState(user_id=book_read.user_id, book_id=book_id)
+ kobo_reading_state.current_bookmark = ub.KoboBookmark()
+ kobo_reading_state.statistics = ub.KoboStatistics()
+ book_read.kobo_reading_state = kobo_reading_state
+ ub.session.add(book_read)
+ ub.session.commit()
+ return book_read.kobo_reading_state
+
+
+def get_kobo_reading_state_response(book, kobo_reading_state):
+ return {
+ "EntitlementId": book.uuid,
+ "Created": convert_to_kobo_timestamp_string(book.timestamp),
+ "LastModified": convert_to_kobo_timestamp_string(kobo_reading_state.last_modified),
+ # AFAICT PriorityTimestamp is always equal to LastModified.
+ "PriorityTimestamp": convert_to_kobo_timestamp_string(kobo_reading_state.priority_timestamp),
+ "StatusInfo": get_status_info_response(kobo_reading_state.book_read_link),
+ "Statistics": get_statistics_response(kobo_reading_state.statistics),
+ "CurrentBookmark": get_current_bookmark_response(kobo_reading_state.current_bookmark),
+ }
+
+
+def get_status_info_response(book_read):
+ resp = {
+ "LastModified": convert_to_kobo_timestamp_string(book_read.last_modified),
+ "Status": get_read_status_for_kobo(book_read),
+ "TimesStartedReading": book_read.times_started_reading,
+ }
+ if book_read.last_time_started_reading:
+ resp["LastTimeStartedReading"] = convert_to_kobo_timestamp_string(book_read.last_time_started_reading)
+ return resp
+
+
+def get_statistics_response(statistics):
+ resp = {
+ "LastModified": convert_to_kobo_timestamp_string(statistics.last_modified),
+ }
+ if statistics.spent_reading_minutes:
+ resp["SpentReadingMinutes"] = statistics.spent_reading_minutes
+ if statistics.remaining_time_minutes:
+ resp["RemainingTimeMinutes"] = statistics.remaining_time_minutes
+ return resp
+
+
+def get_current_bookmark_response(current_bookmark):
+ resp = {
+ "LastModified": convert_to_kobo_timestamp_string(current_bookmark.last_modified),
+ }
+ if current_bookmark.progress_percent:
+ resp["ProgressPercent"] = current_bookmark.progress_percent
+ if current_bookmark.content_source_progress_percent:
+ resp["ContentSourceProgressPercent"] = current_bookmark.content_source_progress_percent
+ if current_bookmark.location_value:
+ resp["Location"] = {
+ "Value": current_bookmark.location_value,
+ "Type": current_bookmark.location_type,
+ "Source": current_bookmark.location_source,
+ }
+ return resp
+
+@kobo.route("/////image.jpg", defaults={'Quality': ""})
+@kobo.route("//////image.jpg")
+@requires_kobo_auth
+def HandleCoverImageRequest(book_uuid, width, height,Quality, isGreyscale):
+ book_cover = helper.get_book_cover_with_uuid(
+ book_uuid, use_generic_cover_on_failure=False
+ )
+ if not book_cover:
+ if config.config_kobo_proxy:
+ log.debug("Cover for unknown book: %s proxied to kobo" % book_uuid)
+ return redirect(KOBO_IMAGEHOST_URL +
+ "/{book_uuid}/{width}/{height}/false/image.jpg".format(book_uuid=book_uuid,
+ width=width,
+ height=height), 307)
+ else:
+ log.debug("Cover for unknown book: %s requested" % book_uuid)
+ # additional proxy request make no sense, -> direct return
+ return make_response(jsonify({}))
+ log.debug("Cover request received for book %s" % book_uuid)
+ return book_cover
+
+
+@kobo.route("")
+def TopLevelEndpoint():
+ return make_response(jsonify({}))
+
+
+@kobo.route("/v1/library/", methods=["DELETE"])
+@requires_kobo_auth
+def HandleBookDeletionRequest(book_uuid):
+ log.info("Kobo book deletion request received for book %s" % book_uuid)
+ book = calibre_db.get_book_by_uuid(book_uuid)
+ if not book:
+ log.info(u"Book %s not found in database", book_uuid)
+ return redirect_or_proxy_request()
+
+ book_id = book.id
+ archived_book = (
+ ub.session.query(ub.ArchivedBook)
+ .filter(ub.ArchivedBook.book_id == book_id)
+ .first()
+ )
+ if not archived_book:
+ archived_book = ub.ArchivedBook(user_id=current_user.id, book_id=book_id)
+ archived_book.is_archived = True
+ archived_book.last_modified = datetime.datetime.utcnow()
+
+ ub.session.merge(archived_book)
+ ub.session.commit()
+
+ return ("", 204)
+
+
+# TODO: Implement the following routes
+@kobo.route("/v1/library/", methods=["DELETE", "GET"])
+def HandleUnimplementedRequest(dummy=None):
+ log.debug("Unimplemented Library Request received: %s", request.base_url)
+ return redirect_or_proxy_request()
+
+
+# TODO: Implement the following routes
+@kobo.route("/v1/user/loyalty/", methods=["GET", "POST"])
+@kobo.route("/v1/user/profile", methods=["GET", "POST"])
+@kobo.route("/v1/user/wishlist", methods=["GET", "POST"])
+@kobo.route("/v1/user/recommendations", methods=["GET", "POST"])
+@kobo.route("/v1/analytics/", methods=["GET", "POST"])
+def HandleUserRequest(dummy=None):
+ log.debug("Unimplemented User Request received: %s", request.base_url)
+ return redirect_or_proxy_request()
+
+
+@kobo.route("/v1/products//prices", methods=["GET", "POST"])
+@kobo.route("/v1/products//recommendations", methods=["GET", "POST"])
+@kobo.route("/v1/products//nextread", methods=["GET", "POST"])
+@kobo.route("/v1/products//reviews", methods=["GET", "POST"])
+@kobo.route("/v1/products/books/external/", methods=["GET", "POST"])
+@kobo.route("/v1/products/books/series/", methods=["GET", "POST"])
+@kobo.route("/v1/products/books/", methods=["GET", "POST"])
+@kobo.route("/v1/products/dailydeal", methods=["GET", "POST"])
+@kobo.route("/v1/products", methods=["GET", "POST"])
+def HandleProductsRequest(dummy=None):
+ log.debug("Unimplemented Products Request received: %s", request.base_url)
+ return redirect_or_proxy_request()
+
+
+'''@kobo.errorhandler(404)
+def handle_404(err):
+ # This handler acts as a catch-all for endpoints that we don't have an interest in
+ # implementing (e.g: v1/analytics/gettests, v1/user/recommendations, etc)
+ if err:
+ print('404')
+ return jsonify(error=str(err)), 404
+ log.debug("Unknown Request received: %s, method: %s, data: %s", request.base_url, request.method, request.data)
+ return redirect_or_proxy_request()'''
+
+
+def make_calibre_web_auth_response():
+ # As described in kobo_auth.py, CalibreWeb doesn't make use practical use of this auth/device API call for
+ # authentation (nor for authorization). We return a dummy response just to keep the device happy.
+ content = request.get_json()
+ AccessToken = base64.b64encode(os.urandom(24)).decode('utf-8')
+ RefreshToken = base64.b64encode(os.urandom(24)).decode('utf-8')
+ return make_response(
+ jsonify(
+ {
+ "AccessToken": AccessToken,
+ "RefreshToken": RefreshToken,
+ "TokenType": "Bearer",
+ "TrackingId": str(uuid.uuid4()),
+ "UserKey": content['UserKey'],
+ }
+ )
+ )
+
+
+@kobo.route("/v1/auth/device", methods=["POST"])
+@requires_kobo_auth
+def HandleAuthRequest():
+ log.debug('Kobo Auth request')
+ if config.config_kobo_proxy:
+ try:
+ return redirect_or_proxy_request()
+ except:
+ log.error("Failed to receive or parse response from Kobo's auth endpoint. Falling back to un-proxied mode.")
+ return make_calibre_web_auth_response()
+
+
+@kobo.route("/v1/initialization")
+@requires_kobo_auth
+def HandleInitRequest():
+ log.info('Init')
+
+ kobo_resources = None
+ if config.config_kobo_proxy:
+ try:
+ store_response = make_request_to_kobo_store()
+ store_response_json = store_response.json()
+ if "Resources" in store_response_json:
+ kobo_resources = store_response_json["Resources"]
+ except:
+ log.error("Failed to receive or parse response from Kobo's init endpoint. Falling back to un-proxied mode.")
+ if not kobo_resources:
+ kobo_resources = NATIVE_KOBO_RESOURCES()
+
+ if not current_app.wsgi_app.is_proxied:
+ log.debug('Kobo: Received unproxied request, changed request port to external server port')
+ if ':' in request.host and not request.host.endswith(']'):
+ host = "".join(request.host.split(':')[:-1])
+ else:
+ host = request.host
+ calibre_web_url = "{url_scheme}://{url_base}:{url_port}".format(
+ url_scheme=request.scheme,
+ url_base=host,
+ url_port=config.config_external_port
+ )
+ log.debug('Kobo: Received unproxied request, changed request url to %s', calibre_web_url)
+ kobo_resources["image_host"] = calibre_web_url
+ kobo_resources["image_url_quality_template"] = unquote(calibre_web_url +
+ url_for("kobo.HandleCoverImageRequest",
+ auth_token=kobo_auth.get_auth_token(),
+ book_uuid="{ImageId}",
+ width="{width}",
+ height="{height}",
+ Quality='{Quality}',
+ isGreyscale='isGreyscale'))
+ kobo_resources["image_url_template"] = unquote(calibre_web_url +
+ url_for("kobo.HandleCoverImageRequest",
+ auth_token=kobo_auth.get_auth_token(),
+ book_uuid="{ImageId}",
+ width="{width}",
+ height="{height}",
+ isGreyscale='false'))
+ else:
+ kobo_resources["image_host"] = url_for("web.index", _external=True).strip("/")
+ kobo_resources["image_url_quality_template"] = unquote(url_for("kobo.HandleCoverImageRequest",
+ auth_token=kobo_auth.get_auth_token(),
+ book_uuid="{ImageId}",
+ width="{width}",
+ height="{height}",
+ Quality='{Quality}',
+ isGreyscale='isGreyscale',
+ _external=True))
+ kobo_resources["image_url_template"] = unquote(url_for("kobo.HandleCoverImageRequest",
+ auth_token=kobo_auth.get_auth_token(),
+ book_uuid="{ImageId}",
+ width="{width}",
+ height="{height}",
+ isGreyscale='false',
+ _external=True))
+
+ response = make_response(jsonify({"Resources": kobo_resources}))
+ response.headers["x-kobo-apitoken"] = "e30="
+
+ return response
+
+
+@kobo.route("/download//")
+@requires_kobo_auth
+@download_required
+def download_book(book_id, book_format):
+
+ return get_download_link(book_id, book_format, "kobo")
+
+
+def NATIVE_KOBO_RESOURCES():
+ return {
+ "account_page": "https://secure.kobobooks.com/profile",
+ "account_page_rakuten": "https://my.rakuten.co.jp/",
+ "add_entitlement": "https://storeapi.kobo.com/v1/library/{RevisionIds}",
+ "affiliaterequest": "https://storeapi.kobo.com/v1/affiliate",
+ "audiobook_subscription_orange_deal_inclusion_url": "https://authorize.kobo.com/inclusion",
+ "authorproduct_recommendations": "https://storeapi.kobo.com/v1/products/books/authors/recommendations",
+ "autocomplete": "https://storeapi.kobo.com/v1/products/autocomplete",
+ "blackstone_header": {"key": "x-amz-request-payer", "value": "requester"},
+ "book": "https://storeapi.kobo.com/v1/products/books/{ProductId}",
+ "book_detail_page": "https://store.kobobooks.com/{culture}/ebook/{slug}",
+ "book_detail_page_rakuten": "https://books.rakuten.co.jp/rk/{crossrevisionid}",
+ "book_landing_page": "https://store.kobobooks.com/ebooks",
+ "book_subscription": "https://storeapi.kobo.com/v1/products/books/subscriptions",
+ "categories": "https://storeapi.kobo.com/v1/categories",
+ "categories_page": "https://store.kobobooks.com/ebooks/categories",
+ "category": "https://storeapi.kobo.com/v1/categories/{CategoryId}",
+ "category_featured_lists": "https://storeapi.kobo.com/v1/categories/{CategoryId}/featured",
+ "category_products": "https://storeapi.kobo.com/v1/categories/{CategoryId}/products",
+ "checkout_borrowed_book": "https://storeapi.kobo.com/v1/library/borrow",
+ "configuration_data": "https://storeapi.kobo.com/v1/configuration",
+ "content_access_book": "https://storeapi.kobo.com/v1/products/books/{ProductId}/access",
+ "customer_care_live_chat": "https://v2.zopim.com/widget/livechat.html?key=Y6gwUmnu4OATxN3Tli4Av9bYN319BTdO",
+ "daily_deal": "https://storeapi.kobo.com/v1/products/dailydeal",
+ "deals": "https://storeapi.kobo.com/v1/deals",
+ "delete_entitlement": "https://storeapi.kobo.com/v1/library/{Ids}",
+ "delete_tag": "https://storeapi.kobo.com/v1/library/tags/{TagId}",
+ "delete_tag_items": "https://storeapi.kobo.com/v1/library/tags/{TagId}/items/delete",
+ "device_auth": "https://storeapi.kobo.com/v1/auth/device",
+ "device_refresh": "https://storeapi.kobo.com/v1/auth/refresh",
+ "dictionary_host": "https://kbdownload1-a.akamaihd.net",
+ "discovery_host": "https://discovery.kobobooks.com",
+ "eula_page": "https://www.kobo.com/termsofuse?style=onestore",
+ "exchange_auth": "https://storeapi.kobo.com/v1/auth/exchange",
+ "external_book": "https://storeapi.kobo.com/v1/products/books/external/{Ids}",
+ "facebook_sso_page": "https://authorize.kobo.com/signin/provider/Facebook/login?returnUrl=http://store.kobobooks.com/",
+ "featured_list": "https://storeapi.kobo.com/v1/products/featured/{FeaturedListId}",
+ "featured_lists": "https://storeapi.kobo.com/v1/products/featured",
+ "free_books_page": {
+ "EN": "https://www.kobo.com/{region}/{language}/p/free-ebooks",
+ "FR": "https://www.kobo.com/{region}/{language}/p/livres-gratuits",
+ "IT": "https://www.kobo.com/{region}/{language}/p/libri-gratuiti",
+ "NL": "https://www.kobo.com/{region}/{language}/List/bekijk-het-overzicht-van-gratis-ebooks/QpkkVWnUw8sxmgjSlCbJRg",
+ "PT": "https://www.kobo.com/{region}/{language}/p/livros-gratis",
+ },
+ "fte_feedback": "https://storeapi.kobo.com/v1/products/ftefeedback",
+ "get_tests_request": "https://storeapi.kobo.com/v1/analytics/gettests",
+ "giftcard_epd_redeem_url": "https://www.kobo.com/{storefront}/{language}/redeem-ereader",
+ "giftcard_redeem_url": "https://www.kobo.com/{storefront}/{language}/redeem",
+ "help_page": "https://www.kobo.com/help",
+ "kobo_audiobooks_enabled": "False",
+ "kobo_audiobooks_orange_deal_enabled": "False",
+ "kobo_audiobooks_subscriptions_enabled": "False",
+ "kobo_nativeborrow_enabled": "True",
+ "kobo_onestorelibrary_enabled": "False",
+ "kobo_redeem_enabled": "True",
+ "kobo_shelfie_enabled": "False",
+ "kobo_subscriptions_enabled": "False",
+ "kobo_superpoints_enabled": "False",
+ "kobo_wishlist_enabled": "True",
+ "library_book": "https://storeapi.kobo.com/v1/user/library/books/{LibraryItemId}",
+ "library_items": "https://storeapi.kobo.com/v1/user/library",
+ "library_metadata": "https://storeapi.kobo.com/v1/library/{Ids}/metadata",
+ "library_prices": "https://storeapi.kobo.com/v1/user/library/previews/prices",
+ "library_stack": "https://storeapi.kobo.com/v1/user/library/stacks/{LibraryItemId}",
+ "library_sync": "https://storeapi.kobo.com/v1/library/sync",
+ "love_dashboard_page": "https://store.kobobooks.com/{culture}/kobosuperpoints",
+ "love_points_redemption_page": "https://store.kobobooks.com/{culture}/KoboSuperPointsRedemption?productId={ProductId}",
+ "magazine_landing_page": "https://store.kobobooks.com/emagazines",
+ "notifications_registration_issue": "https://storeapi.kobo.com/v1/notifications/registration",
+ "oauth_host": "https://oauth.kobo.com",
+ "overdrive_account": "https://auth.overdrive.com/account",
+ "overdrive_library": "https://{libraryKey}.auth.overdrive.com/library",
+ "overdrive_library_finder_host": "https://libraryfinder.api.overdrive.com",
+ "overdrive_thunder_host": "https://thunder.api.overdrive.com",
+ "password_retrieval_page": "https://www.kobobooks.com/passwordretrieval.html",
+ "post_analytics_event": "https://storeapi.kobo.com/v1/analytics/event",
+ "privacy_page": "https://www.kobo.com/privacypolicy?style=onestore",
+ "product_nextread": "https://storeapi.kobo.com/v1/products/{ProductIds}/nextread",
+ "product_prices": "https://storeapi.kobo.com/v1/products/{ProductIds}/prices",
+ "product_recommendations": "https://storeapi.kobo.com/v1/products/{ProductId}/recommendations",
+ "product_reviews": "https://storeapi.kobo.com/v1/products/{ProductIds}/reviews",
+ "products": "https://storeapi.kobo.com/v1/products",
+ "provider_external_sign_in_page": "https://authorize.kobo.com/ExternalSignIn/{providerName}?returnUrl=http://store.kobobooks.com/",
+ "purchase_buy": "https://www.kobo.com/checkout/createpurchase/",
+ "purchase_buy_templated": "https://www.kobo.com/{culture}/checkout/createpurchase/{ProductId}",
+ "quickbuy_checkout": "https://storeapi.kobo.com/v1/store/quickbuy/{PurchaseId}/checkout",
+ "quickbuy_create": "https://storeapi.kobo.com/v1/store/quickbuy/purchase",
+ "rating": "https://storeapi.kobo.com/v1/products/{ProductId}/rating/{Rating}",
+ "reading_state": "https://storeapi.kobo.com/v1/library/{Ids}/state",
+ "redeem_interstitial_page": "https://store.kobobooks.com",
+ "registration_page": "https://authorize.kobo.com/signup?returnUrl=http://store.kobobooks.com/",
+ "related_items": "https://storeapi.kobo.com/v1/products/{Id}/related",
+ "remaining_book_series": "https://storeapi.kobo.com/v1/products/books/series/{SeriesId}",
+ "rename_tag": "https://storeapi.kobo.com/v1/library/tags/{TagId}",
+ "review": "https://storeapi.kobo.com/v1/products/reviews/{ReviewId}",
+ "review_sentiment": "https://storeapi.kobo.com/v1/products/reviews/{ReviewId}/sentiment/{Sentiment}",
+ "shelfie_recommendations": "https://storeapi.kobo.com/v1/user/recommendations/shelfie",
+ "sign_in_page": "https://authorize.kobo.com/signin?returnUrl=http://store.kobobooks.com/",
+ "social_authorization_host": "https://social.kobobooks.com:8443",
+ "social_host": "https://social.kobobooks.com",
+ "stacks_host_productId": "https://store.kobobooks.com/collections/byproductid/",
+ "store_home": "www.kobo.com/{region}/{language}",
+ "store_host": "store.kobobooks.com",
+ "store_newreleases": "https://store.kobobooks.com/{culture}/List/new-releases/961XUjtsU0qxkFItWOutGA",
+ "store_search": "https://store.kobobooks.com/{culture}/Search?Query={query}",
+ "store_top50": "https://store.kobobooks.com/{culture}/ebooks/Top",
+ "tag_items": "https://storeapi.kobo.com/v1/library/tags/{TagId}/Items",
+ "tags": "https://storeapi.kobo.com/v1/library/tags",
+ "taste_profile": "https://storeapi.kobo.com/v1/products/tasteprofile",
+ "update_accessibility_to_preview": "https://storeapi.kobo.com/v1/library/{EntitlementIds}/preview",
+ "use_one_store": "False",
+ "user_loyalty_benefits": "https://storeapi.kobo.com/v1/user/loyalty/benefits",
+ "user_platform": "https://storeapi.kobo.com/v1/user/platform",
+ "user_profile": "https://storeapi.kobo.com/v1/user/profile",
+ "user_ratings": "https://storeapi.kobo.com/v1/user/ratings",
+ "user_recommendations": "https://storeapi.kobo.com/v1/user/recommendations",
+ "user_reviews": "https://storeapi.kobo.com/v1/user/reviews",
+ "user_wishlist": "https://storeapi.kobo.com/v1/user/wishlist",
+ "userguide_host": "https://kbdownload1-a.akamaihd.net",
+ "wishlist_page": "https://store.kobobooks.com/{region}/{language}/account/wishlist",
+ }
diff --git a/cps/kobo_auth.py b/cps/kobo_auth.py
new file mode 100644
index 000000000..0f6cd174b
--- /dev/null
+++ b/cps/kobo_auth.py
@@ -0,0 +1,168 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
+# Copyright (C) 2018-2019 shavitmichael, OzzieIsaacs
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+
+"""This module is used to control authentication/authorization of Kobo sync requests.
+This module also includes research notes into the auth protocol used by Kobo devices.
+
+Log-in:
+When first booting a Kobo device the user must sign into a Kobo (or affiliate) account.
+Upon successful sign-in, the user is redirected to
+ https://auth.kobobooks.com/CrossDomainSignIn?id=
+which serves the following response:
+
+And triggers the insertion of a userKey into the device's User table.
+
+Together, the device's DeviceId and UserKey act as an *irrevocable* authentication
+token to most (if not all) Kobo APIs. In fact, in most cases only the UserKey is
+required to authorize the API call.
+
+Changing Kobo password *does not* invalidate user keys! This is apparently a known
+issue for a few years now https://www.mobileread.com/forums/showpost.php?p=3476851&postcount=13
+(although this poster hypothesised that Kobo could blacklist a DeviceId, many endpoints
+will still grant access given the userkey.)
+
+Official Kobo Store Api authorization:
+* For most of the endpoints we care about (sync, metadata, tags, etc), the userKey is
+passed in the x-kobo-userkey header, and is sufficient to authorize the API call.
+* Some endpoints (e.g: AnnotationService) instead make use of Bearer tokens pass through
+an authorization header. To get a BearerToken, the device makes a POST request to the
+v1/auth/device endpoint with the secret UserKey and the device's DeviceId.
+* The book download endpoint passes an auth token as a URL param instead of a header.
+
+Our implementation:
+We pretty much ignore all of the above. To authenticate the user, we generate a random
+and unique token that they append to the CalibreWeb Url when setting up the api_store
+setting on the device.
+Thus, every request from the device to the api_store will hit CalibreWeb with the
+auth_token in the url (e.g: https://mylibrary.com//v1/library/sync).
+In addition, once authenticated we also set the login cookie on the response that will
+be sent back for the duration of the session to authorize subsequent API calls (in
+particular calls to non-Kobo specific endpoints such as the CalibreWeb book download).
+"""
+
+from binascii import hexlify
+from datetime import datetime
+from os import urandom
+
+from flask import g, Blueprint, url_for, abort, request
+from flask_login import login_user, login_required
+from flask_babel import gettext as _
+
+from . import logger, ub, lm
+from .web import render_title_template
+
+try:
+ from functools import wraps
+except ImportError:
+ pass # We're not using Python 3
+
+
+log = logger.create()
+
+
+def register_url_value_preprocessor(kobo):
+ @kobo.url_value_preprocessor
+ def pop_auth_token(__, values):
+ g.auth_token = values.pop("auth_token")
+
+
+def disable_failed_auth_redirect_for_blueprint(bp):
+ lm.blueprint_login_views[bp.name] = None
+
+
+def get_auth_token():
+ if "auth_token" in g:
+ return g.get("auth_token")
+ else:
+ return None
+
+
+def requires_kobo_auth(f):
+ @wraps(f)
+ def inner(*args, **kwargs):
+ auth_token = get_auth_token()
+ if auth_token is not None:
+ user = (
+ ub.session.query(ub.User)
+ .join(ub.RemoteAuthToken)
+ .filter(ub.RemoteAuthToken.auth_token == auth_token).filter(ub.RemoteAuthToken.token_type==1)
+ .first()
+ )
+ if user is not None:
+ login_user(user)
+ return f(*args, **kwargs)
+ log.debug("Received Kobo request without a recognizable auth token.")
+ return abort(401)
+ return inner
+
+
+kobo_auth = Blueprint("kobo_auth", __name__, url_prefix="/kobo_auth")
+
+
+@kobo_auth.route("/generate_auth_token/")
+@login_required
+def generate_auth_token(user_id):
+ host_list = request.host.rsplit(':')
+ if len(host_list) == 1:
+ host = ':'.join(host_list)
+ else:
+ host = ':'.join(host_list[0:-1])
+ if host.startswith('127.') or host.lower() == 'localhost' or host.startswith('[::ffff:7f'):
+ warning = _('PLease access calibre-web from non localhost to get valid api_endpoint for kobo device')
+ return render_title_template(
+ "generate_kobo_auth_url.html",
+ title=_(u"Kobo Setup"),
+ warning = warning
+ )
+ else:
+ # Invalidate any prevously generated Kobo Auth token for this user.
+ auth_token = ub.session.query(ub.RemoteAuthToken).filter(
+ ub.RemoteAuthToken.user_id == user_id
+ ).filter(ub.RemoteAuthToken.token_type==1).first()
+
+ if not auth_token:
+ auth_token = ub.RemoteAuthToken()
+ auth_token.user_id = user_id
+ auth_token.expiration = datetime.max
+ auth_token.auth_token = (hexlify(urandom(16))).decode("utf-8")
+ auth_token.token_type = 1
+
+ ub.session.add(auth_token)
+ ub.session.commit()
+ return render_title_template(
+ "generate_kobo_auth_url.html",
+ title=_(u"Kobo Setup"),
+ kobo_auth_url=url_for(
+ "kobo.TopLevelEndpoint", auth_token=auth_token.auth_token, _external=True
+ ),
+ warning = False
+ )
+
+
+@kobo_auth.route("/deleteauthtoken/")
+@login_required
+def delete_auth_token(user_id):
+ # Invalidate any prevously generated Kobo Auth token for this user.
+ ub.session.query(ub.RemoteAuthToken).filter(ub.RemoteAuthToken.user_id == user_id)\
+ .filter(ub.RemoteAuthToken.token_type==1).delete()
+ ub.session.commit()
+ return ""
diff --git a/cps/logger.py b/cps/logger.py
index 77a721d35..7cc0f4d97 100644
--- a/cps/logger.py
+++ b/cps/logger.py
@@ -67,6 +67,8 @@ def get_level_name(level):
def is_valid_logfile(file_path):
+ if file_path == LOG_TO_STDERR or file_path == LOG_TO_STDOUT:
+ return True
if not file_path:
return True
if os.path.isdir(file_path):
@@ -80,7 +82,6 @@ def _absolute_log_file(log_file, default_log_file):
if not os.path.dirname(log_file):
log_file = os.path.join(_CONFIG_DIR, log_file)
return os.path.abspath(log_file)
-
return default_log_file
@@ -105,13 +106,15 @@ def setup(log_file, log_level=None):
# avoid spamming the log with debug messages from libraries
r.setLevel(log_level)
- log_file = _absolute_log_file(log_file, DEFAULT_LOG_FILE)
+ # Otherwise name get's destroyed on windows
+ if log_file != LOG_TO_STDERR and log_file != LOG_TO_STDOUT:
+ log_file = _absolute_log_file(log_file, DEFAULT_LOG_FILE)
previous_handler = r.handlers[0] if r.handlers else None
if previous_handler:
# if the log_file has not changed, don't create a new handler
if getattr(previous_handler, 'baseFilename', None) == log_file:
- return
+ return "" if log_file == DEFAULT_LOG_FILE else log_file
logging.debug("logging to %s level %s", log_file, r.level)
if log_file == LOG_TO_STDERR or log_file == LOG_TO_STDOUT:
@@ -119,21 +122,23 @@ def setup(log_file, log_level=None):
file_handler = StreamHandler(sys.stdout)
file_handler.baseFilename = log_file
else:
- file_handler = StreamHandler()
+ file_handler = StreamHandler(sys.stderr)
file_handler.baseFilename = log_file
else:
try:
- file_handler = RotatingFileHandler(log_file, maxBytes=50000, backupCount=2)
+ file_handler = RotatingFileHandler(log_file, maxBytes=50000, backupCount=2, encoding='utf-8')
except IOError:
if log_file == DEFAULT_LOG_FILE:
raise
- file_handler = RotatingFileHandler(DEFAULT_LOG_FILE, maxBytes=50000, backupCount=2)
+ file_handler = RotatingFileHandler(DEFAULT_LOG_FILE, maxBytes=50000, backupCount=2, encoding='utf-8')
+ log_file = ""
file_handler.setFormatter(FORMATTER)
for h in r.handlers:
r.removeHandler(h)
h.close()
r.addHandler(file_handler)
+ return "" if log_file == DEFAULT_LOG_FILE else log_file
def create_access_log(log_file, log_name, formatter):
@@ -146,11 +151,18 @@ def create_access_log(log_file, log_name, formatter):
access_log = logging.getLogger(log_name)
access_log.propagate = False
access_log.setLevel(logging.INFO)
+ try:
+ file_handler = RotatingFileHandler(log_file, maxBytes=50000, backupCount=2, encoding='utf-8')
+ except IOError:
+ if log_file == DEFAULT_ACCESS_LOG:
+ raise
+ file_handler = RotatingFileHandler(DEFAULT_ACCESS_LOG, maxBytes=50000, backupCount=2, encoding='utf-8')
+ log_file = ""
- file_handler = RotatingFileHandler(log_file, maxBytes=50000, backupCount=2)
file_handler.setFormatter(formatter)
access_log.addHandler(file_handler)
- return access_log
+ return access_log, \
+ "" if _absolute_log_file(log_file, DEFAULT_ACCESS_LOG) == DEFAULT_ACCESS_LOG else log_file
# Enable logging of smtp lib debug output
diff --git a/cps/oauth.py b/cps/oauth.py
index f08c66df7..67ef27034 100644
--- a/cps/oauth.py
+++ b/cps/oauth.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
@@ -24,13 +23,24 @@ from flask import session
try:
from flask_dance.consumer.backend.sqla import SQLAlchemyBackend, first, _get_real_user
from sqlalchemy.orm.exc import NoResultFound
+ backend_resultcode = False # prevent storing values with this resultcode
+except ImportError:
+ # fails on flask-dance >1.3, due to renaming
+ try:
+ from flask_dance.consumer.storage.sqla import SQLAlchemyStorage as SQLAlchemyBackend
+ from flask_dance.consumer.storage.sqla import first, _get_real_user
+ from sqlalchemy.orm.exc import NoResultFound
+ backend_resultcode = True # prevent storing values with this resultcode
+ except ImportError:
+ pass
+try:
class OAuthBackend(SQLAlchemyBackend):
"""
Stores and retrieves OAuth tokens using a relational database through
the `SQLAlchemy`_ ORM.
- .. _SQLAlchemy: http://www.sqlalchemy.org/
+ .. _SQLAlchemy: https://www.sqlalchemy.org/
"""
def __init__(self, model, session, provider_id,
user=None, user_id=None, user_required=None, anon_user=None,
@@ -40,7 +50,7 @@ try:
def get(self, blueprint, user=None, user_id=None):
if self.provider_id + '_oauth_token' in session and session[self.provider_id + '_oauth_token'] != '':
- return session[blueprint.name + '_oauth_token']
+ return session[self.provider_id + '_oauth_token']
# check cache
cache_key = self.make_cache_key(blueprint=blueprint, user=user, user_id=user_id)
token = self.cache.get(cache_key)
@@ -62,7 +72,7 @@ try:
use_provider_user_id = True
if self.user_required and not u and not uid and not use_provider_user_id:
- #raise ValueError("Cannot get OAuth token without an associated user")
+ # raise ValueError("Cannot get OAuth token without an associated user")
return None
# check for user ID
if hasattr(self.model, "user_id") and uid:
@@ -87,7 +97,7 @@ try:
def set(self, blueprint, token, user=None, user_id=None):
uid = first([user_id, self.user_id, blueprint.config.get("user_id")])
u = first(_get_real_user(ref, self.anon_user)
- for ref in (user, self.user, blueprint.config.get("user")))
+ for ref in (user, self.user, blueprint.config.get("user")))
if self.user_required and not u and not uid:
raise ValueError("Cannot set OAuth token without an associated user")
@@ -153,5 +163,5 @@ try:
blueprint=blueprint, user=user, user_id=user_id,
))
-except ImportError:
+except Exception:
pass
diff --git a/cps/oauth_bb.py b/cps/oauth_bb.py
index 092473da6..4d489cdd1 100644
--- a/cps/oauth_bb.py
+++ b/cps/oauth_bb.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
@@ -36,8 +35,7 @@ from sqlalchemy.orm.exc import NoResultFound
from . import constants, logger, config, app, ub
from .web import login_required
-from .oauth import OAuthBackend
-# from .web import github_oauth_required
+from .oauth import OAuthBackend, backend_resultcode
oauth_check = {}
@@ -50,7 +48,7 @@ def oauth_required(f):
def inner(*args, **kwargs):
if config.config_login_type == constants.LOGIN_OAUTH:
return f(*args, **kwargs)
- if request.is_xhr:
+ if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
data = {'status': 'error', 'message': 'Not Found'}
response = make_response(json.dumps(data, ensure_ascii=False))
response.headers["Content-Type"] = "application/json; charset=utf-8"
@@ -60,29 +58,29 @@ def oauth_required(f):
return inner
-def register_oauth_blueprint(id, show_name):
- oauth_check[id] = show_name
+def register_oauth_blueprint(cid, show_name):
+ oauth_check[cid] = show_name
def register_user_with_oauth(user=None):
all_oauth = {}
- for oauth in oauth_check.keys():
- if str(oauth) + '_oauth_user_id' in session and session[str(oauth) + '_oauth_user_id'] != '':
- all_oauth[oauth] = oauth_check[oauth]
+ for oauth_key in oauth_check.keys():
+ if str(oauth_key) + '_oauth_user_id' in session and session[str(oauth_key) + '_oauth_user_id'] != '':
+ all_oauth[oauth_key] = oauth_check[oauth_key]
if len(all_oauth.keys()) == 0:
return
if user is None:
flash(_(u"Register with %(provider)s", provider=", ".join(list(all_oauth.values()))), category="success")
else:
- for oauth in all_oauth.keys():
+ for oauth_key in all_oauth.keys():
# Find this OAuth token in the database, or create it
query = ub.session.query(ub.OAuth).filter_by(
- provider=oauth,
- provider_user_id=session[str(oauth) + "_oauth_user_id"],
+ provider=oauth_key,
+ provider_user_id=session[str(oauth_key) + "_oauth_user_id"],
)
try:
- oauth = query.one()
- oauth.user_id = user.id
+ oauth_key = query.one()
+ oauth_key.user_id = user.id
except NoResultFound:
# no found, return error
return
@@ -94,39 +92,40 @@ def register_user_with_oauth(user=None):
def logout_oauth_user():
- for oauth in oauth_check.keys():
- if str(oauth) + '_oauth_user_id' in session:
- session.pop(str(oauth) + '_oauth_user_id')
+ for oauth_key in oauth_check.keys():
+ if str(oauth_key) + '_oauth_user_id' in session:
+ session.pop(str(oauth_key) + '_oauth_user_id')
+
if ub.oauth_support:
- oauthblueprints =[]
+ oauthblueprints = []
if not ub.session.query(ub.OAuthProvider).count():
- oauth = ub.OAuthProvider()
- oauth.provider_name = "github"
- oauth.active = False
- ub.session.add(oauth)
+ oauthProvider = ub.OAuthProvider()
+ oauthProvider.provider_name = "github"
+ oauthProvider.active = False
+ ub.session.add(oauthProvider)
ub.session.commit()
- oauth = ub.OAuthProvider()
- oauth.provider_name = "google"
- oauth.active = False
- ub.session.add(oauth)
+ oauthProvider = ub.OAuthProvider()
+ oauthProvider.provider_name = "google"
+ oauthProvider.active = False
+ ub.session.add(oauthProvider)
ub.session.commit()
oauth_ids = ub.session.query(ub.OAuthProvider).all()
- ele1=dict(provider_name='github',
- id=oauth_ids[0].id,
- active=oauth_ids[0].active,
- oauth_client_id=oauth_ids[0].oauth_client_id,
- scope=None,
- oauth_client_secret=oauth_ids[0].oauth_client_secret,
- obtain_link='https://github.com/settings/developers')
- ele2=dict(provider_name='google',
- id=oauth_ids[1].id,
- active=oauth_ids[1].active,
- scope=["https://www.googleapis.com/auth/plus.me", "https://www.googleapis.com/auth/userinfo.email"],
- oauth_client_id=oauth_ids[1].oauth_client_id,
- oauth_client_secret=oauth_ids[1].oauth_client_secret,
- obtain_link='https://github.com/settings/developers')
+ ele1 = dict(provider_name='github',
+ id=oauth_ids[0].id,
+ active=oauth_ids[0].active,
+ oauth_client_id=oauth_ids[0].oauth_client_id,
+ scope=None,
+ oauth_client_secret=oauth_ids[0].oauth_client_secret,
+ obtain_link='https://github.com/settings/developers')
+ ele2 = dict(provider_name='google',
+ id=oauth_ids[1].id,
+ active=oauth_ids[1].active,
+ scope=["https://www.googleapis.com/auth/userinfo.email"],
+ oauth_client_id=oauth_ids[1].oauth_client_id,
+ oauth_client_secret=oauth_ids[1].oauth_client_secret,
+ obtain_link='https://console.developers.google.com/apis/credentials')
oauthblueprints.append(ele1)
oauthblueprints.append(ele2)
@@ -139,12 +138,12 @@ if ub.oauth_support:
client_id=element['oauth_client_id'],
client_secret=element['oauth_client_secret'],
redirect_to="oauth."+element['provider_name']+"_login",
- scope = element['scope']
+ scope=element['scope']
)
- element['blueprint']=blueprint
- app.register_blueprint(blueprint, url_prefix="/login")
+ element['blueprint'] = blueprint
element['blueprint'].backend = OAuthBackend(ub.OAuth, ub.session, str(element['id']),
user=current_user, user_required=True)
+ app.register_blueprint(blueprint, url_prefix="/login")
if element['active']:
register_oauth_blueprint(element['id'], element['provider_name'])
@@ -191,54 +190,64 @@ if ub.oauth_support:
provider_user_id=provider_user_id,
)
try:
- oauth = query.one()
+ oauth_entry = query.one()
# update token
- oauth.token = token
+ oauth_entry.token = token
except NoResultFound:
- oauth = ub.OAuth(
+ oauth_entry = ub.OAuth(
provider=provider_id,
provider_user_id=provider_user_id,
token=token,
)
try:
- ub.session.add(oauth)
+ ub.session.add(oauth_entry)
ub.session.commit()
except Exception as e:
log.exception(e)
ub.session.rollback()
# Disable Flask-Dance's default behavior for saving the OAuth token
- return False
+ # Value differrs depending on flask-dance version
+ return backend_resultcode
- def bind_oauth_or_register(provider_id, provider_user_id, redirect_url):
+ def bind_oauth_or_register(provider_id, provider_user_id, redirect_url, provider_name):
query = ub.session.query(ub.OAuth).filter_by(
provider=provider_id,
provider_user_id=provider_user_id,
)
try:
- oauth = query.one()
+ oauth_entry = query.first()
# already bind with user, just login
- if oauth.user:
- login_user(oauth.user)
+ if oauth_entry.user:
+ login_user(oauth_entry.user)
+ log.debug(u"You are now logged in as: '%s'", oauth_entry.user.nickname)
+ flash(_(u"you are now logged in as: '%(nickname)s'", nickname= oauth_entry.user.nickname),
+ category="success")
return redirect(url_for('web.index'))
else:
# bind to current user
if current_user and current_user.is_authenticated:
- oauth.user = current_user
+ oauth_entry.user = current_user
try:
- ub.session.add(oauth)
+ ub.session.add(oauth_entry)
ub.session.commit()
+ flash(_(u"Link to %(oauth)s Succeeded", oauth=provider_name), category="success")
+ return redirect(url_for('web.profile'))
except Exception as e:
log.exception(e)
ub.session.rollback()
- return redirect(url_for('web.login'))
- #if config.config_public_reg:
+ else:
+ flash(_(u"Login failed, No User Linked With OAuth Account"), category="error")
+ log.info('Login failed, No User Linked With OAuth Account')
+ return redirect(url_for('web.login'))
+ # return redirect(url_for('web.login'))
+ # if config.config_public_reg:
# return redirect(url_for('web.register'))
- #else:
+ # else:
# flash(_(u"Public registration is not enabled"), category="error")
# return redirect(url_for(redirect_url))
- except NoResultFound:
+ except (NoResultFound, AttributeError):
return redirect(url_for(redirect_url))
@@ -249,8 +258,8 @@ if ub.oauth_support:
)
try:
oauths = query.all()
- for oauth in oauths:
- status.append(int(oauth.provider))
+ for oauth_entry in oauths:
+ status.append(int(oauth_entry.provider))
return status
except NoResultFound:
return None
@@ -264,21 +273,21 @@ if ub.oauth_support:
user_id=current_user.id,
)
try:
- oauth = query.one()
+ oauth_entry = query.one()
if current_user and current_user.is_authenticated:
- oauth.user = current_user
+ oauth_entry.user = current_user
try:
- ub.session.delete(oauth)
+ ub.session.delete(oauth_entry)
ub.session.commit()
logout_oauth_user()
- flash(_(u"Unlink to %(oauth)s success.", oauth=oauth_check[provider]), category="success")
+ flash(_(u"Unlink to %(oauth)s Succeeded", oauth=oauth_check[provider]), category="success")
except Exception as e:
log.exception(e)
ub.session.rollback()
- flash(_(u"Unlink to %(oauth)s failed.", oauth=oauth_check[provider]), category="error")
+ flash(_(u"Unlink to %(oauth)s Failed", oauth=oauth_check[provider]), category="error")
except NoResultFound:
- log.warning("oauth %s for user %d not fount", provider, current_user.id)
- flash(_(u"Not linked to %(oauth)s.", oauth=oauth_check[provider]), category="error")
+ log.warning("oauth %s for user %d not found", provider, current_user.id)
+ flash(_(u"Not Linked to %(oauth)s", oauth=provider), category="error")
return redirect(url_for('web.profile'))
@@ -293,11 +302,11 @@ if ub.oauth_support:
error=error,
description=error_description,
uri=error_uri,
- ) # ToDo: Translate
+ ) # ToDo: Translate
flash(msg, category="error")
- @oauth.route('/github')
+ @oauth.route('/link/github')
@oauth_required
def github_login():
if not github.authorized:
@@ -305,7 +314,7 @@ if ub.oauth_support:
account_info = github.get('/user')
if account_info.ok:
account_info_json = account_info.json()
- return bind_oauth_or_register(oauthblueprints[0]['id'], account_info_json['id'], 'github.login')
+ return bind_oauth_or_register(oauthblueprints[0]['id'], account_info_json['id'], 'github.login', 'github')
flash(_(u"GitHub Oauth error, please retry later."), category="error")
return redirect(url_for('web.login'))
@@ -316,7 +325,7 @@ if ub.oauth_support:
return unlink_oauth(oauthblueprints[0]['id'])
- @oauth.route('/login/google')
+ @oauth.route('/link/google')
@oauth_required
def google_login():
if not google.authorized:
@@ -324,7 +333,7 @@ if ub.oauth_support:
resp = google.get("/oauth2/v2/userinfo")
if resp.ok:
account_info_json = resp.json()
- return bind_oauth_or_register(oauthblueprints[1]['id'], account_info_json['id'], 'google.login')
+ return bind_oauth_or_register(oauthblueprints[1]['id'], account_info_json['id'], 'google.login', 'google')
flash(_(u"Google Oauth error, please retry later."), category="error")
return redirect(url_for('web.login'))
@@ -339,11 +348,11 @@ if ub.oauth_support:
error=error,
description=error_description,
uri=error_uri,
- ) # ToDo: Translate
+ ) # ToDo: Translate
flash(msg, category="error")
@oauth.route('/unlink/google', methods=["GET"])
@login_required
def google_login_unlink():
- return unlink_oauth(oauthblueprints[1]['blueprint'].name)
+ return unlink_oauth(oauthblueprints[1]['id'])
diff --git a/cps/opds.py b/cps/opds.py
index 9198554b1..05e9c68c8 100644
--- a/cps/opds.py
+++ b/cps/opds.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
@@ -26,16 +25,18 @@ import sys
import datetime
from functools import wraps
-from flask import Blueprint, request, render_template, Response, g, make_response
+from flask import Blueprint, request, render_template, Response, g, make_response, abort
from flask_login import current_user
from sqlalchemy.sql.expression import func, text, or_, and_
from werkzeug.security import check_password_hash
-from . import constants, logger, config, db, ub, services
-from .helper import fill_indexpage, get_download_link, get_book_cover
+from . import constants, logger, config, db, calibre_db, ub, services, get_locale, isoLanguages
+from .helper import get_download_link, get_book_cover
from .pagination import Pagination
-from .web import common_filters, get_search_results, render_read_books, download_required
-
+from .web import render_read_books, download_required, load_user_from_request
+from flask_babel import gettext as _
+from babel import Locale as LC
+from babel.core import UnknownLocaleError
opds = Blueprint('opds', __name__)
@@ -50,11 +51,25 @@ def requires_basic_auth_if_no_ano(f):
if not auth or auth.type != 'basic' or not check_auth(auth.username, auth.password):
return authenticate()
return f(*args, **kwargs)
- if config.config_login_type == constants.LOGIN_LDAP and services.ldap:
+ if config.config_login_type == constants.LOGIN_LDAP and services.ldap and config.config_anonbrowse != 1:
return services.ldap.basic_auth_required(f)
return decorated
+class FeedObject:
+ def __init__(self, rating_id, rating_name):
+ self.rating_id = rating_id
+ self.rating_name = rating_name
+
+ @property
+ def id(self):
+ return self.rating_id
+
+ @property
+ def name(self):
+ return self.rating_name
+
+
@opds.route("/opds/")
@opds.route("/opds")
@requires_basic_auth_if_no_ano
@@ -85,15 +100,15 @@ def feed_normal_search():
@requires_basic_auth_if_no_ano
def feed_new():
off = request.args.get("offset") or 0
- entries, __, pagination = fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1),
- db.Books, True, [db.Books.timestamp.desc()])
+ entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0,
+ db.Books, True, [db.Books.timestamp.desc()])
return render_xml_template('feed.xml', entries=entries, pagination=pagination)
@opds.route("/opds/discover")
@requires_basic_auth_if_no_ano
def feed_discover():
- entries = db.session.query(db.Books).filter(common_filters()).order_by(func.random())\
+ entries = calibre_db.session.query(db.Books).filter(calibre_db.common_filters()).order_by(func.random())\
.limit(config.config_books_per_page)
pagination = Pagination(1, config.config_books_per_page, int(config.config_books_per_page))
return render_xml_template('feed.xml', entries=entries, pagination=pagination)
@@ -103,8 +118,9 @@ def feed_discover():
@requires_basic_auth_if_no_ano
def feed_best_rated():
off = request.args.get("offset") or 0
- entries, __, pagination = fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1),
- db.Books, db.Books.ratings.any(db.Ratings.rating > 9), [db.Books.timestamp.desc()])
+ entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0,
+ db.Books, db.Books.ratings.any(db.Ratings.rating > 9),
+ [db.Books.timestamp.desc()])
return render_xml_template('feed.xml', entries=entries, pagination=pagination)
@@ -117,16 +133,13 @@ def feed_hot():
hot_books = all_books.offset(off).limit(config.config_books_per_page)
entries = list()
for book in hot_books:
- downloadBook = db.session.query(db.Books).filter(db.Books.id == book.Downloads.book_id).first()
+ downloadBook = calibre_db.get_book(book.Downloads.book_id)
if downloadBook:
entries.append(
- db.session.query(db.Books).filter(common_filters())
- .filter(db.Books.id == book.Downloads.book_id).first()
+ calibre_db.get_filtered_book(book.Downloads.book_id)
)
else:
ub.delete_download(book.Downloads.book_id)
- # ub.session.query(ub.Downloads).filter(book.Downloads.book_id == ub.Downloads.book_id).delete()
- # ub.session.commit()
numBooks = entries.__len__()
pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1),
config.config_books_per_page, numBooks)
@@ -137,10 +150,13 @@ def feed_hot():
@requires_basic_auth_if_no_ano
def feed_authorindex():
off = request.args.get("offset") or 0
- entries = db.session.query(db.Authors).join(db.books_authors_link).join(db.Books).filter(common_filters())\
- .group_by(text('books_authors_link.author')).order_by(db.Authors.sort).limit(config.config_books_per_page).offset(off)
+ entries = calibre_db.session.query(db.Authors).join(db.books_authors_link).join(db.Books)\
+ .filter(calibre_db.common_filters())\
+ .group_by(text('books_authors_link.author'))\
+ .order_by(db.Authors.sort).limit(config.config_books_per_page)\
+ .offset(off)
pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page,
- len(db.session.query(db.Authors).all()))
+ len(calibre_db.session.query(db.Authors).all()))
return render_xml_template('feed.xml', listelements=entries, folder='opds.feed_author', pagination=pagination)
@@ -148,8 +164,10 @@ def feed_authorindex():
@requires_basic_auth_if_no_ano
def feed_author(book_id):
off = request.args.get("offset") or 0
- entries, __, pagination = fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1),
- db.Books, db.Books.authors.any(db.Authors.id == book_id), [db.Books.timestamp.desc()])
+ entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0,
+ db.Books,
+ db.Books.authors.any(db.Authors.id == book_id),
+ [db.Books.timestamp.desc()])
return render_xml_template('feed.xml', entries=entries, pagination=pagination)
@@ -157,10 +175,14 @@ def feed_author(book_id):
@requires_basic_auth_if_no_ano
def feed_publisherindex():
off = request.args.get("offset") or 0
- entries = db.session.query(db.Publishers).join(db.books_publishers_link).join(db.Books).filter(common_filters())\
- .group_by(text('books_publishers_link.publisher')).order_by(db.Publishers.sort).limit(config.config_books_per_page).offset(off)
+ entries = calibre_db.session.query(db.Publishers)\
+ .join(db.books_publishers_link)\
+ .join(db.Books).filter(calibre_db.common_filters())\
+ .group_by(text('books_publishers_link.publisher'))\
+ .order_by(db.Publishers.sort)\
+ .limit(config.config_books_per_page).offset(off)
pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page,
- len(db.session.query(db.Publishers).all()))
+ len(calibre_db.session.query(db.Publishers).all()))
return render_xml_template('feed.xml', listelements=entries, folder='opds.feed_publisher', pagination=pagination)
@@ -168,9 +190,10 @@ def feed_publisherindex():
@requires_basic_auth_if_no_ano
def feed_publisher(book_id):
off = request.args.get("offset") or 0
- entries, __, pagination = fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1),
- db.Books, db.Books.publishers.any(db.Publishers.id == book_id),
- [db.Books.timestamp.desc()])
+ entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0,
+ db.Books,
+ db.Books.publishers.any(db.Publishers.id == book_id),
+ [db.Books.timestamp.desc()])
return render_xml_template('feed.xml', entries=entries, pagination=pagination)
@@ -178,10 +201,16 @@ def feed_publisher(book_id):
@requires_basic_auth_if_no_ano
def feed_categoryindex():
off = request.args.get("offset") or 0
- entries = db.session.query(db.Tags).join(db.books_tags_link).join(db.Books).filter(common_filters())\
- .group_by(text('books_tags_link.tag')).order_by(db.Tags.name).offset(off).limit(config.config_books_per_page)
+ entries = calibre_db.session.query(db.Tags)\
+ .join(db.books_tags_link)\
+ .join(db.Books)\
+ .filter(calibre_db.common_filters())\
+ .group_by(text('books_tags_link.tag'))\
+ .order_by(db.Tags.name)\
+ .offset(off)\
+ .limit(config.config_books_per_page)
pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page,
- len(db.session.query(db.Tags).all()))
+ len(calibre_db.session.query(db.Tags).all()))
return render_xml_template('feed.xml', listelements=entries, folder='opds.feed_category', pagination=pagination)
@@ -189,8 +218,10 @@ def feed_categoryindex():
@requires_basic_auth_if_no_ano
def feed_category(book_id):
off = request.args.get("offset") or 0
- entries, __, pagination = fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1),
- db.Books, db.Books.tags.any(db.Tags.id == book_id), [db.Books.timestamp.desc()])
+ entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0,
+ db.Books,
+ db.Books.tags.any(db.Tags.id == book_id),
+ [db.Books.timestamp.desc()])
return render_xml_template('feed.xml', entries=entries, pagination=pagination)
@@ -198,10 +229,15 @@ def feed_category(book_id):
@requires_basic_auth_if_no_ano
def feed_seriesindex():
off = request.args.get("offset") or 0
- entries = db.session.query(db.Series).join(db.books_series_link).join(db.Books).filter(common_filters())\
- .group_by(text('books_series_link.series')).order_by(db.Series.sort).offset(off).all()
+ entries = calibre_db.session.query(db.Series)\
+ .join(db.books_series_link)\
+ .join(db.Books)\
+ .filter(calibre_db.common_filters())\
+ .group_by(text('books_series_link.series'))\
+ .order_by(db.Series.sort)\
+ .offset(off).all()
pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page,
- len(db.session.query(db.Series).all()))
+ len(calibre_db.session.query(db.Series).all()))
return render_xml_template('feed.xml', listelements=entries, folder='opds.feed_series', pagination=pagination)
@@ -209,22 +245,112 @@ def feed_seriesindex():
@requires_basic_auth_if_no_ano
def feed_series(book_id):
off = request.args.get("offset") or 0
- entries, __, pagination = fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1),
- db.Books, db.Books.series.any(db.Series.id == book_id), [db.Books.series_index])
+ entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0,
+ db.Books,
+ db.Books.series.any(db.Series.id == book_id),
+ [db.Books.series_index])
return render_xml_template('feed.xml', entries=entries, pagination=pagination)
-@opds.route("/opds/shelfindex/", defaults={'public': 0})
-@opds.route("/opds/shelfindex/")
+@opds.route("/opds/ratings")
@requires_basic_auth_if_no_ano
-def feed_shelfindex(public):
+def feed_ratingindex():
off = request.args.get("offset") or 0
- if public != 0:
- shelf = g.public_shelfes
- number = len(shelf)
+ entries = calibre_db.session.query(db.Ratings, func.count('books_ratings_link.book').label('count'),
+ (db.Ratings.rating / 2).label('name')) \
+ .join(db.books_ratings_link)\
+ .join(db.Books)\
+ .filter(calibre_db.common_filters()) \
+ .group_by(text('books_ratings_link.rating'))\
+ .order_by(db.Ratings.rating).all()
+
+ pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page,
+ len(entries))
+ element = list()
+ for entry in entries:
+ element.append(FeedObject(entry[0].id, "{} Stars".format(entry.name)))
+ return render_xml_template('feed.xml', listelements=element, folder='opds.feed_ratings', pagination=pagination)
+
+
+@opds.route("/opds/ratings/")
+@requires_basic_auth_if_no_ano
+def feed_ratings(book_id):
+ off = request.args.get("offset") or 0
+ entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0,
+ db.Books,
+ db.Books.ratings.any(db.Ratings.id == book_id),
+ [db.Books.timestamp.desc()])
+ return render_xml_template('feed.xml', entries=entries, pagination=pagination)
+
+
+@opds.route("/opds/formats")
+@requires_basic_auth_if_no_ano
+def feed_formatindex():
+ off = request.args.get("offset") or 0
+ entries = calibre_db.session.query(db.Data).join(db.Books)\
+ .filter(calibre_db.common_filters()) \
+ .group_by(db.Data.format)\
+ .order_by(db.Data.format).all()
+ pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page,
+ len(entries))
+
+ element = list()
+ for entry in entries:
+ element.append(FeedObject(entry.format, entry.format))
+ return render_xml_template('feed.xml', listelements=element, folder='opds.feed_format', pagination=pagination)
+
+
+@opds.route("/opds/formats/")
+@requires_basic_auth_if_no_ano
+def feed_format(book_id):
+ off = request.args.get("offset") or 0
+ entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0,
+ db.Books,
+ db.Books.data.any(db.Data.format == book_id.upper()),
+ [db.Books.timestamp.desc()])
+ return render_xml_template('feed.xml', entries=entries, pagination=pagination)
+
+
+@opds.route("/opds/language")
+@opds.route("/opds/language/")
+@requires_basic_auth_if_no_ano
+def feed_languagesindex():
+ off = request.args.get("offset") or 0
+ if current_user.filter_language() == u"all":
+ languages = calibre_db.speaking_language()
else:
- shelf = g.user.shelf
- number = shelf.count()
+ try:
+ cur_l = LC.parse(current_user.filter_language())
+ except UnknownLocaleError:
+ cur_l = None
+ languages = calibre_db.session.query(db.Languages).filter(
+ db.Languages.lang_code == current_user.filter_language()).all()
+ if cur_l:
+ languages[0].name = cur_l.get_language_name(get_locale())
+ else:
+ languages[0].name = _(isoLanguages.get(part3=languages[0].lang_code).name)
+ pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page,
+ len(languages))
+ return render_xml_template('feed.xml', listelements=languages, folder='opds.feed_languages', pagination=pagination)
+
+
+@opds.route("/opds/language/")
+@requires_basic_auth_if_no_ano
+def feed_languages(book_id):
+ off = request.args.get("offset") or 0
+ entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0,
+ db.Books,
+ db.Books.languages.any(db.Languages.id == book_id),
+ [db.Books.timestamp.desc()])
+ return render_xml_template('feed.xml', entries=entries, pagination=pagination)
+
+
+@opds.route("/opds/shelfindex")
+@requires_basic_auth_if_no_ano
+def feed_shelfindex():
+ off = request.args.get("offset") or 0
+ shelf = g.shelves_access
+ number = len(shelf)
pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page,
number)
return render_xml_template('feed.xml', listelements=shelf, folder='opds.feed_shelf', pagination=pagination)
@@ -235,7 +361,8 @@ def feed_shelfindex(public):
def feed_shelf(book_id):
off = request.args.get("offset") or 0
if current_user.is_anonymous:
- shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.is_public == 1, ub.Shelf.id == book_id).first()
+ shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.is_public == 1,
+ ub.Shelf.id == book_id).first()
else:
shelf = ub.session.query(ub.Shelf).filter(or_(and_(ub.Shelf.user_id == int(current_user.id),
ub.Shelf.id == book_id),
@@ -247,25 +374,34 @@ def feed_shelf(book_id):
books_in_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == book_id).order_by(
ub.BookShelf.order.asc()).all()
for book in books_in_shelf:
- cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).first()
+ cur_book = calibre_db.get_book(book.book_id)
result.append(cur_book)
- pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page,
- len(result))
- return render_xml_template('feed.xml', entries=result, pagination=pagination)
+ pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page,
+ len(result))
+ return render_xml_template('feed.xml', entries=result, pagination=pagination)
@opds.route("/opds/download///")
@requires_basic_auth_if_no_ano
-@download_required
def opds_download_link(book_id, book_format):
- return get_download_link(book_id,book_format)
+ # I gave up with this: With enabled ldap login, the user doesn't get logged in, therefore it's always guest
+ # workaround, loading the user from the request and checking it's download rights here
+ # in case of anonymous browsing user is None
+ user = load_user_from_request(request) or current_user
+ if not user.role_download():
+ return abort(403)
+ if "Kobo" in request.headers.get('User-Agent'):
+ client = "kobo"
+ else:
+ client = ""
+ return get_download_link(book_id, book_format.lower(), client)
@opds.route("/ajax/book//")
-@opds.route("/ajax/book/")
+@opds.route("/ajax/book/", defaults={'library': ""})
@requires_basic_auth_if_no_ano
def get_metadata_calibre_companion(uuid, library):
- entry = db.session.query(db.Books).filter(db.Books.uuid.like("%" + uuid + "%")).first()
+ entry = calibre_db.session.query(db.Books).filter(db.Books.uuid.like("%" + uuid + "%")).first()
if entry is not None:
js = render_template('json.txt', entry=entry)
response = make_response(js)
@@ -277,17 +413,20 @@ def get_metadata_calibre_companion(uuid, library):
def feed_search(term):
if term:
- term = term.strip().lower()
- entries = get_search_results( term)
+ entries, __, ___ = calibre_db.get_search_results(term)
entriescount = len(entries) if len(entries) > 0 else 1
pagination = Pagination(1, entriescount, entriescount)
return render_xml_template('feed.xml', searchterm=term, entries=entries, pagination=pagination)
else:
return render_xml_template('feed.xml', searchterm="")
+
def check_auth(username, password):
if sys.version_info.major == 3:
- username=username.encode('windows-1252')
+ try:
+ username = username.encode('windows-1252')
+ except UnicodeEncodeError:
+ username = username.encode('utf-8')
user = ub.session.query(ub.User).filter(func.lower(ub.User.nickname) ==
username.decode('utf-8').lower()).first()
return bool(user and check_password_hash(str(user.password), password))
@@ -301,13 +440,14 @@ def authenticate():
def render_xml_template(*args, **kwargs):
- #ToDo: return time in current timezone similar to %z
+ # ToDo: return time in current timezone similar to %z
currtime = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S+00:00")
xml = render_template(current_time=currtime, instance=config.config_calibre_web_title, *args, **kwargs)
response = make_response(xml)
response.headers["Content-Type"] = "application/atom+xml; charset=utf-8"
return response
+
@opds.route("/opds/thumb_240_240/")
@opds.route("/opds/cover_240_240/")
@opds.route("/opds/cover_90_90/")
@@ -316,15 +456,18 @@ def render_xml_template(*args, **kwargs):
def feed_get_cover(book_id):
return get_book_cover(book_id)
-@opds.route("/opds/readbooks/")
+
+@opds.route("/opds/readbooks")
@requires_basic_auth_if_no_ano
def feed_read_books():
off = request.args.get("offset") or 0
- return render_read_books(int(off) / (int(config.config_books_per_page)) + 1, True, True)
+ result, pagination = render_read_books(int(off) / (int(config.config_books_per_page)) + 1, True, True)
+ return render_xml_template('feed.xml', entries=result, pagination=pagination)
-@opds.route("/opds/unreadbooks/")
+@opds.route("/opds/unreadbooks")
@requires_basic_auth_if_no_ano
def feed_unread_books():
off = request.args.get("offset") or 0
- return render_read_books(int(off) / (int(config.config_books_per_page)) + 1, False, True)
+ result, pagination = render_read_books(int(off) / (int(config.config_books_per_page)) + 1, False, True)
+ return render_xml_template('feed.xml', entries=result, pagination=pagination)
diff --git a/cps/pagination.py b/cps/pagination.py
index 0a138a647..c29717c29 100644
--- a/cps/pagination.py
+++ b/cps/pagination.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
diff --git a/cps/redirect.py b/cps/redirect.py
index 324c4b203..593afd0c8 100644
--- a/cps/redirect.py
+++ b/cps/redirect.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Flask License
diff --git a/cps/reverseproxy.py b/cps/reverseproxy.py
index 25bbe77bb..3bcbd3b74 100644
--- a/cps/reverseproxy.py
+++ b/cps/reverseproxy.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Flask License
@@ -60,10 +59,13 @@ class ReverseProxied(object):
def __init__(self, application):
self.app = application
+ self.proxied = False
def __call__(self, environ, start_response):
+ self.proxied = False
script_name = environ.get('HTTP_X_SCRIPT_NAME', '')
if script_name:
+ self.proxied = True
environ['SCRIPT_NAME'] = script_name
path_info = environ.get('PATH_INFO', '')
if path_info and path_info.startswith(script_name):
@@ -75,4 +77,9 @@ class ReverseProxied(object):
servr = environ.get('HTTP_X_FORWARDED_HOST', '')
if servr:
environ['HTTP_HOST'] = servr
+ self.proxied = True
return self.app(environ, start_response)
+
+ @property
+ def is_proxied(self):
+ return self.proxied
diff --git a/cps/server.py b/cps/server.py
index 43792ecdc..b2d9c1b00 100644
--- a/cps/server.py
+++ b/cps/server.py
@@ -27,6 +27,8 @@ try:
from gevent.pywsgi import WSGIServer
from gevent.pool import Pool
from gevent import __version__ as _version
+ from greenlet import GreenletExit
+ import ssl
VERSION = 'Gevent ' + _version
_GEVENT = True
except ImportError:
@@ -43,7 +45,6 @@ from . import logger
log = logger.create()
-
def _readable_listen_address(address, port):
if ':' in address:
address = "[" + address + "]"
@@ -73,7 +74,11 @@ class WebServer(object):
if config.config_access_log:
log_name = "gevent.access" if _GEVENT else "tornado.access"
formatter = logger.ACCESS_FORMATTER_GEVENT if _GEVENT else logger.ACCESS_FORMATTER_TORNADO
- self.access_logger = logger.create_access_log(config.config_access_logfile, log_name, formatter)
+ self.access_logger, logfile = logger.create_access_log(config.config_access_logfile, log_name, formatter)
+ if logfile != config.config_access_logfile:
+ log.warning("Accesslog path %s not valid, falling back to default", config.config_access_logfile)
+ config.config_access_logfile = logfile
+ config.save()
else:
if not _GEVENT:
logger.get('tornado.access').disabled = True
@@ -84,7 +89,8 @@ class WebServer(object):
if os.path.isfile(certfile_path) and os.path.isfile(keyfile_path):
self.ssl_args = dict(certfile=certfile_path, keyfile=keyfile_path)
else:
- log.warning('The specified paths for the ssl certificate file and/or key file seem to be broken. Ignoring ssl.')
+ log.warning('The specified paths for the ssl certificate file and/or key file seem to be broken. '
+ 'Ignoring ssl.')
log.warning('Cert path: %s', certfile_path)
log.warning('Key path: %s', keyfile_path)
@@ -139,6 +145,16 @@ class WebServer(object):
output = _readable_listen_address(self.listen_address, self.listen_port)
log.info('Starting Gevent server on %s', output)
self.wsgiserver = WSGIServer(sock, self.app, log=self.access_logger, spawn=Pool(), **ssl_args)
+ if ssl_args:
+ wrap_socket = self.wsgiserver.wrap_socket
+ def my_wrap_socket(*args, **kwargs):
+ try:
+ return wrap_socket(*args, **kwargs)
+ except (ssl.SSLError, OSError) as ex:
+ log.warning('Gevent SSL Error: %s', ex)
+ raise GreenletExit
+
+ self.wsgiserver.wrap_socket = my_wrap_socket
self.wsgiserver.serve_forever()
finally:
if self.unix_socket_file:
@@ -146,7 +162,7 @@ class WebServer(object):
self.unix_socket_file = None
def _start_tornado(self):
- if os.name == 'nt':
+ if os.name == 'nt' and sys.version_info > (3, 7):
import asyncio
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
log.info('Starting Tornado server on %s', _readable_listen_address(self.listen_address, self.listen_port))
@@ -156,7 +172,7 @@ class WebServer(object):
max_buffer_size=209700000,
ssl_options=self.ssl_args)
http_server.listen(self.listen_port, self.listen_address)
- self.wsgiserver = IOLoop.instance()
+ self.wsgiserver = IOLoop.current()
self.wsgiserver.start()
# wait for stop signal
self.wsgiserver.close(True)
@@ -171,12 +187,15 @@ class WebServer(object):
except Exception as ex:
log.error("Error starting server: %s", ex)
print("Error starting server: %s" % ex)
+ self.stop()
return False
finally:
self.wsgiserver = None
if not self.restart:
log.info("Performing shutdown of Calibre-Web")
+ # prevent irritiating log of pending tasks message from asyncio
+ logger.get('asyncio').setLevel(logger.logging.CRITICAL)
return True
log.info("Performing restart of Calibre-Web")
@@ -187,14 +206,17 @@ class WebServer(object):
os.execv(sys.executable, arguments)
return True
- def _killServer(self, ignored_signum, ignored_frame):
+ def _killServer(self, __, ___):
self.stop()
def stop(self, restart=False):
+ from . import updater_thread
+ updater_thread.stop()
+
log.info("webserver stop (restart=%s)", restart)
self.restart = restart
if self.wsgiserver:
if _GEVENT:
self.wsgiserver.close()
else:
- self.wsgiserver.add_callback(self.wsgiserver.stop)
+ self.wsgiserver.add_callback_from_signal(self.wsgiserver.stop)
diff --git a/cps/services/SyncToken.py b/cps/services/SyncToken.py
new file mode 100644
index 000000000..f6db960b7
--- /dev/null
+++ b/cps/services/SyncToken.py
@@ -0,0 +1,176 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
+# Copyright (C) 2018-2019 shavitmichael, OzzieIsaacs
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+import sys
+from base64 import b64decode, b64encode
+from jsonschema import validate, exceptions, __version__
+from datetime import datetime
+try:
+ from urllib import unquote
+except ImportError:
+ from urllib.parse import unquote
+
+from flask import json
+from .. import logger
+
+
+log = logger.create()
+
+
+def b64encode_json(json_data):
+ if sys.version_info < (3, 0):
+ return b64encode(json.dumps(json_data))
+ else:
+ return b64encode(json.dumps(json_data).encode())
+
+
+# Python3 has a timestamp() method we could be calling, however it's not avaiable in python2.
+def to_epoch_timestamp(datetime_object):
+ return (datetime_object - datetime(1970, 1, 1)).total_seconds()
+
+
+def get_datetime_from_json(json_object, field_name):
+ try:
+ return datetime.utcfromtimestamp(json_object[field_name])
+ except (KeyError, OSError, OverflowError):
+ # OSError is thrown on Windows if timestamp is <1970 or >2038
+ return datetime.min
+
+
+class SyncToken:
+ """ The SyncToken is used to persist state accross requests.
+ When serialized over the response headers, the Kobo device will propagate the token onto following
+ requests to the service. As an example use-case, the SyncToken is used to detect books that have been added
+ to the library since the last time the device synced to the server.
+
+ Attributes:
+ books_last_created: Datetime representing the newest book that the device knows about.
+ books_last_modified: Datetime representing the last modified book that the device knows about.
+ """
+
+ SYNC_TOKEN_HEADER = "x-kobo-synctoken"
+ VERSION = "1-1-0"
+ LAST_MODIFIED_ADDED_VERSION = "1-1-0"
+ MIN_VERSION = "1-0-0"
+
+ token_schema = {
+ "type": "object",
+ "properties": {"version": {"type": "string"}, "data": {"type": "object"}, },
+ }
+ # This Schema doesn't contain enough information to detect and propagate book deletions from Calibre to the device.
+ # A potential solution might be to keep a list of all known book uuids in the token, and look for any missing
+ # from the db.
+ data_schema_v1 = {
+ "type": "object",
+ "properties": {
+ "raw_kobo_store_token": {"type": "string"},
+ "books_last_modified": {"type": "string"},
+ "books_last_created": {"type": "string"},
+ "archive_last_modified": {"type": "string"},
+ "reading_state_last_modified": {"type": "string"},
+ "tags_last_modified": {"type": "string"},
+ },
+ }
+
+ def __init__(
+ self,
+ raw_kobo_store_token="",
+ books_last_created=datetime.min,
+ books_last_modified=datetime.min,
+ archive_last_modified=datetime.min,
+ reading_state_last_modified=datetime.min,
+ tags_last_modified=datetime.min,
+ ):
+ self.raw_kobo_store_token = raw_kobo_store_token
+ self.books_last_created = books_last_created
+ self.books_last_modified = books_last_modified
+ self.archive_last_modified = archive_last_modified
+ self.reading_state_last_modified = reading_state_last_modified
+ self.tags_last_modified = tags_last_modified
+
+ @staticmethod
+ def from_headers(headers):
+ sync_token_header = headers.get(SyncToken.SYNC_TOKEN_HEADER, "")
+ if sync_token_header == "":
+ return SyncToken()
+
+ # On the first sync from a Kobo device, we may receive the SyncToken
+ # from the official Kobo store. Without digging too deep into it, that
+ # token is of the form [b64encoded blob].[b64encoded blob 2]
+ if "." in sync_token_header:
+ return SyncToken(raw_kobo_store_token=sync_token_header)
+
+ try:
+ sync_token_json = json.loads(
+ b64decode(sync_token_header + "=" * (-len(sync_token_header) % 4))
+ )
+ validate(sync_token_json, SyncToken.token_schema)
+ if sync_token_json["version"] < SyncToken.MIN_VERSION:
+ raise ValueError
+
+ data_json = sync_token_json["data"]
+ validate(sync_token_json, SyncToken.data_schema_v1)
+ except (exceptions.ValidationError, ValueError):
+ log.error("Sync token contents do not follow the expected json schema.")
+ return SyncToken()
+
+ raw_kobo_store_token = data_json["raw_kobo_store_token"]
+ try:
+ books_last_modified = get_datetime_from_json(data_json, "books_last_modified")
+ books_last_created = get_datetime_from_json(data_json, "books_last_created")
+ archive_last_modified = get_datetime_from_json(data_json, "archive_last_modified")
+ reading_state_last_modified = get_datetime_from_json(data_json, "reading_state_last_modified")
+ tags_last_modified = get_datetime_from_json(data_json, "tags_last_modified")
+ except TypeError:
+ log.error("SyncToken timestamps don't parse to a datetime.")
+ return SyncToken(raw_kobo_store_token=raw_kobo_store_token)
+
+ return SyncToken(
+ raw_kobo_store_token=raw_kobo_store_token,
+ books_last_created=books_last_created,
+ books_last_modified=books_last_modified,
+ archive_last_modified=archive_last_modified,
+ reading_state_last_modified=reading_state_last_modified,
+ tags_last_modified=tags_last_modified
+ )
+
+ def set_kobo_store_header(self, store_headers):
+ store_headers.set(SyncToken.SYNC_TOKEN_HEADER, self.raw_kobo_store_token)
+
+ def merge_from_store_response(self, store_response):
+ self.raw_kobo_store_token = store_response.headers.get(
+ SyncToken.SYNC_TOKEN_HEADER, ""
+ )
+
+ def to_headers(self, headers):
+ headers[SyncToken.SYNC_TOKEN_HEADER] = self.build_sync_token()
+
+ def build_sync_token(self):
+ token = {
+ "version": SyncToken.VERSION,
+ "data": {
+ "raw_kobo_store_token": self.raw_kobo_store_token,
+ "books_last_modified": to_epoch_timestamp(self.books_last_modified),
+ "books_last_created": to_epoch_timestamp(self.books_last_created),
+ "archive_last_modified": to_epoch_timestamp(self.archive_last_modified),
+ "reading_state_last_modified": to_epoch_timestamp(self.reading_state_last_modified),
+ "tags_last_modified": to_epoch_timestamp(self.tags_last_modified)
+ },
+ }
+ return b64encode_json(token)
diff --git a/cps/services/__init__.py b/cps/services/__init__.py
index d468d0b76..17f1f5297 100644
--- a/cps/services/__init__.py
+++ b/cps/services/__init__.py
@@ -26,13 +26,22 @@ log = logger.create()
try: from . import goodreads_support
except ImportError as err:
- log.debug("cannot import goodreads, showing authors-metadata will not work: %s", err)
+ log.debug("Cannot import goodreads, showing authors-metadata will not work: %s", err)
goodreads_support = None
-try: from . import simpleldap as ldap
+try:
+ from . import simpleldap as ldap
+ from .simpleldap import ldapVersion
except ImportError as err:
- log.debug("cannot import simpleldap, logging in with ldap will not work: %s", err)
+ log.debug("Cannot import simpleldap, logging in with ldap will not work: %s", err)
ldap = None
+ ldapVersion = None
-
+try:
+ from . import SyncToken as SyncToken
+ kobo = True
+except ImportError as err:
+ log.debug("Cannot import SyncToken, syncing books with Kobo Devices will not work: %s", err)
+ kobo = None
+ SyncToken = None
diff --git a/cps/services/goodreads_support.py b/cps/services/goodreads_support.py
index 55161c7a4..9312bc0fe 100644
--- a/cps/services/goodreads_support.py
+++ b/cps/services/goodreads_support.py
@@ -20,7 +20,10 @@ from __future__ import division, print_function, unicode_literals
import time
from functools import reduce
-from goodreads.client import GoodreadsClient
+try:
+ from goodreads.client import GoodreadsClient
+except ImportError:
+ from betterreads.client import GoodreadsClient
try: import Levenshtein
except ImportError: Levenshtein = False
@@ -69,7 +72,7 @@ def get_author_info(author_name):
author_info = _client.find_author(author_name=author_name)
except Exception as ex:
# Skip goodreads, if site is down/inaccessible
- log.warning('Goodreads website is down/inaccessible? %s', ex)
+ log.warning('Goodreads website is down/inaccessible? %s', ex.__str__())
return
if author_info:
@@ -95,8 +98,12 @@ def get_other_books(author_info, library_books=None):
for book in author_info.books:
if book.isbn in identifiers:
continue
- if book.gid["#text"] in identifiers:
- continue
+ if isinstance(book.gid, int):
+ if book.gid in identifiers:
+ continue
+ else:
+ if book.gid["#text"] in identifiers:
+ continue
if Levenshtein and library_titles:
goodreads_title = book._book_dict['title_without_series']
diff --git a/cps/services/simpleldap.py b/cps/services/simpleldap.py
index 42a9aacd8..4125bdabf 100644
--- a/cps/services/simpleldap.py
+++ b/cps/services/simpleldap.py
@@ -20,9 +20,13 @@ from __future__ import division, print_function, unicode_literals
import base64
from flask_simpleldap import LDAP, LDAPException
-
+from flask_simpleldap import ldap as pyLDAP
from .. import constants, logger
+try:
+ from ldap.pkginfo import __version__ as ldapVersion
+except ImportError:
+ pass
log = logger.create()
_ldap = LDAP()
@@ -34,44 +38,91 @@ def init_app(app, config):
app.config['LDAP_HOST'] = config.config_ldap_provider_url
app.config['LDAP_PORT'] = config.config_ldap_port
- app.config['LDAP_SCHEMA'] = config.config_ldap_schema
- app.config['LDAP_USERNAME'] = config.config_ldap_user_object.replace('%s', config.config_ldap_serv_username)\
- + ',' + config.config_ldap_dn
- app.config['LDAP_PASSWORD'] = base64.b64decode(config.config_ldap_serv_password)
- app.config['LDAP_REQUIRE_CERT'] = bool(config.config_ldap_require_cert)
- if config.config_ldap_require_cert:
- app.config['LDAP_CERT_PATH'] = config.config_ldap_cert_path
+ app.config['LDAP_CUSTOM_OPTIONS'] = {pyLDAP.OPT_REFERRALS: 0}
+ if config.config_ldap_encryption == 2:
+ app.config['LDAP_SCHEMA'] = 'ldaps'
+ else:
+ app.config['LDAP_SCHEMA'] = 'ldap'
+ if config.config_ldap_authentication > constants.LDAP_AUTH_ANONYMOUS:
+ if config.config_ldap_authentication > constants.LDAP_AUTH_UNAUTHENTICATE:
+ if config.config_ldap_serv_password is None:
+ config.config_ldap_serv_password = ''
+ app.config['LDAP_PASSWORD'] = base64.b64decode(config.config_ldap_serv_password)
+ else:
+ app.config['LDAP_PASSWORD'] = base64.b64decode("")
+ app.config['LDAP_USERNAME'] = config.config_ldap_serv_username
+ else:
+ app.config['LDAP_USERNAME'] = ""
+ app.config['LDAP_PASSWORD'] = base64.b64decode("")
+ if bool(config.config_ldap_cert_path):
+ app.config['LDAP_CUSTOM_OPTIONS'].update({
+ pyLDAP.OPT_X_TLS_REQUIRE_CERT: pyLDAP.OPT_X_TLS_DEMAND,
+ pyLDAP.OPT_X_TLS_CACERTFILE: config.config_ldap_cacert_path,
+ pyLDAP.OPT_X_TLS_CERTFILE: config.config_ldap_cert_path,
+ pyLDAP.OPT_X_TLS_KEYFILE: config.config_ldap_key_path,
+ pyLDAP.OPT_X_TLS_NEWCTX: 0
+ })
+
app.config['LDAP_BASE_DN'] = config.config_ldap_dn
app.config['LDAP_USER_OBJECT_FILTER'] = config.config_ldap_user_object
- app.config['LDAP_USE_SSL'] = bool(config.config_ldap_use_ssl)
- app.config['LDAP_USE_TLS'] = bool(config.config_ldap_use_tls)
+
+ app.config['LDAP_USE_TLS'] = bool(config.config_ldap_encryption == 1)
+ app.config['LDAP_USE_SSL'] = bool(config.config_ldap_encryption == 2)
app.config['LDAP_OPENLDAP'] = bool(config.config_ldap_openldap)
+ app.config['LDAP_GROUP_OBJECT_FILTER'] = config.config_ldap_group_object_filter
+ app.config['LDAP_GROUP_MEMBERS_FIELD'] = config.config_ldap_group_members_field
- _ldap.init_app(app)
+ try:
+ _ldap.init_app(app)
+ except ValueError:
+ if bool(config.config_ldap_cert_path):
+ app.config['LDAP_CUSTOM_OPTIONS'].pop(pyLDAP.OPT_X_TLS_NEWCTX)
+ try:
+ _ldap.init_app(app)
+ except RuntimeError as e:
+ log.error(e)
+ except RuntimeError as e:
+ log.error(e)
+def get_object_details(user=None,query_filter=None):
+ return _ldap.get_object_details(user, query_filter=query_filter)
+
+
+def bind():
+ return _ldap.bind()
+
+
+def get_group_members(group):
+ return _ldap.get_group_members(group)
+
def basic_auth_required(func):
return _ldap.basic_auth_required(func)
def bind_user(username, password):
- # ulf= _ldap.get_object_details('admin')
'''Attempts a LDAP login.
:returns: True if login succeeded, False if login failed, None if server unavailable.
'''
try:
- result = _ldap.bind_user(username, password)
- log.debug("LDAP login '%s': %r", username, result)
- return result is not None
+ if _ldap.get_object_details(username):
+ result = _ldap.bind_user(username, password)
+ log.debug("LDAP login '%s': %r", username, result)
+ return result is not None, None
+ return None, None # User not found
+ except (TypeError, AttributeError, KeyError) as ex:
+ error = ("LDAP bind_user: %s" % ex)
+ return None, error
except LDAPException as ex:
if ex.message == 'Invalid credentials':
- log.info("LDAP login '%s' failed: %s", username, ex)
- return False
+ error = "LDAP admin login failed"
+ return None, error
if ex.message == "Can't contact LDAP server":
- log.warning('LDAP Server down: %s', ex)
- return None
+ # log.warning('LDAP Server down: %s', ex)
+ error = ('LDAP Server down: %s' % ex)
+ return None, error
else:
- log.warning('LDAP Server error: %s', ex.message)
- return None
+ error = ('LDAP Server error: %s' % ex.message)
+ return None, error
diff --git a/cps/services/worker.py b/cps/services/worker.py
new file mode 100644
index 000000000..c2ea594cb
--- /dev/null
+++ b/cps/services/worker.py
@@ -0,0 +1,220 @@
+
+from __future__ import division, print_function, unicode_literals
+import threading
+import abc
+import uuid
+import time
+
+try:
+ import queue
+except ImportError:
+ import Queue as queue
+from datetime import datetime
+from collections import namedtuple
+
+from cps import logger
+
+log = logger.create()
+
+# task 'status' consts
+STAT_WAITING = 0
+STAT_FAIL = 1
+STAT_STARTED = 2
+STAT_FINISH_SUCCESS = 3
+
+# Only retain this many tasks in dequeued list
+TASK_CLEANUP_TRIGGER = 20
+
+QueuedTask = namedtuple('QueuedTask', 'num, user, added, task')
+
+
+def _get_main_thread():
+ for t in threading.enumerate():
+ if t.__class__.__name__ == '_MainThread':
+ return t
+ raise Exception("main thread not found?!")
+
+
+
+class ImprovedQueue(queue.Queue):
+ def to_list(self):
+ """
+ Returns a copy of all items in the queue without removing them.
+ """
+
+ with self.mutex:
+ return list(self.queue)
+
+#Class for all worker tasks in the background
+class WorkerThread(threading.Thread):
+ _instance = None
+
+ @classmethod
+ def getInstance(cls):
+ if cls._instance is None:
+ cls._instance = WorkerThread()
+ return cls._instance
+
+ def __init__(self):
+ threading.Thread.__init__(self)
+
+ self.dequeued = list()
+
+ self.doLock = threading.Lock()
+ self.queue = ImprovedQueue()
+ self.num = 0
+ self.start()
+
+ @classmethod
+ def add(cls, user, task):
+ ins = cls.getInstance()
+ ins.num += 1
+ ins.queue.put(QueuedTask(
+ num=ins.num,
+ user=user,
+ added=datetime.now(),
+ task=task,
+ ))
+
+ @property
+ def tasks(self):
+ with self.doLock:
+ tasks = self.queue.to_list() + self.dequeued
+ return sorted(tasks, key=lambda x: x.num)
+
+ def cleanup_tasks(self):
+ with self.doLock:
+ dead = []
+ alive = []
+ for x in self.dequeued:
+ (dead if x.task.dead else alive).append(x)
+
+ # if the ones that we need to keep are within the trigger, do nothing else
+ delta = len(self.dequeued) - len(dead)
+ if delta > TASK_CLEANUP_TRIGGER:
+ ret = alive
+ else:
+ # otherwise, lop off the oldest dead tasks until we hit the target trigger
+ ret = sorted(dead, key=lambda x: x.task.end_time)[-TASK_CLEANUP_TRIGGER:] + alive
+
+ self.dequeued = sorted(ret, key=lambda x: x.num)
+
+ # Main thread loop starting the different tasks
+ def run(self):
+ main_thread = _get_main_thread()
+ while main_thread.is_alive():
+ try:
+ # this blocks until something is available. This can cause issues when the main thread dies - this
+ # thread will remain alive. We implement a timeout to unblock every second which allows us to check if
+ # the main thread is still alive.
+ # We don't use a daemon here because we don't want the tasks to just be abruptly halted, leading to
+ # possible file / database corruption
+ item = self.queue.get(timeout=1)
+ except queue.Empty as ex:
+ time.sleep(1)
+ continue
+
+ with self.doLock:
+ # add to list so that in-progress tasks show up
+ self.dequeued.append(item)
+
+ # once we hit our trigger, start cleaning up dead tasks
+ if len(self.dequeued) > TASK_CLEANUP_TRIGGER:
+ self.cleanup_tasks()
+
+ # sometimes tasks (like Upload) don't actually have work to do and are created as already finished
+ if item.task.stat is STAT_WAITING:
+ # CalibreTask.start() should wrap all exceptions in it's own error handling
+ item.task.start(self)
+
+ self.queue.task_done()
+
+
+class CalibreTask:
+ __metaclass__ = abc.ABCMeta
+
+ def __init__(self, message):
+ self._progress = 0
+ self.stat = STAT_WAITING
+ self.error = None
+ self.start_time = None
+ self.end_time = None
+ self.message = message
+ self.id = uuid.uuid4()
+
+ @abc.abstractmethod
+ def run(self, worker_thread):
+ """Provides the caller some human-readable name for this class"""
+ raise NotImplementedError
+
+ @abc.abstractmethod
+ def name(self):
+ """Provides the caller some human-readable name for this class"""
+ raise NotImplementedError
+
+ def start(self, *args):
+ self.start_time = datetime.now()
+ self.stat = STAT_STARTED
+
+ # catch any unhandled exceptions in a task and automatically fail it
+ try:
+ self.run(*args)
+ except Exception as e:
+ self._handleError(str(e))
+ log.exception(e)
+
+ self.end_time = datetime.now()
+
+ @property
+ def stat(self):
+ return self._stat
+
+ @stat.setter
+ def stat(self, x):
+ self._stat = x
+
+ @property
+ def progress(self):
+ return self._progress
+
+ @progress.setter
+ def progress(self, x):
+ if not 0 <= x <= 1:
+ raise ValueError("Task progress should within [0, 1] range")
+ self._progress = x
+
+ @property
+ def error(self):
+ return self._error
+
+ @error.setter
+ def error(self, x):
+ self._error = x
+
+ @property
+ def runtime(self):
+ return (self.end_time or datetime.now()) - self.start_time
+
+ @property
+ def dead(self):
+ """Determines whether or not this task can be garbage collected
+
+ We have a separate dictating this because there may be certain tasks that want to override this
+ """
+ # By default, we're good to clean a task if it's "Done"
+ return self.stat in (STAT_FINISH_SUCCESS, STAT_FAIL)
+
+ @progress.setter
+ def progress(self, x):
+ # todo: throw error if outside of [0,1]
+ self._progress = x
+
+ def _handleError(self, error_message):
+ log.exception(error_message)
+ self.stat = STAT_FAIL
+ self.progress = 1
+ self.error = error_message
+
+ def _handleSuccess(self):
+ self.stat = STAT_FINISH_SUCCESS
+ self.progress = 1
diff --git a/cps/shelf.py b/cps/shelf.py
index 0440a87b9..ea7f1eeb5 100644
--- a/cps/shelf.py
+++ b/cps/shelf.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
@@ -22,51 +21,65 @@
# along with this program. If not, see .
from __future__ import division, print_function, unicode_literals
+from datetime import datetime
from flask import Blueprint, request, flash, redirect, url_for
from flask_babel import gettext as _
from flask_login import login_required, current_user
-from sqlalchemy.sql.expression import func, or_, and_
+from sqlalchemy.sql.expression import func
+from sqlalchemy.exc import OperationalError, InvalidRequestError
-from . import logger, ub, searched_ids, db
-from .web import render_title_template
+from . import logger, ub, calibre_db
+from .web import login_required_if_no_ano, render_title_template
shelf = Blueprint('shelf', __name__)
log = logger.create()
+def check_shelf_edit_permissions(cur_shelf):
+ if not cur_shelf.is_public and not cur_shelf.user_id == int(current_user.id):
+ log.error("User %s not allowed to edit shelf %s", current_user, cur_shelf)
+ return False
+ if cur_shelf.is_public and not current_user.role_edit_shelfs():
+ log.info("User %s not allowed to edit public shelves", current_user)
+ return False
+ return True
+
+
+def check_shelf_view_permissions(cur_shelf):
+ if cur_shelf.is_public:
+ return True
+ if current_user.is_anonymous or cur_shelf.user_id != current_user.id:
+ log.error("User is unauthorized to view non-public shelf: %s", cur_shelf)
+ return False
+ return True
+
+
@shelf.route("/shelf/add//")
@login_required
def add_to_shelf(shelf_id, book_id):
+ xhr = request.headers.get('X-Requested-With') == 'XMLHttpRequest'
shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first()
if shelf is None:
log.error("Invalid shelf specified: %s", shelf_id)
- if not request.is_xhr:
+ if not xhr:
flash(_(u"Invalid shelf specified"), category="error")
return redirect(url_for('web.index'))
return "Invalid shelf specified", 400
- if not shelf.is_public and not shelf.user_id == int(current_user.id):
- log.error("User %s not allowed to add a book to %s", current_user, shelf)
- if not request.is_xhr:
+ if not check_shelf_edit_permissions(shelf):
+ if not xhr:
flash(_(u"Sorry you are not allowed to add a book to the the shelf: %(shelfname)s", shelfname=shelf.name),
category="error")
return redirect(url_for('web.index'))
return "Sorry you are not allowed to add a book to the the shelf: %s" % shelf.name, 403
- if shelf.is_public and not current_user.role_edit_shelfs():
- log.info("User %s not allowed to edit public shelves", current_user)
- if not request.is_xhr:
- flash(_(u"You are not allowed to edit public shelves"), category="error")
- return redirect(url_for('web.index'))
- return "User is not allowed to edit public shelves", 403
-
book_in_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id,
- ub.BookShelf.book_id == book_id).first()
+ ub.BookShelf.book_id == book_id).first()
if book_in_shelf:
log.error("Book %s is already part of %s", book_id, shelf)
- if not request.is_xhr:
+ if not xhr:
flash(_(u"Book is already part of the shelf: %(shelfname)s", shelfname=shelf.name), category="error")
return redirect(url_for('web.index'))
return "Book is already part of the shelf: %s" % shelf.name, 400
@@ -77,10 +90,19 @@ def add_to_shelf(shelf_id, book_id):
else:
maxOrder = maxOrder[0]
- ins = ub.BookShelf(shelf=shelf.id, book_id=book_id, order=maxOrder + 1)
- ub.session.add(ins)
- ub.session.commit()
- if not request.is_xhr:
+ shelf.books.append(ub.BookShelf(shelf=shelf.id, book_id=book_id, order=maxOrder + 1))
+ shelf.last_modified = datetime.utcnow()
+ try:
+ ub.session.merge(shelf)
+ ub.session.commit()
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
+ if "HTTP_REFERER" in request.environ:
+ return redirect(request.environ["HTTP_REFERER"])
+ else:
+ return redirect(url_for('web.index'))
+ if not xhr:
flash(_(u"Book has been added to shelf: %(sname)s", sname=shelf.name), category="success")
if "HTTP_REFERER" in request.environ:
return redirect(request.environ["HTTP_REFERER"])
@@ -98,28 +120,22 @@ def search_to_shelf(shelf_id):
flash(_(u"Invalid shelf specified"), category="error")
return redirect(url_for('web.index'))
- if not shelf.is_public and not shelf.user_id == int(current_user.id):
- log.error("User %s not allowed to add a book to %s", current_user, shelf)
+ if not check_shelf_edit_permissions(shelf):
flash(_(u"You are not allowed to add a book to the the shelf: %(name)s", name=shelf.name), category="error")
return redirect(url_for('web.index'))
- if shelf.is_public and not current_user.role_edit_shelfs():
- log.error("User %s not allowed to edit public shelves", current_user)
- flash(_(u"User is not allowed to edit public shelves"), category="error")
- return redirect(url_for('web.index'))
-
- if current_user.id in searched_ids and searched_ids[current_user.id]:
+ if current_user.id in ub.searched_ids and ub.searched_ids[current_user.id]:
books_for_shelf = list()
books_in_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id).all()
if books_in_shelf:
book_ids = list()
for book_id in books_in_shelf:
book_ids.append(book_id.book_id)
- for searchid in searched_ids[current_user.id]:
+ for searchid in ub.searched_ids[current_user.id]:
if searchid not in book_ids:
books_for_shelf.append(searchid)
else:
- books_for_shelf = searched_ids[current_user.id]
+ books_for_shelf = ub.searched_ids[current_user.id]
if not books_for_shelf:
log.error("Books are already part of %s", shelf)
@@ -134,10 +150,15 @@ def search_to_shelf(shelf_id):
for book in books_for_shelf:
maxOrder = maxOrder + 1
- ins = ub.BookShelf(shelf=shelf.id, book_id=book, order=maxOrder)
- ub.session.add(ins)
- ub.session.commit()
- flash(_(u"Books have been added to shelf: %(sname)s", sname=shelf.name), category="success")
+ shelf.books.append(ub.BookShelf(shelf=shelf.id, book_id=book, order=maxOrder))
+ shelf.last_modified = datetime.utcnow()
+ try:
+ ub.session.merge(shelf)
+ ub.session.commit()
+ flash(_(u"Books have been added to shelf: %(sname)s", sname=shelf.name), category="success")
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
else:
flash(_(u"Could not add books to shelf: %(sname)s", sname=shelf.name), category="error")
return redirect(url_for('web.index'))
@@ -146,10 +167,11 @@ def search_to_shelf(shelf_id):
@shelf.route("/shelf/remove//")
@login_required
def remove_from_shelf(shelf_id, book_id):
+ xhr = request.headers.get('X-Requested-With') == 'XMLHttpRequest'
shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first()
if shelf is None:
log.error("Invalid shelf specified: %s", shelf_id)
- if not request.is_xhr:
+ if not xhr:
return redirect(url_for('web.index'))
return "Invalid shelf specified", 400
@@ -161,34 +183,42 @@ def remove_from_shelf(shelf_id, book_id):
# true 0 x 1
# false 0 x 0
- if (not shelf.is_public and shelf.user_id == int(current_user.id)) \
- or (shelf.is_public and current_user.role_edit_shelfs()):
+ if check_shelf_edit_permissions(shelf):
book_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id,
ub.BookShelf.book_id == book_id).first()
if book_shelf is None:
log.error("Book %s already removed from %s", book_id, shelf)
- if not request.is_xhr:
+ if not xhr:
return redirect(url_for('web.index'))
return "Book already removed from shelf", 410
- ub.session.delete(book_shelf)
- ub.session.commit()
-
- if not request.is_xhr:
+ try:
+ ub.session.delete(book_shelf)
+ shelf.last_modified = datetime.utcnow()
+ ub.session.commit()
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
+ if "HTTP_REFERER" in request.environ:
+ return redirect(request.environ["HTTP_REFERER"])
+ else:
+ return redirect(url_for('web.index'))
+ if not xhr:
flash(_(u"Book has been removed from shelf: %(sname)s", sname=shelf.name), category="success")
- return redirect(request.environ["HTTP_REFERER"])
+ if "HTTP_REFERER" in request.environ:
+ return redirect(request.environ["HTTP_REFERER"])
+ else:
+ return redirect(url_for('web.index'))
return "", 204
else:
- log.error("User %s not allowed to remove a book from %s", current_user, shelf)
- if not request.is_xhr:
+ if not xhr:
flash(_(u"Sorry you are not allowed to remove a book from this shelf: %(sname)s", sname=shelf.name),
category="error")
return redirect(url_for('web.index'))
return "Sorry you are not allowed to remove a book from this shelf: %s" % shelf.name, 403
-
@shelf.route("/shelf/create", methods=["GET", "POST"])
@login_required
def create_shelf():
@@ -199,21 +229,41 @@ def create_shelf():
shelf.is_public = 1
shelf.name = to_save["title"]
shelf.user_id = int(current_user.id)
- existing_shelf = ub.session.query(ub.Shelf).filter(
- or_((ub.Shelf.name == to_save["title"]) & (ub.Shelf.is_public == 1),
- (ub.Shelf.name == to_save["title"]) & (ub.Shelf.user_id == int(current_user.id)))).first()
- if existing_shelf:
- flash(_(u"A shelf with the name '%(title)s' already exists.", title=to_save["title"]), category="error")
+
+ is_shelf_name_unique = False
+ if shelf.is_public == 1:
+ is_shelf_name_unique = ub.session.query(ub.Shelf) \
+ .filter((ub.Shelf.name == to_save["title"]) & (ub.Shelf.is_public == 1)) \
+ .first() is None
+
+ if not is_shelf_name_unique:
+ flash(_(u"A public shelf with the name '%(title)s' already exists.", title=to_save["title"]),
+ category="error")
else:
+ is_shelf_name_unique = ub.session.query(ub.Shelf) \
+ .filter((ub.Shelf.name == to_save["title"]) & (ub.Shelf.is_public == 0) &
+ (ub.Shelf.user_id == int(current_user.id)))\
+ .first() is None
+
+ if not is_shelf_name_unique:
+ flash(_(u"A private shelf with the name '%(title)s' already exists.", title=to_save["title"]),
+ category="error")
+
+ if is_shelf_name_unique:
try:
ub.session.add(shelf)
ub.session.commit()
flash(_(u"Shelf %(title)s created", title=to_save["title"]), category="success")
+ return redirect(url_for('shelf.show_shelf', shelf_id=shelf.id))
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
except Exception:
+ ub.session.rollback()
flash(_(u"There was an error"), category="error")
- return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"create a shelf"), page="shelfcreate")
+ return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"Create a Shelf"), page="shelfcreate")
else:
- return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"create a shelf"), page="shelfcreate")
+ return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"Create a Shelf"), page="shelfcreate")
@shelf.route("/shelf/edit/", methods=["GET", "POST"])
@@ -222,14 +272,31 @@ def edit_shelf(shelf_id):
shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first()
if request.method == "POST":
to_save = request.form.to_dict()
- existing_shelf = ub.session.query(ub.Shelf).filter(
- or_((ub.Shelf.name == to_save["title"]) & (ub.Shelf.is_public == 1),
- (ub.Shelf.name == to_save["title"]) & (ub.Shelf.user_id == int(current_user.id)))).filter(
- ub.Shelf.id != shelf_id).first()
- if existing_shelf:
- flash(_(u"A shelf with the name '%(title)s' already exists.", title=to_save["title"]), category="error")
+
+ is_shelf_name_unique = False
+ if shelf.is_public == 1:
+ is_shelf_name_unique = ub.session.query(ub.Shelf) \
+ .filter((ub.Shelf.name == to_save["title"]) & (ub.Shelf.is_public == 1)) \
+ .filter(ub.Shelf.id != shelf_id) \
+ .first() is None
+
+ if not is_shelf_name_unique:
+ flash(_(u"A public shelf with the name '%(title)s' already exists.", title=to_save["title"]),
+ category="error")
else:
+ is_shelf_name_unique = ub.session.query(ub.Shelf) \
+ .filter((ub.Shelf.name == to_save["title"]) & (ub.Shelf.is_public == 0) &
+ (ub.Shelf.user_id == int(current_user.id)))\
+ .filter(ub.Shelf.id != shelf_id)\
+ .first() is None
+
+ if not is_shelf_name_unique:
+ flash(_(u"A private shelf with the name '%(title)s' already exists.", title=to_save["title"]),
+ category="error")
+
+ if is_shelf_name_unique:
shelf.name = to_save["title"]
+ shelf.last_modified = datetime.utcnow()
if "is_public" in to_save:
shelf.is_public = 1
else:
@@ -237,68 +304,75 @@ def edit_shelf(shelf_id):
try:
ub.session.commit()
flash(_(u"Shelf %(title)s changed", title=to_save["title"]), category="success")
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
except Exception:
+ ub.session.rollback()
flash(_(u"There was an error"), category="error")
return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"Edit a shelf"), page="shelfedit")
else:
return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"Edit a shelf"), page="shelfedit")
+def delete_shelf_helper(cur_shelf):
+ if not cur_shelf or not check_shelf_edit_permissions(cur_shelf):
+ return
+ shelf_id = cur_shelf.id
+ ub.session.delete(cur_shelf)
+ ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id).delete()
+ ub.session.add(ub.ShelfArchive(uuid=cur_shelf.uuid, user_id=cur_shelf.user_id))
+ ub.session.commit()
+ log.info("successfully deleted %s", cur_shelf)
+
+
+
@shelf.route("/shelf/delete/")
@login_required
def delete_shelf(shelf_id):
cur_shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first()
- deleted = None
- if current_user.role_admin():
- deleted = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).delete()
- else:
- if (not cur_shelf.is_public and cur_shelf.user_id == int(current_user.id)) \
- or (cur_shelf.is_public and current_user.role_edit_shelfs()):
- deleted = ub.session.query(ub.Shelf).filter(or_(and_(ub.Shelf.user_id == int(current_user.id),
- ub.Shelf.id == shelf_id),
- and_(ub.Shelf.is_public == 1,
- ub.Shelf.id == shelf_id))).delete()
-
- if deleted:
- ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id).delete()
- ub.session.commit()
- log.info("successfully deleted %s", cur_shelf)
+ try:
+ delete_shelf_helper(cur_shelf)
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
return redirect(url_for('web.index'))
-# @shelf.route("/shelfdown/")
+
@shelf.route("/shelf/", defaults={'shelf_type': 1})
@shelf.route("/shelf//")
+@login_required_if_no_ano
def show_shelf(shelf_type, shelf_id):
- if current_user.is_anonymous:
- shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.is_public == 1, ub.Shelf.id == shelf_id).first()
- else:
- shelf = ub.session.query(ub.Shelf).filter(or_(and_(ub.Shelf.user_id == int(current_user.id),
- ub.Shelf.id == shelf_id),
- and_(ub.Shelf.is_public == 1,
- ub.Shelf.id == shelf_id))).first()
+ shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first()
+
result = list()
# user is allowed to access shelf
- if shelf:
+ if shelf and check_shelf_view_permissions(shelf):
page = "shelf.html" if shelf_type == 1 else 'shelfdown.html'
- books_in_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id).order_by(
- ub.BookShelf.order.asc()).all()
+ books_in_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id)\
+ .order_by(ub.BookShelf.order.asc()).all()
for book in books_in_shelf:
- cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).first()
+ cur_book = calibre_db.get_filtered_book(book.book_id)
if cur_book:
result.append(cur_book)
else:
- log.info('Not existing book %s in %s deleted', book.book_id, shelf)
- ub.session.query(ub.BookShelf).filter(ub.BookShelf.book_id == book.book_id).delete()
- ub.session.commit()
+ cur_book = calibre_db.get_book(book.book_id)
+ if not cur_book:
+ log.info('Not existing book %s in %s deleted', book.book_id, shelf)
+ try:
+ ub.session.query(ub.BookShelf).filter(ub.BookShelf.book_id == book.book_id).delete()
+ ub.session.commit()
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
return render_title_template(page, entries=result, title=_(u"Shelf: '%(name)s'", name=shelf.name),
- shelf=shelf, page="shelf")
+ shelf=shelf, page="shelf")
else:
flash(_(u"Error opening shelf. Shelf does not exist or is not accessible"), category="error")
return redirect(url_for("web.index"))
-
@shelf.route("/shelf/order/", methods=["GET", "POST"])
@login_required
def order_shelf(shelf_id):
@@ -310,21 +384,32 @@ def order_shelf(shelf_id):
for book in books_in_shelf:
setattr(book, 'order', to_save[str(book.book_id)])
counter += 1
- ub.session.commit()
- if current_user.is_anonymous:
- shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.is_public == 1, ub.Shelf.id == shelf_id).first()
- else:
- shelf = ub.session.query(ub.Shelf).filter(or_(and_(ub.Shelf.user_id == int(current_user.id),
- ub.Shelf.id == shelf_id),
- and_(ub.Shelf.is_public == 1,
- ub.Shelf.id == shelf_id))).first()
+ # if order diffrent from before -> shelf.last_modified = datetime.utcnow()
+ try:
+ ub.session.commit()
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
+
+ shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first()
result = list()
- if shelf:
+ if shelf and check_shelf_view_permissions(shelf):
books_in_shelf2 = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id) \
.order_by(ub.BookShelf.order.asc()).all()
for book in books_in_shelf2:
- cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).first()
- result.append(cur_book)
+ cur_book = calibre_db.get_filtered_book(book.book_id)
+ if cur_book:
+ result.append({'title': cur_book.title,
+ 'id': cur_book.id,
+ 'author': cur_book.authors,
+ 'series': cur_book.series,
+ 'series_index': cur_book.series_index})
+ else:
+ cur_book = calibre_db.get_book(book.book_id)
+ result.append({'title': _('Hidden Book'),
+ 'id': cur_book.id,
+ 'author': [],
+ 'series': []})
return render_title_template('shelf_order.html', entries=result,
title=_(u"Change order of Shelf: '%(name)s'", name=shelf.name),
shelf=shelf, page="shelforder")
diff --git a/cps/static/css/caliBlur.css b/cps/static/css/caliBlur.css
new file mode 100644
index 000000000..383f7e37e
--- /dev/null
+++ b/cps/static/css/caliBlur.css
@@ -0,0 +1,7979 @@
+.form-control, .home-btn, .home-btn > a, body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a {
+ font-variant-caps: normal;
+ font-variant-numeric: normal;
+ font-weight: 400;
+ font-style: normal;
+ letter-spacing: normal
+}
+
+.pagination, .plexBack.noBack, .root .plexBack, .root .plexBack > a {
+ cursor: default
+}
+
+.navigation li a, .shelforder #sortTrue > div {
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis
+}
+
+.shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2:before, body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a {
+ line-height: 60px;
+ -webkit-tap-highlight-color: transparent;
+ -webkit-text-size-adjust: 100%;
+ -moz-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ text-size-adjust: 100%;
+ -webkit-box-direction: normal;
+ white-space: nowrap
+}
+
+@font-face {
+ font-family: Open Sans Regular;
+ font-weight: 400;
+ font-style: normal;
+ src: url(data:application/font-woff;base64,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) format("woff")
+}
+
+@font-face {
+ font-family: Open Sans Semibold;
+ font-style: normal;
+ font-weight: 400;
+ src: url(data:application/font-woff;base64,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) format("woff")
+}
+
+@font-face {
+ font-family: Open Sans Bold;
+ font-weight: 400;
+ font-style: normal;
+ src: url(data:application/font-woff;base64,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) format("woff")
+}
+
+@font-face {
+ font-family: plex-icons-new;
+ src: url(data:application/font-woff;base64,d09GRgABAAAAACf4AAsAAAAAStQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAAQgAAAFZALE1HY21hcAAAAYAAAAIwAAAHggTr/ntnbHlmAAADsAAAHdIAADS4Gm9wZWhlYWQAACGEAAAAMwAAADZd8KXKaGhlYQAAIbgAAAAgAAAAJArKB6ZobXR4AAAh2AAAADQAAAG0qUT/4mxvY2EAACIMAAAA3AAAANyrgrj+bWF4cAAAIugAAAAfAAAAIAGGAIZuYW1lAAAjCAAAATEAAAIuQUhg6nBvc3QAACQ8AAADvAAACAJxyhF9eJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2Bkfs44gYGVgYNpCtMeBgaGHgjN+IDBkJGJgYGJgZWZASsISHNNYXB4xfiqgPkFkBvF/JKBBUgzguQAGNIL9wAAeJzt1AVSI2EAROEHBHd3d3d3d3d3Z3c5dy7B/j29x1iob17SzCRQmQJIBpKCriAGiQMkhEckdIU1IdqTyIj2WPSDWPgOD+LfPz/hmKBjeB6Ljonh3Fh4xRRSSSM9XJdJFtnkkEse+RRQSBHFlFBKGeVUUEkV1dRQSx31NNBIE8200Eob7XTQGd6/mx566aOfAQYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbDe26xzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzyFV53lmRdew6u98c4Hn3yFPzCF/19ZOiTv/Xv2rXvAorsi0VCTTHdXPGa6T+LJpjsvnmKoqYaaZqjphpphuiPjmYaaZfrt4tmGmmOouYaaZ6j5hlpgqIWGWmSoxYZaYqilhlpmqOWGWmGolYZaZajVhlpjqLWGWmeo9YbaYKiNhtpkqM2G2mKorYbaZqjthtphqJ2G2mX6LxLvNtQeQ+011D5D7TfUAUMdNNQhQx021BFDHTXUMUMdN9QJQ5001ClDnTbUGUOdNdQ5Q5031AVDXTTUJUNdNtQVQ1011DVDXTfUDUPdNNQti+7bbUPbjqFt19C2Z2jbN7QdGNoODW1HhrZjQ9uJoe3U0HZmaDs3tF0Y2i4NbVeGtmtD242h7dbQdmdouze0PRjaHg1tT4a2Z0Pbi0X3wKtFn++boXPfDZ37YejcT4s+0y9D1/0ydN1vQ9f9MXTdt/H1F8kxNhN4nL17C3gc1ZVmnVvdXV397q6ufkjqR3Wpu/TslvppWbJkPbDkCFsPY/wA/AgtAyMxn42dEGYxD+MMj0wsAxttggMBsh8mCx4vAyGBsP4mhHzROJOB7IDZkMxuTDaJ2Nk4mVnNt4OjLu+5Vf2QjEyY+b6dVt1bp6pu3ce5557zn1NXDGHwx36NfYrhGIFhwKiAn3PLQr6QDxOviTNxcEb99Qj86AtfmHnCF23ZvaUj1SLF4Y077oTt/9CjOtjtYSEAqWt2TwY9BqxKq+8D9gPGwohMC8PEfZl0AWvLZRUeEnIMazSJXogpCSXhog+ifp/f56K3IbVjZu+WiVRnd+l5+G2ZhqkHDh0YHBoaPHAIXBXqbHdnamLL3pkd6mfht2Va/dzKMurvKEW7Y9f6tMAuMFbGiaP0M/VMhJEZhWllUkyGKTDdDNPpzuQyooQp445ncjKXybUSMRPPyWJcFrsBzxKl9esMTQomwHRuFsKz59SO2dl3Z2eHZ2fJfbOqbXYWb++bhSmNhlPaQ3pid8zib+nkND2dmy3/3q0Q6vuztLtQ7rMH54WJS27JHXfHyX2lw+Q+mFJPDJMfqu+fK33/nFaMZqZZNs+EcTST+HI+k6Zc9VKuyjEFuVzohUJeSQJle7z2UJuGLJ0G48e/Y3inq2/b6MbWtrbWjaPb+tb6BdHlFAy8zeh1uH2uko0+xN/G0T+vEPCFtfjKCH1lhL7iE3wup8fI2/VX2LC/Wtzvrw9LkfXS0GB4bYMU8q2sqFxkGVkXji0rXeNXHnngxYvVBgiLH+0im/toQwxDyrx/CjnrZhhBYiXgEkbWnc1npLQvBHQOl06yOzy/KP1iWHTClFMkZ0uHWc8wgHoC3nKKorORQVmr1cN9rOzh/ApyLmPExCHtL9O58llZ9jx32ZldWAqcm54mJ6enX1SvgedfnJ4u7ZievtIdnWafWnpmBH+w713Mh2nSpGp4eKScNJ5eunRpSVvLEZRBr+h1kCRkqVD4URqXXxlhqmNy72RHx2Rndwc5W6Y7ejpKbzxG2FB3u9eurO1ut9hs5PBsqSe8NinYmvQb8OTBqgxrvOKYBqYZG8+gzGdyEnjpXGoqJEvnUlMgfm8Y0r2QTULMAaznHLKA9JTeUBL9A18d6E8oVWJW6d/cr2gZ6ynlyA9xNW4eXE9LrB88USE2KQOJxMAmmtVkKY76wkhnnwcJvgcxWK/+pfrfYT27oNpUGywu77M+v0wcVQRdq3QOsbk3WM9SgF2YXrqAkoFsZT0zqo2pydf3UUc6sLmCNuluScmwmMPiucNvw2eWAvCZtw+/iFXg23/xF1q+9FvarN4/0kN6GDNeeH3pfDYRM8Gp5p5mPGAxTE/NlXbeYv+O4TXdLhmFOB6SwMp+ruBXCrJCijCjvrdffU/LYGZ/zxtP9DyBxxs95L5z6sl33oEd52CHuvu2Vw8efPW2V8u80etkQKhUCYv7V1bE/kw9WXmfvmIsj/k/lXnlYYIMU5BEifILqHxnlILCKSBiVlDeIiOlb7MByr6laXZg6cxr3756f3T/1XBWO93cezPrL/WQA6X3N+2PHtgEHnwcOXB1Zcy/ZH/JmKjeB8nP+Qt+QdIrP65+88GzXWcfnIdR7QzHtRMRtFNt7p/COcX5BLfslnIohm5JJN3H1Mdg3zHYB6fKhPrYMcZ46RKW/5/sl3Au3EwIV/QYbTXt85pkKeGvEGwsoSsPvIKyRayJs4gyXhC9plhiHci0JJqbbJ5qmoz+xvdhyen1OtWbmnfCzRp1yliiZ7KV5ku/6h4YGxpQ8Dcw9LWhgURTMnneITiu4x0O/roKQS4E5EDmfsxaIRaMBfEoHWmovtKUGBgav3Zkww93WhwOy06H134dJa6zex3L1ucCcphqMgZXRZx2jnZXQQ7BomqjS0MXvsAMTtzud1u6W/AYhgfV25kaNlhAHR1i2it6WrP90SoeECoCLcgxk+j2+rohnc+5swlYfGClbadUvy700yMOUXTQjF1YWUAHBCWP3i8SEh3qCaqfYcohLpPLBU03tzJ9zCD2yx+GCHAOcAKavxRQQ2gEP7/a/VXL+gsK2V5PnJY77rA4SX2VKn1Ain2lE+Sd1Z79LGEQnc8/7xQNiSoFC33zfbBrZUmNupdM9ZW+SoKrPCKxlZVoVD9WtEz3LOBsuKiES25hhTJFc3Jx8OADBwe1jF7SWR0qXw8erNYxyU5eqY7J0lBxWR14SV5Tn15Rh6EsC0+hHpCYJLWCbir3yD66TCJU8nHyce3EEjkBl6FbVmSh2gQ2p6DtSYfB64BYEhq8zx00ODkIcE7Dwee8DQ3epc95Gy59m9357Tv/8Y61N3Z13XiIZltr9oC8JYYeMZrNxkdCYukbYigkksHS35L2x0tfLhfG7JxSLq30V/q83J4zVHOxbikIZS1GulE7bDmmbqEn/UJXFzThEtEopspDfS1Er7ASAFUWp+mvgrKq8MMTW773vcqxuuCrby4rskzep3EENkToEl2HArbtpyPJINjLiWHwZ5JEEcPEn0nQ3ig+P2pBSSvz1tp8Mg7/rTT15n7LuuaBXbZxfsNM/8T91/JjfCF3zTZvOkYuqC6bhbQvTYMaWZ+/Cs6WZpvXWf5szLZ7oH9mw6Nj/LX3T+zbtjWX77fYF0vvR7LkDYap8XcaKTvKRRwtxCfoEXyCjhz+JO1zVJfDPvIfcX7N2AOBCaCekvCeXMjgXPSB3wmYyUoh44/34YrXMkVWMrD+TO6Gn1nbTdIXjTmL+OAtvrpb/OpbxrzVC2DKWb3h69vPwFXZXQ9kh6PR4ewDgquurq51Q/Z+r0SzA1ls36aPn3xdky8b2hMfokWJSaBe6mCyzBq9J0ZMca0jtS5RKl5AWukj2g3MkIhj1yQOzfx3sHuQPZO7Xv0K9kl8DXsau5327r/QPqvraO5+inZ0lJLHKaW+d0PbGTDnbmjDjmezE8PYT+/9ev/LVBNmkteO4/F6cWSSRKkDuVxOl294i9yijUXDOMg1Dv7UkDaEDWkjrfJ32ewyfUTQYjOdBaplYRh9qFJ+lpw9N8s+pRHamrn0f7HsP7BPI2eaEG1BEnoJqgrUGWFi4njoBc1b4UxOzWehq8nnh39St6Qkadc9d6fGxlJ337NLklK4KvfFwjx/VWsymW675ZaR4cFszMKHYmPwbOquu2kRLIsv3X1XSj0LW2M3tKcGbDaHK1Us9hnYtJRq3yUhPq715yO9Wa3ZVWqvyf1OdqfGK7uG1VDhGemKFFHxueNazu5AND+lvg/hEYTqEKJeYDcF+MN4b3EYHY/nZ7W8VmfF1t7K3PaHrG1hHWRzFM33wQrXL0X0BZdQZBPnIJS3/oJeIoPLEgdMlYePRgrwERYBxDOc0LkGOj/OYB8mvMlg2GgyOS2cGYAz4JnnzWY+0CD6eLNot7nDYQdnUq5uNJqsNl7g7QErZ7IYWIvRQDgDZzCO4MsCS+Dfra75li6EKPhoOWADk8kq8gbjRo7zBlyyJxzySE6rBRs2eXgzAQCWtbpsRtqYyWA2GFgch8FoMRicHmcUSxqNI/hqMmA2B+HGCkZ8mX2ZalMeUPD87MtqbxF2qU8XYRFeL6pPI1XG6dv1cgLFD1xaewi7lherztUHOFfNqI/zKE2XIUTNCfKvFjRRMmgZKVikUAxh+J4bCmvWFG7Y8/MKsX+V+MlL27c7pbQsp6XtK8pqxPbV4ih/D3s/G5Bj6Zi8Ura6mGFm7xVki6VWO5elYpRkNRFqBSonDlaTkhCgT5vUkS6CX66AZcuSh38ZOmAqYH6fuKogzZGeEZQGzuyrD7nq6q02q8NqbQi6wvU+M2dh2YsjLgEFTXANn2NZMx902hwmEx52mzPIcyx7BXu5BVfQ1IjodYYcrlBQ4GwGFBBisHHeupDb0eAUvCPqLyZ4yYvSFfJK/F+PYIV2p58zUkECXPl+p8Nho7rcrvkGdF5taM06mHXMBmYbs4v5NDPF3IJr8gDzOeScjmZ0ZMPGNJdahzVCJ/UAZLRzXl8GPSUEQjQCseIFjsJvOvdChhbW8RKu5HzGmIRW4DJSQeakHKedyimeiSHvC+RCDZANrdmzZs2e/TQ7xdtalmb8LhhX/3MsZePJT2JdsVjXEM1isc7Ooc7Or0AwbuOXBnhbPMjeTazcp07OlKZObjvJ/tnu0o9PzpwE4ZmZZ8CDlNoOvO0QLNbQoJovN4QZecxmfu2kyjl9LakocZht6ovlljB7izY11Mn2x+ue4W02/pm6eMHEPfPMM7t3P6P/bPzuQ2Xf8tIlOqG4ejKI4EeYceRrL0lT2ECZ0woobyymso+FAsli0lytDAimmCIgQ/Os7nPRMrkC8rcghUkhSZDfHLiM64ufLa43+mhXfMZCm8zGG2weW0OcldsK+m1olpRJRYKGeP0gPsJDTE1kjeoxY3ZiAdMuvGADXXsKhT1ddrcttzOkfjrUauqn7/ZzrSF4PLQzZ3PbS8fhqMOhHhaCAYjSh1vMdrv5l22bkslNbT9OXt3WdnWyFjP5gBzQ5CtBV2EFD6MQSVe8gMXalKrP1WjWVaPJgdpMrJbVfOVJdpj68oD8bYVcRuhFgyDgKu4GUcZ1nlDgO3/MCta5w8eM4ZDhri6j2zJ3z04uVG8gz6o/tdhH4A6n1eFSjbfx1pGXHGaHs1b3UfYoRQUCaG54EY6jB78fYfR+uGoOrqqV24K+iAfRojtb4EHzG1ppwBYneM4JYzDmDInn586LoXnwo+c3pr7gFNUPxNDFi6EaH19gv8XwjIxYC9EKah40ZgmFTeSQYShEFIY7SEwBUywFiWxBUAp+EWEXsRdVM5j/2OzjfhxYd9O61NbIhcJvrX3XT6fUjY4WR9jh6C+m5+bS2N/iW5wPS4KZNKfyWDYurf/R+vRYMoAlsWCLg7BzaSycnqvFf3fS8btx8Dy49dAvnDoGYfUEEmHmsnI8oXzSCk3RWDEiBq3cMRrLK2G5/8W24AiZgmbQqabtBb8WwQuDfnCaHefS8c6Xg6Gs1E4gHq3vj9mvG9yw6dpHEq2bw5IEbFMk29gIpUe/C2ZnrGNT03DQ62FH75BiLLt7EytHYtd2bEo3eR0Eqv2j+I4ReBo6XTqph9BojzU7Gl0RH2UgI8rxclpOk9cuXlS/oyfyUI2G1y/SH9munao8eZlcqNpnpWZu0ScoW+oy9vwW2uflsSLQY0Vo0fVY0dKd5WAR+7J2Kv2gEixiy7J3lOlBfHUHReeixkZWM1yil5o5NHblMDTawCRBE0fZzmLehyKak7gVNlH00veJZvrSvYZCL1lhP1l3nsoieajI+VrFus7WRofVbTSxBjRujal8WJKjg5IshQvJuMOG1tjgsjoaWzvrxVafuQhtXyJOp0OOigmpwco7WIRFFks47vf6g/lsHisLWS1Wk8lg560NkuKNyg7nQKAuORlhJ/PA2i3WaHNHnS8VlGKBQF022JBpl+0I0Uyc3S63pxuC2UwwGg2kfPWdzZLNYmchnz4NrNHJB6ONXk9cqG8QmpoEf1OjE1uwWMSGWLOf3mmo9zZ6xMZIkHcaWVC/A3aTHLl8HuNQoJ7BojZ7CKDmK0iqMg+fJzu0GFwdjYlqYakwFGImHd9KFQLauie7u6/pmm/upgSw5fOidoa12lXlqMZaL6B+4ah+ATfCLfdF+Mbo6Bx5TX0b2kpD0HZZTISWxGKAae78efjp+fNYlsZAqrj8ZZQZXeaFlfJOAwk02LFc1tmjoyUPtM3THwjEXvo/8Lrau0JHEq1v8+S1IhtV9zOX9xvcNJKZcaPsbxsdpfEYaFPfpv0vxy8/qPbHSfVoHLUI/StgUjAJRjfUkb8ppWn6AeFKH/6AUvvUe4rjT2p/6sKH8I81ffwy+zgzgxc5P5eTTbLDiJJtQjkLG/3pjD9aSGd6jYU84hRcEfSIKXIugm6TX/co3JzmRzjQgzWgC5vQVgBBvVvIFXqNfUCZ0WvmrH6fx86D9uMd6MnYOG47ND7CcTafV3Ca6X2zzWzxo+fAXfgnpxALO7wh3sQCISZzneCQGgVR/Wf1n81OwSMqLrtoYymEI3Z/JB4XnKz3wdOnHwJitnt8fqzirrs4zhrweWzUZyBmm8ePd82/x5s+L29x4t1RvG9zWd2tAUFwqosOr8fX5LILNoKVAmvigm5nLC747roLW1QaIz47gars6Dw7+P+Ra3IOfXD/vxHz4N3RltRt6X8THqqJN+OFItRs+QLy0o2Iuw9lWaa6F71aqlK7KW/dGn9jVX+VopZ0Xnd80dbH09TzMHGUf/iIjY5t616TcbgsUjgy3DFGV+FY7upYVLG1ROPXdD/3nLK2oU62tSut+zaqtvRoNBz1+qLB+jXx595pUq5vaPRdlWiSkQvkrygr2jLJbfW7Ogup0Xhb8+b6fYV1eZAT8vp4x4Z4c2y05rt/i30C8Ug/M8pcU9ZomqfE5jh/TkpToUALQ22MkYu1gpjRXade0gfZdTjxxhSd8AINhRQy/oqXT+K56Xx2uvAhqpK/wan2i4JdnwmHIPpwfvpGqtNJ8OfwRxpxMksf9hMXJ0duzD0qJL3edi/0jG8a2zyxaRweuuL8jl5htkrHX1jnMjYom7+yprNzfzpdHu/ncbwJnLOb0S+i4+XEMCBex+nLhRGB5XPZhD5TuSydPIVaQuMytuCkSjFuxaKhEHSVdVBlxmfkSDyxvjuteFrFaFhOBAKN0VZnRAi3rE0VwElZNZPH+VbTZpNt5XoRRdsKZumy7/Bpsk94b7soIpceDjWZwShH2jpdBd7qQ750Cj7ZYmsLJ27/1zNQbS4zDn+8xruH2c+jjdS/qkWYOJNkCsx6xFuo9fNpP+a+dFyjI8iRnC9doOi48gR0bnh9VcJYIc6PehQPJhgd9SQ8oGVd5XvqS2XT+Wk8b1m7tvSKfibTEFR/bVpUfw1B0y44rU6YTBfuu89kInWYL6oTcNqk/kY3sLo1nuyeq9rbSmzhm2iJ6Eg6URbKkQWlHBHhyt/2K9coFAW3AmEqMwp6xQiTIrty+XxuV35rsrMzuXX7YFxR4oP5rqgkRbtK7xZR+GeaksmmfKixMcR+c+ttt6sXb79ta37j1C0Lt0xt3L5mbOLlibE1+fb+wS8P9rerX5ufLz07D+b6bcVt9XlX94ZuVzWGT3YgfjVq+wQ+0o/0ypbg+Or16Doryio4ZlGLN//BEZKHP35MyicZgm53Xq32H9uQc0b9ewOFwNzc/HyR3D+Xm6scZDutZb647BZWYS7r3I/uc2ByFNfQr+L0LIkSXHaenWUXSnn1/dlZtGNnV6denMHfRUywr5It36PB0W/oAt25QzfJZHiEXZlbWO/0UoB0v6u+r77/7jE4hUiKfrNVfwEh2FfDKQvsB8wEw0ixippgtZhnGaRDORaV1uB4BApuqVDeDhMrQ3YiepchflxdsGg0uuvqor3h+IberOAOmCwGo88tZKXY5tZUOrknlU61bo6ZH1Vvf5gNFsIxWboqJsfCazoUh81p5oxuqyPehjC7zecR/AAGo2B3t68dikcH5Y50TEp8Sm7aGJUyHq+F53mvOxPlaVWGQCNCccTiDntjew6heK6uUQ50+Oo7mqMIxQ2onmYZg4b1FhATWhkX4uQm9CzFtP4hRZTcKFd0o1M2iW6MFjrRwo9I0xic1MJOqn9kgp8u3dgWOT06eHAoNZE6Pbp2zZ7iwd2TY8kOdvK06Y9K77VIFOpG2kaHDg6OYpGDxT1r1o52JMcmmWXtW1BGgoyit6/5Sn+g+em9ux9uav7Y1pubHt69d/rKrVfmfJqdpt/2BRq25alTocC5HehRv48ZhHfQ+Dpm7PQOKjsrHizHF57Kng8QpXWAkuzGpH8t1RP0T09/MAPXTC//5hrQvno7QK5tS9KGR8OfwK261YUc6jzUd+sNO3OFQm7nDe9RIi6Dq7j08+amoQ1Pbxhqaq4S4JLj1VKUuLXvUKf6uyLZPrGiHCWq/Pg6+wUtPs0ZkRNfHIEX4NSd6gn42zsvkl+NlL7ELO+/jclS27zsWy+qKMSU+QIudB8qDtTNuLJNnJ9T0IDLuQTdzZFAtQJTtS+vbzoSt07dunbo2NBaPCccc3OX34DF2nfX6BVLVW9Ux7KzHAcBbc8GOos0+AHhchxk6vJygl5sViuEBRZp6EQ9oclKWVbf1b66sYgUnQRnTfsiAlYaHNICJVrEqw96SVlFCH2EBq8RS2ZENnOP0cThKjWYTbzTxLJw6jEDMeAtg4H7yQt/ZTRybi9vNPAOA/vSZgPBa7PBYPoJdKiXOI7DNUtYq9loZsmL6pSZ5QwmlsA0CfBmzkKxGevgTaWOr3KsiTVS+DFdw45/zz6MK0xh1mq7GVC2TF4/CnEBMVC+EFfySdIK9POYdp/CARqtz/s4kd7SA1zQi8OpRJeJYUur+uW6OjAKmYD6pp838uxXANyxVv8jufaOBu2ZoW5jEG5ucNgOBmXCxtXnXK2u/+10wrXerujVjZnMxkyG/aKZ1rMxqP5esPDQGWhw8M99yd8muVm7g9YyUqf+Hqu6uSHVBiZWDr7RncB6sJo2J2wVvbCUHcniUVuHR3HEPPVZedZtlEUcYmVTCrxOEurTpfeg6wL89ELpR5G2tt62NvZo6T31aZKAXaO/UeO/geP0Zm9btb7Po+2SmRT1G3JJksvoso5n9KwEXeRD5QWQQ9AtyijkdDceyxX7buoezV8/c31+tPumvtFaqLT0xJPoIj9ZPGHdfHAgf30ej4GDm63ErEVbYxf1Eyi00PiTTO0b/T7UMC4N0bVif+h2OGwOOL+scHhRG6i2SQnoztVyd9h7S0d6euB//IdH17z4EuHUU1IyOZBKEV9P6Qy5a+mx7iNHuo/cS+5S3zt7DG768r9/iRb6LrDJwSQe6h4y2KO2HTnSc++9PbQrxvJaqMQIgkyIxgh0nSfQPVwyNp3R9iTKGZnu6oLjZHvpWZrmaLBC/RONBRtN9t/Rey+Nw3p6jGsjHh+v6tWjWht0XwJToF/2PzLWIhtd+jnZfubV4fPnyUPqNh2C0qjH02de0W7th6sqYNKwrM7yfg0a2dDwh7ZTLyexR5d+TqtcmYrj8+MQGB//3Hw5Rrm8Di1GKeBY3eUENDZdTsV5PUzTRrdDVRJ5bV610QP+elw9So+KTtVjN9hGn7a7CIrpIkmUnkWFXZwrkgsaVeHN4+jT0u+DiLjil5kPbaerstonQzZTEwtY1MwhNZq/qhC69aQG8kyFOPLK+Ct4jK4o96uqIT2z4gX4U1r2lcv72P4v6iOdj0/YNypMn7Rn4zX/6PL50/fg4iyWI2/InitFnSmwbsO0qCFfjWzTsPQ8guF59W39Wp90/bSonbBZU1VHpZh1zKeYbcwe5lbKmdXMv2Y28M9fDsFX/2Rlub0VC3jVS/QL4wq67NWuKA6PElgJHpoT2ZagGHDzzk/xVpPYEAgF6vwBm33b1OaJg+FMbyYSwSz8dji7LhvWMnVbjQYh1BLCo7dWsrgScQz8SSaiBOrDUbfs89fZlHikwef1ILLt9Llfi5SrCWcj70QyESjXEllOi7T+0F/WipZl64mybKX+JbJFwQnC6E8mXSOvx4+c7v9k4jV7oH8UUomqrtblS5etavwUcDYRCdENrQVj+R76O8/qunHp9QNrDtCjCw/2tNoLr9PbNKQKoN3Uj/+KNy5bXx0fu0PgcsYUZPotDBY/OuLdq/BlHlXy3EcHvApb5ue1zy1lHhxFfGhHP1LU7QNon/UlUdu6l6N7WfQYtJ7gG2h04ap0aShNvl56Dy314dHz+Mc+jmY6Mrr05+zk6OjSh/jsu6Svkqo+t7Y/dx0zSlspf07BEWcKfs1T030xju48SJTdtVaI6cFRE912QB1Fic2hBafrRfT6/Oi2lbcShF3BBqvVZrdZ64PucJ2P53jWANMsazbX0R0ERqfJ6CjvIJguHYZTwy6hpbvF6yJnK3sGvJyV7gUgRqvZGwy7HCGH1ws2m9Pu8iGcB2BNJr/L7rTajmvm4cSERRLCLS1hQbJMLBufV9sFv9p/MvhX//eGQ8W9Xd3dXXuLCxXi0OYVm+EpwT61ooRGzH503/yKvbramlt9h8dqHovRLVOcstqejb+j/6rzOv23nioBz09fvMJWDNveFSUp8SxMXaQ49/8BpNYsdQAAeJxjYGRgYADiiP+bwuP5bb4ycDO/AIow1KhuaIDR/7///8PWz/wSyOVgYAKJAgB4YQ4WAHicY2BkYGB+wcDAEMXu+P/7/+9s/QxAERSQCwCRJQZ+eJxjYGBgYH6Bitkd0cX+/0dXgxtTovb/dwimxOz/f4m3nxw3o+sjpBebPLn2QTAAzW56WAAAAAAAKAByAMwA4gFkAYoBrgIOAkQCigKeAroC2gLuAxgDNANoA4gDoAQUBDYEgAT4BRoFPAWWBbwF+AZGBoYGxgcsB0AHVgeeB8IH7AiaCK4IwgkaCa4KYgreCx4LTAtgC4ILzAvgC/QMMAw+DGoMfgyeDU4NYg2QDaQNuA3eDewOAA4oDsIPaA/KEEIQ4BFIEZ4RwhH+EiISXBJ8EvYTNhN2E5gTshP+FBIUZBR4FIwU6BVcFYQVyhYSFkQWbhaQFrwW0hckF3AXrhhSGKAY1BkiGVgZyBoMGlx4nGNgZGBgyGWoYuBnAAEmIOYCQgaG/2A+AwAhDAINAHicbZE9TsMwGIbf9A/RSggEYmHxAgtq+jN2ZGj3Dt3T1ElTJXHkuFV7B07AITgEA2fgEByib80nVUK1Jfv5Hr+OFRvALb4R4NQCdP14ag1csfrjJulOuEV+Em6jh2fhDv1QuItXTIR7uIfmF4LWNc0D9sIN3OBduEn/Idwifwq38Ygv4Q79j3AXC/wK9/ASvFW53vez2JT1XKfbPLJncaaFtnVmSjUKh2c506W2kdMrtTyoepeOnUtUYk2hpqZ0Os+NqqzZ6NiFa+eqyWCQiA9jU6BCzr/bo48MMQxK1JjTpNhyJYK9mLjkFjSWc+ZrhRFC3uel5Iym9OkIjvOK6SUOHGvsePKY1iFhnTBjUJCmfu8pnbMbmsqvbWhi+hBrv6viuw3Yk3/50J9eHAECqGR8AAAAeJxtVWdj2zYQ1UtHLNmWbXnFTUe6J9t0JN1N9957txB5FFGDAAuCspRfXyxSlGt+Ie8BONx7BzwOLg3CMxpc/JS4hDtwJ+7C3biMDQwxwia2sI0xdrCLPUywjwMc4gjHuIIT3IOruBf34X48gGt4EA/hYTyCR/EYHscTeBJP4Wk8gwTP4jlcx/N4AS/iJdzATbyMV/AqXsPreANv4i3cwtt4B+/iPbyPD/AhPsLH+ASf4jN8ji/wJb7C1/gG3+I7fI8f8CN+ws/4Bb/iN/yOP/An/sLfYJgiRQZCjhkKcPyDUwiUkIMR04bXJrlx8/rlKZPuvZUyQTJj2gXDVPCqdl/jbK6TmjSnXsjlTJALR7kSGfklo1LN46Rh2dQ89WBVKKM8uFUJWiRpQXOt5LAu1JmH98PXVCuWpSyUtFUbW0amfDD2AZWVWbpw24d5I4SL9sw8KVVGCUkTytjtkAUP/FiWufeOexuVVIItheU+tHS1CSP+S6tG+pnbTDKxvG1J+gLZnLktU62qpGSL/2Pc6zdKWUmaBSkLJiWJOkqpai/WYarKikmuZOKZstTwOY3X0YkT2C5JT5NCNZ7S4QqyezUmiHy8QmuqmGZG+dkblAXik5zNleaGVuLtdVAr4DDnIuTbKEhUvvqimSaSFqYLKk1zP4XLXPkPv61LWDJ9SsZJ5cqxyMEKEUvN05C7VNpLsC/ZfGqF89R5KGonYlMWcrZxocq1NTUZl9Yn3K7YjLoiQ9RWOalI18q20KnT+I5uuKb7XO7DHhTboMoeGJ9rL2K0sG3w0w8j4kSqU03kG3wc0UjL8JKyfk7bG17y277mnRaLvNu4rXg3xhVrwtlok/v7kpiiKad1f2FLoIsj2TbRvw011GejqSJm+mwioiQFlQJaF02eh8t80EKnvOq6cdwHc6XPmPasTyI+5xmptd4ctSNKNLaDBZ8V/TIiLNTZBWjJswtQleehzfHqBmU02ZtTWssKbRhpEtZD/HJNpbKHPGaJyw/OoTKusr7l6W9qUro1s5qYTotgRiQoNWGTrT7RSa2sbbA6tTW0ZuGhjPrYyDqWaYIHGjZLWGP8Jdq0wSzOOTZKCX8xrElVqnPCK33cLmNi2pRu4Oq5gVYaX0Q3ps2Z0r6NkxZLnaRyDcrIMC6CeUao9ZCjFrA24Qw2eunJOXglYpdhpkMrOwb+BBttdwoSn/QHyJGYxZ/KtXYkps21KtcIdpvUS+l/M0Obt/bdGjWy9aZxI/ut2zljxnZUsPijGAz+A8Habws=) format("woff")
+}
+
+@font-face {
+ font-family: plex-icons;
+ src: url(data:application/font-woff;base64,d09GRgABAAAAACgUAAsAAAAASkgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAAQgAAAFZALE2vY21hcAAAAYAAAAIcAAAHPPbk4EZnbHlmAAADnAAAHjAAADToXHMrbWhlYWQAACHMAAAAMwAAADZfMaXKaGhlYQAAIgAAAAAgAAAAJAwLCDBobXR4AAAiIAAAADQAAAGgmaT/4mxvY2EAACJUAAAA0gAAANKMfH8YbWF4cAAAIygAAAAfAAAAIAGBAOBuYW1lAAAjSAAAATEAAAIuQUhg6nBvc3QAACR8AAADmAAAB6r5SxTSeJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2Bk/sA4gYGVgYPpGNMeBgaGHgjN+IDBkJGJgYGJgZWZASsISHNNYXB4xfgqm/kFkBvF/JKBBUgzguQANxoMXwAAeJzt1NVy22AAROHjxGFmJoeZmZmZmaHNm+sBepv+q+1jNDOfTrwj2clIYyADSA/6giSkdZEIv5FIhTUR7+nkxnuSP/E5Se3R989POCZ0DK+T8TEtnJsM75hJFtnkhOvyyKeAQooopoRSyiingkqqqKaGWuqop4FGmmimhRSttNFOB5100U0PveHz+xlgkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgM3zqFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPAY3nOWJ57DO73wyhvvfPAZ/q1M/v/k65BR/u/Vt+68xc9CmqGmm56pKGl6OqIM0/MWZRpqlqFmG2qOoeaansMoz1DzTX9dVGCohYZaZKjFhlpiqKWGWmao5YZaYaiVhlplqNWGWmOotYZaZ6j1htpgqI2G2mSozYbaYqgpQ2011DZDbTfUDkPtNNQuQ+021B5D7TXUPtN3R9RvqAOGOmioQ4Y6bKgjhjpqqGOGOm6oE4Y6aahThjptqDOGOmuoc4Y6b6gLhrpoqEuGumyoK4a6aqhrhrpuqBuGummoWxY/w9uGth1D266hbc/Qtm9oOzC0HRrajgxtx4a2E0PbqaHtzNB2bmi7MLRdGtquDG3XhrYbQ9utoe3O0HZvaHswtD0a2p4Mbc8W3/cXi+/pq6Fz3wyd+27xvfswdN2noeu+DF33y9B1vw1d9218/gXvgiTueJy9ewt0HNWVYN163V39qf5WVX8k9ae61F36tLql/pVtyZJlCUtG2JZkwB+CbYJkYGTO2tgJIYudAM7wycTiM3gTHAiQPZgsOGwGwgTi8RJCTjTOzODZgJmQzC4mAzE7G29mVnM2OOry3lfV3ZKMDMyes9Oq9+rWq1uv7rvvvvurJ4Zl8Ee+RZ5gOEZgGLCqEOL8ilDWyjFWtHE2Dk7ovxmGv/7qV3c9Fky0bd/YmWuTU/DabbfD5n/q0T1kc0wIQ+7K7eORgAU7MPo7SwLYH5OS/bI/5U+xd1X2s3fBpH5kiP2Z/u7pyk9OUzS2ivsEQxg/wwgykYFLW4m/WC7I+WAUpsmW6bmjZEvg15VfD0lemPRK7MnKfhIYAtCPwCmvJHmbGca7oB+OceG1wISYRibOKIzKtDM5psBoTDfDdCE9glIqWLFwCIeqcKl6VhfcL110JmfnwqenptijU1PP61fCs89PTVW2TE1dqsWEyRNzTw3jD3a+hfUQLQYXhoaGq4WSDhcuXJgjH5APkGImJUqih81CsRe0cgi5t/DKCpOd49eNd3aOd3V3siercGdPZ+W1R1gS7e4Q3eqK7g4nz7P7pys9sRVZgW8xG+DxvQab6rzimCamFV9ewDkqlGQQQ8FQMK/hxBfVtJpO4tTbQmIM8r1QzELSAyRwGlnA9lReU9P9q7+5uj+t1oFptX99v2pUJFApsT+b1vn1A6soxqqBIzVgnbo6nV69jlbGuA1aUuQsY6Wz7wAZfgxJWKW/ov83WEXO6rzOw+xCms35ZVKSXKKyRecQX/caCcyFydmpuXMoGchWEtil87X+2R62h7HjhRjMl4vppA2Otfa04gGzMXpqrcnhKfL3jMNYA7JVSOEhC0QJcVpI1RSVnYBd+tu79beNCnbt7nntsZ7H8Hith73rtH70zTdhy2nYom+/5eW9e1++5eXq2Mw+GRBqXcLs7sUdkV/pR2vP00es1bH+p+pYA0yEYTRZkul4gcpnQdVUTgUJK009xQ5XfkDCdPhzU2T13InjP7hid2L3FXDSON3YeyMJVXrYPZV31+1O7FkHAbwd33NFbczvkfcYG+OmYw5xIS0kyGbn9+vfv/fk8pP3zsCIcYb7jRMrGKf5uXsC5wTnA/yKXy6hGPllie0+pD8COw/BTjhWBfRHDjHWCxcQ/x/IwzgXfiaKK3IDfWs+KNoUOR2qASSZNhc/XkGwcJE4SiijmiTakumVoFDMbigVy1RTFMwnfgJzXlH06je0boUbDeiYtULP7FW0nnu/e/WGwdUq/lYPfmtwdbolmz3jETzXODwexzU1gD0XVsKFu7Fqh2QkGcGjcmdT/ZGW9OrB0auH1/xsq9PjcW71iO5rKHCNW/QsWF9nkcNUEzEo1SlKHCVXRQ7BrM5T0TaFL7wLJ277W23dbXgMwb36rfU+PsA+RORUB/IpT9emj7IgQZnho2wRagItKEmb5BeD3ZAvl/zFNMzes2/PwODgwJ59+u9qUL8p9FPDHkny0IqcXYwAPgpVAiZdbFTy6EeofoVJj7RALs8aurWd6WMGkK5QDOLAecALahZyoKGWskLIsVT7krghTWU3N7Je5223Ob1sYx2qfMBO9FWOsG8ude9XaYvkffZZr2RJ1yE42zfTB9sWYxrQHexkX+WbbGSJW2xycScG1I8dLbBNZ3E2fFTCZb+wSBmiOTg/sPeevQNGRS/prA5Wrwf21vsYJ+OX6mO8MjixoA+8ZI/rTy7qw12n4+PsGirwAurEglTwp9BicYVSOysVUiVFSikSLhIFbyJsXhdoUbEAltPTEJs+rXdOT781PT00Pc3ehZp7ehqbd07DpAHDMeMmPaE9xt/c0Sl6Oj1d/b1VA/R3pym5lqr8PoG6S2aylEI/Xas45XRpx+lqRYHF9Z5MlwRUHX5FVYQ6W5BFKtq7fAxEDySz0CQ+s9fi5SDMeS17nxGbmsS5L4hNF35Atv7g9n++bcX1y5dfv49WV83bIPaUFH3QardbH4xKle9I0ajEDlR+znY8Wvl6FRmr02oVW+2v0bzQh2CotiV+OQJVzct2o0bbeEjfSE/mhaniaMFlbUDzfo25fhOXWL2AapYzdK6mLrlg4bGNP/5x7Vh6seqvL0BZsEancAQ8IyHvUXcI+O4QHUkhC2pJikGokGVVKcaGCmlKjRoMoeaWDZxTK8rZFPxdZfL13c6Vrau38aOONbv6x+6+2rHBoZWu3CTmk+w53cc72Y65KdDjq8qXwcnKdOtK559s4Lev7t+15qENjqvvHtu56apSud/pnq28Gy+yr83LBKXNgjIdYVJo1T4FRfApCNn/ad7PUfsDO9n/iPNrRwoEJoy6VcY2RSvgXPRByAtYKapWCKX6UEsZlaqoBVh1onTtr1wdNvlr1pJTuvemYMNNIf2UtewSAWwllxj7TMcJuKy47Z7iUCIxVLxH8DU0NLSvKd4tyrTaU8T38+b42W8b8sWjDQziSpaZNK7jTqbILDMpsWJJGYTMk0ShlIaw2scaDVghkELSZA5dkx8ieVA8UfqM/g2kSTqOlCZvpdT9BaVZX0lr/xOU0BEK3k8h/e1rMyfAXro2g4QXi2NDSKd4t0l/FWrBShbdOB5RxJHJMoX2lEolU77hFHuTMRYGtAK6IgUO/tiSt8QseSvt8nfFomnHbNOkzMRQU40jZrlgrAWRrgUlqeI6oGagjAaBTnxq/maSXhfpQrF+/DOWN5f3bRpZ257JtK8d2dS3IiRIPq9gcfBW0eMP+io8vYm/tSPfrQHw1RX4yDB9ZJg+EhSCPm/A6nCbj5BYqI4eCjXG5PgqeXAgtqJJjgYXd1RFWQA2xJILsOf9pDLyQKxpgosGCLMfJZGUPvqihTaJRa+N6dKopYUh1NmV8jR78vQ0ecIADB104f8g7j+RJ1HSWtBjhiz0sqh6kXcx1sY5oBcMDnI2r8FHSlMwBP+ib8zJ8rYvfym3YUPuS1/eJss51HI7kzGH47L2bDafuemm4aGBYtLpiCY3wNO5A1+iKIiLD33pQE4/CVclr+3IreZ5jy83MdFnIXk517FNxhhnnp6PULPUa5fofV6PbCVbDdlzG/46GhAr1XASGhJ/yqjJFozIJvV3ITaM4RZEaeTZTYO0IWybHcLg8dlpo15or0x/62bmlk/yuLSVUCxRIeyDReKYY00FllYVG+dhKW9DmolRQDWHA6bKOEijaryFKIA+LSd0LYOuj3Pa9rMOm8Wy1mbzOjk7AGfBs8NhtzvCTVLQYZfcvD8W83A29Ypmq83FOwSHO+zibE4LcVotLGfhLNZhfFggLPz7pS3J3LkodUDb9vBgs7kkh8W6luPEsE8JxKIB2ety4ottAYedBQBCXD7eSl9ms9gtFoLjsFidFos34E0gptU6jI9mw3Z7BK6vyf+L5EVqnRyAghciL+q9E7BNf3ICZuHVCf1JhKqx2mYTT6A+JJc3bsK2hWj1ufoA56oV7VsZpemiKMEIZEPJ+rQl6lOpFtDToAEDdccxFNtxrbZsmXbtjndqwO57FvOFQi9s3uyV84qSlzcvwjWAzYtxTb7+I1z3+bCSzCeVxbK1nBlirruEbBHqBZWKVIyyxBChdqBy4iGGlERBUEpZM9rBAIjTELcqefhXoAOmAhYKSksK0mG2ZxilgbMHG6O+hkYX7/K4XE0RX6wxaOechJwf9gkoaIJv6DQhdkfEy3tsNjzcvDfi4Ai5hP+xEVfQ5LAkeqMeXzQicLwFBYS18JzYEPV7mryCOKz/eswhiyhdUVF2/NUwduj2hjgrFSTAlR/yejw8tY1uIz6k88qjd9DJrGTWMJuYbcxnmUnmJlyTe5gvIOdM79D0FEnSSIuYbqLQRaNABf0GMVjAaBkdS5pFWvQAR0MwOvdCgSKb/ieu5HLBmoV24AqypnByiTNO1ZIqJJH3Gntu3ikfXLZj2bIdu2l1zMG3ze0K+WBU/8/JHO9gf5FcnkwuH6RVMtnVNdjV9Q2IpHjH3GoHn4qQL7Eu7vKjuyqTRzcdJX+yvfK3R3cdBeGpXU9BACG9Axz8Ppidjwj0cvVFWLGP8PbjR3XOG2zLJViPndefr74Jq1P0VYNdpD/V8JSD5x1PNaQ0G/fUU09t3/6U+eMd2/dV8wsXLtAJxdVTwChumBlFvvayeeqGUea0A8obwVKNs1EgCRYj3C6AgIZLQIaWiRl3U5yShvzV5BirZVnkNwc+66qJz0+ssgYpKUGrllFIqokP8E0pomQ0sxlaZXVclaEp1TiAt/CQcmNFq37IWhw7i2UbXpDw8h2atmO528+Xtkb1z0bbbf302X6uPQqPRreWeL+7cj8c9Hj0/UIkDAl6c6Pd7ba/l1mXza7L/G32ikzmiux83usDdo8hX2m6CmvxBQqRfMkLmJ2fUv2ZeZj45mF2z/xMLFXN+wFn0W6h5fajnDrAb6ZE4dghiOlHEIhdjOdgaVrFQJqkOVS0agbeIZozrCDe/yBtGAsymmF0qDbohZCRKYyBeXCGreHyqa4XI9Gi3MFCKtHYn3RfM7Bm3dUPptvXx2QZSEu82NwMlYd+BHZvsnNdy1BEDJCR2+QkIdvXESWevLpzXb5F9LBQp4/6IIzgoCnauaNmqo5SbOj6xKI8LAMFSUlVy0KYPX7+vP5Ds7D3zcPw6nn6YzcbJ2qfDd1wFuNoF8bRDdSf8Ut5M0hAaw/FNA1ycYUrkiHGhilAmOpDuY2M639kg1/OXZ+JPzeCyzc3lntuZMWyHRN7t49vyHaS8edsf1R5u01mj1cG45kRXOgjiLJ3YseyFSOd2Q3jC9/vxDFFMPY23k8V7ie9fuq67Q+0tH7s21tbHth+3dSl3163oey5ug1V500ixkFVa1r1D/8cbejCnB6YOT20umZOb+72alKPvGicKj+tJfXMNbKRHGR60Ae6jUYkkiFGxByrSE0RGqSq+4p2KsuiGaJiR7DugxIqYG6R3ZJE+jxrmKd8r0XrZRfZOOJH7z4YYu+b4ILtUkNXe7PH5bfaiAUNUHOuHJOVxICsyDEtm/LwaDEtPpenub2rUWoP2icg8zDr9XqUhJSWm1wOD0HXxemMpUJiKFIulrGzqMvpstksboerSVbFhOLxrg43ZMfjZLwMxO10JVo7G4K5iJwMhxuKkaZCh+JGN8rGud1KR74pUixEEolwLtjY1SrzTjeBcv45IFavI5JoFgMpobFJaGkRQi3NXnyD0yk1JVtDtKWpUWwOSM3xiMNrJaD/ENw2JX7xPKZAo977rDF76OTM1Lyd2jx8hd1i5EobaO7aSB/GQEvaTB9UrgGQ6R7v7r5y+UxrNwWAVM+zxhlWGFe1o54TP4eyjJGb5gc/ukT+8/CdkZHD7HH9DchUBiFzUe6KYiIaYDl85gz88syZw1Rc2eN13/lFlBlzzQuL1ztNntAEz8K1Tg6OVAKQmaE/EFh35X/Dq3pvnT8HsS/WoG2GPT5BEvpu5mK6wU8zzgU/yv6mkRGaN4OM/galv5pn/qBOj5cJ0O9QJeNPw6JiEax+aGD/ppKn5acsV/nwpxTaqX95YvRx408/+yH884K1Rx5lduFFKcSVFJvisaJk21DOYtZQvhBKaPlCr1Uroy+BK4IeSVUpxTG0CZlev58zfH0PRu0WDNvTxgpgc5DWSlqvtQ8oM3rtnCsUDLgdYPwcHow2eI7bDM0PchwfFAWvnbbbebszhN49d+5fvEIy5hGjDhsBlrXZGwSP3CxI+u/139u9QkBSfW6JJ9TNYt2heColeIl473PP3Qes3R0IhrCLAwc4zhUOBnjq17N2PhDCVvsfsDEoOpxebB3Bdt7n8reHBcGrz3rEQLDF5xZ4FjsFYuMifm8yJQQPHMA3qs3xoJuFuuyYPNv7/5FrSolTUb/92zAP3hppy92S/zfhoZ5+PaVNwLzfchZ56UevuA9lWaG6FyNPqlK7KW/9Bn+T9ZiyHUqFfNkMTjHwTOVpdGDjKP/wFkls2NS9rODxOeVYfKhzA12FG0pXJBMq35ZIXdn9zDPqiqYGhe9Q23eu1fn8SCKWEIOJSOOy1DNvtqifaWoOXpZuUZAL7F9SVmQK2U2N27q03Egq07q+cae2sgxKWlmV6lyTak2OzMfXf04eYxxMPzPCXFnVaEY0Q0ocWvI8FQq0MNTGWLlkO0gFM7zpZfuguBIn3pqjE67RdIVWCNUicTZVmioXp7QPUZX8DU51SBLc5kx4BCmI89M3XJ9OFn+eULwZJ7PyYT/r45T49aWHhKwodojQM7puw/qxdaNw3yXnd+QSs1W5/3srfdYmdf03lnV17c7nq+P9Co43jXN2I8YudLycFAP0qXH6SjHACSoV0+ZMlYp08lRqCa0L2IKTKie5RYumG6Sl1kGdGZ9T4qn0qu68GmiXEjElHQ43J9q9cSHWtiKngZeyalcZ51vP22384vUiSfwiZpmy7wkass86xA5JQi49EG2xg1WJZ7p8msMVRL50CUHFyWdi6Vv/3xmot1YZhz+HwbsHyFfQRppfP+NMiskyGrMK/U3U+uV8COtgPmXAceRIKZjX6CeO2h0wuSEG64C1BpwZCagBLDAyEkgHwKiWV9v0F6qm87N43rhiReUl88xOQUT/jW1W/w1EbNvgOX3MZjt31102G9uA9aw+Bs/Z9N+aBta0xuPdh+v2thb/fx8tER1JF8pCNfpXq1kLrpoTrF2jUGh+FWJUZlSMXNFNim8rlculbeWrsl1d2as2D6RUNTVQXp6Q5cTyylsTKPy7WrLZlnK0uTlKvn/VLbfq52+95ary2smbzt40uXbzsg1jL45tWFbu6B/4+kB/h/6tmZnK0zNgb9w0samx7Ote0+2rf7dgt6D/bjX2Y3yEjvziN8H9S/dj6qwEUXHMkpFj/8QRsg98/JjUTzME0+68XKcf36GUrOY3FuoCc4dnZibYuw+XDtcOdjPtZWZiQRN2Ya/q3I/uJ2FK1K+huw/oWZZkuOg8PU3OVsr6u9PTaMdOLg09vwt/57HAzlrFMB4al3OnMK5qZHLM1cx+5i7ma8zDzBHm28wx5nnmvzA/Y37OMK2mJvQbC18WgwV/0gYyV80o+o3MF5pOOZU2fHNUJCENA5MkdcQthvZJq1LQUDraJ6NYFYEUBKsiFaieKqY1hSug8i2o6RxaGmSukTEg9fsFCikpozZ3zmhKCB/BJ/BRaxWf2/X731Nb7A9ILpfbJYleFwfA2btbW7v/8ELlAGez+4N2zu52OSWv1WJh7yQ+Xg67bd5IWPD65UBzKy9lPHa/z5MINaVaOk7wCfNuwBdIBJrb3FK71x7wuY27mfNPfveVV777Cpxc2yW15TKnuseK/o3+4miIWGzhn/qCaI895q0/7Ty0DYIHD25cv37jRGnoimKprK0bLnVWDhlYSKrgo6SSBJLv9gmiy9XaPfdON9lXI7VyZY34f/D6XA6nzeW22dN2uxLzRQIiBiO82+Hs8KDa833C/U2QoT7tZe+Pq2ub4TeatuNyp1fc0DDoU/zwd++NYet7LX/xXkt3S77l333+6qv33rIxMuhLBurruLrHB+VKoF+G6UasggNd+MJNRJyaC7Pdb+nv6u++dQiOoVdO92nov4Yo7FyYq/iAGWMYOVkzOcTIcVcDPqjmHvNGaBcHzS9r1U8yyWr4x0rigugRNTXMWq3+hoZEbyy1prco+MM2p8Ua9AtFObm+PZfP7sjlc+3rk/aH9FsfIBEtllTky5JKMrasU/XwXjtn9bs8qQyGbJlgQAgBWKyC29+xYjCVGFA680k5fbnSsjYhF5CTDodD9BcSDtqVJdyMYR3GdR53c0cJw7pSQ7MS7gw2drYmMKyzoKmbro55ikzR/SwCTVM7aICmwuktENPfxQpiW+j3BKzI1BbKu0U3Fvpqgdo+JZDklYBawY/F3CFgFuifmvpgF1w5tfCbTtjY6eEBZf7TkJFCoOle4JbcnsXu69rXd/O1W0uaVtp67dsUSCngm5h7p7VlcM2TawZbWusA+JRUHYsCN/ft69J/N8FuHluER4G6DHybfNXIx3NW5MTXhuF7cOx2/Qj8/Pbz7PvDlYeZhfTzTJH6OQv2N6C6R/+8rKHSRB0TQjuHWtLGhTgVnSGllKY7mNKoRWBy/sv96570zZM3rxg8NLgCz2nP4cMXN8Ds/Hf7xCWx6g0LaPwJ46TrgX6vpBsTZbVA6Cfm2dP734DP4ax87o39z5MA3UX2Z39m1HP/i24/q/JiazUnB8Y+JwzcaSIOYtWc3OTFeIKJNm0gIcIsTePpR4z1Vc0nvWV89SXotXtZnHXjCxK4wAtm0o56h0If9LLVJSb0sTTZj359QSKFL1ttHEq5xW5zeG2EwLFHLKwFmywW7hff+0urlfOLDqvF4bGQF9ZbWLy2Wyy2X0CnfoHjOJR5lrjsVjthn9cn7YSz2AgLU2zYYeec1E8mHoet0vlNjtiIlbqCU/N+/D+SB9AiqswKYwcQyqZNDOEi0NAfLWsptZxl24F+TjTaqWtGv26Ug5xEm5LothY16MXh1LLxrGVju/71hgawCoWw/nrIYXWQbwD4k+2hB0sdnU3GPUvD2gjc2OTh90YUlqT0Z3ztvv/p9cLV4vLEFc2FwtpCgXzNTvtZG9H/IDgd0BVu8jieeTiUkf3E7aG9DDfof8CubmzKZQCNVuS17jT2g91kvHCVJMJccbiIx/w6PogjdtD8gYP40QjiEGsbueBVNq0/WXkblp+DX56r/HU8k+nNZMjBytv6k2wato38Vk/9Fu6njb2Z+r6MnagVfIZH245xHN12KWGvXEhRObyY79zYTAd0Nw/eV9CMkjsqd/b0wH//Dw8te/4FltOPydns6lyODfZUTrAH5h7pvvPO7jvvYA/ob588BDd8/U9foEg/ApIdyOKh72AHevTMnXf23HFHDyXFWpW/Wo4kwkRpjsTUUwLda4gWnNp0fLVSUOjuQ7if3Vx5mpbDNFmjf/Hxx0cff3ytzf072vbCKKyix+gobR4drevCg8Y76F4URqNL7SNjnSCJuXfYzSdeHjpzhr1P32S64DTr8+SJl4ym3XBZzZm2LOizukeHZnYM/8vYEVqSycG5d2iXi8vE6MwohEdHvzBTzVEv7MPIUQs4Vn+1AN3KWC0TM2aaKkO37dUKe3xG5+kBfzWqH6RHTceYuSt8R5+xCw4m8hNsuvI0KtmJwxPsOQOq8eZRjOnpN0z0OFMXqXxjh4C61GdNUpgXC5g10sQ0mfx+DTCzyjRxfKIG3PnS6Et4jCzCe7+eYD6x6AH4Y4r70sU0dvyraKTz8Slpo8L0aSkbnY8PL54/c08czmI184jsudRXBxpYZLDMGp6/AWaMWGIGg4EZ/Q3z2px08zRrnPC1trpeyDErmcuZTcwO5mbKmaVMtqGq8S9U/QRT/1PUhTZS0vCqlzUvrIvgalS/CB0eYmGxwW9NF9siUtjv8F7ucNmkpnA03BAK8+5Nk+vH9sYKvYV4HKvYG7HiymLMqPRN8zAI0bYoHr3zmBOLvYTVXyzE1XBjLOFXgqEGXk3Fm9AZRm+sK+g/Hq92EyvG34wX4lDtJb4Qlmj/0VfmUev60JxDc/7qOVpAjqGHQDc3a9ZqG8ZUT5v6Z+7VPcv20GM5HuQ5vRdepc00bQtgNJrHf8WGi2S482N3Clws2BouMBSc2Y/K7PYlJHsG1d7hj8rsEpI9M2N80qrv8ZXRjg7Rb7D+msBU//JmLFeL6BbLUFJNL/hLLZQQraZaLcTJ+8VIk9zc2pEvdx/oLuc7Wpvlpojo550c9zE3gV95wxdvWGlUZ0zTBrM2zhcIh6MNsUiTGOTdbldQjIbjkVgogpGWe/E9Pig2RWIN0TBGZO6V1Z5W3uBZZA8Pos/oxjhdMu0PGFsbZMnYDlqi+3nMHL9Z4Dv4IFyWrwzm2W9X3kbru3/kDP6RR5G++Mjcd8n4yMjch3jvR2xfrczHQnSf+kpmhL6l+rkKOYxxqRG9mPEJR3dfpKshTDskzeSzjW69oMGTTEq9UKLrURKDIQxlqtspMHBrcrl4N+9qjPhjDUEH5yAWmCLEbm+guyisXpvVU91FMVXZD8eGfEJbd5voY0/W9k2InIvuh2CtLrsYifk8UY8oAs973b4guvgYbtpsIZ/b6+LvN8zPkTGnLMTa2mKC7BxbMD7R+G+OpXaYhZbedrZv4rrl3d3Lr5s4WwP2rV/0Tx0UIE8swjCA6Y/+/8eiPeutqB8vsctlqSjG6leoH7TUvpW/78qNbXx141iuqw7As1PnL7Edhb9uESYFnobJ89R3/b/I/geUeJxjYGRgYABiq7Cn8vH8Nl8ZuJlfAEUYalQ3NMDo/9///2G/wPwSyOVgYAKJAgBX/w2MAHicY2BkYGB+wcDAEMV+4f/3/9/ZLzAARVBABgCj/gdKeJxjYGBgYH6Bjv//xxSjRB2menZHFPHvEEyKPf//osqT4hbS3M1+gTw/khdGqBgAqch1rQAAAAAAKAA+AGIAwgD4AT4BUgFuAYIBrAHIAfwCHAI0AqgCygMUA4wDrgPQBCoEhASqBOYFNAV0BbQGGgYuBrAG1gbsBzQHWAeCCDAIRAhYCLAJRAn4CnQKtArICtwLGAsmC1ILkgvSC+YMBgy2DMoM+A0MDSANRg1UDWgNkA4qDtAPMg+qEEgQsBEGESoRZhGKEcQS6hMKE4QTphPAFAwUIBRyFJIUphS6FRYVihWyFfoWLBZWFngWpBa6FwwXWBeWGDoYbhi8GToZcBngGiQadAAAeJxjYGRgYMhguMLAzwACTEDMBYQMDP/BfAYAKU8CYgB4nG2RPU7DMBiG3/QP0UoIBGJh8QILavozdmRo9w7d09RJUyVx5LhVewdOwCE4BANn4BAcom/NJ1VCtSX7+R6/jhUbwC2+EeDUAnT9eGoNXLH64ybpTrhFfhJuo4dn4Q79ULiLV0yEe7iH5heC1jXNA/bCDdzgXbhJ/yHcIn8Kt/GIL+EO/Y9wFwv8CvfwErxVud73s9iU9Vyn2zyyZ3GmhbZ1Zko1CodnOdOltpHTK7U8qHqXjp1LVGJNoaamdDrPjaqs2ejYhWvnqslgkIgPY1OgQs6/26OPDDEMStSY06TYciWCvZi45BY0lnPma4URQt7npeSMpvTpCI7ziuklDhxr7HjymNYhYZ0wY1CQpn7vKZ2zG5rKr21oYvoQa7+r4rsN2JN/+dCfXhwBAqhkfAAAAHicbVXnf9s2ENVLRyzZlm15xUnapnuyTUfSPZPuvfeAyKOIn0GCBUFKyl9fTIlOrS/CvQNuvAMeBxcG/jcanP8rcAH34F7ch/txERsYYoRNbGEbY+xgF3uYYB8HOMQRjnEJJ7iMK7iKB/AgHsI1PIxH8Cgew+N4Ak/iKTyNZ/AsnkOC5/ECruNFvISX8Qpu4CZexWt4HW/gTbyFt/EO3sV7eB8f4BZu40N8hI/xCT7FZ/gcX+BLfIWv8Q2+xXf4Hj/gR/yEn/ELfsVv+B1/4E/8hb/xDximSJGBkGOGAnwwYkrzRic3bl4fpoLXjV2NcikyUm5Zyo6TQ4dl2/DUgXUhtXTgVi1okaQFdUpWw6aQcw83mqkkky7w2BlU1nppzW1n5q0Q1trTXVLKjBKqtE+5u0IW3J2/yLLM/u/Yfy2TWrClMEUPmSClvcetlGwrt3ObVUws7/BqZq191jGbMlWyTkq2+D/GK1d0asJUGfONp6wkxTxesKoi0QSWZEN2dZjKsmYVl1WSMkMhSzXvaHwWnWSdSSJkepoUsnWRD9eQSdxqz+7xGm2oZopp6XaPLd6QCkPwpmlMuBo2KPMcTXLWScU1rXneW0GR62HOhQ+zUZCoXW9FO00qWuiVUSvq3BZe5dItXFE2YMnUKWnLqq3CIAdrRCwVT33sUipX3HbNZrQK7q0YfVKTaqSZku25dUPbsHN1s7ELcxcM7bW5Ey7oScTOcm48V8/3SDfSveCkhfG5LIcBsZw0qSJy+44DGrrQvKSsX4oZFC/5HdfWTsRCm9GOje4Gu2atvygxuHs1iS7actr0D8a+V3bgKAb6t6WW+t0oqonpfjcBkRV5cj3aFG2e+4tyEKFTXidT5gd63AdzqeZMZX2yO56RNJdP2wm7ko+iR4q2pKTgs6JfRoCFnJ+Dljw7B5V57m9HeNRBVWyR2czzq8jMtjQv089kpEhIFpdGn9yuTUVSRdFqiKm08EJEglLtT271W9n3YjVVJla8S5NGGhlhTWqSRfFwUEZ9bGQUTLe+Us1mCWu1eymbxpiFPZe0lGJqtCSIFhPTtrSOK3c5YuMu2cqn9FwqN6RJxFJLWHUGykgzLrxoBigKwlEEzJu3who09OQueE3gKsJM+UGtOnD3UyuTydN7LTrC4VzJ8kwbq1DNsnIfjMsRmDNtvhW271lQsKEJ3LhRjdoqKs24rfpz23HHEsHCF2Iw+A+2QlOE) format("woff")
+}
+
+@font-face {
+ font-family: Glyphicons Regular;
+ src: url(data:application/font-woff;base64,d09GRgABAAAAAXcsABEAAAACa0QAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABgAAAABwAAAAcaBvSk0dERUYAAAGcAAAAHwAAACACFgAET1MvMgAAAbwAAABEAAAAYHdEe55jbWFwAAACAAAABT4AAAoWx4xbi2N2dCAAAAdAAAAAJgAAACYRBwj7ZnBnbQAAB2gAAAGxAAACZVO0L6dnYXNwAAAJHAAAAAgAAAAIAAAAEGdseWYAAAkkAAFcvwACN6REiVV+aGVhZAABZeQAAAA1AAAANgTVZa9oaGVhAAFmHAAAAB4AAAAkFRsIU2htdHgAAWY8AAACdgAABsaR+UDwbG9jYQABaLQAAAUrAAAHqAIJVtRtYXhwAAFt4AAAACAAAAAgAyYFjG5hbWUAAW4AAAABdwAAAzDK95H4cG9zdAABb3gAAAd6AAAS4sD1NCNwcmVwAAF29AAAAC4AAAAusPIrFHdlYmYAAXckAAAABgAAAAZaKFHJAAAAAQAAAADMPaLPAAAAAM3vJR0AAAAAze8KpnjaY2BkYGDgA2IJBhBgYmBkYGR8ASRZwDwGAA5OARwAeNpjYOa0YJzAwMrAwibBuoCBgWELhGb2YDAC84FSCMCExA71DvdjcGBQ+P+fveGfAgMDdwjjAaAwI5ISBQZGAAZ8Csx42tWVbWiVZRjHr2vvxwLPXtyc+tzP49Azp5Wbc+jKaEtFBwVTixgWW762opgvISuCk41o1oehFS6QpIIyBCNBCsrqg/ghlSwrd0x3v2lvFL3p6oOd/vd9HyT60Oc68NvvOoftuf//5773HCIqJaJicAOYhHEJMSZKpfEp+8+LC5+XFKfx/kPKUhl1UELzaD9NFOWSScn8pDc52FCVKcqkMnsyezNHG1ONkxuXySJZIlMyLWtkvZwpm2SzbJOL5XLZJXvkOtkvB+RWOSiH5ahKqXrVpNpVl+pR/WpQDatRXaxTul5ndJNu0e16qV6pe/R63a+36EE9rPcaMmUmZdJmiqk3TabVtJnFptN0mR7TZ/rNoNlphs2oTdlKW2+b7ALbbrtst+2x/XYgn0eThOYWGtC1BnytQYVvQGhQhgbVslYmchYatMpFskOukN2yT27wDbbLrBxRpNIqUc2qQ3WrPjWgsmpEky7VaZ3oObpZL9Qderlepfv0Rj2gt+ms3o0GRaYCDapNnUlMMxosQoOlphsN1psBkzVDZsSSTdtqm9hm22Y70WC17XMN8iafy2/Kp6/eJFPjF8ePjD94oTRXl6sce2ZsaKx3rHas8uz5pCGZmSTJtGRqUpdUJpOTVFKelMX5+M/49/iX+Of4+/i7+NvYxOfjHfGW+KF4Y9wb98Rr4jvjFXGnOCdy4ow4JU6K4+KY+EAcFUfEW+KQOCDeEK+Il0SrWCBaxDzRJOaIBjFDTBfTRJWoFNeJUlEcXY0moivRT9GuaCh6Knoi2hE9Gj0SPRBtju6P1oZT9r9+Xe9+lJ4pvHvcn6iA+3+aC+aBErC/QBmYKFBOVJQLUEXhTye5fzx4foBq4N4ATYEPBqiWqKEqQHVEGdzLTBHmqXAqQNPgPQGaDu8N0Az4aIAiokas3eh+X8CTAy5M47IAzSSSkHTXb4BLAjQbRh/p/jYDpwOut6wGNaG/RFZZj/lGGNeVuB61wLNAE+ZWuDlA7bB734b5ZngRWIz5VrgDLMd8G7wCdGHGe9kNejCvhPvAOsyr4Q2gH/Pd8ECA1sJbA3QvvB0MYr4PzoJhzOvhETCK+WEiBSnXcQeMfsp1eRJGF+XyPwsju0J2egFGTuWyvQwjm3LZDsDIplyewzCyKLfu+zDWVW7d4zDWVW7d00Qa0u4cnYPxjNYuwziMDNplsDAyaNx7+hGeA1yeyzDy6JZwzvRC4LL9ASObXooZTz+Ne6dxzxhr6FUAORlnUiOnxj1gt85GgMyMvdTIrLdgxtp6G0B+xrnSyK+Rn3E29G6AM8b4LjEUYOynwdkxOCuMLAbnzaALI5NJB/gWGGfG4IzzEhhn2mAdxl4bdDToxbfD6GVwPb4Dbgsw7rHBOTE4J4wepjPAa2B0NdgLvgt2v+c64gyYvgCjn0FX4zpugtHRuF7Yd4NeZidm7LsZAq7jYzD2yGCPOOu3gKzrsgtGD1uJ+XkYXazL/yKM/Nbl3wcjv12A+XUY2S3uAb8JI691OQ/B3QF+B8Y5ti7zuzDyWpfzI3ggwB8T//qah/gEfNhDfBK+CC5hPgX/4CH+hPi3cg/xaXiKh/hTeLqH+DO4wUN8Bl7lIf4cvsdD/AW82UP8JdzvIT4LZz3EY/CrHuIc/J6H+Bx8zEP8FXzCQ3wePuUhvgBf8hCPwxMeYkl8ucpDrOAaD7GGaz3EBp7tIbZwo4cY9+PK0x5iXPvKcx7ir+G3PcTfAHdOC490ds+8on889Tk83sOrpPS//RVV9re5nMI3x7++KtyPvwBOLlhTAAAAAADGALoBLQErAWAAyQBjAH8AhASuAJwA0AK7AYABGgDsAFAF8AAAeNpdUbtOW0EQ3Q0PA4HE2CA52hSzmZDGe6EFCcTVjWJkO4XlCGk3cpGLcQEfQIFEDdqvGaChpEibBiEXSHxCPiESM2uIojQ7O7NzzpkzS8qRqnfpa89T5ySQwt0GzTb9Tki1swD3pOvrjYy0gwdabGb0ynX7/gsGm9GUO2oA5T1vKQ8ZTTuBWrSn/tH8Cob7/B/zOxi0NNP01DoJ6SEE5ptxS4PvGc26yw/6gtXhYjAwpJim4i4/plL+tzTnasuwtZHRvIMzEfnJNEBTa20Emv7UIdXzcRRLkMumsTaYmLL+JBPBhcl0VVO1zPjawV2ys+hggyrNgQfYw1Z5DB4ODyYU0rckyiwNEfZiq8QIEZMcCjnl3Mn+pED5SBLGvElKO+OGtQbGkdfAoDZPs/88m01tbx3C+FkcwXe/GUs6+MiG2hgRYjtiKYAJREJGVfmGGs+9LAbkUvvPQJSA5fGPf50ItO7YRDyXtXUOMVYIen7b3PLLirtWuc6LQndvqmqo0inN+17OvscDnh4Lw0FjwZvP+/5Kgfo8LK40aA4EQ3o3ev+iteqIq7wXPrIn07+xWgAAAAABAAH//wAPeNqsfQl8E2X6/7wzOds0ySSZpFfSXE2aXmmTNOlFW6AHR4FS7hsh3IeggKgoiHihHCLireiiuLriTFp0UXRZF7WuZr0Q111dr/2trLqr7roitB3+z/NOC3jt7u/3+QMz884777xJnvd9nuf7HO8LwzIdDMO+pmliOEbLlEuECdentCr+bxFJo363PsWxUGQkDqvVWJ3Saix99SmC9VHewxd6eE8Hu6n/NfKB7NY0nTrSod7LMAxhepge3e2625k2pp0RW8JiUVRUpUV3JKVqySjpalJZ9Hg26EvEnAgRR4TF2uOiMSJG06I9kqqNYptaBtvU6qDN0Ig0kpQwFZVWPhaPekgg1kjiEQehdxG7wMNdAbHbtITe2TQ+D9yZiMYbJPTOG6ji4S4MbyYI3PU4BfKm/IbJdMxYYiTlcFcqOEnYVGw8ZjLJb5LXBadTkMtJObSASvl1uDsmOOU3jMXwipGEZWivyiWlNhe0Ud56g7xpc7lscin0g29BP3CHb70OHwItSLlcjv2S1+U3TaY3oQUJOymtkkCrGONjGKvNHvXweIrEq3h6igV8HnryagQeT/Dd2b+7baRIKGA/t7kLhH5bgSD/XijotwhO7inB02+3eT0C+6lHgDZO9u/4mf0Wp8AwHCklO3Ux7WuMiSlgwkwxIzrDoi0tZoVxeMrCoj9NxIqwaD4OYyXmpMWiiFRJKX+O1go9v3+fQ773vNQpaPbhR5+aCV/isEJihYznl5GIZ+v7nznvRvX8eTcMo2E2Mdm61fq5jJ8JMRFmGNPKjGa2MKInLBrTYmNYjKfF1rA4HH5Be1hkjovatKg1SwIpEfPT0hhSImkZ3iJyNaLAN5lU2W5PYVFxabRmeHPbyNF+R42Yb5FyRtXUMFKjkbd0qbKLS7A2zj+ZU8hFQzWjaKNWS1dRrLoNi8N5KTCypgZmZcCSIBpWsDlcXDTSwCbiVTE2SOwWrYZlVG4/w+qJ3cE5iNXIegNhYrVHIwmrUeXzBoJWj8arjieIdhN54BVSc51E1Gukz9auOfHYajWRriM1v3uEkG3yGXmjXAHHme1kJVmVl/NuD9H8Pats40VX+f1XNQ2pqb9KzVdXjyusvcIbIovH/I6Mys8jy3u4Lz4g0+6TX+yQ3zucbVj0+v0LF/3stQWG7MPE10Fq9soPvpeW75S/ufNOkkEWqg6QVW6hv/8++S8kV59bWmRLkaMOQW5QGVzZ1jI7u7LN6iiQd/fAnN3LCLpXdV8xMWY6I4bDYiCdCoSRawPFwK9MWHRHRZIWXRFRExZzojgWjohoC4uZ6ZQtExvaeH0JEavCYui4yEfE4rRojkhxGKXiEIxSSQ3MuTziKScJj9VjYTwRld3igFufV6P1cB6vze6AC9I7nvBoWA0Q0x9gg3s7iJYQIj/SQUo7yMtk9t0k572bLfJK2zd3HP19lH2go/9KeM6u6JALnB0rbpn09FvZZJf5mmPyO488LP/x3XtKODcpzR7FAqdcSu5e9oL85pN3fLL/HflYYSRLPjZ287L6b/7nafmZz6695BjJ2Y+yjpRyW3QxtQ14ysKIXFg0wAw0hyVe4ZtBZh5g4e/yBffEOW6gctNMduol7XNMHuNlxJywmJHGfyboMT8sOaFHyZTDWyR1Fp13sXgiUBWzxP3RiMoRh5NFsBlZZD/zLzar1j5PzHveI0umTptxLzHcNfOu36877b/3Iy576++dnuI9xPz82i+ey98rf3XfJX+4b84J+Hz2zN1nqvVHM4Lw6W3AXalKhikRW9KpSiq1K4MgkZnKehw4ENm+42JpWiw1SwlgMXVEbEqLmVRQS4lS+I7OlpoasYkXc3EoObOF8SeqYvGI3UnsKsbC+1ggh1YZUDi7OQJPE1EXcRKbiwU24oBmDSTiIiBS4Ed5A8nDpIk8c7Kus+4keYY0HVZfL7+6+b32ce9fcfn748f8aaP86g3sBKeQFJzWkvE11Z0BgcuvqKjIj1xw/4KuYyoV0ZFPyIoTliWhurrQEssJ+RY5R/6WZC26YMH6jYuTq+Sv+n5TCWqAOIXKwLB6X2HZMI+FW8XpdTo917dz9E0Xt7zNMHqgE6OfC3JIzWTAmOcxHibIlDKVTIJJMal8pFhBGlkgQlmgKiIGgVYwgtVUKoGcVZmlfCCZNyJ60qIfzmYpBveJtFQDxFOBlJI0mUC8fL5Jr9VnGLJMZmsuSBwp5uEtTXpbjh0EV1l5BQqhBC+FS1BoFeTDaxml8BoDr2m0erMjp4iKMAmUILyWmWXirfayMH3Nx0uGcpxDfBXwUpQD+UQ4EGJai7mBuF3EbCRukPG2SBXP8VE+5iUoo/TEQQLWSMwHquVmrfZykt80Uf74lluIc/zwPVs+JJoPt2z5UD79Ieg0+MOOndhE8m+RPybOW+Q/D/1IqyU3q9p7evpnEefEJvnPmvuhumFy/y1n39uypa8bO5Yv1L5Kbobz6Zn0AzTZtJ8J/XN6epD8IFVhDDphDKLMEGYUkypFqteHRQuQuSEsmo6LVUB5s5QJZAUtlmOWaqEkpKVGIHBOJoh3S2miHgjBSPUwV1MmIVGjSPK4Q+0iJuIiDr4cZ2QUVJpNo+UbSCIYiCcK43YtB/qfUIET1GoCQQY4PBIH9vaquFwbu8WmN+6f+97Oiev++tCDn188Ycc7cx8x6W3s1UION5PLMR5+WG7o7ZeH7D9kyuG49RumTrn88ilTufE25fHDi7c41ZHaQ4se+vSzBxcfqjn9O+fVix+GpjO4HFv/FYLOeFh66UXpEHSpnX5gw4YDG5AeBAigu12/j5nJrGJGMKkJQA8irg6LjuOiNTJAgglAgsyI2JkWayPSRUgIB/z0DOck+OniBF7Sz4JrpyXlmb8CalB2udQOF9E6+IA/GEjEo4E4wK6oEcjjsDvyCNyVq4IRewFxsdqIw67VqLR8opw0kEbSoErYjKpAkAieKgIIS0UauEbiUjk0Wo02EAR4MGLPmAmV0dxYLv/JYfloXWvhgjUaTqUeOjOU0GmTz7dceGHL80nC8fbi3NBYq5VVa3VrFhS21slHD3+iUat8blLQMm/iA02hYTOmLxztl9+Sj8lv+UcvnD5jWIhdox0xc3qBy1C0ZMJo7c4JdX5/3QTVMCFgyckv8w67eeInrOz4n0d/e1IbX1NWZogdaW3NjT0sf0nMD8dyMwuXzFrq1nCcJX67X3vyt4/+j6Of/cRfOXFSiASr/Pag9erfbZxcmJGRIb91/DgpgULh5I2/U6lG37V6hiNbX7Bo6T2jAxPrpk2rm0jnqvfMF/rb9AuYEpitNUwqhHM1GhbDMFdjYbHsuFiZlqpgOCrLQPFZYEpGUQMW1ohhvptRef1amKcVlRaKeQsIQXwBeANmJkBeATAvkN3IamFMBhCvyhx3280at9cYAWgaYUd5J5VWVabj7JyqUaNjb8Vi/Xur5HeScy+42tt/MGI0Ro2AcP9H8/KTRPXEE3IfCRZDFX3v+kmL55MgvgivjR4Z778/no5URCd4+5+oNIVMEcC0eZnKW08yVH8xZ+6jsjHMTKTITK/gSfVx0IpddoNaVyKWpMWSsGhPp+wlqFTsufqSVIkdiyWgXxBuSvYS4FC9rsBLOVQPUg+qFGkFOgKhpxtBP9UVGpBu6oFSYcCrVWsCQwCLJgoB8AfsZm72PmK/l5tttuda+pqJ2uzIt8l7bXvxlO8wE3VfsyWXdD0qVBjZV9mn1kriuv7W/oqsCuERm1lPvup/+M2ssDBaEDSLNPBPgGI46012qmzUm1EKgb6eC3haBfZTBpPFMLyeK+T1xKNnefYw+Zp8zR7+Zi87tf9h/dzeDnYqO5XsZA/LBvJ1f3OPSux/mHP3dkDV1F6wxMAKYwErztPPA92iZ6wMk7AS+D16VQKtHRxf9nNye/8dNp6sUqvI7af7uE9eEeoFEhGEVwrYRfLiz3U8e1Ktkhef7tVmvyII8u/sdcIrVGaeqT1TmxHICDBvM+/DbSxeR4LArCzwrycRBMxwfg3V1ALvSPDfqXGSRANwu8ZE8NG5Gg5qQFIi9Nc6PINtaE0JARliZAH24qNzNRzUgGRFyyyo5Qfb0JohRAsigwX5go/O1XBQ48PvGcUvrNWUE7wvtKoLrVyh+oVY+X1z7Jl8YXmV/TNSuvSwfEd5DOpuHajb3dDecPjY5wN3s+Futr2qvJDPtH9+7DDc3WotKyp0ZBitt96H78l3HF5KSj8baDKH1p3rXz629DBZpPRvNWY4CovKrLdCJ8+8+dMfsBs+IHDuA8iiw0vlY5+VrMgPQO/crzcBLiWbNgHUP6Pa+oN3B+7+L98tAN/t3/z4N5/54Y8f+G4/8QHnE/f8Hw8fUBKYVzk7KZ/ZNPBrqEw496cS5WEtzPEAyAg9Y4AKMQNgEUgJMEF1x1E/cekUp0NxwKlBMug4LOo0IBmMigvAA/wOWgW4jK3Vfd77F/bwqSPs4f4m9oi8XD/39Ld9z/81EvkrN0xV03cFdzV8HjnzqX6Ofh1YvMOYCoaIw8NiLti3adFtlipAJ5rSUjMIHXcuiBniAh1Ywac4i1rRgQ5EoIBGVbksr1FpVEZOy/Jg9Tv0JJYALRfHv9EIzFsTMapAADMwU31eQg66uvrXLXnuT0d7fnbz/JqfyXeelP9x5OV772nrE1ycfDXryC+557H/+eWqP09/eX2rSWXLyGh8cMuJ1TeSN+RFY42lGRo7+aXT6Wha+PN3SS3ZAKLEG55Z21o/eeH2GfJhed2kxx8okK9iTTlNC1+6e+/y+kvrrxMX6bKGZOdsfu+G+5pGk9XyX5dYw0D/JJPUz9X1AU7tYMQCai0bgeBekM7HATF1CRY9iGVNGk01IZ0SNEhxIQ+IrxGwqKGOGI0ehsAHdBI0QKcsI6UOIvoEk+ADFKu7KVbX8vYByYyGSDJURz78Y/KC14j3tQuST7FsXcgpnFxsc+35rGO8h9hnk0tH7SHFV/Zs2NBzpXz81lHytaPltz3jOz6jVj/DqM/cDd//KHz/MFibTUwzM5KEGfz2Q9Mp71D8gl7QG2J+RGwOA+xLqY3xSCQC6E8sQ2+SWKdooVFhseS4WJFOlVRQXQM/SiwxAzAXK8xSG0yD7HQquw0fZVvhUbaZzpCwNBoexXOfaqj88mNGKMkQ1eVGUXNEDRr7lFFsOPLUr//4ZQofqMU4PKmGJ0Z8knXkqQbHl5fBk0z4Kl2NVQ1W6BrPKTi7t7q3+jRG3lIjNtYwBzVZ1U0NjeX0D2nKUGuyjFXxc1X4R2zKJVIF6EWxFNG7WFkjui0HI9Ghw1pGIqBv48XWGjHbIqLGLPPyloPZJZWxlhEUO3BVKNutDQQ9NA5rFMU2lcM8nlG8egSlVMUnQMJaHcBfVg8bRJsV5rOWeKo8hZ5ElTrpFJ7dVzprjrpizqzSfc+i3Tqz2Cn02FzffksvxWDV9iRJqbzqa424kHcUnn6i0KGryyUHOHffB6p2UpqUV6kfASON9U1raprW/x612JK9m7GvPXvwrLoy6ZQnJHtWkmvJ/sKiIvNflvWO7OlJvrES9Zi8amA++5gW5jEG2TmShn9dqshwmMfGKFpV9kjKo8LB9OTDPFZ5qNNRj4Zra1gsOI7manZazIqksgsGhzxVkI3FAoaOvlSG457uqomXQafFabE4LNakUzXF2KamEZoX12Cx2I/MUVwGzAGTSKopBuaojKBB5hkOxWLE1ipeKqlG+EINCg+Pg4Ha1aOMg8/DDxIfHWf/kaXkVU6BzKZkI7Oph+wBeiM/ABVf/xS/qT5KgtiaTV2UD7hsA+1pT70vnePFW0nJIC/uGfl9XmTPVA/Q3gSSexn1/LjS8K/L4AoDmTjgs0hYzDkuetNdhd4cqLLDWITFwnSqkEK8whKgnL2QAj8zUs6eA5SLAuUK7egzcCHluDACvkKgnIGXHH6kHKe4UQDZDbhR/iOV0E16mLo+m4EspT9OFsGp+gjbJJEsvR3/DRlMTPLM3bo+/VEoWRkH2P8FMBODgO7DgO8TTB3TyAxn2hiRQZVmTktFFSCNrNQdYEuLsYjoCIvxKE6/6oiYF5aKa6NR9FCW1kM7EM8NUZQ8TRHRFxaHRUV/WmxGF4JU3hpFJzp1vTDHoeduW3a+2+93RESzGb1N3UKO01OI90VpsRTOZikEk7gsAlKvO1Zd39SMz0DaAcTurqoZMrQF7/XpAd969Hse3QTw/I/9JR4ezryH/MTzZF1I+xq6WL6tCNWhJDj2o8dOldjbgYfa9lNt9HOxm2/2wnlbz7k/JxdzJ3q4EycXn1cHegLQs0Y/Sz8dkDjP5IC2K2EYqzqPlJFMwsQSxEEDAGSgZuDKno0ccOTvd+4if5Ote/bILqPGf+zUu2AXbVclyNQFC8gU+edwZkjGuLEkQ/5m7Ljj5BZ8bDTKKzQv7ZCzyD93306+lg2nRhfDy2+des9k2kYuXSA/TF+fCtf+cfI39P1M+V/sh2QXNAAbSl6p2E3MFfqY7iP41gJDVTODqhn+ocqFwYFZrgLQ0cC6VAIY1qw2wJarWtY9cPClZw+NGPPskRe77rt4ePs26f3ffzN//je/f1/a1q7pWPT8vZeP0Cd2XHjhjoR+xOX3Pr9o2qFDT7/ztvzpddcR+9vvPH3oEIM2DGPVe/QzYQ6Xg0SdBmeYlmJbWhwWJuL0sDQD3Y5teaB6ymrEYXyT3uT2BkJxpnMCVS48ACDGr3IA6neg68TOWFgw8uMBsBy05SQY8NOzykrsDvQyOVxcARgNmmgCXSZakoigkwWqLGxQC3YDq81zXUJWk/3k9TfjQmeh3y7EjxAyf+glngLdlevnvDtHd/XqVWeY5Zb1szfKX3zJ3hMrL/P239vtmbp8/siQ2TLkxvVXTptYoNWl339Wvme76jqv3q3dKl2Wo6398Nt8jSOfGzFKc+GQ6O+IZ3N+chb0D58y6xp5gzxervhdTei6r1oSxsAVfxg2VJNYIsbbTKcmq67NzM0r7H1fOy8zPzxq3hiX84L75o302bjAzGs29L3Dks4Ls72khK1N5ejq7uqW/3EjpSszYAvXMCOBrluY1BS0/cemxUL0EqcKDVQklinopQ1YP91V3dAGUlOdFm0RJL5IELMg01YBK+vTot4smSlYwWGRzHpQ9O7ikc3TJlJTuXAsSE5PUU2N1GZAE9ociaIDsKEaqnU8CtKqc1w+6Jj+DteHSTlBCQtoFq8Bq80OjWIBr0Z9Fj/Yacs88t17UCUhwZ0rqN8/L8KzXfCrg2q/0Fs+UIAaZ7Kusw7+kVufZd0Ct0Vws8+yucLpz4XcunZowp2Atu1qu9DbIdj71Wu/HzY6faPgdtl+a8t32l6yudyqfxTX1haDjJjAXYmP+zaDMD+9m1TY8sHUfw3OjIbpOVOtuz2jCORCCEZjCDOGmcVsZMRAGECiNHQ8SN54WBo5DSQs6DMHRsMkYy3UDlHA42xqMiAKoNIT4UNDWqxNpyprqWMcMUODWWohdHSzIuJYs1iXBuiZGluHDcYipBxrliah2zctzVEsGYoGqhT6O8lZNABEVwZlcEyCxGYHxECDCIATQPuBmLV+v+5796j/Aus6yc7OdWwA6fLtbqC8PV+zs7XIdWoVn6MiRRQ2KEBiJ9kpr0qeV/H1ubKOhVNP57p1nT1K5cnl2g9zckLfBh15Zh1pxWbq9Xhmt/acjJ+7PX39ubLiH9rEZOpu188GOcck7CoQGQme8AGAmI6Bu1hACzNPoHWb/MR831WPqlXtl9x7zwH/wF2+7fQWW/7avfcc+PmFsyuL949VnSaFfaXOaPSzlVARenis5kNBUMs7NIXC6XtdsehnDCGLz/RrXwFerGKcIF/jYVFDgxfGCAYvpFIwacQKNGgKA/Al4g6rAtGc6AG1g8mnCTSSBg4kGheEMREAEWvKodP89qeuvPZW4s85kOMvunXjbaumm3PyG2eNdQZ0RqPGErBk5udtuPyGAtbw8l1bTjzeM+WZu0IlDs2FOX5/TsJWHxkz7qKmuQ9fu6jeYDSZeb1r+pSLw2U1Fqfl9KWslr3o1UjQuFzxd9tBP4yi+mE4WEEY7ayJoslmACnRTLWFNy16lTgCKA2YiFIMjICUw6VX7FjrjymQhM3FORhHnDRoqmLlrM+rzSQglI2s/d+rltOJ1t3JJCl4+FYSax21trEjmD/i4h1th64/9vKVB0fesm7Uf6V7ppVdPP/+5Dz5r7/+BQk3j1o/Mtk2xj3pzqWNL8ivksSRxqV30jlz5j6GySjS/x3wVoJJGVGC6qMYYRONx8Us4DazlEFlYxenz6CyE8GQlJEFMo8l9MdzRCC8h0fkQv9eoG4hM9HrJq/qb5YN/c0qUd2glveTWH9j/2O9HdRUEdEfl0S/OuDdApAbUYw05OLn69IpXS71SxDgaz4CdqJYTKFaeYQ6dRkaP+cwfi5yisQuBhAIZkoEBTnNZADU72LrWBrogjLLqEpYbynJIOdC6Z6zwjnJTk0sPbBCo5m6e9EIDzv1fvlT+Yo/aDSPy0fOMM8uqguRnaE6botyBSvra9k4S7x5au28zdtHkX/IhhPyIvm9h5f1EAOZyK3FRnUhedXglc4x2cAkM26ifoKpzAzqKRgdHXQWTPs/OAumf8dZIBkLgMnCoIIK/yN2ZwINHEiDKniccLGCze5wqTRohwp2lWOwGYiKMKkKBPGvbPgps0fzOMv7A1FLQ3D2oTVrDs0uHGKJ+DwmlbH6pWt3kIpoZVWurd/Ykrx6wtjZ4YBvwCsxh6w/3ysBJsB17WdNAG69xxWEURlx951zpEsJuVSac/ddbULUU+T0mIYs1b3YsNOZP7wCheiIRVfVjPapnLFsZyH6Ms5iAg7kkIcphFl1FZNicE4FaLQwiCYB6iBvJOXKQ4K6stBqLVa8Y2kx0ywVZKIS6TJ5C2AkDCADwqKJMr8ZHljTUgnQPVMHwIBj8/KdLgQAVpAF3dm5vkCQwoQ8ggkOaruDArjKKo9QyFtJlFcL0aooHIV8lOAEtXqsOVDtw8MKrbgtfRt6wIInO5M9eCKlPX0bkn0fJEEYfA0nbksyCc/Zw9wWaNUDN0n5WN8G4LFjWItXlYgomXz9LQgQak8ib89lMoG7ywcooY2iTxB+mClMnYEm6gxETlNHzous+4iHg7/0bIVTDzeb3F9EhheR+7lZvS+Pl/PHzydHquRH9XP7H2anfrMXv72qnZ2K8jSHydW36dvgWsKMZdBELQBmDYPwIGIpRV25aTHXjOgbLaQyIKkvF4imVtns6G7R82ImBl3BaBVtNWIR30WYTL0SqDFb4n63ym4RzNqzWUgaj9cPWMrFuhtYFLVuI5tzm0zmks1kjnzb7Wy7yfSWscTY3/0piEN5r3zbogNfEN0XBxbBVf4WrqrXlaa3yfL9v5Y//by/21gMrxjZ9ttvk1nPli8fW7TosS+3XK1cgY5a2XCm2pB/vt+MuYLZTKqZlBep/OPeM/HKSNeSqmaYWEvTqSVL8fmS+fC8yiyq3Md59K6c9arNiiIgnRQRLw0D6iHi1f83Dxs6WzbB0zlpcY5ZXJQWF4VTi+Zgs0VLQIpsQdJXYM5DZU2N6AbzIxKtiqPbaxQORLbloNHRetHFG3CaL2qDIVq25srNeDOnBPRf6aTZqP+kqmbe8qTiEVu+Ap8uXQJNo20jMRouqTDytqlGrOO756y+6KrNdIQt0sVr4BMv5aVRGwadN/9/nGjWBO3ExRaQH+sFjWiK4jhPgL5sIgEShfdkw4D3TbX4u943wXnqCL2c531Tn0DvW++VivdtFKo07gT1vtWVhS6Yza2sHhF1OS46v5O+D4A3V1WPnr1HpY3By33rCx2lnaobkYtVV6I8+xW67OSh/85l5z3rsnuMuuxUn06b2GIuLQ+fHHjrL/QtkBP8qCqy831o3FnT9wx17mUwPahvM24CvhyUj2VMJaC2GmYCcy+TcuDMBc50UhnpCSPqKcTsIzFEvYBVYQTpZWGxPC1W0oywGgTwKT311elVMO2MEXE8WlriiAjNFZtItXVu+qDa5Q0Ul6NLBDqKR5D7w6TkYFaBLxhNYDXgKsDvUgTjBLV1NTQ+m5dfUtqOMrWiMkH9emfNquh5uXDf85DwA1frQJmnM+usIRA9ZwgA3j5dF1KJobrTgxCelKIAVa8/ff3gwZ3oy8ZrUm07/TkeQ0IvKEDghdCQIaG+/NCQiK5PcMrHUNtjAtJJFfRGTEnlD0yKZFI2oAgnO+GVmcXDhhXPhE6gueJ/Z/RH9X8CGZ3NBAAFNTKXMikfzTBooqJSSbTLIqh9RKtZyoESugXNUjGUKmEolByhIWBqAQGztEBALgMIaOUlvQquOZYuk5lqI6nYBXwZLCtHu1Ws5KUYOlATQPBGiuRYsyXh0MDZoQ0wWAZbAeCBNkBowNKm0YLOAmiO4CEQTNgtZlbriMN5oJx89dC2e0Txnm2HSHTTRdsmX3DB5G0Xkdtuee2Wue2XyqsubZ/LblcqN2266H2l5auvHlJH2GzyQfe2O+Qlcq285I7tB9mRpJX4Vm7r/ONll/9x/PYVpGfxrlsWdW7OOf24enzOZvnR8X+8/LI/dm5bKb8nPyX/ccWf7iC3kRfIbXds65bd/Sdk90EGfS89Z+6mdmkYqDoO5vguJlUGlJXcATBFo2kxasYJ7YtgcsvwNCY2gmWa3QGWqTYs2TujUYrOlDlcQb2GIGtLgdZBwBJmSQ2ljnRK3YHTX50B07/DLI0fEMXjzxPFUgAqPWlMRcKRaouITjrbz+bc8j4vjatHPYMSix/wGpQQGsX10DO0Snwv443/vusWwESPuIHsjFCLkfpoI2TnBlHcgI6Bvg/glNwg9tQXqdcX1dcXnb4ez+fK7OEewBjq9RtEsvOcjSqvEjecvn6DiFMcD3EDtufceCY78dxDi6VkJzMYE9P/BiQLMxDDqoKfVz4g4wPxAkCjjSRu11oHEoAEG4DPH8a1Jq1221fv4nLtXwj1whf2XG7Xart79aTvBLq+6OjwEvvs0yP3POhuM7ur2V0Oi65ZR3TtOpOjP1ntNre5H7ytrXe0/La3o+OLQV/7QE7PXIZnHCAJUybKcdl0qDPRPwRnZDUpk1HyRgBZK0OlJBEPpOmSgWRc1ZVonoMM+VZwqm3s1P4/CE4qFvrXgfrYDp+qdbKB/ofxwzXA85z+Kf1I4PY2ZjazitnLdDNjGHFKGJhYFMPiRph1B+HmuPhAWnoCvsQDQ0DbTpyymGrbIVOAiSMVI2YgE4t8Nzd0zuJlWN5oSWXrVtBUK64qlsAZRU+FfjUAe1YDVLYzFq2GUfm8QY1WVQgGdznMOmxrdYAZwMIpkPAHjSot51LDKHEO0JH+MAH9aoUbdDHGEwFoAPdg/EbtUXuiQZcIluuCAY9ba1QzFgcYEXZ/3JKIswG/D1Vz8lrvdT7yHOkkO8jPdufmcaqc35LyG9xuuV++4u29t/38CeDh52unLJuQw5vUI8ZtJ9l/5jg1K/ZrDPJdz+cYo448NdG4a4onFJSWNN2+IhVu8bwhN7szA2XcnIzmpaMrstR7/1g5fZ/cMr1ipGEiUQmOoCuaX22Nsb/5/J996kprRU4oO49XsSpzfk4oN2wLq47Jf5Y/fFc92tXk8bHXZgxvJ879u4n/3W1q1cpfySd3bNq87VVuytHFUyurji6ZUhE/+taijkjsYdeM6i1ZntAw+WV50RvH5Ptfqi4xCONNzsrmkvzOhgW28cNGEZN6/FAM0Mcy5s7JW5GpybE4TXKmPeix5+gzMky8imM7GzPGVJoNJSbuqLc6KGRyJKCfMp+bU2KttZJ31aZ8h8NsyTCpssJkKMnSGDMtVke+WW3MdVgtBpM2iwwdztoz83ICvd/Ib153e9qeM/1pYr51BzG+sL6y5g+MXtH1+qNQqqI+uaFMC2DUMcx45i9MSouaXtHftWl0w4HGHhoWh6VxNcGotDgmLLamxZGIPFGfg+mUgZHtg9acgsKSShoUSXfb871FqNGJ2EnZJiOCIb3ahmGtSgPsaCzUmSU+UwlVmSUHzRcX882YbjvgVUEroCg9GFABbFFuluoyS7oah48ehz1xNK7DmcVwWgyHMdFOGhUHprTWiHYe7AMp3wEqL1FdUyMV+aDUNkKJnvOe87LnQc5E/4sz/2NoYhBJ9GhfU1ACytCfOE7N/DEAcRY8RLS1376A0qBL8Q781CGvOjXzHICQj+EZ5VYBnsCmOwpWR4Kpp5bHCGY0aLeJzCzmAmYBsxzkyTpmI3M1cx2zldkOOu925j7mZ8yDzM+Zx0DOPMX8inmefDRgDY5Md0faV9z4ENI5Ee6uGHvhtof9jqhYne4uX7h6xyNYXx/uLp1w8c2/wPoh6e7iSdffcgDqU0PqUcUNmQYqrincXTTzsitFbDI03R2YvemO5/DV5vBB/9zN9x46ig9a0t3eeVv2Po0PRoS7ktc+8CxWc+kubabJirUuNIJy0geJWp/FC3RqvUCnVlW6m60eCKlVmaVRpKRbNTjR2tPdmo5Js+fRshmXInTrZsyZvwjvV6S7M1ZfsmkLLZullYA4DRddcdU1N2DFjemDxst33HLHXnpjlm6CN807d99zP94/lO62PHLgIP2yD5ml/fDM9ujjz/xGQbDddk9hqAyJENmPRIjE9CVdvmBJGKrgLh8sqxdxmlbBdIyPhIk5ph1K4xdCaeUKKF16PZRuuhEm8WU14kO8tO9BwGH7LdKhIyjgEyOhSdVoaFKPoYWO5VBqAg3QdekVW29DGNc8FKr3/RKqXS0YkngGSiNQT7kB7fGSIx9VQCWPa4h+cAhxJZXMG9QKHgHm9XcOkvBVgTE0CJ3pYY1WOdCvlwgE4SEYVxFH1fkPsS+rcuvTaHm7o9AnaL/Twnq2t6pAUMtDHwMfQaLnHvE+0Cq8izgGvoLV7kAsgw6R8/41dy7etWtxvn/yD0OaJ1V7956s+m7t/JdojLTQoVerLVunOfLOPSqX8xyxyl7lNm1tB95/pCl57vk9O84Lr3YkHlxiXjpy4HYOV37u0RLjslEqi3rM4p9fLR/b481YyuuP/ljENRbZ9dou/eYxyM2D/3pI3aHkkC/O/rxvd58AK5IIxcFiAD/qZUrtaf8itb3/W1qeW012mK2H80tHKM96uxv77ldeX8QPGUn8I5eY8DU54/TWwV5HLTeRvxI1uTj5wsL+B8tigH0I+obA7pjLlDBrB2QBSXdlCgUhnNX0XpNOEQZnN6G5BCSXnv3oMCsNiyzipBRLV5uw6IzINEsGmgYuCmbJTmiefoFZckMplE6F3NgwVAKcUaY4mKrOhcT/Q0no6XHZyE4wb3/sAnj1ORrEalDl4rX3L7qFeD15p/oRGiaZ3IO+5ilnvta/o9fRvIJckKMpM0V8eVS+6NO4ZkDSIw+pFIe+hfG7VQ7Ce/3lLAtAj9ETauNMSZESch8YG7fe1ffJbvnjf726q1P1DCfIh+S7ONv9+/ffr/rFx+ReUiz94q6+z3v3dez83dfE2/u+akbf5/Ih1S85Ya88R54mz8GlfAzX/zDDZk7U3Q62+GgYiQcY1LrVafhHxHVhkT8OxkRXQTavK6GrVagnHAgLNkUUCFuf7mqsj8IzjGKGxcZ0qqIR6VwRhQGpVyJiM9Nd82dO0tHY2diwOB8zHqRL4NcWZIDssAkgeaK86KmRGisG1Kg4iRfba6SZY4EaU0EeVYM86grYpq6iHjiaHNKgSvDlKjRZ3GiwGDnke41aq9H+V0k2JP6D113nfM+BMPH3P1wa5mbO3XhdtTMo6NnbSPFtrF4IOjuWvCofMF7vlFt1mezUH/qlzZknazPNmoOr2r77XvV1G+fO5MKlmTq5teBav3yU7D8Qrc1lq6ub63mi0ec6QvnO1NbHH9+acuaFHLl6+VROdPGvdWOuMclbTv+Y2/rWUYNu69MGQeCuiAs/3g1f31xdzebWRg/oTNe2234Jc9F45m79ZNDhUaYOENmRgaz1snTKgtcizOgR/WG0GN1hMBXF/DAuMmin5kFdGBiT4EiWHwc7tNue6/IWo1YqTHdl57uLsAi2qQVGnk9L4zD3p5y3dKvLwPZCIyHIY46bxZLSJGrR+ud5qZqaFUUhaMaXj6CeP8njh8Fvq5HaczDONaYemw7hxdE1Yp2lSW+yCeEKc3xoK50RVrp0I4JrOzC8CMarlg/6tIJPiP7g0PqCaOziug5c1uElVaAMrMSuMRHCaQuJVmNU28GACi8Os1NtdrX8N3Wh7dakx+tJnv3DrTh8q61QTTIv2nvRRXtZy4i5lm9JhdbIX8vOC0+XP+/fu9ylD9s83GStdjLnsfVKtvze7vncJz095zq5gOtRtefbuH3Yx0WnH1ivmjlKFelL2Uozp/XNlb8ckuDuG03jqhnyMRpX+IAxgLRMMMOZDkBbU5mZzFwmSbKYVBGO2vh0atK0WZFIRLm9IC1ODHdNASCCGMeVFvlIyjWRhhwcKEEXULmDkR7Fo6D4cSzUt9OV77IAv9rSuKQvP52y5dMlfVnA0y6AxtCmKS02maVOKE1Ki5PMUhsA7DFpcVpEHGMWJ6fFyWEoYIhInJUWZ5ml2VBKpsWkWZoHJV9aWjgQl+3iVPoMxRnUFSoqr8KiBQNJoouXYgip6/JhIgzBtWZSw3BlCUvzyPE1VEpIozpw5lxQBIIjEKJu3Bh6kBSnEausYuWtfIymoEBhMBVC8FR5A9bYYNNyokaXUjBBnQGOgbJFsLFaLlrlc5x3qOGQj61fvv2RtYu2Xb2blKLPLRlx5BCS1DSF6tZ1flvRue6B2dt85UXbh48hnxaF/dvmjB3+1KK1j2xbsX731ZcmldAJ/iOlPT3ae/eR4jXbDp/a3j9j+3rScrqFprN9jTH7imyDQV4Ffw2AyI91rksm12mOblu5vbK+cmLO9sTdLTkTK2uj2y+8adrdiadm9G8/dXjbGvn4viflp9f3LRyYZ8qaKh2NdfaBvg3STLbhdAUg+qQ+H1jVVpGWRnTA7KE3zcDtEfS9qtIY2hxKna1hUAeKO8pwHFSqWIBoWR9F2R9SEidGpMURZqkFJkN7GrFwDZRG0mSKjjRmUJQp+nk8vpit+FsrQeinYs1tOKAj+K7isDmOc6DdItUNhaoOvquknB+DVQ0WcSwMdkUzDHbrWHhWyKciozppCqYlpdO7sTSUlzIccI1bpNIQdeI+IRSVGWJ1DYqkGFTq0apAVayBjWD8UXt2EblvIEBptrvj5oAbxx5X88ZhOrhw8QL6/aEugfUD12RdiNsSqksmp9zyygev3DIluX+NnFqzH6r7NoTq1LY08abT8p+WJJNsedWENXlzr961+ILt087JgSR7mD2MJte1Ox5bBR1AP6se29HrXLN//xpyPzxQV8t/SmM3336bVIfz1kyIVui3X7B419Wn1ejZPQYnxBcM06x/GsYX16k4wMoWjWFRoFFHVQQdS9RvG8996jfuz5toqrOKpjoDUjolWo6ouwS7xVrCMSmNxY55yt0qjUWwDyYnY44agGXi0asTWivh9IQjnkzCPUsCHPFzYj9HfP1Mv4r45HdU5CZy9c1kI7nmFnK5XHrrHvW7GJvr/7jvRjbYf5y7uG8rx6lek7+WRxNB/jM5QnTkZbkK43bn/wbm3Af+xMd8r981fTdwnJJPcR+uudeXMy6mkQkwqL7KUHdRj3bNcXRTM1IZyJVuq80fiytxPbaRgCTQ4Ho3kiDxQJAkHFDUaInGHyYMPoD6YDmcGghtZYIXEnE2TAJ+Ldmn3/R6+eq7i40l+8rXlbOGoK1M/vIYS4wz2mIT+7++Ut52wz6yODFsKiE5b8mfsCVZITbL2T4sb1+5LXjPqtK3Nppu3HetfPum/n+yLrJ00+t3rL67YlnpvjJbkM0qW1dGzMeI/I8ZJz6a2P/PK0zX71M9/f5H04j8l7dINleytAL6ynDm7YOG96y77fgmsnLrvmszNvb/U8mxV5HdGQ9oTzM+phT4fiwzjbmSEXPDKPQbcRUyzUULHcfgX5kZyQPADuEbZqVNUXLRypR128hggVZgrHrLE7mVGTXNI+i6+SpeSoyD2ikWcRIusa9EgYwVGXyTkbH4QyVlVTXNo8Z2TpqipKw3aP3RiAF+aQExcgbWByhXHSxk1AG2KpbQqG0WVTTitwDfBRTOcwcQ02m0GjXQvJwESdyPF5DXbJ8mZ8q8vY/+9WtSee9L5AriZs48vtHlMsVTT8sn5L/Jj913hXz6xMdHfnH13BzmDCkmY5evN5wkT+4ltp89QGx7q++7p2P2p3L3Z7M77ngwToYWdowqq9Wyp98kS1eN+OctpitVGzOLLlu3d+u2+Q3z7vnVs/dUVpqr7t72iw2TolNWbbh81ZTcHPmrm1cSz/0NY67K+Jn8t717ifVnV10ez04cWPDQZ589tOCx6py6Sz6bEx1p74z0fzDpy4VD97Z2tuyT32EYjdwLCv4OmPPZjJepAO2OozNs0DqYTtPZfWnRZ5bqzw2GD5MtPDAIfFNmlinDnM8HK2PV43AkYAQa6epOSmGHNUp81oC/nAN9pnIMUpdBGn6PoFaq9azodjWqVdZz9JV7KYF/ceJfpOLe595/4FTfpN6Htstvf/PJgWu836wmLc8tX5/1LfklCfyh/Wd/nt1x2/4q0uTvHAlEJLvuWrkp47F5T23bMKnRaDKU33rvl3+X3/7DMbJspULamzOLLl2394ab5jcMIbu/2UtE++Jrbtu2xle4+M+TLiSevcNHXpX5gSy5j6hO/GzBgYSjfu3fkI7jo30pcuPE0zsqa8jTVddddfWKydk5WWXXbLjvimXEoVB45DhKYZz/GwA//U3/IpPJeJhKkI2zmH1MyomKLpgWx6FyS42LI8YZN1pfkoqPw2K8CeDOgMqbTVXeuWFoSYstZnEEqjFcnBBGxddixtQM0U7z/6SID0ZIiyrtoDMQLA/ziGlb6qESEGwJL3YCl4wLApf4ilFb8Sm7YQTqr7Cl21uS0TKDcgkbB0EEokbDaIPUIIxGVAyiEiOL65NB0JktdpXbjxGwAFiLGiXA0cAlzi5CGFRbQThwLZ+Dyq0Ac0NmBdlXcU1o1+/kxy/a8/zjJEBuf/8DchsJHhi3/eWv5I9ufV9eIr/zOCndeJyESDMJHd+48bj8tnxYfvs44Z3C4xpBF2BdtnlCQXHdugnxGXkpwcltvrloSyXZX2Eounu1LGrvuLKILCoyVT46Xv746cf7Pn6f3E4Cjz8uvyMvef9W+aOvXt4+7gBMvdvIZtrvxu98FjdH8FpydXZC1goFBYJ8Q/6s2IS18XKn6g8HKsxB+Z6iKyuefoYUUN2n5N3gvicNzHomlYVjC0ijHvc8SdX7cUDrq2Fs/dRn6C+CsXUq+SCNNMjJA0BWQptgijfh6mmetxxUG7JU7gplIbmAGbc8k41M5uelaBWMltPyhM6cQ4pLK+l4ZRNqtDMwHHRjEMuPDE/UQx1YZxPT7QPjA7DjWTKMHCYn4Bj27LPys3KznA3Hsyt3fEXGkJVkzFc7dnwld8m75K6vcBcDYnPOilkDpNlYbGwxmeSnNGsnxGY55c9hHH6km2ehe24RfXvH+T32vzIXhzAD+jG2GotN8iGXZcLauuICRg2Y0agfmXETIwBqbGE6mdnMjYzIh8U8ah6qcUcWadz4aFQcBYScQy0Kxc0+DAhZEsEk2WhELEI+aY2KCeqOrzNLBfB0QgT0jjQXt5MA9H6Qz83z+dXIJHXDgEnGA8X9eaCgM5hww0wkuZpPTZg2HVmk1SJNmqxskPEjLFFoG6B5VUwhOqsGOfddftAKg9kY5YQ/G5gP+LwkoQyLCR4k/3c8sZGdClMTY5Xl8bMFJad55MYrub27TcXGbSbT7vBi1fSfYoMPfib/njJBESimgc4fAM4iy6l/aXfejHhiRt405IZpeTPUQ04KbrdwUi+/tFtZbbB7yGJkBcOZu5mejJtg3JQsixKQeXGw9Iczk5gZYDMuYP7JiI6wZMmDkQMcHxhMt5gQxYjIiHRqBF1RNWIccAnYAKUU+quooJuPcWtJd0EkgsFrzLBYSIed5rShdegmJSlfcRmu0RuSFoeYpSkw2KMj4tS02JlOTenEjqc0Q8dTFaBhTEuLcHmmiwdAkecIlNKcdjD1u3HcqhWVdrCupmH4GEyCFzv5pgybzt44TBg3YeYcypoeeFdqaEQftBeYdEhTcydN+wnD/MmsH9o6XoEc/CDz2R3UIwRWoDZY5cETwPrBpA0XiXqqMAjjBXb1aLR02wzWzLgZOLhYYsAcQCe2WYObaET5gFeNO2c4PIIvkFzXqWan//O667+e3r54XeeePaeO7NnTuQ5M/d5uPPJhDLktva+pKvo2xGdwY8ikaDCrjZSX1CwgLFlOWFmWd9+bXTyqtrNhyJBtL74o/+VF4k3qJpJcUt4qf1HzMZnUG2Snqto7181eumyObvWY3m40DJU/68hHaBOsKktgvkeCLUlWxMhnbfIbxvz+J+TdsjzwISOGDGnorB1VnI39v8i9S26RV8B0L2+Tv8jflYzhWrAzZ77Uz9HPZ2qYqcw2BnNvPNSub0inJjfgKE7upPk2qYbJeNcwDHf7UkTqNDolnGnRaZZsikjFbFGbEzcqUatM/kBlVe0oJdFOMtL9TTxVwPWVNeJkvjvLGSwKKQZfN2PTj6GwJofvym9uHa2MZGxAzOJ2OFpPA3eW1VHeRpW9PHAxurKXh1aj8uEuTYX/XvqS88Uvp8rg5NdUBpXqrMjdsf0rMvaXu95bc7vBILC/sAma9zS5ht3qXfID98hn5Ab5hW72mXNSebjpB1JZ1fU17fxXKJS/zgm72/JyRrvCOU+Ssf84J9p3kOZRx/hskm/r32BT82nVnAXPkuHk0HM/JaYZvbzqzN0ZX2YUgbXTDDJ6HrOQWcqsZC5iLgHogLw7Jy1eGBGXpVPhZThWYfTOhiLivLC4GuNl4sURZONFaXEpjbjOCNO8k/V0GBWsU4EyHAR4Ijxg8c+hOwIB6BkOAzw3gm7dRXA2S0m4XxwRL6EfeYlZmgz3MBXKsINVUUzmskbEgFlcmxbXhqVLYV40JQayiMUKXhxaIyXnAxePHbNsOXLxZEzeWwMzZM4yKKyoEefx4soaaeFQYO6m4fPXXoKzYxEvNa8D/h+7FN70V9cUYuUMvitHNcSt+IyR+QfzsDAwi65emok16BCiOS8/TPWjeTEwOWi2H2Yqc6Bc6BYo5GwKjJVm/p1N+gqxWMCEvlWYJHK6ulR3e2n1acGJRj7c02Q8up5WcNJampklG5L51qxI6mUymiRJ21sP+Aut+QPLOpQVdRjHxaMH95vAFFysTMoGtZV8HaqPCM7a8EgjuV1ebBwZrnUKkfqQbAjVQv13M/ngSW3/i9NeTJL3bUVatbnYk5vj9xuytEU28rbgcgmnp6BrKtn3AZynvZFk0FuM+ArmlzCQuVcO2mQoWJJjwFZZwCxhVjCrYabRqI2UxUep14GY0YFoioj2sKSuhzoHqIMIWp3DogAgpOGLQUW4ADpjPEEauRzuvDD7ogDJpYmr4A7m7fSoWAPTMULEi8Ki/Xgq1+VFxZKTTuW7qYrJMaP26NJfsHQl+p2XpLu0c5avgqJ0MWI4OyALkBLBcEKZJU1m1swX1dbVNw5rGTF67JTpM6gCsdtgAmoNMAEdfJdK07QQJ15eLuZYN7YuWrIUX3bxOPkKLF0t7ctWYoWXF1fXiEFLavQFF1LkzotzYab5eA/htVVagR4wEQQ86PqEwQOmYCPxYMa7kwAmV9eCytFyvCfBa8n5Z0yQh4YRJ9GSBIUo2iqYclY+wQfh4OBIapezU6krUV4lH6PHMczEHjxMefeyh5eH3Vnyqod0Br1JK+gLdOzCniSmWWGT886C/S72mkSPvAomWHVpD6gQuvZSWUhBPYmDWoZ8rUw+XFSEjko8bw6E8+5dUV5QHLqafP2QLkOn4kjPt7tJaQ9GGaEpdoyNlevVTkeR/a6qW6BIP2lhpOLUkcHG0AQzueBy3jo7ZU/DBNN+Dt0PIPjqHyL4mgEE/yQieE+oIkbH2QkY/kmi0zPuokj8v0LslgB6e9AKw8CClgxGDf4XUP0PRh2p1ges7ONWo07ugVL/eLKrdW5r69z/DUzvfdOIXQT0pFpnhC6gJPew47GbVrq3jLIG7irGygSYCuYGBhcOFNOdyjjKjzZc0SH6gZcqkZdwOYtfcfgHIwjlSyMptYUmEnIYZ1XrwFqyqLHCQhd9WEx6MGuBrhY/iF5Dbp6rYACXZ+Y7aQCn2ABsVB6me5R16UzBUsXliixAcbeRuBWvA0+sUXMi7kg4tMEELgUTPFZCVyJilmGP9rW+DY9/eEu/fKz/lg8f77fsiRy68amiX237leuaCXVN6kf29G6eumEq/ONO9PTIF/jfun7FL5ct++WK69/yk/twvz5y95jaXfSFBd6c9P6+Db3dA3ktYDLvYSK638J8qgQJNpURy3GHTCIOo7rOlE6ZaMTZpAUNaTLj76Ur/cxSthJGzg7RtEoP0GI4mvkmUErlmFou2aw1dIeGMhq+NTOJOI0sslrcOvKcTRJUwo52h52hq4IQmZCz5omidvYQ+2c1HWazm9ty2yUvEYFEiPDSJXs2czlGqz5U7f47ydsvfyJfLk+G45P9XGddqAd/YA9dHJRL3r+pyFgvOotMVnap/LsDd8ifvXQJ9nPHAVKxhOWzHG7bk8E8o/VG2SV//BbtYz/JIdewCzg39tP3Ac0NZkkew+iq9W8BBpzCrFOygjEva5LCd1MpzWrTYq1ZKif0SauyFABEvUPJRM1MS9OATuW1MDViTWi98WKgRmxDPyFIW8lVAHXjLRI/BmdQK6ZPOcqV2E4mMxDQifuBOLjiAuO0RhXmauJ+LILirAcjjh1CAlUxTCbENW+sw6UWPLEGDvduAYr7fW6G5F33dzLhqP55Mv7za91F4yrD5aFmV044kpPjEmSDkJ/pqW7McQ0vLiuPjCly9zibq+JFodZAsZUl7tDYSHhewYTD8jMvykflCzVNz5NJX23d+pX86PPj71y+ZVhDfc3KiZcOTQ6/xhCxWmnea0SXGzesaV4zdP2kFXV19S2bV9w5fszVV45pi1Uvm7J2U9vEe1dtaRuyObbtvlfJyIPyhdT3LehHw7y0goYtpz5rNag5yoD5JozYuSi5cVUWnaJCJszBAprKMLikzEExLS5IKQdJ5VBEldZl4y4TIiZ1ndHYt9hYbDz9vAnM0rraB9ete7BW3c1dZnMJWFls7FtiwmZR1rWvrm7dvnUwBzj5GCNkzBv4XpW4ow+VuqIrknLSL+ekXy7yI18u+p2tZX/w5RI0/IpP7OiVgmeBMEHHu3zMKcC3ihrVdSZT3xIAu6efN9Kv/FAtfC2OI2WOEZl5AdXX+ayr73owfPeyrwZJ4Kd/S13dvnWkNFNrCvQa8js8fdcbtab72VeLGgMMzdNO0lyUSxkHU8SUMg3MnQMRcVt0YMFBZVqsiaQqy+hy4DjIBo8SBW+kotSaTlnp/hdWHve/sNL9LzAlxapIENxZJEJ3FmmA5xG6WiGCe4qgo8kKICWlyc5BDBHhpVAxFaUhYASrHSCtpxJgCOEtDup5QnGasBSC9enSFBDBx2s9AAU85WDEGFVaYgU5OrgJydktSJK6TcQ6beGYm5bMGlrltatVycV9f1lYwV3PZvhL26de0dJ6xbTRFR6tSkhyJ5K93d4QacH129aKMdyW161kzgyXr7Z94sR24OHncDUY5+7R5ba3ThxSXDR07Lihtt69FAI893jIq5mG8uPU/sLA47i2826yM6NIq2OGMC8zmDigbJhJ0k1ZcUywww0tQmWVaiXJUnKUYOJ7ukkfNVnzCnzBcCbNwGugU4tL41JLFVBTWY+go8JlMOnHlEZpbT67RsF2Vgih3M5Li3nKppznUoIUZ67/bC59EVH2rlOi4ZjpqWwfRbP06cLbON1fEtebgs3/f/k7kFr+b/44hX/9XnCS59StCPVxXdv5x3+qO/2Uklw+uA5xH+CAGN2xpJW5eWC31/ooeqwBh5eGxWAURYyzeigiabUZM18Lgd5tMN2P4w4jMYz9pipjZ9fAxxTvd1FEbEyLgUiqkTpTG70wk0fgkmSYqt0akzpei8CgnpfMNpjTjZZuId+Ju5PAvFaXw7zGKa4IrTritdCNJViHGjO7C3F5tt1h8UUHleHAkl4MvCJ01tijnoSeomgw8ONBzmXbq2kz5D44MyfeYiLrKtzuMFlsXZA//2nnRN0hmyvfvqfvA3lV3wd77Pk9nLv/YzZDR/5ulKPcSs7d90UW+Zs+k23UaEjQHiLJipnzcrXZPu0jzuKSvAd1lYbQrEXyiiK7/HubXQHWpNR+2oirrbTX661FRDg5hd7cGrLpiY9R1h4ocXY70F3JY8sKiyzICgedx8r81BNcZoyTU7IywP8smr9Anyy8AYRKc+ijPEhHdFVpeXOIaAdzF5JktvqReU+tAazcW9WjehmXVmj/Si5Z89S80/4eTROgaGWxBJVt8odMa8Ynuh4mi8ljQiC/6+i+CJjChbENzOhS9vWh4loqCMAA5WFOVjZAGrTJwaJmNNosxYzWEQ8oU61yccT9HrfKoQ3gRetQ9inWYtK9CnMo0NFG5A9JGZdHDpGnOScp+63c298uXylf1T9G7v3NB+wY0kZGsuM+OP6EXCD/S/5G9hz8zU5y6Rtvkg07n1sin7j7TvmzpUeHSfPmdw2XH9WMJmWkQz4gv/Fb0BaF8rvQx/unej84/uQrLx/8zY69D+x8bukla5ccHT6qvVl+ZHB9dx/dR7aVmc08xKQ8OB6AfPMjStFLN7FuDYsdmAcsaiMprnVwc7pBj7YCa4IEl6alcoP4ONcNcjxI14gHAQriYrIxBFfrUod2K6P4soJ8l1pVjPvQSmNwdanWoaE7ixt4MQvBDuDog3ZHcUk9reV4ickc2Pc5Su1GXJrCAoA04vaIQfRaO6ICzaGtisYB8gQ1/gBAHheH/FMOyBJkf5UP7RW6PqrKZ7ODUjCqkpiiol6PaSUGU6mvaMIdC1ednByzjr0MF/deNtbeep/8+77xvnC2gT2izZk+JtFyy9z2CSsKQpaXVU9d/+vRMxawLxGiyuDzrbk1o8rm6mKhup6eutBRue+BS+piK64qLgvnXjD74mWzaPpqcsaKOXMu1HU+dX3dXde9uWFSzy/EcaXhhHHe6icmLL/p6mxD31WZY9qnf9WTvTvfvtg3rri5KRCdnay9BO2YM0PP9NP9l8JMNdPMfDGwnlWg66XqI2jsBdJdWYFqHZXrwyK43WgmlWRquuMoGi4ElxH4jw8kNcXPCv5sqozFGjNKclzx16rkRHwpPMdhToRRLDOLpUckjj0lqo4wXZyqtIzu2na2RDdqi6Og83jVxQEcuAJechZR7P+kVmfI0uTlo/dSaqyBWSDgcuwob3ki2+KrrKppxPZZfLezwF+BBqgUqIZGRRgRlPJp/hIH0lCNe5+r9cRDPI7IgIeyKhb1EbWdRsLNoP4dhcTDFSKSUrYn9qptimc64PNqfpU1PEQuquaaDoPxXoa7G/Xexd5FSmKYurxol/oIsOAp3yvyn1555ebZk4hKTp1hlsq/LgqQU1MahkydskG9NpCbV1iYlxvQhoOurDmo8nEzBZB/uxbhSrgIufW1kWNvfuUV4n0lkiaziTQxq+X0zRumTNkw5V/Km4Gzcblyxgd2+2hcVxinO46jj0dsjKAE0pzdz19xFxcqyhd0VEkEVTAY8rgqZJhZHEnXg4D+GqZYrZnKrv81YeAsjTrbQfVLMA4jY3G6PUa6epiXrPkDumbQZXx2M7YYW0rcBsIO1gBOpTaYi0XjgtYx6Kihphk0om+VkxdAZD1F3oCj7QUa5XlI/pu8W74Mjr89pOytUurtF5wac36OIcsp9HvV1wwUlGo2wE79K339BfmQ3PrX/ofpQrmpvyITPr3++k/lx35Fa2QP54q5BL7xtT/1lOF/XzHhTz2lpYIr1vdRxGXjG6nNz8ir9LOBvjXMGGYmxj1pTNuRTrXjtVwh7yxKXgXH1CnB6xFpcWgEnbdj4X5aWpym4J/MdKoI86mZolxQ6bOBumNbKHXLyhX/Ca5zsbphrpfzB4viiSGTlDj1OfJqeaMaRA6hxKKUczRoEv8Nrcl5tNZoA+fI3PoCYY1VY25+Qv7rg9nz6pIT1q7rTC6uv/zNHeuGRy3q/578O97J+z7t++7MKl4w95I5HZZY09oJnesmG+ON44a1FZq4lv80HM9dqAyHnHis/nXQs2fWMUzGWP0MxsIITCFo2XolhwMVvi8MqoNgMBqMhUAEhVF5RBqCKdAU/KsFqvytZtzjneCExf/IpIEMGE3KVk0gDpSNHgdXaHoD/Ll7DHVgVZALbLWpjttaOlvwYrO1Fn0zsaiVrNY+1Fe2x2760Gy3mz802an3WdvM5ZnqjHlcq3blOL8u7Csq8p183TfeCwWi0uw8dWqwuZ0bcRg30Tsc9Mn7zXl5ZjLZd95+F3pqHQYBXbQpmKcrw+Yq8juig4ahsrVVxnfwucLwru8g8Mr0gNVY+d/m5p8tKbHW5L+5sFvxJ/Sv457Aa98o1Ud0X0CX5jheTxXry/H6zRvKXojjwXaxaJczNkBNsxjcrcJA16GDjRuie6GEPANbd1iO0306BjEC3aEjiBt06YyCH+VQLi+5PTjCIag9mGG15eZRzSHwohrTPKiTEYaa4l2rkomo/F83gKEUmzmAi889PzcYyLVZPjwZhF7V7k9O3Sg4T7H/1CwXnL2CIUu+zODDk8F2qnet2uY3s0ZeZe7/nPf2P0yt6k52qlPoO2Dn+0/xZlbH25X9Mpgzf9OP1F/MFABmrWNomhw7+H8ZYF5nRFnarWJxowb4JWIlfzAzKztQRDO6IxbJEqZL3iysozARsCTifhWm0kULEaKXExNuE2cgWo01EIc6u4nYVaWA9C1ssNDOajUG4scwXSCo0oWI19basHkreYC88sLNGGnbahM0v8ZIm+YFOSaPky/ausyjAWC01ZZluHk3mUKGk9CiKZPVpaRq6Nz7tsoXQZvYC5rdhlyN+hr5sUfV3PPkye5f/ca1scecbci3sSusav4V1VVTO745srv3Vlu+IdvcM7ex/pc71sMYOK7V/Kv/iz8e+aZj6lWqV3iVjcrZkjP1GTX6OCDoBDOBcTE0CZZFo5TmsHJAl5Qq4RzYi4m1qjUOuwXsmbjDzjjsGq2GoXtM+Rkr0KaAxBNAH3XAr9VoMRatwa31NSAU0frh4C6QsMaVRB2kDm45XDJlCjH547FvHxEyDJV2staTx+Xly9kFnlxVoXxGvnYOCM3qfUc+Iq3sBR/JX+2XZ7x/w2U7XCZDliUgW8qiLrX6zm87r7V1FeZZtTdnBNhKgfBv/z/m3gTOyfr4H38+z5PkyX1ns1eymz2SvdjsJrubzV7coJzLjYAcGgUtCiIgIopWREQriBYVFU9AabVJFqriUbS2XY9U21KsVm21VVuvr7a0wu7m8TczT5I92AW07ev/V/bJcz/PZz7zzGdmPjPvKZx4/mpp62eCQVjFWljzPS+/9Jz09sw7G9uqHdLNRa48s0U6ZrJqPf9ayu5XOPjitvE1W37YNnPvn+7fujDsnb4mx5DtUGqv0hosJz5g4YbXt33KzFOMuqwCfhkYTS/pS1TzX5NW/uQ16a0RTADdrpH7kzZLfS2XAxIS49hTYJkKQlICKWmnSHVVAH36OPRzMQUOOf6aMKLiHrQUerzkVY665QlDGfs2iGCVdQ0pB5O3lRVjVrQc2IG4HBj5xIL9zvB0Fjn4qYooOy/XzGvN5uS/zbmfd7cnWxxFcOAl9pP3pEPJmKNIueU9NvZzOEdnsST/Zc6VdvPeTrtbManLrtdL6+FThIXe0dV9wKVYAgekNa+yCley6FXp6IAzSLf9JYwRn2j2gz2ylLtHOM7FC3DGbPrmIAjKeynUD+fEsNBKh92N+D/lJHLshLaABR4upAIPwwMdZ02foZaD6yn4bLo5diMc3hWIbsbZ3I4Nm2+Ew7clorf5oxsSsftkNbe16vMaWc2tMEf9h2M24QQiGb/Y+flcebfPHPUcjmUpTkTzD/c5e6E5ev7h2Hg4e2Tfs+ebo7MOxybA2e19z95hjt55OHYVnL2m79nbzNGbDseugbM3HT7UMv2T+wg82WbuMNoMtsoOCy2tuDz08ydSR7PMHc6sfNifTcs8XMJLdhT5PDbMd8SlF5eHWri/H6JLKswdlRV+2F+Ny+h4c8eo8SNhcywtx+Gy9/4TzB0TJ7TD/km0nIpLaFbH7PmzYHMOLefhsvf+C80dixaeD/vPw2X0KnPH2qvWwOaVtFyPy977X2Pu2HjNJth/LS2vxyUQomPrtptg82Za3orL3vvvMHfcvuNO2L8Tl3FoSx806epwHCiEa5Zw1BiOA3H6HM0OR/PCcaAHbhTBFxOOw6v2OeG8cBwIgGtjw9FR4Ti0vc/RSeHo1HAcmosbs8PROeE4vEmfE3aG49A+XLsyHF0bjkPT+hy9Nhy9PhyH1uDG1nD05jA3ImyAQ7YsZ3Zevqeo2OurqKz2jxw1dtz4CRMnTW2fNXvOvPkLF513/pq1V66/6pqN116/6aatN9+6bcftO++s/q7/sf8vHkpWobsAR0cEPDnXElfXL4DRIDZ9BuwLY0rbbZZ4y0Xb5RECB3wq+aAq9uAMkVGgWQvB4alDM16oa+NDbUJ9ceF/+bw6UB82gIbAtul1DqnLVu7Oz3EWGAwFzpx8d7lNOpJeSx/5TPhd5hIQYv+rS8Tl2WZeaTEnu8zZix+4efKIxpaL196x9uKWxhGTb35g8YT02uH0sQn/6/M5xhm/+Ub9W9CJWrhcLl4vO4sYQhWAOpufiLXJ6Cl1MKBXMUUB+S0RKlVZBAO9twQGdIs9hUURagi1MUwYQE8OKDugDEGnGFet3MpuZTHQc0hZeQGUmuRaVGpQz1m49bEtG69hZz3+HFtya8V469lFM4qyLdaIbaX0rPSzu/4mTdx//raJRYrok+ySe9LaitKWvF3WZza6f/6zT6Q//kSKbbzmRp7f/nDNRbmCszFrfE7eDc4bn5/J+Pj+8z/6oJPGZBmjTcZiWprCQHRTmI7ej8B1MtpSJU2EKBJplV6GSy2lEL64kTC/jTmaynipkWBvczE4jDCW0JLXkF4f8xtpupRLR+OlQZQcdkTLknFS5XjMNqGVEUo1ZoHUF3c2l2vLcGqBZnIddnaJ0XHisMPELlPnjq6rwL2dmsX/fkDdE4nwc1WP0CzEgvLmSON0bxZjDtMjj5gcfJZ3emOk+SvluhOHI5Qn0uurreIq+3trhxEkojqBM5uyX/YAU2vyisjgHcIzy9nhGwzAt+hnXlEuSFlkYoP5a7v/ILK1ok3k42bzvWarZBDt4iH42zWoI1d4zyZKN4lwtsW8C3Qyg1p9SBTv4Qa0oZlbmGpDbgKNf1Mi3RiwPCsQ3zFeQTP8FejMt5oJxQnMl4w7Gi1SdwV0UQnYKrlYqAw90TEDTnKzoZvNeiGAfCBv6tsYrhapwCzNcjqwfhFzDEqEAwaN8KzGYM3V3fxYafHIi5+9eGTxMOlNY651UDLwl2oMBs2FxcUmsbbFPE87p+RXs1asmPWrkjnaebaL1KbiYo4zyjaptowznQK9PZmiky7t9U3ln0c1AUybKkvEshsDg8G3x6rbggjgHqsZEUCNNRYYFURk0FjdmADBuDcgjLsygfillkTUgaigBOmuOBo1Y1GCeH5hCeZoKqgagSJVjSCHVcZdnlKchylLdBirMF4ljfDeoR9WW4+bjYl4y4gxeE4j+cXirSPHBmjGLOoMxEWaVRRx3hVr9OVkE2pQtMyCMCXlBGPYaEF/JCJCButlKIYgYi5YWMgT8jg9TnYSFPyptyMR8Y1IpCcbp1c6KYgtwo51nlhAs4F9/46dfg/e63hNhELd1D2YHXn8eAr8vWvLwBVOzhXL1TRpphOyDEe1y+q9DZSgNVyuntWQqqKFtYdE/CP8clUxwsRjERdfEW35bB4NY8K4YoM5EBK+vzKbOW/NKvLk3qNWsuH3XLtk9vhAhSbYUim9wCtV/D142FlYlLOy55qqjW2eLLuxZHxkyWiJ/zlvk+5/8Bfjik3W8XsahO+vyB4DN8q+Rwu3uW/2+OD3FkQm4E0USnZv9mi4Sc4KuEVAqS8ZP5pfxNvYebLf4eNvPtZcSXPRHqz1ZiPMzET6l9Dj2dFUzTfEsDEQiHzMhYUjbaow+pdjohW9DaItVXMBgdVyWQP54LJymVnLYBQqrGJe3gr7wcRSKficubv/wvSsjU2CP8MHu+fO3f2B9E/pRekA/B37y+69mz5mo59+WnruY4WWztH/Bc/5i3Qsdc4/5WuYgd8t3SL9SPpmv128175f+oZTcOdwCzVuzUswkqKHaD53XhqTc7Q/OhHatIBGFHmaFqHKzPABDcyvMcv5xsMTsXMRGt2LcJ1ZngpyTI4G1SvOmakcx0TMLydEZGXIrcKYkaJqIQT6UBvz0hQJjNg+L5jeKp5hkIhbiZFJxUXVfAgRlFMn4TkIkn7OiEtuvPvm63yl195895ZLR87f9Ys/Hn37l7vm/5rNffSigNtb0TapuNBQWOSzG0efrzjesviCC3KzpsyYO7bqiifmj75x5bil7IKpOSabw+0rEh05doUnIDiv/Oz1V3/3es/VV3f/+rev/PqzK6/5y971rS1XPvLBNTPuulDJl9ZY82+btZ4ZF5WbLAWWnMukj4XqGQ/euvXxmWfdvvLaFVvHLdszo3bOjVNGXqhgNqfWMKHiBxdmq0S3GPpBqqbON/dqXtLsw0x/zsLZuWzuWi7qwLJsUQWWUYzqAxgYZqbAMBB/KZgNmvTKGTDdbkKDHGfXsdSujQqr6ALxbHKBZRtB3OQiEDAMETGzlaYNo2roEc4KO0w4/8sQSxUHfEzExuHcidO3GuaxeXJ4j4UQQrYrPmWrbpV+wLYfPy7M79nzA2E+2656BAVD1xZ1nXSEXX6rdGu3Q1rJu+B4tjD/xA0oKbBucNoHKVfrkGX9oZR8N2ED44b8QhS5tMdOroY8f7SaxLSGJr4VibiuyAvnUDU7rOKJcjuucpFEhkuyA+i0TJXbAIJokSDEpf64uqA4GAxSYTs7TvzxCHzYIThy8nGCp9yMwXIGT1kVMSqdYUGidFiz3BUUZ6qAM0R1dokcLoeoOcUWihqF3yAC0zhKQQOyUM4x7IbDsKuYpfaByNwOY+R2jAA9cVg6QgIyohoRiYCSI6rlCM4+J2AkZyfsR4RePOv4HbjVh444ZqZHyrdTmJyNBPtQAt+nP24qLA/SmIhwhAUUzcsDjSvrkVagJ7ZQTqk6kUYu70XbwvBxmoOLi8W1NI7JM3ryLE9rAF2rmlI/HnHI4JIyzMBIuYoXop67sAxqHh+myqiF9YhLhCV5yqvk1G+zAeVeM4IWZeMcdoklVuxFGCPMR/UHMBrBEtOK8pRQsMHaUBICWio4GxAVqwyLQN8STvBR3jfnhGMNXAjI7OV8cETFiaABpeiOv1cU3P8hK9/DtrMp7MO2K3BTenOPtFKKS3ltts7OPzWxFT1sew9b0TR5cpN0Ww+MlNJtTZMx4LazE6MXhb+x7XtY+Yf3F1xxRZuUBxeu3CO9KW+yD9mUCOhLdMnkQW61AXuuu53y+8UUjudLFKOd0XjYNE7G9DAEEeKsJoD+6gDGX8d19kKitD+uzfVgj2YRzFkOeeRILPTN/UnXt+1FUZOd9lYdwnwgwHAZxd8KcEQuG4y5/jK8RC2NUlGDmeDG/VF3EFHdi+DKugTGlNRnYnYpP93/mYXy0x3V0bxq5IRcdgIHBjs7cajl6GeFdLCwOqqtxhJvOjioNcc87ITwpFZnd+TmFXr6mOUxn5O+yZilDH7Lw7EqQa6+OcwCWm4MXQXRmjCFrkRFDLyC0zrMLrcJP02MH5cZyI8lj1VCWBZkDCO6PQScTRP1liBDltEw+j5ZcT0rZg5biknSfxFWK+Sx7YKbVe+U3q6C/gPFqUp6qxY+UIH5dgh/28G8ZaBJ9fw50tmJLEJQmNs7O5V2tp1v++CD5IvY6fgFw202EWtsQFTuP/Mjks+/B4wgLu/8WtGpmNTJ9cmJ1HBgvHAXpySilmwC7F6qFGeR+9Yq4+clkJK6TCUSgWw7tOJM1JcxG8JRamV6mowpihlwhxoIbKTy6yjBPBS2wyyl6eYLqgTI8uSJIMon8Q0SSQkmgEAKSkkSRxzX952tYM3kgpYgv7ONikzxWEI8qsM5zQ6nSifjEeX6SSfK6xNaw5P+0GE382qc4ke9QQW7QGTLmN/ZMrflp6aZglY1KyUAMIWaF4KZd94yndcIWexNHIOkzuRvpWnSkZbW3vdnbwpZvGb6Fmlla4t0RJoGZ3RC16Tbos20JW1/yGgbc0D7WcRKUrkSeQWy9TBpppz94Aqm0Imn+mPe2XCsLtHBcmoaUf1X+OPOpglBMi/ijpaz8OMd7e8QbW3jEOGlHWyUBbBrrD86IoiRcSbMoIhNXxhEHO+YwYKj22KkU0yhhvPgqWVV+AsUgy9RhWWkEBi2BsY5XWWsdBgcm5Do0BbVEujdBDmzTx8cjc8tAIu/nsLGCmhOucOcHxqOp81NxGbiW8yVsT9aqTixnfI0ZsFdEZ8Gcz+sWYFAbAnOfxbC5zZpcvs0OToMhsKOsoq58/qMhJnRMDMipkfFviNjZnT0yCOkRR4lcZvW+0ptS2bkxA+JSrbOxeERB8jko/R3JGVoROSjeEw+EqHox5TwTmdHDHKDlTL0CpwL/3CojQy4lSy8v16WOoXyHCLaW4Bfijgv18A1cfUcqmgW0mDMNg8SOxcrjWNx4RDwfLMfg/G4WLAYIZXLq6qJaK0MnU3DGQsynFoqwArNgTbeJ3h4UeXmgw7Bo2OsPgTHnXAIC606HTaP4Ften11rMPBSB/+Bb1LReJu15891kz1qy+6k9dJRDtvUJWEFf8t7c/md57J109jy2dLKSydJ98+/1MrKLyiLbKyuzz4rO1vcenzzkvaScl7YuDEw8Rwf2y/9/Ucj5jY4Nwp/4xcxQ/JwS7VwTc+11U1Ngc6X/S3wGWVfyTF2DAYwA7Q9JyOnGCldWj8OXDpoba4/lpcq1fj+MZs8owCam3g4ZlcifkmHzW61VcZh2euS5g4oRdgru4X7rKO3Fr59Tz1ldoQavL56j9OoFJkqy+lgx3bss7LhvCKn+kahmB85aaynwKiW/mq+dNoqw3UXqHboHRedXbJqlcnuzq8L+U9cumCLaRXlX3Cc2kV4dg3cGO4CLl6J7ahKyL/QngbsN1SKZOsGM+zGkmMAxstQAIfMNhkeh3LtSik4KVbTBlLVBd9GQ5U8boUssBkdg6FFNbXBekpDq1ZBCwjKBmuUykYPTiA3UNkXkG1YhYRWO6evBS3fnjeswac4a9VHz6+rnbpo0dScbH35FZdsWjRy2d7fvrFEWscqH/t51dxtC6Q/sLKm+U1eU274orOkP8QNS6eqrigprLUXGrNMmm3z7j/2g/ZtF8xqKFWrBX1N6/c2HLxww2+2nlfJqg4/Pu+eK8eyqrJRC5aExq1d2iz7qjpTmMcCSMU+PQ3S3UliojAdylVIoeWFiOgugtwqITpxgVTUrpsUirjBjScZHJrKuNtAyFZZcL5Bjg0WE1E+gO5JrH2XysAqxoQ9i92tCNJXocCKjCpHJ3oexDciD98krcwP10+vKukBZXx6fThfWnnTwyDvlyOi6o5dJw5nlzgMSgZSQ2lwlGSrRuzawTFoUye1ycet5tCdVkDaEHy6NlKjLCi50RDRJOIKDTl91AhWCK0qo6ofXCAV0YyGL49KMIxzcYeXwuhd0DYvmVpeN1zlkKOdQbpbA2iOUJkpD7WiONM+VEj6thHkCzYkkmoixqv2b6YiCqfs2iG3khSQ/g0VCtEvcS+3D/TL60CfKMfaWvkEDJcbwGBSC36jcS9BMXoRhtwQoMCIDHi8lslTmXLANYbLEyKDDQvLlFC4fEm+HC5vlD0aGEKhRSB5pRo1eq/LYj3IC0pRzckZwCDS8xhIcWHobgUlqqsL/tjCIfuWHQPDaLLUAWZRh+oXcvuPH+/feFENvYy8uw9492nSp8q5u7i4hhAqg1E1aSZnQg3t0W9Pg5JyEO68WsNQHTXasK6LShRosOTVQB5OCcqpS4OljRWonIZKgQQGdkp+38cmK9dhs7u2SEeGpA3RrquX+7tK+tNF+Q7RRUz5Gl7K2N+EK8YELm5HCp0VjHKki3DmPqa4BQ81+TG1qpFKk/gRiCA+hpKrxiA4RyUpPGCVywpPylDPQwQJFm0/hZFeBmrHeNBkZAyK2kS8dhTFr4eBzKNqcXVUE9y/Vo7zlyP+zbpKNOPxPhnjXg43nBzELKaYzQ42usCnbHoTGPEdes9ZVBkixuBYPMs9Aaf7lHhEzC6ZRFwqDmLK+wYx5W1DdlWvkR9hVeIbWMpBOnK8JpWIid5X9JkO2Yd4woBLCS4sor4r8vUy+QbJR1P9u2VA/67btePEYTyTfANyXVgV6LW5XAVoJxO4cRzGb5qork4B5RmCtAMj0Z9Af/dwGN0mgnKOVkVsEkWWowGmJH+QAgyqxpS1YKknhkUchVB9bwGC4kwEx5lvsyrkarCYIi6H0k7Qq5/hUiikwoF/pvznSQTRekCOuaQCso86XIpJEWT2nmz1XV8v6+rEMLBOOMZr+q7iyQP2cn1oI+enoteEaGMgxAwXBW+cTWjmw8iD0uoHpZ5oM+JodHSKNoiMEJ1AyXFjwrESTHkfS7T5DwkCRLWVIsqy49tSRPlO52g2mdJ8F545PU4MRwIqcrs6I51y7VGkzV0Z2pT0p0s/iozwEy4bqrD/WatdDqx7kCqD4lA9TMF95+K6OojrXyeobKEN17s+d7h29jbqktOsnrJNcmvkln3bNrFv1abedayRoXyHOraEWpVZ722V4heZ1eRzg+2Vc+D+K+2ynaZd7BTtetltVwdpI2F3s+1uu+ph3DpxrryltFHTPre7v03T/n/Bg6df/1Y8qD6pTVO5RdwK0MraqW2TKKJuTABbuIDKUs8MYDuXUw3DCJU93YC+hehqGEyvxcE0bi6sweEPlNTsskZYi12XocMQEcdntM3q/1M6ZsTMKRdYz1RUUxGl47g8/fq3oPgJw7fpHbJz2HbNYvENmn1ezqF7zUbeq0IC0QFlUSSzPp9Rdi9OAguylQNqjZypkkteqriGcow0mFaaS8ZDrhVO1sgzM0KC7JtYIc7zGbIod0hWJRDKpI8qUUwl1T2OTqUdNIVISlHYICsKkZseVtqFQuU7sh7Q3d5fD1BEd+2Q9Jk5V3msKwAr98f92+ULYtNKA/FCwo4qrIBX9hDmuqcYK9AN0eaqb9HmCgxBLgIuLUccg3gFaYsVhXCwwkylBCsodcuXgnjvS5ccNqSKVU91CRyoog2pSAFxqjpxMOwU1UObCTgLjudgDpRcc/MIu017i6gCLcHAcajkaOS5LwtzSEcUk3o+FWAoFhw9nyomKQw7+fOlr6X50mgsJM6eY3uYJnnfTk7OwebIN4T6l5WzyPVTWNTmx0B6zLGWb21jQQ2rD2lYqPf+OcLjJ3pm8foa/kOpaAb/Yr/nSCswaIbd9uMr2UPcN0ekdfi4dAwFYW7Yhoyi2J/C4TAnYiV10CnwMt6GIIqbGEoQBBij4InsVPBEXip4Ij8VPFGQCp4opPwIRWa+CH232fmFvYXv444cV4A8lvGyKpJSJRR3FC8fRrNIdYl4Y8sIWqO5hA5PuHUkXq6hOaM++fHpim2hPsUl6jP17k+9Hd0gqjFo5fjxDdHO/jm4yUfRg8A/O3DvyXtAE8/cJJrdp6wEMM7xmj7bXSV9NtLjM8a1fMkJwAU4q+vO+E/Qf4++ebBFMGZHQZXAa5mHlVo0QrGoYT7gDeAz+P/fD2ASqyIKJv/O5Nqe3FeU7/DPokegU7kOgWAU0e72nfzW5KhXcKtry4DnGjhzv+da/JiKlX6uud9zmUfDn/zU5Jjko8kxgzw1jVkDz1QOeKYHxuy+Ty31o68k/dSSAU9lJSpnCsIXq8hCfzssnsEIIL8K6xZF9ifRJrJ3RVEn/aVKenmY9KHw5qAv2OnUJH+lETR8qyaLvVZWJtX1bKBXHvSdq3o9XHoZZeSkN4/qLTFV0UktoApfwLEgogINCJggDk1L9k9Ry/KHsVAVy9epRMkDbZFKhA8GbcD6LKmurIy95tTwYWhH8uc9L8jvT/O/upkg2xWcyOmBvwq5MVwk1QJQJMoJTDNLdlpaj6aqyQXkjBf0VHqsYLXoEMPgoNFsyXIp5JQxaOlPmVLU6Y0IgRott0RVCB58QGPNyVXLfn6NUIrxAFZ4qayghdVh6rCbmSkog4Ww8LlDrn7eCgcozKwS81uxDrqL4djGP8uOsWP8s0Ab+MhUz458q+dtfi6bvW6rpL/xL1u3fLR580dbbvnzlk63fafbHoHBnwCxXI4IKJN2N/8slqxNjulURJOPCoVS1w09f2Tb2eyKng2qETs+2rD5I+nLjzav+ujigRfS7QajXTHIyYtStMOxkYpjOBNUPNqWht6ppFJUKLFiJTaZdpVEO2ehTLvCAbTzWTrUGqsKV2us0XzET4naTiYgV9fGB2VvMFHQNqBC36moNeWmAxddcGjz1M0f3nTRgZvWu+3sGEFP6k9JJWXnly+sHznr1p9deOO7G0auZyJV7UP6AD1k2vwrQxsXV8oNA61Ipk4+RtvhAICcVU3UkWtLInVyEhg/GnNnqDNCC+RxZOXlKzxeIlH+ABKVEXsVW5/UWG3ZOerCYYNxGGemoiDAYIVewe5E4E9VGub9JOL8oeePKeI4bviQ6f96ww1/lY59qGniuXMv2vX2E/OW73orfCrSPJW+Bpbs4osX8FzT21JV+K1dy+dxaawGqsvNA32MlDvo4+ICje9eYBoKoPAkMLcslu/ByWm7Q5RLktZbNCoP1i/Q8DjlY8nUbBSVDgRSghb8qLc94kVnt/S8yM9id46NWETpCO91uPJsUpOrwkXv3fPndDNUI3aOW1vY8yI04U5LZKzY3a74QJjutktHHGXqg10Zvwen/RJ0BAW9txWkXQO3MtWrFcjtMQ/OIQaxggRD3EDoWm+iI9trU2OpkQ4PrVRTpCq0rxHal40dbaC5eXM4Wm2NKyxWGVlK7maV3mi2Yjc7LRSZ2tuzMhVAeMhVWvvUWk2P+TaPZVD+F9VrZvW8h5NzndJKrThjToiFQ/OmiXq9mFSIWtDks3KkV3KsA/r4qVlXiT1/QlyznmzFYb5Bpee+aTxnXugbvSr5ikqr5adw3+TYbbm9ffwl2Gvpb2A6NydFqXZ/NEShF35Qhmf4o+NBGSZkRV8gPn4E6rPjrYi+NR4zcmciWOJ4izVutiiILu0cApopVWpg/9H9WD0rJUzJHvN564azhgKWMc4wCS3L1Kc8MWyo/CwDiyvChnc4SA/vAGJVjnuyZwsQa//MedJKg/jMelE5Q6df4dau07pX6NSztNorD4kGg3hovVYzXa9f4dKt07lWaDSz9PornxENA4j4y1U9W4CE+3N7slX8Om3hpSqVaqZev+6Q2mhUP7Nep5mu019aCPfOX6nTzKRb6HR07xl6/cp8LmWTcGSTWLlcbkRvzq0zIK86KEhAlQkSwExNudiSHgdhWzbSMVeWMPBJWTEVU4YrsqXL+9rgf+bhGVuj8jmUn2V5VWyNkPK/FLO7QRvsZLukN7rHBBTlCsVyuyvb3r2t+3foifBje4VNqdgGwuTN4cq4SdwVHEbX1NJ8oBtebjK9nJjoKBc5NQVw5+KY26GlTQS6QZx+nEtporqFmLkdK8+l7yWm1cHnoXeXDqsefxZ+Hk2WeP3wEcQhY2oJAjHXU2Qn/qhPlW/FGWFbqsI62kGgJX77cVf2YPDsaunNG6ULO5OPdkpLmV/Y2v2ew6eSblY9eAaDL8FlAd3gJitlYrEql737DkV4iJG3dzUTM5KiayVYJnemItaAVsaAvKpPxPVO/JL0FrQjKYDEr9KoqehjIzqvKUCeAkg6qmycDCyRh7FPHRbaNKfjuW1y1asSOVS+Kg/IbwzHLGb4JE0FZXIVI60ceO23RHPDMZWGoul7GQsNCxtRPi/l4jjtcC3znaKoZ630mzS33cjKr06xoOqRUwzaaY7EUCGkLtsuXU+cqRaGHLJTNC0DXTYH9JhWbucZ0TSqMlP9xFhZHVh1wNlNGK1A8E25qcoSURvObHM0WQC0LhiWq8YYsA4zrVgSHWW0Uk+VvssIbilWwPUSOWoCAtfKBD4VSc9oFDgNWUX1KQaDIcmq6j7FUMBnchPcXD1myuf3UjVfpiqS0hxEalphPGjwR4uORisTWLQ5VlkE7Q4AATRAgANOT1FlQP6iB5ABv+c+4ouT0cBk89dD6eTFRT6Waj57Rfp1b/OlN6Rfs1f6yjf+WTAu8oCjEPLApRNFqVil1qklz0AK4GebEXtiozOda58FNoZax4f7yGptAVfEtXC1XLwwxUrMnIuzgrRplJOsmrDgNQZExGqaCCKF9J1gndxWIZhqa1CgtjrT4Fqcl4L+5VQ4i52QE6p5MKPS7c1+LyK9mmnvK5H3WR61l/GpBr+oAnNQZQCj8B1RBfag2WSTjhh1VlH6MKDINQ3aaBtVvRc7dBq+TtQkE2pdcqFBz5hCp+Ufktut1cwGXSnEDcfY9wqa+RwuoyyPINEjo9K0yiYB5tqHcXTS+KnqWYfO4kNNNpoPA1Yphbhi1KsnSAGtHUJOAdXNMlpjSidqRZa6UGlDSGgIKRtCNiSHLctZmuUUspyIICMqVaJNJZaqRAFZQfD6lF6fzesr9Zak6h7pWIurZd+iq5jz4kunLmxpWzB1xcXMedXCfU2FrFmnk35R0Pzo4vXS3yNrpk6dOKF96przpb+vX7yvxSW9pBM0/2Lz/vUvaa/iYOu5Uy/F6xbBEdYC170Ed8Xrzl8ztX3CxKlTL79Q+gSONhVKv9DpWHNh076F+MwVUxd8Ku39F96HU0hG6f90TZpZVKvueu4W7plUvbNQouPGUBmIi1UYVhydgqLl5kR8GRyLb8ATmmX6/oDiEFCmyHHGeYmOlrwwXLeJ0g1uQvjqROxWJHk9qNc6cymGZUfzLAetxcPHbLgOZ3w3tcAompM/evyVV+OxmywdE6etWEMWCFYvGKEpqBk3fuK02UvxcGzKzTAejJ51DmYjNFsOCtmuQH0jfatcv47p1y/9uqVvr6SLUbG64XzDcOZrCDlDDbAaDBTwWQUslOUUnVmw6rCbeJWJOVWiT1TBanGRn/f6mej1hXxeWC1NQdeqJCPQuqAZ+zdr2WVT2+9on3rZMpbVp5vceFD6JHOQeqm5QPoFL6U7N666kzfkCO3VzTcoqwJKrz+vqMyrqhmm3NxS1S44zewupfIuZsoW2msaNysrgir5DGXtMOUNLcPahWwjf6eKLb0mfg38UyyGx1x+Yb93IAbMvMOqC6W/00HgsAx3Zl14+VQ2PsUpXe+XlnhV1X7l5ib/NCHHKL+AMUeY5m+SX2BYPr5ibZVyc2sVnsHfqVRCI3J5aMRmZVWtyltWdA68ztXXpPSKztQcyzD4bi/gUBrXJjq8tQ1qktTD+oZFU0gXgaDKODuVvTDEwWo55L/SEnPk47fboEcNvqAS2cNrwUTtWmusOpjGxOvnqGRupnBm+bzQg4xQxxVUyQ5hQgjhEc28YKk6VhIMlnw9tTTYyS8suYJZZowVhPZzZzmrDo4dqzBWVrbkVS7Jy2NLjtccvPan18I/ViB6SoPB0uN/gitPsO3G2uvrqioDl2ys1Vd1TpmiMBblZgVycqRdwvPSynnXXTdv/rXXchrCyezNtZC9wXJc6x+5eDZGtNa1w+Cfk4jnUH5bTj3aLjnTNJUHLPbsaQYc5A8onLSmSETVgQM1w2ijhsIaC9Gvj7Plk6gqTwumGMRbqBpPiwrsn6I2DGKdSRTH4oRyMK8SQ0oxXD1PzlGhUHNCe8SipDJ2oyeAsXfFAUxAqM0EI4HNmSpU1y4nIMwgWKoZMprbWAL34OSicYi+Ygn2dSHXewiR8DseizSXo3OXSm3ry5sjOKsAO7Cc4LfZD6ZYVXkzVvnGAoFw9AeBpBVDlhWT8ADWR8sc6HbjJuZTljfjKZkDJyrwBpzsqyG9zwG69EhuGncOdzl3NfdAJgsNwShcNHIFqYdmJbDWA4XbRBei7rdsNXT/ZYnoeqzzyqLX0NxiVtUoObQmXtI0gdbk0pCXJDoWXTIPvqbViY5ltEI1AaLLErGN8OEswhFw+mz8ZFwIh6oXwuFYcDisFeXA2qypsNbox8+mHgY8txBo40NEZ0VhCZZcP7NdDSWFisw2ZwdZWwey9gwUSP349z69/ZrbP31vvP5laZ+0TNr38pntepmdw+5i57yc3mY/eo7pn3tOOqZ44BQqZyerMtoqm51qtbO50maUjoQW1Ncv4Cu/7e6GBQ3wL7UDVEyvt8Er/f6UDgwxY2P18sUyGIk7TsEXHZfNmgodekGaQTb5owvlwfgUDHFRInqRObYe1s6TR2RTmgVi6y+CtQsWnpYZYudcBoP4ecvXUl2I8ZbovHB0k7VjyTVbbpK15f82q5R+e7P5f8A5LWdgaf+HHESMw1f0chD9sp8QB806Azf5oHz0Pe4q7kenki+zzNEVqNotS3PSOixnwqIbhuSk+cA/yxPR5WasARGNJGJX9+Oky5fD2rJFp+ekFctgnJ4+B2tOxcafA4N45H/BP4rTmP//C2Y5hcPgf8kkxUO7HCimBceevryxlFvBXXFqKbOqv5S5RJYy604pZYCTlpljaxjWSKb6M728sQa6/ODCyAXnfm+lPHs1BIPEG/0rkS3OWQVscXE4dsl4uG7ekmXfo3I0/yMpU5ipoRAaMGnx3+cR4f0+kx03bGjiufnf2/X2Ewsu3vVW+H84EpXO34zP3HwjLm+8eAH7pultaVjT27suXpD2H+huB508i2pcxEuQL/KotIWCvCgKOwXYazCP2edHREEuloeFxLkM4HRIdu8WyPh6niJRk3L4YoEPHOGby28oNk4uZ8fKJxuLhT3lzSf+MbpAWsIbTdPK1XeVl5qS/4C1r5eVl7K7lb8rb77I19jouwiVqbFd5ylBwwt5u96DZWrOXjdT8xLYEB5435kwasoxE4SsFw2jXBtGvkU74RDLNda9wMGzyPMjw9diHHNFAusoxUbVYhFC7zC1nEwctlgPFFXUtQ2XK2QdKB83vn1amgFBd8lSpP0itvr+bbc7bd9+3GouV/14AQs914ytb470IxTvaNx+BmNQRLmuvPm2e7rbQfFUXdSZpt6eG1nV6UeQ/vTEGtZLeunZl4jpYlUjcOqV4kqKj6ZyTZspP5VyiZvrkJi+GpmYoRpgk6JwzI5+xiokZ7T4jAjZcBoBfjqqnUIYD0mtA0NKUoU816Qt48xAo2ZuLDefixtTNLJQCZgCzISMe2taKKXMjK6nUQjvwxAHuwhdJR2++iI11gDuqKGVVgqQrElgbY9YawuilGrCskcOqYMl84Ygj8V5Bpo0UGivasMstnFQEl3ZeQqtmCg0c3XXZ/0pJB2ZeQqNNjVnAHxkpZn681KzRgqM/ZdX1YmojZKSwHDMl+ftSwnyyJ/o0FaU0pRMXEspHloOLFOcxNf6KRGWiykwM6M2AOOD00Z4R72ECjSEgkOTqv/0bXO5aLBsPbDVohyULu929pnBJTrMXrVqdlfJQEoEBk7dptr/JcV3eaD16wf/ivwBsLCjXvyWhgejizE7lEXP90fnHMVD7Zi0Fp/TTvUci9DMn1MBhIgAIdrnoOuSEnfMmNE5ecZMzOiMLTbA/qlzgS45XqBLYx+6DP15hf7TGUwgY9vMv31/cN6adsW3n8QkWi+8eCDPPXDLF99hClOOr5qh9nEuirGr5aZy8Tw5rg4nA3rxtmS3hlzYgsC07AYEjiguLPGRANOYEU6+oKjEi9tRhSXmr+3jU3KK+KlZUtN/llCK4KU2plR5NYpM4dNP9gp/q2872P1vdDUoouXNnZ/u6cne+wnf8TBzSufbzYwJtzJPzyr+pe3mCtNbJtNtWJpu7ye2g83lJKnKWbwz+cneTz45xB6UPnxYbeGtwq3Sn3pWKVW3meCCStP29FzAl+qNXD7I8Skp1DFTAvOpemMBZVhdm1xWGWW2TQ9tVroqqxqozWoTbDpctfUtqSb7KnubrOrb4lYWStULYm1q5CnkvDQeqM9S56v3GlWf7uE9z++QXs00/ZO9Pdl7PmW38yOX3n5n/If3nzeMOS3CH83mHp/Fyfi6m3fufeDeTZfIBGhflybANTuj0Hz22vaeQ7svnl1bbFBUMgXPVtv1+qRLX2xI5hv0DvaQoCoXVEJu0ahZ18o4XhpB1AAf1IPu258HsA6HRkFhsUHUbRpO5ohQiiM6RHdZIMMQB7KKvGXVMnGi5WHZlzU0N3D4lQVSIGapEpmIPhz5dI/wt7Hjnuh+cyBpHjB+Yqw0sXxThUnIgcWnJlP3AfhNxmWi5D6R4QpDp7QNyMJ/VWH6u8kk/dWEV5g+hpPhChM/WaaBuFxUU1x7RUoq2ShgGnmisI+r1Sk7WD0ZB10/t2m6XakBhl4fHk2v3Ck3QH4t+SXxACxHpRvXXC7LSHWPuofL4cq5MLeYi/vwbUBdc9Io2kBFc434ZnEjdY2RCg800UtaE3ErYepYnQS1RrHNMmKejLUWVcuOyOIEqiR9Y1SL61NvbSGVTJ7NPFXr5MZ1pukcgV45NmSDhU3ygUh6R+cnUnwIGmBdpAjRIJ1nMILyC6oov6CE8gtaKL+gLpCexzJj2C2m4mnkMjs1FK3dGEjlVYQGtGWgw5ud5njE5RA2Ue7SBspjyqwrokMd2SlsIrjvDZQZ0mej+4KhjqBoOqnt6RyLbZjna/DHWpYHkQ6xukgAKRGbtEEOfh6zOoDZFrEFt8jYDjM3odN6OyEvmAspxyKWXRYgCtVgQE87rIcTsbPm4q+ZKoisvDaAxSxj67YEArHbzohy35aS/+n5iKmeUlRxOfi6UPjfO2snO4YdRLuF+qE2Tvz+v3kaxblRLsfyfnwgfwct9B3U0Xcwib6DMZRns4DybGZm8Db69jqiXnByZt//Mo/mv5Etw148Ta5L9wWnT4YRBtDPPUj2FaJuoTDkvn3G45nkVp22Hen4+tHaz0En1nJ2eMuZ3BxO1kUwy8VEY1CObJj7juKkkT9AFvkkH2iy7SmlPzo1HLVa4qVeH87tmazR1nA03xIbPhK2cqyxsyeGM0mdqJykWmPpt8a8WL+Hd1rSDOBWOLOMAuHHtwleX7Xggy/QgUiyJSDm/nV9Xs9jlOdoPPGP3l/FTa5Jh64pXXapqyQnnlPi27fvsQ22XNfwc6e4vKCZqqxem86Vt/7KrUW8/tV7DksHiEg3PSyTRTqS+e26b85z95TrzEqDqi2npCQnlNMcnrxu0uJHNy9t0RtNZovGPW/O5f5hYavL2nUlL/KrXg+0RWS8AE7zkvourpoLcBNTlUlKMC4Pc370QaryIo/rQRo5ekuuwadSh4EfYE8dNOQWVFQa5VLhUf3JyLFFTrtbERgOlCJ+aAg6swJtCsKOBQPTE5nbpu5pmztrZM/jPO8o9FfUFVhter3W2P2QUaczWG0FwXK/29HzxMhZnZi6yg6qJrfNndt2omPkWZGScEmOXsWYCf5jTKXPgR2Rs9iPFVFsXyPVtltO2TGTCMnelYgpjDgYmNF8yiJ0NI2stygxjDeuzKcCRZj7lIJEQ+hcFykPNjCeZG1GrvLRW+Eixe2ixwfqOrSp0+XoAqPmjfLmLio1+a8/BPCTFtXHj7NjASBHarB322F/IOC6UjGJamF9c6+6h3BRbfDOjfQdOinOzUzGLvZEfh8NyyL3BLwlxV7F7Nlk8g8ch/CN0lVxI2uni+rpa9dOP358+lpWpRpx4jD/ozHnjR17HgyluP9rBSx/qq77einuHIPygbBflqdyjfK4kSmt7/RvBuMnoWD66RVz0G1jxxcsHfCCtj4vyI7dvlTYtPT2Hct6Niy9vROrabPRS+9YuvSOLnH50ttvX3r8jmU7bmdLlO+cWI17l3JKwke+hXDxikEPnM0txAiUHHzHGVi5OnoOVS44N4hCYmQAA53LSC8cTaPDxEC6jJhcotAjQ7yoEeIuFVcI34JDDuscjwBKWI99DCEooeMPzOx2c3RBIrrAT5qBB7F487F0SEdJeQWG/cSasOkN4djckfDrR1cWWkUWe7BtBKFGIKKZRl81lhyDvgx1jMyBKF319ixnilIlaSpZUiUkMYwK7aN6i6wgYAQCIcZ66wcQOX1pp0zfmauxLuHqmUjnZTt4HZGYWd0O9kKWmq/V8Jrk7zROabjDzc91FKpvprLmfbsmdUmqV6R/i+tnsrO7St6fsV4tdS3bsSNOvcNfxirsbmbSiqLkx7SXKlGlY7aCnn8yh6Azims6lO9IH25Xs5xM38bkbu3Tr06KLJrBzed+z8UdFJMdROfh7ABGEM0Lopk1PBA3NBPYjElDgQLVhHmg90dHUi+fFYjryQbQI97H6EAa0VS20Iwy/JiFut1CDrewH8HysJjiGCqmOAqWZiwHGp2ciE42U00mPwGdhtFpklOHhfgsHe6Caj/26TnDsQBZ1bDCmVRcDkMkvdDx1XhuBVj9MT1i0ecXh/v1eDGVUuwXKocu8P4dDUd9zJrqTiWmRmJK6am7uxN7u1PubDCWsYdRAdfwtWrsabWzZ0MW/K6gPhUu7jxNdyffZtsxAS75NvS0wm4T2W9EUSt9dVJHS5/r4LWP9OyhTo3xXukIdPhK3ntSd3MKkDMRcTnp8zbKQVmWloCl6aTcXmnjpZgx2LaTwCnI1Au1pI23lOjBrIwCrB6flY9uLSpfnIeOL08pdpsdO2AwgWTDeR0w9ApVWRjHY1eBaGoPK5Y2trc3dt8dbicSzfuSzfzyS+nHX3afu+ncczd9Lm4Ot7eHj6+HpbKMn9t1cP+XX+5/7MsvP8WjC0mWwjDwBtjPAqeDVk4nBDGRWmWiCHLMnrMTZyoTUaU5ZmCVqbrpGjmf2IHSnrwIWp2KvAgmBJ1RqjUKuQAkMANn5grxj8+8ufKd7jJWwHayAul96eLp+z7bt+8z2Gvv+kyYJV0svS8fSz6A+/ehrpXGgcrlirhWbix3e6oy4+ggOaHJgEar2SN/OYWJdFaxEkvvmqN56JR00/cEWzAWFJoRBDkV5YcwWiOpgNxIMwUe+6NjgtHRifhoqt87ugyGWvRk5yFGLQ/DWqy4kNBIYm31sKe0WS7jUwfNdNhVInJ/Ne9nFtDEqhnh6sD/7NSHO5marWbqfTd0gjpRUCBmjwj4lZv2YCRPJMI/e/LRauX1qaPi7kNMLR0/dNtHNdLTrGrm07dd6SmUjiiMwaaFgZqPus/G2B/MJ1XknsGJqWRkgXuHe0e9Sb2J9HAfVj43kAZeTOlpLrmidxnxvcwRSPtS+DoInRw1gXIgGYz21oNKvUHhssv19ooxAUWtMVu4HLk+sdWcKgVnloubw7YiGChpgG2qDGpNhTO+cw8T2ffYrfAn3nOPdEL6obQK/k4sfIm1/+qHzPTS6tUvSV/98FdS9J73WMt770kvCX8/+ex74C78CVj/yUurX2ImVoEXviRtll56D6/iEFuOVcF3X8flcA4OceRSSJHqAALKpepTy8XXSRyi+EtXqTtG1pLCYfF6Ld2fyqbTQtUj5CfoEvwGvf1EwKE3CMGef6EZweBxVaDz1oGmgM8qSdc1VKeByHJYv2f1fWDmqZlnpp871LN7/trvFd7v8yZYhzaf+dU96gC8CWdNifr+zytQmhVT+z3mScXuYoNw7hD3no92EtLzfHVITIKE4VifoYMdyzWrNGZmPnHcnMuuUUUcOkPP24YSQ89bejiVB57frnpEfIP4L59Le/NkpFGznOzn6VcwPKNhDtjmn5XLubkc0hGHCwua9W6xF5XvEK5LCg0ls55+92PicrJFM3Yointz5lUSKOEHeQdkhV4AHd6rtNOdP6M7My7C/JoxMq1tRJN+YyosIl6LwgF/U81KILPF2/2pxcsmqH5t1xt6fiPk488jSKs9Br1DKOhJGPScXD+7SrO4Lz/lHkV5aEuk+EnofViGi9P1LQc+2tFr/+PTB3mD3wgqu9vlOLGAHGg6fIvMywzyHTmOYuilMdHnOxr8Ndixkx/f++iTnsnxIAe3q+vU1dBPeZw11VNoA6CqT3AH/b0AMn/LQf+sCmzgRwg4Bu6pNSA/A1PPJ24GKzftB2Fv1lkUs828uXu/JcDRtytjdmD70JpL8YYMPNkPRKDvZ4SPn9umXNc2l9+JtRKTF89t69oCW8AiaEgmE7zVoLV3tzu0Rt6aTMA+fFYqjtbDzZJrgCHeujMQFwoIwYLBKJcTSEP9y1DsGipYi4NitpxzjaD/GgQzVqHTIaZwUglaucJDPQJaMO9JqR+IZJDGyhJmJAv0Ohs7UmhnX9ty2Ts2nT5ZIEzEUFOaKuPndgrzTbnCkza3y95zdq6pZ09n8lGwLVO5HOyY+i7xNdCfm+GLRnR5BSVSYRIDFwOpYu3IKxnWkC4Qiq/REMqQrppiLRR1IQ3zypMOmvSMg4bmoVRFPg2VUIHPe6a9zsQ+MmU5TFKBKWiX9oCAjJtYrfS6ybTcWGlktazWVGH6nskkvcFqTLBSaZRel16HQ8sVuexWu9tuYJ1Grb1rnl1rZC8b7a6fV5jwKjwDrnodrjcth1tIb8hXgcFfI70Bd8q0VeWjtpaAxpJuaylNl+cn5Jx+bHEsvyh8iuayUJbVYedFX4Oljh+iXVvuX79545p7frVyiBfnu9ffIe3o/Ll07+0be9jwvcyPvqtvujXjNefT+wW4EYit2UTJj/KLjky9KHodajLRz20EyY5WJrw26j3DgINqLDEvgqmXWzuCdU3NNMg7mmDQNxUUVg1rlmeSDuYXldeE2k7Ztf3aaoMNixk3rPX9tuDndHQ4uvuh+E8e2LX1znuf2P3qu++9es9Pf/mrM6YNW3HVy5JD+pf0tZTTufEJtuejT9iP2cPre5J3STEpmrwrufF9vowNY9V8OfqsvrlXW6Yt46q58dw/5DrphMhcH4h7A4TnWKypjAcImzMQhK+0yh/P9YcRo1BIxO3NVI9llB/nyzUE4zmKAGxGjYSrNIRDqDHgJNFZ/mglARj6E9GxgbifClf7x8NZlX5crUQXkV9GOdEECGgZdGBT3XBak/NYWijs3R6I51Hll7xsuDqch6vhplQRGH8lImhWgIKbF8ZcV0o/CGCFd7cP+rjKgm4DzSis80OYIQJ2ZZuALh4UGVkKq9ODKn6xR8UrRAsGJdRbqgUfdK8yi3OCcdhQYsWIdi/nA51XxYkeR8Tl4Ms1q58+sdVV4XqKhX5m4H0EKveW7mdS59Owc2vX06s1yT/AMPq8lc36v8hupn1EJxnYP+3Sj76IfCH92Ma+wtKsN52A8/gKuvio/jnp5afg4qelX/1Mn/wjgdWVatYc6t7qcn0p7beCqqvT72Ha3ZH/YzOskpl9aZMe/yICstbBOTQTNRNBSrVRDkdpUK6YQ0mfdUfRhvCht45SOn0YE2Qyp+odiw2wxTh3gazZ1iGPuxBJqChTcE0Eo7p/ZcmBNVsd+E04jOwJo4Md67JrcK3CyH5s0jiOs2N0wChNNzokfZdDjWsVuNDYuyS9A9YU91TgKWpHV+bkmSYH6382HJXPNqafAwfZE6T3XypsUn+q/AWnAUoUcGEOgXpEVxD9GmD8AD8JmalV2SjUpguwxLIoXSo9yZpJOCkFNknXJS/N7L10/xf74Z/gfmzdFY89dsW6xwT3/i8ee+yL/Yo98nZ6f+ZXxkl/hXtFvVO9kxM5A3kAi7lKLgjvORy+wbc5VHpKyRdYQJj1I7DaRHQ0+dzAdq/yg4FH3xNLv74jU1oYcVaraP4RZyFli0aum4OetXEJ+kYcShBuGp3ebLGhL6XEhQUmslACWjoKiordKPE81lguDK+xUTlwbl1DuKm5jfgjD4z8g2qdpq4hhNeK6HSx58C1vKUj31XowWuLrTEHmphVTjjXaLE1tbalucmjsjs9Nkzg8goNIadKtJobCrPMqkI+5V4RLFmBkEUFv8BsFm8Ro7MEusLWUOfzANO9omTFarX07ruJ1vbEtJYRkxPtrY9+wiZ88on0U/eqh1ateshWv7A+NC8E/+oXsrfaWxPDpyQSE0YnWl9Sq1mxUqm4Ho/UJz+HKxOjlY2TR8CtkjH5Fp+wP+M9VnUvkB+jVD2C10jvqrsFeOCU4crmRMu0RHvyIfkpcp/yHK9ZqFmY6lO0N/1cCCz90dxE7q8cmpnlVHqsmPp0DPXpeKyfhdVlajDPiqrC9+tTGXCmTJ5THkbzbsPk+nNy3aBxsDZBrgmPfdqh0Ztt1HmWmEUHfVJm7XA7izA2BkY6OO4qzvbKiX6xxjY4Ps7a0dQ6fBR1rBthd9W6Rhrvii0xTROcIFo77HkeLOgc8/Fw3JFbWJquMj8Kh05rh9HSNrJf74Iu42TYuwx71wqGMdjBYBanrWDbyT3MMBcfr0r3MK9ka1UqaStzMk1ru/T15BEjJjNNe2vtg8zOxjH7gw9Kn0mHpM9qPmRjPvxQerataWaT3N+BCF/d3so0IyZLXzPN5BHS160fiyJbK/d5IBJILsIbSV+PUM2ho+3JJX3v+OCD/DnSsx/ifU+8wdaKorRVKb6P10tbVV1t8suo8uQHtCfb5Qf3qWHlgO94ZCq6zk1VBLFaQxP1rFxJBEtm6ykGIubDahtmEceoWjcKXp1eRntOFa8KBlJeheIiLF1FVecyESyZgIh0VASBu+VQQSrWtvcE+yU768UXpaekphN75WJV7MduB+sE7aPG4Wa/crjdDikMf284XFKjw63QsCmslQph0VWSEf6eelG+3ySHWwriFSzhxutdrJOub5QxCXrbj7Ejban4dZBJXrn9FSRs5WoUHpoEIqxnTy6O0WIa7zpm5OQxOdV4Kt0FGlWq/VpWOiAOJNPYfX1fPN3cufxlfbFeFdG9/et87T3Rp4GtFpp7J7Ma2/PRNx9p1mvWgz0WhM3+Hh41sxdgwBAwbQAU+TpQ2xvqsPIhsDGWP4TPQMNyn2KL2SvsDfhb/NRT0gNSg1QDfw+wXxt/j6NhHsszVpiOwOD2IawZj5hgWPtQ+hAO/R6GtDzpQ6Hz5IufwpveRJfhKfJl8q3wMvlWeHu8Fde/HT7gTHmmyZHyfsVdhDnvoqruIKFyjqacXlzMBar9AQ5RuFP8OJAAqYgpudny2A8tH7LRY7S8QpunFWZotW/Cb7JDm6eRvoHF0aGayR/M0yS7tXhJnvZ3WrxEyzit9veEgdGH38Zxs7npKY6bkEBEmQBhjCDfzfFHPUdTdXuGy3w3F787D7TOJlb7x6A0G26JN0yZKmOHBM6AC6HxyIYYsomKgJEXqe4jcSbOZCuo8ECRin1Lbv0bVko1OHnlzEkNY3Ir7NqYXQktNvENZ9cGAnb9tBsfnP1OkhmBTWspXuP10zI1e0Ynqp0TJo0I5NeXmcXr7r9QaTdqF17oLygJNExsWHzXAv+fuwMy56fSUvrRtpE7C6VZ+muupAzVsTJtz05/09WBeC5FfuXWgQ4fDsQmIAdVus6IlJnI8UqWohPSErRIDL+3paPz5Zj801FQuC+N57zT5ZBW0spOh6uz1w9zGnJJLjrP7paxHOACaaXbLgdWdQ5Gn3LQ2Sb0k3Y1BBonZlAOcjGSMS32QuQ8Gtlf8rXUnDmhMrxksTttbobECdnOmMMUrK/jULtAUWqbYitVzNPKO05DnOTTvXwiFI4eJtU4g0Ene3dYA9t+Mm2cIG8mZqo5umjOSczoOLJO6pFR/1F/8aCeKVptqrJ6UkdKsfwB0xu4qra+A+Ig1RytWSCQZF97oUKVdWrPihe9L6er+/j5tq/YZHYpm/zVtm1fSR3SDqnjq7jpNyCtWT5zgXD9LUjav7B8E+2T/ir9FX5+AxI5X/rraStF3kO329b3EW+Vm36D0aEs32j8DQ4DcEf4gX1wx78Y4XEg410s/yT6jhyEvqNOpu/ofvRt7E/fupZvRV8r0bdgQLisX/guNL1Ze1STp70P/tgnsHgTZLwFZP3vq+/7LlRMXguXarX3wijxd632CNwQ7qb9vf++gXzpAWsrTTcZ5RvpVkV0A108W656CHQbhnhT2Sm6URlkGBdLUnTLrTwl3WxmUGc9RQoVz7I8OBdUb/adlka3KP7wrpR8ElvGHnmXCU9iy245HTHYX6Xku4o/3IJ07Zl2C9LkSSa8O4BXWjGedwCvtPXhFYRvkPOFUlyDSESVOQREE62zPAk0yHeVlKpk4zAa6stD/qZvx0Mn4/N4fd/pq9ytNjG7HDHJDEa1JvmaJkeTfPW7sI80opD9jEbVkW5dMkfH6/kPuG9Jw+bBaNicQ1X4BqFhTV8aDgt9Oxp6ERYoDfpD/m2wCL4LDfeqNXw9kI2v06iN0j/lyFPps+/0Cd5VqOM/0PNIP7c0EqnJfsYVc3WY56rugd9GroUbwY2B728S187N5OZyC4CmEW4Zt5xbya3m1nEbuGu5TdwW7hZuO3cHdxd3L/cA9wj3KGJvcwe4p7hn+VmpLMgcKtPuD0SrzWBbx+xuuRhnTTA6MnFw2pLLrrvtQYREHuM/OOP8y6+//WEsGTc28WR81gVrbvjhnjY81up/smPO0ituvHPfeDzalHjyp+dcdOVNdz92Nh4N+598cv73rrr5nh9NxKMNiScPnXvJ1T+47/HJeLTe/+Qzi1Zs3Hb/T6biUUUCp4bMcvjbc/7o8KPxylAzOi/HJuIjz55Ma+SG6fCOmzAF7zAtEZ+F5eFgjQr9xmfPW4hbSxIdngsuugRPWWKOnQcHLrz4UjxwWSK+5sqrac0cWwX7166/BreuS8RvuOkHtGaOfR+ekL956614+W2J+A/vvg8P3GaO7YALdu7ajVsPJjqcex57HE950BzbCwce2v8EHoglYgefDgRiz8uFx17Y+I8RVHuyvtoIbI2RBpzqhBI5vE114lDbyK/K6bAfDqsOxywMjpkPR/3mDqVfZavsqMElXNUBijFshmnZRMtWXOKZcTqzg5Y/peWTtDxEy2dwKXAdnMpSR0XNRtg5pcps8dfU1TeEm1rb4h0/ffLQM9WD/IelMKehp7ekLByOLZkOawXFsHbb92Et1w1rD+6ANUeOHPvgDYFEsrWhTpWFM3nMyCqZ7Oerrwt5MmvFRV6UXTb44nw2Z7BeTP1h8cv6Pn//++0Q/Mp/dVp3gV/cPFkdKurCSMgfSe2weolm7oa5mmQX/VxCWQ6/WNQ1rrhRdGYtnZbVXJJljKT/6/xuK9rsoibntKVZV6v+UVNaykYXVTZPbz5+3NfqcuBUoMOVnSv/wm62vapIaKCrO7EyT+oeyTHfZUXS0488VxXB2BptGUjoZpTQpanMvvwAphw3JbCmniMR11JRMa0Jjd0WktpliQ5TGVNTyc8yc0xJUGTRfHO0MJVNG0KAHnl2r6mUQg3T0aAZW8VTj8mwVIquL+gNoxhDsl7qLW2YVFykivjylLuWLJX0S5dIKy94+I8rmbTyjw9fsDnP58s73p7nE6Y3VBPaY3XDmr1rmpUX5hSxY8sWL14WiVz27iMXXvjIu5dJ+qKcrl05RUXCxob5edI3pJGzvPkNM9asofl+/nkEnaCafLkcaTX5ODqRLpOTn4aV600AV2UFQ/ArqPBVaSQGewKNrcwv/zybKnod/B0Os1papjE7knaL9h9ai+OHDr0h+X2DXrFJkW2/w56l+r7SYU867MrRwuf2/FxbMmTLFXKtyV22XKel56BFZecvt7tcNnbCnp9Hc/3/x32l0avbwI7i+LpQnzQsZyYNy8csRjYWFeAbTeUmRQ5OfY43mbrOQT35mXHSlYrCchOcYJSuNMFhUKOfB2W86xzQxseOYzfKMRBVrEpdRzEFHHcG06+sysLXJ1+1WL6wVFv4Br7eXGP+wmxOvgprsFJjSb6WfBV+vuBb4Hg9X28ZePzV5GsWP1xu4evgTPP/cXnf/JpqFS/hpnGzuHO4c7kl3AXcRdwl3GZuK3crt4Pbye3idnMPcXu5/dwTXJz7KXeIe557kfsl9yr3OigidSieVA67EzOkgo5iLMHrCNa38SGEQ/i2gkvwFrChRVeoLg0p6LAXe1JJhBhgbhsgi4b6HVpeDWcksAJZBX52bq7RHZmBsWGRiLZguM5UyNZPFkPFZyTCOvn3TxJiFyrZOyqNTmR/Upqkv8hGrfSh6byMzBqwGCjJTGoUZaJYkl/qLffkt1AhMfhTFTjded6qQcRb+jct3jYZF5wk4C5TinyjWp18WSkaKXy9q+fPkdTxAYuMXJNXhpeihMtP8c5ibgo3nZvNzeMWcudxF3IXc9dzN3I3c9u427k7uXu4+7mHuX3cj7ifwGj5JPcM9zPu59yvuNe4N9Lc43QE8R8iaAwHHoJ+psV/l3dsdUFPJlbFE3DYU+ib3sF44z/jn3VPTL3Sr2xeWDk5JxBpeSCyaA/beYZDYEg9KP+YWJ7sIWEuk1IqkXE/lef14ZUz56DXz93eqJpU5mmti7y4MNLZh3nSY2K/sbGyeFDmYddYuyjuyqJRyrCiYneil1POhH8Y9zI7X32XmOQcXD6HKiraLVl+TCjlYiImOjDyPsmzvQ5LJgiMYhteNits5mxhGrr7e36Sbe7+XLG7xCB4DTpHsqvALhntBckuh04v+CgGr7Pvs1KxxelnKbA6jU4fziTl9klIpoD7zgK7MC0bHmixdH9hye75ib0AjOB/2At4FcbWvaWXY+scvKoA5XqE6xST6rvoWfiUqID50/ismF6AR1ltpNoNggcLDMkW6u1wH3vv7d82lOh73lL0QGPtBQV2aCy+hUVhHfRZtt5nYbOUCvlZmWnyvnYZu1hvEHzw9rDoSzbFpFRjPzdTY7H5oM9oOLNmjqadcIE47BWftyFU2gDDtJHB8ERjFHy0BSzjgnFmqURMatey+3q0KqNwvdHCLmdWbY8U0bm0/1B8cTlv0fawe3FDq5XOx5N6roaTnPk6dm+PzsxfzltxjwouOV8LV+jhHrDB7oMNrZsuoZNQ39JyFni/qfL7hVRZodI2fK/0ZIDPqxK5hsHeWstbDXTfbnYv3tdF97XwihuYFl5DK9Kb86vwZeE1XLp/VKc34UXkd490w7vzU13UVDwI732NUcSmwi1Tc1H/1FwCNruJK8W5qHR2TaEc8ev1R/NoosOHPOk0WKxxDWfH9LVCS8xsgV+lNc7UYCoMNfExYPJNZDkvsPHs5+xL+Bv/wgvS01KrZIa/p9l0M3+tOQtRK1yO5NtZ5uS1wvMnn/YCXM7/utSY/NSgs7NZspOVLXHoYM9Q7bElMFZO2SdyX26PTW6PE9tTZInl5qXb4x6sPVx6ShGnckBIpycRh2pP1OXgvVkWfiOoO9dZspJvO1xDNqgABt8f2XUG3mEshYVB65Dup7k1biK05zep9ozK9E+6JTLMZZ4cgY3ZBnYGTVIYzNikPEusCHomqrHGlfqCMH1z1oF9NGCW1EdcOXGoNh3WOtiSlNhf6NAakn83lBmSHw/Zrlep2UQIM78SCLF9YB9NS7WpsG8HyRVQ+jSrRG6WJdUshz3drGyaiirEjmRq++BsqEqpyv2mf4fstld0Rj4XWsU7sRceSmlG9w/ZxIPAqdvN2DrgXUK1fnugLyw4iO+57mTfc30/33N1f99zCs77TH1erM9w8V08Xexlg1pQqtU93WrDd3Fv9fiFXYgHHhbtuBBpvJvA1miqxb9zBbKkxvHTLVqd1aJIo+cEs6LanO1fuu++Q7vvvmQMX3z51kf2PX7/bY0wkB5R3F+sFxx6vV1qURhL6+at2vdL6djdM7fMG1+cL6gESY8x6E6yYbgAPCdLfo6twdqmCvUD8/AaVQF+zCV37z50376l/mx8KNzf4mShHbsf3/fI1svZi3cz/S/3rZpXV2pUsJfsen3Pp/pifc/fEZbjmKBU5JWMn7cF7MeF3J3ix+qXsYKHRskv5PcnZ7MVitzuj3gVv5/fz1Z0f9z9MYyHV8N5qvR57GpFDluRnMPvl7Yroooc6bbk7ORs6TZO4NWcUwxpzub08GVYySYFpUB3NMaUgQAmi5kDqYJuGlbPQsyiESxMGfJZQj5ezT6Rqh5jlcJYqZD9qedZ6Vm+/osvPv+cf5P93s5eflz6o9CYbJDqpapkSDhLekX96t/Yzz54mfz9bOc396rVmpe4EEjMsWBpYcptDcYsYmZbUEBXQDCAroBx/qjhaLQxEW2k2k5xwUZeu9pE3FFEwYcpPLLKRNSFboF8GRPKVQvGtA+TndGkjgnBlHuAecxKi69aVV/XJoTqgw63wuHBBGY378xyKhCfXSE6iuureZ5cBEbGyDvgYzvZE0xde/aKTYsXNZeeddWjz1zYueHVx68YJU1TZIeWTBjmLzVtG812LDkk/empzu3fPLucvTVv05Kr2d57b9t+n1Ao/d8UfrbR4W0ZtejS22evfe2OFSN0DzxkGLH64U9vn3bJgkZD8t9KnVnhy98nfe8HXz292njfQ9arnmcKhX/WvGHsNesVXbcar7hhxdWVGPfOnas+R1PFjQYbAusStJKntZg8rQSO1Ez1DHKp2nt2ANPFtYm4VUvoHxTtOYaq1zsScQU5XRQcoiU5FGqUFnEXFXlx5crV3VOlvxHqZoQCs5Naw5jrKYt5l7UjO89LMUlGS4e2MoSzV1GDNV5dW09S0tsMUrIo0IZClLPEXbVYAyRmBdEaVVDyVtCLPREs5ASP1+f1gZwEsmO9AJq4dxIinEA2UciGaGY+nLoXhRKUquzYCxtaN8a7drA5bD0vXao1jfj4uodds9kL0oPmkinjWlSj59Y4hzXlTRR3Txi3dkL8gq/Wx25vab689Wd3Ps2m5VqEv7Gqt19fcnD3FWOkG6RtlwXfZg9sHH3+R9KR68esioyuUVXkCxqliZUGp0pvnL+w3mG1rWHWt5nBfz7WUlzNbdF+qV7N6UDitnMYN6YgLBY9yNpsqq5OqHoUK2ZJYNJSTIGlIhgly/IqPWYsRWGHDSgFzGc9yHM6i1Uui6LhqX4CJSzImrEG6yhIq/mr+LukS4S72XUnMKp/tmpd20y2Pbk5uZRt6/me0i4s7nkg+aikn9sm/FQonDe8Z3LPA8Jifq4spy7gXOqbNIu4YsxicKHjDbM4UskbNm8uq2KhBqebiSrOlmV184pQQwh0RJVCVNFE9wWq5b9lbrbsxcp2l87+kXRCq5y5rfNTZts2t8Wjczwgzex6SOqU/v2XhxYr7nqBXcIqP7xexStYjuEOKU/6+Fbp2PvPbBylUOhFmzPWqVZO3H6E+4bVkl647ZukZpLmapBFTnw7LeYIIiWRcvB2PEV0g0D1gRJUQiEeMMCKbI1ar7nDatR059mV3XONwmiFnX2Z28L/2Chau+2Kn2pVigNao/Xfd3urFI9/4Q3zi0yiJrlV9k0WcBHNkxo1l8e1Ys6AXD+cp4kjnB7iYiYemL6BRvmQNwSCHbhVJpCoUhb5vMwaagOSqVmwDdR8kLlMNOI/Ewp++r9AsFdPCQVdRUaj86ypYwuvnjjROLLM96D07PJtdsHwA4dp/UgfP4Mfx7JqzUUuJp0tFfsal+frbx05ymTnbf7KyYX/j7svgW+juvaeO6PVWkerN22WJVm2LNmSZdmWtzhxEmdxNju2s5MosbMnhCwkDkv2hC0bEJoQ9i1QOpIToBRoCAFcioDSvJQlFEppS1teoRBI4liT7547smMC9LVv+d73++J45t5ZrqWZe88959xz/v9tRrHW560tGu101XT49PTYMadai7MXIyVN/wXROYY1USf6FXpJK9bkFaDUy6k7S0Z2GmStbrdErhzl95nkaT+sfJ2cxaUcbBkIbE9iYUUknchC6OKPIonMnJMGODDi7x0CDkBPGDnwNzUPwnJBLlEMVaPR/J9Ebz2ZuoOhh6OaUO5Ey07LFMtWi2VHNp3bd4Bezz+D3hC9lbqD3kkPL8tF2Tst+GwLvmpiTt8BEg+88dKJDFo+CltuPjyOeshbyEtyzSRjvTTJRYOJ5lKQSc1N8qJEaTMUS8vlhNQLaJQmEb1GiLAdh8caWdThqoKJxnFwaWM9vmtcIxTHFeO7GrWQHsEpkrCoEx+HtZ2E2FEIEqqR5TIrObeuR5Jn8sIDULCcCo/NvEw8SE2VXDMbp1SVgI6fsLgVcEchi0czUXFrEdaBrEhn1EoH3JVIgvspwC9aaXstHS6j8RW0mGApDIKpDMLFDeLEOfPcG2NPfYmKUT0q/vKp2GF6rkbzgcanSR0+y390L//rL5/6t0VHLyDdhaOLjvKv8fv51/Absxj7iG9a8GANFEVvpBvBDfK/vpf/+JvUYU2R9gONhp57GP5IcseFo4sXH72w4ylUfhS39tuYwSo4NAhUZro1gtVwQv7n9DuqpuYNvKMqwhiVfg81Q95D+gkDXQqEDh6TiE2ZxeHveaZV/03PdGj2Vexffn42bC88R6zAEf/Jp0aeF8GXoXspJDkkb6dUVB4VpNZSiVIYaQrga0qwBKGRzZQT8+My1og6yamFp1aUTBSRdI4iP+637qKBJA+CQOJW497KGkvhORWxPYrMbIGYUSGoO3E7i6WVlLiLBPYsSgABpfQSMofW0lFkDkbKyVSrLyuPkGhfgPGV2N107+aPt/4S2fD2Nf6jg8jMGlyMaMrSgEpaomPzcwI7Xs1eM8u8P3PmmmOXqGPSZVs/3sz/7pd4i+zIWFTod7hHuJEz32qS3XV+eXCilrkkl/cj7cRg/bRplORSBfJlFMjKKCnFUg5qHEGuWEtB1DVW71zJhMsK39VlAg1l9pDwfxmJDITnoyckCDCCawejrIEYYUoSKBLacGlGkoBSNILPZ5wLP6ValisCo8YKacIa9fipbWR6JZgtbJ47jQaKB534ygRLK358tUyYdWFdQ4IlunngQJnTLMb2nHAUDS4rRVih0Bv1eqN4E4t5o5C6JqkHx+aF47hWoG6rUQfG1hTT7b5RlvZZRs2ceqV/ZLQoW5TSW+DQTEkHAULrxRu6HYBT+nZEo4DveOF4NHq5qSga6yuT5hROCNHRnfwoREszHNfVBSJSc16Dl1npQT+VFacWI0aaYd3I3yupj3r7dnijMXEaETCNuSnKWCOfg9/EAmoF9SQFkYP+ZMIPopLyh3EXjQW4SckeVc70znxzMBGbBO8nZsQnlga4qUnOIRjQK8m7cic5t/A25iR7Js8Zj5XJzmTPdFIAgOsANz3JzRFoMFTJhIogz6i0uI/nqggBdxbu41fjdzdnPKvrcfgbxRDXnjsdv8hQGHTJSTF8nNJmuckLZMuwyQ2ReFg+2PCLMaZXpLA+GcXGKcnsltBGg1UcCuaDEhOCeQtfhdVKNePM84toITV0qCgefPehNMyw8QXUgJ47ezcqRcwHh2eIUX+ujF+vzFfy62W556S3f84/y5GAoOHL99/z0G3Rk0h3Q9UINsfnHOHQ0za/u/lHr527ZeovPjh1fE8roIoFb4qtj90UHBA1yNdr1K3XGUXcWfQcanhhyr43vuA/u0VqUMhTr7AsXSVXGO5Bnnc2gZX89NbPE7fPa7S1xfy1WneT02vR09YCa7RjUpF/7q5ffIbK+D8BVNiBrt27uw6kAcPo6AFTdrYJfKRfUzppgbwRa1eFFNFQ9QP4NQx+JxJBQ2UAo1GaYZCZBEpPAZQDViDJiiQlJUuQTge6qFAx72boRP8m1RmxwadU9VeyalbyjryYL2I+dWrFOazY0L9Wn52p7fuTSSfNYfblE50LnaFo6Rb5LCoLa6EBaqAX5Q+JQbcJbhgXYFlk47cuEut1wsdBZToCR67DEgtPCBSZFNw05QE2IUhggMDeM6teRCrkRqoXV2UqlVP5n157rTxTXvYgf8/UErTrRaQ7cWLnjhOSXfuQ8sSqVSf4s/tKNno876eG//3vev0C1ER/8f7uxTtPnEC6F09gbUmMnpZvku3Bz62IGkkB5ntucoAnXpBQgEdgE1ZxQYMCrtAslmMqOZsurlZA5831QsC2mCHpHgTKIYJNHZ0ShSISETZrxPBY/YgSMjIAxUFvknhcEmdevhgFz9nvwQrltW9bNvB3vPnMEf4BViduWbyW/vmf0C3oNLrlT6sXTRHrtPwjjyf+yq8S3f1zFBoxa+ZB/s+9q9GyG8JPZ6j1qGzKr7A6ns6leODqNyfzb2Gl+WjoPmIXKFFY3oq/YyblojiNMJ9nkW8ITI9JQIuk4hINHowsoa8HsG4hElanpZVgmJG1aTetXHcG5aNFJ75Ez6Da55/nT/Cjv7zwKW/R6SQr994nnrq9//W7pmz+gE/yHJ/8YPMo/nSGRo/eX4GsRB+/g1os65edxXqGm2qlIMvKTvxXMFN6iH4hkPE6BYzRAvzEnZCaIcnOEQk8rAm51EhsT5cdPHSCq1XEJiQ6I9HiIekFFk+/7f7GkiGdBYOnSehFd7yCWnqfvBvtSjvsdfS1NJvxNX9D1yv8j/kV/BOvvXLzTa+8ctPN9Fa0G7W8MhGuTPu7BT/9DT/+ZS//xCuv0I/yn77yCsp8Bfr+25eqpE/IV1DFVJi6lgIfsTkEqUeaYCLPC2Iwz4LFa1gYEuVDYMgAurKQoCCrg4ksO+EyMmDhac8iMCQuSNAWuCDlAvRqlh2AaUtKy4SI3bCXOJ5LKgXdAI+iUBA6GhaH7KDqNJgjTxaUyRKQW4YG6L7eXp9Epjt60dRfzDiYXIF8npoaD3+qxtPrqeFPQQX5/sC/iQ69gkyvvsr/RXLrHYh9ZfUr/BO9N3z17LZc/vZJvu3FHfw3xR0dxSijo3i7bxJaWY978I6BByQFjLaMAvnPsDW2grqPrLO/Qr2GJysiqsvA/EL5JpHJbJUbQwNJ/YBPLfGA4PbgIeNHYTyb6yDso1YURQaTgdhj+BYGQOPdAZSnFhmsIjz7E2h0s9hUDkB2QSttQ1YGFktg6cADwHbOPMgewHcbYUEs4oJEStxf4I8ArArks4ux8kQQsiFIEmiULMY7cgtH1syomWV8+ADSv4ck3D7FGPcY37ACfzYroMgvnZCqyHUZsvhTOTp3bmr8hKX4+E+m3f6zeYhRaXM0G8VyW06mSWVUuFXKjZluqcRTWOvI02jyHLWFnnk/u91Z5aV78tv0+WJ5hr3MnpEhylfo8jx6utdbVVX4zq8LnujcV1P3oyU9ha+/7o10+W30r+lss3S3vMqe+truRzeLuNQZqcFMf2Dz+22pr+xVcnQO7ZZo0ZcGq3dkaVF2llIndtmdovx8B6OVG7S5OZ7C8jQK5YQN8vEiqUYjFU2UrZ9ovTj7jR+vqCUMXeo6T3EmTUeiEkYqycq8LpiVRcv09vDosF0vo/lTtSvEJd5h4omiLRXLVMNKC7wlDcpltuLRbrpZPMxLtxfUyH0uqRNrbwanzF0gq/HyLajMHmKaLZmpfptLNFocvnAn8vGnZEUmWzMTsvOv28Oi0SKX7cK7cJjCeuYhKpbuQ8uo66k7qXuon9CrKW5/gDuYBL6fXUluD7jJtiW5ewLc5iSgahWQEEF7EFQeHR56HBl6tUmuloQoYTtHHMLl+A14gN2V5O7SQqqmAI0V7xBwabzJuP2mYDAeF4Lzzj94fClE36mBC7D8eHyY9ALXcPxZ1ckXbxAOK7Sc9nh8sewC13n82S/dL26Bw2JO51dzmcfjc+UXuJnHn5V8fHy2cHmrlpt6PF6MW/HhVgIvwmEFbqRHqdDqi3pUZKsmWw1snz0beDGbXKPT9uh1mfi4gWyNZGsiWzNsubnantlzZ+LqHLK9CrbPKs0vesjti7U9XYs78fGFsE3gP2ffZd/llGBTpBK4sdWVnKYygU9Cvasygf/WkAsMlZyxEgw9c2UCNwyH5lRysyupeova6CsujwxraJ06c/bCxQqlSqOF8Zg556q5nV3+f/QP1Vu/52bdP3k3hB6i+A1VeDJbvqKyMt50F55Aytb+6B6YQMaz8c378YzRoavPCGzbdcueg4cO3/cIEaHb9mCJesOBuw7dDZppdDO+K1BaNlxAIDg6ekzzhh9DOaZLXLP6ASJn/2WxJf7Py6MyCtfM0LrD6ID2BfKH8nTmrv4KWfWfl1PI918UPl8g2bP7/lR8PTaIzvLKqHez//d71795be/et/bufeuNb0ul/5xEsv5XZczF559Fsoe3YSPOG93+0Lq3PoaPtlesuELmCD7E3kuHCIeujZpCPUIBG1B5Mq4MBIOJunKYnOtgSp8Y7PGV12FbKBiCtYqGQdrArGSPNgs4neUC126SE4FwMpJlOjsRMj1N4+0ykg2BleSiENeUTDTlQ8tNUXlRzwhy0kvIiIpD3Igkh4VQK9YAmvLBdmoAXaiojtU9JdOyBfIRAupiCPrPgCtq0BEl9I8BiKP0eWc4RFLqQ98GAA47jVfc0/vYZmzgRCdHsXmz+bGot/8jb1Q0jhyMxfDhmGDWwiY25BLJg7tO5z1otAjnLMYH807vujADKsIZgzVGTGICJU42VsPgNdiGvXTo0nuKOzMAV8FL1VPtVIhKsOBxcQpqbEcASJaouJNl8ZhmZHRmMFrf1DwRxqqEjbe0CZiE4MCFAYRYtcjupz0IBk7Y40ceBqJDjYxEKqHAGW6OyJFaFkByFCmXmPVmPKqBHyKATKV4kLrCfiSNod207PanbpfRaLfUunLHn/m+P93SZUSPX3PkGhqJ6EnDZgybxDAMvaxkzLifh2jRFygPyUMTHjj169vXWqz8B6m76NvV2TfrpUzJweGNDqygKi1S/pucae770ReSEeM3bBh/4TleK8tpDBfhp2CUtE6eP3+yQeSVoDZ/fYOff0BlVaNvXgiHVZXo4ml+ucKzYf3jP1rgVIlEaK/4Eto1w8Ufc6tEDZpg6f5GxGjtkj8ilzoH5s9q/lSGM+MmqoAKUtOozdRN1D7qXgqoE28j6Gy+JIAOb8ePdj/pwQKKPJCc3YLnVy23FfpviPBnbk3GbwfGUSAHlvixrN2K7XnOWcndwh6VOaTbbiKC9bbrWN2x6cuuWd+9RkhvP2a/au6CRXuh4tMdo/RZNgdxSLeyxyQKjbR0MlS2646NDI2dNGW84NCBBT2X0SQyY6XeqMaWv8mGe6rHhSWm0QN2lJ/ON4B2X4a1e3TF1d9zsf6faHAAlXJgf7K++/BvlqIju1DmNDRLm6XMj4ZzsjNZ/gHbgr2WD1cv2sJ/+dr9LWhGVSF05ELkSd+wE2VOR7PhhupwNtzwoL1zt+3DVYu24hvua5lTvxEue2IXMnegGWym0hkNZ+dkafkHbbH9Ob9bvVhotx8PsujkfLIVXaeua21pYk9/6rq54Rul0mgc8UC4bH+gxKhUfmOuata+ujG7bkZswr1wcZSxqutbpozGV7tvbvhaqTLgqxftKwngi8+Zq8azr16XXT9j/oTztd/bKLnuG3PlRE26UdkK0uq5r8kO8BXHUZTcKJ9D5VHDqPFUBzUxzSfBhhA3jbAhNWChqIV1RkCcbdfGJ+BSfRK6VbyxAU+1BTl+wjjdzvaIxMOMUJygS4TZaDrKpFyI7LIiKVKLiJ4POz/jQTBX1iESRhkeQvuDhy7ILiRG2NbBNoIYT6sustiLp1OP0VCf6WZOu5bijTvLlHpdoczOLbYAF62y8Oq5i3ItxbnZSkXq9d+Uuz85LC8CPiiIUbnDWCi/+w/u8v7u/o/oExLtJmmqP8PIXEefMGak+sU7lMzHY7TogFbLd7FNzv479WyuMuPVeTFt+c6FUzOUuayeWYiWozXeydq5qFafTVxFwWw9/9I87WQvvwut+Qi5DIpXUTbzW7FN0ci//5HCLvotnY1eUVD0pXmAzyZ9i1JRpfgH8GD1BOG6MMDlhwiwSpDEnGNNV0ZIW6h4IfhKjR4Sx4If4qALFFEkjb4OmYU0+gCWdySETINtZ5JGb0PSw7SG7pfcQtySq1JINEP1lCpfde4c3jylgr1QP69yqp5WKs+fE/2oSE2nol5gBWJm8199+7Jv3eZUnT9PfBPUpfvkc+QnqbHUsxSkNZeROIFAMNFE4gSa6vD0imdOLwE8dgYTGgJxpMkCP/I4gbUlyI0EAntupBAsYApConQu3gpTbCQI7svSIMl1HQnke2Ip1gEb2IRE3wj+g2pdj8FaSdLR7WzC5qsgVMm6eFExzK5ME5jaxZGKRmHVLC7xEbR1iKqxuYvS/kpCew4E5+6wAFfjQAMlgxQ5LkPYeBigSDcRNJuwAxHvPLkLvxxSWjK+zPfh+0WV45YuHTd+MTqKijpwYQm2Q9DRRc1jly0ZX+5//6PC8Nhly8ZOWMi7eb6oCC5o43netah5zHJ617glOWgZasldMW786plj0LvlU8cv6xo3q5wvGDOzu3n8Eiv/JL83d+2htW1N/M7caPH45QvGdUTQ6qa2zfidGAfx4hhKSikIgq2Z4I678BxcjHteJba+hlGNVBPhYm6jpqNrqYQf+JipMSECtT42SOrAqDMywBlCwJY4PgjdE08dxiAX0gpRH1wLTCetSfBKOUlIQzjIiQKJXPtEQLkSJ3ssjkkd4J8WEbgEUTvuDrIAVxUCXao2CI7OBmCABoweEh7hAdWKK4JiIYGirSfgWNEBkOS4SBYMwufSBgGYSSkw2mQGIUgxO9iTazbIwN3HmdNwtQBYBCCIjLCAU0gAfnwE4AcwtAUjklDrBQnCvD8EgMtVWi4fjjkBDCiR74TPnm/Hn71W6KONyZ4pjQ0yAXA7wI0JwSpHGdxRjp8Y7JvISsg4RVG8BZg6mpOJ6qnTICSmWQsIznUErhmLxlJwVYRDRgb2DgKfnGaDFo6HwoC6zZArQiwTdhjxmXCIdZA7XANXh0MWFIbjcI9+4GoATgZs4G7G3v8R/MbodoCC5ZVwmF/Ri/8Rbmi6vRfXBq6MkSuQrxdvY72khUzRuF58BEp9nzF2up2xn3sdGhOvgy00CC2g3fiq3UAXfX6/UBLahftijD01Ai7u2wF/txdYp3t7U49Cu/AZoNuqf7DvAttVUZpD/DFhffyYUptpzy+BDEKUPKZisxyu0nxA6qogETQU6SD47UuFVSoF7i3wZgDbWOg1WtJrQAanMYIhhTkAS1dmYSkE9yN7uhvYBICoAgL/hXuRRxv34brg/ysj2Hiwth3REhrxAGCuwdsl7ytEfhjyNoU3DeUsNPTYwDUOUgZvCX708IOfIt6QEmzhCcMTk5Wdex1+8XWDdShfLl15lVCjIOqMEuFnPJtqoR6lPqe+os5RVJjFJq2wiIb1Zea7FRpccjSJ8AGXHfPdCmL+2TbQD7cByz6RWrqO5NAAcJUHK4R4OpM6yHFhrQg3a3ZiNQCfIga3lCWYIZq0LNY7wuSnpqvNn19cHrCHrI58f1vnelKP+B1Bm8NZ0rpwfVdraZ7DFnTULGwtcTqsIfuQM/gAPgO34gNd6+EKfOt/3OTU0jz7QJPf/lvf2yKa63dkl4RU+2Zsj5Q1Db/BmmfJjnr3tVeg3QUeOFHUBWdm7rb9VN1UAufqWtirrLppk0PBo8Pqx/hzy3phuMHvSeQzBWwWV7bWmG2xBUxQyc/BlVyH32QuduRmG7X8KZOfFNKHv1vLzwHs1h9uKH2H0NCVR7/dzghmhb4xL6s0pNozS2squ8GQIS/c0xzJriiAY96uWdrc+2fm1anlhXWT2anWFBK7DSWZmWGAALLhvi7wrEBfbcd99TGqF7K5/q/21H/QBsJXp5EPcXeUDBxnsP3C5kNY1v9K9/tXm6T3aX572FJoeeQTUVlEpJRpDToZyxREl++asBP9lu7K0svU/3f61b/S0C33fMzSX5F1WpX+m8fsxYxSKpFI1LTdG7XSt6KzbWLGqCb6Kbp0ST5JPonyURQNcgVFzGl6SJIpqREyQsxSeLF+JoD8NBIHN80/hbJvHcXcuUijGQUJlI+pNSM1Xs2i/oWjbkU5pyYkHj5yx86lk0xGiaEIvfjuL/8y/xT/h1tGwg1efKWGb1cXwp7cwP/x3yasqrYzGmtWRoYqsG8w77af8EnUUauE+SzOqLDOhFUeWQhmomIBgL+eLKzhSQVPVQB3NxD1CVQRALZBJzk6zS8ABYhqDBCYnBII4olC8GeiOAxBcnEvED44fcQkI0wN4YFMXOdgSQ8HPX6RJ1zLAHaQHTCF8JAwqkXg2ozJDvCnol5eSaIoYBcTr/MFxCMa56yqcPpY0R38qTtErM9ZsWpO4whxABs839wrOIaELf3c6lBlDlNYECphTyqKhhW5e3c8+OCOXk/RsELFSbYkVFDI5FSG8PMQAxK9rAzbFgGsr47Fdul8yO4kGcqxADchCQhVw5JgdITIMoEyGRcZgsGEknBvKOVymOERt4Dw6ShB3UyIlYOUOkoBDVBILQBVsTHIGZIJA4l3MEC8QyfkJ4lZXcJTACtznItNjJs2HUr5OvCTq9iEY8pVUDfo4nkRMDYmxPAzt1RybSxXXCkgTxNunmCaOeMyQ49ajJ+60RHGT94vHsBmE16C+R/UTEKNVAC7ug/8A3a86TNaIu2LF7dHQOESSmj3AP5Sf7fBGrMaBqKoSGUIb/AQZCPxmT4ASYdXBYqisMd/pvrWm+965Ejv3CO9vUfm9h555K6bb10Gtxis1jNX7F8ttGCBIvhev8J9fC+2d4twP08o8JsbWJqXkQV5IAgKpx8LmbqBFgHLYZHJzPoFFwHt6W3vbp9aP6wV7ZbZV9zw1ooJhzZuvfngqytXvnrw5q0bD01Y8ca2BeZZElm8rKmp7NyEUG0l8zexQWIoK7C7y6uLjTnevs+8Ocbi6nK3zefTUMylQ1Qvwd2XE+0yTKKDDSQ6GJGEd7UQI0wR9HToEwShy8AAN2MwHfDKsI7vUN2B/h7LKIh6v7kXHpx8jjf6zb30c6kRyCcad/EoPia+D/ngFH+q7zPo3tpLFeSzHCCarpOwVAvMgRuom6iD1CPU09Sr1K+p31MUcwWKlaD2f9vtq/8e/rOh57VCVj0Jn9F/z73/29dikSI/Cc/nm2osX2T9516/DD/WazGK15GQxx3fS1P3+Lcu/Z87LbxAqYx4VWYAaZUoe/DS/q8HaeLQQ4NHmTGFFmuBla8dPMJv/R85OdCfMr4gVlMRFcVys43qpNZSm6l91APUT6ifYx3qfeqvwqp9CCxG/GMcyhcKJuX/f/1KNC4Wi4nGDe1cot7/F3sX9Cyi0uMPff48/ry3SOpT7w3tYYOcBP8bPWyo7uKkyilvmos5JKSxRYjYzE/GK8B7GcrGs6cGFVQKacu1DMS1WBkbYiUZtJrRIL84g3ZBTkmtJAJA2SJpTFv3b/+O1p68DRlOvbBtrjlT1rr5oZ7EPRvy81WBPbe8+MiT101F+VI//dfi6Tes2bRkji1l7N3OP7Vd8iDarfR2ThjmCNfXh1ktv+L3/CL+Lf7CU/s6ogqlSNMw5UAPkiM/uvPTN17t9xlC0xcfPvrFVsa+qGHId2LwbDUpHX+PZwMGzH9IOVAH4hohdiCj/vgpgtyD/Bzj55A2TmVcAP8SnXGB6aEQzaSXsak4PZBLgy16Vo7sZpHZpDeAEnWui9mCXuxBo+96WiZ6AV1zMSRyMO9pLcu38e+o1Xhm2p/2g2RSVsqFtdcgVYE1xUY8nu+mEro0Wn9hkgsFQUPMCoEP1R7kAgGuNkTikwbBAm3BAYwyfxA0pUpw3xFf/ijCMzo+DVZ2VGR1uIkXPwSpBVyj7imxPlJVP3JsOt1AgRWckTpYp6PkSo1Cb/FVAHwxF2CPojx/5dg0lHEtDYAuBqkDhZADOcCp6kd6s8mGkMvsgNwMUongB8LiCoqUY608jJXyAJLqSc3lgMr+2fd/ePbD+2cb0ANIcYLvQyf4U6kR3/z4T+s/vN8uVrWpkIVfYUQb+I/VraqD7PIbTRL+98hi3bQEjTZvW85ChV2yxYQV2AJ1m5rhl6O9jLJNLZkBreLG148bA96uC8fFWXfPvh9FLZuWsCi3QYJvW7qZn6NuU9BGtB49iRvaK1JN7e+Bu5FlD7LiP0gb+WL+HXbpTocf/hgF3K+QwzFW3kZFsLy9kbqVupN6AD1KJUrgbW1IxrfsAZSpAFef5B4gAfqrA+Ce0gUh/lae5OZBX1PhV/cgQZqvSSbKakDxKAN1tUzLrUtyNYL78bokd502vlFRxG1Kcpu08e342I4grADeibfa+H5cvz3IFSXjjgP4bxYJYTCZyfhDQheWX3f8GHRhEXe7X83tOh5vU1zgWo5zLdqe1pY2fVHPVNiKuF3anh27btcXPSurOr4D4k16dkJV1HMn7BL42iHBJFMrE/gsLlH18h2339nSOrVt567LUSHHhh4gQR7rarA5wtQJvvx68XrQpK/T9TQtXbYButUmNjFWDtCy8du2A/bBAnx6P+QncEW6ODsT1O0bN2D5UrTxAFz0QD3uwjXDm8ZeBzfnscfKqhtHNk+Aymrd02aqakrHzAXLoMqwPWJ2egziRFTzoOVOIWgSPEuCf0lwPpVD3qFBzZCEITxFmq1IIqXFxgFogjI/KgfoIrIWzZZEys0mYzqQP1IrDkMIOraj8BaCmi1Y1kmkEr1wMW5CWMJmIWbEmC7jwVAriug8WMGLPXXj2Hqds/Wud2+cMcdm3TqubOOS8SJGItbIMsytNhsSJzoKWUfBWn71+paLEyevCAZPmrze8KwwQ4tQzghnvojJb6lRH/7Zh4l1629z0rJceyh37GZX5POaqS49k+HICwYqsqofwKbDkhloN95pSjoULlLqvAqdddW2jajXzfPkTuQ/khbe/LJxRNm1eyskuRstmsjsoCNckJOrUluqNBrbNRVPvLKXHz/s1JTV17SIXdFV8zvmL7ipir+toKa6AFmVjIJGLRPKw9Ob5LRYmlM4KTKyKtuN9fMir1Q9cw6SZzDDprXbbExGTmaWGmXkXjgGszT93piNqX8nsCNbaLlNX7+j/0ZSO6ZR9i9XZkeGL21AC8tcEGOQ5mbUEITKAB6HAjNjMVllEIibMoFwFUI6i0LAop7vxeOiAMgCBuiEYVzUPvblBSLa8/1cgR8MQ6/yAsBbuZRYtOe7CrwDol3gXR2qE5kdad0IC0A77hZM2KF3GB2Mw+hkHExsKCFUUGzgulMjurnmgyk0OnWwuYR+41p6H59VR7uvOdq/7il0Yi6okXPxDTd2cxytbrl1WW3tsltbmD/2orMv87/qxZrngyReezdFSd/C372GasHaXiJCbKzWweBgbVyJv1oVcXSbBTIgJ3FUOwV/diAJvMQCH1ManRRbqP9E2SBlBgNSGTe4CPCsPgDaVeYmC7Zot9wuyhDZ5bEf2JsSJGokYWI+Jcx2pNZUxt9f1iS5ml5j0NXLZPU6A29HH/1H5dSuUj9/NzGysK6H5vn55dGuhqAiA6JYol7Z47XuvD/n7azFj+tSin8X68gZVAa2t2qpJqqVmkV1UdspiCRswB1iYYALnoZAoDEgO9NgZrjQBgK6kYA4tyVBqgK9QF6yZ05egayIm5SEZLc5uJMJMfJY3C7CU2tBG5ZRkvEtAqjE0yZp85TpM+Z2gvSxzcHSZ94CkGQNEPAGzgXcsXRUpJxy6UUUY66V4bkRP+cAVlvCrIc1pAtG4VANQuJy2uO2gxMcWGsj5WUedx4umgfLOgOEwDAS4SAEQkiZGKr/4jN0CeV1pL5O0b97WGbrWv3M8Qvv/TxSQe+vK24protNedk/JjbM3+wflvoD3TxVNmse/+m8ohIa3bpgdzAUCu4OoZvcroVul8u90EVPqj86vqelCqEi38b29o0+pgtZUP/ZL1DdAv5vn6QyUp9HdMNefObvJ1++ZWWu5Xwjf1ugWG3RtAWoSw6+uyu7VttejLY69vjDGbqMSYEEKnhlHpLPmjevZJOX/tnuBaEQ/NH+3y50ud2uRS6Xiz77h0n1OV6a0Vb2T+v2+dq724G3UI5lgUN+UtGCR8NvkAR3wSloLlqJbkC3YYsnDNmgxNdby0SsDOxFEeJwgGoEV8xWhohvK7IhI4h+kcPu8ouzIP4oEi6PDNJsDxaNbDoUC46azINHTebwQJE0JjKHWD8D/mMazwp5eEaQ+hmnWoQ1WY8bKniXl94zVonZBH+5Vhop9zMeJ75HhD8HjUsiEh0DTQK8lF4Cc5Q9Ust40hmKbs9gsuKQokQqFD0DBbfnW+2Ih1ZcP3gmJness8hMBd6c6rJqXwWrys8pd1qKS10+m1ut8eYXR/McUb+zUG0YFZrkdYRdWRZFk6V4eHm1OStLJ8udk5cXabp6bIi/PvVB6gt+a1HD/DGj3BLTa0d8FSQtcoKR7KYtI7tl08jOOIHssoIqJVqQL5E2O0YVlRuyc/ViNlxYUVKVYwtmOeW6xsC4Alt5sb1AqZg0ptRWHS4oUysCeKKqLK0sKNdKdbnZw9tF6kxdntpNv43OIie9Dq2kHQqbJlulZkSeUXUNdKhg3fSR/KXUa/ylkdPXFYSY+mGNBegqpNB7c31BhsGzoy63eut0x4d07kd5HduiuSo9/mz59eQjTr2a7K6eindOZWk53km0YtwLh9yOdv+Dmu9btV8/z2RUZGTdMjubFelcLp/CPL1hmEpGZ+UWu4pUusZIhc0WiYzU6SZHCqSSgrrqcYZys9UhNVntrSty5B6N9vmSjuqoRbd5gzrTV1LTjPaidyfcGuludaHRMMF8YRKjuwlw7xaFmJBFPihWoG5yZJ7Y9AUpPKOtMZt2bN7KuxmX2sBgcTJ5g17hdTp1Kk191XQDO6HEy9jKg42semejiDH6fbUa43WTDCqd0+FTZK1qtY5FlQqjXq2Tsmhu0xNII2YzWI0+Q+UpcFhRftSqb2zUW6P5tCWvwCNaJ9JW1HdVdNxhs2LBnVpvqQ/mysrLZbnBeovKYqxQaltgHl2nEAOdovEzsQLPq04lW2G0SETM+m/dfc+3an//B+coEqtI9crnZNw8uO68hDDiYhVCF4irTSESiICCCbmOUHMBuaxOSxaYg8RfiIiXWSl4k/VJTo9NwgHu8bgOlwR0HkAcyCD5XFRcBwhiSoMQ5DjojGFRiHWCMxH2sbTn4pt7YQlX8uCFGVJZb2+vdIngJDi/X8ShsxcnijheCeTokDsovdQnL5cD92KQqqYoHYQsI7PYCnnvJjOS4pmDZMAzgLrihhx5k1mOXCasioo8ZEFETqdBJMUizW0aPzaL2ExEI70GBY/zpzRBY5nBr3jabRHdUH/nM1cdT87iNciEfq88uG8Vz6+8uN3SYjklug5dRW/Sqvn7NV619CW/ZrdarHhG4TeWGYNq/u0e5NHocZuZuPELh1pyRTe8hDZ1lbsLh/Pf8A1fPc73T6k3eXFTllOoFV2dOqr2avj71VpsGwNpUKGsn8QIqCgWvykLlUd5sJVcJljuCBZPKMKFKCKhH7BkIiac2rpg3I9nZTVgnMlUZCmklA3BWrxT74iwHgcuZiFSipAtchQjrMkNbAAfjvk0FoN4hqE7gKugX0g18Kdi3ymAC5ix08/15cfQ2RizBer9H0E5BptzXX19yCf8Cjyel36Gbf+9wJnKuOS0Xuxg5HSMPo7+jKcy1XH0Qerl6XwPH+e/RLt7pVUXpjLD+gO9SJTyiL7u/4hgSRC+csCNzqVKqIQJtGGAErAQTlB9Mm7Fz0AP3hls25CELDnQ6VBaooAgkpiJ5xQ5PYjDhnqZv0oznfUT142cc9fksBYxf+RX8Cui3v5Mb5RfIT7D2EWuYaPHVLtHz13cIO3/iF+BFBdVRB37iv9awBJN8zjLqfIBhIMQAof7ILOrBN5TMq4AskqI9EI0tuzEEkK3jN+UA0E8hYNxMoBLKjYgX2pEb6xXdqC391wXuGKF7477fMYu/HfqKLcQ10RW0UohGLZHV1g6GM6tI3wSgF7hrkVhWNB1DSr1eLSY8XNAJD8JAhX9SGIcfBpg2yG1yO1xvyiR6+lrpCVG9GurAe015KJTphIpfY0uQ1IRLh5bGsh2KXm/SK3IMfabjBaFSsT7Fa4cf3BscRi9WeUvEIve1RXIT3wGsvazE/IC3UWPuMBfVZ+bqVS73eUq+rxKrlBdnAjCTsSpFHJVSqYqd3tUysxc/F3foO6QfyN7DbCNmIgHfpA5IvwgqRl+kEcq/AT7yD/oZt8u8acGj5y48pqBc5evEeLqr6WGy8fiZ1xFNQAeSIOABzI8EB8hoJXU0hCgoYuYYNHVYRWXR0w6rPtgdQU/UfzcpBKp00+DcY31IUSlY3SvnbzKY149p3je9oc+v3uGXofOMspg3artr67cPq940hKfNNI5Qvbstu7IT5/sWhobsXXR+uZV5RGRWMZse5aJd+7t7NyLfl/20qd/fbvueWRaNU6z5UBdrapo7dzOgL7iav4vz5c98uzrR+/yHfxaN8u6qM51VfVou9o43F3IiCS07ispAy10ggx99dIh+bKMAipCDcf2wRLCQhYlLGRNSWDI9Ce5yQHOhL/z1ABXOACChPtvvLQGm1daSJqHpPd4RSHuvSGIZk94CvzgqdAC2TubB6POPwyfLK3kJrNH83T5TgHTS4d7I6j9VtzhGPBIiLDFBfAlTlDbPACOZRcyALF2GXa5IRgBnh8s1+ZJjMiELw8RHIEAIiEyr0ksdrWaCWTkd81eNaXy7vuyyueiyiWzlsoVi+bc2ry/kt8y2p/kf5tM7gl08qsrT7Uto0s71nfg/8wZcWR2dGLUVSgWR2bVTMAFaemP1k3PzOp/QXSQzvBVr7zp7fVYEiy5ZXzFXPWSWYvv/NGiObWVaHVWbeqLw7/73eGt9/zOpO29b/Sv237Wd9OYpUvHbB27dOlY9OgY3JyrYDjs3AVUOuedIrGkcsIz0UwlJCAjIIgrCJZ7gZDYKwO5nmBkhPsWT8IJGYk0lUnkRWRNMS7F8iKuUhN7q4cyZgl8jHg2BZrbMJ5dB1fS/EwYlvHUjBENrIUbyUTq6/8I+Rh71Mts8UYBaZRXwhYC1WDxzhsVG1LvpdbEYvSu1Boi47jI4vb2xREI3BJKzBaSMwHYb2vge2FZ7KdGUx3U/YJMgnXr8UluahAiLAHpZxoWSKc5DbB89sgCOhnhpw8IsdYtyUTLBPiWLVVY6+gIJia0QG1CBNeaglyLNl4tWPYNxLJvUID5yeUESYR2ywRW1zPSOH4qOL+qYWWaijf5Wd0xXWagtLohnVhVV09Y7bhJMANEwDIK45EqgT4U1lIOO8UaNATiFndCVqQ3qEUaPCWWhwRrCMtlYvwEsd1DriYIF+6wwPcoxZtdd6CnGEVR2bRQRonNW0vjqf8t1IMS6C0aoaoCsatMRF0q9o1qbR1lMvVNvUvpNFpmLWLs05ZZCyyIf4S/h7+ffxi5Fx5uqhwVG1W5+n1GcQf/Z1n2xDFz3C9bPIiu8KqtLLpA56T+wEtZq7ogEnbx733Cnx1//aQam56mRV85rIbfBHSxWOEkbFVbLQYRehzdz8/jN/pm1bprg6NGBevzt4yAvgi+3BrcF81UgKqkdqXx+ioDHJ1M0IRClQa3bCbkm0M8oJXEODsFvjrTaYhI1SQTyF8SDAZ7CjUmmUAzCT77RKEF7i/04L5rKRxgEeM0gvgAbjuSy60kwAp0JZYQgLWgZ4H1AktWB6T2YNsVPIfMgDMyS4ieDwPWsABI7DSSeYwFexZrPCgmlSXaDlrVyBpqDd15Fdfd393NrZmMzk5es2ZyDDZQDFQX1xqRLSshXRJrGO286cnEQ8E7+b63ujmuG8+3u2PeaIykMEDCUOziu/W1vltvvWESDF0RGb8npUuw3gLMocOpjVRCCk+NIu63qmQiswq+bSakXEUCHCEV7dGoIvjZDE8S4DPlaUgptwu8w1XJuBoYR6sERBGDAHRWW0VQuqh4JiUQrFSxnLuSG67rcRWV2KEza1guTAY89Fd4OgEEq/VD0XwEmHmwnW0ogp8QA6M/T0oACkIDpFmy/k+HO5cU9P3Cu8TZ4MAPBB5CjOvu+6ybo52ZdUVlO6szM6t3lhXVZd46a/aoxtlzdoubhDAX5OstNtvt5mLACeFPcd293RzcTz+fV9/sD22f5HBM2h7yN9fnzb5t/Pjb+JtJ5hVwCkN+LJYVWfgJOggKsJh0m1ASYk8jSS4/CF0MugkoLiQJjPQISB0c1E9cbv1g2EgRAsk2GOADMg5/zZjV0Ccr6zNazCzfv3rKhRlTVvP9bNxqkB0gSQ2fPsqvEIjA+BWPfhrEGuETuYbeXkOuW/VS/5opq1dPYXa9pEJHhaCPtpVCTuLKNivlSsftzMG6uZmyUgVUKRXFWgJgysyhFlIrqPXUFrI6cph6FOuBz1EvU69Tp6mPqL9QX1F9SITfWiZyoAIURNWoEU1AHRR1GYTYCSGy5LWBEqE3R8rxpKcfFN/6wTPfucb0PacMg6X/n6/+nkODJeT760PMpw/9tbdvhwahmjpjsctdbKipU3lHerIHIGla6fQJ3ZWXLB88cPnUKnFNnb7QmZ9H0/9DFzuZ/9WL13z3cVwuSd966K9/feh8SW8vI2Lo9RvKzXqdkbau32CPVqOviVJw4UFx+rhow+AlqWXkEv6nl29yDhaRQq1Yv6E0x6TVXtSJv93of/8dmovs/zN39I8Sf/fgkCKed2CuniAfjq09H5Yy06ntVMID846XoCCFCEdwcRJWxLHuPjoALvwRJHQQW4U1BD8AbOMZAa6c8H0Ujg+SJfNWARpyJp50WrPwhGyCyMl4yIGnnZzKeHEJwUiLj27Cp9zjBYS6CZXxmnrQ7lvJkqKjVhIKWsVGg1pstGJjRxDODGhLZhQyOiHoWIjoypNIgZhiyK+rVhLGCqonhnaLdfVjN2x7eu7Sd/797eM7J4dbO7taw0hES7KKJoYvHp28prdXfKa3/6PYBENjAeipBY2GCWkse7pd0+iI5NpV9tIRtXmyMom+oqy22KYLjFx566urV33wxD3XL57hELPB4khBzprJ9JiLswBGn9kSK46snkI/N2V1pDjd1E/UUXtN5aQFNfXzKt1qWrADB/I1NFQOsDkS7GYtEM0DPIwpRLBhcomFL6AZscCqHSThdsEBb5g8KQAc5oA3TJcJjy58BeCXK50aAz97u6RLuvbu7Tq/v2sv2o3O0u2QPgJJKH2XT+z9EaztS2UQxQjrZFgHlzXL9dieG0XtT6O+2UOwlFMlMIITH0RCTkL95NiW4BRB8EjU4M8nZD+ST55MsATThTXgK1RBwglOPBX+EO4BNewxX3G4oo6kmjXoEi53Liz7sCyXX8ll6Tgr7j+NpVjzVqhzlYStESD25NpB2JcIq0ZarEiH2FqkxXq2CcCUtJQYmYjTHtZ8APlqQBGPoHzKBUvO4TLPQCYaWrPzT6jyyJ7Tp/cEYXMEVf5pJ3+Q/wudbWGxkjHfctgy3xtL73u9rIXO5v/CH6Qnl1XP2mJdevvDa5bfJz7yOIp+uicj9aT+Xf7j93T8LWiV7j1kfVdPT87Y8yn/8uP8O3xgYuqPlsJC3M7Ahs6eiH51xLplVnWZ4r5lax6+HbqHjKIgB5/EOudSdiofawQ+qgSYzfD3dISdoJuFEQtcFU7o+6wcW2PYtkjnxFz5E5P1x/ryY5C9FIMsImaLeB1/6uLR2JB/YkPfDtz16edi6CZUCvkz/Jv86tQIrJf1Z4KN9n2/FND/wGc9ifWvyywzK6nVKJPiOgLcrOTRuQsWLbuasIsFjsa6lqy4BrKPLJD2lrBcRVT5QtwxpgcSOZGpkAEnSib0dc3YBkDcmgDXcRq8kLOScV1uMJiY1QE3zMokPSnRMQtqHWBUZOBrtPHZuL9Zg9zcJDdXG5+HKwuS3AIhiw0Ls2JtfDEuLUtyy7Tx5bh0NeE4v1obX4W7ZHk9FmHtkLOXaF8F7bZPwe2ODiZWtUNtVRSgNoPxtfjSubNx77U7cDedx3J5lXH3Alx3dVZWxhcXQ79ehEvLl7G6RGkoSDyF0wGU05FXSoK62DQMASwy5Qg4mcZBRRu/UvzCyqm6ARwDs4kyg4c7xDoFDKMfvhWiwdzEK5v+HVrG+mnQaOnrE/YEwoDRI+lL6yyFlrUvIZmeicWEE9++7JwI77ERk2YKYewDJdHHMRKaF4T8tCAp4gOpR3F/+TGSFq8VtNu1xfyFH/OncMcip79zfd9nYoPl4p3f378g7wrGAfFbs5QRa/gWPApghQFBzD7o+dj41yUhsMtEwvmzieafgeWTNQBLyljhNwrJfvg/aP1GBP/ZQZ4X+ZxzXZCDJ/y/eJTk2fUKSX/P9Yo4+LIXJ0Jeng8fxtOm+FJF2t4ID2aFnqQgD7I8maiqbYCExRAhCqQCR4srqutHCNl2XFEQ0jhdZEnESbj7LCFwr+cEE6yWCEhTGiC87DS0VVY+EMmEt0FIAg1y5VrAwiIIPgL/I0nGJFzTgsQdTgIUEoHhcG+gGO4NlOJ784MERjxSjvunRo37Z0MdnouzsBHIxm1W4tNnwiSdB1Ii8Z48niDh7QLiXyxkhL0Dz8qwS88sA91s4Lc3VvLFm2J+Rcx39m26N+Y7cS+NZcq9J3yxXvrtsz4sgsRvflESA3/RN/fCI03nPwq/onGxDfussSv+WfdtwDfAWg2etK7sIpSEMlAG+Xj5OEqP51M/VU7VUiOpfYR5pjQJ0GMOwiSNn1mtAKAxiqw7GZMABw6iYWRyII9akYyPBlRSI0TsSTRasTk3EIwAZS03ko3XjYC4K128fjiM6TCelOIBPL45BxsPlQOAqe5plKGgckz1w9PTVEUUEDt18Uh1GqktAmB/ZpNOC+tG9nyPm9aaXW5txEXpzFZgV65FkEqC5yuwN+wRRmKH7Gm7We+2I3G51iM2aQ3xxx5BP0HvIO7hI/H4kYf5iXwBP+mRx7QrkSoS4b9C85oWjD1x+sTYcRMnjiOFBfIz6MszL2/iP9n08subUO6ml8/wamYNUq1cyX8VYX6FXkDPPvZIT88jj/Ej+QZ+pFBm9vLqM8LlfBH/twWDzUFhwcXY1VfD35NIcRMRpLq67+zLA3+FQpSCiskO4DFSQG2gAOiOSfZkMx6SZ9yjJQVAFfcOeRPA4CAPwsSAdYRC/BaMCHDw9GaghI9bsArZI9VlOgnAhseG5WluppO4hrOB3oEauBCYeBJStS6NjUdAhEheut2kJcxQJDsdfHBaiZ3koAOukALZXrvmF430SkUS5SWTe3bGUjdq1PSNsW17kuDlVaZ2j/jl6teYP6L9yNbZgVaWOoUTs/jtdeXBOn7rDMEZ7ClBK6Z1CdjkVNqHCTwECTXR8gKcUtDv9IE0D8HlVAiCUQAinOuWysBv0p+ZerS3m2O2iMZB9eLRbg5UMw78Rospl7xB9hUlx31+KbWWosrpiMlsMkvyPXodolzQyUxmWkqJaeQG01cqARp5gn4Aju4wwB98fxE0I5JBKiSLGuHmbxVxCZXDH4BFiRsKC1+89+S9H/BHRmfuQ0qE0ByU/btrz8yx7/6a/3d+7c/4vvfNxrZyg8GYazGWtxssVoPB0Bb7TiFqMJhyLYbqNr3Nqjca2+ZfLhiq9UbR2lNodOPoIve9J/cl0dzf77z35OfuotHMb9EapEDotp/8bh3/8V1R/uhZ/t/3owYkfo/OyTG3RQxRg9EYaRcab5//nUJU+PPRNqPRmItvmP+tAkM5/I2j+cc/+PwkyUG7dDdFZdDy8fidOvGMRKKKhwDOM7WiCIXMYTmiSASknFbLPGVYB53HKAv8Yz2IRT4F2oqm93ffWrfIaGKuR58zvxVro8O6luzZe2yaTi5HOXJr+5SuApSBiulb0R7+cP+Nt9bFKyuls9Hf+vNkOW1jV4zrsBltrX9sGi1wTb9AOWQ/kUeoTMpDBbBFB9IuQIL0OO9prPhAqB4VDxQBYqfC7ZEI+DJWAAA2k/zNOuSRkphNRAMziojSZSBY1xall5ga6EhlxWS7K14tq3bU2bt6n1MWOmrl1b9AE41o9iZUg1rRAlS2Pe/gpof4Pc/RhuuPXn/9UXSVo7mqPEqX/LJa1mAtUj73aqejNq9KHn2SiaNl6KpNP8rbzr/O/4h/nD+56eGfKNfCTdfjcfM7rAD/Xr4Qf5d8KuEjTxisUViLhK8SL8RKVo/ekK0SIFSBmxiSMISNM2+QEqsIEV6syxvW7Iiwjj/INOg9/pBRpkbvX6Jg994hA94u1xRq8EZuOITeU8sMlyjYGfm7yS6lAzLQlA6dNarRr4b8dqnV/AG1kQ8M+V0Ri0GQIeEnI+u3J7Gu0EklCkAGqJMD+wFATMB9Tva4c6hB2CuCPcyZIHYOAFnxRBbC+g2BwfSK8ZdnFAUhmGLcLKDVmXRH2Uyr3SM8DkDBBhIKbCcTugmTOQ3JQawdqdmkprGVBE8CFmkj5RE/6t0Us1775np3kfeJRTteVYbKurm8hTce2YxEhRPnb6iCb16ydevmeVGG0czeIF638AHzhInr31onm7nqp9v0XPeohpKX1t102qEevXGCMz+cmoZt6OtGDBfXdO6bNKwk554BzlRszyixvKqnEhlpzlQVARFXsQQ7ORvUH8HwlSQ5iRZAWvHXTmSb4HS2Sl5EbN5BTtS0Tzp8WYBiJThmMUquthgvHAet1WGUVJMI0qB0icF6HoJDZWaCB39+v9FCwkEhty1taykpB9YeYoSpAX82G/lsNvLZbMAeUgYvJlFGwMzLAvBhI0M+rEX4sBbyYS34w3ImwvACAOhBgnoezMPfoIJ8A+kPf4M0XOn3HvzeL9eLtegXjI7vHAhK6o2WC7fiI1JLr8Eq3GYxikda0YMk5WqwDnmHg3EGwCglzFZSIZsWT1rq08CZwpKVQjXWGzPAUxMeoOo042kLsb3St4Tsm5hUlhrBr5C9s2OHNxrdcPFo6lFscX5K7NpLKSol75UhKm9QU2smuOk7CTauMQSQIpVB4EqYnOxpmNyMh0RHCLTccJCAqJcNLBuPwE82CgYbwUevKMOfKrOSG8H26CXGOoKrpOsZNXbCFKIvBHOwrqa3CPDp+LJmXcLtagLtYXIDq3s63+MsLPY2zhQEIwn8cbjKsd5gIst5HgJy4yF0LQweNAgRBArB9h5YhhddAZ1lSu/pK+oMqrCeWoueRD706NpTFlSpM0+q6vj9KL65ZdY9gcA9s6ZOujTqk0QLbUwzMkqWHVq27BD6C9m1h8eEw2P2kW14SJkuE/Wt63bcfruje91FyZRtHWLZ1vloceHMCRNm+vh987dqnxZtEYgaC6Cd9H80k7SSIls0fUiFSscMXSf7G4kRt+G5ZQQ1jmqhZuAR8s5lVrhRQUgCHRsCKTYhCINmSkjgieHaQX7VJMFLWIT70XwyWFhC4cMKXqxcgmM0nuAYjcH1ScF0UMswoLYHsx+s+rlC0PUCwDLCmnnCDgzblfFhcvxSW6filzqLPVZYVNXWMYO8bDPgP4XKCM3ZMTxwKqL1oBi214BSn5Vb4A+MaJ40ex4cE2E9Mj5zLr50BsvFKq/UxvLc5Ve8xYG3LR9kDVYjD0t8koJHEhyT1A/cNLDnupktRL/r7uaOLNq/aOA/cgs7Kd3WdqGd3tjWltrc9Hpr5kT/mEWLxvgnZnLd/FNDr/+bsNsl7HyXW+XOk0vop8iOlwi1w7hd3GT7BbwZnRlEBS4fPuxzodnd3MWuoXfQk8kudT/ZUZSWyId+4rO04Xm5Lp1xez11G6DRkgzJD6nPqUsUpb/SCyksqtWg9GJT+F+ss1fk8KL/Ynv/TfcPfp4rz/dy3eIz8B768rs55FPKkEimVMr4ftj+x+WoV2yA5Y6+z7xRtPtfvfu/8w5Iq4Tvcf483u6Go/fC5uZ/WEKE0EHI972w4p+86eKZf+lC+vy3jxIe8vZLhyQPyueCN1KOGJeYkeNjaMwZ9Ax65gwak3oP7RWvQ91nzvBb+rYR4CSxELsqO0C8SiGqhmqiDlAgzESASd4TEZnx5FOa5LJJfmAOMLkB7Jwbi7IxxG4V5n0riKokVyaAYwluRohm1SU5nZAzOCIZH4tll1UiAB2UsVxuJVeli+c5gDtMhfU5b2FtHZFdIjM2ZuU2X5TAmsbdeN7iHAP0HkNZJgfHlz7ikGYhcBzUEag752DIXSSNDpknQRFyAxFOsY1j6fY1k5Fv8hr6OW9049jzJd5oX4zeFftKaghptWg6nsF7hYidPTW+oprq9hq6KEbfXN0egzcrXjd2I68UYh+AhGPsxqgkGYulHkV/Pys3ZSE66n0N8RrcAX7uq6lpr65Bd8Ymj+jbERMfITQdlJisPQnrH0b85F1UEXXN4CpIwmR1gwfNGEhk5xUI7uABAARhNQQ4U3KTXK7AUiBgUYDvQEDt9AhrI8BcAOEfBN0/ng9LUWYrLhU6cMnmJv6uKyUVZNMCRRneOkks8cAel2Jct+RBGA0XZnRzAC/Fn0JnAWUqNmRHwleHDJpMup3Z0pcP2/5usNyFvfhMfzf4zS8dpGIZYtm72GIbRc3DFv1y6lZqN/UYBTpwZ5JbLPgx9wS4hRB/mlioByVyIYWVyL1C7tVLts8aBDDteVpu9vF4q+oC13YcV3rmzJutL+qZC9sE3g5JOZxTSR1rbZs9Z+68gSTDoTWSZKhfiB9S+3pwcnXmApZiPp4gF7Nxlx7vM3QJSrtTYAktA0B6LwpaGaMBBDWE13icXkJrByDPurJaMYSKIIGtBMEZ8MGQRRkKUv6w9UmTxEHk9pg9ZsrD+OmBaZIx+5GeQEdHhORCsZXBf4FmaHyR3jyfkWlMeaad9I9Fd1q8+gzEMPJsY6Yrr++W1Bd6lcRfeIBWyUzyTGbpZNomy/G77MuZv6W+TJ3tpI2SDNpWfVato/vpDHt29L08Wcdwy2ijXYN2zi1FLyr4ltNtIqOCPtfe3d7ePdkqNtydpa9mFDKtPLfAWjBjNDJm2TJolcLAXMff8XPalJEppW/M8mU7dKrM3EqbXSHmfyMf7ijLy1DSSNxYihbK6YW5BjvrUDlEdy5nijJcmZNSOTRt9j+bkcnY3F6LTN+koPN0w+YELnaMdqJbZKj8EFIoyp19V8OHaEdfm0Qa+pnmmudl3kxbhkWdm9kuyy1wlznLFPzV/Z+gX9LDxEF3/9tiglcmYGQoKDtVSJVQwxEifnNlEkSahoBO4vFUHgSnqC0EcZq6ICzr5hD/tBVUt2wsywjcICR1g7O9J1/MYJlYFOIKgCaEk8JVJWTFOE8IRqJIPD9W8JRaiBmH5cHSqlo8oBN+AmLp1wC2pYDCIwzdkILAVQqJdzB63ULMkl+J1TUFI5ZIaZUxx5EHqJPxfC+reyoYrqyuqW8g8lIJTtjQMECnZONuyIvV6rj6Si7KchWVXDZZbZZD9JOBLJA6wnh8AzogC7twiPx4HMaQGVbRnISRUIARhFUzPPYjZJGAXOEwOoxSJ/1cag2aBYGOdPv582TMEzZ0wsuOTuATk+l2/lTq0dSjsVgvwDcNnAdvdYy4uPE+NaK/Wzgl/BNxEJfdP4Y/xTxFP8evAHjBvs8us70Pxnouli+mTFQV1sAmp+PrbIN+bQH2SMha9Ag0lwBq5MFzylGdXhKtIY+sFuu8PdlZ+S4BL/oYpTJ7AtXE9MlE2WkSFFM2MhoyEGHGpfVafUSsl5ocwYhH7zLr2DKP1KWP0C6z2BURMWa92CNx4VnXsf5DPMRXnHwAVSLZhwfb1n/I/4bfw6/jd/O/+bD5iVHIvWTLH5H0wvv3LkGe6b9kr+U/V/3yBP/L4fwWfnM9/2/PH1fxny/X0ovRRtS9hy9kvkQ70HLk/XB928EP+fP8qw+cJE2th79Dl/HJS9S+ufyZkZuuaUH5c5/HqviE6dNveRO1ipAstvbQ4eULLlEi/vE3N00rQRr+LD+GQoIfQtZPdVKLqMQ8eH7zSUa5JMC1hKDvaiCyFDq9lfRrD2GDKyHgz5VJrhqyHWEFfGwSVjeb8VPvwnee5qYk4wsJvSLuttyUynjHWGyojCfQRyWlkYFVu/B/R2HIZO6QDs5fcD5mNQSDYNn/C9s+8chnT8ce3tZ34WZxQNBbg4QzLwZBav/E5nc/eeeZvs96xWe2PRwTtN5egLzAksdEmeTN8mZsPXoJguoIEmkCM90qagOaSyL1LEluOIkoKQ1w60OgPq0JQsjo1SEI5V0WhAiURSFudJJbEBSy/WcngeEagDO6SX8HAEqBKCaSFEBQA0kuoo2PxEfGJLkxAodXW7Lnqjag7pqZ5GYGuKuSXJs2Ph+fWJjsmbRwvgzihbmF2vhqfOjaJLcU2lmZ5K7VxvOEkbQRjyRwoSbKKqvA+oyEsOQpLsGlMSNxaTis9IwnYZVtuqeBfbrGMrEVZNZVM/Hpjmn49Hw8hTbg/UIdV1cZb5mEjy9YjOtL2XjnIrxfqUvUr9kAjV+7GrgcroYZuBTMVrmKclTV1U9s7YBBW8z2KFFeJjQehlDXyZXcaDY+4yp84+x5ELfcNL9LiIr/AaZrvUFnEoWCl6muaRMsNhskebr0nnHAeoAD1qgGDoFfkTBnAagvENIIh00/tG898B5iUBDV41/mvQOtuM6n+Df44/g39d6Bx/edQ20/ew5NPb9373n+CL+DP3Ju33UkTtZLtja0a/U9965CN63m7+OX8PcdJEcPtjUgnSZfusu55MCSqeTQ34dshVtFuh/6q63Cp3r7Z/xj5/bhTzAVrRv4BJtJiC7qJLv+j1asOHTsmOjnpJYqG7FAgfYYdJl8NFg5bskS5mly3Eu2t5Dt39PQ4BSD7rl0SOaSTyK85aVUCwX9VZzk5MGEmyD6ulmgIg4S6GrmNIA3e5IJD4nI92hILAN057iHwXI7Kzu3wEvkttgNrg+gKYbIl4gnwoghZcXFQMaK3gXpKmI9rkA+C6SywAEzw0b0LrHezCJ0z7Ztn4iR+PqPProeicWfQI2/CDX+otgwv+SxYcuY7qr5m4bdNfskM2vFPciMMg+vSL0n9n/fDZ8IjdHqe4dtmlVzPb1s2GMl84+ITpzfzFxL879/9FFkoft3oK/IvCX4Fo9TesqB5y0nldCkvb8iLbiDlEHOIFCQ1QfSyUWRIUABRUjq8DgvMzgIKjtVK/bAepdJKpHWYm3SoxaZsL7YazFKl5DAA1i0B3KPs5VFQph2/8vq+oltw/MUe9Zs0hlubuxszK2a7ZcWB72aPP+SG/oGOC97ey0fogm1naaPwchJGUSXrt6w/vpVqwOznvnFU29MKZC4tm9apneOq2ysaynOm4F1rUY8L+cS/zHE6hRQYWpTGuEHqzgFRMbZwZc84O/H+pWEBEqBmSjQi1qJ85gzaYnrPwCuY8BXCAVh+Qbc/io5gcUh5KPYIoyXWvHei7uFHdhIKWlGcQlZEWDZuMibxuaog/QrqZ5FbnSFqaPHes6Amg3LQLAkyuo9bFlj55SevGnT+Bfk6Cf7Opktnfv2dvV3d+4jeMZoeOf+zs79zJijkxfI+eenTZMubdlhKhkznv88k+f6+0UJ24UnpUs69+3rhHCyfegq8ZkL18AtnZJPSkw7Why2i82MCE3MROwkyNmj/qIIyy3YDqQ8EcJfBq5XBLZ7bJQo36kW6egenV8jGpXKye9fePH9v5wSuZwaPxwVay7+ND+VxRy4+D7pY4VUobxcXo7H3DPUq9RqMrcMS3LPBbj7hcmid8hksUMQ6b/Az3VHJhavWpDXOdXDOlbu3Lf/zsM/PUlYv9ljTS27brvrIBl9zw0DdRQpVVTT/vjzL7xELrmffeqOA4fvfPj4i2lxq6sF/lYrjeWqGujX/DSSwDobwKNKIUMdfiLYTjJbGbOaxhUIpI/4IWXOT3skAlgqBACUe3C9lnZ73OCC9rixGWUqB5DVWuQmZhP5744Erdj29zOecnfEVIcg813q9KgJmzPxR6qBQADsMvxoPSaSzI/Mfrpwyu2neazrVSMff/r2KVDjT/En8e/p29FyOiNHJJdoMp02C8O6Shy12aPlIxwme0ObwpSfKzJl+0NWJJeJMpb1T/YHR+SLVRajKyO7Y06ucWZFs01aUOj3ZEixnJU7A0qUIVLrcvPydRVmg0GVm3m9KbPI7zQr5EheK5OIRIrqYIZNW+/06wwtwzeZRTRatJSRORrHTjFL6sS+znHNbtMwTfmcsI75P6x9B2Bb1bn/Pfde7Xm1rWVtWZZs2ZIleY/YcWI7ThxnOTsEZZLFSAIkDRAChbJCyypQQiFAaKFIciC0pCVQKIJWbYE0LX30QSlNKU2h7UtLhnX5n+9c2XGcsP7vQSTd7Xu+851zvvn7OA3NOjDH0HZRMzJ5mRoOddLmzUN4vj9fQ8ge/Y4l3KawTo5ZvL4uv87l0NsUNtauDZYlVeaWmkn4zRLlYoVFa1EzuxZEEnOHapQSRk47rXoTouUKxmLRs5w8EJHrNVKJLGr3yMRKh1ifqk35FSIkl0bchkin1jjJoO1TV8bLKtxipDdVD1R0qiS9Ur9EHW11GR16kdjjViplYq4prrXrbKqq+Vst05FDP9lkFTP1stA3fSKtmeSDpIlNSkM58Gzpp2aSmgdYFvXEQBz1AVAV2AcMmKXxPFF+BECRPEL9QKxseYmW5QUbQRDCLL0kyIfK2kVYoNCWjYafjQdh0SMS5AMqOABkxhNeM/5sGZT8Gua/EzWDW5rQAtnUkGhSaKoMLejqOVHTI/47CQHDGsxoJgz6sWhPRWNjxakL/OD+TBN9BWo3EJ9SmKqnLqGg7iEVhzTAEIhXESJUWyA/HCZGqFLWMM6fJsctwpdEBKhwQaupJRMmGNqydRG8HFZACCkUSQSnTq0uE4VgY3wiW1vfQKz5o3OenqtLCRUz4AAjNF+DhGSXKHEaYw0Pgp/0nJdBaDep3VOB3IesyxrSszbX07tnbW6ay2+zD8V4ZU3ogW/P2gyxS2D8GdmOiQHancjQFAI0FdAOJyXRNejqePPmWZgVD2+elZ/dMK/4w8qoccbmWWl6SFANIRuY6HVCn8uoKqzZ7SDxMjXE/xgvADC7rpBpBIKpSSp9oxq6uJEC/2PTBHph0lYLVPIWIKmtjlQVhkS3bG014MrFSaEHL5cpb8jU6TIpoBfWBzPVJCcoMZFmWN1IJQXmMJcYRj/mkQwyeCpC+jgmZyKI3BJviWpbBr/9QEUtOh4bsqPr5zRtnlXcVMfiVjcssx7i36kAkPx0mtmVBi03n2dc48k2uGWGMVpZfHZuw+z8rM38ac7EH561uTmGrkY7k5OAXpBPCOF56VL+I6nBvAbTrprqpbZQEAk4uQCMVI75qW8cfdoEWkwTTGctN320gcAWGavVGcOh7FR0MtNziMoZpvaAUWzYYCQbgkGsTYwlMXl5lBTMoLINkzGHWW2YkOUcyS87Q7MUqXcGRtqU3h1rpesAAZv1ppLE5AXeIiNej80MXgriPnfMSYvBagaOAwnjFszmeWcZ2m0y0w+6k7JhNNC/fVpFxbTt/Yt47cqnzCLbo+Y2x8hKqzPPeJL/8dtsbfQPUNjqktMsC6YsXuZJyPYXX0K7R8mat9eo8oqQi740PnftJWvnxtGfnX3WR81yNd+oqrWPzGXWoZsS/PO19UkkL9MFdQG9RR5yFW8hvvF6GMOYvh6qmeqGdVUUzYiJuSggkHgKIbHAbhD43UlC6IDEL24ukViMSSw5lE2JT2aSmMQSvGABicXChkDiFjxT5bTlcRIuG2jCLEkR8sbB+G3A655b74RpKuUnrpcgCpCI7nLkc3skYjOe0lyiGCAppZJBJoU4kZuphrEtSD7gO88DFdHAsCzpph/EDL075bSOrHS0mR+1ikwZfgP/zh2L+u/3u5CdfpahEaaazf+fJOPhDxZfGpYnPLxssmQELOBCLmsDpmTxFldInre3Mh/Ya1XoZ2o5ftY0x1F6Uf+1NQnkKEvFUEeC3zxyx0P0pa5QsQuwNE8dawK+/QTyveQBLA23UT3UFVSuHeTFLlJPwyJ4GOxHSvNfPfEmgA8ByPrR5hcvE4DooLIidyjbhOnafIga5nRNzcSim+PIBqFrxM6Btpmp57IWM9A21oV5WWyPpFoFmUUMJYYEhhUoi+Xsatqjpo1afRCIbE6JQG5IAEgXlhgF9DazCI96ZkyqHJGr0c8wMzEfOKKY2SpcxZtLzEYfdUyzPnoogTpi9RaHvExbqa7UlsmBHR/CdAHgqVCT2NNuB56eyPl9wWDf9n7+HX5DxiSyProQGF7Z6GR+a3UrGPyfwm3lkSchHy6+xBPIYAEnmND30yTJpyvH9O2jrqQg0iRGMlk6BKBHGcTYQjwtmCK1hQxHiuUAgbmbRgnMYQLrDmX9mMA+QmCfXyCwsEEInAQvtLsZTwYhLqtSAomnxqA0rc0thCCayjGB2xDNGZwoBnQUCiAGGVhuJVjexUsOIH9BTnXAI4b86jpSwkEiArxir5CPGfzXKHPNv/7e6+fTl7kqFHlr24il3co3voluYtY9BNwoU5SpvUqvukwhc1hMZredPzQsMiCmIXh6f7CBYa4dx+4r75ky5Z6VeETIE3hEWPTotrrEyBobU87/tPhTOMhTpnKNFNE0kmrKTczr5W1Khek/7J9gCFQ0N1cIdTEEX46IUlBTqH5qFnVrCadiKqlq1BPLMSQ/BAuD4UxfDGJrpschQX1GLCeXwBk5ZI7MHKsfKC6Vnxm9TyREPjNChMBgDDLAB2K53n442zsVn50ulAfsBXwSZSX0gBw2bYT+tZAwYSR57BysaOVIBjEdo8kyGryLNY9R5UiogjemJ7XhXbOpFKTjhiIjCXAL4cW72EUfxMuXUf06GuL3va42Ooz0kFEKu2jodbUU9hz4LL8PdvFmcR+c5ffBxVLYc+B+OZ6H5+TJo8R78RavPO38qs8Z9w78LPJq0nvwcwHZRkKCbkbkVCl63k2FqBiVpO4p9ZExmrUk4tBRw2qrp8onFNaSFYbFskqhJlAgRqKc9EcAUMAE9YJyehLhpKeECCcbwXMDEdQMYgeJfa8icKlg/1cXcupquFytFWKfsh4IxZE4BamtEvdVJYVHi84UL/UWImUZSxKqm5MRgVSoTlKXwhqNyA3puWIj1mOMJIOVcafcaPfNb955z5rbUOTON9FsftPJQ/+oeJBRjhxHFnvXhbeg3Wj7LRcuqebXfQNZbrmwAnnyvAnAb+98M/3mnemTi/hN4r0k7L+n85YLL7ylrf8f/h9tTl94S9GeJ/KZBq+BN2IJo4WaDpHlQtXKdpI9giWNacRloseUmjGuwHVyLDofLIhCle/JCvBdZgcg3STK6Yal4YgMzHgeoIG+fRoIZ04OaszaBbm93QdFWZOtJDuqgTtAW20o1dI9ncDL6nKMuqxBEHRTiVaWVFgt/RjNXCDIBSVcgFR5qUY+DyvRtzLxmLl0CGKgsWLKVbN4qknLvJu/9vyLw1sWGg0SR3rT0y/+eNeaMisWbL/17Vhsw6nubvty/sTb/EOX75ddUX/jjL0f7vn46lf9PuaDD/fOuLH+CplI1z1798yP96AKsTexS6Sr9jqsfp9KJeLCbputIqhS70qc/ENNmL/51VdRRhIxmeSO2hlBtIoJqLRd7JMXe3Xc6YourSrAsL9nZBa95mIhD4r46EcIMnc/tYp4SS+ltlInKMj2wAy6mjhK1xUyG6OZTYXMZTEsPWcv2YKZWl4AG5M2Bhb+wUJmUSwzD0/9l5MuEhzIkCzRXBiub+7EzD6lALJMfQFqqIE2tbqQW7huE7iuvKuJUjUdM/xqbfZifO4y/Ie02fV4azPk5WWvwB3aaYeFVSKK9JYwI1IN2fopmNkJSoSXy9XOAkDD7MWr8bFlF+Bjl3E5jVoLfb5el12zFiau1RDYXh3tbSAe1+FU95QG4I9NG/E97W0NYxFKjtEwFnqcVWdiaIregHdbhISCYKIVCWAncKvZKGCojhZMFaD44meUQlSqBwT/i/BnyyDavXYZY1+2Fu2GRPYTNbM2o0hTCEIImrBkE2q6RU33qxQa2bM2Y0XHZR0VJvOaORIbYlpCPyN5+j8LtbSERt4PtdAHhdwaWK+x1rRb+BZdPriFXr50zZqly+nNs07dgP8I4vyJhJ/+NXwXn1ap2owmmahDUS9Omq6smzy57kpTUlwvCzhZjZ9dsDzUsqhy0qTKRS2h5fiVRjrGHGfSkn41QnLq+6gNWBPdgiWCHUhFZaqjWbEV80qkkJNa7BB4gHVULUnXwYJYG+aqQuaSaObSAqSibS1ktsWwCJG94mv4liRmpqsI6iUF1fdyzTHgkuYqzCWYg9IIXA3D8xenpcBK4CWyxTPzC5nFAtttLGQv3Yr/3EZt9nIEUMeZbQLu6Cay/DXGckpiEFZK8fMYLeG4aGZ7HAp2Z9PNoPtOWwtcspjLDDVk548xVSeXc7sGgdEux0yTM1jLiEi9sQ3vzBggt1zCDQ+tWr0AGGvrFnzfBctKyrLgSIqfiWYCXoFkn/MdO6uKwzmcZ/oc1gN4KKN/AofJlm0Z5DeRpDFAUHAY7xqxjN/jN4GpAYwSn/xiPN99UybCjCfXSg84jKGOyyaFjI4DUq2C+dF5uCwC8G+DW4TMMyEfbfz2FrpbZIC/cuoY8ozjvf0iqardaJSL2lT1opRxGzDfNmNKVK9qE8mNxkvO+GiF3N75WB6KUcuop0oR3/PimVAh558zn+Q0XkAmIEdh2OiAgG9pAbLCjIVhL9kFiT+K1amcN0ImHQA8iZBaepEKzAkOQaefXhjunl6HL28iVVy6C7luUsClex6+vKkbNpuG8IK7HNJopJB76K8ElqgDe5CmIdsE6426bQFww3Qu2z6HBMRgCV+UwMJ/FLnVrNEASdhy0FgN5jiwQBJyq2mKXBQYu4aA2pDznmqW4Mi7MT0VcsbFqj1Wk6uuta3ONfOyS2eWPz7y7uPlTfNXz29iMwSzJhIrK6OHyGXh7lmzu8OBpp6eJr3+WyPv3iu19nTObBJdvvKx9UMdTd0VNcum1GvUIkPbpOU1Fd1NHUPrH1t5E/8Kf/LYS4lOdzpdPrn6/iffexuJRx559PYVc1vjVYZI2m5nNVVVbXZDtK593opbH9w12OrUITqdprX2lllC7DfRb0ewpGSjgtQQhcBgj/sHwu6FgnbeAlERsGJw6IX/pIRwG6s2U3Yoy6lPYvUA9IIyK9ELxraIZkBsblJ1KbcODxXOExARsRNxyKs3lYwoATRWzcUTSG8ZHNwCEyvMiKdu6FssiVU+Gpoiucwl+bWAISMypAe38MotW9BxqDd+chEW+B4LNTZW0FucxTfEe4UaGwI8I9jYcfsAX6YPy+UZKpoNNsRhdsvq/XhhoxBwCjUFM1Ykhjeg8GhdLIeI4I1ALHfhw0gNoD0xojX1HsnQMSFYJNdLWK4X5MAmLUk/jGbkcbxNQnvrY8T7EYNwE3ssV2uEi2sxO4OaRYrBxEeBX8dQX91jWLGjR+JY2i7FvxvH4uC5UYjW0SMQr5YuldNmPjiznR93fMQy7ppdMCGUSndDSSag5ejOYX4TaPilXUiTP7MTKY1xYT3RYO29jiqBZZsgzxBSgTJaEuTMCdzjKJDUoKyJBfuG3dHQcJ4oYyzzttKQaEkb48IMOpoCBnFkWC1Qu7Hct9tmdavz39vJb9r5PbSbzZCcsAH8LT7oC3Msy4V9u++/X8BhKtXJaqW6qAupXDPMQs5CztkMneAsk5FKCFDxYHI0U3YE5HUbyU+1CaJPqpDpiIEDPevF0vrTYr1BFSPepRSXacOLiRGcT1xDRoQ1Xq9QpwLyTaD7zEJ+nbiUxIDVLohCTCFIKgNkNUDTORPLONp+DnJ30jSnpYsGKd0slRfzMmORwUsFnrL7OqJxuqK7sfhydVVHH0DssDuwtvUNh/HECdCi8ET/e6ODfg+ldJwWmRQSKe8TS5US3i0RK5BHW1xJB37Su7ACvZ2cNa8Svetb2JtjdxicxS1j6RF0oLjPMeqrlK3GtAtTHVifbaFyLNBOBdVHQa53CpFOWAbogV5tg+BNPL82CTUdsMiXcepyZW5BmUmNrooSNU1StgUcRMCcqiMBcZxbyOvAkhhXd17ywS3g05QaHfsNejvX1lNcNb1hahv97Z7W6nAGmnB6p9HBuLznUO64QBeSxY1uukerlM+f9JPGAdTfU5+bNN9zH0oDEZ2Gk/tRKn4esrEbBKqw1C8+vV/2H+lJTBOoJNpEOfEs2UzcaWwBbH5ZFmHmLneFS5WrTQQdulUUIG4rsMiBG4sknDFiTAsobQ1pFHqZ+BW5TCpRW1qrXBetXtvliLQsXRy+8esVA+varr3/o2/MLZPYDc6lLX5/S9Msj1tViS6o3bp2aB37IVp+2sR8gC5AP+YfoIfn6ptn3b9o0tUL50/u6nDHN8QvvbhuVdgqk/t6127cssifGqqatGrWzFefKLZtreX3VKqqh9AW9kN+z2mj+Pv8HnQQLYdxrcXtzEoDWE7sBkuyGuDzMhXajBeM72WFHFPXTFZwweSJ1Qu5NpsgKgRIfHqi5ZH8YTksr1WQG9yQbU7gVaCiE285IR7V3wbSmBpqh1AyubNeqA+f81dFhYIvIFtBxCQpgWaGOUIPKVwmczzm0yWIOVkS8Hk9rJjG67IaUcmUG3gHq3X4Ysw5kOKqfe+BJ1mZrrtyz8Je1N6/CN1X2a1T0FMfQMr7Ft33uy2L5w3xd//hLv4fL29mdz5Bf18iR/YQagsi5FCIJbxHrJSJeQ+z/cEPnHp/GGV6l6G5g/xA2G+2PYi0e7b8fs9Sx08/3vwy/4+7Kt2O3xXf5hBdGwwUf8nJij+XSemkgHOi/fQ7hJ6VVBs1jQJ/BqFZRgP0NBdywWQroSdAykBaD4lWq2/BtJPXlBOptdwMejFFSslpuBwjUjWUfNuQ4qZLQm0cSG9jdUYDzYZRDEubZJaRIDUdx2OOhWTAOMkG9OLZJuj24IGlfWInu/llpL3rD2jN0PyFQJXb+eJ3KmmJUc3rUgtCvSZertJL6G0PvEfnJBL032KZUoz+G48L/r0g/0KIf5/Z/o3fOdyVdyHty5s/ftH+IP/PPQ/y//putF1H10zxOosva1urP/gLh0khBZJwxV8GUICOUSW8jI9ks2ULKR+JzExSzdQkqhfmaZdQP1qIHagmWX9VpPJADVAsEQd8/brYqFtDQpwZVFbpwrOxvSFTw7WrKEanN1RUpppaO7qmgoAfrsYzlD9Y31gq2q1LmYFzSPxPMhUMEB6TMGoUhYxPictH0Zj/9GKJPpnixBI/ZzIzAZEeysqaUyazKKD3gzHe8+Dtb666+NZ/oOnP3v6HzXcrlUb6+0aj5G2xVXmH+Hb+oQf4T/lW/pX96I4rbrpk3rRf3nzTUD9af+3ll3Uj26UXLPhN+E+/aYrxfzVdh8xitYLhX2fYzB/RvQ8dvpw/vPcAP/zPW7v6DnNmZDcUtxtY7hfs0jT6CepEP2Q3XzSZP1Y9Cf2sWsEflpV5UETh5z/Ur0Pmup7fuH73m6nzL/Pyf9lhHKgj8/lm6jrZXlKjCCrXVeCZy0BWaE0hpyGgCxoFFpm1GtjUymWQdU6wWFMqxMjooAwqlEs4CVeNNt+H3uQXPCQJovdOPXfxyG/oFxjXY9flr3sMvTP4xu/pQ8yJkR+P/P3HaEic/mbByz+8Fr3iLZTWlLy0TlpHcmfCuLdBYtATL+7E2Hbzmeh1MwD7uPwwCkgguydUWmjPjlmfoHhR5CzJSkL5vz3CTnv0ww8fPb3/kb/lz0ossVsrGFeFtYzfaem28DuxEF66EH9PgquEa/nqSZPdxY88rJu2/u/aERxrh7fyy7SDzH4QuoCXws9px/HJblqH1cfiUfckaASgiE1sxOmj45taZqX+l33irhhri/9LtYUKCHEtMAV9TluS1jK0A78j2lFmrRh597P6ZGT7uDYLGJKN1AxZrSxJ6ZECuVANRelofZLyleJ4JTQlYn1BTEyINklirU5sMkPEvhjiUkyl+PxgHYkogSUbr91qupoFzT1AQk4AFQS24AGwFBmcDJ48AqVgEvyEIO0PYI6rxlOISSIOiEkMC3kYFNkQY7G2lSGRWh5vAAxPEpAD8HX4HewIykckCZ46vs4UrAOhAW+z+Gg1nopgG7+mGJ5FgyBBEPgCJKYFH9aLSROIiEEei5dEcamiUCCIL7p4w82L0GT03XceRc1I8tatHVoXP5d/gT9YXPQXVKXoKS9bYVDopGq1i2NYNaOXSR0KpYIz6eck2kUeES21BqQa2ojkSUWjzcGo7UaHplzuZXVOhS5kKfO5DO7pHp+o3OsIauVOTqYwikRSudisQaxmfrlEqjYzbPky/nVbddzEeOUSpVRdP2RGVSafnjHrJArHtel+t9FSVYX1mgpzxG/RIlSW8NVxW7WMVilRaMS+MpoVKdRGVbBXb7arJG6DD1WrafUUFS1WKtRKEStR0AqLTsXW2KWu2VWeWqnOoKyxKxSG4IBmjtxQWSv3a0X6G1TuaEDKRt2WyioNq1XIaInIRr+AdJw7zCAxLVMqGy1i+kE6hxp+gZKPL338Y/5D/uAjfLb45w0bnyzSlwTXilidSsZKtVIk42y1ZaJyrV2p6bM5tq6zme3cNoVPYTJz1jIZF5rCNkxWtXtayxUKkYQ1ShyMpk9lCiiUC/prPEFvNcM0MrREorMsQFaTVVPTIXXNkki6WHHL3MvRVa/pkIrRyjWKJCsRSTXIpVDqzIw3ILPIJY4aW9js1YtsHMspPCakQmoz67KKtCqNWsIgqYa1qiwKTsyKxLoOrVqklRmMnNyg7zbSqn4Tq9Cp5bRUbNBqGNQiptUaRW0Kdwtt00hcGnGclplYVqGs7lSEa7U99P0asVxFs6GWsFZdITHqDCa5VHk66LEvCEqqyjxyrrM2BN6VUT8Y4Op78TpTRcWwrNxKqs8NUHOoRdQF1EpqHXUJ9fdS3P6KaC5U3wsZTqsKOVfNNDA+OqO56hlr4ZilkIvP3AjHbNFcYvZ6OOYr5NrmLgWLtM8G65VPAjEgl0Yz3iOAD1dNKttVEzd8rrauHW7uLuSmzZwLt7QQq1ALeOG6hZDo2THIMlofy60irrRVkF9/GWReeLHIYHP7SV27Fu5pvTgcrIf0tGx/NyAgS3rnLV4O51ZxwzMGl64gMREWPB8+raLCLd3klI3LKlFDKaXgvCHI7mTKK2awXBsIMvFkCjYDQT3UNQTcOrHeyZihOKyaQa10yp3Al+OvQBB/VTNBEdzHwBP0+F433IzPzb3vD0iKUqgbf6R/uG8u3udP8K/yP8KfE3+4726kkAWPTtZou98PyjoP9F/233ff+ftLetrlUbSOX4ge4e+IXu2bM1Bv5f+MbNb6gTnoad+MK6J4b321HC6QV/PfQjbvnJn1VuTeMv25e995965ne2/9oFvL/0sWxLKCRjuZVX3Wn59LXo+uf+T2u/mHv3vn7Y/QuX07Ljh154+XX70HHX/4Wyj5E5S8feTx9g29VVqUYB9FSW1V34aT75vbb571kzu/+5OHv/WT9g19VVrl1d975eTFyw89hJbd+d1H6G/f/sjeb2L2sxDdtVp+E5Z0VKWM7SjmwTasx86g5lFLqVXURmordRX1deo26m5qD/UY9RR1gHoeLaEyd0cz3wKnK3hRLiqAH+uBOOQ43BsD79+WOHj1LiGulbmPxkk1sMGHYlA6MbvkB3GQS7MLvheLDdvCUWk4p2u8Eti1vJBt3YEvUheGp8DxzPXxTGchsxOzXTTzTDxzYSGTiw3fduEqfOqmQub5aOY5vPQeImgDQrhX2Vh8LCT4VcQy/kImgr9JiFO2HgDbEoVscxf8akEjzw0MLQO27y/kZi9Kky0t5GUMb7r86hvAu7m+MHzZ9l03k01t9nYU3n/Pg/syz8L+nYX99+99Yv9BvJ19AT++DOseGWVD1g0RtwooZZ2VSAmaZQqw0pVYo7PhkdKutDgqqupbhhZf/rV9T8IoiZbjoVBmb2i+YjsRusfkAXfK7XefqXyUnBAxH5gQgx/4kse/7Pmvet3ob14I0jh1LM1O4w/zynRjZbqy8Y1QYyjUuId8h87Z/qwjn3/8y5wV/hFLnujtdD69JpRMhtakyfEm8v1P8s0Xx+2UDiXOOSR8F9d/xgnhe+SRzz0tfGN999VP75ctkm2kpLAe2BAKppDEj/AGQzZebWc2vRGjn47xr43cfsGt7Cu3dNPJKfzR0w2oAiVEvzo2j980r/1UbfFhZGV/hmxTiq9NufV0g4BRkv70gOwl2UukeksQkgzM8L+MNhslXnMiFUdOkQZBDXowrETR/ax7Kj3/1uJjU0dWMD9Etg233pK95Rb0+NT1TQHIlPQhWbzv3gsD05uiKiVayNzXQy/AV/ecflf6L2RLw9W38vOmfn/Pnp0r7HavKnrHXb+9MOBlNTI50e0/fe3TZ2VLZLvw+yjPvA3DSZLwhwduKWbxH2Y1qIrevwQtgscP3FrMwuOzyFZs5ed14zYtwfNVv7wOr5dVVD21gcp5YV0MCHGgIYA1JynVEPO048WLBct7QpupO5SVKU9mFIeG5TKFPpzD32fyW6n9srqEXCGkto7bJhZ5Vwjkdw+xUgVBJseLjIkFyZTBsrnRe/b/tBNipkGoRSIsYQaCfizZPiRebl7otpcrknVT0OQZ2UmStOVuwNUU/ksqE+1+sTjhcrEZprxHKXcEin8NJMuel/W71RZDezwmVy9XV/3dyL81bfQeZGn3KxOucr9ILG678n6Po0N6u9TpF2wohk8zuN8hVzpM7R3VUkyxnF5FgjAAUlUbzVjBwwRoGv5oxgMhwjk/yTTx+2RC+XhEtJlQLKclJn9tGO4TbFY+EtfhiUEwBwDuOACDI2clgcRWm1AgIqsHzUfF4jnPCkVvlCKYCLWgA8kofNAPhJWiEsgd5XOxlE5LU6zLR+l1lIiLc0mfjizgdMAX5LxYOKMlbqPhZTQN/RydwJ9pL7/M7+cTvBR/9q/Voz+hrekT6LaPlMXv03Nktx3jD/4w/R/+8j8p6Q7m5nPveBk/ib6Jv5F36OmO4vPK99EN/07/EHUdu00GD1B+xF98Ii3Ew6TH4VikqA6qh5pJZQlljQWogdRUgDITkwnSsZ+gSYJGODgKXsIJi1FtIVMrWP/68PLWlyB4/JDKNqWQ6RMKUACUk7CGYfVxFiZiXwIQSIx2h8EfqfLVQzpmdkonePYheWwGl2nFRG2qgou0ljJ3BRdLThsAaaqHyza0YDK3Q+Bpa/35XAiUVmfC5B7L6MLdAFCDgDQISVxQ6nsUg6SEVTKW8jWGSnImwx25bzyK2tAS1Hb0xhuPYm3pIf6Fo44NzyGExTn03IYNz/Gf8kf5T59bf8/69fcg18b+6Rs2TO+XB+srKur/Rzi4+8zjMuzXyBNuHP/U4nUTnoW30O/h1vXIT9BpflcfxA/8lCLHKPG4vgPpxotHRJS6ifScjkRL+woZbzRTHYfEZbPQbTWE9YVug54QKiW4x0LLq8YkDPBZSQV8MVcZRCRZzQ0E2xFCpSO6rM/fAJl3WRuELjl0Wb0JhoDXB0lZFZHzunUoHXLDR47wL43cDEkpTggVZ/D2WRTXaNBm5k20Wc3fe/pfr6qRlbkB2TT8b0dyZVDEDEVm75otwGSOo6uot2jlt6Ib6L+ibaeP0xeDl7t4G38jfRDtHrGkF16zcwGEqIPPCu1SbJD8F16ZailKWweZfA6ExAYzgIIFkY8cMXJOic5cLYFyOUGkZe1ac3GKVks/a9GePko/SA5Ur9h777P333VRJ+29+Ovf3fv9+25LwVl2j1fJSJRKwz+LvNKrLI7806BUMjJl6Sjfxar88fkbH3mRP3n34PXzJ/usrIjhjeQiwacGcT43UdVYXm2mYMqKjWU0C/FUsrEoKoisCgrW4qST0z0jFpV7vPomAf4MOiGFEnjeTsEEj8pJAgxeEgVrRDmCdjvRhJgZEqogA2f3hgXMzb/olrdMef+Ksr6ysrjWZVsaZNgN86JasfxjN7NkwYarG08YGq9GEadBvNfoqDKPHBo5ZK5CcxE9/YkY+lfXL7p/vWRdT0wRNxhCnbGgzkbTffZeS1z6sbf6Zj4Ye2I6z8cXLkQMuGb6dGEF+g5/oSKsI3apT+8nPG6l3FQN1CEzENTtKOZNlKmNAqAYlXUZON0BpKaMZfZQDUwQUi5Lq4gtCkElSpAvy5EIuRGnFyHOr+dkWAwBVFHkFIN9JwHpB0tI4cQ8VE7E28f53/KvF/hfYQaKv8Ufpo1vvWXYtXMXmoxohcbujZeHWqwaxOxiM3nisY+VleVPD9BD/KYR93pmcKQ3yN6Idhf3sSeLT9EzNcHgqTwtNqgNUrFEXO5xK+Sj9U6Q7CXpScqEW+jEbQxQOY4g/HmiGQ7q74IDMqvgwO0ostnLXUKvJpCf84s40iQ1K+Hwrgz5GYkK9zTjDqIXcQteFL4h30LmvmznL9bxH/NzcEuGUOTN+eDwnT8LDT2Rl0if4VdefTW695kTJ5hnRnqlZZ11EYb5y8itz0AzxEdiKHRBPnbqgpGrnqBIjfIzeO2QwVhLDWJtfiOZdwIQOpk1RmIEzhcy/BYLa21MSG8EjE/QZfB5M6k3lNVV4u3OQnZJyW2GNYyMgcvIGjJmXU5KsjszzVwuOmuIOEAYFbHtY7am3RzY3iRqGoIGEiSkFWvHXk81g1mcjiXbEETwYGozTonZKBwB/A2/ByI6KKGqkNjrQcdZtWt5jbzi7mfvLXcCGAmeXZSO9oi3wWkUj0QVVXue/abNzitZlSu+bO+lSxoqDQoktkyf3cdpGXNowZWvXFnU7fjkyRvdHlRjC9isBj27A9P+OK9cXLHYkhdr7WUqNpDPF/fBMVWwzmfzVln+KZxQClcuCS0svlhz8YZLVi3rb9RohVMyz5q1d3797pZYeSSi0fL/E7DZ9AYrkYPyJE6jjjJSDdRiEvtXV4AcP5Zg+3rGagj5ScGXYAwywGsE/ztUB6rBOtuwiNMpiLFCXwe5MJAK05BhuaxCScB7s9LAGXNugvhiiSuW+G0nRDg5UDxx9mTfgrx5h5H+yMTRCq22+G/OVNQBSh9UCgE77oiFGHzZDLFJD4Sa8qwVRYyOT4xyFT+oCqj4aSq58RMHfwCuFu5J50cvbgrlqVE6SI9iOpRTCaqVAlgOJUmj8hFq2MdyTDUkbRQrq0oIt43iBvq4bBivUxm9LmupKPkaSdy/RIgwH42ILkckcUKwwZ9LiDw06OG/MteZtxmEN2Mzhm3m69gPHoYm0gfPJQJ98NEP//zwRn2r0PwW/YaH3v/w0eKW8zWf5JyUcHON1DRqAB+A9zQaTHiFInkfQj0eJBwluLUQVx9Ppsb+h/D6wLj/PSUoMWSU4dmQg34KmLS0Uou0xf/gd/w9eNAh5iZod6uV7DTE0Fjql0tZsUiKBVU5SyshDF6iUsrFtIQ+eQhcD7ySPoinQyu0QaFG+1V+FXqKtME40ou7t7bcwKAITSORSMKIxWoxq+ckUoNJzGohNZLBTwawJL6OT5/il/KD4oZ/n3xF6GMqL62RxikbmWugj9UE4RzyQmLj5FDI+JIUSK64HCZMk9le7q6G9UDCZSIQp4E1oqelMkdlhBy1gCwz1u+kNrb4TM8Hia+iTkjEdSdNEg5WTVLaNA8MSdhX6HF6b56/4dEP6cUc/cqrWoWF3m8ppxkt92qxnqvRHqeHgHnR5fniIoE/MDVwf5+q0dL5VzkjTZebi3OsBtWrxQaOOy5gQkFMDeDV6LFcFye46lcSBG88efoIWE0cgiIhOr2ZOEUTMVgUIYSllVBEqBNbdxY2ugAUaRNwvdsgZxCvm1kfHuXZ+ia8lSRTbNwHxUjwZJCp5LLVqZIgp/NhGrE6PLppFtPIR/snhji6U4kgiV6UGAEbRsS5zZzEj8W6J1Flhj2QQaEnn+R/mzndk+GPPIl2717FHli5e/fK0z2rduehjClEJfJKSKLkN2F5jRzJ5+m/McHRW0feglvhcavw7UwQbi9ecgY0Bt8D8DMCTv44+kUJMn03BQj5boJlohHmxzE6OQSlBGZGB6bJ075QTSxZLxhy3bBfWYOlKMFlbNCxuOE+HW457cNNZ2njOenk8QQpUGD0JrxCHVgoRPEl6CD8V2q9Elo/2uLxVBBaPvIWpgKiIOkyn8eEQwAmX6pBwU7gn05q0ij3lLika1zrSxwBKEM23PphX7AuRdruMoOzvDbRQVr+pbjADBBBRi8UaMDsIEET9r8EDdKAHwa5B/ymNBTfGLf3RbxwhHBBCWHozPZEegSoENDjLG6oPJcbwiVuGPb5g6ExXhj2B4IVX54TCHjSF7f6r+hNLHW8+cX9fQotIak2D03g8SCWjRuoodFW+UisTl0MFL5kHPT283C9D4zIENGTjZylwQexwDB+TFBfrq0p3FR/vFQvTgSBO5zXI/4SPS4ynN7/xtzV62e+gY6vnvvGGzPXfyEd6gE6Lr9tx/arTu/Yho5fddacCTgjMOLbYMyLiNXCLuRTt5PWC6AHboHrQWtyW/AYr4gmU40CJJTdD/s1yfrm1lJPQ4xHrJWGep+Qnao+T0/D/OdNEDQtPPvFE14/YGa5Vz35j2vZA9d+/OSqVU9+fO3pnl14C+2+fSV7YMXtt6843bPy9jx6MZ0+BboChGPTP37lFRSGBGr6w9G7mOC1/yBbuwgRbr8dEwHfTX2aHmV1KGKDjgs2gTEaCNFpHVTvBCpMOpcKnSUqHKgI1yXrG5rbxuhwIFRbl6hvbG3/8pQwj5FCoscT4VeiRRotAWLgNSCdfxWFQdX/UrRAF5YWATLwS+SYwBPVVIyqP4cnGs6lRuMYT1RGa+LJcTwRjtYmUl+eEnEorOhGX4UAr6LbMCPcjiJfgQ2gHA3YXEmjS/GuuM1Gop11UzkR0ZkJcqdOkJnGcNFglCsFmckBs71O5PGT9lpdpIyEUuGNjoJ5UICR1ApgHtU0hNxR+JjPxeJ91uWbOPOnn0JBdPc7dyLnP39+64wZt/78n/x7d77Dr+Hf+uNBNAltR5MOHuR/wu/if3J4/BwvivDtcNEP4A7kRJXC/T/g3xr5+fibDh5E94+f4SmhhttYu6Gve89pefzclteVWv40bnkwWjvW9gPQdk9VtObLtR5WfHfCmwAhCJj+KzQ/LzQC1vuv0Pp6fEssfRcRkiC2kNLKBmQDWCf/OtKMWm/9UUD8mhPNbC5k5kPI3IYC+BqXk3p1iQI4D2rhcEchs0sQC24YZx8MjZWCgTJSawuZari2tZBZqs0sKuGBrRXSdQYLmUHBiS4YFEtG3huh1mo1pqWKjcQ75y/eABbeixdxumcM/tqOnnmXwv7lazldu0qkNPpSvQNzlqd3XLWL+NYHsRjqmIHFUBeXtV8DkumG+QAGy1HzFq+DK1ZtxjeqkVRb5gp19w8MLlx65VVwvLYD/wFHxB7vnHHNWOeNN8HrRm3DiTo6SMoAqGlXNZ0QoighPBI+UMlVIpgIgpD0oQPsr0RdcPQYYKDXjd5Ayr5i7atUWqBUTw2AarACIcSnag+iFvQMeg9/WnA//pTv5Z3489Oeb55Ac9EWgN3aufnx2UvWP1vkPyweWL9qsW5Re3/1xst6u7n2tvQFzMKOeOXMhY8gG5qObI9855FF7+1p76nu7FhYY/3jnoBL4yzb9ZzOYmtfJEvW7npuyn+XWRQK+sYd/E9yz/HfO8E8f+6fxmzUwiznv4FPfxPe4rkcmrRj35K/XXMTf2D9+gP8TTd+stTjb1/UEtR0qd1abcfC8jn/dcVj/J8fwW/x2F+f2rvh+j3v2WoW7qzpmrznj5I20XO7apOyRe02i+65XRvn/aGsTGFT0N/YvPObJ8CWJ0Im2UrJj0qe+F6C6+EtZKICHDqWVNxHYF72C6wn1OnI+qFWopVkk2stxMQcxIwhYhsgwDzrsBPN3WQ2sb4UIgXjqxk1S4qNILFETJWM+qO/In3jPNSHZs1ifzlja4t860b5KvvCwIyazgb7tG8HA6e/c4Wzk72ha0lX1xKmnfzQG/2Vrf3qZubhhp27Lp7H0RyjoGmN0WduX2syjvz3vPJJ/Bu3rlhx6wrGTX4EuwT76T9kS7DOnqJ68JqTi8M81DSGlCxoYoDIJ43B6NPFCCJydz1ua2NDpoPLaIVKHgImLEfqtEOmNpRiFqeSTgBIUoskammwmk6BwwILXUGCQ9cCp8S25pnRvm1zm0KWmEoFWV9Na2Z8+5rr73jot1u/caiTXTFwyRNLp1dPCXk65i/cvP3bD7+45rLcqveH+eFLFzYNNi28FLXeePOO1Z5ki5kdDjU5NGqwIhYfU3CqeVtvumnrXJWm+6rbrnGGb/n2M995sLaie6Cjs7ZCj5SqvtUPtS1Y0BaboV0Kuu5S7YzRGo8x2TLpa5SSKqOsFIIJ2QITDSgfWQ6vtRk1SbkCyNFRpHMZ7R7TyOlv0N/gNwkwzPTBs/eKW+hviC4ngYM3MLugnPqpG4g//PJSfDEVIxiXgEfmx5wnyEXfpcCXJSBZ1hUgrMNZgCDj+kKuup5gs0ZlYUgCaRLKxjdHM6ojWUcgBhmuw9U1dfU+ofykHoX3myK1iQbY1xaGLS5vJQRNQCaAQQWJZTaCzw/uwac11nKPX9Am4jWgfXsbCAK2uyGT0mVcDdkmzAPZyiBBJhpPjImaVBlym40S/A9xKaxpQ+0FrlTCDX7HU4jNjF9hQbeE1Wb0mKBxEhq+TWjoG687AbwMXmhi6TT4UAQxA6BcBcQZ9izagsTZg/u2jvC4kA8A9cQ0JFAFUyQBlpmSkTfAtSsUKq3O7iiviNbEwB7j1+3X21zhWsHEzZ2p1+yWoUQqmIibU3FosjcoYUo7WMNmAMQ2TuQsL9otgK1jYXoL8wwp7lj6J/zk6SH+IRSJYQlrCX84Rh8cbTKA2KbvuguuIt/MB6UbcOuBEFirFtpaR9rqoKpwW18l66waL5ZRoeZelqLjUJgG3KaVpHCNi7jgfISxopixooSxYuCFxlRyHsmpjF4IyxHAumMKUMNysVpSHaUasx8XA6VMowhn9W58mb2QswTC+AZCykonhBJXYday13K6/Warw19BOItTA9wDnhozOg5q2hmhFggpE5RxwkwKLjyXLhMkyEeBczjtTCJqicMSqdE9AP11cwT04SwOmwbIvyC1n+Gu0o5g1kGRiTy2qSSvA2tBEcVR4N9pUAtvN0WdRW87oXeB5CcTGp9FS5Dky0oabkZHIgIco3i1HiIFQQxFHYzfnM7hB3rjy8vOR283obcW07sc9wsptlMxRu8yFRQLxGTNmoDeBnOwsorQuwxAZVTEoKhuyGgAZRkob2zIOiFYKkLcpuGGjAcgCjN+LlNxLs3PJjFzbh+cS/MJNE5P6INN5xAdBvBoTd+D4+g/YikRXURoPlKieYRqpqZRayiYrDmC++smkmMtpmb/uDEOAREqByZXspBLVgEtkyYotJgMyMLZ6ePGfBWXU7QQUIekLtMFWBccVjmgRqCgUo0b8cg/AZaN+6J9MDgIjksob2scPxXQH43PkIYkRiHN8UxthnEZjnlYUs7MC3eNHmyirzn/5tid56ffOmo85UAAwAu+KHY2CbEykq1qwSQMFHIBBwFFTQIJA90TSOjAJFSRisABAPGmsu7KzybhBJJwX5GkE0mYH5f4eYZo44l5hshnkfDMfbu/gJpQYkeIayCYf3qst4NtK0xW7Daqk7qbggm1jIxtWwGK2/qIMl8RhfgSvJQn4kDlSDRTLVg5fUdylooIjHmAro4RK2cQTNzeapAmbWWYfCyj18IC5MMCJRi+/bpsA4SgVHAHdAYz19hMrB+ZkC7b0YkPx7lhk7EOANcztbqsUkHW6omG0FHgdFic/Eas+0vwoI4bhQ9esfFwFiW8MsznohbkN/oTfuNZ3jAAGGU+KO5jXCjySxQA9XBku7CIM7vwslTg3yLjHmxGwkfoiFKSxwBxyJCq1nh0o8jy5VhRhEGP123yyfOHly9HkVMfXffwdTc+fN3Dj+EPltG1n94vr5AGKBfm3gHqeoJR2ANw99naJjzvmgvDSTPBvC8M68gGlD2fiefZI6VSH+3EqJgdBIb2EKD5TDv3tM7nrwwDtEumQpdVqIgrF4qee7Cgk036S2kkmTAHMGcy4ZKMmcsanGOeOYLVkjxfyp/WiVytSFuNXGL9eRE8wsg4miKNlTbtew8w/9Bt2/8/V+efkJ2b/ieuuf4o0h69/vqj/D+OTnIa7iIouEL1XocxbXDeZXBCKuCm3z2+al1NfGLyH6/Dt11fegS/TLh+wlMm0LmZWkvo3EjKCtQClc+mb8s4+iYF+raOo2/yvPSVYarmKNiGxShnsDsbvjotx08HX4luDiM6TtAqlEbHV6BWCXrCMYbvD35PGYluomrHlktKbEYmSKLGu2NLqBvhoSVb5jZ+IjU60A/kGvr36ko1/XuNzMi3wosYnHyrWJ1HL8IfYa1uTbFco6bf07jpj+BIUXfqWAmn86y/G6ZyspIVySsYSXxEU5UVcm4SFOgGdFGh3mXt2OxLmc4qT5MMooBHQsCbHEbpCaP7RJfMiF4UqITfSKYpBvDbFgNiB5Y5X4TqdHyrqOgGdzE4kN0a+o8a/MKnDo7iPJJ3/DZ+R0BFHU8bQ4k2dVH4k0jsgT+NteHx1GlW09M1lRp2mkbzN/w78hf8xb+vCas/FF9fIhDzZqWmmFOr2X587i8auEaD7BrNX0/70me9QznB6awdo1M1wa4XCXbGKKFTlNApCnSKT6STwSxDYkM5vLMMf7XhFw/KRt9eJrz6Gao9rkFX81er1a9rKtXoanQ1/nldo+GvQfjYG5iA/FU8OSZ6Nl9qB98qqcWNu5q/Cp9+Q61G1+ArNK+rKzVwP/55Xa3m4Uma10/emKbGMNxI/+uJ3Tg81rYKEl0hEjLiQqRtIdK2ECUEhk5oWzlCUB4WwS+D2zm2Rkhk9FijPlmt6UX7ejUhDb/nyRVo34p30V7+BY3YAL50r4Z/kV/EvD2uOV8L4esf78HN3nN8BXp8RfE2fhH/otoHTG0Qa/gX0CMnZ6TH2nHPuHZUf0Y7nLEvbIqZdA6SpBD+X0abxpY683iuPqFBF+CG9PLzep7Ar8bPS6N9aC9qhbc7fRS/HWqjB860haWg0RpND3q890l+Hm7Nhfw83PoXS633qfkXTz6YphhAmijVY+Qwx+8s4bWJibxvLGTLsPiZM+rg/Y16LMeXxzI6LcyjthgJpdIfycpVUEaJlFY24TlU0ACsZyGOuwpZNYeFfQi5wo0W1nYiw2e1GphTdWK8KSeRZSGUKI24FMASICzOY9UcMPHIJxHnUESyTsAeyYNbVvQ2SOenfHgxzpN/QjQL3sDLNF7Ai/vwNZej4/nRYt55UpaLoilE+bE89C/ccgOlw/q1ESs6RwAB00R6Ceq9ChB9eOAQpAQZLdN0SzXdq1Z3F+t5fd3kYjNzM/vQ6SXMrroIy0fqB0+cGGwMo8eLd7aXzaI/5ReJ9546RnQuwKYHnMgENZmaQ62gvlOyXTUQ+d9IYE7nFzLLCYr7YJRUrV5JPChQjb2Q6SY12VkFSAgZQywT1mZb8E5/DKIWtTEIXATj8NxCZq42u5hg5WVXgW4V5UhxmsVz8W8AVIMGvHyx4Q6wnMwP4IN4bVuOBQKREG7a00sQJcBmy1UDnFJpxYfsZDcKjD8QRgii2Z3IUQJISU2UiyeqDhP285fOmXPprkUji6+9dA56FFlZsn3t4r/yD4bbeNucS69dPLJoV14tH5GrJ3yxmTPb747M3SFnjsl3zMVX40fgPV6OHFaVsLv4Wv47Va/BWXj22ENE+8Y2i5eNbY71FcRGVlD11FRqNnUxlQtAX0WI/mss5IxEkzBa8ICYHM3MjJPemjPaWyFSWTQk9JaT9JZTm63BO+0x0Ju1sexcCJlyALI066yDnphsBMVXVNbcJ6TyfAb948avSnJh0JCKYxPIfcvT/KpI6xeQeRoZUTBmDgOZZczfJ5B593E+Hfm57HOoy/tg2JGn4LlzlLYhqoHqoS6gLgL0qiBQt4qgnuCR0E1izVaDJ2SwkFs9CLRevRRMO+tGSVwpBOkIJC4nJC7XZmvxTkcMTN94QHgFHM+FheHpC3uxvLe8MDyPbFxYyFwYzcwrAKxetteLJx6TGffAdIrYw6msswq6pTwB3bLaCEVRDCKztaV1+rzln9c3kKL8VTsHloExmXo8TE/ivCPk1fKruvmRL+6zptCWwfzgFqIy7gO86zyRr8/bga91b9Dypz6/B4uLAHFbgGDHGukmUC0dpKoPNTZeTuA+DWJtcgo1Cyoe+aFHw8QXjHu0K5qdMTMuDJPZo32I18r6GARJQB86SB/i5SKKd9pioNZrCdoqlbVDMRzWAVA32S4j+LhEZktTz8DndsZX7gqoZBJMBSVBiflsop86zP/XF5J84NnDh0f/nZfMpw/zb30BkfePewZ11jw0umbccGbN8JLVIhgFoyheMypJLsL/37IBi0W5sFgsBqxQkzkwl1jfvONWikErPmMwino+m+p4rhFw70dpHnR7gn7u/2h5+B76g+zq2YR6I7OvlhWPNkX4U5/XJ6LLz14hJnTJUn7N9CvJw6+cXnmK5z6va07bx68PorEa1kKF2rnUSup+KueAnumDlNXMghgsBpNIFS/okFWjHYJVnZoY+HGhQwSRKSiUpSsjvVEmJPTMI0WjZikITneXNrsEb00tZFfjHpoBZpX2jklzSA/NgbxQmchgZMNds+aShOhJXK4u3g5dpmzGE1rHZ46RL98vIoTFrzOXw2NSAHX8Od31eR1DX4iuo4dKV1w6BxaHz13LRwyft3b/ES3On7putPegn9kZPzv1wLgOE8YR+FJMVIBqofqpu0rjiIsTH2EUYLeaiZ3LSwK9K7BsO530mRDRoFcQZC4VFmYV4VLh6DOou43C4AoLqLvRAnQhQes+oNZyumBFqJn0laoDpN0eEnbfLlNqDFZbuLGlV7B/ZYKk0PlZc1hCBrbpapT6/+yO0ZETQdfx24r75lya/5J9IHGN0f507mf8w/zDedGVuA/GaPq1L6Q5xMqkib0WYugqIdPmrKjA8LlRgZFSVGDWF2oohQRmAwLuyZeIkUNEPUBpEtp201ho2+bRqDjmJhLitnnVbpR4Hu3O85eMC4Ubd/2Z63bTEWL8+8P4GJgRkvPOUTbcJkFTghq+o/4RE26ZPQoNorJqFjQaJbx/fMzeg9yM24bc+tEKIWY9Xk8lvw41nbhD3P6tU79cfC9jfHZk9zpJ0HjYWCHdWVJkdkNSCVgcGRe6QG+36fkH4J1QE6WTzJO1UWrKQdVCdSiqlcGqJICiBOhWug3p1Uw1HdSjVpaglAR8LGAvMQCahkxmKKOqZiQoJbX4PUolmi7zLF90eY3LrG5oLSv7t9jU0TZ7Srf512jl8u9d97WH581cYXNX9/In+N+snc2PzKfXfn/VE+lV72erKtDUe1e1Hlr/7BqRbtq0lqhKxV8rMVXpLGHfiHzjog6dju9iZHoFMiTDYg+/emBVMtxfn/jWt26tm90y/aLZxTmnhzrvvfL70/odcwZ7Xn7hqRrHvPgSSEhG+N9vZbMlYspCUVwr8imhpoUJcG4gQl9CS/ARevAEKkd9qG/fdlajZU5qZfLinXKTaIGJf7z4Aj80Qj+19b5WcVczv1WrEaMrRA4Vs03Navk/9Q52fsAPk7+jxH9nGf47ZorSmbBOngwyyQhi8WJIR5CIgZoaUhk8XMNu3wd/DJWfGDSM8EP4Lzy+SWTCf5K5xCHmbxBrtOjG5i5x631bn0X9H3QOolVaVj1yHR4TasxDB2R/wm1xUdVY8s1VAgfZwZuJIFrDegSrC8MBp1Uq1HeOEq8FcfwEfLJwrioAm1VuWRhSTrJVsCZrRTZIXco6sSqXtZcTyKBKkGk9QoQPzZIhFEiaRYjgAxGsIwBu0mCdNjhWAzfhNkrGjLlq74q16AP6I72PDrrWLdC5ir8PdI4ci2ba25f/xCuqu+7gddcdrMeatloRU6jRp2tWu+5gbR0xhqnSta+PjBST9OlMcrvHG5++hk7BxbuKt8Zi6T8q1GrFH0le9+OUTHqK6AFNePUEK628AKEqDSQigFT4SFp/9M87X3iElPbwV6szwUNZqeZkhj30o2OGn1bjw4oMqx0WsVJ9+Ef/Sr+wlRwJaocDQb8+nMPHz2Rr5/Cx8bnb0iArCpTKEsO2P3CmLDGVrZGDhZdRE7suU4dpxpidiFS+Rq0iE94GAkIwDMAOIycbg8Em5FvOs9bW97b0mR5/o6fmhkiEvRSJNBqTqUxh14nNp1+Q2ofmbU3M/c1P923egMppeaR16zcvafSJ2MyJDJrmjygZk9EmjqgsqqsbG8T/Q4s0SpWYkejMVcETb6rCly1bbnAjf6VjLX2z2BALuJzhsEYT6Vi4sEPIbcRz1BVUDTUEM241KThaTvy2ei0WEFFmfjS7AGYnphrLBuKGjJXbrwzEm0Dey+rLIel3ZikvweVAplaSw9c0auRPVCOYMSQs7OjEJtzqUdjF0V8oB2YGUCWCvUwfbN+795kHH7h4kbJyY3pemVXgF0YVifYGDDNWXPtA7o3/+pS6Jr898wcVZzVwqVDktSPNG5d+vcV17U5Xw9JvfPSzm3YoRQb33O4Wq6K9Y85mSL1Lp+8STd3++FMHbr1UXd3p5FAfsBWiGW3Eo/vak2/96U/5exd8i7nvorbY1BXBytUbIjPslW3uzi5XfbChNb50XpdZ56hQaxTO2nD9rRNwVi0knt9APGBlxCZdMkEnJjiiBHyNlFDTqhyR+b0pJL0HpuxPVmN1qSl0nVfdD268frWXlYWa8kLsDJnT8faaYH19cI2QcKUovcP7+A0mY724n5qJJf751GKsIa+g1kC9+E6AX84OLonFMj3R7OxlWJ3qLWTnLgfskWh2KI33pxeyC1bi/ZnR7KLVeD9WgCoYkKu1NpqZciTbNwOfHMQ3LYBfLckVn7cQby8pZJfjG7MX4QODACVfC874JbPwVsxGirnMxFMNF6YJjKScG5YqDN5StK4pReqM+FwiUq4F7JfVIp+LVTMaBCluKZQcqxlgNJnHp8SWwmrg81nbjSH0zVAjctMbkFvYFlsv2PKLv/L7+d3808de+dqQXpeudKDXzDWsbvrKH737wzU9KmXUgl5zVDaFoOQ8fbCEfhA5+1f0digm6ZJ0hZCvtpZ/O4Q3JbEQ2i21TZ8yrzUc6hwY6DQaAPY4tAKeb/4Vq3JbjQaHXS7/lcnCJx0rBOcs7UiXQjPG/ZA1xU25Za2yVqqCIJmGiFvaU8hWQnUKQDKlyytKSKYGpxrPLclSuSFfMAArdJBUcnKLuXDrRde/fOzjX77y8O3rZhgMaLJbFeSvCaxyf8T/hT/1i2MehY3/0LbIwz8nOWJbsPze7/z8tX8ce/n6i1rDWilCaLJnsR1xdpnn768VTyP73z0XBtG1QaWb/xHm/VE5Dap29FMQcSMu5DgxLDQcGHzVsZyYgz0xS+qjkAgzCqykxEiszWqE0G4IN9OIoR4NWFOgUalSRSQslhEgZagxQwQ1bxoc1iR4CnP/yUN4LIguxz0CghBAJPObwLYLftomcYGErIyTJy2Ylh5qOUXgFePwsgbysgZT6WUNZ72sl7yskbyscexlffhlsZ4DpS8yGm6/TO8Q8n+zYhBAdST28ZzXJ1W7oQUpgCA5px1h/ml+/wiIbOj44V/RSw+PFNAfz9Mq1Mc/jVuGDh3+Jb0EXyTO4CaeaZ+t5E8YxQa0kFe3jL16VYnOT8tMdo9QsfV8pIbqjBLyun4ZSsnghcE1MuGd+fzhwzcfPswfhtiMIWTljx5GVmQ9zB8lX/xRetp5WnAY/4db8MjZlx6G28UjE/urDMs6PmopJcQMZVlpLJZze4h7z0x6DJFqfUfAkCGGwqQkV4CLlaq2l1odwK32UVANzS6UYJdJYFryQAyr/Hyd5Ya4NWg+xDpCxECcO7vlyuI+XgnNXow+xk07DNE95zY1n8cNpa8p7hNcCSQca9MEfgRf5sbP4kdIC3MLzSb+zfHM6Born1dqpR+AsAHSlytzNoxvp8CW5USi+4z2jjInHHTLzmlv8RP+A/5Y8d9Ci4OkTgEEj53LnjP4LLDnD0H5oYcgOBG3WDSGiTGJmkYtolZSa6lfU2DYWE0Qq5ugfmBWNUTKVUBcYjwK2nUMqtWAlcoRL5Xh9eLF6CIyEYYLuTDBiAk3YXk2lowR45SVoGPkrFKCCqPDZ9RT8BmpNrsSn1kVA+vtmlh2HaYUbrUu2zmtAaSYdqVKW1ff3NrW1dvXv4ggFeiyi5fgcyu5zNKGzIW6zDJMx7bVeBnrm7bkAriiCc5k40nQ02Rnw2oAsK+wBGH5JykUyQJobbIBIg4WCI1eY5x84iRROKBPmfGAkwRTbnQOxmgqXgokTcSNf3sE0lbTm18fWJLPd1zcV67wMQF/IhVU+NJN1/X66+OBIE37FeV9F3dAfOVjfv6ZR/6WvyZ/DdqNvyCH88NH6SFAIC3ue/RDVEpuFF0uZMPyzywYSKf7ZRW1ZYrgGr8/qLR5eoPeQCIVUJTVVsj6YXVatjr9YdFz5pFwo3A7pNILKRMQnSng2BBMgijJdpxC9VEzqFnUcxTI6l2kks3UAuAETyNgbgOFzCwSjeUHy1fOryTgQFCqxB7LKf2k0AhMzYZYpgMigkfNwaECcZwIqfR1Mfzk3NRpAxBc1EXw1iArt5kUe4JBA5ayAinF1dOFR8vk/plg73LF8WTgwb08awDCN0MAF1RbCoDJdkB6ukw7AT1ltJ/OMiUEOSEvHfKSBdB4mD8mJqUlzvrfaUAho8tqFL1jdODtCNjG+XcNfpHIbzjVLPzifSc6DtUWnAaRAfy0p44ZnBBJ2MVOO70fEu/AR8L8kO0htx8mgOrkUacPGF34sVUGh8PAv2lwukYOwS3iI+g4uVSJLz0lOVMehGI+fYmiZA14fppEUCRWUblO0DVnFDJTY7kZndARM6bhjmiM5nTlEUDRExVyjYDlRDW2y8LDyrJAHMKuZ0VJMaPFxDMqE+AkZBoAzcAjbeEismg2zsC07ekXlKVkG9JD7U5I5cDaEe0h5RO/5LaeFNoCXxX+QLDXmOWkWcTQpyTrTim2Dc2+gkWs0WlgaPaKOV9yZ962ZukICBuL8kQyl6zDMsdOdRXW1fH01uga2rZ5NqvQcVLp7M2fv7Xt1BFS2AGWhJHt8KR8CTVBNI7m07EGtohahqV3ge59hezU+Zibv4jceAjNKZDSLQK5l58h99SegZkCufvwJNazYPESIoD/31DcTajtTozNWG7Ojz//N1T/5BeY5tI6LI7fAc4oWHsY1/+O+uMof6IGRlBeWJiZT+8vxZiISEaCBWqRZGjiXa8kuTCQ+0LqpCA3MqK4cdRq6h7binPBEgdKzvBfGoIOUOQTNk3iqERvk590On/Kh+fophDUQxG9DZHCm9KnjgnhaMI3nkcZF+GWd9PidqEyCMWOe88A1tfrqc1UzgKcUk+8OmEhf1Ixig0NoFF4MY0JdmebkEmpVWDGkOgNHh9kFmaTMcwXFpfbKeCi5phoDcEdqLfg4amGuL8g1y5jFFrKaCs3xAXucQMd9CIjJGKVsl0SIgLdlYgTGpDPGTqM5vukZS/xh0/cwR/GhPFVrr5jdaWPnZbZfu3jkDd36lgefwtE4e9dvHPx4p0l2px+I3yzZXpV7+rVvVXTLRsf2J65f7cQTAkfLKwQ8pw4ALcsps7uTxfEqpVe2K3CHeZO+EX4y12F3ImxLhO5RWPvlkeX0OX8Jv4VzHIA2rObfwUvn+XoEqHb6F1MhF8rkZI3O3Xs6PfyVzz//BX57x3NdzIdkAw+8nxn/gkSLw+4PNVYj4vgvqqj7qZyNugrdVzAXoNAGakLD28sslcRKxZeAesgPQFlEiSmLYQF99pYbNgRckvDINPjpS6IIM4mFyTiYpDCswAnDkoJLr+SG10phcJc0OtZC4TLGF2kH5/xV4aro0KtFLEuSxuEukoJGfgGMB0IBI8nMAodM7rtLUXRjK+6xt7Nvnp6P9r9faMdd6PdWNxR2vg+xLJDeUehc+Aj3nsX/NxV3Dfy7mAF9GLF4OgvxNMCCNLpgdIqJMejb5tsqvTPlAZrAUKV8QRB3OjAUsQCKqOPDludnoDPDKkdw3aXL4inQFL9RzvqG5hEUiUhATI7CcvA7Vi2VkitNme5xxuoCNUlU41NrUJKtQkwAqujBBkQYqogOhCCtgMSpB9NmTfqsQI09uFKdVBKZVCY8efigvgWRhYt/WutBUp8WbTFmgcdxljM6MiTouTwjx4iF+BTWkt67CgphRKjCx5V8X2V0oiWYP5bYlTiPaYOoHocRv6hM+HFxMsgnFZ5laU7RizjLwA5wAixm+JP66m8vEJ6D9ZA9Jiq5SQ36AUyy2EBWxUbrmWhuhdWK0RYAiMFN8OMSEqwB6wQ2Z2zEkhnq7OUKiOAvGDhq4Q3KOAWQElNIWNQC96ZGNSpQ0Isl6OQc5LwF6cVMyakb1RX4InHGwh6YBZCWiGe3snljGYLmYBEWAp72uX2+SsIOgzDZaQNWWsQ3yQzGC1kHgrivtJzmOhuPPfAWuSuCzAkdMVPYlfGzNR1QiIoLHV56T2frM5f/xT7wFPXX//U6eVPeSS/zn+yGkWk9+RPnPrBiR/84MS87fOGtm0bmrcdi8cj16Ede2+/fS+/E76Zd04PiC7H88ANbGakBq79AX9k3nZyveB3ILbUezCnJgl1DQBTnKP1JhBKm6M5f0UDLONNQuXSaVFSbSrb3AfaRA1wIR5bnmqWVJFSs15jaa+ulYWUqpiTJVWoxu3BVcwHvshgosHO7LI3JAYjvtF9YW/EIuyNbD97X9jLb0IildFnoTPFAYvPqBKhTaUj4qCwf/HFwn5xJv3U2UdOviXsE3uQ4OeqplJYaxfWJDwWHTHw2UUKmWgMgJ/ihVw8CUwQrwU+qicBqSnAH8ulSPpQKoGZowEzRyqKJXSzQeCEMB7DuPMzEQhHB8cewUUtR04GN56UbAIJxFPNJOpaRVBO188Rx56bSzPWqnTnlcgyYzpipSyjdkb7aiADrykkdUxJVWkjfVc+/uEdp27ACkwEr7MnD7EZue/CoRXl9V0isdjcNWnB9BkpL15c8BLDehq2z568bv3A1IgVuUkGXgSKcRGIF0yDS6iLMA3+jef6RorSm8y41826lMncilJiiU8klrBmscSkDwR1DNbVJIGgWJRMsf5kyhdMpgDBiyykHvEl/fPWzqmfXvdmWdXST25RM8iBTLU1KPJy16y/tU2bv3ZuY3/dYWvlz/i/qhj+Hf6jaIx/46WpMz5iwlftvwr/Y7+nppEL6WtqUPVLPQOXfqe8Z9GauY3TEoctkZf5v6hp/o/832uj/OGXp8441jZp+Zo5qYG6N/EDUfmCq65asPCqq0hZXspAGaQfSD/AM7KJ8lBVeA7uogaohbhtSV0KqRkJVEhvZVNmRMuQWc3ifR9K+lJQX0Fixidw60RInwRvABKzDNLp8SkWn8LacUpMSwzSG76G/l9pXwLfxHXtPXdG0kiyttFqW5ZsSZZkeZMtWZIt491swfsSG2PAgDBmCTjskPXRsDQxhJC1dAk4ZPnSpEgyS0vb14Tm9Slp1JfkS+lLm6Z9v6ZZXtOs9AWMPXz33JFsN1+X9PVnJM3cGQ2jOfee/fzP2/V7DnV3Pb1sxekFHYc3jjXdMm1/Cy2n39ob7irMZhlpHv8sP30/Grpglopkuc3BO9PjqBsx0/by1DB6+37+xCb6rbc86QvdIVx4Ff5PRKcvoKH7+Zxgc65MJH09T8qw2YVd4b3TdsTwt9Nv3dI0tvFwx4LTKzzsI7cdkq56uqv70J76O2ZG35q2XzOterqz5+CeBj7ntkOi1fRb/DT/bPpCdwoXNl/gT9yfrnGF3IEKyoS1ybT120c9k8LWlyQnkESH2WuGP0oB/41KNGBkFUGZ3ESWtQh4MYDsA16cVRPtJtCtweREeRBawVb7oU62BnJ0iJnV7422Xoov7uwFJqNIxvLn4QXVSozoVsgezizz+WJL8apStELih1ylxtp8OCUBESSwtVTFrEX4swPrg2X4swc4ETcbgQbwpDSOHPMPjutsDIHc4FKviFXPbgIl2GK48oDeGvk7+wlJ/cfXTog+SINKFQtikn89JS77//4IuoyKr1yBSlv8j0r17aXkY7IXCH2aqNZUzGQ/1qeBT4VJUtTt5Blv9Eb78TM+4I22X4quTsYGh/BDXq2J7cBCrTcZO4gf62qwZAfAbbSDq1fJlCqbw+mqCnd29fULgH5dYQiOYP4evZ2LNULN0kbt2eaWtvaeXiLHAmBQCDif+MkF0hh+UFz898Zd+W5hzGkD/ue35c8pGUlXOHFfogznS5LlLP9q5+TDeB8Vi06LVWKxdOpG0aE5pSb2CJz6l6p0IilqFP/Nz5zMjx616n2J7EW5pVmR/Dn1KJ9/KJRKibLnXnq2iidN14/n0BXiYauom6ldabqW+aIDXmibO0waYw9h0m71Rvsuxdq6gK5JIO1G0hw3tg1I24cp19FD2h3PIe3SgZVDAmm3DHDac41NzQv7aogDcZiL3lAVHdLGblxe9c9RthR9gbIoRU36bxQFfUkqfvOzhkk/IaJYR4h47VNhhf21mqFZ2oHnaC7N5u6Xlbzy4Czt8JIT6PX6XysqkqXo9cMv0Gs9ptjv/hav7PzrvLKXeJaDSUzsidFgHT46kIQW2zOUhpTe9tV9+EA3pJZG833xdsIr29O8EubATbNzQLEa2iikuGb10qGRDUDom7izAyvXrts4OstF21JctAtzUbzi42VN0M84NjoAAdFyPIfWcuebW27sG1w+slFY9/9LFmtFpjnsNTU7UuxVO3f9EzAU5CJtG7Hy+yVmhzjZ8Nk3U5z3C3NDtv/3SPH2/v1v85d/L/vl8Q2DPBX+Dk1VvXF8UyQ9Ef6MCf+lkQdfKSlLMeWZWYK5smgTfxkuTf4D/qHjvwzz1OArNDWw6fgbKXk6w6/biCxdRm2k1lFQxVvmj9Ym47VhoGFtk6wI8oZb12Mte1EyvqgZRhctT6WBL790Rqa0OQk0BF7r64Rs7nXLsVGR4agGdLHoai6uyJ9H9M7m2lQq5D+xiv0B4l8zOAJ+cBelFnSAmVnNOi7lIGbFxODGtJilifD5F/fNps4DjsiSrKuFeAcVz0rJBO0yWMw6PmwtsH65ZetbIr5xQXbExvlg8ToRm1659IdMF3EpF0jPTgplgGkeKy8gtGiluqgbsVW+nbodelIGSVPyrYS1rkzG1u/Ai+kWbzQi9CJfdim6OTkxtHmZtChNBn90R3JiPYxEd5Im5uuTpIX4jiGBJJAEGd3JxRT5QJC6ICZIWVVs5Va8uha2dVZV/bPEsdkdhaiUmUMZ9xzKgMDkZhbiXD9+OkjzZanFvy6WZemzJVIELV2B7745ltZq5Gx3XwhVhQY6WYWCnRax8gQ6asziX8rSfjmR6Yuw8mxLTgJvJcbvniHey3RQoqCuVy4dCF1XSKZfksjldBt1PUuvy54jK4cIHZdQPSnf80nKRkVXeGM3jOIVNB8TbtwbewyM1PkrMBvbsOuffuQut8uLCESb8MTtLjw8+9TJkwfXCyvJRcY6NONgNeGdoBf508mqIbzjUqNUzYMFufEOVC46/gGyOI2Lq7sVZp34artAlbczROzYrLqpZL+/R6Holcm2WDJ2Z1i2KBRdMvneC6xSyV7YI5f3SjO2WOW75dYtioxuMbv3+6zyS1Jso96oqOpU+p1As6IuZeYs2fALnZPnjCoU3eT/ysggN9EjyxjNwf9X3mZFRpcsY+/3pSqV9MJufHcSsWRzHsEvF0MYndSLeakabHd0Yr32BSpuBzmaQUBPTODbiXK+iXKmFK+5zmS8k6BtdFZhvlnrhcqZrloY6GoClolVpWJoNh4vJkGHYmjPJRbCbbU+COF14XcNAUty3ojXuh9KB+L+JcTGt+OT/cSuafeCrPULbqGsZDwLWltSWQYsb5cB+jV0InfgFR7zY036TEZeblUjkaqdGXi9L8ETjiIrkTT2A4Q/PziT1XgAG5oGcOY6A+AlcZOgGx60lzJZqKIW+SBrCBvWpgCksYN4rAgFAIvCYphs3HzsGx2rLh5fBYxN728cObSvHhVfO4OK6/cdGmn069E25q7splXjL4yvasre8x+XX9k99VufLzMbG1kR8dVCC5+x/jvbO53t+y9uRH+yFNoZGX/n6Iv37Vxo2HkoFju007Bw530vjqI7ZQwfR93YWFyxKzJ/fmTXCvQLtGLvK7t3v7KXH+cXW/4lsKCwU/sRKp5c0dM4fETIG15CLZEZZIZULwk3tZj0pyVd36OmJOkCPwMM5xQyoT2A3ATBbRE47Z3cWYVYn5kjJKhAo9pYVs5faIAiRSkfWTD1me63sSSONdAT6CX8Ko3H+df4IT6IX68xD254YMOGBy7OeWd++v+fFsdfF5XA0Q0Xyfv0OPkgeXNpvHoz1UHFlTA7NVBmImxqk1GzN2pMh/6zSHZ0KncoCxCdIH0IOsOYfEJSPSmJEPKnQaX6QoY3yWwQ/o6NsJtGjh0bufLAyDEo84S/6afgb3L2wDH6Uwi7CMfm4Ot34vtN+6HnU3tS9y0isEJlyTN5wXBtI3FEL/BGyy8B9ko5cXWVa/AyoHx4oxhvBDWAez4HBFooBqjDW9ChXgPIn9G8ZDyPxFrzzCQfCW848VJZSH5gDfoCSgjJlRMy5EhOh3/2mFC6kc6fmvuyGKRTwIg+FxksmWrRak2pRrRanWnVTxJr6vOXiU01CaFn6Okx+/LNqO/igL5CwXxLiZRTEUVAbyyY+m0OPmC14rccJq9g6rtM3tRvZ18pLBEhLgPZ8IYZ/76HVKy3pnLj5YDHIgAHkaJ17SXIiDEIqJgGLTSqF5LFYlo51sw5qUptNKW8+24IcBDdujwdoiRBSiJdOFsW+QSvMSBCAxhq6tNPyvEBK2Uyn5S+QcIfifAA7pSAvQU+QPD5TWUCsgpgUUFUgyQ9XGbem8wnYCAzwXTm+reoStkL0qPU3dTjVJSqIxmiRoI+5ROSGGLeWBwkq1GDuZ5CaZA8LaCenBNJi4rrG0+DY7zSh1lgOf49tIs0Gw3miyBTlgbHmwQ6J5Qy0J3UKjaFSkVsKQ1NRcTQcQGfIzQ6NbLQc4s45awilbiUdktYCcm8dUlc7lLGTXqphkpJU16rBPqo1mIB6xUKAlgJkhhNRtItVbJC2ly3JubYjHRIdzer6VjzYEFeqVmjY5cnxw868xX5dbJlG+Yd+Jfbdq8ZDBhFthu/c/r9Tfo8hXmos/2pew+OtBsMGWvu6VjQ5JAblWadTioqcts3bt60PKts9eLRanWwpMgkUppM+dnFpmL25T4XzSzR6Mo/+VGorC94Q75+SXWDV2FjzJLiirCBaZDJC61FFhPt5pdlZbESsSxv1fJb/Bva1GKT3Ga3zdPbbbYa0R+2jyoNeWUdAW8DI3UVl7CSbLfdpxJZy8u1nBhPhPoslUifW1JYZlXRtpbdvT61riToMYnF4d7Imk58ZWdLbai2uaY8t0DFiJiyXLOepg05FY8/fGG+RKXUGLONSjnD0DSDTooZa0mDWiWmOUt2ZMVqk9JmLV1cflfPUYNEzSj43YwoyxpesKFWHswq3bS0xWDEP1dscSxmEL09O6hU6CqCCqUujdFHyV2yH+CZM0RVU/EaUhvpJ2F+zA0VPijoq9LEvAICCcT8qyDXjdURLMa4zVovZFQCSwzpggHAcMACEExCSEY3EbjcOqH/uJBeS9K1sWpLWokxqQFUQXqUW5CRmJGsGBs0Xuhirha6ubu0ih/JtRd1KoVamfNYjblZr6ffzi4260QilcGoRHdqsqo9eOmYdFNPGILq18iO+IdqWuHMMdM69KrCwL+gMZh0zUqDSbNRbdCr+f3qiEhvCHBIptJlcVc4E766creL0yFshovFKhW/Vu3XXbuDgBw9YrDRZ2iNir+Xl+EBtlCPr13geTik5fHD1Gtey1BVKvGF1ei4mkrHKmSl2G7ZTf2MinfCc+0lJgtDKh9l3miDH+RMpS+uIRgMmnmYD+/2gr1oKYaUvD1Yk7oEhUk2oRCyz4dtnGiENHOMjiajO3zRUQE205eM7YUSSRunPSfFT9Te1Q2LPMJFO6ui67VndjsHtu2CkVEu2gE1XecLKoKVjc1t7URwM72Y3bW1d4EfYTdmE/UZykyb3VngKa/r2yk0OT2bVziwdmQbYXpBklzud7ltblctMuZCSXAIL2XOTbhHLuLw2sYCwhTigGkgrEOpMVGNrD8UxLNCr0YOCes3Ef2qCLkddB7jYB12rGSH3ESagGwx4VMhjZ3IGTU0LHLlRao9jyZGC7T8tTctKNyTM34KL6ZLPRZktXZbxnZ1X7v/vqvdt9yV01Uryun4PZOH0KOnLN0Wq/U3vNa9JfEoEPKTxKavT0e/vinxiYf+/fpBpaXQMhjaEBrEn8rB9Uf5xKNd1YmxE7+xdoeR5VT9Teuk9MtoqB9fJgdZjvGPb921f9/2zajvvlxRZVduP/+Nl+nh7ZkFpywWfMpvHj+YqMbfJ0Xlknsy9w+uVesOgyzbGzEYInth67BOvXZwf+Z8Cl0/jorlBewm6gC1lgItWJ6cyJIPSKGYH0UPemOHhEKT2n/7bL/Q+O9WTfS252Kb0dXoTc9REzdtvvU2UiYysyWUiBQPYE4v8jY0gf8nmsXF1YVaoVwE+HGgQhvM9/tEeG1a6WAdqmVMVhIxIVU3FEtaXMOaLKWB53sR1oGhWTZS0TODdWRRzpzpIue53CwwcfJVoSClVOx22Ifl+9p69ryBGv/1OMr48ViRrqSsjEPKgnk9Vaypad4NgXyERBKRgpEXlR78Kn8+YJd6DHqLJ6HJVkvEUr1Wyq3fny3lDFKxRJ2tSQ0bPFLTwsVblomkHr3BUpjwWPQGrVTaVWXHZxqsnoTZxijxSeVSjzInQyX6wxLm8eKWEnvOw0j50s7eh3+01ZApyrVLWgeKJCwSqzXZ2XbOVlZs8CuKzEhu4fmRb3v68KXFMoVGqu8v6LZr9uMBqUYhEwtjfZ5tDKsjJ1kMeK9QqRG+ojapDEs918QmWabJlUnR1x/D+sgPZT/E9lIV9VUqXga8oIJYSrmEHWT74qUMATZ0gz0UJmo3UcNjCkg4Jgp45mwjHzEo4Cz0sVFwZ6SFRWWAnhmFJEJ9FQASnjHYHZVVMGbRxow2UGJKKyBBQ1oFIe4Ya4TZQAvdkFgZFtyBVGckAN8JCGk0mMDMjP8P6D2bZ7j85hM3l9PDyDKvBW+11aACelkp3rq5w5RzFVs9+Xrrdcpk6EC3WvXiNw0WyXfh2OLg9J+Yn2jXNnTgnYZh7VQ1raycj3dO3MxOzRM0Puai+Or30AriEB6HWDeyUhT7LNbjHZQ1heydOVv5EssEo07hgJ/jFOs4I6B1QyVUIKRz6FVie6nIixw6kwFzoZumz8x/CjlO35GdxXuLKyOM1hxcsOXAlgVBM0fTkcriyf/LPD/lVmMmYdBD+B1dZrMXNXaGC9w1S5bU6PRYByNxHUT9OxWRfg3rl36sXQIVIR+EgE1CygGWhUEC4UuHAm7G7dRxFcAN8VrhdGIWm5KgNTFqNPNs/QmUYW4uN7z4Qf/Vn72Dlt19y3v37fv1AfVX0eA7P7va/8GLhvJmswI/CT14FdDPTI21bVbF4YdLXhrk//3d7YhGR7/yuyNHfvcVfpTnt7+LqgZfKnn4sMLa0hTmOMERgO9ZyAm/hmcgvueQF0rys0lriFSzB1KIHcwPBQBNGZEqzEAF/g1WPAmgaAqayrMGaBQ6EwWoCllox+ihT2o0jLagqNqwqKRxW3R4OLqtsWSRobqoQMtoaj85OErbLTeDsq+3PrS3qi1X82LlO7I7mjiXo8Qdzuo5M9F5cl8XQl37TnZOnOnJCrtLHC6u6Q7ZO5UvampH9goOQTH1HJanJ/A8MBMkhyaqG9tJApKDlTQ6DJN8XQGVwQooaHaXG+RZGGDeDZk5ljybgAvuqoUKIKtYTTNi1uZ2Mm7kRzbkxzLI5nYwgiMIKyxCpTJFdr0CJBVmeHPLmC8yEmP1wDdeRB4UQZ4Xv9lfo5cx9IYIP75jengHPx5Zj8ojBOmnGFJvCIJuayASXKsNav3BjwOtKJbtSXjMpqWmBtNSlBvUDuOjLS34UIX4Xc/e3eP3HInU1Y4cfPDBgyO5udDvBev+2FaaupWABSkiEZEk2LLIf9y/qDUw/T9lZY4DdvsB9CHebwmOBVoXkVwRubxA9gK2KENUuk9QIDlRFoBUHDYZZcGwJI2BWIoAUccCZVh8qJQObVUKk7dCW4tCAX8FMQ3wX8jtdJvMKMQqkcmdgdgQ8AqoNsRSxOA3iChOL/TbpNc9/fOtk/ft3ffRvMDy9tFnkWjfh60tH+1DIn5q30ctrR+ujgwUFRxe4I/3W3x+h3ES5aOKez/hJ/hj/MQn9zJHjiDdG096P33oP7LM94zdkm0s8bd+KHybXIefwleMl8jdT+wc0kqMxTXLw58u48P8q+fh6/d+glrTmGWJVA1dEZ41mwiCL52MSnxgI2UL7cJM8FjipgCwYRMlI4ncASHZyJqMW0tJVpFMBq1iwbiOlQbwvBJL3J5ChuhQNDSpE1VFfdw5JMULxlWc6p8jhmRAmzPlKRASvOFhElbqNxCGKiYlIWg2x9VHn0NHwQzc2XWlDLBNsD4RvRUdvTWKzcSunfz49E5+dHon7aL7BdATOBvSu6ab8dnMKXSxa2cEOmRGdnbxtZMPPMDcFRHQSinoy5zC7pCRep40NnbdnBx6iHyspNZQ71JxVsAOm6iob+mHiEaRdyLY2DYAXvXi5ERlc8cgjHq9E+EFXStgtCw5MW9RzxCM+r0TtTcA9oMfkrTkgJscy7T7fAStF2u4ETId5YC3EiuGmFgB0WdJPiKWkHFT5TzINqjQQBG72os3SFJXFYCm1idjzYvgU0PaucxfjLdbkrGOHvgkfQniWUKyQn8qnm5PRvs1JEVh+Sq8y0B6VGxtyqFjm0OgOVFs29x4toEDR08g9fpHt9PpxtWeBLFOAAsnQiovP385Df9FXkf/d3skswhfXpIEpFYhW1V4B9TWq89hLkT+gffxy2wJsk5ObZbystUU5sJ1SIagNh+5oSs6yU6UYLUfQcmxDMkXMh18/7qPf9GGPlpgCXdb6CDWiXssC3iuzdO3ju+fOr35daYTPbWuz0NO6Qlbpl8C9RyRc37x8Tr01FQU/5/X/5NaLjsvW0HtwoaUNoRqZVgwYZmJBRAizR4R6bCA2RFsQdkvjQ+IBXUWbpE4IhAroUCvxXfoCgWlQidUGpRZirgpwF/hbq68S5TL2GW5yhzObMhSfhNte3Lrt1fmOTfdeO0qypDIxVxZQMyyzJVzGtman9wxPHF67TKWVYin12dvvWEokCtTfeXJ7zUdou9GvW7OXbfUldUvbuZf+oATaVR6TseOaDQVaBtqCi98onfVbfbyhkOL+M/fGHLdv/b+pv5/O3eigs5BO1L3kGFWGtWcdGVWS8UzP33vv96AW1CIJIWNWAuWMle+m7zz/ZMmrW3n0sHUHaxfMLp8d3jNfpc3dQcDjQUal2E5uQONSKvh5Igd0Wor0G7UHGgIabT7nziTvoNHN+zOK9J6t/ekc4kEHsngbT2VSeWQ2rjvkPxCi58Ai1EEWAy885mkIl7lA+AMrKdmCVxUqJWTJ+NycqacwWfKNbEMzEJV+GwBTWO2+XC+UDqXIccqnD4La6YqLqbLJkhvZ1hOazSBApvHQSm4Dfp/Ym0PyiJtUOQbza+KirRxhZbUoom5WK6dhIygHCZkY9GMv83NugErXocHGS5E/ljp1cGE5FLiavKrWCzf/YOHHnoIvLARGJsE/Hfxm5P5kvoEFrPgbJtMJKZ3RsRvJhJXHsDvk/kR8k6RPPkE6TMEyPDgtV1FgVMZs5kAybIu8kYzkhNVGZA8gBmeyJfuxJWbBEQwLykdIgp9LoheWVXM78XPogh6s8fwb9FO5FrdLngKRVwsSJryMUQHB6stVdptNP1Z/2srgtgFgXiVaFPp8BCzjyTGUC+i8xznVtD2FecceTRCvWOJxNiVO8cSDHv40yMbLx7u7j58ceORT286+fbJk28zxxIJOoeZwoelbZB82iZlEmNTIvwl+h3+7U8Pdx/+8es/xu+8Ck4/ybCRVO0hJX1EXoCfiRvLlO5UNnoY8ihiIq2PQDdnCJ0VxAApEUWApVZAehrnIuKY12qiRhgMkQYNxiQALlCxsBk/I2+qvhAiprXQislKGzj/nzni01jMWGtNgQUFuFoBACHiNh9Y+9ivRhE/+qvH1h4wu93mKx1mN93P3LVqHa9Yt2oyWErczqXBHU/sqBYPZ9nR5Zt/fWp4+NSvb+YV9qzJ41l2u/gCujwyNDRy7dXgMjN/nVRCIfOyYPeOHRSNpScn47BsLaWCWK6mZkIJ6UjPQHf6eAmx9EoKwNILeWOV8NtKoBbM6yORE/hxZuQPUiHMuIjswSzLYKRMfjMiLhPMvLByVQoWNwCoqrD93V7tcU3uB8TRs3S+sgArlQXKfPoswiP7J12e6pCLa/j5f/HP8FE+9tGPvGUuxn731N3Wo2eO0t6uaqyi/uA8tsiZzVD1v5lGBfxn56eb+deruzrUrLGy2GHHJjun5t+XyzuHh4lcQJcpJ/sK/p0abE8gKM2moCgIuodriUR1zgmREIhKdBkbg7sNFrdqunW6WmWrlX4MiLefe/JUHL1+ekwtJ/Lm8+tXpc/Ivk21EdTLdmIKY62hQ0C9rBVD4qcIm1BGgHSAv1pRHZJkA2SM28UYRdmIAMdIXJAQGqTdRpXEnc+Uoj+JOPu87ltaAGQjVybV2ZpKD+dlu6R6Q4ZaF17S1Ww0qZY+/K9tfQgdO42Y+xeK8hz7zv/nwSFJhdaQqxcrt0UYlb26bdNt40v503USCSPruXPdHes3l2icJf5VNd0V/mxavHXwvbKRnXVDzz58e2S+VnuIf4R/+Xdqbt1dKND9Mf8//Kv8r+/71vsPdKrlI6sK/T3tBTchz67A0WdiTx+JuHR3oifc5XgOGSmjbLGsD68hJ1QJkc5lCMqEEPAOKM4gdfkEPxfBk8C/1S2WIVIBSuNZkG5rb8z8ZWZzpug5RdfGIw9WDQ2U0byZT6I/3T525IH4I/XMterYouHFi4fR8AJ8Jj5RZEF0T17n9m8NXkYfoIzO7rX89hcU18Jtw4vwiQSv6vo3pI9ge8JB1jd4jaN2bwxZ/H4AAa4UIJTqsXy4FKVIoXSBD2qlATPFT6BYc31EX6vJh1ZjeQ6rU4CgKrVz2nPyfKdrXg2kjEYruZi7FhaECTmIGc/pBJ5n0nEqgPfEuhVixAFnIAVxwqQqI5GTEyfozEM1W9oaC60SydOKg92iaPdB5f+hZXkFza1bao7SedhU/t70Jf55UpqlqT579tpvP3/+ZFHxQ7RRds0vMyGRgZRL0f3FC3t7FxqN6Cjzh65t27qmDPyo1NLdMthYCgG86adI05CELK+9xlfW1JyZyYxI9XrpZD0gvmK7FQq/SK5gJbbAQKseoj6j4kUEW9oPJO1PRpd5owuTUGzKJtN+d6GeyiuE7qpIiqibxPAAgi0H8xENqUH3wsaKZHQFbBCMVS3x0YPX8OO9z78PXkNRtKZUFZ33XKxRczXa/NxEU2OzriiO3+dizsyraWxqFjBnJualNsGZGKsCiFamKlrLgWmY78ZEq17Yv3RwCGiUw8UUy0FYLQQYxPDgShDGPdwZgzcQzCEteLUxhsBMYXbtnIEjsTJzwgBuLp0eaktDuXCS9HFksgWcwMmtwPLAswNwHmkjyRbw0KEAfsTo/UZdr4eVenp1jT0PnVhJ9OqIxZDQW69cIR+RCk+ksIH0dcFUzdEpffGfoiXYbF/48/F8py5HyNigfwDlesx7pKuqpB4dXTOx31lR4bzLWtfWmkuwJT3oaF7wimK2ho69HMSzqTBcPRUawMa5yeBmxVxhnjkr36lUsG4D81M462phYuA1LBol/CvU8/LL0jGCzbcU21g3UzsQTQHCUo0fCsgbwSiNtQCEykAyupWg9Y34BeS3aB/pOSMloHAGb9RGkBXNeNbsJLyhIRlt0ECzg1To14e3huAi8SEfCJ2hzVgjGxLK1YuTsV1gNjVw2vMieUYwVFPLAsnCXFyj7QNC+rRnMk39SwdgdIib0OmXrSS5p9pzzgLvCuuGbWTd+tZgPaWYalgLxwa4eHj+Zvhyr/Z8Eapf1D+8YTscEHFxV2gFHOjTxoIrhSY1zqpYtpK0pykrpzTafL/PpIP+akRuqJFN2Ak5g0YyMyQGRhf0+0jzPYedckNYiDVqDXroxafVGPNIhSADpaMQatTZMTuUIR3jr0Uhtw40o6AGOKSOxLAdTr8bU2McGU/5wvd/nZA2Y/4CXYjZsfcevFcAeC7VngBz65PrN51CxvFx/r9P/YY/7UgW5E4vco49hff57/L/7fojavvjyq79GRW5Wo3bobpLnM0+Sb9As8/L67Sbunrabb8ce/KPf3zSO+/7Ig02xG751ZZ2eg9ahK8oR1+r7qruqfsaKs4r9LCNrN9TWGNEfJx/1526+jiyv2Ghv7eunX/3iVN4d5xexcfx1YajlfxRa75EtcSNNotQ0fRVmp1+auOF5iPTDQeehVvS8D+RVmRg8/JCC0X9P/NwgtsAeNpjYGRgYGBkcDz5P3hdPL/NVwZ5zgSgCMPZ91zLYPTfFf8KeGS4Q4BcDgYmoGoGAI55DbEAAAB42mNgZGDgDvnnACL/rvjrwiPDABRBBoxVAH/cBYgAAHjarVU7a1RBFD5zN4tusixbxKAoipa6lVgsMY2gjRFUENQmLLiCKMgiGrAI5B+YQlIkq1EsfPwGEQtJriIiomChRRDc0iaSQvaO38z57r2zjwhC7vDtOXPmvObMmdlCS86VGiIBYgK8qYHOF1+IjF0QSWlhVST6ImJ+ENcxPykij5W6Ndg9on211LBt+h6h7FAQL8L6pNnw/CRggKbaJC3Qus6lMCTPefi7BjoBvRXVS8q67u32cB4zh1h1XA7ZPNW9WGp0n4FWYPOZMdNY8G2Re/IHdI4y5mgt82wHeS0ixl6dp76ydZfjOmUn8hh2lvQ8ZUc0L7uqOWV1CPKyHdDLgW/p5VOYjeBc01o8Ha47UGPuwe9DtgdJJa/Ff9uHNWgO+vBnwlq5ffsa1pXP6vCNvLPZp3z0kjKeldevDc/B120XcBN4xx7uED+Jzr8hxzRW9ArzX+zJDwp5q3mapkJKwGhgOx3wp4Gj8DMDXfRmtBN0UfNPbmPtKvTugR5greYYN2adXH/8BlATKQJl9u8n1rKd94ydAn8G9MoWZ2Py+5XZ1Pt6935Q4wXQbhBnR+8Z+ppMsSZ3gbXgrjRzXR+PczPbd1Yu9jgwRtkNyB4AqLus529Cts9u3vvRJcrd+nJfD+LNMSu0P0W9w0N6xcXfJGTrfgrfB+/zvb6dHk5+p/cO+7cyvaPoF+tyRC/aGe5XfX9XKrGI/41tnXz4NTGqUpSRgZUqRvCZmhjnJRiwNcexVJaKfU61g96jDnz2DUbbDUx2IwMX8ZaM94YyCzKtnH3oNOySfWL2yxp0X1Nl1H7FahuSs/jH2JQJiZNW8vEveLCtMgAAeNqdlX9wz3Ucx5+vt2GYGobJMj+mhsX8yopjJ2U0tVi1NFGGYdeRnaZW5hpGfswZhslo1a7cWrWYDMOwmKw2bJna+XEWC2Xcrg091F/92+5e9/l8X+/X6/X88Xp/btI/f1H/DUsmbvwbbofkEfL/oukoIlVq5i01HyR55kstiqVWMZJXhNQ6lOC8da3kTc47nrgotSHaZkk+eVKHYKkjvb4lUqcU6SEPqXO05FcjdZlD8PTPlrpS362r1N1L6kE+IImol3pWSYFg9A6Q+pALIvdYhtTXVwpOlAZESo/ze8gKKYSaJ8kPheNw5oyAV2guQc9IT+kpMJ7m+QyYYXAfQz58mDSO3xFh0vgiaQI9L/pIL3H+Mt5F4cErgdJEsF+lfhIaX0PDZKyegr43yE+tlqbFSdOnSDOYF0v9TObNgvdsYi65t+A2D33z8Ca+TpqPrrfpT8CTBcx9h3xikPQe+AsbpSR4L0LfB3BIxp/FzF/CrKX4nBIuLSOW874CnJU8V8FjNV6kMmMN/NZUSGsTpDT2tI6zdXiynp1uYA/paEpnlxuZuYn6zbFSBndmC/58xG62wikTPtvwdDvPLPo+AftT4jPOsvHpCzTtYHYO+82Fw9ec5cF1Z6m0C7x8nrvRuYd9FBB7mb2PPe2nphBtB+g/iMeHeB6GzxHwj8KlGM3fw+EY+ztGz3HOTvhJJ/l9kvtcmi79xHsZGsu4J2V4VY7ucrie4p6eQsupQuk0/pxG4xlmnqGngpmV8Kxk12fhfI7+X+4HGNX4dJ64QFyk5hJzLlF3GewavP0NPVfYcS06fgf7Grqvp0k30XeLe3ALTbe5M7fBqS+XGnhvoKeBXTbyPTbi1x3m3AXvLuf3smRKkFm0zM0hKmRNQolYIlXm4Snj27NmJbLmSTJPP4J8i0RZSx9Zq3yZ10VZ60bZgytkbci39SDyZO3SZT5dZe35/Dvw9I2R+ZXLukTK/MHtVi/rMUUWMEjWs1gWmCzrVSMLSpP1pa5fnCwYrAERBPmB8bLBRbKQQAK8J8AbCtfhcBgBXig1IzkfDd5o5oVly8akEHAfC85Ycs9SFx4kG+clew49z0fJXuB9PHMmgB8ZJoti3kQ4TaySRXM+CT2T6Z9cJ3udmqm+shh8iMG3aTdk08nNQFMsGmfCbSYcZoE1O1gWx4w34TUXHnMLZPOYGz9MNh9vEtC3IFf2LrPex8uFAbIksBZxvoj6ZHQv5mwJ/i+Fa0q1bHmI7EN6V6JxVaZsNd6vgdta/FzvLdtQKEsnvxGum/Bxc6ksg5oteLCVWZngb+N8O1jba2UfozUL/tns+XP8zMGLHHafw26+hEcus7+C4zdwzcPPb/FnJ7x2oW0Xc3dT+x33Zg/6C4i9nO+D+36iEJ4H6DvInTgE/yJ2eRisI/w+infH4HMc3BL8LIHrCbz8Ab9Kw2U/oqMMjeVo5xuyM/haQb4CbyvBrIT7z7yfhXMVOzoH9jnqfgWvGu/PZ8gu4MElzi+jowYNfDt2BZ+voO0quq7SX4s/1/DiOvf/Ov7+wf34k3k3wb7J7zr6bsH7Nr31cP4L3Q14fQc+d+i9y6x7iXLKk3Oeck3myHnEyjWNk2s2TK55glwLX7mWN+S8MuUeKJbzjpRr6yfXjlz7fLkOaXIdR8n5psp1YlbnArmHfeT8Q+T4P+S6RxPU9siSC4iR65kh9wizHs2V61Ul1ztCrk+RHP+PXF8vuX73o04uOFyuP2f9a+UGgjc4SG5I1t93Xct5AAABAAAB6QGQACUAAAAAAAIAAQACABYAAAEAA/gAAAAAeNqtkrtOAkEUhv9d0Egkmoih3oLWzYISL1TExHuUeCOWggjIwhJ3YSXxISyt7G18AGsLfQMfwYew8J/hBAnZwsKdzMw3Z/5z5szZATCPVxhQXwoLHGMw4gnON1wN2cAi7oVNzOFBOIYNPAnHkcGn8BTu8C08jYwRCM8gbTwKJ8gvwrPUvAknyV/CKWTMpPA70qYj/AHH3ArD0K67g26jWfU6vl312tiEhy4GuEUTdTQQwMIzew4OslgmVbhrYQ+X6HDep75PVvoWbFqKcNmssQi+XtU41zj3OV5RuY0DXKCEHezy1CMc4gTH3KujR38VMUuVo88t4IwnlakpRPotTXhGaawJzbnOxmeWnr7J+GklrR+ufq0NKgNUtb4/8rCxyrGANqO2GFNprml1GbnCutnI677G6uWw/qf8o6sbbQ11s+nt8s90mWVTcvRpVdT+N02ZWVZ4O2UNRhU4Zd41/SZ6Or8cb6uqt8K3nadmOI7e0A/0cnnVAHjabdRlkBxGEoTRzbQtmZmZGbaresislUdmZmZmkJmZmZmZbdkyMzMzH/nIx3xnmPn2322EomJDU9k90sse8EDv5/txAzHwf3707Y9/rAkGJhiYYmBKTTgwfuAzTaQRGqmJNYkm1WSaXFNoSk2lqTWNph34TtNpes2gGTWTZtYsmlWzaXbNoTk1l+bWPJpX82l+LaAFtZAW1iJaVItpcS2hJbWUBlUUSlU11FRLbXW0tJbRslpOy2sFrahRGtJoraSuxmhlraJVtZpW1xpaU2tpba2jdbWe1tcG2lAbaWNtok21mTbXFtpSW2lrbaNttZ221w7aUTtpZ+2iXbWbdtce2lN7aW/to321n/bXARqrA3WQDtYhOlSH6XAdoSN1lI7WMTpWx+l4naATdZJO1ik6VafpdJ2hM3WWztY5Olfn6XxdoAt1kS7WJbpUl+lyXaErdZWu1jW6Vtfpet2gG3WTbtYtulW36XbdoTt1l+7WPbpX9+l+jdMDelDj9ZAe1iN6VI/pcT2hJ/WUntYzelbP6Xm9oBf1kl7WK3pVr+l1vaE39Zbe1jt6V+/pfX2gD/WRPtYn+lSf6XN9oS/1lb7WN/qZfq5f6Jf6lb7Vr/Ub/Va/0+/1nf6gP+pP+rP+or/qb/q7/qF/6l/6t/6j/+p/+t4Dlu0JPKEn8giP9MSexJN6Mk/uKTylp/LUnsbTejpP7xk8o2fyzJ7Fs3o2z+45PKfn8tyex/N6Ps/vBbygF/LCXsSLejEv7iW8pJfyoIvD6eqGm2657Y6X9jJe1st5ea/gFT3KQx7tldz1GK/sVbyqV/PqXsNrei2v7XW8rtfz+t7AG3ojb+xNvKk38+bewlt6K2/tbbytt/P23sE7eifv7F28q3fz7t7De3ov7+19vK/38/4+wGN9oA/ywT7Eh/owH+4jfKSP8tE+xsf6OB/vE3yiT/LJPsWn+jSf7jN8ps/y2T7H5/o8n+8LfKEv8sW+xJf6Ml/uK3ylr/LVvsbX+jpf7xt8o2/yzb7Ft/o23+47fKfv8t2+x/f6Pt/vcX7AD3q8H/LDfsSP+jE/7if8pJ/y037Gz/o5P+8X/KJf8st+xa/6Nb/uN/ym3/Lbfsfv+j2/7w/8oT/yx/7En/ozf+4v/KW/8tf+ZsTOexyyzy6lP2Lk2L12HRwcNfjTjMHB4VmYwUxmZTaYTWaL2WZ2mKP6M8b0Z2PMhN2x++3d+6XJIU0OabLU7CSzH9Yc6vZmi/AWn2sN9kNbtXepLpfvcvkul+9y6S6X7XLZLpftctnuYGG/JJO9wl5hr7BX2Av2gnODvWgw2Q/2g/1gP9lPzk32k/1kL9mrfL5yXuV7VvaH/z0q+5X9OrzPuQ1yGuQ0yGmQ0yCnQU6D79Egr0Feg7wmeU3ymuQ1yWmS0ySnSU6TnCY5LXJa7LfYb7HfYr/Ffov9Fvtt9tvco01Om+/VJq9NXpu8Nnlt8trkdcjrkNchr0Neh7wOeR3yOuR1yOv08wpOC04LTku/ZD/Oymwwm8wWs80kD7elkFfIw3HBcSnk4bngueC54LngueC5BHlBHr4Lvgu+C74Lvgu+C75Lkpfk4b3gveC9JHm4L7gvSR7+C/4L/gv+C/4L/ksljx4UelDoQaEHhR4UelDoQaEHhR4UelDoQaEHhR4UelDoQaEHpUkefSj0odCHQh8KfSj0odCH0iKPXpQWefSj0I9CPwr9KPSj0I9CPwr9KPSj0I9CPwr9KPSj0I9CPwr9KPSj0I9CPwr9KPSj0I9CPwr9KPSj0I+gH0E/gn4E/Qh6EfQi6EXQi6AXQS+CXgS9CHoR9CLoRdCLoBdBL4JeBL0IehH0IuhF0IugF0Evgj4EfQj6EPQh8B/4D/wH/gP/gf/Af+A/8B/4D9wH7gP3gfvAeeA8cB44D5wHzgPn0Rje5x44D5wHzgPnge/Ad+A78B34DnwHvgPXgevAdeA6cB24DlwHrgPXgevAdeA6cB24DlwHrgPXgePAceA4cBw4DhwHjhO/idvEbfKuJ34Tvzk4vNc/N3GbOE2cJk4Tn4nPxGfiM/GZ+Ex8Jj4Tn4nP5N1OnCZOE6eJ0+TdTt7txGviNHGauEw8Ju9x4jJxmbjMOrzHubzHidPEaeI0cZo4TZwmThOnidPEaeIyeX8Tn4nPxGfiM/GZ+Ex8Ju9v4jRxmjhNnCZOE6eJ08Rp4jRxmvhMfCY+E5+Jz8Rn8u4m727iNfGaeE28Jl4TrznslXe34rby7lb8VvxW/Fb8VvxW3t+K44rjiuPK+1vxXPFc8Vx5dyuuK64rriuuK64rriuuK64rriuuK64rriuuK64rriuuK54r72/FdcV15f2t+K68uxXnFecV5xXnFecV5xXnFecV3xXfFd8V3xXfFd8V3xXfFd+Vd7jyDle8V7xXvFe8V7xXvFe819bgiLFlTI6qvTGUvdFt9EezP1b6afz4P98bpdEfQ70R0RuN0h/9jzQZnd5o906oo3rRdWh0b4zup4zmt25v9M+rY3rrjRL9Ufuj93eNaPRH7yPNdrM/einNofgB8kP9gAAAuAH/hbABjQBLsAhQWLEBAY5ZsUYGK1ghsBBZS7AUUlghsIBZHbAGK1xYWbAUKwAAAAFRyVonAAA=) format("woff");
+ font-weight: 400;
+ font-style: normal
+}
+
+@font-face {
+ font-family: Glyphicons Social Regular;
+ src: url(data:application/font-woff;base64,d09GRgABAAAAADioABEAAAAAVMwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABgAAAABwAAAAcaAomN0dERUYAAAGcAAAAHQAAACAAcgAET1MvMgAAAbwAAABBAAAAYHWhb45jbWFwAAACAAAAAIwAAAGyprwmmGN2dCAAAAKMAAAACgAAAAoGtQD0ZnBnbQAAApgAAAGxAAACZVO0L6dnYXNwAAAETAAAAAgAAAAIAAAAEGdseWYAAARUAAAwTwAARpSeaxjAaGVhZAAANKQAAAAuAAAANgReuJhoaGVhAAA01AAAABoAAAAkEsIJRWhtdHgAADTwAAAANQAAALJgxQBRbG9jYQAANSgAAAB1AAAAjKffuURtYXhwAAA1oAAAACAAAAAgAWkCFm5hbWUAADXAAAABlwAAA5bYtJ38cG9zdAAAN1gAAAEWAAACw1fIucpwcmVwAAA4cAAAAC4AAAAusPIrFHdlYmYAADigAAAABgAAAAaDzlHAAAAAAQAAAADMPaLPAAAAAM3mTxoAAAAAzeY0TXjaY2BkYGDgA2IJBhBgYmAEQhcgZgHzGAAHNgB3AAAAeNpjYOaQYZzAwMrAwibBuoCBgWELhGb2YDAC84FS2EGod7gfgwMD74//7A3/FBgYOBMYDIDCjEhKFBgYAe5sCgwAAAB42mNgYGBmgGAZBkYGEFgD5DGC+SwME4C0AhCygGV4gawFClwK+grxDzgfSD7QfGD5wPmB54OAH////0dSwQBWwfBA4IHCA4MHDg9coSoY/3/9//h/ygPW+w/vb1IQUuBRYFNgkP8l/1P+M7sr1Ha8gJGNAa6MkQlIMKErgHhlaAAWolS5oPEB46UqBAAAAKQAxQBQBfAAAHjaXVG7TltBEN0NDwOBxNggOdoUs5mQxnuhBQnE1Y1iZDuF5QhpN3KRi3EBH0CBRA3arxmgoaRImwYhF0h8Qj4hEjNriKI0Ozuzc86ZM0vKkap36WvPU+ckkMLdBs02/U5ItbMA96Tr642MtIMHWmxm9Mp1+/4LBpvRlDtqAOU9bykPGU07gVq0p/7R/AqG+/wf8zsYtDTT9NQ6CekhBOabcUuD7xnNussP+oLV4WIwMKSYpuIuP6ZS/rc052rLsLWR0byDMxH5yTRAU2ttBJr+1CHV83EUS5DLprE2mJiy/iQTwYXJdFVTtcz42sFdsrPoYIMqzYEH2MNWeQweDg8mFNK3JMosDRH2YqvECBGTHAo55dzJ/qRA+UgSxrxJSjvjhrUGxpHXwKA2T7P/PJtNbW8dwvhZHMF3vxlLOvjIhtoYEWI7YimACURCRlX5hhrPvSwG5FL7z0CUgOXxj3+dCLTu2EQ8l7V1DjFWCHp+29zyy4q7VrnOi0J3b6pqqNIpzftezr7HA54eC8NBY8Gbz/v+SoH6PCyuNGgOBEN6N3r/orXqiKu8Fz6yJ9O/sVoAAAAAAQAB//8AD3jalXwHfBv12f/97jStdadpybK2JduyJftkSZaHvOMVjziO7TjDGbazTQYZJM5ghjCSEAcaaEkKLauM3jkhaSkvULoCrVpKKaW8fSm0BUInfaF92xAf/+d3khMrb/h83n9s66ZOp2d8n+8zLgRJ9BIE+ZqsnqAIORHiERGumZZLqL+wvEz6m5ppioRVgqfwbinePS2XSS7VTCO8P8K4mQI34+4lD8y8ht4VXLL6f7/UK/0qQRCImPOvHD4CL5UrlCsIHTFA3EJMqwkiyLWluEiY86S4vjAnTSFuMMyhNzk6xdE0n4+CXCzFxWi+DNYKUlwBzc+HNUWKH0JBPp9m9LypOpHgYgxvq4Nlmf5ZT7CyqaXPZ0lwBQxf2JZIEHybGs6ra4bjEeYcnV9QaKpsmQ9nlJVHmYpYxM2aTYxR5nV7/MhotpgjbKwOxQL+aEWSjMAxOOQJ+OOxeCxa4fd6ZCajhZTLLA4UYfHOOF6J6aMVIcrr0ZJTa+Qb10wdW/uv42umyLp1y7Uak0uqVzsqYqtPjjx49uiGardTLcsv6WtadH3eYZXHQebSRt1ev7zbf13i2IWbIuN3vrjhvs8fXXoRX2dqzb+Orz02JTlz28t+mc3cWuypXd5+55aWR4/8x0wwUGEbOVzVPnzfpvmNgrX8ztdoo/7hQ9bf+4JfR96zPV85tLZ27NGfEZI5cq8lGoh2YpCY1mDZt6S4RJiLRDgJCL4jzBFvclYQPMtZaT6UlnMnyDlkZfT1SoPTX5hI1je2YdkqGM4Lkk20MPozzlhdQ/sXiNMi1SIdApFJnEiJiHgShchAQZLEsgwgkKZcKb4imVIiBcnHC9BcASKdDZV5HqxMGJDzyFG0Ai1F/83q1FKlTSH8InByF2lzz3yu1Rt0wneF72qMWs3MTB56D72MXhDqhfVoq0arU6Mdwq65spT+2KT/OG9vaQmdq35uaBAVCK+jJk+OVi2nZR87di1B6lyHFnUo1MI/UY5aIZzRCT9DVuGC8KHA/lGh+CvqAHFKL8vUSvQTo8QO4ibiCDG9EkvVH+GWpLiuMLc/wjlAsDeHOdubnC3F2cJcXorLo/k8VZAjWL4WRLwzNV27Myd4ur42ooQtmt8NO/exnDfFeWmuKMUVhfHKZIqbDPO3gDJ22hj9WVNg/sDI+HUgdIJfshKsmygC6+5iziKTLbzh+htEbViRQxY3GR0KC5gllaWaGLbWQIgEE0fxpETcisWT0qjbo5UaRFsHy7eYZXJ3CM3Z1iI5OIMfHB78PupmvIxbHWta3DfS6JWqlDoJo1DLyep93BM1s1r87A87/eGhirKSYGG+y+sLNHjtUsadKPLa7XmszaGZ4XNKJzbesnbRbYptO56xq796QSE/MCGsH9r05cLS0lVm69Kve3INQw14ReJGR0fRUWHzqLCZpMn3mifaYnZagtYrdRq5SqKSa+gclaOV2kd+fVbbN59P7uwdKSn0FUSNplJHvsPX2bK+qrp3aUPSIqckkhyNPo+h9M76gTsv/mLPitUq8tS24ZNB36Tk6Xv27LTJHt676sl9etnDjwubM5+djWMBIpjxJUOKc6YRrFB0JDo1TRNYsbRSGeSLUJC4JtzAZiwQQgERPCi5X5Zl/rs/+q3kY4fMfGqnXT18x7fHeu7ZuCRh+OkP5toz9c7XnsnT7fr1z/u/fH1LeefoSBjdm3WPPqIpc49mcO4wODsnoUXLLBCxlklNMwjfKYPv1A93yjvMjH6acXsSYFU0dvVr3LtFihgdcse9DKpDbuzeddm+65IgAr38h1xqK/0pOpOqvvRuyVnhE+H77zNzb1929/6CmdeEP7lvO4pK0CPFhw5ZhY/QY+ZdWbhVTFQS84juzPcwpbjmMFcDkSHMOSNcKMUFwiKGtWZEj4NHHjiSMsW3gc/kQaA4HWQT9aLDhGKM/tpfyeggYTtJwgG/N+DxB2DhBsAvyJyXPs2QtZX1lT8dPHx6KTq69PThwbBnKFBFffK88Ma33kJLqwoRKkwkCoXPC6ukMT8p9cdi/pnP/LG5oiD/vvj+sURi7P7FqM5dJo8Xnfn1W99C4NlF8FahNBCDoBSLEbI5csklPCCbKOD6ZEY2BSJkQNSsSIskeZVIAFiCAC80Xw4btSmuluYTaUnVZSTF662gdi/DmRNcuZ4zJPhELUisCERXVAAreQm+AkT4rNlqL9fXfhHwI78vICMNZgtj1EqQWQLQH3cbHBITA3iP3EkU8JOBLOE9aCe/pRD+ov3BB3VLPgrP659XgR5bj5Zu2/+frZf8cnTw0We273z5MBlEnSG1M+9367ICZP6q9eQuxUX1mHBIID6/nXxaWlbXUV0izIuhssjTOyXr0M6pBzfLSVvlZ9878u+DB5AmQWThuI4oILYSB4iHiJevWJkrjCH4ZpYrormDrjcZzp7iJsLc2hQ3gH2dk9LcSZDxw6KM/SnOT/PbQJhjLHdDitsArzTfJcZRTkFzD6S4B8L810DK2/wg5aKRRILvIsAyGZMrhoPqA8w5R4217qE7Dh8TDdVlgtPuOgbKKGKmIxUx8Eb+oB00wCa4k8xpT0m5D87jJzTgrN07JrGzrmW4VdfSh8xilrhZXxwsCKKtxO0qwFowYq4Td8gB+sF5k2RFDKJzSAHvDkkBjqRymdmJcIQAhgN8BwK5XIukFZjyyHAgCJHIXI1YiA0O8ZDZwprTV/IDpsEHZaNZjsr2I3Sa+PwH6NipAo22WKsVOOGUsEWYR2uc6IHT96090knqcow6k86oVhTea1MqkVYmk+lySL2MlmtlckpmdNf07mxvHRtrbSz1qaVO1/ctHqmyPlJhVSBK8ruRiRtQ397FpFSiK0nmF+kV5DOyIkRvziu2q/PKJAqpVq0yyRWK4hoLqTWM2g8NuLI88KTDevrcfdvt/oDsyJsKlHfyPyrbKDNjN+SpGRLlrjDL5aRWTuuMFi2Zq8jVWPS5FjUadjUt7euv8csYF9u+uiG/RG5GPlsp61cnrda8YNnzi7sHpTS7Ka8vr8gtPGw0yhwLb8gpi0hIrVSh8O66fjVjMdeawRSpOfZYTiSI1RlbzE2ll1HRJn0iSStKO3iVaHz6FPZxfZozF7BcJDWdH8Ggnu8DXhGAHTQfT/t5NUZ4HxgN76hMXMtYIozRQYFeQfMMDvdR4PjwAyqXYzZHGM1srMLvyUa+8+Uda5ZVLL/uzojn+vHaG3CoFD6XqkxVRZNFxZIdu5/avfupLI+9ceb2tk1Jv1qn1yNrR7WNnAf4f3RjUXtzWZyC/AK/YffVPppHDBMriU3EoYxclgFNCvOBGuCwrhRfEmVZ7JlYLBNz8ohG+OIbUtONG7BAGueDQDbQ/Hia4F4H/thIYzizDywZWYX9cAPD9Sa4cT23FpzQu4zRn7OaC5JtK1atxUddDG8vA1cb0HPzrx1EKIufCGiRAecRrFGHkIEKeKIVETFlSJKw02TGgkSGJALqBcEfGFgsYglJcAKBMA1GpDSOc4qAHOKMPEvS2oYNR+7tyRO2Wwsr9+of6mjX6SbR4Ot3r9XSRYXX+a2N1RGa1iFIUSbRogmn3eHOUzi1enlL47ycwI13vrlx9/98/wR6ceyJb98i/PxjcnP4J3/e6Jc1ZOkmufcD/r5xb1KSWND/AdokJUkHqbwkJXeiW5U6mqKkJCVBSEfK5Uh5SYm2jm1lI2sbSrWsFahhrIdS+Za1VfXsu/fiQ8XVVHCmpiVvJ/ryn3//Q01R6V1fw+oks3Ran9EmaMuS1p5dNGrMmWnekDZbMGzeBnDJ0xbAQaUBMxSTGUDvGsSqwB31MpGo2xRhvHOFR7nI58+fn2k+f37u150Zle4aHb14O9zSXM6xmlhH7EYSYlqC741NpZfLUmda2iXLNGL2BEa2M8UZwtwo3POeMKebtThsXOm7b4a1JpbrgoyA5oNpm5vEea3tub9v/+7ThCmYI+GaQlqu8SW+F/2b63/puX9ufOnbsF/F9dOnF/T3GoLT8Oq6w3WHV6Zl9AniTGNTf++CEP6HTjdmVrl6G+LHcfg2joJ8mnGa4I0mWpft3oittouZZrsncIgI6qdLNm/FcuOXsSDEaHU9Diwt7RBYahPcBDO9eMNmvMewEwu7WISINFEVeREmRKgiZgGiRNXCShwyAyfCwgf71sqwCYdIyPCSJOw2Qb5sFqEEjDxNciEu+AL+HBRFWFnIjIOLGQcm+IGjWF2gkzWirR+NhlGJ3uhiNLrw80WdDIOOdu4lEUUpcr01nRON3fuiRbRZScpySKp+cMDhGPXl5Xv2eookEtLf0LTYUVSfnytTSG3uRcKdgdBgEB2tqiV/JmEbaOt2S2FZWWvY5o4aL2L7SBvEjK+wlKKMhb2J89VGNFxaWl0Uj9+e+smFn7x4e59cQcnNvqrKVUVsVY5ELh9l2XW3Jq0OrSxHoYpVFN19dxLiXgSR/4kmhQ/trYJamu+royRLhltK0bGpq/DdBJZfkqmCWCAvnGUURtH+sb0TvNECGqLNQMiuATUGN6LcBiVyw+9cK/8f9CaquU4o24SOoIfQL4Xl5DohmE000ceoTHhL2DjTTD4vmZ/tj92EP3NXjhRXnfbHnjAYJ9xPtQPux9rYdM37gfgP2ow7JLCgAABB34EkhZNHrFx5iMLpowNZYvAHq36IJ1kEgbxHpQ831+c5mqs7RqubTuxblWdxTceqNs4bdK1ov3d18dpir8VYlmgO7T56ePegRoZcjspzz7R0vnBo+Xh3aTQrK7K68mW2oMx/+/79yxmDrnZkTwtqUqk27zvqHGi696Z2eqx/YasiZ8Aa8isNbbUF86oUdlTknHh+23DIMwJpHqHIyvPiRJLoIBYRKwAV9lzRWlmYK01xI5gbDuBYJGaA60X0YlIck47HgF4bcL2KYfT16sJwZW1da2fPwJKVYyLNKwMdn2PswVhL+2oxwpQy3JIEPzAC7pdPi1T8TGV1V//ia1JtwuiQsElJRUgC+aMhzsZ8cbNFrpXI/RBdYFVCJSVxvQX80gA8zYJzzPQBTAT9FnEf6CIrxEzWbHzg7Fu/e+vsAxtrrqyuppoeRlWHTHrZ8JM71sdNXzb4nrt5ckJ4O6DzL1n/2MjKohsO/HYk2fjJC3Rpz87m8advOxPap7r/vr5G93Bt4uBNltvHg9kM4OpPEFeFs0gZKiwsIvNXr9za5n4e3XvkQuNTL3bO1Nri40OrPcLnF8LSSvWDxtL6prxzwgtVd8Yf+UWevOs9hXfy1/PfyfYxN+RGSzLRBSiSh+WiYS6Ymg5GMRUISpRBhJPIy9rCscaT4opZzkPz3rTqgDbxXg+gYzkoK6pn9GfMFhcb+QJtWMSqSFxfEMdsyWSUuiGK+31BZAKWTMml2QEJBRF1y3mB1SRQv+QvT+yepC5Qtwi7hY/fdrvv+t2RZV6ZEM6KVZQuV0a5ZprbUGFri3lN5/vXS6pX/eIrnexwWc+6iQRCJem6q/j9bfD9p3PhuyOMLvAlZSlORvNa+F7GFG+fU5NgjOa4EpkB4ed8mak1pF+bg3ahG5Ra0j97C+Ld/OtZwDw0KDyRI9PKO9Nofeyq+GkRI/veywyWtxcBPcsL8zFM1wyXY32DeGu5KayCXJq3wt1BmmVPu041KxbBaL44rQygcrw1F5ImyCz12FnsDG8yQrQqLgINxUBDeXB0uiBSfU2ImuWuFPBZ5GYq4kkKl3iB3laEFDh0maJuM51NuH6x4cSGDSc6UInwBvoUleRochzFjr6FqIRSKa3GYleyrHjhvkan8AaJsgobb+C3rb/opS5cyiUDkVyXOUhvWTnzN/L+SHdjmT9Xr5Qib2Wl7RsBQf3hVZzIQ1Re4UQudprWiKUk0V4BZJg3OROLGa8lj2V5H8jEBdjCea7NhZhA3BKNmOIWuanAIoUvnvX1tpA7Hyy6/vybvotoR4EwRhVe+uHcr3E/+sHu5OJLL1zffPvUj5t/K7wnv/mqe7UTTPpeEZcf5h3XrnRFIJcAC4u74yiKY+3aY/jj1x5DR8+jIupD8rWZ1/8qvE8KD1+8cuyYtEN4mBTevzDzFvnqXyhUdJ6Qz/ncfIhTLNFKdBL9xNuXpZVexlKcI8xVRzhnimuEX5pLprj5Ya47xbWEufYUV8hy7TQXSMEti0a4aE6ZpBBMzcFy4RQuloRp3gjbkRRnxSCP2xXpJkQDy/WngKLhfIprZLFxDoAiwoWgCH+Ct3phaU7w/fPBWJOxlm5srNXMdE17h8i9GpOYqnnBcp0QU7lIguvGFRe+PQBb1gSf3wLLjmtFWUzEKgI4dQAyZoimWxRyFMX4gotSUpzWAwHz4twt4BZ7FgZ31I3x30HqsrV/FH1695kv15TtnxLU5z/rbWtrF4S37d6glWmpQ69877HeO/pC6AeJ4Z5BCUk++uxXX92EPhXUA/IH2OY8DSKzWEXR1JHXS/LHum7fcund84UtcS8C7ZIqoz8vUfrp429EOtptdQNd7776c5Q3KqhfDFQmDMar8rsQaDRGVBEPZvTJhrlEBDclitNqqp5VU4moKROIPizqCDeI4ikuTvOVSCQujln85pSingNhvgarx8TgkhZXxnDFCS6u5yMVEGErGa4owTn0nAs0w0Jq/KzBFY5E47i8UmwFRQVK4CwJwxcGE1/QNvJjLox35iOjPIlgyx+gpO4CBtgyZCEoEvW6YZlt+7dvKd/RR7kWbi/fcntRVCZsnnlc2DwKUjuPStJ/c92Beu7g+42J9vN9O7YvPN+eaHz/4OiKu+vw2cLmm58QNgNCwZtLsDjVc2TqJAqJMqKNWE7sIg4Tp4gXiN8QHxDEFxSj8Y2LHD8PMRHG4FWRkEZ5IaYZYNOIu2NA6GDVGxVLQAG/wQh0Lt0Mg0uK9SWIewYGtxYwu3CQ8AnpxkEgRMJVTGI3wSIKSrxCwBQ1py8MH44vIJPrHWT6mkkyipO4zBX8UbxqiFbMXsFrglsS3xgxZa4Wj+CA65HLTNkFCm6Sck1y3OSldye55nvP7fl6XUM/Ug0P8l1SqUqp1qi6uswWiylPqxkgNTpbqGB+2B8I1zWxZvWoIoeU2kxypFIqNEhut0iQUjbRradpg89oNOg9Fr1Or1IocnQyuUKpU9KK6yCBl2is5hKfxGYYHTVYKLVdN7rE7a6I2vOPy5U+pbw335GIOB29zQpgwopsR8L3eR6/SDjBJvwQLUA/Ey4hyWeP9fUJDvQ7YRVaKnyXlsmVCh2qEVaU2tRaA0OdKnCFdHnmcGAYBRb6wyXGeEj4KYpTMikplSGZlBJekSgVIEekUF7qJyvOmhQ5Njv7YUlurlJudvWoJFKlwvQrk0qlUJIGjVEj09MmUqGQOMkhoV2ikJNKSoe+J5jllz75Ttztcbqq1/d4VBpVTkG+s97l9nhTQZtKrVbas+JDIxGZjQ9Nc4oyznRAh/yYd+K01RUCF1MyvC9wzZRerKuYJWAouFrpxy3EuB6FkJaUa0mPF0huLISA92Yp/ZQvvmpx61KkPFffWaqjkFxpSJRMNVz8nJj3/Lkzd5bEkmwgXxIwOxhSUr+kyJVc1sRmUdTTww9s3bGgqvPWeh2tj2grol3d45GnxtHtiGgtd/eMR+oa3KRKZfLkBqKMUm6pXnAXfHdEIOWIckSs4K0lpsMYyRJhXLwzXa7ZgRzyU9P5YuMlP6gMcgqWy6f5iIhjOKbw8QgmMoUmMVwkwhBGfDmFRTiMRJkzKnu+phjDkwQDmhJAKc7M4g+icIDA+TR2Rly2k4GX4J9qFGchCs+SITrmMtMyFzqGZXbsswvfzs9x3lrftWBg5XD/vPqA3+9vmNc/vFJCtS1A/yWxHsM07xiq/gi1ffSR8C0sqGPH1kQ/W4by+zpKQ49fF813+L3N9YuXvDw81NDs9aN8YTt16rNVcJqETr/pQjY/jxKLifDlent6CeAdSotpOMwvwVlnCL7jaau3dtG1Obce7EKEJQAiEUb8YdxmjukDJOEGNALWjbEo08PUy8V2mw4BzMhAKCJoZLXt0Xcj65ej3CfaF+T5bbXFnZt9cmmePSfXXGp4/EnaKBwW3jEW7/vNiTV5qEva18B22axjN3rmK1tIGfIunFfNMK4Yogr3xMqq93a2dGUZ1DPCbfccuEMrUUUrDB7WNywn5XKbfgPa/T7yoxFSseKeU4t+NPX7sF9JDcT3CF0PIDnpKNLJEFrk9VPyJXR9NaKJ/9UbayYOZHJSs9gVqwHOE8ah0TVbVQiAPFvmkBxcivKyXCLFJWjc+sEMJ3K5azYP7K8uITJqLsKcdoXNUTFXbawBm7RFgriQFGb4PBaWri/qpqX14ovpaRIyIK9HImfSAxSGDH7TcpkLAFtsQ6RnK7LU8JeNY2NIevgIkr66EVaFz44cFmZG64IlyTemjr32s+NTU/cKo/ceOzHW1jo+3to2lpUnrT0ifDY6tmnTq0iCHEgyPrZh/Sh6qSSZLLnU8trUsWNTwoqpqanjJ9vGxLeDOOf21Rwg04XEeuIG4pmMde4IcxNiC384xY2FufoU1x3GLZ9I2lR3zxEt5PrcthS3jeYtaWnuAWnSBEiTwcXl05WeheuxG2/T1yt9kZr67sHhMT/eYWGeLQo2tS1diTeUei4EErdNADYuXQ5yHgZ5D8JyTM83tcCynuFqgDXq+SJQB+dngP5fQwskYTH79HGsAi1pSMdp0Q9ERxH1ggHCctWRwGwHJ30ora/MW9K7DUlUjSs+EO29sDOrkDOlRNYLX0bUvdKZP4z+/PGJC/JCW45yeMdt/1hoMBebGa1tXPj9g4c2OXV0kcxnVigXjGx6vYsx+Ay0TGoZ+fTGzashDudKnEb18r4XDmn1TlqjND72X2OrTTqtS3p4gWx9rEoq2bt+tLI2S+sx4ZLwDQt9AlmeRGoUsqp6jv+GOmJ1UpaamNprTTKNbXalzf6O2U6ZqiKq/FybXVvXkifLtf3AaEPMcI7NGNJsMlJG40zsrmep3v5Hph6h+oayMKuBGCIOZqwCEtV5Yk0B28DiOTaAPSrtW26cHgCksZCF8Itgo5zl5kMyQvPtaesYxr4GEZDLTXAJhrfaISdodMN2NMHPXwTLeWAGdtyvsdoSIvh39A4MDn1R49UhqxLbDHAIzy9ZHFQ+ssQzo0v4NA9QVbdUpHLA2KRArUhPCE6XB7LIacl2jc1tCeortDXSnju2NJo9eepELlLJZPfd9840/9ukv6BOeIO6sP/6qdMfCm9YCvJseQWW++6by1jJl97YpDZocmQUGRy6f5x8nsnNkRiQQqZR3NLQcMuT77775ExzpLg4cvHi+fFl730DaSXCPxmrUiJRWhnkaWi4uv/jgOygjujBszazEw2QetWEMcOPpItvvXO0YE1nBYBzmcSgmMWeW0/zLZdzg44U1xHmF+C6AlaCM8FXxkHWkRpcFK+HtXAXDsA1ZkZ/hvYVxztw1I1AlvZsvtMent/1BXpwIpOxGrG4ZO6RFYAP5Yt02AlpW6wOZfDQ4GbiIt9F+NxaVIcwDnrS1PVyFdzXcic7yu54agdqzulekfPE2+88oV7RrSGrhOfOvyI8lzhHuSTPvHf9W+3ULXCe9M6WG57ZcfGKN05J8hcn/30fy5L+od27pynf0YVduhMndF0Lj/oo5UuffPLSpX+jkuiDi3qF7Sw7lLhUv3hwz57BOXWkYsDC6UIsb3UET5B4I7g5npuWd1CUd0AsrgVoXgOCZdiMbHUpThfmzBG+BMQbwAjoS3AaBoT8vxge7jCCaKoR4/Zo5Sbg+RFmznjFzNuQ3fyycdldwuayvqpQvilHis6fv9SxZmqO/1MXUMljrUl01OyOlbeUNzutwhvCG5dyp67iox1XKoIF6S+RJqZA0MLgzTSfm+7TYG4aRXDXdILLZZ7VOzxsXYM4/qbn7a5r01SzGyKeDbQciMVlcvyHcRQPDeKBCBPOFAP4FdMO4CuwyIp5w6CKF1HPX5/qRxvaVkxsL1qzlz04//gvlL8RDhwsG2hf2PP1yVC5x+359vXfv+ifi33olYdu+DFSINdRp657Y1DbeqAuN1rzi+PFAdUPH1k0svTBchSU3PhDq1q28U7y/qx4Z4EMsUKcDFyMcohpE5aNMjWtNGFyqkRATnXsmZaICaW7XrliZQXYq7ugi2VZrh0XRkpTXB2eO5m2O714Z4zmBkQKx+W+yRGsSHZzRbJLwvWA6TpAxu4U56Y5CX4/SnFInE1y07zn8rQnrvo1pbgmmm+FtbIUV0ZjV+WqxQ54Nc1pUpwmPK2pxlfW6JRBTBj5YjymUpjgmphpfxSPTXCt+rPKklI2oqjD3qspAxZT07FYZNa5LYz+nERTVBwua2zFR0vbRezFunWDwvRmicsn9mLdGR1bcdcLzDPzA9kqnUQuB6K1yOWn0hVUt+jgJG12xWi/q8Aozkng3DoIvNNEBhq3vISUyIOUL21pJANp5W8dGIV/i8vdRccFsPbjxwUw3xXSb6yZmnlolfCjs0eFz90CWisIwglKXV10vqhafLkonXfkwWPC/7y4deuLSHnswSMXn8PlRwa9vPhOZuZpcmjmcfwXKRd9KH3V48epKbJrao2QvOcbG4VFwgkBX/jRzBWri0TTyKohhIm4iLwjxBriOuKOK1NvTQCuYW48ggnkKhZ3bjsjuHC2kMUGMRHBulrPciVhbkl60HTzLEC7WIzReA6pksW+VyP6HuZMARGme1mM1Cthey3LjaW4jfCaNoRBsdy25ZqlxoKrepXMVdv6ihhrNso8ZGaJ/j/Pz3LXkuoicggLbOZx/Hpl/Vv7p/fP/pL8/+WsrI70ldPQ0SvrF6fEcyVrxMVn3/+/nJVdq2VBf7P1eFwhxdgHcbP4TTxT4qNxTwCAb9quwP5kJ8CfKsCffMUQBj0AeLjanudNYADk8sF3HLjW7ioMYReTYli/1pwgRL08pI+wiIjrAz4KNuWZ0hEFGftVPUA0Pn+jfmHbTSvu/gNqRckc3b8Ffmdd5R6dfGy8vCHGlJm3Le851ZY10NuxslOYEXzCDHoCfemPKKFQCftshxaeOvmPehQ+dEApP9RIXNV7tYBFV12xYRuLmxGOtH26MlORuB+EC4zWFJ6Hzk+HBPc1bY7I+Lkks8yu8qWQJ5US3iHPZVbmMiTJeeGdVGa/uMzW1xLinivTaEEWTxXDXbamcGG0UiQ2Q2GuLn3fS+fcd4Z0NqbnuMFXluExFyCVZ0zWon7MHbkQw3WACrtM4mwf18o8y1htoEt8jNXzdLlYFz3r9lfXNPbjzJsb0nMD1+5AkuLMfACnAh4/LWYRBqA8FjGtg2Qckx7MfeKB9AC9WN3DteoQFYDjGCu12XXpvKHjqc2T7/Yoho3hb6458atfnZh4rvAbxurTBx9669Dx0FjnvGhfRc7xnOXP3v148ZLNi8ZbrltcWhd2mDqWyecJnz69OXU8K+9++N3U8aH1K3JeK1iy/leo7Fe7Vgl7Sw7tRy8cvu2OMp2zIs42dGrn6x85eXPj6s6Y3RNJtAyh3Eg0/PjbzNemh45f1duyQsSsJPozunGleH0ZxDwIjLYUnv8tSnGV6ZwgkQE73oabX5mStQuwL62jdEQrT+uo6ouGhNk0K2RYicWsN7kryBDp80ZZNTLbEGzmIKIEebMHJw6cOQC/DyDLxk3bUHXv3a/8RfjjER4tQp5/PL0CVe98U3hNuF8Y/s+5PBH9esn+/UuGDxxAP7l+0ybhwy8fQZa/vnqk95MVT/5T+C/h8TO/Rd9Aa1HZGzuumlPbhmanoK2ZGk5+CsN8TaaSg+eNi0EY14sWahRH1Yw0Xw9feyPAOs0XXB6SxIwgzG9PD8j8TfFyBx6Q0XLzaK7pJX4l+W9uzUuwcbp5XpMheLoFv3Ir6dOrVq6BzdXi66j4Oia+juPXaTh6ZXqGW53gRiGJTnDjiWm4AN7VnCDqVU1jzS3zVq5aPTq+JnTlH/qiA+K8Tb2R0dfn6POKSyKVHUMjm7GXbGT4/IWYWGy2podli2sgVzC69SWxnmvnCjJLmmZY2Dju3IjcMVpBiqm5OBND+GPxmOgzsMQjmhQk53igNmZxkHKZuAk46pBAsoeHcEgMrlnuFEXNzK3voconR8bWbL3jj4cWSG99Tzj/VFXz7qnbP7gN/dPiDAebCxKO0K4t+TaqsiWQt71lmac74vecGPnDXUUN6pi/nHWXGoP7tmiV1rKuZK+2om1xg8lJ1qx/ZOWFLZbsJyxu3dHb95Rw/ve3oVz24Ed33Ls/HHgSJX53MKcH3frBpTODbWpVtGeIzqVCwZK2Kr9KYTcErPHnhnqGNe7VjlUTPqMiVl2jskhiFZ5Kr0PHSLTWYG1h8rbdq6tusl2F5cPEeuLOjP0ZxSl8wMcekX1AVjKYDnIb5lSevZdJ5RI8rJviVqcwsViYRviNgJRjSxj9WWfA2DpYN4J1uprhOhPcQv0ZmzWY6BErYa1OsU/H1TH1StobtIU7F46subZ+aQskBXERIDOBDzcw3KzFPNuziMZjcYNXDqoViyum2T5LphgTpQN+t0suQ5m62ezbslT8zFOvoV1fm7rvgG4g0D//8CN/e+TbpzjkO7X/h+0tTflqrYLU3vBzM6lRyxJjj2/b0tW1bWtvrknlYRc/emD/+e8I7wlfffdXZHt9zQK/xVJduaAk15qFoBHhn9/7U0VkVHVLXo2z5sZj/3rvq9MNYx+cXL6UNhiCijL0pXkSCyNLHL/nsWN9/R0mR8AT/dJ9ryHlqfve/plw75pN66x2f9fdt7h8V/WPFxNfydQu3an00ib2+4ABtqWVNywqTy/Otw6BltLDdGFMHAFo0zN2afjALEYsGkPWDpzFtlAMYtP1bQswRWnWn3EXOxtaMMtX4LyuCRTptsHKwgRfrwYu4ywQT2xjTtMR/bUHbhAL6tEbMqohsMvWIUaOnc4f8MexiszghEatREe606NPYktMLrPoLTgbDJBUPIsgbEOFba/cc44NhUM3IQWAzaplMhuZ2Fyx8AQ7ghpljoRKIiElUqmEhPyujMrNUe8Zu8tZfPAZudRc9afNX9vzJfY6CZpLK2Q7Yud/LBwXfv/apNe3GjUeVjtkKMSQJsvC+j0/SqqRtNFSUc6WFLly5XJ37t9ufmhlr9T4vbtGVgrvPvjOPQden0QG1B/P6re7iGKihphHDBEriScucyc+1MGKrN8nPkwGSusPc0tT3MrZwjPEwhbQ4SpRhx4R+z1plh9McQGc+tUCtaF5FvaA4zbiPcMprpXmuy/XaJanuOVhfjUuIuBBHHuCbwzCMpHgl7fCsh8/mrAUUNbjr20cXo7V26KB/YsTX/jMjdif9eJOpV4sP1dk5uFnDwVJ3MS8HHrnHAqj2belj2Wp8pCRQXdpmH0jOYbhPcbJocHJycEhNGoyoG9pDLePqmnN6tvNh14+BL+kLteILuiM902orDkTX7KeePPEiTezimdJDcNoupcdUiD5HUtJ9pnJyWcmZ2RavUEzOH5CqTwxTtIrDx1aueLQoZkandGkXbHl8RyEch7fQp6Fa21YfyKbs0SIFmKQ+HpGc4XAasOY+zaEcaGyPMz39GWeBByag5VA/7lkijeVgpKT6a7BvBREYDENSyunG5fC+cWgnArcx3Pj/CDJnLG6CssNWBWt80AVi0BFBgiIp13ueTjL5hoYzpTgEvppurMbu1w5c6YktGhg8IueywRnE5/EDFGgAItDIhYvvSaxuGIRK50OMn0CiSJMmm5G083kaPbI1Qdvv3zvih37zSW14UK55CQpiXSuHq34yStfDd047+wHj+XFVzXUrYjaJrc2rIrnkX/4dGJpwOfx5xYkdxVfyELEbW//c8Lypbul+vxKv8VRs6o+qH/rN1RRf6Tq819WbVieSCzfULXr2djwuLAYvbTriEL2d4mkrnzx1TVNgzgp5SS6Zn0KWGQERzI7KyYj6WTZKLJHBqRuYnHyZmdnh6XyxWQYJya8AVeJGes1ZxSk4hN70tlllkj+m6RnPhb/msnXZ0L4L6shfX03qYqQkvmXqA3k3gi5fR1xVb+knOgh1hG3EF8llme+xWCKOxnG9K41TYQfAmx4k1vCcjenuFvZ6ZvrcYZ5M37i7GGwnJvrwUZuARs5OQg5itVmXHlXmktxLly8OV1QXbr7iwre6WmXSAGeFcAPMhaIc8ZyPERAOZE4Tp8kA5DOi0As9WAoBviWWth0cDXgEXw/3o0y0/cFmGahMMIHPIDjiJKZZZDSiPP7qI5Mj+17C7xii2QuAJCRHLVTps6RkyTar1KpaZXWIKeEb0kolYaW69R+6jAlU8opCiXtXpnabJeRRmO+BdmF10idTSHtU3kQIL1Orld5pZRep7Y5dEj4XKrWoM+ZUj2JNlfKJVI5+U2VQ6/QqVTACcifGa2kgvqBrNioddLUVyQSpcMqEY5SlFLqNGTNjzwQ05sQSaFFUpnSYdFYaa2EfBQhCC5ys5u06/U6CDRCr52UFXkoUqVLqg2yrXKjWvEZ49UvgBvLqUX7pIxTIdOoSOF9mTFANueTG+w2nctA/ZTUMEgqz1EqKFJ4rvBHQZtEOKfyaVTUb5VKu9qQp9iBkOGqPMoLWVQvxJTMfMCCOaOYZjBtJ5upS/hhI5TCQNXGcqF0mxy4Wh+YjpkRI8K1snLQmbkgHgW4DgCDLohKZXIwfwALoFCMA4kjVBCfEdZ3BW544edbSFNBDD/5mu0hVVRb45PIaz8cGHO6cgKoUBibrCIPoQpSTqsrm7YPsPc8e+ITNEBu6/fqmuuHfrmycoPVxqDI9rhLFRAi2bPJ7W2GyrD03ohWplJ5tOsfmwoEhX8tkSgsDrdGwiwVBl2oamc//71kpOTi93/nDFrYSqMnN0dmUSpkT23M08Obvp6FIS6CJZqJhURbxvtAak1pv+uf0w7pSeeZi0BqPfiRF5s7EBHZEME3+WDboS9NdPV9kZ+FyCQVx26hRQaxsRsPSQJaSm5IkpDqJykHciKgqcgh1YltjIAsKzT+5iQpJbVlvfesXP6Ev2DZ+CujSPelE0g3StGda1/du+WFiW6tX25fNn5yQcXG4f66sEb9y88J4R/o1ZXHuiHXlUhPji/bl1U7ccz8UGbq6D949LujVcv1zOqZmRvX7di5ThO6556fLFv48qmDfurvErVWVV8dTlrlKo1M/rSwYvSlYzcPN9G685/dPbO6EkQoz3oWJQZ8dJSYIHYTf86w0hKxzhIL404SsJhNEfzU0RqWa59lOBAAm1nx+Y/Lkjalh1jjLJ5jHYaNFSluRdqM0+Os+AGR9SlufTrCVrLcdSnuOpq//nJUxWNtYfykCD9sF8Nmn1i1WcFMe7v7ccD063lfp/hsINcuPq3UmuDWM9MlyWb88EYFbrbUg2JjJQCoBn1gy1b89jhz2pq7cxcOy+3L8GBia2f/F0XcdA0UP+2Bq9dMekeESXfrGfEFIglG3ExXWCc+yp+hu04EphHHcdgs9hxduHwqBui5l84e0aruq4ZfVOKylMLyfE1hUXXI7Lr0LuWiDK6m0iG1yqCh8+lVDQ3NDStpp05rVGoGSppcBnKVy2xxuSxmF/qTu8QFG8iUvliW3x0US6Uvi9XX3WaX8HP8SC4Kzy5dZvK2UaVzce9y52ZDiUZh2W80TtoUmlLTJufSwS7LTfARIaerxI0/aGbHlYtlx0IrkU8UgR1tJF4jpilsQZCGrmO50jBXE8F17obU6dxoqUK0EDdkqxFOneLUNJAxxG0SHyK68uhAepIxeLlU5MMdTZZrBpNLl8blKX4i82zBtCHXhi3DwfBmE9hAGXDk6YA7iu2h2SemO9xK5tnKxtqlnetEry8NgA3k2+Jr01NFZx2+ysb5Q0uxedgb4A3FCd6dKz5o1Zu41nNAxGX9UnhYsEIfYfUmI2RCpJ4Wny1NGwaKO8h4+jH39MOkZieCZBdzM4BohxI/riCTQ/qUNodMDWttX3VVX19VdfDHC97/zrkPP37mO+//fO/C/u0kipaylQvR36vVxdvKb6XQyMDadTrtN/cmt9lsIZmlt6S8i5IUdMgrjOWWImOeWo6oonBHocMZbTtWcBFfP/OszyMT3d0T3TOryWUzX0PffAsphU/eeFX4COWgNcK7Dzy8vfOeUGQmeUZh9UuU6zyNee7vrlq828MwT8qNnnJnAeuX2FR2vSsv4A/bYkORoE6pJB301bXmRqKbWHS5PoanuWdHB2rCuA7Rnk5yezDr5kvTga0XVFoKGeoZxlnTnfkfN/hABJeVmjDHSySvOd2On65xUKKIHSjOikNyANJ+DNxUwC+WZ3EqWiAO0QW0OOBlgfSf80KLKj1lrR2F7Kl5sWUDoeL2plJXe0jh7awtQyhQ2mTSeJcvrctL3HKd1f5S7frvxMm1zYfCoXJF3d2hkmjW9Db9tw9f72Nr2oDSNHncyN1UXbbmToqubJ1sq9nclNQpIm0uNZIFSueTaNuKP0kBuI60UR3RyJH/B0j6lSkAeNpjYGRgYGBkcPy2TnR/PL/NVwZ5zgSgCMPZZya+yDRnAlicg4EJxAMARvYKJwAAeNpjYGRg4Ez4fwFEMjCASUYGVCACAFS8AyEAAHjaYy5gCOBMYGBAxiwbUGlmBQYGpggGBsYJUKwDxA8YGBhaITRY7gtELYmAkWQdDACXlwpuAAAAeNpjYGDQIQKaMHxgnMU0g+kVsw/zDZY61mNsAexW7G0c2ziZOHu4MrhecKtxH+GR4gnjdeB9xa/Fv0LAQuCWYIvQJOEAER6RIpE/YjxiH8RLxE9ITJGUkoqStpLhk3knu0tORt5C/o5Cg+IipVXKXgAEjx9oAAAAAAEAAABFAOcADAAAAAAAAgABAAIAFgAAAQABKwAAAAB42q1S20oCURRdM1okRUGGz0P4FDSMSqT5FEEXC5MspUcdb4OXkZnJyR/pqU+IPqAvqJfoC/qUaJ3jwUSECPJw9l5n77XX2bOPADbwAg3iF8cmbQRaNEb/yNMEa9jGs8I61vGhcATH+FQ4irSWVHgJ91pF4WVY2rvCK0hoXwrHkNC3FF5FUt9ReI24qHCc2FP4lfwHhd9g6U9hGJrt3njYcWx34Ju228chelwGt4s2t09cwwAN+gAecQNN9Ok9dFXWY0RkO9IPeXZpm/QBxoy4aM3kBduXeZsxByNVPa8t6kLeLHR8mJzeCS5wixJOcYYjXKKIMlll8mzq1NjzFdlt3BEJjRSrLK4U8rjBOaqsyC9UmdXYnVP5/VZjrqKienbIGTA720dJVk9OP9EOmQH1BH80rTCxT5uXE+lSU3BajPaoXEeaaE/uLDI85f78ZQX5sgYn4/JWEXF4z+JoKJfJ6h7fdMiOHdWveBuB+v/GqbLLOr9URIPpNK7Zt/inFOgnU81Km8IBZ5CjtWgNTkLMNPMNRoqOmwB42m3Nx04DQRBF0b422OSck8k5TFf3OJAN7vkVQEKIDQs+jO8jjN+S2lypFue5iivv+8uZ+++Sc1SouioDDFKjzhDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62zQYJMtttlhlz32OeCQI4454ZQzzrkgw2MEIjlNWrTpcMkV19xwyx33dHngkV7t6fXz/dnXP95esizr9dvN/mq/D9WrpgY1qrnaVFtqW+2o3X6t6Dcvm7STtJO0k7STtJO0k7STtJO0k7STMi/Py/PyvDwvz8vz8rw8L8/LM3kmz+SZPJNn8kyeyTN5Ji/IC/KCvCAvyAvygrwgL8gL8qK8KC/Ki/KinCgnyolyopy8dIp2UfwARhSdNAAAuAH/hbABjQBLsAhQWLEBAY5ZsUYGK1ghsBBZS7AUUlghsIBZHbAGK1xYWbAUKwAAAAFRwIPNAAA=) format("woff");
+ font-weight: 400;
+ font-style: normal
+}
+
+:root {
+ --color-background: #474747;
+ --color-primary: #F9BE03;
+ --color-secondary: #CC7B19;
+ --color-secondary-hover: #E59029;
+ --color-background-mobile: #1f1f1f
+}
+
+@-webkit-keyframes fade {
+ 0% {
+ opacity: .1
+ }
+ 50% {
+ opacity: .2
+ }
+ 75% {
+ opacity: .3
+ }
+ 100% {
+ opacity: .4
+ }
+}
+
+@keyframes fade {
+ 0% {
+ opacity: .1
+ }
+ 50% {
+ opacity: .2
+ }
+ 75% {
+ opacity: .3
+ }
+ 100% {
+ opacity: .4
+ }
+}
+
+@-webkit-keyframes fadeIn {
+ 0% {
+ opacity: 0
+ }
+ 100% {
+ opacity: 1
+ }
+}
+
+@keyframes fadeIn {
+ 0% {
+ opacity: 0
+ }
+ 100% {
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes spin {
+ 0% {
+ -webkit-transform: rotate(0)
+ }
+ 100% {
+ -webkit-transform: rotate(360deg)
+ }
+}
+
+@keyframes spin {
+ 0% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0)
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg)
+ }
+}
+
+@keyframes cssAnimation {
+ to {
+ width: 0;
+ height: 0;
+ overflow: hidden
+ }
+}
+
+@-webkit-keyframes cssAnimation {
+ to {
+ width: 0;
+ height: 0;
+ visibility: hidden
+ }
+}
+
+@-webkit-keyframes loading {
+ 0% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0)
+ }
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+@keyframes loading {
+ 0% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0)
+ }
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+@media only screen and (max-width: 991px) and (min-width: 768px) {
+ body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a > span:before {
+ font-size: 18px
+ }
+
+ #main-nav + .col-sm-2 {
+ position: fixed;
+ width: 240px;
+ height: calc(100% - 120px);
+ left: 0;
+ top: 120px;
+ background: rgba(0, 0, 0, .15);
+ padding: 0 5px 20px 0;
+ overflow-y: auto
+ }
+
+ #main-nav + .col-sm-2:after {
+ width: 100%;
+ height: 60px;
+ background: rgba(0, 0, 0, .15);
+ display: block;
+ content: '';
+ position: fixed;
+ top: 60px;
+ left: 240px;
+ pointer-events: none
+ }
+}
+
+@media only screen and (max-height: 600px) {
+ body.login > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a {
+ padding: 0 !important;
+ height: 60px !important
+ }
+
+ body.login > div.container-fluid > div.row-fluid > div.col-sm-10 {
+ top: 60px !important
+ }
+
+ body.login .well {
+ padding: 0 60px !important
+ }
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a[href*=advanced_search] {
+ display: none
+}
+
+body.blur .row-fluid .col-sm-10 {
+ -webkit-animation: fadeIn 1s linear 1;
+ animation: fadeIn 1s linear 1
+}
+
+.col-sm-10 .book-meta > div.btn-toolbar:after {
+ content: '';
+ direction: block;
+ position: fixed;
+ top: 120px;
+ right: 0;
+ width: 300px;
+ height: 7px;
+ z-index: 999999999999999999999999999999999999999999999999999999
+}
+
+.plexBack.noBack > a {
+ color: hsla(0, 0%, 100%, .45);
+ pointer-events: none;
+ cursor: default
+}
+
+.root .plexBack > a {
+ color: hsla(0, 0%, 100%, .45) !important;
+ pointer-events: none
+}
+
+#scnd-nav > li.active a, .authorlist #nav_author a, .catlist #nav_cat a, .langlist #nav_lang a, .serieslist #nav_serie a {
+ color: var(--color-primary)
+}
+
+#scnd-nav > li.active:hover a, .authorlist #nav_author:hover a, .catlist #nav_cat:hover a, .langlist #nav_lang:hover a, .serieslist #nav_serie:hover a {
+ color: #fff;
+ -webkit-transition: all 0s;
+ -o-transition: all 0s;
+ transition: all 0s
+}
+
+.dropdown-menu > .active > a, .dropdown-menu > .active > a:focus {
+ color: var(--color-primary);
+ background-color: transparent
+}
+
+.navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover {
+ color: #fff;
+ background-color: hsla(0, 0%, 100%, .08)
+}
+
+.a-z #scnd-nav > li.dropdown > a, .newest #scnd-nav > li.dropdown > a, .oldest #scnd-nav > li.dropdown > a, .z-a #scnd-nav > li.dropdown > a {
+ color: var(--color-primary)
+}
+
+.a-z #scnd-nav > li.dropdown:hover > a, .newest #scnd-nav > li.dropdown:hover > a, .oldest #scnd-nav > li.dropdown:hover > a, .z-a #scnd-nav > li.dropdown:hover > a {
+ color: #fff !important;
+ -webkit-transition: all 0s;
+ -o-transition: all 0s;
+ transition: all 0s
+}
+
+.readbooks #scnd-nav > li.active a[href*=unreadbooks] {
+ color: hsla(0, 0%, 100%, .7)
+}
+
+.readbooks #scnd-nav > li.active a[href*=unreadbooks]:hover {
+ color: #fff
+}
+
+.unreadbooks #scnd-nav > li.active a[href*=readbooks] {
+ color: hsla(0, 0%, 100%, .7)
+}
+
+.unreadbooks #scnd-nav > li.active a[href*=readbooks]:hover {
+ color: #fff
+}
+
+.unreadbooks #scnd-nav > li.active a[href*=unreadbooks] {
+ color: var(--color-primary)
+}
+
+.shelforder #sortTrue > .list-group-item {
+ background: 0 0;
+ border-radius: 0;
+ border: none
+}
+
+.shelforder #sortTrue {
+ border-top: 2px solid rgba(0, 0, 0, .3);
+ border-bottom: 2px solid rgba(0, 0, 0, .3);
+ padding: 0
+}
+
+.shelforder #sortTrue > .list-group-item:nth-of-type(even) {
+ background: hsla(0, 0%, 100%, .02)
+}
+
+.shelforder > .container-fluid > .row-fluid > .col-sm-10 > .col-sm-6 {
+ margin-left: calc(20%);
+ width: calc(80% - 30px)
+}
+
+.shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2:before {
+ content: "Reorder Shelf";
+ width: calc(100vw - 240px);
+ height: 60px;
+ margin: 0;
+ padding-left: 25px;
+ color: hsla(0, 0%, 100%, .7);
+ font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 15px;
+ -webkit-font-smoothing: antialiased;
+ font-weight: 400;
+ -webkit-margin-before: 0;
+ -webkit-margin-after: 0;
+ position: fixed;
+ top: 60px;
+ left: 240px;
+ text-align: left
+}
+
+.shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2 {
+ font-size: 24px;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ color: #eee;
+ font-weight: 400;
+ line-height: 1;
+ margin: 0;
+ padding: 60px 15px 40px;
+ width: 100%;
+ height: auto;
+ top: auto;
+ left: auto;
+ position: relative;
+ border-bottom: 2px solid rgba(0, 0, 0, .3)
+}
+
+.shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2 + div {
+ margin-top: 90px;
+ font-size: 15px;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ line-height: 24px;
+ padding: 15px;
+ color: #eee;
+ text-transform: uppercase
+}
+
+.home-btn > a, body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a {
+ text-transform: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ -webkit-font-smoothing: antialiased
+}
+
+.shelforder #sortTrue > div {
+ padding: 0 15px;
+ margin: 0;
+ vertical-align: bottom;
+ overflow: hidden;
+ white-space: nowrap;
+ min-height: 50px;
+ line-height: 50px;
+ color: hsla(0, 0%, 100%, .6)
+}
+
+.shelforder #sortTrue > div:hover {
+ background-color: hsla(0, 0%, 100%, .06) !important;
+ cursor: move;
+ cursor: grab;
+ cursor: -webkit-grab;
+ color: #eee
+}
+
+.shelforder #sortTrue > div:active {
+ cursor: grabbing;
+ cursor: -webkit-grabbing
+}
+
+.shelforder #sortTrue > div:before {
+ content: "\EA53";
+ font-family: plex-icons-new;
+ margin-right: 30px;
+ margin-left: 15px;
+ vertical-align: bottom;
+ display: inline-block;
+ font-weight: 400;
+ font-size: 18px;
+ opacity: 0
+}
+
+.shelforder #sortTrue > div:hover:before {
+ opacity: 1;
+ -webkit-transition: all .2s;
+ -o-transition: all .2s;
+ transition: all .2s
+}
+
+.shelforder #ChangeOrder {
+ float: right;
+ margin: 30px 0 60px
+}
+
+.shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > a {
+ float: right;
+ background-color: hsla(0, 0%, 100%, .25);
+ color: #fff;
+ margin: 30px 10px 60px 0
+}
+
+.shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > a:hover {
+ background-color: hsla(0, 0%, 100%, .3)
+}
+
+body.shelforder > div.container-fluid > div.row-fluid > div.col-sm-10:before {
+ content: "\e155";
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1;
+ font-size: 6vw;
+ position: fixed;
+ left: 240px;
+ top: 180px;
+ width: calc(20% - 55px);
+ text-align: center
+}
+
+#have_read_form {
+ display: inline-block;
+ float: left
+}
+
+#have_read_form > label {
+ margin: 0;
+ top: 0;
+ height: 60px
+}
+
+#have_read_form > label > label {
+ position: relative;
+ width: 1px;
+ height: 1px;
+ top: 0
+}
+
+#have_read_form:hover label:before {
+ color: #fff !important
+}
+
+#have_read_form span, div[aria-label="Download, send to Kindle, reading"] > .btn-group:first-child > p:first-child, div[aria-label="Download, send to Kindle, reading"] > .btn-group:first-child > p:last-child {
+ display: none
+}
+
+#have_read_cb {
+ opacity: 0;
+ height: 60px;
+ width: 50px;
+ cursor: pointer;
+ margin: 0;
+ display: inline-block
+}
+
+#have_read_cb + label:before, #have_read_cb:checked + label:before {
+ font-family: 'Glyphicons Halflings';
+ font-size: 16px;
+ height: 40px;
+ width: 60px;
+ top: -48px;
+ left: 16px;
+ z-index: -999999999999999999999999999999999999999999999999999999;
+ font-style: normal;
+ font-weight: 400;
+ display: inline-block;
+ position: absolute;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale
+}
+
+#have_read_cb:checked + label:before {
+ content: "\e105";
+ color: var(--color-primary)
+}
+
+#have_read_cb + label:before {
+ content: "\e106";
+ color: hsla(0, 0%, 100%, .7)
+}
+
+#archived_form {
+ display: inline-block;
+ float: left
+}
+
+#archived_form > label {
+ margin: 0;
+ top: 0;
+ height: 60px
+}
+
+#archived_form > label > label {
+ position: relative;
+ width: 1px;
+ height: 1px;
+ top: 0
+}
+
+#archived_form:hover label:before {
+ color: #fff !important
+}
+
+#archived_form span, div[aria-label="Download, send to Kindle, reading"] > .btn-group:first-child > p:first-child, div[aria-label="Download, send to Kindle, reading"] > .btn-group:first-child > p:last-child {
+ display: none
+}
+
+#archived_cb {
+ opacity: 0;
+ height: 60px;
+ width: 50px;
+ cursor: pointer;
+ margin: 0;
+ display: inline-block;
+ margin-top: -4px;
+}
+
+#archived_cb + label:before, #archived_cb:checked + label:before {
+ font-family: 'Glyphicons Halflings';
+ font-size: 16px;
+ height: 40px;
+ width: 60px;
+ top: -48px;
+ left: 16px;
+ z-index: -999999999999999999999999999999999999999999999999999999;
+ font-style: normal;
+ font-weight: 400;
+ display: inline-block;
+ position: absolute;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale
+}
+
+#archived_cb:checked + label:before {
+ content: "\e020";
+ color: var(--color-primary)
+}
+
+#archived_cb + label:before {
+ content: "\e020";
+ color: hsla(0, 0%, 100%, .7)
+}
+
+div.btn-group[role=group][aria-label="Download, send to Kindle, reading"] > .downloadBtn {
+ border-left: 2px solid rgba(0, 0, 0, .15)
+}
+
+div[aria-label="Edit/Delete book"] > .btn {
+ width: 50px;
+ height: 60px;
+ margin: 0;
+ overflow: hidden;
+ display: inline-block;
+ padding: 0;
+ line-height: 1.71428571;
+ text-align: center;
+ vertical-align: middle;
+ cursor: pointer;
+ background: 0 0;
+ color: transparent
+}
+
+div[aria-label="Edit/Delete book"] > .btn > span {
+ visibility: visible;
+ position: relative;
+ display: inline-block;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ color: hsla(0, 0%, 100%, .7);
+ text-align: center;
+ white-space: nowrap;
+ cursor: pointer;
+ margin: auto
+}
+
+div[aria-label="Edit/Delete book"] > .btn > span:before {
+ content: "\EA5d";
+ font-family: plex-icons;
+ font-size: 20px;
+ padding: 16px 15px;
+ display: inline-block;
+ height: 60px
+}
+
+div[aria-label="Edit/Delete book"] > .btn > span:hover {
+ color: #fff
+}
+
+.download-text:not(#btnGroupDrop1) {
+ display: none !important
+}
+
+.advanced_search #scnd-nav > li > a[href*=advanced_search] {
+ color: var(--color-primary)
+}
+
+/* .book {
+ width: 225px;
+ max-width: 225px;
+ position: relative !important;
+ left: auto !important;
+ top: auto !important;
+ -webkit-transform: none !important;
+ -ms-transform: none !important;
+ transform: none !important;
+ min-width: 225px;
+ display: block
+} */
+
+#infscr-loading img, body > div.container-fluid > div > div.col-sm-10 > div.discover > div.isotope:after, body > div.container-fluid > div > div.col-sm-10 > div.discover > div.isotope:before {
+ display: none
+}
+
+#infscr-loading:before {
+ content: '';
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ border: 2px solid transparent;
+ border-radius: 50%;
+ border-top: 2px solid var(--color-secondary);
+ width: 24px;
+ height: 24px;
+ -webkit-animation: spin .5s linear infinite;
+ animation: spin .5s linear infinite;
+ display: block;
+ margin: 20px auto;
+ position: fixed;
+ top: calc(50% - 12px);
+ left: calc(50% - 12px);
+ z-index: 999999
+}
+
+#loader > center:after, .app-loading:before {
+ -webkit-animation: spin .5s linear infinite
+}
+
+a {
+ color: hsla(0, 0%, 100%, .45)
+}
+
+a:hover {
+ -webkit-transition: color .2s;
+ -o-transition: color .2s;
+ transition: color .2s;
+ color: #fff
+}
+
+#titlebar a {
+ color: #4f4f4f
+}
+
+#titlebar a:hover {
+ cursor: pointer
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a {
+ margin: 60px auto auto !important;
+ width: 240px;
+ height: 60px;
+ text-align: left;
+ color: var(--color-primary) !important;
+ font-size: 15px;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ font-stretch: normal;
+ -webkit-font-variant-ligatures: normal;
+ font-variant-ligatures: normal;
+ text-shadow: none;
+ -webkit-user-select: none;
+ user-select: none;
+ word-spacing: 0;
+ -webkit-writing-mode: horizontal-tb;
+ -ms-writing-mode: lr-tb;
+ writing-mode: horizontal-tb;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ background: rgba(0, 0, 0, .45);
+ padding: 0 20px
+}
+
+.home-btn, .home-btn > a {
+ -webkit-font-variant-ligatures: normal;
+ top: 0;
+ cursor: pointer;
+ display: block;
+ font-size: 20px;
+ height: 60px;
+ font-variant-ligatures: normal
+}
+
+.btn, .home-btn > a, .plexBack > a, input.pill + label {
+ -webkit-user-select: none
+}
+
+.form-control, .home-btn, .home-btn > a {
+ font-variant-east-asian: normal;
+ font-stretch: 100%
+}
+
+.home-btn > a, .plexBack > a {
+ -webkit-text-decoration-color: hsla(0, 0%, 100%, .7);
+ text-decoration-color: hsla(0, 0%, 100%, .7);
+ -webkit-text-decoration-line: none;
+ text-decoration-line: none;
+ -webkit-text-decoration-style: solid;
+ text-decoration-style: solid;
+ text-rendering: optimizeLegibility;
+ -webkit-writing-mode: horizontal-tb;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ speak: none;
+ text-shadow: none;
+ word-spacing: 0;
+ -ms-writing-mode: lr-tb;
+ writing-mode: horizontal-tb
+}
+
+.home-btn {
+ color: hsla(0, 0%, 100%, .7);
+ line-height: 34.29px;
+ margin: 0;
+ padding: 0;
+ position: absolute;
+ width: 40px;
+ left: 10px
+}
+
+.home-btn > a {
+ color: rgba(255, 255, 255, .7);
+ font-family: plex-icons-new;
+ line-height: 60px;
+ position: relative;
+ text-align: center;
+ -webkit-text-size-adjust: 100%;
+ -moz-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ text-size-adjust: 100%;
+ user-select: none;
+ vertical-align: middle;
+ width: 100%;
+ -webkit-box-direction: normal;
+ padding: 0 10px
+}
+
+.btn, input.pill + label {
+ -moz-user-select: none;
+ -ms-user-select: none
+}
+
+.home-btn > a:before {
+ content: "\EA30"
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > div.home-btn > a:hover:before {
+ color: #fff
+}
+
+.glyphicon-search:before {
+ content: "\EA4F";
+ font-family: plex-icons
+}
+
+#nav_about:after, .profileDrop > span:after, .profileDrop > span:before {
+ content: ''
+}
+
+.navbar-default {
+ background-color: rgba(0, 0, 0, .6) !important;
+ border: none;
+ position: fixed;
+ width: 100%;
+ height: 60px;
+ z-index: -9
+}
+
+body:not(.read-frame) {
+ background-image: url(images/caliblur/blur-noise.png), url(images/caliblur/blur-light.png) !important;
+ background-repeat: repeat, no-repeat !important;
+ background-attachment: fixed, fixed !important;
+ background-position: center center, center center !important;
+ background-size: auto, cover !important;
+ -webkit-background-size: auto, cover !important;
+ -moz-background-size: auto, cover !important;
+ -o-background-size: auto, cover !important;
+ line-height: 1.71428571;
+ background: url(images/caliblur/blur-noise.png), var(--color-background);
+ color: hsla(0, 0%, 100%, .45);
+ font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ font-weight: 400;
+ overflow: hidden;
+ margin: 0;
+ /* scroll bar fix for firefox */
+ scrollbar-color: hsla(0, 0%, 100%, .2) transparent;
+ scrollbar-width: thin;
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > form > div {
+ width: 360px
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > form > div > span.input-group-btn {
+ opacity: 0;
+ pointer-events: none;
+ z-index: 9999999999999999999999999999999999999999999999999999999999999999999999999999999999
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > div > span.input-group-btn {
+ opacity: 1;
+ pointer-events: auto
+}
+
+.profileDrop {
+ width: 60px;
+ height: 60px;
+ padding: 0 !important;
+ background: 0 0 !important
+}
+
+.profileDrop > span {
+ width: 30px;
+ height: 30px;
+ margin: 15px;
+ top: 0
+}
+
+.profileDrop > span:before {
+ display: inline-block;
+ overflow: hidden;
+ border-radius: 50%;
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K);
+ background-size: contain;
+ position: absolute;
+ width: 30px;
+ height: 30px
+}
+
+.profileDrop > span:after {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin: 15px 0 0 35px;
+ vertical-align: middle;
+ border-top: 5px dashed;
+ border-right: 4px solid transparent;
+ border-left: 4px solid transparent
+}
+
+.top_tasks {
+ float: left !important
+}
+
+.navbar {
+ z-index: 9 !important
+}
+
+.profileDropli > li > a > span.glyphicon {
+ display: none
+}
+
+.profileDropli > li > a > span.hidden-sm {
+ display: inline !important
+}
+
+#nav_about:after {
+ width: 100%;
+ height: 1px;
+ background-color: hsla(0, 0%, 78%, .15);
+ display: block;
+ margin: 5px 0
+}
+
+#btn-upload {
+ min-width: 1px;
+ min-height: 1px;
+ width: 50px;
+ height: 60px;
+ left: 0;
+ line-height: 1;
+ font-size: 1px
+}
+
+#btn-upload:hover {
+ cursor: pointer !important
+}
+
+.btn, .rating-input .glyphicon:hover {
+ cursor: pointer
+}
+
+#main-nav > li:nth-child(1) {
+ float: right;
+ margin-left: 10px
+}
+
+.glyphicon {
+ top: 0
+}
+
+#form-upload {
+ position: relative;
+ float: right;
+ width: 50px;
+ margin: 0;
+ padding: 0;
+ height: 60px
+}
+
+#form-upload .form-group .btn {
+ color: transparent;
+ background: 0 0;
+ border: 0;
+ text-transform: uppercase;
+ font-weight: 400;
+ margin: 0;
+ padding: 0;
+ height: 60px;
+ width: 50px
+}
+
+#form-upload:hover .form-group .btn:after, #form-upload:hover .form-group .btn:before {
+ color: #fff
+}
+
+#form-upload .form-group .btn:before {
+ content: "\e043";
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ color: hsla(0, 0%, 100%, .7);
+ font-size: 16px;
+ background: 0 0;
+ border-radius: 50%;
+ width: 20px;
+ height: 20px;
+ display: inline-block;
+ margin: 0;
+ padding: 23px 19px;
+ z-index: -9
+}
+
+#top_admin > span.hidden-sm, #top_tasks > span.hidden-sm {
+ display: none
+}
+
+#form-upload .form-group .btn:after {
+ content: "\EA13";
+ position: absolute;
+ font-family: plex-icons-new;
+ font-size: 8px;
+ background: #3c444a;
+ color: hsla(0, 0%, 100%, .7);
+ border-radius: 50%;
+ padding: .25px .25px 0 0;
+ z-index: 9;
+ left: 15px;
+ top: 32px;
+ width: 10px;
+ height: 10px;
+ line-height: 10px;
+ font-weight: 400;
+ text-align: center;
+ pointer-events: none
+}
+
+#top_admin, #top_tasks {
+ height: 60px;
+ width: 50px;
+ padding: 20px 15px
+}
+
+#top_tasks > .glyphicon-tasks::before {
+ content: "\EA2E";
+ text-transform: none;
+ font-weight: 400;
+ font-style: normal;
+ font-family: plex-icons-new;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ line-height: 1;
+ text-rendering: optimizeLegibility;
+ speak: none;
+ font-size: 20px
+}
+
+.btn, .navigation .create-shelf a, .navigation .nav-head, .well > form, body > div.container-fluid > div > div.col-sm-10 > div.discover > h1:first-letter {
+ text-transform: uppercase
+}
+
+#top_tasks > .glyphicon-tasks {
+ background-color: hsla(0, 0%, 100%, .15);
+ border-radius: 50%
+}
+
+.form-control {
+ background-image: none;
+ display: block;
+ width: 100%;
+ height: 40px;
+ padding: 6px 12px;
+ font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 13px !important;
+ -webkit-font-variant-ligatures: normal;
+ font-variant-ligatures: normal;
+ line-height: 22.29px !important;
+ color: #eee;
+ vertical-align: middle;
+ background-color: hsla(0, 0%, 100%, .08);
+ border-radius: 4px;
+ border: 0 !important;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ -webkit-transition: background-color .2s;
+ -o-transition: background-color .2s;
+ transition: background-color .2s
+}
+
+.form-control:focus {
+ border-color: transparent;
+ outline: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ background: #eee !important;
+ color: #555
+}
+
+.form-control.tt-hint {
+ background: hsla(0, 0%, 100%, .25) !important
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > form > div > span > button:before {
+ content: "\EA32";
+ font-family: plex-icons-new;
+ color: #eee;
+ background: #555;
+ font-size: 10px;
+ width: 25px;
+ height: 19px;
+ border-radius: 4px;
+ padding: 2px 5px;
+ position: absolute
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > form > div > span > button {
+ background-color: transparent;
+ color: transparent;
+ border: none;
+ height: 40px;
+ border-radius: 0 4px 4px 0
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > form:before {
+ content: "\EA4F";
+ display: block;
+ font-family: plex-icons;
+ position: absolute;
+ color: #eee;
+ font-weight: 400;
+ font-size: 14px;
+ top: 18px;
+ left: 122px
+}
+
+#query {
+ width: 360px !important;
+ padding-right: 50px;
+ padding-left: 46px
+}
+
+#query:focus {
+ background: #eee !important;
+ color: #555 !important
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > div > span.input-group-btn:before {
+ content: "\EA4F";
+ display: block;
+ font-family: plex-icons;
+ position: absolute;
+ left: -298px;
+ top: 8px;
+ width: 40px;
+ height: 40px;
+ color: #555;
+ font-weight: 400;
+ font-size: 14px
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > form > div > span.input-group-btn {
+ position: absolute;
+ left: 320px;
+ height: 40px;
+ width: 40px;
+ border-radius: 4px
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > form > div > span > button:hover {
+ color: #fff
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > form {
+ margin-left: -140px;
+ padding: 0;
+ margin-top: 10px;
+ margin-bottom: 10px
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > form > .form-group > input::-webkit-input-placeholder {
+ color: transparent
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > form > .form-group > input:-moz-placeholder {
+ color: transparent
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > form > .form-group > input::-moz-placeholder {
+ color: transparent
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > form > .form-group > input:-ms-input-placeholder {
+ color: transparent
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > form > .form-group > input {
+ border-radius: 4px;
+ height: 40px;
+ width: 360px;
+ padding: 4px
+}
+
+#main-nav {
+ margin-right: 15px
+}
+
+#main-nav > li {
+ float: right
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul, body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li {
+ height: 60px
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a {
+ height: 60px;
+ padding: 20px 10px;
+ color: hsla(0, 0%, 100%, .7)
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > #top_admin > .glyphicon-dashboard::before {
+ content: "\EA31";
+ font-family: plex-icons-new;
+ font-size: 20px
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > #top_admin > span:last-of-type {
+ vertical-align: top
+}
+
+.badge, .btn {
+ vertical-align: middle
+}
+
+.author > a:hover {
+ color: #fff !important
+}
+
+.row {
+ margin: 0
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div > form > h2 {
+ font-size: 15px;
+ color: var(--color-primary);
+ border-top: 1px solid rgba(0, 0, 0, .3);
+ padding-top: 60px;
+ margin-top: 50px;
+ margin-bottom: 30px
+}
+
+.btn, .form-group > label {
+ font-size: 14px;
+ font-weight: 400
+}
+
+.navigation .nav-head:nth-child(1n+2) {
+ border-top: none;
+ padding-top: 0;
+ width: 200px
+}
+
+.btn-default {
+ border-color: var(--color-secondary);
+ color: #fff;
+ background-color: var(--color-secondary);
+ -webkit-transition: background-color .1s;
+ -o-transition: background-color .1s;
+ transition: background-color .1s
+}
+
+.btn-default:hover {
+ border-color: var(--color-secondary-hover);
+ color: #fff;
+ background-color: var(--color-secondary-hover)
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div > form > a {
+ background-color: hsla(0, 0%, 100%, .25);
+ color: #fff
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div > form > a:hover {
+ background-color: hsla(0, 0%, 100%, .3);
+ color: #fff
+}
+
+.btn {
+ display: inline-block;
+ padding: 6px 16px;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ border: 0;
+ margin-bottom: 0;
+ line-height: 1.71428571;
+ text-align: center;
+ border-radius: 3px;
+ white-space: nowrap;
+ -o-user-select: none;
+ user-select: none
+}
+
+.navigation li, .navigation li:not(ul>li) {
+ border-radius: 0 4px 4px 0
+}
+
+.btn-primary {
+ color: #fff;
+ background-color: hsla(0, 0%, 100%, .25);
+ border-color: hsla(0, 0%, 100%, .25)
+}
+
+.btn-primary:hover {
+ border-color: hsla(0, 0%, 100%, .3)
+}
+
+.btn-default.active, .btn-default.focus, .btn-default:active, .btn-default:focus, .open > .dropdown-toggle.btn-default {
+ border-color: var(--color-secondary-hover);
+ color: #fff;
+ background-color: var(--color-secondary-hover)
+}
+
+.form-group > label {
+ color: #eee;
+ font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif
+}
+
+.login .form-group > label {
+ font-weight: 400;
+ color: hsla(0, 0%, 100%, .45);
+ font-family: Open Sans bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ font-size: 13px
+}
+
+.navbar > .container-fluid {
+ margin: 0;
+ padding: 0;
+ height: 60px
+}
+
+.navigation .nav-head {
+ margin: 0;
+ color: hsla(0, 0%, 100%, .3);
+ font-size: 12px;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ line-height: 45px;
+ padding-left: 25px
+}
+
+.navigation li a {
+ color: hsla(0, 0%, 100%, .7);
+ text-decoration: none;
+ padding: 4px 25px;
+ font-size: 13px;
+ height: 30px;
+ line-height: 1.71428571;
+ width: 100%;
+ white-space: nowrap;
+ overflow: hidden
+}
+
+.navigation li {
+ min-height: 30px;
+ max-width: 265px;
+ overflow: visible
+}
+
+.navigation li:hover {
+ background-color: hsla(0, 0%, 100%, .08)
+}
+
+.navigation .create-shelf a, .navigation li.nav-head:hover {
+ background-color: transparent
+}
+
+.navigation li a:hover {
+ background: 0 0;
+ color: #fff
+}
+
+#nav_hot .glyphicon-fire::before {
+ content: "\1F525";
+ font-family: glyphicons regular
+}
+
+.glyphicon-star:before {
+ content: "\EA10";
+ font-family: plex-icons-new
+}
+
+#nav_rand .glyphicon-random::before {
+ content: "\EA44";
+ font-family: plex-icons-new
+}
+
+.glyphicon-list::before {
+ content: "\EA4D";
+ font-family: plex-icons-new
+}
+
+#nav_about .glyphicon-info-sign::before {
+ content: "\EA26";
+ font-family: plex-icons-new
+}
+
+#nav_cat .glyphicon-inbox::before, .glyphicon-tags::before {
+ content: "\E067";
+ font-family: Glyphicons Regular;
+ margin-left: 2px
+}
+
+.navigation #nav_cat a span {
+ margin-right: 8px
+}
+
+.navigation .create-shelf a {
+ width: 165px;
+ color: hsla(0, 0%, 100%, .7) !important;
+ padding: 5px 7px 2px;
+ font-size: 12px;
+ line-height: 1;
+ border-radius: 3px;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ border: 0;
+ -webkit-transition: background-color .1s;
+ -o-transition: background-color .1s;
+ transition: background-color .1s;
+ font-weight: 400;
+ white-space: nowrap;
+ margin: auto;
+ max-height: 22px;
+ -o-text-overflow: initial;
+ text-overflow: initial
+}
+
+.navigation .create-shelf a:hover {
+ color: #fff !important;
+ background: 0 0 !important;
+ border-radius: 0
+}
+
+#scnd-nav .dropdown-menu > li > a:hover {
+ color: #fff;
+ background: 0 0
+}
+
+#scnd-nav .dropdown-menu {
+ left: 12px !important;
+ margin: 0
+}
+
+.navigation .create-shelf a:before {
+ content: "\EA13";
+ font-family: plex-icons-new;
+ font-size: 100%;
+ padding-right: 10px;
+ vertical-align: middle
+}
+
+.container-fluid .book .meta .author, .container-fluid .book .meta .author > a, .container-fluid .book .meta .title {
+ font-weight: 400;
+ font-size: 13px;
+ -webkit-font-smoothing: antialiased;
+ line-height: 20px;
+ font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif
+}
+
+.navigation .create-shelf {
+ width: 25px;
+ margin: 10px -15px 0 0;
+ min-height: auto;
+ /*float: right*/
+}
+
+.navigation .create-shelf:hover {
+ background: 0 0
+}
+
+.container-fluid .book .meta .title {
+ color: #fff
+}
+
+.container-fluid .book .meta .author, .container-fluid .book .meta .author > a {
+ color: hsla(0, 0%, 100%, .45)
+}
+
+.container-fluid .book .cover img {
+ border: none;
+ -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, .35);
+ box-shadow: 0 0 2px rgba(0, 0, 0, .35);
+ position: relative;
+ z-index: -9;
+ width: 150px !important;
+}
+
+#books > .cover > a, #books_rand > .cover > a, .book.isotope-item > .cover > a, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a {
+ display: inline-block;
+ width: auto;
+ height: 100%
+}
+
+#books > .cover > a:before, #books_rand > .cover > a:before, .book.isotope-item > .cover > a:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a:before {
+ content: "\e352";
+ font-family: Glyphicons Regular;
+ background: var(--color-secondary);
+ border-radius: 50%;
+ font-weight: 400;
+ font-size: 18px;
+ line-height: 50px;
+ width: 50px;
+ height: 50px;
+ padding-left: 16px;
+ right: 0;
+ margin: auto;
+ opacity: 0;
+ left: 0;
+ position: absolute;
+ top: 0;
+ display: inline-block;
+ color: #fff;
+ bottom: 0
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a:before {
+ z-index: 9;
+ zoom: .8
+}
+
+#books > .cover > a:hover:before, #books_rand > .cover > a:hover:before, .book.isotope-item > .cover > a:hover:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a:hover:before {
+ -o-transition: opacity .2s;
+ transition: opacity .2s;
+ -webkit-transition: opacity .2s;
+ opacity: 1
+}
+
+#books > .cover > a:hover, #books_rand > .cover > a:hover, .book.isotope-item > .cover > a:hover, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a:hover {
+ outline: solid var(--color-secondary);
+ font-size: 50px;
+ -o-transition: outline 0s;
+ transition: outline 0s;
+ -webkit-transition: outline 0s
+}
+
+#books > .cover > a:after, #books_rand > .cover > a:after, .book.isotope-item > .cover > a:after {
+ position: absolute;
+ content: '';
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ opacity: 0;
+ background: -webkit-radial-gradient(50% 50%, farthest-corner, rgba(50, 50, 50, .5) 50%, #323232 100%);
+ background: -o-radial-gradient(50% 50%, farthest-corner, rgba(50, 50, 50, .5) 50%, #323232 100%);
+ background: radial-gradient(farthest-corner at 50% 50%, rgba(50, 50, 50, .5) 50%, #323232 100%);
+ z-index: -9
+}
+
+body.me > div.container-fluid > div > div.col-sm-10 > div.discover {
+ left: 240px;
+ margin: 120px 0 0 20% !important;
+ padding: 30px 15px 15px !important;
+ width: calc(80% - 30px);
+ border-top: 2px solid rgba(0, 0, 0, .3)
+}
+
+body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #submit {
+ float: right;
+ margin-left: 0
+}
+
+body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 {
+ height: 200px;
+ padding: 0;
+ margin: 15px
+}
+
+.container-fluid .discover, .navbar {
+ margin-bottom: 0
+}
+
+body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a {
+ width: 100%
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a:after {
+ position: absolute;
+ content: '';
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ opacity: 0;
+ background: -webkit-radial-gradient(50% 50%, farthest-corner, rgba(50, 50, 50, .5) 50%, #323232 100%);
+ background: -o-radial-gradient(50% 50%, farthest-corner, rgba(50, 50, 50, .5) 50%, #323232 100%);
+ background: radial-gradient(farthest-corner at 50% 50%, rgba(50, 50, 50, .5) 50%, #323232 100%)
+}
+
+#books > .cover > a:hover:after, #books_rand > .cover > a:hover:after, .book.isotope-item > .cover > a:hover:after, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a:hover:after {
+ opacity: 1;
+ -o-transition: opacity .2s;
+ transition: opacity .2s;
+ -webkit-transition: opacity .2s
+}
+
+.container-fluid .book .cover {
+ width: auto;
+ display: inline-block
+}
+
+.navbar {
+ border: none
+}
+
+.navbar-collapse.collapse {
+ height: 60px !important;
+ padding-bottom: 0;
+ overflow: visible !important
+}
+
+.btn.active.focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn:active:focus, .btn:focus {
+ outline: 0;
+ outline-offset: 0
+}
+
+.badge {
+ display: inline-block;
+ min-width: 10px;
+ padding: 3px 7px;
+ font-size: 12px;
+ font-weight: 700;
+ line-height: 1;
+ color: #fff;
+ text-align: center;
+ white-space: nowrap;
+ background-color: rgba(0, 0, 0, .15);
+ border-radius: 3px
+}
+
+#bookDetailsModal, .pagination, body > .container-fluid {
+ min-width: 1px;
+ min-height: 1px
+}
+
+app-loading-container {
+ background: #3f4245
+}
+
+.app-loading > span {
+ display: none
+}
+
+.app-loading {
+ margin: auto;
+ color: #fff !important;
+ text-align: center;
+ font-size: 20px
+}
+
+.app-loading:before {
+ content: '';
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ border: 2px solid transparent;
+ border-radius: 50%;
+ border-top: 2px solid var(--color-secondary);
+ width: 24px;
+ height: 24px;
+ animation: spin .5s linear infinite;
+ display: block;
+ margin: 20px auto
+}
+
+.pace-progress, .random-books {
+ display: none
+}
+
+#main-nav + #scnd-nav::-webkit-scrollbar, #main-nav + .col-sm-2::-webkit-scrollbar, .navbar-collapse.collapse::-webkit-scrollbar, body > div.container-fluid > div.row-fluid > div.col-sm-2::-webkit-scrollbar, body > div.container-fluid > div > div.col-sm-10::-webkit-scrollbar {
+ width: 14px;
+ max-height: calc(100% - 60px)
+}
+
+#description::-webkit-scrollbar, #meta-info::-webkit-scrollbar, .book-meta::-webkit-scrollbar {
+ width: 14px
+}
+
+#main-nav + #scnd-nav::-webkit-scrollbar-track, #main-nav + .col-sm-2::-webkit-scrollbar-track, .navbar-collapse.collapse::-webkit-scrollbar-track, body > div.container-fluid > div.row-fluid > div.col-sm-2::-webkit-scrollbar-track, body > div.container-fluid > div > div.col-sm-10::-webkit-scrollbar-track {
+ background-color: transparent;
+ max-height: calc(100% - 60px)
+}
+
+#meta-info::-webkit-scrollbar-track {
+ background-color: #202020
+}
+
+#description::-webkit-scrollbar-track, .book-meta::-webkit-scrollbar-track {
+ background-color: transparent
+}
+
+#main-nav + #scnd-nav::-webkit-scrollbar-thumb, #main-nav + .col-sm-2::-webkit-scrollbar-thumb, .navbar-collapse.collapse::-webkit-scrollbar-thumb, body > div.container-fluid > div.row-fluid > div.col-sm-2::-webkit-scrollbar-thumb, body > div.container-fluid > div > div.col-sm-10::-webkit-scrollbar-thumb {
+ min-height: 110px;
+ border: 3px solid transparent;
+ border-radius: 8px;
+ background-color: hsla(0, 0%, 100%, .2);
+ background-clip: padding-box;
+ max-height: calc(100% - 60px)
+}
+
+#description::-webkit-scrollbar-thumb, #meta-info::-webkit-scrollbar-thumb, .book-meta::-webkit-scrollbar-thumb {
+ min-height: 50px;
+ border: 3px solid transparent;
+ border-radius: 8px;
+ background-color: hsla(0, 0%, 100%, .2);
+ background-clip: padding-box
+}
+
+#description::-webkit-scrollbar-thumb:hover, #main-nav + #scnd-nav::-webkit-scrollbar-thumb:hover, #main-nav + .col-sm-2::-webkit-scrollbar-thumb:hover, #meta-info::-webkit-scrollbar-thumb:hover, .book-meta::-webkit-scrollbar-thumb:hover, .navbar-collapse.collapse::-webkit-scrollbar-thumb:hover, body > div.container-fluid > div.row-fluid > div.col-sm-2::-webkit-scrollbar-thumb:hover, body > div.container-fluid > div > div.col-sm-10::-webkit-scrollbar-thumb:hover {
+ background-color: hsla(0, 0%, 100%, .3)
+}
+
+::-webkit-scrollbar-corner {
+ background: 0 0
+}
+
+.pace .pace-activity {
+ border: 2px solid transparent;
+ border-radius: 50%;
+ border-top: 2px solid var(--color-secondary);
+ width: 24px;
+ height: 24px;
+ right: auto;
+ left: 8px;
+ top: 17px
+}
+
+body > .container-fluid {
+ margin: 0;
+ padding: 0;
+ width: calc(100%);
+ height: calc(100% - 60px);
+ position: fixed;
+ top: 60px;
+ left: 0
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-2 {
+ position: absolute;
+ width: 240px;
+ height: calc(100% - 60px);
+ left: 0;
+ top: 60px;
+ background: rgba(0, 0, 0, .15);
+ /*padding: 0 5px 20px 0;*/
+ overflow-y: auto
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 {
+ width: calc(100vw - 237px);
+ height: calc(100% - 60px);
+ padding: 0;
+ position: absolute;
+ min-height: 1px;
+ min-width: 1px;
+ top: 60px;
+ right: 0;
+ overflow-y: auto !important
+}
+
+body.me > div.container-fluid > div.row-fluid > div.col-sm-10:before {
+ content: '';
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: 400;
+ font-size: 6vw;
+ position: fixed;
+ left: 240px;
+ top: 180px;
+ width: calc(20% - 55px);
+ text-align: center;
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K);
+ background-size: 6vw;
+ background-position-x: center;
+ height: 100%;
+ background-repeat: no-repeat
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.discover > div.isotope {
+ display: -ms-grid !important;
+ display: grid !important;
+ overflow: hidden !important;
+ height: auto !important;
+ width: 100%;
+ margin: 0;
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: start;
+ grid-gap: 10px 0;
+ grid-template-columns: repeat(auto-fit, minmax(175px, 1fr)) !important
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.discover {
+ height: auto;
+ width: calc(100vw - 257px);
+ margin: 40px 0 !important;
+ padding: 0 10px 0 40px !important
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.single {
+ height: auto;
+ width: calc(100vw - 254px);
+ margin: 0 !important;
+ padding: 60px 15px !important
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.discover {
+ margin-top: 0
+}
+
+.container-fluid .book .meta > p {
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ overflow: hidden
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > h2 {
+ color: #eee;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ line-height: 24px;
+ overflow: hidden;
+ min-width: 0;
+ width: 100%;
+ max-width: 100%;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ text-transform: uppercase;
+ font-weight: 400;
+ padding-left: 15px;
+ margin-bottom: 20px;
+ top: 0;
+ left: 0;
+ height: auto
+}
+
+body > div.container-fluid > div > div.col-sm-10 > h3:not(:first-of-type) {
+ color: #eee;
+ width: calc(100% - 30px);
+ max-width: 800px;
+ margin: 60px auto 10px;
+ text-align: left
+}
+
+body > div.container-fluid > div > div.col-sm-10 > p {
+ margin: auto auto 60px;
+ width: calc(100% - 30px);
+ max-width: 800px;
+ text-align: right
+}
+
+.book .book-meta > h2 > h2, .well > h2, body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover:only-of-type > h2, body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover > h1, body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover > h2, body > div.container-fluid > div > div.col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2, body > div.container-fluid > div > div.col-sm-10 > div:nth-of-type(2) > h2, body > div.container-fluid > div > div.col-sm-10 > h1, body > div.container-fluid > div > div.col-sm-10 > h3:first-of-type {
+ margin: 0;
+ -webkit-text-size-adjust: 100%;
+ -moz-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ text-size-adjust: 100%;
+ -webkit-box-direction: normal;
+ -webkit-font-smoothing: antialiased;
+ -webkit-tap-highlight-color: transparent;
+ -webkit-margin-before: 0;
+ -webkit-margin-after: 0
+}
+
+body > div.container-fluid > div > div.col-sm-10 > p > a {
+ color: var(--color-secondary)
+}
+
+body > div.container-fluid > div > div.col-sm-10 > p > a:hover {
+ color: #fff
+}
+
+.book .book-meta > h2 > h2, body > div.container-fluid > div > div.col-sm-10 > div:nth-of-type(2) > h2, body > div.container-fluid > div > div.col-sm-10 > h3:first-of-type {
+ height: 60px;
+ padding-left: 25px;
+ color: hsla(0, 0%, 100%, .7);
+ font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 15px;
+ line-height: 60px;
+ white-space: nowrap;
+ font-weight: 400;
+ position: fixed;
+ top: 60px;
+ left: 240px
+}
+
+body > div.container-fluid > div > div.col-sm-10 > h3:first-of-type {
+ content: "About";
+ width: calc(100vw - 240px);
+ text-align: left
+}
+
+.book .book-meta > h2 > h2 {
+ width: calc(100vw - 540px)
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div:nth-of-type(2) > h2 {
+ content: "Books";
+ width: calc(100vw - 240px)
+}
+
+.well > h2, body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover:only-of-type > h2 {
+ width: calc(100vw - 240px) !important;
+ height: 60px !important;
+ padding-left: 25px !important;
+ color: hsla(0, 0%, 100%, .7) !important;
+ font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif !important;
+ font-size: 15px !important;
+ line-height: 60px !important;
+ white-space: nowrap !important;
+ font-weight: 400 !important;
+ position: fixed !important;
+ top: 60px !important;
+ left: 240px !important;
+ -o-text-overflow: ellipsis !important;
+ text-overflow: ellipsis !important;
+ max-width: calc(100vw - 550px) !important;
+ overflow: hidden !important
+}
+
+@media only screen and (min-width: 768px) {
+ body > div.container-fluid > div.row-fluid > div.col-sm-2:after {
+ width: 100%;
+ height: 60px;
+ background: rgba(0, 0, 0, .15);
+ display: block;
+ content: '';
+ position: fixed;
+ top: 60px;
+ left: 240px
+ }
+}
+
+body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover > h1, body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover > h2, body > div.container-fluid > div > div.col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2, body > div.container-fluid > div > div.col-sm-10 > h1 {
+ width: calc(100vw - 240px);
+ height: 60px;
+ padding-left: 25px;
+ color: hsla(0, 0%, 100%, .7);
+ font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 15px;
+ line-height: 60px;
+ white-space: nowrap;
+ font-weight: 400;
+ position: fixed;
+ top: 60px;
+ left: 240px
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.discover > form > .btn.btn-default {
+ float: right;
+ margin: 0 0 0 10px
+}
+
+.pagination {
+ display: block !important;
+ position: fixed;
+ top: 60px;
+ right: 0;
+ overflow: visible;
+ height: 60px;
+ margin: 0;
+ line-height: 60px;
+ font-size: 15px;
+ z-index: 99999
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.pagination .page-next > a,
+body > div.container-fluid > div > div.col-sm-10 > div.pagination .page-previous > a
+{
+ top: 0;
+ font-family: plex-icons-new;
+ font-weight: 100;
+ -webkit-font-smoothing: antialiased;
+ line-height: 60px;
+ height: 60px;
+ font-style: normal;
+ -moz-osx-font-smoothing: grayscale;
+ overflow: hidden;
+}
+
+.pagination > a {
+ color: hsla(0, 0%, 100%, .7)
+}
+
+.pagination > a:hover {
+ color: #fff;
+ text-decoration: none
+}
+
+.pagination > .ellipsis {
+ color: hsla(0, 0%, 100%, .7)
+}
+
+.navbar-default .navbar-nav > li > a:focus, .navbar-default .navbar-nav > li > a:hover {
+ color: #fff !important
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-item:not(.page-next):not(.page-previous)
+{
+ display: none
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-next > a,
+body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-previous > a {
+ color: transparent;
+ background-color:transparent;
+ margin-left: 0;
+ width: 65px;
+ padding: 0;
+ font-size: 15px;
+ display: block !important;
+ border: none;
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-next > a:before,
+body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-previous > a:before {
+ visibility: visible;
+ color: hsla(0, 0%, 100%, .35);
+ height: 60px;
+ line-height: 60px;
+ border-left: 2px solid transparent;
+ font-size: 20px;
+ padding: 20px 25px;
+ margin-right: -27px;
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-next > a:before {
+ content: "\EA32";
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-previous > a:before {
+ content: "\EA33";
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-next > a:hover:before,
+body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-previous > a:hover:before {
+ color: #fff
+}
+
+.pagination > .ellipsis, .pagination > a:nth-last-of-type(2) {
+ display: none
+}
+
+body.authorlist > div.container-fluid > div > div.col-sm-10 > div.container > div.col-xs-12, body.catlist > div.container-fluid > div > div.col-sm-10 > div.container > div.col-xs-12, body.langlist > div.container-fluid > div > div.col-sm-10 > div.container > div.col-sm-6, body.serieslist > div.container-fluid > div > div.col-sm-10 > div.container > div.col-sm-6 {
+ width: 100%
+}
+
+body.serieslist > div.container-fluid > div > div.col-sm-10:before {
+ content: "\e044";
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1;
+ font-size: 6vw;
+ position: fixed;
+ left: 240px;
+ top: 240px;
+ width: calc(20% - 55px);
+ text-align: center
+}
+
+@media screen and (max-width: 992px) {
+ body.serieslist > div.container-fluid > div.row-fluid > div.col-sm-10:before {
+ top: 180px;
+ }
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.container {
+ width: calc(80% - 30px);
+ margin: 120px 0 30px 20%;
+ border-top: 2px solid rgba(0, 0, 0, .3);
+ border-bottom: 2px solid rgba(0, 0, 0, .3);
+ padding: 0;
+ max-width: calc(80% - 30px)
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.container > div {
+ padding: 0
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.container > div > .row {
+ padding: 4px 0
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.container > div > .row:nth-of-type(even) {
+ background: hsla(0, 0%, 100%, .02)
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.container > div > .row > .col-xs-6 {
+ width: calc(91.666% - 30px);
+ overflow: hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ color: hsla(0, 0%, 100%, .45);
+ padding-left: 60px
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.container > div > .row > .col-xs-6 > a {
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ -webkit-transition: all 0s;
+ -o-transition: all 0s;
+ transition: all 0s
+}
+
+
+body > div.container-fluid > div > div.col-sm-10 > div.discover > div.container {
+ width: calc(80% - 30px);
+ margin: 120px 0 30px 20%;
+ border-top: 2px solid rgba(0, 0, 0, .3);
+ border-bottom: 2px solid rgba(0, 0, 0, .3);
+ padding: 0;
+ max-width: calc(80% - 30px)
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.discover > div.container > div {
+ padding: 0
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.discover > div.container > div > .row {
+ padding: 4px 0
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.discover > div.container > div > .row:nth-of-type(even) {
+ background: hsla(0, 0%, 100%, .02)
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.discover > div.container > div > .row > .col-xs-6 {
+ width: calc(91.666% - 30px);
+ overflow: hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ color: hsla(0, 0%, 100%, .45);
+ padding-left: 60px
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.discover > div.container > div > .row > .col-xs-6 > a {
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ -webkit-transition: all 0s;
+ -o-transition: all 0s;
+ transition: all 0s
+}
+
+
+.book-meta > .bookinfo > .tags .btn-info, .well > form > .btn {
+ vertical-align: middle;
+ -o-transition: background-color .2s, color .2s
+}
+
+body.catlist > div.container-fluid > div.row-fluid > div.col-sm-10:before {
+ content: "\E067";
+ font-family: Glyphicons Regular;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1;
+ font-size: 6vw;
+ position: fixed;
+ left: 240px;
+ top: 240px;
+ width: calc(20% - 55px);
+ text-align: center
+}
+
+@media screen and (max-width: 992px) {
+ body.catlist > div.container-fluid > div.row-fluid > div.col-sm-10:before {
+ top: 180px;
+ }
+}
+
+
+body.authorlist > div.container-fluid > div.row-fluid > div.col-sm-10:before, body.langlist > div.container-fluid > div > div.col-sm-10:before {
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1;
+ font-size: 6vw;
+ left: 240px;
+ top: 180px;
+ width: calc(20% - 55px);
+ text-align: center;
+ position: fixed
+}
+
+body.authorlist > div.container-fluid > div.row-fluid > div.col-sm-10:before {
+ content: "\e008";
+ top: 240px;
+}
+
+@media screen and (max-width: 992px) {
+ body.authorlist > div.container-fluid > div.row-fluid > div.col-sm-10:before {
+ top: 180px;
+ }
+}
+
+body.langlist > div.container-fluid > div > div.col-sm-10:before {
+ content: "\e034"
+}
+
+body.authorlist > div.container-fluid > div > div.col-sm-10 > div.container:before, body.catlist > div.container-fluid > div > div.col-sm-10 > div.container:before, body.langlist > div.container-fluid > div > div.col-sm-10 > div.container:before, body.me > div.container-fluid > div > div.col-sm-10 > div.discover:before, body.serieslist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ top: 60px;
+ font-size: 24px;
+ color: #eee;
+ line-height: 1;
+ padding-left: 15px;
+ position: absolute;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ font-weight: 400
+}
+
+body.authorlist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ content: "Authors";
+ top: 115px;
+}
+
+@media screen and (max-width: 992px) {
+ body.authorlist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ top: 60px;
+ }
+}
+
+body.catlist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ content: "Categories";
+ top: 115px;
+}
+
+@media screen and (max-width: 992px) {
+ body.catlist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ top: 60px;
+ }
+}
+
+body.serieslist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ content: "Series";
+ top: 115px;
+}
+
+@media screen and (max-width: 992px) {
+ body.serieslist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ top: 60px;
+ }
+}
+
+body.ratingslist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ content: "File formats";
+ top: 115px;
+}
+
+@media screen and (max-width: 992px) {
+ body.ratingslist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ top: 60px;
+ }
+}
+
+body.formatslist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ content: "File formats";
+ top: 115px;
+}
+
+@media screen and (max-width: 992px) {
+ body.formatslist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ top: 60px;
+ }
+}
+
+body.langlist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ content: "Languages"
+}
+
+body.advsearch > div.container-fluid > div > div.col-sm-10 > div.col-md-10.col-lg-6 {
+ padding: 15px 10px 15px 40px;
+}
+
+@media screen and (max-width: 992px) {
+ body.advsearch > div.container-fluid > div > div.col-sm-10 > div.col-md-10.col-lg-6 {
+ padding-left: 20px;
+ }
+}
+
+body.me > div.container-fluid > div > div.col-sm-10 > div.discover:before {
+ content: "My Profile"
+}
+
+.well {
+ max-height: 520px;
+ height: auto;
+ background-color: transparent;
+ border: none;
+ border-radius: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ min-width: 600px;
+ max-width: 700px;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: 0 auto;
+ padding: 60px
+}
+
+.well > form {
+ background: rgba(0, 0, 0, .4);
+ color: hsla(0, 0%, 100%, .45);
+ padding: 60px;
+ margin-top: 60px
+}
+
+.checkbox {
+ text-transform: none
+}
+
+.well > form > .btn {
+ display: inline-block;
+ overflow: hidden;
+ border-radius: 4px;
+ color: #fff;
+ text-align: center;
+ text-transform: uppercase;
+ white-space: nowrap;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ -webkit-transition: background-color .2s, color .2s;
+ transition: background-color .2s, color .2s;
+ padding: 6px 30px 5px;
+ font-size: 15px;
+ font-weight: 400;
+ background-color: var(--color-secondary);
+ border: none;
+ width: 100%;
+ text-rendering: auto;
+ letter-spacing: normal;
+ word-spacing: normal;
+ text-indent: 0;
+ text-shadow: none;
+ margin-top: 20px
+}
+
+.well > form > .btn:hover {
+ background-color: var(--color-secondary-hover)
+}
+
+body > div.row-fluid {
+ margin-top: 0 !important
+}
+
+.alert {
+ position: fixed;
+ top: auto;
+ bottom: 20px;
+ left: 50%;
+ width: 50%;
+ margin: 0;
+ -webkit-transform: translate(-50%);
+ -ms-transform: translate(-50%);
+ transform: translate(-50%);
+ opacity: 1 !important;
+ right: 0;
+ border-radius: 10px;
+ background-color: #000;
+ color: #eee;
+ border: 0;
+ -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, .5);
+ box-shadow: 0 4px 12px rgba(0, 0, 0, .5);
+ -webkit-transition: all .5s;
+ -o-transition: all .5s;
+ transition: all .5s;
+ height: 34px;
+ line-height: 1.71428571 !important;
+ overflow: hidden;
+ white-space: nowrap;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ font-size: 14px;
+ padding: 5px 0;
+ z-index: 99999;
+ -webkit-animation: cssAnimation 0s ease-in 10s forwards;
+ animation: cssAnimation 0s ease-in 10s forwards;
+ -webkit-animation-fill-mode: forwards;
+ animation-fill-mode: forwards
+}
+
+.alert-danger {
+ background-color: rgba(255, 85, 51, .3);
+ color: #fff
+}
+
+.table > thead > tr > th {
+ border-bottom: 0
+}
+
+.table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, .table > thead > tr > th {
+ border-top: 1px solid rgba(0, 0, 0, .3);
+ background: rgba(0, 0, 0, .15)
+}
+
+#libs, #stats {
+ margin: auto;
+ width: calc(100% - 30px);
+ max-width: 800px;
+ color: hsla(0, 0%, 100%, .75);
+ border-bottom: 2px solid rgba(0, 0, 0, .3);
+ border-top: 2px solid rgba(0, 0, 0, .2)
+}
+
+#libs {
+ margin-bottom: 15px
+}
+
+#libs > tbody > tr > th, #libs > thead > tr > th:first-child, #stats > tbody > tr > th {
+ color: hsla(0, 0%, 100%, .45)
+}
+
+#books .cover img, #books_rand .cover img, .book .cover img {
+ width: auto
+}
+
+.container-fluid img {
+ display: block;
+ width: 100%;
+ height: auto;
+ max-width: 195px;
+ margin: auto
+}
+
+#bookDetailsModal .modal-footer, #bookDetailsModal .modal-header > .close, .modal-backdrop.in {
+ display: none
+}
+
+.container-fluid .single .cover img {
+ border: 0;
+ border-radius: 0;
+ -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, .35);
+ box-shadow: 0 0 2px rgba(0, 0, 0, .35);
+ background-color: rgba(0, 0, 0, .45)
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.col-sm-3.col-lg-3.col-xs-12, body > div.container-fluid > div > div.col-sm-10 > div > div > div.col-sm-3.col-lg-3 {
+ max-width: calc(25% - 75px);
+ position: fixed
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.col-sm-3.col-lg-3.col-xs-12 {
+ padding-top: 40px;
+ padding-bottom: 40px
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div > div > div.col-sm-9.col-lg-9.book-meta {
+ margin-left: calc(25%);
+ width: calc(75%)
+}
+
+.advanced_search #search > .row > .form-group.col-sm-6:first-of-type {
+ padding-left: 0
+}
+
+.advanced_search #search > .row > .form-group.col-sm-6:last-of-type {
+ padding-right: 0
+}
+
+.advanced_search .btn {
+ text-transform: none;
+ font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ font-weight: 400
+}
+
+label {
+ font-weight: 400
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.col-sm-8 {
+ margin-left: calc(20%);
+ width: calc(80% - 30px);
+ padding: 60px 0
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.col-sm-8 > form > div > span > input.form-control.typeahead.tt-hint {
+ background: hsla(0, 0%, 100%, .08) !important
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.col-sm-8 > form > div > span > input.form-control:focus {
+ background: #fff !important
+}
+
+.navigation li a .glyphicon-star {
+ color: hsla(0, 0%, 100%, .7)
+}
+
+.glyphicon-star, .navigation li a:hover .glyphicon-star {
+ color: #fff
+}
+
+.rating-input:hover {
+ cursor: default
+}
+
+.rating-input {
+ padding-left: 0
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.col-sm-8 > form > .btn.btn-default {
+ float: right;
+ margin: 0 0 0 10px;
+ text-transform: uppercase;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif
+}
+
+#get_meta {
+ float: left;
+ margin: 0
+}
+
+textarea {
+ resize: none;
+ resize: vertical
+}
+
+#metaModal {
+ top: 0;
+ overflow: hidden;
+ padding-top: 60px;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: rgba(0, 0, 0, .5)
+}
+
+#metaModal > .modal-dialog > .modal-content {
+ z-index: 9999999999999999999999;
+ max-height: calc(100% - 90px);
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ border-radius: 3px
+}
+
+#metaModal > .modal-dialog > .modal-content > .modal-header {
+ padding: 0;
+ background: #282828;
+ border-radius: 3px 3px 0 0
+}
+
+#metaModal > .modal-dialog > .modal-content > .modal-header > h4 {
+ border-bottom: 0;
+ background: #323232;
+ height: 65px;
+ padding: 15px 0 0 15px;
+ font-size: 20px;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ line-height: 1.71428571;
+ font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif;
+ font-weight: 400;
+ color: #eee;
+ border-radius: 3px 3px 0 0;
+ margin-bottom: 0
+}
+
+#metaModal > .modal-dialog > .modal-content > .modal-header > h4:before {
+ content: "\E025";
+ font: normal normal normal 16px/1 Glyphicons Halflings;
+ color: #999;
+ padding-right: 10px
+}
+
+#metaModal > .modal-dialog > .modal-content > .modal-header > #meta-search > .input-group > span > button, .dropdown-menu > li > a, .plexBack, .plexBack > a {
+ font-stretch: 100%;
+ font-variant-caps: normal;
+ font-variant-east-asian: normal;
+ font-variant-numeric: normal;
+ font-style: normal
+}
+
+#metaModal > .modal-dialog > .modal-content > .modal-header > .close {
+ color: #eee;
+ opacity: .2;
+ font-size: 20px;
+ text-shadow: none;
+ margin: 20px
+}
+
+#metaModal > .modal-dialog > .modal-content > .modal-header > .close:hover {
+ opacity: .5
+}
+
+#metaModal > .modal-dialog > .modal-content > .modal-header > #meta-search {
+ margin: 25px 0 0
+}
+
+#metaModal > .modal-dialog > .modal-content > .modal-header > #meta-search > .input-group > input {
+ width: calc(100% - 51px);
+ border-radius: 0;
+ background-color: hsla(0, 0%, 100%, .15)
+}
+
+#metaModal > .modal-dialog > .modal-content > .modal-header > #meta-search > .input-group {
+ max-width: 100%;
+ width: 100%
+}
+
+#metaModal > .modal-dialog > .modal-content > .modal-header > #meta-search > .input-group > span > button {
+ height: 40px;
+ width: 50px;
+ padding: 0;
+ font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 13px !important;
+ -webkit-font-variant-ligatures: normal;
+ font-variant-ligatures: normal;
+ font-weight: 400;
+ letter-spacing: normal;
+ line-height: 22.29px !important;
+ color: #eee;
+ vertical-align: middle;
+ background-color: hsla(0, 0%, 100%, .15);
+ border-radius: 0;
+ margin: 0 0 0 -1px
+}
+
+.dropdown-menu > li > a, .plexBack {
+ -webkit-font-variant-ligatures: normal;
+ font-variant-ligatures: normal
+}
+
+#metaModal > .modal-dialog > .modal-content > .modal-header > #meta-search > .input-group > span {
+ float: right;
+ text-align: right;
+ width: 50px;
+ margin: 0
+}
+
+#metaModal > .modal-dialog > .modal-content > .modal-header > div {
+ font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif;
+ font-size: 12px;
+ line-height: 1.71428571;
+ color: var(--color-primary);
+ font-weight: 100;
+ text-align: right;
+ position: absolute;
+ right: 0;
+ padding: 12.5px
+}
+
+#metaModal > .modal-dialog > .modal-content > .modal-body {
+ padding: 0
+}
+
+#metaModal > .modal-dialog > .modal-content > .modal-body > .text-center {
+ text-align: left;
+ margin-bottom: 0;
+ padding-top: 10px
+}
+
+#metaModal > .modal-dialog > .modal-content > .modal-body > #book-list {
+ margin-bottom: 0
+}
+
+input.pill:checked + label {
+ background-color: transparent;
+ border-color: transparent;
+ color: var(--color-secondary)
+}
+
+input.pill + label {
+ border: 0;
+ border-radius: 0;
+ color: hsla(0, 0%, 100%, .25);
+ cursor: pointer;
+ display: inline-block;
+ padding: 3px 15px;
+ user-select: none;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale
+}
+
+input.pill + label:hover {
+ color: var(--color-secondary-hover)
+}
+
+#meta-info {
+ max-height: calc(100vh - 357px);
+ overflow-y: scroll;
+ background: #282828 !important;
+ padding: 0;
+ margin: 0
+}
+
+#meta-info #book-list .media > .media-body {
+ font-family: "Open Sans Regular", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ line-height: 24px;
+ color: #999;
+ font-weight: 100;
+ padding-left: 15px
+}
+
+#meta-info #book-list .media > img {
+ padding: 0
+}
+
+#meta-info #book-list .media > .media-body > h4 > a {
+ color: #eee
+}
+
+#meta-info #book-list .media > .media-body > h4 > a:hover {
+ color: #fff
+}
+
+#meta-info #book-list {
+ width: 100%;
+ margin: 0
+}
+
+#meta-info #book-list .media:nth-of-type(odd) {
+ background: hsla(0, 0%, 100%, .02)
+}
+
+#meta-info #book-list .media {
+ margin-top: 0;
+ padding: 20px 15px 5px
+}
+
+#meta-info #book-list .media > .media-body > p > a {
+ color: var(--color-secondary);
+ padding-left: 10px
+}
+
+#meta-info #book-list .media > .media-body > p > a:hover {
+ color: #fff
+}
+
+#bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-header, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > #test:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 > div:nth-child(10) > label:before {
+ color: hsla(0, 0%, 100%, .7);
+ -webkit-text-size-adjust: 100%;
+ -moz-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ text-size-adjust: 100%;
+ white-space: nowrap;
+ -webkit-box-direction: normal;
+ -webkit-tap-highlight-color: transparent;
+ -webkit-font-smoothing: antialiased;
+ font-weight: 400
+}
+
+.modal-content {
+ position: relative;
+ background-color: #323232;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ border: 0;
+ border-radius: 0 0 3px 3px;
+ outline: 0;
+ -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+ box-shadow: 0 3px 9px rgba(0, 0, 0, .5)
+}
+
+.modal-footer {
+ padding: 15px;
+ text-align: right;
+ border-top: 0
+}
+
+.modal-header {
+ padding: 15px;
+ border-bottom: 0
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > #test:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 > div:nth-child(10) > label:before {
+ height: 60px;
+ padding-left: 25px;
+ background: 0 0;
+ font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 15px;
+ line-height: 60px;
+ top: 60px;
+ left: 240px;
+ position: fixed
+}
+
+#meta-info #book-list .media > img:hover {
+ cursor: pointer;
+ outline: solid var(--color-secondary);
+ -webkit-filter: brightness(90%);
+ filter: brightness(90%)
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 > div:nth-child(10) > label:before {
+ content: "Edit Metadata";
+ width: calc(100vw - 350px);
+ margin: 0;
+ -webkit-margin-before: 0;
+ -webkit-margin-after: 0;
+ pointer-events: none
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-xs-12 {
+ margin: 50px 0
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > #test:before {
+ content: "Advanced Search";
+ width: calc(100vw - 240px);
+ margin: 0;
+ -webkit-margin-before: 0;
+ -webkit-margin-after: 0
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > #test {
+ border-top: 2px solid rgba(0, 0, 0, .3);
+ margin-top: -50px;
+ padding-top: 50px
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg > label.btn {
+ margin: 2px 3px 0 0;
+ padding: 0 10px;
+ background: hsla(0, 0%, 100%, .25);
+ overflow: hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg > label.btn:hover {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg > label.btn-danger:hover {
+ background: #ce3d2a
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg > label.btn-danger.active {
+ background: #ac3323
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg > label.btn-danger.active:hover {
+ background: #ce3d2a
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg > label.btn-primary:hover {
+ background: var(--color-secondary-hover)
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg > label.btn-primary.active {
+ background: var(--color-secondary)
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg > label.btn-primary.active:hover {
+ background: var(--color-secondary-hover)
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > label {
+ margin-left: 0
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > label:first-of-type {
+ padding-top: 40px
+}
+
+body.advanced_search > div.container-fluid > div > div.col-sm-10 > div.col-sm-8:before {
+ content: "\EA4F";
+ font-family: plex-icons;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1;
+ font-size: 6vw;
+ position: fixed;
+ left: 240px;
+ top: 180px;
+ width: calc(20% - 55px);
+ text-align: center
+}
+
+a:focus {
+ outline: 0;
+ outline-offset: 0
+}
+
+#bookDetailsModal {
+ width: calc(100vw - 240px);
+ height: calc(100% - 60px);
+ padding: 0;
+ position: fixed;
+ top: 60px;
+ left: 240px;
+ background-image: url(images/caliblur/blur-noise.png), url(images/caliblur/blur-light.png);
+ background-repeat: repeat, no-repeat;
+ background-attachment: fixed, fixed;
+ background-position: center center, center center;
+ background-size: auto, cover !important;
+ -webkit-background-size: auto, cover;
+ -moz-background-size: auto, cover;
+ -o-background-size: auto, cover
+}
+
+#bookDetailsModal > .modal-dialog.modal-lg {
+ padding: 0;
+ margin: 0;
+ width: 100%;
+ height: 100%
+}
+
+#bookDetailsModal > .modal-dialog.modal-lg > .modal-content {
+ background-color: transparent;
+ border-radius: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none
+}
+
+#bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-header {
+ width: 100%;
+ height: 60px;
+ margin: 0;
+ padding: 0 0 0 25px;
+ background: rgba(0, 0, 0, .15);
+ font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 15px;
+ line-height: 60px;
+ -webkit-margin-before: 0;
+ -webkit-margin-after: 0;
+ position: fixed;
+ top: 0;
+ left: 0
+}
+
+#bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-header > h4 {
+ width: 100%;
+ max-width: calc(100% - 340px);
+ height: 60px;
+ line-height: 60px
+}
+
+#bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-body {
+ width: calc(100vw - 240px);
+ height: calc(100% - 120px);
+ position: fixed;
+ min-height: 1px;
+ min-width: 1px;
+ top: 60px;
+ left: 0;
+ padding: 0
+}
+
+#bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-body > .container-fluid {
+ padding: 0
+}
+
+#bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-body > div > div > div > div.col-sm-3.col-lg-3.col-xs-5 {
+ padding: 30px 15px 15px 30px;
+ height: 300px
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div > div > div.col-sm-3.col-lg-3.col-xs-5 {
+ padding: 15px;
+ height: 300px;
+ pointer-events: none
+}
+
+#bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-body > div > div > div > div.col-sm-3.col-lg-3.col-xs-5 > div.cover, body > div.container-fluid > div > div.col-sm-10 > div > div > div.col-sm-3.col-lg-3.col-xs-5 > div.cover {
+ margin: 0;
+ width: 100%;
+}
+
+#bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-body > div > div > div > div.col-sm-3.col-lg-3.col-xs-5 > div.cover > img, body > div.container-fluid > div > div.col-sm-10 > div > div > div.col-sm-3.col-lg-3.col-xs-5 > div.cover > img {
+ margin: 0 auto;
+ max-height: 300px;
+ max-width: 200px;
+ height: auto;
+ width: 100%
+}
+
+.book-meta > .bookinfo > .comments, .book-meta > .description {
+ margin-top: 60px;
+ font-size: 15px;
+ color: #eee
+}
+
+.book-meta .bookinfo p {
+ margin: 0
+}
+
+.book-meta > .bookinfo > .publishers {
+ margin-top: 24px
+}
+
+.book-meta > .bookinfo > .publishers > span:first-of-type, .book-meta > .bookinfo > .publishing-date > span:first-of-type {
+ color: hsla(0, 0%, 100%, .45);
+ text-transform: uppercase;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif
+}
+
+.book-meta > .bookinfo > .publishers > span:last-of-type, .book-meta > .bookinfo > .publishing-date > span:last-of-type {
+ font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ color: #fff;
+ font-size: 15px;
+ -webkit-font-smoothing: antialiased
+}
+
+.book-meta > .bookinfo > .publishers > span:last-of-type {
+ padding-left: 90px
+}
+
+.real_custom_columns > span:last-of-type {
+ padding-left: 90px
+}
+
+.book-meta > .bookinfo > .publishing-date > span:last-of-type {
+ padding-left: 90px
+}
+
+.book-meta > .bookinfo > .languages > span:first-of-type {
+ color: hsla(0, 0%, 100%, .45);
+ text-transform: uppercase;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif
+}
+
+.book-meta > .bookinfo > .languages > span:last-of-type {
+ font-size: 15px;
+ font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ color: #fff;
+ padding-left: 85px
+}
+
+.book-meta > .bookinfo > .tags .btn-info, .book-meta > h2, body.book .author {
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif
+}
+
+#bookDetailsModal .book-meta > h2 {
+ margin-top: 15px
+}
+
+.book-meta > h2 {
+ font-size: 24px;
+ color: #eee;
+ font-weight: 400;
+ line-height: 1;
+ margin: 0;
+ max-width: calc(100% - 100px);
+ padding: 15px 0
+}
+
+.book-meta > .author > a:first-of-type:before {
+ content: "Author — ";
+ color: hsla(0, 0%, 100%, .45);
+ position: absolute;
+ left: 15px;
+ pointer-events: none
+}
+
+.book-meta > .bookinfo > .rating {
+ float: right;
+ position: relative;
+ z-index: -1;
+ margin-top: -50px
+}
+
+.book-meta > .bookinfo > p + .rating {
+ margin-top: -25px
+}
+
+.book-meta > .bookinfo > .rating .glyphicon-star {
+ color: hsla(0, 0%, 100%, .25)
+}
+
+body.book .author {
+ font-size: 15px;
+ line-height: 30px;
+ margin-top: -5px;
+ max-width: calc(100% - 176px);
+ margin-left: 76px
+}
+
+.book-meta > p {
+ color: hsla(0, 0%, 100%, .45)
+}
+
+.book-meta > .bookinfo > p:first-of-type {
+ color: hsla(0, 0%, 100%, .45);
+ font-size: 15px;
+ margin-top: -10px;
+ max-width: calc(100% - 100px)
+}
+
+.bookinfo .rating .glyphicon-star.good {
+ color: hsla(0, 0%, 100%, .7)
+}
+
+.book-meta > .languages > p > .label-default {
+ background: 0 0;
+ color: hsla(0, 0%, 100%, .45);
+ padding: 0;
+ font-size: 14px
+}
+
+.book-meta > .bookinfo > .languages > span:first-letter {
+ text-transform: uppercase
+}
+
+.book-meta > .bookinfo > .hr {
+ margin: 24px -15px;
+ height: 2px;
+ background-color: rgba(0, 0, 0, .3)
+}
+
+.book-meta > .bookinfo > .identifiers > p > .btn-success, .book-meta > .bookinfo > .tags .btn-info {
+ overflow: hidden;
+ text-align: center;
+ white-space: nowrap;
+ margin: 2px 3px 0 0;
+ padding: 0 10px
+}
+
+.book-meta > .bookinfo > .tags .btn-info {
+ background-color: rgba(0, 0, 0, .15);
+ color: hsla(0, 0%, 100%, .7);
+ font-size: 13px;
+ display: inline-block;
+ border-radius: 4px;
+ -webkit-transition: background-color .2s, color .2s;
+ transition: background-color .2s, color .2s;
+ text-transform: none
+}
+
+.dropdown-menu, .tooltip.in {
+ -webkit-transition: opacity .15s ease-out, -webkit-transform .15s cubic-bezier(.6, .4, .2, 1.4)
+}
+
+.book-meta > .bookinfo > .tags .btn-info:hover {
+ color: #fff;
+ text-decoration: underline
+}
+
+.book-meta > .bookinfo > .identifiers, .book-meta > .bookinfo > .tags {
+ padding-left: 40px;
+ margin: 10px 0
+}
+
+.book-meta > .bookinfo > .tags a {
+ max-width: 100%;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis
+}
+
+.book-meta > .bookinfo > .identifiers .glyphicon-link, .book-meta > .bookinfo > .tags .glyphicon-tags {
+ margin-left: -40px;
+ margin-right: 17px;
+ color: hsla(0, 0%, 100%, .45);
+ width: 20px;
+ vertical-align: text-bottom
+}
+
+.book-meta > h3:first-of-type {
+ font-size: 14px;
+ font-weight: 400;
+ text-transform: uppercase;
+ border-top: 2px solid rgba(0, 0, 0, .3);
+ padding-top: 20px;
+ margin-top: 20px
+}
+
+.book-meta > div {
+ color: hsla(0, 0%, 100%, .65)
+}
+
+.more-stuff {
+ margin-top: 0;
+ padding-top: 0;
+ border-top: 0
+}
+
+.book-meta > .more-stuff > br {
+ display: none
+}
+
+.btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group {
+ margin-left: 0
+}
+
+div.btn-group[role=group][aria-label="Download, send to Kindle, reading"] {
+ white-space: nowrap;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex
+}
+
+div.btn-group[role=group][aria-label="Download, send to Kindle, reading"] > div.btn-group[role=group] > p {
+ display: none
+}
+
+#shelf-actions {
+ float: left
+}
+
+#add-to-shelf, #btnGroupDrop1, #read-in-browser, #sendbtn, .book-meta .btn-toolbar > .btn-group > .btn-group:nth-child(1) > a:first-of-type, .book-meta .btn-toolbar > .btn-group > .btn-warning, .btn-toolbar > .btn-group > #btnGroupDrop2, .btn-toolbar > .btn-group > .btn-group > #btnGroupDrop2 {
+ background: 0 0;
+ color: transparent;
+ width: 50px;
+ height: 60px;
+ margin: 0;
+ overflow: hidden;
+ padding: 0
+}
+
+#add-to-shelf > span.caret, #btnGroupDrop1 > span.caret, #read-in-browser > span.caret, .btn-toolbar > .btn-group > #btnGroupDrop2 > span.caret, .btn-toolbar > .btn-group > .btn-group > #btnGroupDrop2 > span.caret {
+ padding-bottom: 5px
+}
+
+#add-to-shelf > span, #btnGroupDrop1 > span, #read-in-browser > span, #sendbtn > span, .book-meta .btn-toolbar > .btn-group > .btn-group:nth-child(1) > a:first-of-type > span, .book-meta .btn-toolbar > .btn-group > .btn-warning > span, .btn-toolbar > .btn-group > #btnGroupDrop2 > span, .btn-toolbar > .btn-group > .btn-group > #btnGroupDrop2 > span {
+ color: hsla(0, 0%, 100%, .7)
+}
+
+#add-to-shelf:hover span, #btnGroupDrop1:hover > span, #read-in-browser:hover > span, #sendbtn:hover > span, .book-meta .btn-toolbar > .btn-group > .btn-group:nth-child(1) > a:first-of-type:hover > span, .book-meta .btn-toolbar > .btn-group > .btn-warning:hover > span, .btn-toolbar > .btn-group > #btnGroupDrop2:hover > span, .btn-toolbar > .btn-group > .btn-group > #btnGroupDrop2:hover > span {
+ color: #fff
+}
+
+#add-to-shelf > span.glyphicon.glyphicon-list:before {
+ content: "\EA59";
+ font-family: plex-icons;
+ font-size: 18px
+}
+
+#sendbtn > span, .book-meta .btn-toolbar > .btn-group > .btn-group:nth-child(1) > a:first-of-type > span, .book-meta .btn-toolbar > .btn-group > .btn-warning > span.glyphicon-edit {
+ font-size: 16px;
+ line-height: 54px;
+ width: 100%
+}
+
+#read-in-browser > span.glyphicon-eye-open:before, .btn-toolbar > .btn-group > .btn-group > #btnGroupDrop2 > span.glyphicon-eye-open:before {
+ content: "\e352";
+ font-family: Glyphicons Regular;
+ font-size: 18px;
+ padding-right: 5px
+}
+
+#read-in-browser > span.glyphicon-list:before, .btn-toolbar > .btn-group > #btnGroupDrop2 > span.glyphicon-list:before {
+ font-size: 18px
+}
+
+#btnGroupDrop1 > span.glyphicon-download:before {
+ font-size: 20px;
+ content: "\ea66";
+ font-family: plex-icons
+}
+
+.col-sm-10 .book-meta > div.btn-toolbar {
+ position: fixed;
+ top: 60px;
+ right: 0;
+ margin: 0;
+ width: calc(100vw - 240px);
+ height: 60px;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-between
+}
+
+#bookDetailsModal > div > div > div.modal-body > div > div > div > div.col-sm-9.col-lg-9.book-meta > div.btn-toolbar > div > div.btn-group.open > div.dropdown-backdrop, .dropdown-backdrop {
+ display: none
+}
+
+.book-meta .btn-toolbar > h2 {
+ height: 60px;
+ margin: 0;
+ padding-left: 25px;
+ color: hsla(0, 0%, 100%, .7);
+ font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 15px;
+ line-height: 60px;
+ white-space: nowrap;
+ font-weight: 400;
+ -webkit-box-ordinal-group: 0;
+ -ms-flex-order: -1;
+ order: -1;
+ overflow: hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ padding-right: 25px
+}
+
+.book-meta .btn-toolbar > .btn-group {
+ margin: 0;
+ -webkit-box-ordinal-group: 2;
+ -ms-flex-order: 1;
+ order: 1
+}
+
+.book-meta > div.btn-toolbar ul.dropdown-menu.offscreen {
+ position: fixed;
+ top: 120px;
+ right: 14px;
+ left: auto !important
+}
+
+.btn-primary.active, .btn-primary:active, .btn-primary:focus, .btn-primary:hover, .open .dropdown-toggle.btn-primary {
+ background-color: hsla(0, 0%, 100%, .3)
+}
+
+.btn-primary.active.focus, .btn-primary.active:focus, .btn-primary.active:hover, .btn-primary:active.focus, .btn-primary:active:focus, .btn-primary:active:hover, .open > .dropdown-toggle.btn-primary.focus, .open > .dropdown-toggle.btn-primary:focus, .open > .dropdown-toggle.btn-primary:hover {
+ color: #fff;
+ background-color: hsla(0, 0%, 100%, .3);
+ border-color: transparent
+}
+
+.book-meta > div.more-stuff > .btn-toolbar > .btn-group > .btn-group > .dropdown-menu {
+ margin-left: -100px
+}
+
+.book-meta .btn-toolbar > .btn-group > ul.dropdown-menu {
+ margin-left: 0;
+ max-width: 200px;
+ overflow: hidden
+}
+
+.book-meta .btn-toolbar > .btn-group > ul.dropdown-menu > li > a {
+ max-width: 200px;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ overflow: hidden
+}
+
+.dropdown-menu.offscreen {
+ right: 0;
+ left: auto !important
+}
+
+div.btn-group[role=group][aria-label="Download, send to Kindle, reading"] .dropdown-menu.offscreen {
+ position: fixed;
+ top: 120px;
+ right: 5px
+}
+
+.dropdown-menu {
+ border-radius: 4px !important;
+ font-size: 13px;
+ font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ padding: 8px 0;
+ background-color: #191a1c !important;
+ -webkit-box-shadow: 0 4px 10px rgba(0, 0, 0, .35);
+ box-shadow: 0 4px 10px rgba(0, 0, 0, .35);
+ -o-transition: opacity .15s ease-out, transform .15s cubic-bezier(.6, .4, .2, 1.4);
+ transition: opacity .15s ease-out, transform .15s cubic-bezier(.6, .4, .2, 1.4);
+ transition: opacity .15s ease-out, transform .15s cubic-bezier(.6, .4, .2, 1.4), -webkit-transform .15s cubic-bezier(.6, .4, .2, 1.4);
+ -webkit-transform-origin: center top;
+ -ms-transform-origin: center top;
+ transform-origin: center top;
+ border: 0;
+ left: 0 !important
+}
+
+.dropdown-menu > li > a {
+ color: hsla(0, 0%, 100%, .7);
+ font-size: 13px;
+ font-weight: 400;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ line-height: 1.71428571
+}
+
+.dropdown-menu > li > a:focus, .dropdown-menu > li > a:hover {
+ color: #fff;
+ background: hsla(0, 0%, 100%, .08)
+}
+
+.btn-group.open .dropdown-toggle {
+ -webkit-box-shadow: none;
+ box-shadow: none
+}
+
+.book-meta > .bookinfo > .identifiers > p > .btn-success {
+ background-color: rgba(0, 0, 0, .15);
+ color: hsla(0, 0%, 100%, .7);
+ font-size: 13px;
+ display: inline-block;
+ border-radius: 4px;
+ vertical-align: middle;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ -webkit-transition: background-color .2s, color .2s;
+ -o-transition: background-color .2s, color .2s;
+ transition: background-color .2s, color .2s;
+ text-transform: none
+}
+
+.book-meta > .bookinfo > .identifiers > p > .btn-success:hover {
+ color: #fff;
+ text-decoration: underline
+}
+
+#bookDetailsModal .book-meta {
+ color: hsla(0, 0%, 100%, .7);
+ height: calc(100% - 120px);
+ overflow-x: hidden;
+ overflow-y: scroll
+}
+
+.book-meta > .bookinfo .publishers, .book-meta > .bookinfo > .identifiers > p > .glyphicon-link {
+ color: hsla(0, 0%, 100%, .45)
+}
+
+.rating .glyphicon-star.good {
+ color: var(--color-primary)
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.discover > .btn-danger {
+ background: #ac3323;
+ width: auto
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.discover > .btn-danger:hover {
+ background: #ce3d2a
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.discover > .btn-primary:first-of-type {
+ background: hsla(0, 0%, 100%, .25)
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.discover > .btn-primary:first-of-type:hover {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.discover > .btn-primary:last-of-type {
+ background: var(--color-secondary)
+}
+
+body > div.container-fluid > div > div.col-sm-10 > div.discover > .btn-primary:last-of-type:hover {
+ background: var(--color-secondary-hover)
+}
+
+.book-meta > div.more-stuff > .btn-toolbar > .btn-group[aria-label="Remove from shelves"] {
+ max-width: 100%
+}
+
+.book-meta > .bookinfo > div.more-stuff > .btn-toolbar > .btn-group[aria-label="Remove from shelves"] > a {
+ max-width: 100%;
+ overflow: hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ margin: 20px 0 0 !important;
+ border-radius: 3px;
+ background: hsla(0, 0%, 100%, .25);
+ text-transform: none;
+ padding: 0 10px;
+ text-align: left;
+ line-height: 1.5;
+ font-family: Open Sans semibold, Helvetica Neue, Helvetica, Arial, sans-serif
+}
+
+.book-meta > div.more-stuff > .btn-toolbar > .btn-group[aria-label="Remove from shelves"] > a:hover {
+ background: #ce3d2a;
+ color: #fff
+}
+
+.book-meta > div.more-stuff > .btn-toolbar > .btn-group[aria-label="Remove from shelves"] > a > .glyphicon-remove {
+ font-size: 12px;
+ padding-right: 3px
+}
+
+.book-meta > div.more-stuff > .btn-toolbar > .btn-group[aria-label="Remove from shelves"] > a > .glyphicon-remove:before {
+ content: "\ea64";
+ font-family: plex-icons
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > .col-sm-6 {
+ width: 100%
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.form-group {
+ padding-left: 15px
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 {
+ padding: 0
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 {
+ padding: 0;
+ margin-bottom: 60px
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #submit {
+ float: left;
+ margin-left: calc(100vw - 400px)
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9.col-xs-12 > button.btn.btn-default {
+ float: right
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9.col-xs-12 > a:last-of-type {
+ float: right;
+ background: hsla(0, 0%, 100%, .25);
+ margin-right: 10px
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9.col-xs-12 > a:last-of-type:hover {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > h2 {
+ width: calc(100vw - 390px) !important;
+ height: 60px !important;
+ margin: 0 !important;
+ padding-left: 25px !important;
+ color: hsla(0, 0%, 100%, .7) !important;
+ font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif !important;
+ font-size: 15px !important;
+ line-height: 60px !important;
+ -webkit-text-size-adjust: 100% !important;
+ -moz-text-size-adjust: 100% !important;
+ -ms-text-size-adjust: 100% !important;
+ text-size-adjust: 100% !important;
+ white-space: nowrap !important;
+ -webkit-box-direction: normal !important;
+ -webkit-font-smoothing: antialiased !important;
+ -webkit-tap-highlight-color: transparent !important;
+ font-weight: 400 !important;
+ -webkit-margin-before: 0 !important;
+ -webkit-margin-after: 0 !important;
+ position: fixed !important;
+ top: 60px !important;
+ left: 240px !important;
+ text-align: left !important;
+ overflow: hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ padding-right: 25px !important
+}
+
+body.shelf-down > .discover > h2 {
+ color: inherit;
+ margin-bottom: 20px;
+}
+
+body.shelf-down > .discover > .row > .book.col-sm-3.col-lg-2.col-xs-6 {
+ max-width: 225px !important;
+ width: 225px !important;
+}
+
+body.shelf-down .btn-group button#btnGroupDrop1 {
+ height: 50px;
+}
+
+.author > .container-fluid > .row-fluid > .col-sm-10 > h2:before, .plexBack > a {
+ -moz-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ text-size-adjust: 100%
+}
+
+.author > .container-fluid > .row-fluid > .col-sm-10 > h2:before, .blur-wrapper > div, .plexBack > a {
+ -webkit-box-direction: normal;
+ -webkit-font-smoothing: antialiased
+}
+
+body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group {
+ position: fixed;
+ top: 60px;
+ right: 0
+}
+
+body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [data-target="#DeleteShelfDialog"] {
+ position: relative;
+ float: right;
+ width: 50px;
+ height: 60px;
+ border-radius: 0;
+ background: 0 0;
+ color: transparent;
+ overflow: hidden;
+ padding: 6px 11px
+}
+
+body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [data-target="#DeleteShelfDialog"]:before {
+ content: "\EA6D";
+ font-family: plex-icons-new;
+ position: absolute;
+ color: hsla(0, 0%, 100%, .7);
+ font-size: 20px;
+ padding: 6px 0 0 2px
+}
+
+body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [data-target="#DeleteShelfDialog"]:hover {
+ background: #ce3d2a
+}
+
+body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [data-target="#DeleteShelfDialog"]:hover:before {
+ color: #fff
+}
+
+body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=edit] {
+ position: relative;
+ float: right;
+ width: 50px;
+ height: 60px;
+ border-radius: 0;
+ background: 0 0;
+ color: transparent;
+ overflow: hidden;
+ margin: 0;
+ padding: 6px 13px
+}
+
+body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=edit]:before {
+ content: "\EA5d";
+ font-family: plex-icons;
+ position: absolute;
+ color: hsla(0, 0%, 100%, .7);
+ font-size: 20px;
+ padding: 6px 0 0 2px
+}
+
+body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=edit]:hover:before {
+ color: #fff
+}
+
+body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=edit]:hover {
+ background: 0 0
+}
+
+body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=order] {
+ position: relative;
+ float: right;
+ width: 50px;
+ height: 60px;
+ border-radius: 0;
+ background: 0 0;
+ color: transparent;
+ overflow: hidden;
+ margin: 0;
+ padding: 6px 11px
+}
+
+body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=order]:before {
+ content: "\E409";
+ font-family: Glyphicons Regular;
+ position: absolute;
+ color: hsla(0, 0%, 100%, .7);
+ font-size: 20px;
+ padding: 6px 0 0 2px
+}
+
+body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=order]:hover:before {
+ color: #fff
+}
+
+body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=order]:hover {
+ background: 0 0
+}
+
+body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a:hover {
+ color: #fff !important;
+ -webkit-transition: color .2s;
+ -o-transition: color .2s;
+ transition: color .2s;
+ background-color: rgba(0, 0, 0, .55) !important
+}
+
+.blur-wrapper:after {
+ content: '';
+ display: block;
+ width: 100vw;
+ height: 100%;
+ position: fixed;
+ top: 0;
+ left: 0;
+ background-image: url(images/caliblur/blur-noise.png) !important;
+ background-repeat: repeat !important;
+ background-attachment: fixed !important;
+ background-position: center center !important;
+ background-size: auto !important;
+ -webkit-background-size: auto !important
+}
+
+.blur-wrapper {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background-color: #3f4245;
+ -o-transition: background-color 1s ease-in;
+ transition: background-color 1s ease-in;
+ -webkit-transition: background-color 1s ease-in;
+ z-index: -9
+}
+
+.blur-wrapper > div {
+ -moz-osx-font-smoothing: grayscale;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: horizontal;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ overflow: hidden
+}
+
+.bg-blur {
+ background-size: cover;
+ background-position: center center;
+ background-repeat: no-repeat;
+ width: 100% !important;
+ height: 100% !important;
+ position: absolute;
+ max-width: 100% !important;
+ -webkit-filter: blur(125px) brightness(85%);
+ filter: blur(125px) brightness(85%);
+ -moz-filter: blur(125px);
+ -o-filter: blur(125px);
+ -ms-filter: blur(125px);
+ opacity: .4;
+ -webkit-animation: fade 1s;
+ animation: fade 1s;
+ -moz-animation: fade 1s;
+ -o-animation: fade 1s;
+ -o-object-fit: cover;
+ object-fit: cover
+}
+
+.plexBack, .plexBack > a {
+ display: block;
+ height: 60px;
+ letter-spacing: normal;
+ font-size: 20px;
+ top: 0;
+ font-weight: 400;
+ cursor: pointer
+}
+
+.authorlist .blur-wrapper {
+ background: 0 0
+}
+
+#scnd-nav > li.nav-head:first-child {
+ margin-top: 10px
+}
+
+.btn-danger {
+ color: #fff;
+ background-color: #ac3323;
+ border-color: #ac3323
+}
+
+.btn-danger:hover {
+ background-color: #ce3d2a;
+ border-color: #641e14
+}
+
+.caret {
+ border-top: 5px solid;
+ border-right: 4px solid transparent;
+ border-left: 4px solid transparent
+}
+
+.plexBack {
+ color: hsla(0, 0%, 100%, .7);
+ line-height: 34.29px;
+ margin: 0;
+ padding: 0;
+ position: absolute;
+ width: 40px;
+ left: 50px
+}
+
+.plexBack > a {
+ color: rgba(255, 255, 255, .7);
+ font-family: plex-icons-new;
+ -webkit-font-variant-ligatures: normal;
+ font-variant-ligatures: normal;
+ line-height: 60px;
+ position: relative;
+ text-align: center;
+ -webkit-text-size-adjust: 100%;
+ text-transform: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ vertical-align: middle;
+ width: 100%;
+ padding: 0 10px
+}
+
+.plexBack > a:before {
+ content: "\EA2F"
+}
+
+.plexBack:not(.noBack):hover > a {
+ color: #fff
+}
+
+.login .well > h2 {
+ display: none
+}
+
+.login .well > form {
+ max-width: 480px;
+ margin: auto
+}
+
+.login .well > form input {
+ background-color: hsla(0, 0%, 100%, .25)
+}
+
+.login ::-webkit-input-placeholder {
+ color: transparent
+}
+
+.login :-moz-placeholder {
+ color: transparent
+}
+
+.login ::-moz-placeholder {
+ color: transparent
+}
+
+.login :-ms-input-placeholder {
+ color: transparent
+}
+
+body.login > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a {
+ width: 100vw;
+ height: 120px;
+ margin: 0 !important;
+ text-align: center;
+ padding: 60px 0 0;
+ background: 0 0;
+ color: #ccc !important;
+ font-size: 20px
+}
+
+body.login > .container-fluid {
+ width: 100vw;
+ height: 100%;
+ position: relative
+}
+
+body.login > div.container-fluid > div.row-fluid > div.col-sm-10 {
+ width: 100%;
+ height: 100%;
+ overflow-y: visible !important
+}
+
+body.login > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse {
+ display: none !important
+}
+
+.login .navbar-default {
+ background: 0 0 !important
+}
+
+body.login:not(.read-frame), body.shelfcreate, body.shelfedit {
+ background-image: url(images/caliblur/blur-noise.png), url(images/caliblur/blur-dark.png) !important
+}
+
+body.author .undefined-img, body.shelfcreate, body.shelfedit {
+ background-repeat: repeat, no-repeat !important;
+ background-attachment: fixed, fixed !important;
+ background-position: center center, center center !important
+}
+
+body.login > div.container-fluid > div.row-fluid > div.col-sm-10::before, body.login > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a::before {
+ display: none
+}
+
+.book-meta > .bookinfo > .comments[aria-expanded=true] + a:after, .book-meta > .description[aria-expanded=true] + a:after {
+ content: '';
+ display: inline-block;
+ border-color: hsla(0, 0%, 100%, .45);
+ width: 10px;
+ height: 10px;
+ border-top-width: 0;
+ border-right: 4px solid transparent;
+ border-bottom-width: 5px;
+ border-left: 4px solid transparent;
+ position: absolute;
+ -webkit-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ border-style: solid;
+ vertical-align: middle;
+ -webkit-transition: border .2s, -webkit-transform .4s;
+ -o-transition: border .2s, transform .4s;
+ transition: border .2s, transform .4s;
+ transition: border .2s, transform .4s, -webkit-transform .4s;
+ margin: 9px 6px
+}
+
+.book-meta > .bookinfo > .comments[aria-expanded=false] + a:after, .book-meta > .description[aria-expanded=false] + a:after {
+ content: '';
+ display: inline-block;
+ border-color: hsla(0, 0%, 100%, .45);
+ width: 0;
+ height: 0;
+ border-bottom-width: 0;
+ border-right: 4px solid transparent;
+ border-top-width: 5px;
+ border-left: 4px solid transparent;
+ position: absolute;
+ -webkit-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ border-style: solid;
+ vertical-align: middle;
+ -webkit-transition: border .2s, -webkit-transform .4s;
+ -o-transition: border .2s, transform .4s;
+ transition: border .2s, transform .4s;
+ transition: border .2s, transform .4s, -webkit-transform .4s;
+ margin: 12px 6px
+}
+
+.book-meta > .bookinfo > .comments + a, .book-meta > .description + a {
+ width: 100px;
+ margin-top: 10px;
+ -webkit-transition: all .2s;
+ -o-transition: all .2s;
+ transition: all .2s
+}
+
+.book-meta > .bookinfo > .comments + a:hover, .book-meta > .description + a:hover {
+ text-decoration: none
+}
+
+.book-meta > .bookinfo > .comments[aria-expanded=false] + a:hover:after, .book-meta > .description[aria-expanded=false] + a:hover:after {
+ border-color: #fff;
+ border-right: 4px solid transparent;
+ border-top-width: 5px;
+ border-left: 4px solid transparent
+}
+
+.book-meta > .bookinfo > .comments[aria-expanded=true] + a:hover:after, .book-meta > .description[aria-expanded=true] + a:hover:after {
+ border-color: #fff;
+ border-right: 4px solid transparent;
+ border-bottom-width: 5px;
+ border-left: 4px solid transparent
+}
+
+.navigation > ul > li > a > span.hidden-sm {
+ display: inline-block !important
+}
+
+.shelfcreate .col-sm-10 > .discover > form, .shelfedit .col-sm-10 > .discover > form {
+ width: 500px;
+ height: 500px;
+ margin: auto;
+ max-width: calc(100vw - 300px);
+ max-height: calc(100% - 200px)
+}
+
+body.shelfcreate > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.form-group, body.shelfedit > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.form-group {
+ padding-left: 0
+}
+
+body.shelfcreate, body.shelfedit {
+ background-size: auto, cover !important;
+ -webkit-background-size: auto, cover !important;
+ -moz-background-size: auto, cover !important;
+ -o-background-size: auto, cover !important;
+ -webkit-transition: background-image 2s ease-in;
+ -o-transition: background-image 2s ease-in;
+ transition: background-image 2s ease-in
+}
+
+body.author .undefined-img {
+ background-image: url(images/caliblur/blur-noise.png), url(images/caliblur/blur-light.png) !important;
+ background-size: auto, cover !important;
+ -webkit-background-size: auto, cover !important;
+ -moz-background-size: auto, cover !important;
+ -o-background-size: auto, cover !important;
+ opacity: 1;
+ -webkit-filter: none;
+ filter: none;
+ width: 100vw;
+ height: 100%;
+ position: fixed;
+ top: 0;
+ left: 0;
+ content: ''
+}
+
+body.author img.bg-blur[src=undefined] {
+ display: none
+}
+
+body.author:not(.authorlist) .undefined-img:before {
+ content: "\e008";
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1;
+ font-size: 6vw;
+ position: fixed;
+ left: 240px;
+ top: 200px;
+ width: 20%;
+ text-align: center;
+ z-index: 9
+}
+
+.author > .container-fluid > .row-fluid > .col-sm-10 > h2:before {
+ content: "About Author";
+ width: calc(100vw - 240px);
+ height: 60px;
+ margin: 0;
+ padding-left: 25px;
+ color: hsla(0, 0%, 100%, .7);
+ font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 15px;
+ line-height: 60px;
+ -webkit-text-size-adjust: 100%;
+ white-space: nowrap;
+ -webkit-tap-highlight-color: transparent;
+ font-weight: 400;
+ -webkit-margin-before: 0;
+ -webkit-margin-after: 0;
+ position: fixed;
+ top: 60px;
+ left: 240px;
+ text-align: left
+}
+
+.author > .container-fluid > .row-fluid > .col-sm-10 > h2 {
+ font-size: 24px;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ color: #eee;
+ font-weight: 400;
+ line-height: 1;
+ margin: 60px 0 0;
+ padding: 15px 15px 35px;
+ border-bottom: 2px solid rgba(0, 0, 0, .3)
+}
+
+.author > .container-fluid > .row-fluid > .col-sm-10 > .author-bio {
+ padding: 35px 15px 15px;
+ font-size: 15px;
+ color: hsla(0, 0%, 100%, .65)
+}
+
+.author > .container-fluid > .row-fluid > .col-sm-10 > .author-bio > img {
+ position: fixed;
+ left: 270px;
+ top: 200px;
+ width: calc(20% - 60px);
+ max-width: 250px
+}
+
+.author > .container-fluid > .row-fluid > .col-sm-10 > .author-bio > .author-link {
+ color: var(--color-secondary)
+}
+
+.author > .container-fluid > .row-fluid > .col-sm-10 > .author-bio > .author-link:hover {
+ color: var(--color-secondary-hover)
+}
+
+body.author:not(.authorlist) > div.container-fluid > div > div.col-sm-10 {
+ width: calc(100% - 240px);
+ left: 240px;
+ padding-left: 20%;
+ padding-right: 30px;
+ padding-bottom: 20px
+}
+
+body.author > div.container-fluid > div > div.col-sm-10 > div.discover {
+ width: 100%;
+ padding: 0 0 0 15px !important
+}
+
+body.author > div.container-fluid > div > div.col-sm-10 > div.discover > h3 {
+ font-size: 15px;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ line-height: 24px;
+ text-transform: uppercase;
+ color: #eee
+}
+
+.author > .container-fluid > .row-fluid > .col-sm-10 > .author-bio a {
+ color: var(--color-secondary)
+}
+
+.author > .container-fluid > .row-fluid > .col-sm-10 > .author-bio a:hover {
+ color: var(--color-secondary-hover)
+}
+
+body.shelf.modal-open > .container-fluid {
+ z-index: 9
+}
+
+#DeleteShelfDialog .text-center {
+ text-align: left
+}
+
+#DeleteShelfDialog {
+ top: 0;
+ overflow: hidden;
+ padding-top: 70px;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: rgba(0, 0, 0, .5)
+}
+
+#DeleteShelfDialog > .modal-dialog {
+ width: 450px;
+ margin: auto
+}
+
+#DeleteShelfDialog > .modal-dialog > .modal-content {
+ max-height: calc(100% - 90px);
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ border-radius: 3px;
+ z-index: 9999999999999999999999;
+ left: calc(50% - 225px);
+ right: auto;
+ width: 450px
+}
+
+#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-header {
+ padding: 15px 20px;
+ border-radius: 3px 3px 0 0;
+ line-height: 1.71428571;
+ vertical-align: bottom;
+ font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif;
+ font-weight: 400;
+ color: #eee;
+ border-bottom: 1px solid #222;
+ background-color: #323232
+}
+
+#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-header:before {
+ content: "\E197";
+ padding-right: 10px;
+ font-size: 18px;
+ color: #999;
+ display: inline-block;
+ font-family: Glyphicons Regular;
+ font-style: normal;
+ font-weight: 400
+}
+
+#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-header:after {
+ content: "Delete Shelf";
+ display: inline-block;
+ font-size: 20px
+}
+
+#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-header > span {
+ display: none
+}
+
+#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-body {
+ padding: 20px 20px 30px;
+ font-size: 16px;
+ line-height: 1.6em;
+ font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif;
+ color: #eee;
+ background: #282828
+}
+
+#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-body > span:before {
+ content: "Are you sure you want to delete this shelf?";
+ display: inline-block;
+ padding-right: 5px
+}
+
+#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-body:after {
+ content: '';
+ position: absolute;
+ width: 100%;
+ height: 72px;
+ background-color: #323232;
+ border-radius: 0 0 3px 3px;
+ left: 0;
+ margin-top: 30px;
+ z-index: 0;
+ border-top: 1px solid #222;
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, .5)
+}
+
+#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-body > .btn {
+ float: right;
+ z-index: 9;
+ position: relative;
+ margin: 45px 0 0 10px;
+ min-width: 80px;
+ padding: 10px 18px;
+ font-size: 16px;
+ line-height: 1.33;
+ border-radius: 3px
+}
+
+#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-body > .btn-default {
+ background-color: hsla(0, 0%, 100%, .25)
+}
+
+#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-body > .btn-default:hover {
+ background-color: hsla(0, 0%, 100%, .3)
+}
+
+.btn-warning.active.focus, .btn-warning.active:focus, .btn-warning.active:hover, .btn-warning:active.focus, .btn-warning:active:focus, .btn-warning:active:hover, .open > .dropdown-toggle.btn-warning.focus, .open > .dropdown-toggle.btn-warning:focus, .open > .dropdown-toggle.btn-warning:hover {
+ color: initial;
+ background-color: initial;
+ border-color: initial
+}
+
+#remove-from-shelves > .btn {
+ background-color: rgba(0, 0, 0, .15);
+ color: hsla(0, 0%, 100%, .7);
+ padding: 0 10px;
+ font-size: 13px;
+ display: inline-block;
+ overflow: hidden;
+ border-radius: 4px;
+ vertical-align: middle;
+ text-align: center;
+ white-space: nowrap;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ -webkit-transition: background-color .2s, color .2s;
+ -o-transition: background-color .2s, color .2s;
+ transition: background-color .2s, color .2s;
+ margin: 2px 6px 0 0;
+ text-transform: none
+}
+
+#remove-from-shelves > .btn > span {
+ font-size: 10px;
+ display: inline-block;
+ top: 3px;
+ line-height: inherit;
+ position: absolute;
+ right: 5px
+}
+
+#remove-from-shelves > .btn > span:before {
+ content: "\EA52";
+ font-family: plex-icons-new;
+ color: transparent;
+ padding-left: 5px
+}
+
+#remove-from-shelves > a:first-of-type {
+ margin-left: 40px;
+ overflow: visible
+}
+
+#remove-from-shelves > a:first-of-type:before {
+ content: "\EA4D";
+ font-family: plex-icons-new;
+ position: absolute;
+ color: hsla(0, 0%, 100%, .45);
+ font-style: normal;
+ font-weight: 400;
+ font-size: 14px;
+ left: -40px;
+ pointer-events: none
+}
+
+#remove-from-shelves > .btn:hover {
+ padding-right: 20px;
+ background: #ce3d2a;
+ color: #fff;
+ -webkit-transition: all .2s;
+ -o-transition: all .2s;
+ transition: all .2s
+}
+
+#remove-from-shelves > .btn:hover span:before {
+ color: #fff;
+ -webkit-transition: all .2s ease-out;
+ -o-transition: all .2s ease-out;
+ transition: all .2s ease-out
+}
+
+#remove-from-shelves + .identifiers, #remove-from-shelves + .languages, #remove-from-shelves + .publishers, #remove-from-shelves + .publishing-date, #remove-from-shelves + .tags {
+ margin-top: -25px;
+ z-index: 9;
+ position: relative
+}
+
+#remove-from-shelves > a.btn:last-of-type {
+ margin-bottom: 35px
+}
+
+#DeleteShelfDialog:before {
+ content: "\E208";
+ padding-right: 10px;
+ display: block;
+ font-family: Glyphicons Regular;
+ font-style: normal;
+ font-weight: 400;
+ position: absolute;
+ left: calc(50% + 185px);
+ top: 88px;
+ font-size: 16px;
+ color: #eee;
+ opacity: .5;
+ -webkit-transition: -webkit-transform .3s ease-out;
+ -o-transition: transform .3s ease-out;
+ transition: transform .3s ease-out;
+ transition: transform .3s ease-out, -webkit-transform .3s ease-out;
+ -webkit-transform: translate(0, -60px);
+ -ms-transform: translate(0, -60px);
+ transform: translate(0, -60px);
+ z-index: 99
+}
+
+#DeleteShelfDialog.modal.in:before {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ transform: translate(0, 0)
+}
+
+#DeleteShelfDialog:hover:before {
+ cursor: pointer
+}
+
+.btn-default.active:hover, .btn-default:active:hover {
+ border-color: var(--color-secondary-hover);
+ color: #fff;
+ background-color: var(--color-secondary-hover)
+}
+
+body.advanced_search > div.container-fluid > div > div.col-sm-10 > div.col-sm-8 {
+ padding: 20px 0 60px;
+ margin-top: 120px;
+ border-top: 2px solid rgba(0, 0, 0, .3);
+ width: calc(80% - 30px)
+}
+
+body.advanced_search > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > div, body.advanced_search > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > label {
+ padding-left: 15px;
+ padding-right: 15px
+}
+
+body.advanced_search > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > div .rating-input {
+ padding-top: 0;
+ padding-bottom: 0
+}
+
+body.advanced_search > div.container-fluid > div > div.col-sm-10 > div.col-sm-8 > form > .btn.btn-default {
+ margin-right: 15px;
+ margin-top: 20px
+}
+
+.advanced_search #search > .row > .form-group.col-sm-6 {
+ padding-left: 0;
+ margin-bottom: 0
+}
+
+.advanced_search #search > .row > .form-group.col-sm-6 > label[for=ratinghigh], .advanced_search #search > .row > .form-group.col-sm-6 > label[for=ratinglow] {
+ color: hsla(0, 0%, 100%, .45);
+ font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ font-weight: 400;
+ margin-top: 10px
+}
+
+.glyphicon-remove:before {
+ content: "\EA52";
+ font-family: plex-icons-new;
+ font-weight: 400
+}
+
+body.advanced_search > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > div.row:nth-child(4) {
+ margin-bottom: 30px
+}
+
+.me .dropdown-menu > li > #top_user {
+ color: var(--color-primary)
+}
+
+.navbar-right > li > ul.dropdown-menu.offscreen {
+ right: -10px
+}
+
+.login .plexBack, body.login > div.container-fluid > div.row-fluid > div.col-sm-2, body.login > div.navbar.navbar-default.navbar-static-top > div > form {
+ display: none
+}
+
+@media only screen and (min-width: 768px) {
+ #main-nav + #scnd-nav {
+ background: rgba(0, 0, 0, .15)
+ }
+
+ body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a#logout {
+ display: none
+ }
+
+ body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a#top_user {
+ height: 60px;
+ padding: 0 !important;
+ background: 0 0 !important;
+ color: hsla(0, 0%, 100%, .7);
+ line-height: 20px;
+ position: fixed;
+ display: block;
+ right: 15px
+ }
+
+ body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a#top_user > span.hidden-sm {
+ display: none
+ }
+
+ body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a#top_user > span.glyphicon-user {
+ width: 30px;
+ height: 30px;
+ margin: 15px;
+ top: 0;
+ color: hsla(0, 0%, 100%, .7)
+ }
+
+ body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a#top_user > span.glyphicon-user:before {
+ content: '';
+ display: inline-block;
+ overflow: hidden;
+ border-radius: 50%;
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K);
+ background-size: contain;
+ position: absolute;
+ width: 30px;
+ height: 30px
+ }
+
+ body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a#top_user > span.glyphicon-user:after {
+ content: '';
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin: 15px 0 0 35px;
+ vertical-align: middle;
+ border-top: 5px dashed;
+ border-right: 4px solid transparent;
+ border-left: 4px solid transparent
+ }
+
+ body:not(.blur) #nav_createshelf, body:not(.blur) #scnd-nav > #nav_about, body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li:not(.form-upload) > #form-upload, body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li:not(.top_admin) > #top_admin, body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li:not(.top_tasks) > #top_tasks {
+ display: none
+ }
+
+ body:not(.blur) #nav_new {
+ margin-bottom: 30px
+ }
+
+ body:not(.blur) #nav_new:before {
+ content: "\EA4F";
+ font-family: plex-icons;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1;
+ color: hsla(0, 0%, 100%, .7);
+ font-size: 13px;
+ position: absolute;
+ left: 25px;
+ margin-top: 9px
+ }
+
+ body:not(.blur) #nav_new:after {
+ content: "Advanced Search";
+ color: hsla(0, 0%, 100%, .7);
+ font-size: 13px;
+ line-height: 1.71428571;
+ white-space: nowrap;
+ position: absolute;
+ left: 49px;
+ margin-top: 5px
+ }
+
+ body:not(.blur) > .navbar > .container-fluid > .navbar-header:after, body:not(.blur) > .navbar > .container-fluid > .navbar-header:before {
+ color: hsla(0, 0%, 100%, .7);
+ cursor: pointer;
+ display: block;
+ font-family: plex-icons-new;
+ font-size: 20px;
+ font-stretch: 100%;
+ font-style: normal;
+ font-variant-caps: normal;
+ font-variant-east-asian: normal;
+ font-variant-numeric: normal;
+ font-weight: 400;
+ height: 60px;
+ letter-spacing: normal;
+ line-height: 60px;
+ position: absolute
+ }
+
+ body:not(.blur) > .navbar > .container-fluid > .navbar-header:before {
+ content: "\EA30";
+ -webkit-font-variant-ligatures: normal;
+ font-variant-ligatures: normal;
+ left: 20px
+ }
+
+ body:not(.blur) > .navbar > .container-fluid > .navbar-header:after {
+ content: "\EA2F";
+ -webkit-font-variant-ligatures: normal;
+ font-variant-ligatures: normal;
+ left: 60px
+ }
+}
+
+body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row:first-of-type > div.col > h2:before, body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type:before, body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1:before, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1:before {
+ width: calc(100vw - 240px);
+ height: 60px;
+ margin: 0;
+ padding-left: 25px;
+ background: 0 0;
+ color: hsla(0, 0%, 100%, .7);
+ font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 15px;
+ line-height: 60px;
+ -webkit-text-size-adjust: 100%;
+ -moz-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ text-size-adjust: 100%;
+ -webkit-box-direction: normal;
+ -webkit-font-smoothing: antialiased;
+ -webkit-tap-highlight-color: transparent;
+ -webkit-margin-before: 0;
+ -webkit-margin-after: 0;
+ top: 60px;
+ white-space: nowrap;
+ font-weight: 400
+}
+
+body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row:first-of-type > div.col > h2:before, body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type:before {
+ content: "Admin Settings";
+ position: fixed;
+ left: 240px
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1:before {
+ content: "User Settings";
+ position: fixed;
+ left: 240px
+}
+
+body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1:before {
+ content: "New User";
+ position: fixed;
+ left: 240px
+}
+
+body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid {
+ height: auto;
+ width: calc(100vw - 257px);
+ margin: 20px 0 30px !important;
+ padding: 0 10px 0 40px !important
+}
+
+body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col > h2, body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > h2 {
+ font-size: 24px;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ color: #eee;
+ font-weight: 400;
+ line-height: 1
+}
+
+.table-striped > tbody > tr:nth-of-type(2n+1) {
+ background-color: transparent
+}
+
+body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col > .btn > a, body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > .btn > a {
+ text-decoration: none;
+ color: #fff
+}
+
+body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col .table > tbody > tr > td, body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col .table > tbody > tr > th, body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > .table > tbody > tr > td, body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > .table > tbody > tr > th {
+ border: collapse
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10::before, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10::before {
+ content: '';
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: 400;
+ font-size: 6vw;
+ position: fixed;
+ left: 240px;
+ top: 180px;
+ width: calc(20% - 55px);
+ text-align: center;
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K);
+ background-size: 6vw;
+ background-position-x: center;
+ height: 100%;
+ background-repeat: no-repeat
+}
+
+body.edituser.admin > div.container-fluid > div > div.col-sm-10 > div.discover, body.newuser.admin > div.container-fluid > div > div.col-sm-10 > div.discover {
+ left: 240px;
+ margin: 120px 0 0 20% !important;
+ padding: 30px 15px 15px !important;
+ width: calc(80% - 30px);
+ border-top: 2px solid rgba(0, 0, 0, .3)
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1 {
+ width: auto;
+ position: absolute;
+ top: 60px;
+ left: 20%;
+ font-size: 24px;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ color: #eee;
+ font-weight: 400;
+ line-height: 1;
+ padding-left: 30px
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #submit, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #submit {
+ float: right;
+ margin-left: 10px
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #back, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #back {
+ float: right;
+ margin-left: 0;
+ background-color: hsla(0, 0%, 100%, .25)
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #back:hover, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #back:hover {
+ background-color: hsla(0, 0%, 100%, .3)
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 {
+ margin-bottom: 60px
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 {
+ padding: 0
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > h2, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > h2 {
+ color: #eee;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ line-height: 24px;
+ overflow: hidden;
+ min-width: 0;
+ width: 100%;
+ max-width: 100%;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ text-transform: uppercase;
+ font-weight: 400;
+ padding-left: 15px;
+ margin-bottom: 20px;
+ top: 0;
+ left: 0;
+ height: auto
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 {
+ height: 200px;
+ padding: 0;
+ margin: 15px
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a {
+ width: 100%;
+ display: inline-block;
+ height: 100%
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:hover, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:hover {
+ outline: solid var(--color-secondary);
+ font-size: 50px;
+ -o-transition: outline 0s;
+ transition: outline 0s;
+ -webkit-transition: outline 0s
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:before {
+ content: "\e352";
+ display: inline-block;
+ position: absolute;
+ font-family: Glyphicons Regular;
+ background: var(--color-secondary);
+ color: #fff;
+ border-radius: 50%;
+ font-weight: 400;
+ font-size: 18px;
+ line-height: 50px;
+ width: 50px;
+ height: 50px;
+ padding-left: 16px;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ margin: auto;
+ opacity: 0;
+ z-index: 9
+}
+
+body.admin, body.admin td > a {
+ color: hsla(0, 0%, 100%, .65)
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:hover:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:hover:before {
+ -o-transition: opacity .2s;
+ transition: opacity .2s;
+ -webkit-transition: opacity .2s;
+ opacity: 1
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:after, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:after {
+ position: absolute;
+ content: '';
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ opacity: 0;
+ background: -webkit-radial-gradient(50% 50%, farthest-corner, rgba(50, 50, 50, .5) 50%, #323232 100%);
+ background: -o-radial-gradient(50% 50%, farthest-corner, rgba(50, 50, 50, .5) 50%, #323232 100%);
+ background: radial-gradient(farthest-corner at 50% 50%, rgba(50, 50, 50, .5) 50%, #323232 100%)
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:hover:after, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:hover:after {
+ opacity: 1;
+ -o-transition: opacity .2s;
+ transition: opacity .2s;
+ -webkit-transition: opacity .2s
+}
+
+body.admin .panel {
+ background: rgba(0, 0, 0, .15);
+ border: none;
+ box-shadow: none;
+ -webkit-box-shadow: none;
+ border-radius: 0
+}
+
+body.admin .panel-default > .panel-collapse > .panel-body, body.admin .panel-default > .panel-heading {
+ color: hsla(0, 0%, 100%, .65);
+ background-color: transparent;
+ border: none
+}
+
+body.config.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > *, body.uiconfig.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > * {
+ float: right
+}
+
+body.config.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > a, body.uiconfig.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > a {
+ background-color: hsla(0, 0%, 100%, .25);
+ margin-right: 10px
+}
+
+body.config.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > a:hover, body.uiconfig.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > a:hover {
+ background-color: hsla(0, 0%, 100%, .3)
+}
+
+body.admin {
+ background-image: url(images/caliblur/blur-noise.png), url(images/caliblur/blur-dark.png) !important
+}
+
+body.admin td {
+ font-family: Open Sans regular, Helvetica Neue, Helvetica, Arial, sans-serif
+}
+
+body.admin td > a:hover {
+ color: #fff
+}
+
+.glyphicon-ok::before {
+ content: "\EA55";
+ font-family: plex-icons-new;
+ font-weight: 400
+}
+
+body.admin.config > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type, body.admin.uiconfig > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type, body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover > h1 {
+ width: calc(100vw - 240px);
+ background: rgba(0, 0, 0, .15);
+ color: hsla(0, 0%, 100%, .7);
+ font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 15px;
+ line-height: 60px;
+ -webkit-text-size-adjust: 100%;
+ -moz-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ text-size-adjust: 100%;
+ -webkit-box-direction: normal;
+ -webkit-margin-before: 0;
+ -webkit-margin-after: 0;
+ height: 60px;
+ top: 60px;
+ left: 240px;
+ position: fixed;
+ -webkit-tap-highlight-color: transparent;
+ -webkit-font-smoothing: antialiased;
+ white-space: nowrap;
+ font-weight: 400
+}
+
+body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover > h1 {
+ margin: 0;
+ padding-left: 25px
+}
+
+body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover {
+ padding: 0 30px !important;
+ margin-bottom: 120px !important
+}
+
+body.admin.config > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type::before, body.admin.uiconfig > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type::before {
+ content: none
+}
+
+body.admin.config > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type, body.admin.uiconfig > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type {
+ margin: 0;
+ padding-left: 25px
+}
+
+body:not(.blur) #scnd-nav > li > a > .glyphicon-book, body:not(.blur) #scnd-nav > li > a > .glyphicon-search {
+ margin-right: 7px
+}
+
+#scnd-nav > li > a > .glyphicon-search {
+ margin-right: 11px
+}
+
+#remove-from-shelves + .more-stuff + .languages, .identifiers + .more-stuff + .languages, .tags + .more-stuff + .languages {
+ margin-top: 20px
+}
+
+body:not(.blur):not(.login):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.langlist):not(.authorlist):not(.serieslist):not(.catlist):not(.shelforder):not(.admin):not(.modal-open) > div.container-fluid > div.row-fluid > div.col-sm-10:after {
+ background: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, .15)), to(rgba(0, 0, 0, .15))), url(images/caliblur/blur-noise.png), url(images/caliblur/blur-light.png) !important;
+ background: -webkit-linear-gradient(bottom, rgba(0, 0, 0, .15), rgba(0, 0, 0, .15)), url(images/caliblur/blur-noise.png), url(images/caliblur/blur-light.png) !important;
+ background: -o-linear-gradient(bottom, rgba(0, 0, 0, .15), rgba(0, 0, 0, .15)), url(images/caliblur/blur-noise.png), url(images/caliblur/blur-light.png) !important;
+ background: linear-gradient(0deg, rgba(0, 0, 0, .15), rgba(0, 0, 0, .15)), url(images/caliblur/blur-noise.png), url(images/caliblur/blur-light.png) !important;
+ background-repeat: no-reapeat, repeat, no-repeat !important;
+ background-attachment: fixed, fixed, fixed !important;
+ background-position: center center, center center, center center !important;
+ background-size: auto, auto, cover !important;
+ -webkit-background-size: auto, auto, cover !important;
+ -moz-background-size: autom, auto, cover !important;
+ -o-background-size: auto, auto, cover !important;
+ width: 100%;
+ height: 60px;
+ display: block;
+ content: '';
+ position: fixed;
+ top: 60px;
+ left: 240px;
+ z-index: 99999999999999999999999999999999999
+}
+
+body.advsearch:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8:before, body.book:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.single:before, body.stat:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10:before, body:not(.blur):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.admin):not(.modal-open) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover:first-of-type:before {
+ background: url(images/caliblur/blur-noise.png) center center fixed, url(images/caliblur/blur-light.png) center center no-repeat fixed !important;
+ background-size: auto, cover !important;
+ -webkit-background-size: auto, cover !important;
+ -moz-background-size: auto, cover !important;
+ -o-background-size: auto, cover !important;
+ width: calc(100vw - 240px);
+ height: calc(100% - 120px);
+ display: block;
+ content: '';
+ position: fixed;
+ top: 120px;
+ left: 240px;
+ right: 0;
+ bottom: 0;
+ z-index: 99999999999999999999999999999999999
+}
+
+body.advsearch:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8:after, body.book:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.single:after, body.stat:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > p:first-of-type:after, body:not(.blur):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.admin):not(.modal-open) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover:first-of-type:after {
+ content: '';
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ border: 2px solid transparent;
+ border-radius: 50%;
+ border-top: 2px solid var(--color-secondary);
+ border-right: 2px solid var(--color-secondary);
+ width: 24px;
+ height: 24px;
+ -webkit-animation: loading .5s linear infinite;
+ animation: loading .5s linear infinite;
+ display: block;
+ top: 240px;
+ left: calc(50% + 120px);
+ position: fixed;
+ z-index: 999999999999999999999999999999999999
+}
+
+.search #shelf-actions, body.login .home-btn {
+ display: none
+}
+
+body.read:not(.blur) a[href*=readbooks] {
+ color: hsla(0, 0%, 100%, .7) !important
+}
+
+.tooltip {
+ -webkit-transform: translate(0) scale(1);
+ -ms-transform: translate(0) scale(1);
+ transform: translate(0) scale(1)
+}
+
+.tooltip.in {
+ opacity: 1;
+ -o-transition: opacity .15s ease-out, transform .15s cubic-bezier(.6, .4, .2, 1.4);
+ transition: opacity .15s ease-out, transform .15s cubic-bezier(.6, .4, .2, 1.4);
+ transition: opacity .15s ease-out, transform .15s cubic-bezier(.6, .4, .2, 1.4), -webkit-transform .15s cubic-bezier(.6, .4, .2, 1.4);
+ -webkit-transform: translate(0) scale(1);
+ -ms-transform: translate(0) scale(1);
+ transform: translate(0) scale(1);
+ pointer-events: none
+}
+
+.tooltip.bottom .tooltip-inner {
+ font-size: 13px;
+ font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ padding: 3px 10px;
+ border-radius: 4px;
+ background-color: #191a1c;
+ -webkit-box-shadow: 0 4px 10px 0 rgba(0, 0, 0, .35);
+ box-shadow: 0 4px 10px 0 rgba(0, 0, 0, .35);
+ opacity: 1;
+ white-space: nowrap;
+ margin-top: -16px !important;
+ line-height: 1.71428571;
+ color: #eee
+}
+
+.tooltip.bottom .tooltip-arrow {
+ width: 0;
+ margin-left: auto;
+ height: 0;
+ border: 6px solid transparent;
+ top: -6px;
+ border-bottom-color: #191a1c;
+ left: 50%;
+ -webkit-transform: translateX(-50%);
+ -ms-transform: translateX(-50%);
+ transform: translateX(-50%);
+ position: absolute;
+ margin-top: -16px !important
+}
+
+#sendbtn > span {
+ height: 60px
+}
+
+body.search > div.container-fluid > div > div.col-sm-10 > div.discover > h2 + p {
+ border-top: 2px solid rgba(0, 0, 0, .3);
+ margin: 90px 27px 0 20px;
+ text-align: center;
+ padding-top: 100px;
+ color: hsla(0, 0%, 100%, .45);
+ font-size: 18px;
+ line-height: 1.5
+}
+
+body.search > div.container-fluid > div > div.col-sm-10 > div.discover > h2 + p:before {
+ content: "Library";
+ position: absolute;
+ top: 25px;
+ left: 60px;
+ color: #fff;
+ font-size: 24px;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ line-height: 1.71428571
+}
+
+body.search > div.container-fluid > div > div.col-sm-10 > div.discover > h2 + p:after {
+ content: "No Results";
+ position: absolute;
+ margin-left: -170px;
+ margin-top: -40px;
+ font-size: 20px;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ color: #eee
+}
+
+body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 {
+ max-width: calc(25% - 75px);
+ position: fixed
+}
+
+body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 {
+ margin-left: 25% !important;
+ width: 75%
+}
+
+body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center > #delete, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center > #delete {
+ position: fixed;
+ top: 60px;
+ right: 0;
+ width: 50px;
+ height: 60px;
+ color: transparent;
+ background: 0 0;
+ overflow: hidden;
+ cursor: pointer;
+ border-radius: 0
+}
+
+body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center > #delete:before, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center > #delete:before {
+ content: "\EA6D";
+ font-family: plex-icons-new;
+ font-size: 18px;
+ color: hsla(0, 0%, 100%, .7)
+}
+
+body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center > #delete:hover, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center > #delete:hover {
+ background: #ce3d2a
+}
+
+body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center > #delete:hover:before, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center > #delete:hover:before {
+ color: #fff
+}
+
+body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center.more-stuff > h4, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center.more-stuff > h4 {
+ color: #eee;
+ margin: 20px;
+ text-transform: uppercase;
+ font-size: 16px
+}
+
+.editbook .form-control.tt-hint, .upload .form-control.tt-hint {
+ background: hsla(0, 0%, 100%, .08) !important
+}
+
+.checkbox input[type=checkbox] {
+ margin-left: -19px;
+ margin-top: 5px
+}
+
+body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover {
+ width: calc(100% - 3px);
+ margin: 0 0 0 3px !important;
+ padding: 0 !important;
+ border-collapse: collapse
+}
+
+body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container, body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table {
+ border: none;
+ border-radius: 0
+}
+
+body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th {
+ border-bottom: none;
+ border-radius: 0;
+ background-color: hsla(0, 0%, 100%, .1);
+ border-right: 2px solid transparent;
+ text-align: left !important;
+ position: relative
+}
+
+body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th:last-of-type {
+ border-right: none
+}
+
+body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th:hover {
+ background-color: hsla(0, 0%, 100%, .15);
+ color: #fff
+}
+
+body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th:hover .th-inner {
+ color: #fff
+}
+
+body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th > .th-inner {
+ font-size: 13px;
+ color: hsla(0, 0%, 100%, .7);
+ -webkit-tap-highlight-color: transparent;
+ font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ background-image: none;
+ text-align: left;
+ padding: 8px 20px;
+ white-space: nowrap;
+ width: 100%;
+ -webkit-transition: color .2s;
+ -o-transition: color .2s;
+ transition: color .2s
+}
+
+body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th > .th-inner.asc, body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th > .th-inner.desc {
+ color: #fff
+}
+
+body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th > .th-inner.asc:after {
+ content: "\EA58";
+ font-family: plex-icons-new;
+ font-weight: 400;
+ right: 20px;
+ position: absolute
+}
+
+body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th > .th-inner.desc:after {
+ content: "\EA57";
+ font-family: plex-icons-new;
+ font-weight: 400;
+ right: 20px;
+ position: absolute
+}
+
+body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > tbody > tr:hover {
+ background: 0 0 !important
+}
+
+body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > tbody > tr > td {
+ background: 0 0;
+ border: none;
+ text-align: left !important;
+ padding: 8px 20px;
+ color: hsla(0, 0%, 100%, .65);
+ -webkit-tap-highlight-color: transparent;
+ font-size: 13px;
+ font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased
+}
+
+body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > tbody > tr:nth-of-type(even) {
+ background-color: hsla(0, 0%, 100%, .02) !important
+}
+
+body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > tbody > tr.no-records-found > td:before {
+ content: "No Records Found";
+ position: absolute;
+ top: 120px;
+ left: calc(50% - 66px);
+ font-size: 14px;
+ color: hsla(0, 0%, 100%, .65)
+}
+
+.epub-back, .epub-back:before {
+ display: inline-block;
+ overflow: hidden
+}
+
+.epub-back {
+ width: 18px;
+ height: 19px;
+ line-height: 20px;
+ opacity: .5;
+ padding: 4px;
+ border-radius: 4px;
+ position: relative
+}
+
+.epub-back > input {
+ opacity: 0;
+ width: 26px;
+ height: 27px;
+ position: absolute;
+ overflow: hidden;
+ padding: 0;
+ left: 0;
+ top: 0
+}
+
+.epub-back:before {
+ content: "\EA1C";
+ font-family: plex-icons-new;
+ font-weight: 400;
+ color: #4f4f4f;
+ position: absolute;
+ opacity: .5;
+ font-size: 16px;
+ left: 5px;
+ top: 4px
+}
+
+.epub-back:hover:before {
+ top: 3px;
+ left: 4px;
+ opacity: 1
+}
+
+.epub-back:hover {
+ border: 1px solid rgba(0, 0, 0, .2);
+ padding: 3px
+}
+
+.col-sm-10 .book-meta > div.btn-toolbar > div.btn-group > div.btn-group > p:first-child {
+ margin: 0
+}
+
+body.login > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a:hover {
+ color: #ccc !important;
+ background-color: transparent !important
+}
+
+.empty-ul {
+ opacity: .6;
+ cursor: default;
+ pointer-events: none
+}
+
+#DeleteDomain:hover:before, #RestartDialog:hover:before, #ShutdownDialog:hover:before, #StatusDialog:hover:before, #deleteButton, #deleteModal:hover:before, body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover td > a:hover {
+ cursor: pointer
+}
+
+.lDutch {
+ padding-left: 90px !important
+}
+
+.blur-wrapper + .dropdown-menu {
+ position: fixed;
+ top: 118px;
+ right: 5px
+}
+
+#read-in-browser[aria-expanded=true], #shelf-actions > .btn-group.open, .downloadBtn.open, .profileDrop[aria-expanded=true] {
+ pointer-events: none
+}
+
+#btnGroupDrop1[aria-expanded=true] > span, #read-in-browser[aria-expanded=true] > span, #shelf-actions > .btn-group.open > #add-to-shelf > span {
+ color: #fff
+}
+
+.navigation li a span {
+ vertical-align: middle;
+ margin-bottom: 1px
+}
+
+.navigation li.active a .glyphicon-star {
+ color: var(--color-primary)
+}
+
+#shelf-actions, #shelf-actions > .btn-group, #shelf-actions > .btn-group > .empty-ul {
+ pointer-events: none
+}
+
+#shelf-actions > .btn-group > #add-to-shelf[aria-expanded=false]:not(.empty-ul) {
+ pointer-events: auto
+}
+
+.book-meta > .bookinfo > .comments p, .description p {
+ margin: 0 0 28px
+}
+
+#login, .profileDrop + span.hidden-sm {
+ display: none
+}
+
+.admin #container > h2, body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col > h2 {
+ font-size: 24px;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ color: #eee;
+ font-weight: 400;
+ line-height: 1
+}
+
+.admin #container > .col-xs-12, body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col > .col-xs-12 {
+ width: 100%;
+ background: rgba(0, 0, 0, .15);
+ padding: 0;
+ border-collapse: collapse
+}
+
+.admin #container > .col-xs-12:last-of-type, body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col > .col-xs-12:last-of-type {
+ border-bottom: 2px solid rgba(0, 0, 0, .3)
+}
+
+.admin #container > .col-xs-12 > .Row > .col-xs-6, body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col > .col-xs-12 > .row > .col-xs-6 {
+ width: 50%;
+ padding-top: 8px;
+ padding-bottom: 8px;
+ border-top: 2px solid rgba(0, 0, 0, .3)
+}
+
+body.admin > div.container-fluid > div > div.col-sm-10 > div.discover .btn > a {
+ text-decoration: none;
+ color: #fff
+}
+
+.admin #container + .col-xs-12 {
+ padding: 0;
+ margin: 10px 0 30px
+}
+
+body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col > .col-xs-12:nth-child(3) {
+ margin-bottom: 20px
+}
+
+body.admin:not(.modal-open) .btn-default {
+ margin-bottom: 10px
+}
+
+.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control {
+ background-color: hsla(0, 0%, 100%, .02)
+}
+
+.form-group[aria-label="Upload cover from local drive"] > .btn-primary {
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif
+}
+
+body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 {
+ max-width: calc(25% - 75px);
+ position: fixed;
+ padding-left: 30px;
+ padding-right: 0;
+ z-index: 9
+}
+
+body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-9, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-9 {
+ margin-left: 25% !important;
+ width: 75%
+}
+
+body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete {
+ position: fixed;
+ top: 60px;
+ right: 0;
+ width: 50px;
+ height: 60px;
+ color: transparent;
+ background: 0 0;
+ overflow: hidden;
+ cursor: pointer;
+ border-radius: 0
+}
+
+body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete:before, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete:before {
+ content: "\EA6D";
+ font-family: plex-icons-new;
+ font-size: 18px;
+ color: hsla(0, 0%, 100%, .7);
+ vertical-align: super
+}
+
+#main-nav + #scnd-nav .create-shelf a, #main-nav + #scnd-nav li.nav-head {
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ text-transform: uppercase
+}
+
+body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete:hover, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete:hover {
+ background: #ce3d2a
+}
+
+body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete:hover:before, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete:hover:before {
+ color: #fff
+}
+
+body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center.more-stuff > h4, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center.more-stuff > h4 {
+ color: #eee;
+ margin: 20px;
+ text-transform: uppercase;
+ font-size: 16px
+}
+
+#main-nav + #scnd-nav {
+ width: 240px;
+ height: calc(100% - 120px);
+ left: 0;
+ top: 120px;
+ background: 0 0;
+ padding: 0 5px 20px 0;
+ overflow-y: auto;
+ position: fixed
+}
+
+#main-nav + #scnd-nav li.nav-head {
+ margin: 0;
+ color: hsla(0, 0%, 100%, .3);
+ font-size: 12px;
+ line-height: 45px;
+ padding-left: 25px
+}
+
+#main-nav + #scnd-nav > li.nav-head:first-child {
+ margin-top: 10px
+}
+
+#main-nav + #scnd-nav li {
+ min-height: 30px;
+ max-width: 265px;
+ overflow: visible;
+ border-radius: 0 4px 4px 0;
+ display: list-item;
+ height: auto;
+ float: none
+}
+
+#main-nav + #scnd-nav li a {
+ color: hsla(0, 0%, 100%, .7);
+ text-decoration: none;
+ padding: 4px 25px;
+ font-size: 13px;
+ height: 30px;
+ line-height: 1.71428571;
+ width: 100%;
+ white-space: nowrap;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ border-radius: 0 4px 4px 0
+}
+
+#main-nav + #scnd-nav li a span {
+ vertical-align: middle;
+ margin-bottom: 1px;
+ margin-right: 10px
+}
+
+#main-nav + #scnd-nav li a span:before {
+ font-size: 13px
+}
+
+#main-nav + #scnd-nav li.active a {
+ color: var(--color-primary);
+ background: 0 0
+}
+
+#main-nav + #scnd-nav li a:hover {
+ background: hsla(0, 0%, 100%, .08)
+}
+
+#main-nav + #scnd-nav li a[href*=advanced_search] {
+ display: block
+}
+
+#main-nav + #scnd-nav li a[href*=advanced_search] span.hidden-sm {
+ display: inline-block !important
+}
+
+#main-nav + #scnd-nav li.open a {
+ background: 0 0
+}
+
+#main-nav + #scnd-nav li.open a:hover {
+ background: hsla(0, 0%, 100%, .08);
+ color: #fff
+}
+
+#main-nav + #scnd-nav li a .glyphicon-star {
+ color: hsla(0, 0%, 100%, .7)
+}
+
+#main-nav + #scnd-nav li a:hover .glyphicon-star {
+ color: #fff
+}
+
+#main-nav + #scnd-nav #nav_cat a span {
+ margin-right: 8px
+}
+
+#main-nav + #scnd-nav .nav-head:nth-child(1n+2) {
+ border-top: none;
+ padding-top: 0;
+ width: 200px
+}
+
+#main-nav + #scnd-nav .create-shelf {
+ width: 25px;
+ margin: 10px -15px 0 0;
+ min-height: auto;
+ /* float: right; */
+ font-size: 12px;
+ text-align: center
+}
+
+#main-nav + #scnd-nav .create-shelf a {
+ width: 165px;
+ color: hsla(0, 0%, 100%, .7) !important;
+ background-color: transparent;
+ padding: 5px 7px 2px;
+ font-size: 12px;
+ line-height: 1;
+ border-radius: 3px;
+ border: 0;
+ -webkit-transition: background-color .1s;
+ -o-transition: background-color .1s;
+ transition: background-color .1s;
+ font-weight: 400;
+ white-space: nowrap;
+ margin: auto;
+ max-height: 22px;
+ -o-text-overflow: initial;
+ text-overflow: initial;
+ display: block
+}
+
+#main-nav + #scnd-nav .create-shelf a:before {
+ content: "\EA13";
+ font-family: plex-icons-new;
+ font-size: 100%;
+ padding-right: 10px;
+ vertical-align: middle
+}
+
+#main-nav + #scnd-nav .create-shelf a:hover {
+ background: 0 0;
+ color: #fff !important
+}
+
+#main-nav + #scnd-nav:after {
+ width: 100%;
+ height: 60px;
+ background: rgba(0, 0, 0, .15);
+ display: block;
+ content: '';
+ position: fixed;
+ top: 60px;
+ left: 240px;
+ pointer-events: none
+}
+
+.modal-dialog {
+ margin: 0 auto 60px
+}
+
+body.admin.modal-open .navbar {
+ z-index: 0 !important
+}
+
+#RestartDialog, #ShutdownDialog, #StatusDialog, #deleteModal {
+ top: 0;
+ overflow: hidden;
+ padding-top: 70px;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: rgba(0, 0, 0, .5)
+}
+
+#RestartDialog:before, #ShutdownDialog:before, #StatusDialog:before, #deleteModal:before {
+ content: "\E208";
+ padding-right: 10px;
+ display: block;
+ font-family: Glyphicons Regular;
+ font-style: normal;
+ font-weight: 400;
+ position: absolute;
+ left: calc(50% + 185px);
+ top: 88px;
+ font-size: 16px;
+ color: #eee;
+ opacity: .5;
+ -webkit-transition: -webkit-transform .3s ease-out;
+ -o-transition: transform .3s ease-out;
+ transition: transform .3s ease-out;
+ transition: transform .3s ease-out, -webkit-transform .3s ease-out;
+ -webkit-transform: translate(0, -60px);
+ -ms-transform: translate(0, -60px);
+ transform: translate(0, -60px);
+ z-index: 99
+}
+
+#RestartDialog.in:before, #ShutdownDialog.in:before, #StatusDialog.in:before, #deleteModal.in:before {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ transform: translate(0, 0)
+}
+
+#RestartDialog > .modal-dialog, #ShutdownDialog > .modal-dialog, #StatusDialog > .modal-dialog, #deleteModal > .modal-dialog {
+ width: 450px;
+ margin: auto
+}
+
+#RestartDialog > .modal-dialog > .modal-content, #ShutdownDialog > .modal-dialog > .modal-content, #StatusDialog > .modal-dialog > .modal-content, #deleteModal > .modal-dialog > .modal-content {
+ max-height: calc(100% - 90px);
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ border-radius: 3px;
+ z-index: 9999999999999999999999;
+ left: calc(50% - 225px);
+ right: auto;
+ width: 450px
+}
+
+#RestartDialog > .modal-dialog > .modal-content > .modal-header, #ShutdownDialog > .modal-dialog > .modal-content > .modal-header, #StatusDialog > .modal-dialog > .modal-content > .modal-header, #deleteModal > .modal-dialog > .modal-content > .modal-header {
+ padding: 15px 20px;
+ border-radius: 3px 3px 0 0;
+ line-height: 1.71428571;
+ vertical-align: bottom;
+ font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif;
+ font-weight: 400;
+ color: #eee;
+ border-bottom: 1px solid #222;
+ background-color: #323232;
+ text-align: left
+}
+
+#RestartDialog > .modal-dialog > .modal-content > .modal-header:before, #ShutdownDialog > .modal-dialog > .modal-content > .modal-header:before, #StatusDialog > .modal-dialog > .modal-content > .modal-header:before, #deleteModal > .modal-dialog > .modal-content > .modal-header:before {
+ padding-right: 10px;
+ font-size: 18px;
+ color: #999;
+ font-style: normal;
+ font-weight: 400;
+ display: inline-block
+}
+
+#RestartDialog > .modal-dialog > .modal-content > .modal-header:before {
+ content: "\EA4F";
+ font-family: plex-icons-new
+}
+
+#ShutdownDialog > .modal-dialog > .modal-content > .modal-header:before {
+ content: "\E064";
+ font-family: glyphicons regular
+}
+
+#StatusDialog > .modal-dialog > .modal-content > .modal-header:before {
+ content: "\EA15";
+ font-family: plex-icons-new
+}
+
+#deleteModal > .modal-dialog > .modal-content > .modal-header:before {
+ content: "\EA6D";
+ font-family: plex-icons-new
+}
+
+#RestartDialog > .modal-dialog > .modal-content > .modal-header:after {
+ content: "Restart Calibre-Web";
+ display: inline-block;
+ font-size: 20px
+}
+
+#ShutdownDialog > .modal-dialog > .modal-content > .modal-header:after {
+ content: "Stop Calibre-Web";
+ display: inline-block;
+ font-size: 20px
+}
+
+#StatusDialog > .modal-dialog > .modal-content > .modal-header:after {
+ content: "Update Calibre-Web";
+ display: inline-block;
+ font-size: 20px
+}
+
+#deleteModal > .modal-dialog > .modal-content > .modal-header:after {
+ content: "Delete Book";
+ display: inline-block;
+ font-size: 20px
+}
+
+#StatusDialog > .modal-dialog > .modal-content > .modal-header > span, #deleteModal > .modal-dialog > .modal-content > .modal-header > span, #loader > center > img, .rating-mobile {
+ display: none
+}
+
+#RestartDialog > .modal-dialog > .modal-content > .modal-body {
+ padding: 20px 20px 10px;
+ font-size: 16px;
+ line-height: 1.6em;
+ font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif;
+ color: #eee;
+ background: #282828;
+ text-align: left
+}
+
+#ShutdownDialog > .modal-dialog > .modal-content > .modal-body, #StatusDialog > .modal-dialog > .modal-content > .modal-body, #deleteModal > .modal-dialog > .modal-content > .modal-body {
+ padding: 20px 20px 40px;
+ font-size: 16px;
+ line-height: 1.6em;
+ font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif;
+ color: #eee;
+ background: #282828;
+ text-align: left
+}
+
+#RestartDialog > .modal-dialog > .modal-content > .modal-body > p, #ShutdownDialog > .modal-dialog > .modal-content > .modal-body > p, #StatusDialog > .modal-dialog > .modal-content > .modal-body > p, #deleteModal > .modal-dialog > .modal-content > .modal-body > p {
+ padding: 20px 20px 0 0;
+ font-size: 16px;
+ line-height: 1.6em;
+ font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif;
+ color: #eee;
+ background: #282828
+}
+
+#RestartDialog > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#restart), #ShutdownDialog > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#shutdown), #deleteModal > .modal-dialog > .modal-content > .modal-footer > .btn-default {
+ float: right;
+ z-index: 9;
+ position: relative;
+ min-width: 80px;
+ padding: 10px 18px;
+ font-size: 16px;
+ line-height: 1.33;
+ border-radius: 3px;
+ background-color: hsla(0, 0%, 100%, .25)
+}
+
+#RestartDialog > .modal-dialog > .modal-content > .modal-body > #restart {
+ float: right;
+ z-index: 9;
+ position: relative;
+ margin: 25px 0 0 10px;
+ min-width: 80px;
+ padding: 10px 18px;
+ font-size: 16px;
+ line-height: 1.33;
+ border-radius: 3px
+}
+
+#ShutdownDialog > .modal-dialog > .modal-content > .modal-body > #shutdown, #StatusDialog > .modal-dialog > .modal-content > .modal-body > #updateFinished {
+ float: right;
+ z-index: 9;
+ position: relative;
+ margin: 55px 0 0 10px;
+ min-width: 80px;
+ padding: 10px 18px;
+ font-size: 16px;
+ line-height: 1.33;
+ border-radius: 3px
+}
+
+#deleteModal > .modal-dialog > .modal-content > .modal-footer > .btn-danger {
+ float: right;
+ z-index: 9;
+ position: relative;
+ margin: 0 0 0 10px;
+ min-width: 80px;
+ padding: 10px 18px;
+ font-size: 16px;
+ line-height: 1.33;
+ border-radius: 3px
+}
+
+#RestartDialog > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#restart) {
+ margin: 25px 0 0 10px
+}
+
+#ShutdownDialog > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#shutdown) {
+ margin: 55px 0 0 10px
+}
+
+#deleteModal > .modal-dialog > .modal-content > .modal-footer > .btn-default {
+ margin: 0 0 0 10px
+}
+
+#RestartDialog > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#restart):hover, #ShutdownDialog > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#shutdown):hover, #deleteModal > .modal-dialog > .modal-content > .modal-footer > .btn-default:hover {
+ background-color: hsla(0, 0%, 100%, .3)
+}
+
+#RestartDialog > .modal-dialog > .modal-content > .modal-body:after {
+ content: '';
+ position: absolute;
+ width: 100%;
+ height: 72px;
+ background-color: #323232;
+ border-radius: 0 0 3px 3px;
+ left: 0;
+ margin-top: 10px;
+ z-index: 0;
+ border-top: 1px solid #222;
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, .5)
+}
+
+#ShutdownDialog > .modal-dialog > .modal-content > .modal-body:after, #StatusDialog > .modal-dialog > .modal-content > .modal-body:after {
+ content: '';
+ position: absolute;
+ width: 100%;
+ height: 72px;
+ background-color: #323232;
+ border-radius: 0 0 3px 3px;
+ left: 0;
+ margin-top: 40px;
+ z-index: 0;
+ border-top: 1px solid #222;
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, .5)
+}
+
+#deleteButton {
+ position: fixed;
+ top: 60px;
+ right: 50px;
+ width: 50px;
+ height: 60px;
+ color: transparent;
+ background: 0 0;
+ overflow: hidden;
+ border-radius: 0;
+ border-right: 2px solid rgba(0, 0, 0, .3)
+}
+
+#deleteButton > span.glyphicon-remove {
+ font-size: 18px;
+ color: hsla(0, 0%, 100%, .7)
+}
+
+#deleteButton:hover span.glyphicon-remove {
+ color: #fff
+}
+
+#deleteButton > span.glyphicon-remove:before {
+ content: "\EA66"
+}
+
+.editbook .more-stuff > .dropdown-menu {
+ position: fixed;
+ top: 90px;
+ right: 17px;
+ left: auto !important
+}
+
+body.authorlist .blur-wrapper:after {
+ content: none
+}
+
+#loader {
+ background-image: url(images/caliblur/blur-noise.png), url(images/caliblur/blur-dark.png) !important;
+ background-repeat: repeat, no-repeat !important;
+ background-attachment: fixed, fixed !important;
+ background-position: center center, center center !important;
+ background-size: auto, cover !important;
+ -webkit-background-size: auto, cover !important;
+ -moz-background-size: auto, cover !important;
+ -o-background-size: auto, cover !important;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100vw;
+ height: 100%;
+ z-index: 9
+}
+
+#loader > center {
+ display: block;
+ width: 100%;
+ height: 100%;
+ top: calc(50% - 120px);
+ position: absolute
+}
+
+#loader > center > h3 {
+ font-size: 20px;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ color: #eee;
+ text-transform: uppercase
+}
+
+#loader > center:after {
+ content: '';
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ border: 2px solid transparent;
+ border-radius: 50%;
+ border-top: 2px solid var(--color-secondary);
+ width: 24px;
+ height: 24px;
+ animation: spin .5s linear infinite;
+ display: block;
+ margin: 20px auto;
+ position: fixed;
+ top: calc(50% - 24px);
+ left: calc(50% - 12px);
+ z-index: 999999
+}
+
+.book:not(body) {
+ width: 180px !important;
+ max-width: 180px !important;
+ min-width: 180px !important
+}
+
+#books .cover img, #books_rand .cover img, .book.isotope-item .cover img {
+ width: 150px !important
+}
+
+.container-fluid .book .meta .author, .container-fluid .book .meta .title {
+ white-space: nowrap !important
+}
+
+.container-fluid .book .meta .rating {
+ display: none !important
+}
+
+.container-fluid .book .meta {
+ margin-top: 0 !important
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > h2, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > h2, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > h2 {
+ position: absolute;
+ margin-top: -30px;
+ font-size: 14px
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 {
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) !important;
+ display: -ms-grid;
+ display: grid;
+ margin-top: 40px;
+ margin-bottom: 60px
+}
+
+body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 {
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) !important;
+ display: -ms-grid;
+ display: grid;
+ margin-top: 90px;
+ margin-bottom: 0
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12:before {
+ content: '';
+ display: block;
+ position: absolute;
+ width: calc(100% + 30px);
+ height: 2px;
+ background: rgba(0, 0, 0, .3);
+ margin-left: -15px;
+ margin-top: -65px
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2, body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 {
+ width: 135px !important;
+ max-width: 135px !important;
+ min-width: 135px !important
+}
+
+body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a > img, body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a > img, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a > img {
+ width: 135px !important;
+ height: 200px !important
+}
+
+#theme, label[for=theme] {
+ display: inline
+}
+
+@media only screen and (max-width: 767px) {
+ #form-upload .form-group .btn:before, #top_admin > .glyphicon, #top_tasks > .glyphicon-tasks {
+ -moz-osx-font-smoothing: grayscale;
+ font-weight: 400;
+ font-style: normal
+ }
+
+ #query, .navbar-collapse.collapse > .col-sm-2 {
+ padding-left: 0;
+ padding-right: 0
+ }
+
+ #query, .collapsing {
+ -o-transition: all 0s
+ }
+
+ body.login:not(.read-frame), body:not(.read-frame) {
+ background-color: var(--color-background-mobile) !important;
+ background-image: none !important
+ }
+
+ .navbar-default {
+ height: 48px;
+ min-height: 48px
+ }
+
+ .navbar > .container-fluid {
+ height: 48px
+ }
+
+ .navbar > .container-fluid > .navbar-header {
+ margin: 0
+ }
+
+ .navbar > .container-fluid > .navbar-header > button.navbar-toggle {
+ border: 0;
+ float: left;
+ padding: 0;
+ width: 48px;
+ height: 48px;
+ margin: 0;
+ top: 0
+ }
+
+ .navbar > .container-fluid > .navbar-header > button.navbar-toggle:active, .navbar > .container-fluid > .navbar-header > button.navbar-toggle:focus, .navbar > .container-fluid > .navbar-header > button.navbar-toggle:hover {
+ background: 0 0
+ }
+
+ .navbar > .container-fluid > .navbar-header > button.navbar-toggle:before {
+ content: '';
+ display: inline-block;
+ overflow: hidden;
+ border-radius: 50%;
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K);
+ background-size: contain;
+ position: absolute;
+ width: 30px;
+ height: 30px;
+ top: 9px;
+ left: 9px
+ }
+
+ .navbar > .container-fluid > .navbar-header > button.navbar-toggle > span {
+ opacity: 0;
+ position: absolute
+ }
+
+ body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a {
+ margin: 0 !important;
+ height: 48px;
+ line-height: 48px;
+ width: calc(100vw - 138px);
+ background: 0 0 !important;
+ color: hsla(0, 0%, 100%, .7) !important;
+ font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ pointer-events: none
+ }
+
+ .home-btn {
+ height: 48px;
+ line-height: 28.29px;
+ right: 10px;
+ left: auto
+ }
+
+ .home-btn > a {
+ height: 48px;
+ line-height: 48px
+ }
+
+ .plexBack {
+ height: 48px;
+ line-height: 28.29px;
+ left: 48px;
+ display: none
+ }
+
+ .plexBack > a {
+ height: 48px;
+ line-height: 48px
+ }
+
+ body > div.navbar.navbar-default.navbar-static-top > div > form {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ box-shadow: none;
+ -webkit-box-shadow: none;
+ position: absolute;
+ right: 50px;
+ top: 0;
+ height: 48px
+ }
+
+ body > div.navbar.navbar-default.navbar-static-top > div > form:before {
+ top: 12px;
+ left: auto;
+ right: 15px;
+ color: hsla(0, 0%, 100%, .7)
+ }
+
+ body > div.navbar.navbar-default.navbar-static-top > div > form:hover:before {
+ color: #fff
+ }
+
+ body > div.navbar.navbar-default.navbar-static-top > div > form > div {
+ width: 40px;
+ height: 48px
+ }
+
+ #query {
+ width: 40px !important;
+ height: 48px;
+ border-radius: 0;
+ background: 0 0;
+ cursor: pointer;
+ color: transparent;
+ opacity: 0;
+ -webkit-transition: all 0s;
+ transition: all 0s
+ }
+
+ body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100vw
+ }
+
+ body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > div.form-group {
+ width: 100vw
+ }
+
+ body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > div > #query {
+ width: calc(100vw - 100px) !important;
+ margin: 0 !important
+ }
+
+ #query:focus {
+ background: #555 !important;
+ color: #eee !important;
+ cursor: text;
+ left: 50px;
+ width: calc(100px) !important;
+ opacity: 1;
+ padding-left: 15px
+ }
+
+ body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > div > span.input-group-btn:before {
+ content: "\EA33";
+ display: block;
+ font-family: plex-icons-new;
+ position: fixed;
+ left: 0;
+ top: 0;
+ width: 50px;
+ height: 48px;
+ color: #eee;
+ font-weight: 400;
+ font-size: 14px;
+ background: #555;
+ line-height: 48px;
+ text-align: center;
+ cursor: pointer
+ }
+
+ .mobile-navbar-brand, .profileDrop > span:after, body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul:first-of-type:not(.navbar-right) {
+ display: none
+ }
+
+ #form-upload > .form-group:before, .profileDrop + span.hidden-sm {
+ font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif
+ }
+
+ body > div.navbar.navbar-default.navbar-static-top > div > form > div > span.input-group-btn {
+ background: #555;
+ position: absolute;
+ left: auto;
+ right: 0;
+ height: 48px;
+ width: 50px;
+ border-radius: 0
+ }
+
+ body > div.navbar.navbar-default.navbar-static-top > div > form > div > span > button {
+ height: 48px;
+ width: 50px;
+ border-radius: 0
+ }
+
+ body > div.navbar.navbar-default.navbar-static-top > div > form > div > span > button::before {
+ color: #555;
+ background: #eee
+ }
+
+ .navbar-collapse.collapse {
+ height: calc(100%) !important;
+ width: 240px;
+ background: #3f4245;
+ border: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ margin: 0;
+ padding: 0;
+ position: fixed;
+ top: 0;
+ left: 0;
+ overflow-y: auto !important;
+ overflow-x: hidden !important
+ }
+
+ #form-upload, #main-nav > li:nth-child(1) {
+ border-bottom: 1px solid hsla(0, 0%, 78%, .15);
+ float: left
+ }
+
+ #main-nav {
+ margin-right: 0;
+ height: auto
+ }
+
+ #main-nav > li:nth-child(1) {
+ margin-left: 0;
+ width: 100%;
+ height: 120px;
+ z-index: 99
+ }
+
+ body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a.profileDrop {
+ height: 120px;
+ width: 100%
+ }
+
+ body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a.profileDrop:before {
+ right: auto;
+ position: absolute;
+ left: 211px;
+ top: 80px;
+ color: #fff;
+ content: '';
+ display: inline-block;
+ width: 0;
+ height: 0;
+ vertical-align: middle;
+ border-top: 5px dashed;
+ border-right: 4px solid transparent;
+ border-left: 4px solid transparent
+ }
+
+ .profileDrop > span {
+ width: 30px;
+ height: 30px;
+ margin: 30px 15px;
+ top: 0
+ }
+
+ .profileDrop + span.hidden-sm {
+ display: block;
+ position: absolute;
+ top: 70px;
+ left: 15px;
+ color: #fff;
+ pointer-events: none
+ }
+
+ #main-nav > li {
+ float: left
+ }
+
+ #main-nav > li.form-upload {
+ width: 100%
+ }
+
+ #form-upload {
+ position: relative;
+ width: 100%;
+ margin: 0;
+ padding: 0;
+ height: 60px;
+ border-top: none
+ }
+
+ #form-upload > .form-group:before {
+ content: "Upload Book";
+ color: #fff;
+ font-size: 13px !important;
+ padding-left: 15px;
+ height: 60px;
+ line-height: 60px;
+ position: absolute
+ }
+
+ #form-upload .form-group .btn {
+ float: left;
+ width: 240px
+ }
+
+ #btn-upload {
+ width: 100%
+ }
+
+ #form-upload .form-group .btn:before {
+ content: "\e043";
+ font-family: 'Glyphicons Halflings';
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ color: #fff;
+ font-size: 16px;
+ background: 0 0;
+ border-radius: 50%;
+ width: 20px;
+ height: 20px;
+ display: inline-block;
+ margin: 0;
+ padding: 23px 0 23px 202px;
+ z-index: -9
+ }
+
+ #form-upload .form-group .btn:after {
+ content: "\EA13";
+ position: absolute;
+ font-family: plex-icons-new;
+ font-size: 8px;
+ background: #3c444a;
+ color: #fff;
+ border-radius: 50%;
+ padding: .25px .25px 0 0;
+ z-index: 9;
+ left: 198px;
+ top: 32px;
+ width: 10px;
+ height: 10px;
+ line-height: 10px;
+ font-weight: 400;
+ text-align: center;
+ pointer-events: none
+ }
+
+ #main-nav > li.top_admin, #main-nav > li.top_tasks {
+ height: 45px;
+ width: 100%;
+ min-height: 30px;
+ overflow: visible;
+ border-radius: 0 4px 4px 0;
+ max-width: 265px
+ }
+
+ #main-nav > li.top_tasks:before {
+ content: "MANAGE";
+ color: hsla(0, 0%, 100%, .45);
+ text-transform: uppercase;
+ font-size: 12px;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ line-height: 60px;
+ padding-left: 15px;
+ position: absolute;
+ top: -60px
+ }
+
+ #top_admin, #top_tasks, .navigation > ul > li > a {
+ color: #fff;
+ height: 45px;
+ width: 100%;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ text-decoration: none
+ }
+
+ #main-nav > li.top_tasks {
+ margin-top: 72px
+ }
+
+ #top_admin, #top_tasks {
+ padding: 11.5px 15px;
+ font-size: 13px;
+ line-height: 1.71428571;
+ overflow: hidden
+ }
+
+ #top_admin > .glyphicon, #top_tasks > .glyphicon-tasks {
+ position: relative;
+ top: 0;
+ font-family: 'Glyphicons Halflings';
+ line-height: 1;
+ border-radius: 0;
+ background: 0 0;
+ display: inline-block
+ }
+
+ #top_tasks > .glyphicon-tasks {
+ -webkit-font-smoothing: antialiased;
+ margin-right: 7px
+ }
+
+ #top_admin > .glyphicon {
+ -webkit-font-smoothing: antialiased;
+ margin-right: 10px
+ }
+
+ #top_tasks > .glyphicon-tasks::before, body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > #top_admin > .glyphicon-dashboard::before {
+ text-transform: none;
+ font-family: plex-icons-new;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ text-rendering: optimizeLegibility;
+ speak: none;
+ vertical-align: sub;
+ font-weight: 400;
+ font-style: normal
+ }
+
+ #top_tasks > .glyphicon-tasks::before {
+ content: "\EA2E";
+ line-height: 22px;
+ font-size: 16px
+ }
+
+ body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > #top_admin > .glyphicon-dashboard::before {
+ content: "\EA56";
+ line-height: 22px;
+ font-size: 14px
+ }
+
+ #top_admin > span.hidden-sm, #top_tasks > span.hidden-sm {
+ display: inline-block;
+ line-height: 22px
+ }
+
+ .navigation > ul > li:hover {
+ background-color: transparent
+ }
+
+ .navigation > ul > li {
+ min-height: 45px;
+ max-width: 265px;
+ overflow: visible;
+ border-radius: 0 4px 4px 0
+ }
+
+ .navigation > ul > li > a {
+ padding: 11.5px 15px;
+ font-size: 13px;
+ line-height: 1.71428571;
+ overflow: hidden
+ }
+
+ .navigation .nav-head {
+ margin: 0;
+ color: hsla(0, 0%, 100%, .45);
+ text-transform: uppercase;
+ font-size: 12px;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ line-height: 60px;
+ padding-left: 15px;
+ height: 60px;
+ min-height: 60px
+ }
+
+ .pagination, .pagination:after, body > div.container-fluid > div > div.col-sm-10 > div.pagination > a.next, body > div.container-fluid > div > div.col-sm-10 > div.pagination > a.previous, body > div.container-fluid > div > div.col-sm-10 > div.pagination > a.previous:before {
+ line-height: 42px;
+ height: 42px
+ }
+
+ .navigation .create-shelf {
+ width: 25px;
+ margin: 17.5px 0 0;
+ min-height: auto;
+ float: right
+ }
+
+ .navigation .create-shelf a {
+ color: #fff !important
+ }
+
+ .navigation li a .glyphicon-star {
+ color: #fff
+ }
+
+ .navbar-nav .open .dropdown-menu.profileDropli {
+ width: 210px;
+ margin-left: 12px
+ }
+
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+ color: hsla(0, 0%, 100%, .7)
+ }
+
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus, .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover {
+ color: #fff;
+ background-color: hsla(0, 0%, 100%, .08)
+ }
+
+ .navbar-collapse.collapse .navigation li a span {
+ vertical-align: middle
+ }
+
+ .navbar-collapse.collapse .navigation li a span.caret {
+ position: absolute;
+ left: 210px;
+ top: 20px
+ }
+
+ .navbar-collapse.collapse .hidden-xs {
+ display: list-item !important;
+ width: 225px
+ }
+
+ .navbar-collapse.collapse:after {
+ display: none
+ }
+
+ .tooltip {
+ display: none !important
+ }
+
+ .shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2:before, body.advsearch > div.container-fluid > div > div.col-sm-10:before, body.authorlist > div.container-fluid > div > div.col-sm-10 > div.container:before, body.catlist > div.container-fluid > div > div.col-sm-10 > div.container:before, body.langlist > div.container-fluid > div > div.col-sm-10 > div.container:before, body.login .navbar > .container-fluid > .navbar-header > button.navbar-toggle, body.serieslist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ display: none
+ }
+
+ body > div.container-fluid > div.row-fluid > div.col-sm-10 {
+ width: 100%;
+ top: 42px;
+ height: calc(100% - 42px)
+ }
+
+ body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid, body > div.container-fluid > div > div.col-sm-10 > div.discover {
+ width: 100%;
+ margin: 0 !important;
+ padding: 10px !important
+ }
+
+ .author > .container-fluid > .row-fluid > .col-sm-10 > h2:before, body.admin.config > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type, body.admin.uiconfig > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type, body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row:first-of-type > div.col > h2:before, body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type:before, body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1:before, body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover > h1, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1:before, body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover > h1, body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover > h2, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > #test:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 > div:nth-child(10) > label:before, body > div.container-fluid > div > div.col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2, body > div.container-fluid > div > div.col-sm-10 > h1, body > div.container-fluid > div > div.col-sm-10 > h3:first-of-type {
+ top: 48px;
+ left: 0;
+ padding-left: 10px;
+ height: 42px;
+ width: calc(100%);
+ line-height: 42px;
+ padding-right: 130px;
+ overflow: hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ background: rgba(0, 0, 0, .15);
+ font-size: 13px
+ }
+
+ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1 {
+ top: 10px;
+ left: 55px;
+ font-size: 16px
+ }
+
+ body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type:before {
+ text-transform: none
+ }
+
+ .pagination {
+ top: 48px
+ }
+
+ body > div.container-fluid > div > div.col-sm-10 > div.pagination > a.next:before {
+ height: 42px;
+ line-height: 42px;
+ padding: 11px 0 11px 20px
+ }
+
+ body > div.container-fluid > div > div.col-sm-10 > div.pagination > a.previous:before {
+ padding: 11px 25px
+ }
+
+ body > .container-fluid {
+ height: calc(100% - 48px);
+ top: 48px
+ }
+
+ body > div.container-fluid > div > div.col-sm-10 > div.discover > div.isotope {
+ grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)) !important
+ }
+
+ .book:not(body) {
+ width: 110px !important;
+ max-width: 110px !important;
+ min-width: 110px !important;
+ padding: 0 5px;
+ margin-left: auto;
+ margin-right: auto
+ }
+
+ .container-fluid .book {
+ margin-top: 10px
+ }
+
+ .container-fluid .book .cover {
+ height: 150px;
+ margin-bottom: 0
+ }
+
+ #books .cover img, #books_rand .cover img, .book.isotope-item .cover img {
+ width: 100px !important
+ }
+
+ #books > .cover > a:before, #books_rand > .cover > a:before, .book.isotope-item > .cover > a:before {
+ line-height: 40px;
+ width: 40px;
+ height: 40px;
+ font-size: 16px;
+ padding-left: 12px
+ }
+
+ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10::before, body.me > div.container-fluid > div.row-fluid > div.col-sm-10:before, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10::before {
+ position: absolute;
+ top: 20px;
+ left: 30px;
+ width: 30px;
+ height: 30px;
+ background-size: 30px
+ }
+
+ body.advanced_search > div.container-fluid > div > div.col-sm-10 > div.col-sm-8:before, body.author:not(.authorlist) .undefined-img:before, body.authorlist > div.container-fluid > div.row-fluid > div.col-sm-10:before, body.catlist > div.container-fluid > div.row-fluid > div.col-sm-10:before, body.langlist > div.container-fluid > div > div.col-sm-10:before, body.ratingslist > div.container-fluid > div > div.col-sm-10:before, body.serieslist > div.container-fluid > div > div.col-sm-10:before, body.shelforder > div.container-fluid > div.row-fluid > div.col-sm-10:before {
+ position: fixed;
+ top: 62px;
+ right: 23px;
+ left: auto;
+ width: auto;
+ height: auto;
+ font-size: 14px;
+ color: hsla(0, 0%, 100%, .7)
+ }
+
+ body.edituser.admin > div.container-fluid > div > div.col-sm-10 > div.discover, body.me > div.container-fluid > div > div.col-sm-10 > div.discover, body.newuser.admin > div.container-fluid > div > div.col-sm-10 > div.discover {
+ left: 0;
+ width: auto;
+ margin: 75px 15px 0 !important;
+ padding: 20px 0 !important;
+ max-width: 100% !important;
+ border-top: 1px solid hsla(0, 0%, 78%, .15)
+ }
+
+ body > div.container-fluid > div > div.col-sm-10 > div.container {
+ left: 0;
+ width: auto;
+ margin: 0 !important;
+ padding: 0 !important;
+ max-width: 100% !important;
+ border: 0
+ }
+
+ body.me > div.container-fluid > div > div.col-sm-10 > div.discover:before {
+ top: 30px;
+ left: 70px;
+ font-size: 16px
+ }
+
+ body:not(.shelfcreate):not(.shelfedit) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.form-group {
+ padding-right: 15px
+ }
+
+ .form-group > label {
+ font-size: 12px
+ }
+
+ body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 {
+ margin: 100px 0 0;
+ grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)) !important
+ }
+
+ body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 {
+ float: left;
+ width: 100%;
+ margin-bottom: 10px
+ }
+
+ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12:before {
+ width: 100%;
+ margin-left: 0;
+ margin-top: -45px
+ }
+
+ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2, body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 {
+ width: 100px !important;
+ max-width: 100px !important;
+ min-width: 100px !important
+ }
+
+ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a > img, body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a > img, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a > img {
+ width: 100px !important;
+ height: 150px !important
+ }
+
+ body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #submit {
+ margin-right: 15px
+ }
+
+ body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a:after {
+ width: calc(100%)
+ }
+
+ body > div.container-fluid > div > div.col-sm-10 > h3:not(:first-of-type) {
+ margin: 15px auto 10px;
+ font-size: 14px
+ }
+
+ body > div.container-fluid > div > div.col-sm-10 > p {
+ margin: auto auto 15px
+ }
+
+ .well > h2, body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > h2, body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover:only-of-type > h2 {
+ top: 48px !important;
+ left: 0 !important;
+ padding-left: 10px !important;
+ height: 42px !important;
+ width: calc(100%) !important;
+ line-height: 42px !important;
+ padding-right: 130px !important;
+ overflow: hidden !important;
+ -o-text-overflow: ellipsis !important;
+ text-overflow: ellipsis !important;
+ white-space: nowrap !important;
+ background: rgba(0, 0, 0, .15) !important;
+ font-size: 13px !important;
+ max-width: 100% !important
+ }
+
+ .author > .container-fluid > .row-fluid > .col-sm-10 > h2:after {
+ content: "\e008";
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1;
+ font-size: 6vw;
+ position: fixed;
+ left: 240px;
+ top: 180px;
+ width: calc(20% - 55px);
+ text-align: center
+ }
+
+ .shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2 {
+ height: 42px;
+ width: calc(100%);
+ line-height: 42px;
+ overflow: hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ background: rgba(0, 0, 0, .15);
+ font-size: 13px;
+ max-width: 100%;
+ color: hsla(0, 0%, 100%, .7);
+ font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ position: fixed;
+ top: 48px;
+ left: 0;
+ border: 0;
+ padding: 0 50px 0 10px
+ }
+
+ body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th > .th-inner.asc:after {
+ right: 2px
+ }
+
+ #libs {
+ margin-bottom: 5px
+ }
+
+ body > div.container-fluid > div > div.col-sm-10 > div.container > div > .row {
+ padding: 0
+ }
+
+ .well {
+ padding: 60px 0;
+ max-width: calc(100% - 30px);
+ min-width: auto
+ }
+
+ body.author .undefined-img {
+ background: var(--color-background-mobile) !important
+ }
+
+ body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group {
+ position: relative;
+ top: 0;
+ right: auto;
+ left: auto;
+ width: 210px;
+ margin: auto
+ }
+
+ #DeleteShelfDialog > .modal-dialog {
+ max-width: calc(100vw - 40px)
+ }
+
+ #DeleteShelfDialog > .modal-dialog > .modal-content {
+ max-width: calc(100vw - 40px);
+ left: 0
+ }
+
+ .shelfcreate .col-sm-10 > .discover > form, .shelfedit .col-sm-10 > .discover > form {
+ max-width: calc(100vw - 30px);
+ max-height: calc(100% - 200px)
+ }
+
+ .shelforder > .container-fluid > .row-fluid > .col-sm-10 > .col-sm-6 {
+ margin: 0;
+ width: 100%;
+ padding: 10px
+ }
+
+ .shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2 + div {
+ margin-top: 0;
+ font-size: 13px;
+ font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif;
+ color: var(--color-primary);
+ text-align: right;
+ text-transform: none
+ }
+
+ .shelforder #ChangeOrder {
+ margin: 0 0 10px
+ }
+
+ .shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > a {
+ margin: 0 10px 10px 0
+ }
+
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover {
+ color: var(--color-primary);
+ background-color: transparent
+ }
+
+ body.advanced_search > div.container-fluid > div > div.col-sm-10 > div.col-sm-8 {
+ border: 0;
+ width: 100%;
+ margin: 0;
+ padding: 10px
+ }
+
+ .advanced_search #search > .row > .form-group.col-sm-6:first-of-type {
+ padding-right: 0;
+ margin-bottom: 15px
+ }
+
+ body.advanced_search > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > div.row:nth-child(4) {
+ margin-bottom: 15px
+ }
+
+ body.advanced_search > div.container-fluid > div > div.col-sm-10 > div.col-sm-8 > form > .btn.btn-default {
+ margin-bottom: 20px;
+ margin-top: 10px
+ }
+
+ body.me > div.container-fluid > div > div.col-sm-10 > div.discover {
+ border-top: 1px solid hsla(0, 0%, 78%, .15)
+ }
+
+ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12:before {
+ height: 1px;
+ background: hsla(0, 0%, 78%, .15)
+ }
+
+ body {
+ font-size: 13px
+ }
+
+ body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col > h2, body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > h2 {
+ font-size: 14px;
+ text-transform: uppercase
+ }
+
+ .me .dropdown-menu > li > #top_user:hover {
+ color: #fff
+ }
+
+ body:not(.blur):not(.login):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.langlist):not(.authorlist):not(.serieslist):not(.catlist):not(.shelforder):not(.admin):not(.modal-open) > div.container-fluid > div.row-fluid > div.col-sm-10:after {
+ background: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, .15)), to(rgba(0, 0, 0, .15))), url(images/caliblur/blur-noise.png), var(--color-background-mobile) !important;
+ background: -webkit-linear-gradient(bottom, rgba(0, 0, 0, .15), rgba(0, 0, 0, .15)), url(images/caliblur/blur-noise.png), var(--color-background-mobile) !important;
+ background: -o-linear-gradient(bottom, rgba(0, 0, 0, .15), rgba(0, 0, 0, .15)), url(images/caliblur/blur-noise.png), var(--color-background-mobile) !important;
+ background: linear-gradient(0deg, rgba(0, 0, 0, .15), rgba(0, 0, 0, .15)), url(images/caliblur/blur-noise.png), var(--color-background-mobile) !important;
+ width: 100%;
+ height: 42px;
+ display: block;
+ content: '';
+ position: fixed;
+ top: 48px;
+ left: 0;
+ z-index: 99999999999999999999999999999999999;
+ border: 0;
+ animation: none;
+ -webkit-animation: none;
+ border-radius: 0
+ }
+
+ body.advsearch:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8:before, body.book:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.single:before, body.stat:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10:before, body:not(.blur):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.admin):not(.modal-open) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover:first-of-type:before, body:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10:before {
+ background: var(--color-background-mobile) !important;
+ width: 100%;
+ height: calc(100% - 90px);
+ display: block;
+ content: '';
+ position: fixed;
+ top: 90px;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 99999999999999999999999999999999999
+ }
+
+ body.advsearch:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8:after, body.book:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.single:after, body.stat:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > p:first-of-type:after, body:not(.blur):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.admin):not(.modal-open) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover:first-of-type:after, body:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10:after {
+ content: '';
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ border: 2px solid transparent;
+ border-radius: 50%;
+ border-top: 2px solid var(--color-secondary);
+ border-right: 2px solid var(--color-secondary);
+ width: 24px;
+ height: 24px;
+ -webkit-animation: loading .5s linear infinite;
+ animation: loading .5s linear infinite;
+ display: block;
+ top: 50%;
+ left: calc(50% - 12px);
+ position: fixed;
+ z-index: 999999999999999999999999999999999999
+ }
+
+ body:not(.blur) > .navbar > .container-fluid > .navbar-header:before {
+ content: "\EA30";
+ color: hsla(0, 0%, 100%, .7);
+ cursor: pointer;
+ display: block;
+ font-family: plex-icons-new;
+ font-size: 20px;
+ font-stretch: 100%;
+ font-style: normal;
+ font-variant-caps: normal;
+ font-variant-east-asian: normal;
+ -webkit-font-variant-ligatures: normal;
+ font-variant-ligatures: normal;
+ font-variant-numeric: normal;
+ font-weight: 400;
+ height: 48px;
+ letter-spacing: normal;
+ line-height: 48px;
+ position: absolute;
+ left: auto;
+ right: 20px
+ }
+
+ body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > #test {
+ border-top: 1px solid hsla(0, 0%, 78%, .15)
+ }
+
+ .col-sm-10 .book-meta > div.btn-toolbar {
+ position: relative;
+ top: 0;
+ width: calc(100% + 30px);
+ margin-left: -15px
+ }
+
+ .book-meta .btn-toolbar > h2 {
+ display: none
+ }
+
+ .book-meta .btn-toolbar > .btn-group {
+ float: none;
+ margin: auto
+ }
+
+ .btn-toolbar {
+ margin-left: 0
+ }
+
+ #shelf-actions {
+ width: 50px
+ }
+
+ div.btn-group[role=group][aria-label="Download, send to Kindle, reading"] {
+ display: block
+ }
+
+ .book-meta > .author > a:first-of-type::before, .book-meta > .bookinfo > .rating, .col-sm-10 .book-meta > div.btn-toolbar:after {
+ display: none
+ }
+
+ div.btn-group[role=group][aria-label="Download, send to Kindle, reading"] > .downloadBtn {
+ border-left: 0
+ }
+
+ .blur-wrapper {
+ display: none;
+ -o-transition: none;
+ transition: none;
+ -webkit-transition: none
+ }
+
+ body.book > div.container-fluid > div.row-fluid > div.col-sm-10 {
+ width: 100%;
+ top: 0;
+ height: calc(100% - 0px)
+ }
+
+ body > div.container-fluid > div > div.col-sm-10 > div.single {
+ width: 100%;
+ padding: 15px !important
+ }
+
+ body > div.container-fluid > div > div.col-sm-10 > div > div > div.col-sm-3.col-lg-3.col-xs-5 {
+ position: absolute;
+ height: 150px;
+ width: 100px;
+ padding: 0;
+ max-width: 100px;
+ margin-top: 75px
+ }
+
+ #bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-body > div > div > div > div.col-sm-3.col-lg-3.col-xs-5 > div.cover > img, body > div.container-fluid > div > div.col-sm-10 > div > div > div.col-sm-3.col-lg-3.col-xs-5 > div.cover > img {
+ width: 100px;
+ height: 150px
+ }
+
+ body > div.container-fluid > div > div.col-sm-10 > div > div > div.col-sm-9.col-lg-9.book-meta {
+ margin: 0;
+ width: 100%;
+ padding: 0
+ }
+
+ .book-meta > h2 {
+ max-width: 100%;
+ margin-left: 120px;
+ font-size: 16px;
+ padding: 15px 0 10px;
+ min-height: 60px;
+ line-height: 20px;
+ margin-top: 10px
+ }
+
+ .book-meta > .bookinfo > p:first-of-type, body.book .author {
+ margin-left: 120px;
+ line-height: 1
+ }
+
+ body.book .author {
+ font-size: 14px;
+ padding-bottom: 10px
+ }
+
+ .book-meta > .author:before {
+ content: "Author — ";
+ color: hsla(0, 0%, 100%, .45);
+ position: relative;
+ left: 0;
+ pointer-events: none
+ }
+
+ .book-meta > .bookinfo > .hr {
+ background: 0 0;
+ margin: 45px
+ }
+
+ .book-meta > .bookinfo > .publishing-date > span:last-of-type {
+ padding-left: 25px
+ }
+
+ .book-meta > .bookinfo > .publishers > span:last-of-type {
+ padding-left: 70px
+ }
+
+ .book-meta > .bookinfo > .languages > span:last-of-type {
+ padding-left: 65px
+ }
+
+ .book-meta > .bookinfo .publishers {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis
+ }
+
+ div.comments + [data-readmore-toggle], div.description + [data-readmore-toggle] {
+ text-align: center;
+ color: var(--color-secondary);
+ margin: 10px auto
+ }
+
+ div.comments + [data-readmore-toggle]:hover, div.description + [data-readmore-toggle]:hover {
+ color: #fff
+ }
+
+ .book-meta > .bookinfo > .comments[aria-expanded=false] + a:after, .book-meta > .description[aria-expanded=false] + a:after {
+ content: '';
+ display: inline-block;
+ border-color: var(--color-secondary);
+ width: 0;
+ height: 0;
+ border-bottom-width: 0;
+ border-right: 4px solid transparent;
+ border-top-width: 5px;
+ border-left: 4px solid transparent;
+ position: absolute;
+ -webkit-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ border-style: solid;
+ vertical-align: middle;
+ -webkit-transition: border .2s, -webkit-transform .4s;
+ -o-transition: border .2s, transform .4s;
+ transition: border .2s, transform .4s;
+ transition: border .2s, transform .4s, -webkit-transform .4s;
+ margin: 12px 6px
+ }
+
+ .book-meta > .bookinfo > .comments[aria-expanded=true] + a:after, .book-meta > .description[aria-expanded=true] + a:after {
+ content: '';
+ display: inline-block;
+ border-color: var(--color-secondary);
+ width: 10px;
+ height: 10px;
+ border-top-width: 0;
+ border-right: 4px solid transparent;
+ border-bottom-width: 5px;
+ border-left: 4px solid transparent;
+ position: absolute;
+ -webkit-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ border-style: solid;
+ vertical-align: middle;
+ -webkit-transition: border .2s, -webkit-transform .4s;
+ -o-transition: border .2s, transform .4s;
+ transition: border .2s, transform .4s;
+ transition: border .2s, transform .4s, -webkit-transform .4s;
+ margin: 9px 6px
+ }
+
+ body.author:not(.authorlist) .blur-wrapper:before, body.author > .container-fluid > .row-fluid > .col-sm-10 > h2:after {
+ content: "\e008";
+ font-family: 'Glyphicons Halflings';
+ font-weight: 400;
+ z-index: 9;
+ line-height: 1;
+ text-align: center
+ }
+
+ body.author:not(.authorlist) > div.container-fluid > div > div.col-sm-10 {
+ width: 100%;
+ left: 0;
+ padding: 10px
+ }
+
+ .author > .container-fluid > .row-fluid > .col-sm-10 > h2 {
+ float: right;
+ width: 100%;
+ margin: 0;
+ border-bottom: 1px solid hsla(0, 0%, 78%, .15);
+ padding: 20px 0 0 135px;
+ min-height: 140px;
+ overflow: hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis
+ }
+
+ .author > .container-fluid > .row-fluid > .col-sm-10 > .author-bio > img {
+ position: absolute;
+ left: 25px;
+ top: 25px;
+ width: 100px;
+ height: 100px;
+ z-index: 9;
+ border-radius: 50%
+ }
+
+ body.author > .container-fluid > .row-fluid > .col-sm-10 > h2:after {
+ font-style: normal;
+ font-size: 8vw;
+ position: absolute;
+ left: 25px;
+ top: 26px;
+ width: 100px;
+ height: 100px
+ }
+
+ body.author:not(.authorlist) .blur-wrapper {
+ display: block;
+ background: var(--color-background-mobile)
+ }
+
+ body.author:not(.authorlist) .blur-wrapper > img {
+ opacity: 0;
+ -webkit-animation: none;
+ animation: none;
+ -moz-animation: none;
+ -o-animation: none
+ }
+
+ body.author:not(.authorlist) .blur-wrapper:before {
+ position: fixed;
+ top: 62px;
+ right: 23px;
+ left: auto;
+ width: auto;
+ height: auto;
+ font-size: 14px;
+ color: hsla(0, 0%, 100%, .7)
+ }
+
+ .author > .container-fluid > .row-fluid > .col-sm-10 > h2 + .discover > .row {
+ padding-top: 30px
+ }
+
+ body.author > div.container-fluid > div > div.col-sm-10 > div.discover {
+ padding: 0 !important
+ }
+
+ .author > .container-fluid > .row-fluid > .col-sm-10 > .author-bio {
+ margin-top: 125px
+ }
+
+ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 {
+ float: left;
+ width: 100%;
+ margin-bottom: 10px;
+ grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)) !important
+ }
+
+ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 {
+ margin-bottom: 20px;
+ padding-right: 15px
+ }
+
+ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2, body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 {
+ height: 150px;
+ padding: 0;
+ margin: 7.5px auto
+ }
+
+ body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover {
+ padding: 15px 0 !important
+ }
+
+ body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover > form > .btn.btn-default {
+ display: block;
+ margin: 10px 15px 0 100%
+ }
+
+ body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover > form > a.btn.btn-default {
+ margin-bottom: 15px
+ }
+
+ .shelforder #sortTrue > .list-group-item:nth-of-type(even) {
+ background: 0 0
+ }
+
+ body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 {
+ max-width: 130px;
+ width: 130px;
+ height: 180px;
+ margin: 0;
+ padding: 15px;
+ position: absolute
+ }
+
+ body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 {
+ padding: 15px;
+ margin: 0 !important;
+ width: 100%
+ }
+
+ body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 > .form-group:nth-child(1), body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 > .form-group:nth-child(2), body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 > .form-group:nth-child(1), body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 > .form-group:nth-child(2) {
+ padding-left: 120px
+ }
+
+ #deleteButton, body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete {
+ top: 48px;
+ height: 42px
+ }
+
+ #metaModal {
+ padding: 0;
+ background: var(--color-background-mobile)
+ }
+
+ #main-nav + #scnd-nav li.open a:hover, #main-nav + #scnd-nav > li > a:hover {
+ background: 0 0
+ }
+
+ #metaModal > .modal-dialog {
+ margin: 5px
+ }
+
+ #metaModal > .modal-dialog > .modal-content {
+ max-height: 100%
+ }
+
+ #meta-info {
+ max-height: calc(100vh - 224px)
+ }
+
+ #metaModal > .modal-dialog > .modal-content > .modal-header > div {
+ display: none
+ }
+
+ #meta-info #book-list .media > .media-body {
+ font-size: 12px;
+ line-height: 16px
+ }
+
+ #metaModal > .modal-dialog > .modal-content > .modal-header > #meta-search {
+ margin: 0
+ }
+
+ #metaModal > .modal-dialog > .modal-content > .modal-header, #metaModal > .modal-dialog > .modal-content > .modal-header > h4 {
+ border-radius: 8px 8px 0 0
+ }
+
+ #metaModal > .modal-dialog > .modal-content {
+ border-radius: 8px
+ }
+
+ .blur-wrapper:after {
+ content: none
+ }
+
+ #main-nav + #scnd-nav {
+ position: relative;
+ top: 0;
+ padding: 0;
+ overflow: hidden;
+ height: auto;
+ width: auto;
+ margin-bottom: 10px
+ }
+
+ #main-nav + #scnd-nav li.nav-head {
+ margin: 0;
+ color: hsla(0, 0%, 100%, .45);
+ text-transform: uppercase;
+ font-size: 12px;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ line-height: 60px;
+ padding-left: 15px;
+ height: 60px;
+ min-height: 60px
+ }
+
+ #main-nav + #scnd-nav > li {
+ min-height: 45px;
+ max-width: 265px;
+ overflow: visible;
+ border-radius: 0 4px 4px 0
+ }
+
+ #main-nav + #scnd-nav > li > a {
+ color: #fff;
+ text-decoration: none;
+ padding: 11.5px 15px;
+ font-size: 13px;
+ height: 45px;
+ line-height: 1.71428571;
+ width: 100%;
+ white-space: nowrap;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ overflow: hidden
+ }
+
+ #main-nav + #scnd-nav li a span.caret {
+ position: absolute;
+ left: 210px;
+ top: 20px
+ }
+
+ #main-nav + #scnd-nav .open .dropdown-menu {
+ position: absolute
+ }
+
+ #main-nav + #scnd-nav li.open ul.dropdown-menu a:hover {
+ background: hsla(0, 0%, 100%, .08);
+ color: #fff
+ }
+
+ #main-nav + #scnd-nav li a .glyphicon-star {
+ color: #fff
+ }
+
+ #main-nav + #scnd-nav .create-shelf {
+ width: 25px;
+ margin: 17.5px 0 0;
+ min-height: auto;
+ float: right
+ }
+
+ #main-nav + #scnd-nav .nav-head.hidden-xs {
+ display: list-item !important;
+ width: 225px
+ }
+
+ .shelforder #sortTrue > div:before {
+ opacity: 1;
+ pointer-events: auto;
+ margin-left: 0;
+ margin-right: 0;
+ padding-left: 15px;
+ padding-right: 30px
+ }
+
+ .shelforder #sortTrue > .list-group-item {
+ width: 78px;
+ overflow: visible;
+ color: #eee;
+ pointer-events: none
+ }
+
+ .shelforder #sortTrue > div:hover {
+ background-color: transparent !important
+ }
+
+ #RestartDialog > .modal-dialog, #ShutdownDialog > .modal-dialog, #StatusDialog > .modal-dialog, #deleteModal > .modal-dialog {
+ max-width: calc(100vw - 40px)
+ }
+
+ #RestartDialog > .modal-dialog > .modal-content, #ShutdownDialog > .modal-dialog > .modal-content, #StatusDialog > .modal-dialog > .modal-content, #deleteModal > .modal-dialog > .modal-content {
+ max-width: calc(100vw - 40px);
+ left: 0
+ }
+
+ .rating-mobile {
+ display: block;
+ text-align: center;
+ margin: 30px 0 20px
+ }
+
+ .rating-mobile .glyphicon-star.good {
+ color: hsla(0, 0%, 100%, .7)
+ }
+
+ .rating-mobile .glyphicon-star {
+ color: hsla(0, 0%, 100%, .25)
+ }
+
+ body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group {
+ height: 60px
+ }
+
+ body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [data-target="#DeleteShelfDialog"], body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=edit], body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=order] {
+ height: 40px;
+ width: 40px;
+ padding: 0;
+ margin: 10px 15px;
+ border-radius: 50%
+ }
+
+ body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [data-target="#DeleteShelfDialog"]:before, body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=edit]:before, body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=order]:before {
+ padding: 0 0 0 10px;
+ line-height: 40px
+ }
+
+ .collapsing {
+ -webkit-transition: all 0s;
+ transition: all 0s
+ }
+
+ .navbar-collapse.collapse.in {
+ visibility: visible;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ -webkit-transition: -webkit-transform .5s;
+ -o-transition: transform .5s;
+ transition: transform .5s;
+ transition: transform .5s, -webkit-transform .5s;
+ z-index: 99
+ }
+
+ .navbar-collapse {
+ border: 0;
+ width: 240px;
+ height: 100% !important;
+ overflow: hidden;
+ visibility: visible;
+ -webkit-transform: translate3d(-240px, 0, 0);
+ transform: translate3d(-240px, 0, 0);
+ -webkit-transition: -webkit-transform .5s;
+ -o-transition: transform .5s;
+ transition: transform .5s;
+ transition: transform .5s, -webkit-transform .5s;
+ top: 0;
+ margin: 0;
+ position: fixed;
+ display: block;
+ opacity: 1
+ }
+
+ .navbar-collapse:not(.in) > * {
+ margin: 0 !important
+ }
+
+ .navbar-collapse.collapse.in + .sidebar-backdrop {
+ width: calc(100vw);
+ height: 100%;
+ position: fixed;
+ top: 0;
+ left: 0;
+ background: rgba(0, 0, 0, .75);
+ -webkit-transition: all .5s;
+ -o-transition: all .5s;
+ transition: all .5s;
+ z-index: 9;
+ visibility: visible;
+ opacity: 1
+ }
+
+ .alert {
+ width: 90%;
+ max-width: 500px
+ }
+
+ .col-xs-12 > .row > .col-xs-2 {
+ position: absolute;
+ padding: 15px 0 0;
+ text-align: center;
+ min-width: 40px;
+ pointer-events: none;
+ color: #
+ }
+
+ .col-xs-12 > .row > .col-xs-10 {
+ padding: 0;
+ width: 100%;
+ height: 100%;
+ float: right;
+ max-width: calc(100vw - 40px)
+ }
+
+ .col-xs-12 > .row > .col-xs-10 > a {
+ padding: 15px 15px 15px 16.66666667%;
+ display: block;
+ color: #eee
+ }
+
+ .col-xs-12 > .row > .col-xs-10 > a:hover {
+ color: #eee;
+ text-decoration: none
+ }
+
+ body > div.container-fluid > div > div.col-sm-10 > div.container > div > .row:nth-of-type(even) {
+ background: 0 0
+ }
+
+ body > div.container-fluid > div > div.col-sm-10 > div.container > div > .row {
+ border-bottom: 1px solid hsla(0, 0%, 78%, .15)
+ }
+
+ .col-xs-12 > .row > .col-xs-10:after {
+ content: '';
+ position: absolute;
+ width: 0;
+ height: 0;
+ right: 13px;
+ top: 50%;
+ vertical-align: middle;
+ border-left: 5px dashed;
+ border-top: 4px solid transparent;
+ border-bottom: 4px solid transparent;
+ pointer-events: none;
+ color: #eee
+ }
+}
+
+@media only screen and (max-width: 500px) {
+ .login .well > form {
+ padding: 30px 15px
+ }
+
+ #RestartDialog.in:before, #ShutdownDialog.in:before, #StatusDialog.in:before, #deleteModal.in:before {
+ left: auto;
+ right: 34px
+ }
+}
+
+@media only screen and (max-width: 490px) {
+ #DeleteShelfDialog:before {
+ left: auto;
+ right: 34px
+ }
+}
+
+@media only screen and (max-width: 500px) and (max-height: 600px) {
+ body.login .well {
+ padding: 0 !important
+ }
+}
+
+#btnGroupDrop1 > span.caret {
+ position: absolute;
+ margin-left: 0;
+ left: 33px;
+ top: 28px
+}
+
+#btnGroupDrop1 > span.glyphicon-download:before {
+ margin-left: 8px
+}
+
+#read-in-browser > span.caret, .btn-toolbar > .btn-group > #btnGroupDrop2 > span.caret, .btn-toolbar > .btn-group > .btn-group > #btnGroupDrop2 > span.caret {
+ position: absolute;
+ margin-left: 0;
+ left: 33px;
+ top: 28px
+}
+
+#read-in-browser > span.glyphicon-eye-open:before, .btn-toolbar > .btn-group > .btn-group > #btnGroupDrop2 > span.glyphicon-eye-open:before {
+ margin-left: 8px
+}
+
+#add-to-shelf > span.caret {
+ position: absolute;
+ margin-left: 0;
+ left: 33px;
+ top: 28px
+}
+
+#add-to-shelf > span.glyphicon.glyphicon-list:before {
+ margin-left: 8px
+}
+
+.container-fluid .book .meta .author, .container-fluid .book .meta .title {
+ max-width: 150px;
+ overflow: hidden;
+ text-overflow: ellipsis
+}
+
+body.publisherlist > div.container-fluid > div > div.col-sm-10:before {
+ content: "\e241";
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1;
+ font-size: 6vw;
+ position: fixed;
+ left: 240px;
+ top: 240px;
+ width: calc(20% - 55px);
+ text-align: center
+}
+
+@media screen and (max-width: 992px) {
+ body.publisherlist > div.container-fluid > div > div.col-sm-10:before {
+ top: 180px;
+ }
+}
+
+body.ratingslist > div.container-fluid > div > div.col-sm-10:before {
+ content: "\e007";
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1;
+ font-size: 6vw;
+ position: fixed;
+ left: 240px;
+ top: 240px;
+ width: calc(20% - 55px);
+ text-align: center
+}
+
+@media screen and (max-width: 992px) {
+ body.ratingslist > div.container-fluid > div > div.col-sm-10:before {
+ top: 180px;
+ }
+}
+
+@media screen and (max-width: 768px) {
+ body.ratingslist > div.container-fluid > div > div.col-sm-10:before {
+ display: none;
+ }
+}
+
+body.formatslist > div.container-fluid > div > div.col-sm-10:before {
+ content: "\e022";
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1;
+ font-size: 6vw;
+ position: fixed;
+ left: 240px;
+ top: 240px;
+ width: calc(20% - 55px);
+ text-align: center
+}
+
+@media screen and (max-width: 992px) {
+ body.formatslist > div.container-fluid > div > div.col-sm-10:before {
+ top: 180px;
+ }
+}
+
+@media screen and (max-width: 768px) {
+ body.formatslist > div.container-fluid > div > div.col-sm-10:before {
+ display: none;
+ }
+}
+
+body.publisherlist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ content: "Publishers";
+ top: 115px;
+ font-size: 24px;
+ color: #eee;
+ line-height: 1;
+ padding-left: 15px;
+ position: absolute;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ font-weight: 400
+}
+
+@media screen and (max-width: 992px) {
+ body.publisherlist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ top: 60px;
+ }
+}
+
+body.ratingslist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ content: "Ratings";
+ top: 115px;
+ font-size: 24px;
+ color: #eee;
+ line-height: 1;
+ padding-left: 15px;
+ position: absolute;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ font-weight: 400
+}
+
+@media screen and (max-width: 992px) {
+ body.ratingslist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ top: 60px;
+ }
+}
+
+@media screen and (max-width: 768px) {
+ body.ratingslist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ display: none;
+ }
+}
+
+body.formatslist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ content: "File formats";
+ top: 115px;
+ font-size: 24px;
+ color: #eee;
+ line-height: 1;
+ padding-left: 15px;
+ position: absolute;
+ font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif;
+ font-weight: 400
+}
+
+@media screen and (max-width: 992px) {
+ body.formatslist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ top: 60px;
+ }
+}
+
+@media screen and (max-width: 768px) {
+ body.formatslist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ display: none;
+ }
+}
+
+body.publisherlist > div.container-fluid > div > div.col-sm-10 > div.container > div.col-sm-6 {
+ width: 100%
+}
+
+#have_read_cb + label:before, #have_read_cb:checked + label:before, div[aria-label="Edit/Delete book"] > .btn-warning > span:before {
+ line-height: 1.1
+}
+
+@media only screen and (min-width: 768px) {
+ body.author:not(.authorlist) .undefined-img {
+ background-image: url(images/caliblur/blur-light.png) !important;
+ background-size: cover !important;
+ -webkit-background-size: cover !important;
+ -moz-background-size: cover !important;
+ -o-background-size: cover !important;
+ opacity: 1;
+ -webkit-filter: none;
+ filter: none;
+ width: 100vw;
+ height: 100%;
+ position: fixed;
+ top: 0;
+ left: 0;
+ content: ''
+ }
+}
+
+@media only screen and (max-width: 767px) {
+ body.publisherlist > div.container-fluid > div.row-fluid > div.col-sm-10:before {
+ position: fixed;
+ top: 62px;
+ right: 23px;
+ left: auto;
+ width: auto;
+ height: auto;
+ font-size: 14px;
+ color: hsla(0, 0%, 100%, .7)
+ }
+
+ body.publisherlist > div.container-fluid > div > div.col-sm-10 > div.container:before {
+ display: none !important
+ }
+}
+
+body.advanced_search > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > div .twitter-typeahead .tt-hint {
+ background-color: hsla(0, 0%, 100%, .08) !important
+}
+
+@media only screen and (min-width: 767px) and (max-width: 811px) {
+ body.author > div.container-fluid > div > div.col-sm-10 > div.discover {
+ width: calc(100% + 20px);
+ padding: 0 !important
+ }
+}
+
+body.mailset.admin > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type:before {
+ display: none
+}
+
+body.mailset.admin > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type {
+ margin-top: 90px;
+ padding-left: 15px
+}
+
+body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .fixed-table-container {
+ border: none;
+ padding-left: 15px;
+ margin-bottom: 30px
+}
+
+body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .fixed-table-container .table-hover > tbody > tr:hover {
+ background-color: transparent
+}
+
+body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .bootstrap-table .table {
+ border-radius: 0;
+ border-bottom: 0
+}
+
+body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .editable-buttons > button {
+ height: 40px
+}
+
+body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .glyphicon-trash:before {
+ content: "\EA6D";
+ font-family: plex-icons-new
+}
+
+#DeleteDomain {
+ top: 0;
+ overflow: hidden;
+ padding-top: 70px;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: rgba(0, 0, 0, .5)
+}
+
+#DeleteDomain.in:before {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ transform: translate(0, 0)
+}
+
+#DeleteDomain:before {
+ content: "\E208";
+ padding-right: 10px;
+ display: block;
+ font-family: Glyphicons Regular;
+ font-style: normal;
+ font-weight: 400;
+ position: absolute;
+ left: calc(50% + 185px);
+ top: 88px;
+ font-size: 16px;
+ color: #eee;
+ opacity: .5;
+ -webkit-transition: -webkit-transform .3s ease-out;
+ -o-transition: transform .3s ease-out;
+ transition: transform .3s ease-out;
+ transition: transform .3s ease-out, -webkit-transform .3s ease-out;
+ -webkit-transform: translate(0, -60px);
+ -ms-transform: translate(0, -60px);
+ transform: translate(0, -60px);
+ z-index: 99
+}
+
+#DeleteDomain > .modal-dialog {
+ width: 450px;
+ margin: auto
+}
+
+#DeleteDomain > .modal-dialog > .modal-content {
+ max-height: calc(100% - 90px);
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ border-radius: 3px;
+ z-index: 9999999999999999999999;
+ left: calc(50% - 225px);
+ right: auto;
+ width: 450px
+}
+
+#DeleteDomain > .modal-dialog > .modal-content > .modal-header {
+ padding: 15px 20px;
+ border-radius: 3px 3px 0 0;
+ line-height: 1.71428571;
+ vertical-align: bottom;
+ font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif;
+ font-weight: 400;
+ color: #eee;
+ border-bottom: 1px solid #222;
+ background-color: #323232;
+ text-align: left
+}
+
+#DeleteDomain > .modal-dialog > .modal-content > .modal-header:before {
+ content: "\EA6D";
+ font-family: plex-icons-new;
+ padding-right: 10px;
+ font-size: 18px;
+ color: #999;
+ font-style: normal;
+ font-weight: 400;
+ display: inline-block
+}
+
+#DeleteDomain > .modal-dialog > .modal-content > .modal-header:after {
+ content: "Remove Domain";
+ display: inline-block;
+ font-size: 20px
+}
+
+#DeleteDomain > .modal-dialog > .modal-content > .modal-body, #DeleteDomain > .modal-dialog > .modal-content > .modal-body > p {
+ font-size: 16px;
+ line-height: 1.6em;
+ font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif;
+ color: #eee;
+ background: #282828
+}
+
+#DeleteDomain > .modal-dialog > .modal-content > .modal-body {
+ padding: 20px 20px 40px;
+ text-align: left
+}
+
+#DeleteDomain > .modal-dialog > .modal-content > .modal-body > p {
+ padding: 20px 20px 0 0
+}
+
+#DeleteDomain > .modal-dialog > .modal-content > .modal-body > #btndeletedomain, #DeleteDomain > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#btndeletedomain) {
+ margin: 55px 0 0 10px;
+ float: right;
+ z-index: 9;
+ position: relative;
+ min-width: 80px;
+ padding: 10px 18px;
+ font-size: 16px;
+ line-height: 1.33;
+ border-radius: 3px
+}
+
+#DeleteDomain > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#btndeletedomain) {
+ background-color: hsla(0, 0%, 100%, .25)
+}
+
+#DeleteDomain > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#btndeletedomain):hover {
+ background-color: hsla(0, 0%, 100%, .3)
+}
+
+#DeleteDomain > .modal-dialog > .modal-content > .modal-body:after {
+ content: '';
+ position: absolute;
+ width: 100%;
+ height: 72px;
+ background-color: #323232;
+ border-radius: 0 0 3px 3px;
+ left: 0;
+ margin-top: 40px;
+ z-index: 0;
+ border-top: 1px solid #222;
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, .5)
+}
+
+@media only screen and (max-width: 500px) {
+ #DeleteDomain.in:before {
+ left: auto;
+ right: 34px
+ }
+}
+
+@media only screen and (max-width: 767px) {
+ #DeleteDomain > .modal-dialog {
+ max-width: calc(100vw - 40px)
+ }
+
+ #DeleteDomain > .modal-dialog > .modal-content {
+ max-width: calc(100vw - 40px);
+ left: 0
+ }
+}
+
+#sendbtn2 {
+ background: 0 0;
+ color: transparent;
+ width: 50px;
+ height: 60px;
+ margin: 0;
+ overflow: hidden;
+ padding: 0
+}
+
+#sendbtn2 > span {
+ color: hsla(0, 0%, 100%, .7)
+}
+
+#sendbtn2 > span.glyphicon-send:before {
+ margin-left: 8px
+}
+
+#sendbtn2 > span.caret {
+ position: absolute;
+ margin-left: 0;
+ left: 33px;
+ top: 28px;
+ padding-bottom: 5px
+}
+
+#sendbtn2:focus span, #sendbtn2:hover span {
+ color: #fff
+}
+
+#sendbtn2[aria-expanded=true] {
+ pointer-events: none
+}
+
+div.comments + [data-readmore-toggle], div.comments[data-readmore] {
+ display: block;
+ width: 100%
+}
+
+div.comments[data-readmore] {
+ transition: height 300ms;
+ overflow: hidden
+}
diff --git a/cps/static/css/caliBlur.min.css b/cps/static/css/caliBlur.min.css
deleted file mode 100644
index 839e84fab..000000000
--- a/cps/static/css/caliBlur.min.css
+++ /dev/null
@@ -1 +0,0 @@
-.form-control,.home-btn,.home-btn>a,body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a{font-variant-caps:normal;font-variant-numeric:normal;font-weight:400;font-style:normal;letter-spacing:normal}.pagination,.plexBack.noBack,.root .plexBack,.root .plexBack>a{cursor:default}.navigation li a,.shelforder #sortTrue>div{-o-text-overflow:ellipsis;text-overflow:ellipsis}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2:before,body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a{line-height:60px;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;-webkit-box-direction:normal;white-space:nowrap}@font-face{font-family:Open Sans Regular;font-weight:400;font-style:normal;src:url(data:application/font-woff;base64,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) format("woff")}@font-face{font-family:Open Sans Semibold;font-style:normal;font-weight:400;src:url(data:application/font-woff;base64,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) format("woff")}@font-face{font-family:Open Sans Bold;font-weight:400;font-style:normal;src:url(data:application/font-woff;base64,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) format("woff")}@font-face{font-family:plex-icons-new;src:url(data:application/font-woff;base64,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) format("woff")}@font-face{font-family:plex-icons;src:url(data:application/font-woff;base64,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) format("woff")}@font-face{font-family:Glyphicons Regular;src:url(data:application/font-woff;base64,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) format("woff");font-weight:400;font-style:normal}@font-face{font-family:Glyphicons Social Regular;src:url(data:application/font-woff;base64,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) format("woff");font-weight:400;font-style:normal}:root{--color-background:#474747;--color-primary:#F9BE03;--color-secondary:#CC7B19;--color-secondary-hover:#E59029;--color-background-mobile:#1f1f1f}@-webkit-keyframes fade{0%{opacity:.1}50%{opacity:.2}75%{opacity:.3}100%{opacity:.4}}@keyframes fade{0%{opacity:.1}50%{opacity:.2}75%{opacity:.3}100%{opacity:.4}}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes cssAnimation{to{width:0;height:0;overflow:hidden}}@-webkit-keyframes cssAnimation{to{width:0;height:0;visibility:hidden}}@-webkit-keyframes loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@media only screen and (max-width:991px) and (min-width:768px){body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>a>span:before{font-size:18px}#main-nav+.col-sm-2{position:fixed;width:240px;height:calc(100% - 120px);left:0;top:120px;background:rgba(0,0,0,.15);padding:0 5px 20px 0;overflow-y:auto}#main-nav+.col-sm-2:after{width:100%;height:60px;background:rgba(0,0,0,.15);display:block;content:'';position:fixed;top:60px;left:240px;pointer-events:none}}@media only screen and (max-height:600px){body.login>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a{padding:0!important;height:60px!important}body.login>div.container-fluid>div.row-fluid>div.col-sm-10{top:60px!important}body.login .well{padding:0 60px!important}}body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>a[href*=advanced_search]{display:none}body.blur .row-fluid .col-sm-10{-webkit-animation:fadeIn 1s linear 1;animation:fadeIn 1s linear 1}.col-sm-10 .book-meta>div.btn-toolbar:after{content:'';direction:block;position:fixed;top:120px;right:0;width:300px;height:7px;z-index:999999999999999999999999999999999999999999999999999999}.plexBack.noBack>a{color:hsla(0,0%,100%,.45);pointer-events:none;cursor:default}.root .plexBack>a{color:hsla(0,0%,100%,.45)!important;pointer-events:none}#scnd-nav>li.active a,.authorlist #nav_author a,.catlist #nav_cat a,.langlist #nav_lang a,.serieslist #nav_serie a{color:var(--color-primary)}#scnd-nav>li.active:hover a,.authorlist #nav_author:hover a,.catlist #nav_cat:hover a,.langlist #nav_lang:hover a,.serieslist #nav_serie:hover a{color:#fff;-webkit-transition:all 0s;-o-transition:all 0s;transition:all 0s}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus{color:var(--color-primary);background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:hsla(0,0%,100%,.08)}.a-z #scnd-nav>li.dropdown>a,.newest #scnd-nav>li.dropdown>a,.oldest #scnd-nav>li.dropdown>a,.z-a #scnd-nav>li.dropdown>a{color:var(--color-primary)}.a-z #scnd-nav>li.dropdown:hover>a,.newest #scnd-nav>li.dropdown:hover>a,.oldest #scnd-nav>li.dropdown:hover>a,.z-a #scnd-nav>li.dropdown:hover>a{color:#fff!important;-webkit-transition:all 0s;-o-transition:all 0s;transition:all 0s}.readbooks #scnd-nav>li.active a[href*=unreadbooks]{color:hsla(0,0%,100%,.7)}.readbooks #scnd-nav>li.active a[href*=unreadbooks]:hover{color:#fff}.unreadbooks #scnd-nav>li.active a[href*=readbooks]{color:hsla(0,0%,100%,.7)}.unreadbooks #scnd-nav>li.active a[href*=readbooks]:hover{color:#fff}.unreadbooks #scnd-nav>li.active a[href*=unreadbooks]{color:var(--color-primary)}.shelforder #sortTrue>.list-group-item{background:0 0;border-radius:0;border:none}.shelforder #sortTrue{border-top:2px solid rgba(0,0,0,.3);border-bottom:2px solid rgba(0,0,0,.3);padding:0}.shelforder #sortTrue>.list-group-item:nth-of-type(even){background:hsla(0,0%,100%,.02)}.shelforder>.container-fluid>.row-fluid>.col-sm-10>.col-sm-6{margin-left:calc(20%);width:calc(80% - 30px)}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2:before{content:"Reorder Shelf";width:calc(100vw - 240px);height:60px;margin:0;padding-left:25px;color:hsla(0,0%,100%,.7);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;-webkit-font-smoothing:antialiased;font-weight:400;-webkit-margin-before:0;-webkit-margin-after:0;position:fixed;top:60px;left:240px;text-align:left}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2{font-size:24px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;font-weight:400;line-height:1;margin:0;padding:60px 15px 40px;width:100%;height:auto;top:auto;left:auto;position:relative;border-bottom:2px solid rgba(0,0,0,.3)}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2+div{margin-top:90px;font-size:15px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:24px;padding:15px;color:#eee;text-transform:uppercase}.home-btn>a,body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a{text-transform:none;-moz-user-select:none;-ms-user-select:none;-webkit-font-smoothing:antialiased}.shelforder #sortTrue>div{padding:0 15px;margin:0;vertical-align:bottom;overflow:hidden;white-space:nowrap;min-height:50px;line-height:50px;color:hsla(0,0%,100%,.6)}.shelforder #sortTrue>div:hover{background-color:hsla(0,0%,100%,.06)!important;cursor:move;cursor:grab;cursor:-webkit-grab;color:#eee}.shelforder #sortTrue>div:active{cursor:grabbing;cursor:-webkit-grabbing}.shelforder #sortTrue>div:before{content:"\EA53";font-family:plex-icons-new;margin-right:30px;margin-left:15px;vertical-align:bottom;display:inline-block;font-weight:400;font-size:18px;opacity:0}.shelforder #sortTrue>div:hover:before{opacity:1;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.shelforder #ChangeOrder{float:right;margin:30px 0 60px}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>a{float:right;background-color:hsla(0,0%,100%,.25);color:#fff;margin:30px 10px 60px 0}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>a:hover{background-color:hsla(0,0%,100%,.3)}body.shelforder>div.container-fluid>div.row-fluid>div.col-sm-10:before{content:"\e155";font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;font-size:6vw;position:fixed;left:240px;top:180px;width:calc(20% - 55px);text-align:center}#have_read_form{display:inline-block;float:left}#have_read_form>label{margin:0;top:0;height:60px}#have_read_form>label>label{position:relative;width:1px;height:1px;top:0}#have_read_form:hover label:before{color:#fff!important}#have_read_form span,div[aria-label="Download, send to Kindle, reading"]>.btn-group:first-child>p:first-child,div[aria-label="Download, send to Kindle, reading"]>.btn-group:first-child>p:last-child{display:none}#have_read_cb{opacity:0;height:60px;width:50px;cursor:pointer;margin:0;display:inline-block}#have_read_cb+label:before,#have_read_cb:checked+label:before{font-family:'Glyphicons Halflings';font-size:16px;height:40px;width:60px;top:-48px;left:16px;z-index:-999999999999999999999999999999999999999999999999999999;font-style:normal;font-weight:400;display:inline-block;position:absolute;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#have_read_cb:checked+label:before{content:"\e105";color:var(--color-primary)}#have_read_cb+label:before{content:"\e106";color:hsla(0,0%,100%,.7)}div.btn-group[role=group][aria-label="Download, send to Kindle, reading"]>.downloadBtn{border-left:2px solid rgba(0,0,0,.15)}div[aria-label="Edit/Delete book"]>.btn-warning{width:50px;height:60px;margin:0;overflow:hidden;display:inline-block;padding:0;line-height:1.71428571;text-align:center;vertical-align:middle;cursor:pointer;background:0 0;color:transparent}div[aria-label="Edit/Delete book"]>.btn-warning>span{visibility:visible;position:relative;display:inline-block;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:hsla(0,0%,100%,.7);text-align:center;white-space:nowrap;cursor:pointer;margin:auto}div[aria-label="Edit/Delete book"]>.btn-warning>span:before{content:"\EA5d";font-family:plex-icons;font-size:20px;padding:16px 15px;display:inline-block;height:60px}div[aria-label="Edit/Delete book"]>.btn-warning>span:hover{color:#fff}.download-text:not(#btnGroupDrop1){display:none!important}.advanced_search #scnd-nav>li>a[href*=advanced_search]{color:var(--color-primary)}.book{width:225px;max-width:225px;position:relative!important;left:auto!important;top:auto!important;-webkit-transform:none!important;-ms-transform:none!important;transform:none!important;min-width:225px;display:block}#infscr-loading img,body>div.container-fluid>div>div.col-sm-10>div.discover>div.isotope:after,body>div.container-fluid>div>div.col-sm-10>div.discover>div.isotope:before{display:none}#infscr-loading:before{content:'';-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-radius:50%;border-top:2px solid var(--color-secondary);width:24px;height:24px;-webkit-animation:spin .5s linear infinite;animation:spin .5s linear infinite;display:block;margin:20px auto;position:fixed;top:calc(50% - 12px);left:calc(50% - 12px);z-index:999999}#loader>center:after,.app-loading:before{-webkit-animation:spin .5s linear infinite}a{color:hsla(0,0%,100%,.45)}a:hover{-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s;color:#fff}#titlebar a{color:#4f4f4f}#titlebar a:hover{cursor:pointer}body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a{margin:60px auto auto!important;width:240px;height:60px;text-align:left;color:var(--color-primary)!important;font-size:15px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;font-stretch:normal;-webkit-font-variant-ligatures:normal;font-variant-ligatures:normal;text-shadow:none;-webkit-user-select:none;user-select:none;word-spacing:0;-webkit-writing-mode:horizontal-tb;-ms-writing-mode:lr-tb;writing-mode:horizontal-tb;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden;background:rgba(0,0,0,.45);padding:0 20px}.home-btn,.home-btn>a{-webkit-font-variant-ligatures:normal;top:0;cursor:pointer;display:block;font-size:20px;height:60px;font-variant-ligatures:normal}.btn,.home-btn>a,.plexBack>a,input.pill+label{-webkit-user-select:none}.form-control,.home-btn,.home-btn>a{font-variant-east-asian:normal;font-stretch:100%}.home-btn>a,.plexBack>a{-webkit-text-decoration-color:hsla(0,0%,100%,.7);text-decoration-color:hsla(0,0%,100%,.7);-webkit-text-decoration-line:none;text-decoration-line:none;-webkit-text-decoration-style:solid;text-decoration-style:solid;text-rendering:optimizeLegibility;-webkit-writing-mode:horizontal-tb;-webkit-box-sizing:border-box;box-sizing:border-box;speak:none;text-shadow:none;word-spacing:0;-ms-writing-mode:lr-tb;writing-mode:horizontal-tb}.home-btn{color:hsla(0,0%,100%,.7);line-height:34.29px;margin:0;padding:0;position:absolute;width:40px;left:10px}.home-btn>a{color:rgba(255,255,255,.7);font-family:plex-icons-new;line-height:60px;position:relative;text-align:center;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;user-select:none;vertical-align:middle;width:100%;-webkit-box-direction:normal;padding:0 10px}.btn,input.pill+label{-moz-user-select:none;-ms-user-select:none}.home-btn>a:before{content:"\EA30"}body>div.navbar.navbar-default.navbar-static-top>div>div.home-btn>a:hover:before{color:#fff}.glyphicon-search:before{content:"\EA4F";font-family:plex-icons}#nav_about:after,.profileDrop>span:after,.profileDrop>span:before{content:''}.navbar-default{background-color:rgba(0,0,0,.6)!important;border:none;position:fixed;width:100%;height:60px;z-index:-9}body:not(.read-frame){background-image:url(images/caliblur/blur-noise.png),url(images/caliblur/blur-light.png)!important;background-repeat:repeat,no-repeat!important;background-attachment:fixed,fixed!important;background-position:center center,center center!important;background-size:auto,cover!important;-webkit-background-size:auto,cover!important;-moz-background-size:auto,cover!important;-o-background-size:auto,cover!important;line-height:1.71428571;background:url(images/caliblur/blur-noise.png),var(--color-background);color:hsla(0,0%,100%,.45);font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;overflow:hidden;margin:0}body>div.navbar.navbar-default.navbar-static-top>div>form>div{width:360px}body>div.navbar.navbar-default.navbar-static-top>div>form>div>span.input-group-btn{opacity:0;pointer-events:none;z-index:9999999999999999999999999999999999999999999999999999999999999999999999999999999999}body>div.navbar.navbar-default.navbar-static-top>div>form.search-focus>div>span.input-group-btn{opacity:1;pointer-events:auto}.profileDrop{width:60px;height:60px;padding:0!important;background:0 0!important}.profileDrop>span{width:30px;height:30px;margin:15px;top:0}.profileDrop>span:before{display:inline-block;overflow:hidden;border-radius:50%;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K);background-size:contain;position:absolute;width:30px;height:30px}.profileDrop>span:after{display:inline-block;width:0;height:0;margin:15px 0 0 35px;vertical-align:middle;border-top:5px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.top_tasks{float:left!important}.navbar{z-index:9!important}.profileDropli>li>a>span.glyphicon{display:none}.profileDropli>li>a>span.hidden-sm{display:inline!important}#nav_about:after{width:100%;height:1px;background-color:hsla(0,0%,78%,.15);display:block;margin:5px 0}#btn-upload{min-width:1px;min-height:1px;width:50px;height:60px;left:0;line-height:1;font-size:1px}#btn-upload:hover{cursor:pointer!important}.btn,.rating-input .glyphicon:hover{cursor:pointer}#main-nav>li:nth-child(1){float:right;margin-left:10px}.glyphicon{top:0}#form-upload{position:relative;float:right;width:50px;margin:0;padding:0;height:60px}#form-upload .form-group .btn{color:transparent;background:0 0;border:0;text-transform:uppercase;font-weight:400;margin:0;padding:0;height:60px;width:50px}#form-upload:hover .form-group .btn:after,#form-upload:hover .form-group .btn:before{color:#fff}#form-upload .form-group .btn:before{content:"\e043";font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:hsla(0,0%,100%,.7);font-size:16px;background:0 0;border-radius:50%;width:20px;height:20px;display:inline-block;margin:0;padding:23px 19px;z-index:-9}#top_admin>span.hidden-sm,#top_tasks>span.hidden-sm{display:none}#form-upload .form-group .btn:after{content:"\EA13";position:absolute;font-family:plex-icons-new;font-size:8px;background:#3c444a;color:hsla(0,0%,100%,.7);border-radius:50%;padding:.25px .25px 0 0;z-index:9;left:15px;top:32px;width:10px;height:10px;line-height:10px;font-weight:400;text-align:center;pointer-events:none}#top_admin,#top_tasks{height:60px;width:50px;padding:20px 15px}#top_tasks>.glyphicon-tasks::before{content:"\EA2E";text-transform:none;font-weight:400;font-style:normal;font-family:plex-icons-new;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1;text-rendering:optimizeLegibility;speak:none;font-size:20px}.btn,.navigation .create-shelf a,.navigation .nav-head,.well>form,body>div.container-fluid>div>div.col-sm-10>div.discover>h1:first-letter{text-transform:uppercase}#top_tasks>.glyphicon-tasks{background-color:hsla(0,0%,100%,.15);border-radius:50%}.form-control{background-image:none;display:block;width:100%;height:40px;padding:6px 12px;font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px!important;-webkit-font-variant-ligatures:normal;font-variant-ligatures:normal;line-height:22.29px!important;color:#eee;vertical-align:middle;background-color:hsla(0,0%,100%,.08);border-radius:4px;border:0!important;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:background-color .2s;-o-transition:background-color .2s;transition:background-color .2s}.form-control:focus{border-color:transparent;outline:0;-webkit-box-shadow:none;box-shadow:none;background:#eee!important;color:#555}.form-control.tt-hint{background:hsla(0,0%,100%,.25)!important}body>div.navbar.navbar-default.navbar-static-top>div>form>div>span>button:before{content:"\EA32";font-family:plex-icons-new;color:#eee;background:#555;font-size:10px;width:25px;height:19px;border-radius:4px;padding:2px 5px;position:absolute}body>div.navbar.navbar-default.navbar-static-top>div>form>div>span>button{background-color:transparent;color:transparent;border:none;height:40px;border-radius:0 4px 4px 0}body>div.navbar.navbar-default.navbar-static-top>div>form:before{content:"\EA4F";display:block;font-family:plex-icons;position:absolute;color:#eee;font-weight:400;font-size:14px;top:18px;left:122px}#query{width:360px!important;padding-right:50px;padding-left:46px}#query:focus{background:#eee!important;color:#555!important}body>div.navbar.navbar-default.navbar-static-top>div>form.search-focus>div>span.input-group-btn:before{content:"\EA4F";display:block;font-family:plex-icons;position:absolute;left:-298px;top:8px;width:40px;height:40px;color:#555;font-weight:400;font-size:14px}body>div.navbar.navbar-default.navbar-static-top>div>form>div>span.input-group-btn{position:absolute;left:320px;height:40px;width:40px;border-radius:4px}body>div.navbar.navbar-default.navbar-static-top>div>form>div>span>button:hover{color:#fff}body>div.navbar.navbar-default.navbar-static-top>div>form{margin-left:-140px;padding:0;margin-top:10px;margin-bottom:10px}body>div.navbar.navbar-default.navbar-static-top>div>form>.form-group>input::-webkit-input-placeholder{color:transparent}body>div.navbar.navbar-default.navbar-static-top>div>form>.form-group>input:-moz-placeholder{color:transparent}body>div.navbar.navbar-default.navbar-static-top>div>form>.form-group>input::-moz-placeholder{color:transparent}body>div.navbar.navbar-default.navbar-static-top>div>form>.form-group>input:-ms-input-placeholder{color:transparent}body>div.navbar.navbar-default.navbar-static-top>div>form>.form-group>input{border-radius:4px;height:40px;width:360px;padding:4px}#main-nav{margin-right:15px}#main-nav>li{float:right}body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul,body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li{height:60px}body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>a{height:60px;padding:20px 10px;color:hsla(0,0%,100%,.7)}body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>#top_admin>.glyphicon-dashboard::before{content:"\EA31";font-family:plex-icons-new;font-size:20px}body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>#top_admin>span:last-of-type{vertical-align:top}.badge,.btn{vertical-align:middle}.author>a:hover{color:#fff!important}.row{margin:0}body>div.container-fluid>div>div.col-sm-10>div>form>h2{font-size:15px;color:var(--color-primary);border-top:1px solid rgba(0,0,0,.3);padding-top:60px;margin-top:50px;margin-bottom:30px}.btn,.form-group>label{font-size:14px;font-weight:400}.navigation .nav-head:nth-child(1n+2){border-top:none;padding-top:0;width:200px}.btn-default{border-color:var(--color-secondary);color:#fff;background-color:var(--color-secondary);-webkit-transition:background-color .1s;-o-transition:background-color .1s;transition:background-color .1s}.btn-default:hover{border-color:var(--color-secondary-hover);color:#fff;background-color:var(--color-secondary-hover)}body>div.container-fluid>div>div.col-sm-10>div>form>a{background-color:hsla(0,0%,100%,.25);color:#fff}body>div.container-fluid>div>div.col-sm-10>div>form>a:hover{background-color:hsla(0,0%,100%,.3);color:#fff}.btn{display:inline-block;padding:6px 16px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;border:0;margin-bottom:0;line-height:1.71428571;text-align:center;border-radius:3px;white-space:nowrap;-o-user-select:none;user-select:none}.navigation li,.navigation li:not(ul>li){border-radius:0 4px 4px 0}.btn-primary{color:#fff;background-color:hsla(0,0%,100%,.25);border-color:hsla(0,0%,100%,.25)}.btn-primary:hover{border-color:hsla(0,0%,100%,.3)}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.open>.dropdown-toggle.btn-default{border-color:var(--color-secondary-hover);color:#fff;background-color:var(--color-secondary-hover)}.form-group>label{color:#eee;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif}.login .form-group>label{font-weight:400;color:hsla(0,0%,100%,.45);font-family:Open Sans bold,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:13px}.navbar>.container-fluid{margin:0;padding:0;height:60px}.navigation .nav-head{margin:0;color:hsla(0,0%,100%,.3);font-size:12px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:45px;padding-left:25px}.navigation li a{color:hsla(0,0%,100%,.7);text-decoration:none;padding:4px 25px;font-size:13px;height:30px;line-height:1.71428571;width:100%;white-space:nowrap;overflow:hidden}.navigation li{min-height:30px;max-width:265px;overflow:visible}.navigation li:hover{background-color:hsla(0,0%,100%,.08)}.navigation .create-shelf a,.navigation li.nav-head:hover{background-color:transparent}.navigation li a:hover{background:0 0;color:#fff}#nav_hot .glyphicon-fire::before{content:"\1F525";font-family:glyphicons regular}.glyphicon-star:before{content:"\EA10";font-family:plex-icons-new}#nav_rand .glyphicon-random::before{content:"\EA44";font-family:plex-icons-new}.glyphicon-list::before{content:"\EA4D";font-family:plex-icons-new}#nav_about .glyphicon-info-sign::before{content:"\EA26";font-family:plex-icons-new}#nav_cat .glyphicon-inbox::before,.glyphicon-tags::before{content:"\E067";font-family:Glyphicons Regular;margin-left:2px}.navigation #nav_cat a span{margin-right:8px}.navigation .create-shelf a{width:25px;color:hsla(0,0%,100%,.7)!important;padding:5px 7px 2px;font-size:12px;line-height:1;border-radius:3px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;border:0;-webkit-transition:background-color .1s;-o-transition:background-color .1s;transition:background-color .1s;font-weight:400;white-space:nowrap;margin:auto;max-height:22px;-o-text-overflow:initial;text-overflow:initial}.navigation .create-shelf a:hover{color:#fff!important;background:0 0!important;border-radius:0}#scnd-nav .dropdown-menu>li>a:hover{color:#fff;background:0 0}#scnd-nav .dropdown-menu{left:12px!important;margin:0}.navigation .create-shelf a:before{content:"\EA13";font-family:plex-icons-new;font-size:100%;padding-right:10px;vertical-align:middle}.container-fluid .book .meta .author,.container-fluid .book .meta .author>a,.container-fluid .book .meta .title{font-weight:400;font-size:13px;-webkit-font-smoothing:antialiased;line-height:20px;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif}.navigation .create-shelf{width:25px;margin:10px -15px 0 0;min-height:auto;float:right}.navigation .create-shelf:hover{background:0 0}.container-fluid .book .meta .title{color:#fff}.container-fluid .book .meta .author,.container-fluid .book .meta .author>a{color:hsla(0,0%,100%,.45)}.container-fluid .book .cover img{border:none;-webkit-box-shadow:0 0 2px rgba(0,0,0,.35);box-shadow:0 0 2px rgba(0,0,0,.35);position:relative;z-index:-9}#books>.cover>a,#books_rand>.cover>a,.book.isotope-item>.cover>a,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a{display:inline-block;width:auto;height:100%}#books>.cover>a:before,#books_rand>.cover>a:before,.book.isotope-item>.cover>a:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a:before{content:"\e352";font-family:Glyphicons Regular;background:var(--color-secondary);border-radius:50%;font-weight:400;font-size:18px;line-height:50px;width:50px;height:50px;padding-left:16px;right:0;margin:auto;opacity:0;left:0;position:absolute;top:0;display:inline-block;color:#fff;bottom:0}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a:before{z-index:9;zoom:.8}#books>.cover>a:hover:before,#books_rand>.cover>a:hover:before,.book.isotope-item>.cover>a:hover:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a:hover:before{-o-transition:opacity .2s;transition:opacity .2s;-webkit-transition:opacity .2s;opacity:1}#books>.cover>a:hover,#books_rand>.cover>a:hover,.book.isotope-item>.cover>a:hover,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a:hover{outline:solid var(--color-secondary);font-size:50px;-o-transition:outline 0s;transition:outline 0s;-webkit-transition:outline 0s}#books>.cover>a:after,#books_rand>.cover>a:after,.book.isotope-item>.cover>a:after{position:absolute;content:'';width:100%;height:100%;top:0;left:0;opacity:0;background:-webkit-radial-gradient(50% 50%,farthest-corner,rgba(50,50,50,.5) 50%,#323232 100%);background:-o-radial-gradient(50% 50%,farthest-corner,rgba(50,50,50,.5) 50%,#323232 100%);background:radial-gradient(farthest-corner at 50% 50%,rgba(50,50,50,.5) 50%,#323232 100%);z-index:-9}body.me>div.container-fluid>div>div.col-sm-10>div.discover{left:240px;margin:120px 0 0 20%!important;padding:30px 15px 15px!important;width:calc(80% - 30px);border-top:2px solid rgba(0,0,0,.3)}body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#submit{float:right;margin-left:0}body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2{height:200px;padding:0;margin:15px}.container-fluid .discover,.navbar{margin-bottom:0}body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a{width:100%}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a:after{position:absolute;content:'';width:100%;height:100%;top:0;left:0;opacity:0;background:-webkit-radial-gradient(50% 50%,farthest-corner,rgba(50,50,50,.5) 50%,#323232 100%);background:-o-radial-gradient(50% 50%,farthest-corner,rgba(50,50,50,.5) 50%,#323232 100%);background:radial-gradient(farthest-corner at 50% 50%,rgba(50,50,50,.5) 50%,#323232 100%)}#books>.cover>a:hover:after,#books_rand>.cover>a:hover:after,.book.isotope-item>.cover>a:hover:after,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a:hover:after{opacity:1;-o-transition:opacity .2s;transition:opacity .2s;-webkit-transition:opacity .2s}.container-fluid .book .cover{width:auto;display:inline-block}.navbar{border:none}.navbar-collapse.collapse{height:60px!important;padding-bottom:0;overflow:visible!important}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:0;outline-offset:0}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;background-color:rgba(0,0,0,.15);border-radius:3px}#bookDetailsModal,.pagination,body>.container-fluid{min-width:1px;min-height:1px}app-loading-container{background:#3f4245}.app-loading>span{display:none}.app-loading{margin:auto;color:#fff!important;text-align:center;font-size:20px}.app-loading:before{content:'';-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-radius:50%;border-top:2px solid var(--color-secondary);width:24px;height:24px;animation:spin .5s linear infinite;display:block;margin:20px auto}.pace-progress,.random-books{display:none}#main-nav+#scnd-nav::-webkit-scrollbar,#main-nav+.col-sm-2::-webkit-scrollbar,.navbar-collapse.collapse::-webkit-scrollbar,body>div.container-fluid>div.row-fluid>div.col-sm-2::-webkit-scrollbar,body>div.container-fluid>div>div.col-sm-10::-webkit-scrollbar{width:14px;max-height:calc(100% - 60px)}#description::-webkit-scrollbar,#meta-info::-webkit-scrollbar,.book-meta::-webkit-scrollbar{width:14px}#main-nav+#scnd-nav::-webkit-scrollbar-track,#main-nav+.col-sm-2::-webkit-scrollbar-track,.navbar-collapse.collapse::-webkit-scrollbar-track,body>div.container-fluid>div.row-fluid>div.col-sm-2::-webkit-scrollbar-track,body>div.container-fluid>div>div.col-sm-10::-webkit-scrollbar-track{background-color:transparent;max-height:calc(100% - 60px)}#meta-info::-webkit-scrollbar-track{background-color:#202020}#description::-webkit-scrollbar-track,.book-meta::-webkit-scrollbar-track{background-color:transparent}#main-nav+#scnd-nav::-webkit-scrollbar-thumb,#main-nav+.col-sm-2::-webkit-scrollbar-thumb,.navbar-collapse.collapse::-webkit-scrollbar-thumb,body>div.container-fluid>div.row-fluid>div.col-sm-2::-webkit-scrollbar-thumb,body>div.container-fluid>div>div.col-sm-10::-webkit-scrollbar-thumb{min-height:110px;border:3px solid transparent;border-radius:8px;background-color:hsla(0,0%,100%,.2);background-clip:padding-box;max-height:calc(100% - 60px)}#description::-webkit-scrollbar-thumb,#meta-info::-webkit-scrollbar-thumb,.book-meta::-webkit-scrollbar-thumb{min-height:50px;border:3px solid transparent;border-radius:8px;background-color:hsla(0,0%,100%,.2);background-clip:padding-box}#description::-webkit-scrollbar-thumb:hover,#main-nav+#scnd-nav::-webkit-scrollbar-thumb:hover,#main-nav+.col-sm-2::-webkit-scrollbar-thumb:hover,#meta-info::-webkit-scrollbar-thumb:hover,.book-meta::-webkit-scrollbar-thumb:hover,.navbar-collapse.collapse::-webkit-scrollbar-thumb:hover,body>div.container-fluid>div.row-fluid>div.col-sm-2::-webkit-scrollbar-thumb:hover,body>div.container-fluid>div>div.col-sm-10::-webkit-scrollbar-thumb:hover{background-color:hsla(0,0%,100%,.3)}::-webkit-scrollbar-corner{background:0 0}.pace .pace-activity{border:2px solid transparent;border-radius:50%;border-top:2px solid var(--color-secondary);width:24px;height:24px;right:auto;left:8px;top:17px}body>.container-fluid{margin:0;padding:0;width:calc(100%);height:calc(100% - 60px);position:fixed;top:60px;left:0}body>div.container-fluid>div.row-fluid>div.col-sm-2{position:absolute;width:240px;height:calc(100% - 60px);left:0;top:60px;background:rgba(0,0,0,.15);padding:0 5px 20px 0;overflow-y:auto}body>div.container-fluid>div.row-fluid>div.col-sm-10{width:calc(100vw - 237px);height:calc(100% - 60px);padding:0;position:absolute;min-height:1px;min-width:1px;top:60px;right:0;overflow-y:auto!important}body.me>div.container-fluid>div.row-fluid>div.col-sm-10:before{content:'';font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;font-size:6vw;position:fixed;left:240px;top:180px;width:calc(20% - 55px);text-align:center;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K);background-size:6vw;background-position-x:center;height:100%;background-repeat:no-repeat}body>div.container-fluid>div>div.col-sm-10>div.discover>div.isotope{display:-ms-grid!important;display:grid!important;overflow:hidden!important;height:auto!important;width:100%;margin:0;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:start;grid-gap:10px 0;grid-template-columns:repeat(auto-fit,minmax(175px,1fr))!important}body>div.container-fluid>div>div.col-sm-10>div.discover{height:auto;width:calc(100vw - 257px);margin:40px 0!important;padding:0 10px 0 40px!important}body>div.container-fluid>div>div.col-sm-10>div.single{height:auto;width:calc(100vw - 254px);margin:0!important;padding:60px 15px!important}body>div.container-fluid>div>div.col-sm-10>div.discover{margin-top:0}.container-fluid .book .meta>p{-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>h2{color:#eee;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:24px;overflow:hidden;min-width:0;width:100%;max-width:100%;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;text-transform:uppercase;font-weight:400;padding-left:15px;margin-bottom:20px;top:0;left:0;height:auto}body>div.container-fluid>div>div.col-sm-10>h3:not(:first-of-type){color:#eee;width:calc(100% - 30px);max-width:800px;margin:60px auto 10px;text-align:left}body>div.container-fluid>div>div.col-sm-10>p{margin:auto auto 60px;width:calc(100% - 30px);max-width:800px;text-align:right}.book .book-meta>h2>h2,.well>h2,body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover:only-of-type>h2,body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover>h1,body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover>h2,body>div.container-fluid>div>div.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2,body>div.container-fluid>div>div.col-sm-10>div:nth-of-type(2)>h2,body>div.container-fluid>div>div.col-sm-10>h1,body>div.container-fluid>div>div.col-sm-10>h3:first-of-type{margin:0;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;-webkit-box-direction:normal;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;-webkit-margin-before:0;-webkit-margin-after:0}body>div.container-fluid>div>div.col-sm-10>p>a{color:var(--color-secondary)}body>div.container-fluid>div>div.col-sm-10>p>a:hover{color:#fff}.book .book-meta>h2>h2,body>div.container-fluid>div>div.col-sm-10>div:nth-of-type(2)>h2,body>div.container-fluid>div>div.col-sm-10>h3:first-of-type{height:60px;padding-left:25px;color:hsla(0,0%,100%,.7);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:60px;white-space:nowrap;font-weight:400;position:fixed;top:60px;left:240px}body>div.container-fluid>div>div.col-sm-10>h3:first-of-type{content:"About";width:calc(100vw - 240px);text-align:left}.book .book-meta>h2>h2{width:calc(100vw - 540px)}body>div.container-fluid>div>div.col-sm-10>div:nth-of-type(2)>h2{content:"Books";width:calc(100vw - 240px)}.well>h2,body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover:only-of-type>h2{width:calc(100vw - 240px)!important;height:60px!important;padding-left:25px!important;color:hsla(0,0%,100%,.7)!important;font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif!important;font-size:15px!important;line-height:60px!important;white-space:nowrap!important;font-weight:400!important;position:fixed!important;top:60px!important;left:240px!important;-o-text-overflow:ellipsis!important;text-overflow:ellipsis!important;max-width:calc(100vw - 550px)!important;overflow:hidden!important}@media only screen and (min-width:768px){body>div.container-fluid>div.row-fluid>div.col-sm-2:after{width:100%;height:60px;background:rgba(0,0,0,.15);display:block;content:'';position:fixed;top:60px;left:240px}}body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover>h1,body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover>h2,body>div.container-fluid>div>div.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2,body>div.container-fluid>div>div.col-sm-10>h1{width:calc(100vw - 240px);height:60px;padding-left:25px;color:hsla(0,0%,100%,.7);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:60px;white-space:nowrap;font-weight:400;position:fixed;top:60px;left:240px}body>div.container-fluid>div>div.col-sm-10>div.discover>form>.btn.btn-default{float:right;margin:0 0 0 10px}.pagination{display:block!important;position:fixed;top:60px;right:0;overflow:visible;height:60px;margin:0;line-height:60px;font-size:15px;z-index:99999}.pagination:after,body>div.container-fluid>div>div.col-sm-10>div.pagination>a.next,body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous{top:0;font-family:plex-icons-new;font-weight:100;-webkit-font-smoothing:antialiased;line-height:60px;height:60px;font-style:normal;-moz-osx-font-smoothing:grayscale}.pagination>a{color:hsla(0,0%,100%,.7)}.pagination>a:hover{color:#fff;text-decoration:none}.pagination>.ellipsis{color:hsla(0,0%,100%,.7)}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#fff!important}body>div.container-fluid>div>div.col-sm-10>div.pagination>a,body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous+a,body>div.container-fluid>div>div.col-sm-10>div.pagination>a[href*=page]{display:none}body>div.container-fluid>div>div.col-sm-10>div.pagination>a.next,body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous{color:transparent;margin-left:0;width:65px;padding:0;font-size:15px;position:absolute;display:block!important}body>div.container-fluid>div>div.col-sm-10>div.pagination>a.next{right:0}body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous{right:65px}body>div.container-fluid>div>div.col-sm-10>div.pagination>a.next:before{content:"\EA32";visibility:visible;color:hsla(0,0%,100%,.35);height:60px;line-height:60px;border-left:2px solid transparent;font-size:20px;padding:20px 0 20px 20px;margin-right:-27px}body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous:before{content:"\EA33";visibility:visible;color:hsla(0,0%,100%,.65);height:60px;line-height:60px;font-size:20px;padding:20px 25px}body>div.container-fluid>div>div.col-sm-10>div.pagination>a.next:hover:before,body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous:hover:before{color:#fff}.pagination>strong{display:none}.pagination:after{content:"\EA32";position:relative;right:0;display:inline-block;color:hsla(0,0%,100%,.55);font-size:20px;padding:0 23px;margin-left:20px;z-index:-1}.pagination>.ellipsis,.pagination>a:nth-last-of-type(2){display:none}body.authorlist>div.container-fluid>div>div.col-sm-10>div.container>div.col-xs-12,body.catlist>div.container-fluid>div>div.col-sm-10>div.container>div.col-xs-12,body.langlist>div.container-fluid>div>div.col-sm-10>div.container>div.col-sm-6,body.serieslist>div.container-fluid>div>div.col-sm-10>div.container>div.col-sm-6{width:100%}body.serieslist>div.container-fluid>div>div.col-sm-10:before{content:"\e044";font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;font-size:6vw;position:fixed;left:240px;top:180px;width:calc(20% - 55px);text-align:center}body>div.container-fluid>div>div.col-sm-10>div.container{width:calc(80% - 30px);margin:120px 0 30px 20%;border-top:2px solid rgba(0,0,0,.3);border-bottom:2px solid rgba(0,0,0,.3);padding:0;max-width:calc(80% - 30px)}body>div.container-fluid>div>div.col-sm-10>div.container>div{padding:0}body>div.container-fluid>div>div.col-sm-10>div.container>div>.row{padding:4px 0}body>div.container-fluid>div>div.col-sm-10>div.container>div>.row:nth-of-type(even){background:hsla(0,0%,100%,.02)}body>div.container-fluid>div>div.col-sm-10>div.container>div>.row>.col-xs-6{width:calc(91.666% - 30px);overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;color:hsla(0,0%,100%,.45);padding-left:60px}body>div.container-fluid>div>div.col-sm-10>div.container>div>.row>.col-xs-6>a{-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;-webkit-transition:all 0s;-o-transition:all 0s;transition:all 0s}.book-meta>.bookinfo>.tags .btn-info,.well>form>.btn{vertical-align:middle;-o-transition:background-color .2s,color .2s}body.catlist>div.container-fluid>div.row-fluid>div.col-sm-10:before{content:"\E067";font-family:Glyphicons Regular;font-style:normal;font-weight:400;line-height:1;font-size:6vw;position:fixed;left:240px;top:180px;width:calc(20% - 55px);text-align:center}body.authorlist>div.container-fluid>div.row-fluid>div.col-sm-10:before,body.langlist>div.container-fluid>div>div.col-sm-10:before{font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;font-size:6vw;left:240px;top:180px;width:calc(20% - 55px);text-align:center;position:fixed}body.authorlist>div.container-fluid>div.row-fluid>div.col-sm-10:before{content:"\e008"}body.langlist>div.container-fluid>div>div.col-sm-10:before{content:"\e034"}body.advsearch>div.container-fluid>div>div.col-sm-10:before,body.authorlist>div.container-fluid>div>div.col-sm-10>div.container:before,body.catlist>div.container-fluid>div>div.col-sm-10>div.container:before,body.langlist>div.container-fluid>div>div.col-sm-10>div.container:before,body.me>div.container-fluid>div>div.col-sm-10>div.discover:before,body.serieslist>div.container-fluid>div>div.col-sm-10>div.container:before{top:60px;font-size:24px;color:#eee;line-height:1;padding-left:15px;position:absolute;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400}body.authorlist>div.container-fluid>div>div.col-sm-10>div.container:before{content:"Authors"}body.catlist>div.container-fluid>div>div.col-sm-10>div.container:before{content:"Categories"}body.serieslist>div.container-fluid>div>div.col-sm-10>div.container:before{content:"Series"}body.langlist>div.container-fluid>div>div.col-sm-10>div.container:before{content:"Languages"}body.advsearch>div.container-fluid>div>div.col-sm-10:before{content:"Advanced Search";margin-left:20%;left:0}body.me>div.container-fluid>div>div.col-sm-10>div.discover:before{content:"My Profile"}.well{max-height:520px;height:auto;background-color:transparent;border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none;min-width:600px;max-width:700px;position:absolute;top:0;left:0;right:0;bottom:0;margin:0 auto;padding:60px}.well>form{background:rgba(0,0,0,.4);color:hsla(0,0%,100%,.45);padding:60px;margin-top:60px}.checkbox{text-transform:none}.well>form>.btn{display:inline-block;overflow:hidden;border-radius:4px;color:#fff;text-align:center;text-transform:uppercase;white-space:nowrap;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-transition:background-color .2s,color .2s;transition:background-color .2s,color .2s;padding:6px 30px 5px;font-size:15px;font-weight:400;background-color:var(--color-secondary);border:none;width:100%;text-rendering:auto;letter-spacing:normal;word-spacing:normal;text-indent:0;text-shadow:none;margin-top:20px}.well>form>.btn:hover{background-color:var(--color-secondary-hover)}body>div.row-fluid{margin-top:0!important}.alert{position:fixed;top:auto;bottom:20px;left:50%;width:50%;margin:0;-webkit-transform:translate(-50%);-ms-transform:translate(-50%);transform:translate(-50%);opacity:1!important;right:0;border-radius:10px;background-color:#000;color:#eee;border:0;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.5);box-shadow:0 4px 12px rgba(0,0,0,.5);-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;height:34px;line-height:1.71428571!important;overflow:hidden;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;font-size:14px;padding:5px 0;z-index:99999;-webkit-animation:cssAnimation 0s ease-in 10s forwards;animation:cssAnimation 0s ease-in 10s forwards;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.alert-danger{background-color:rgba(255,85,51,.3);color:#fff}.table>thead>tr>th{border-bottom:0}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{border-top:1px solid rgba(0,0,0,.3);background:rgba(0,0,0,.15)}#libs,#stats{margin:auto;width:calc(100% - 30px);max-width:800px;color:hsla(0,0%,100%,.75);border-bottom:2px solid rgba(0,0,0,.3);border-top:2px solid rgba(0,0,0,.2)}#libs{margin-bottom:15px}#libs>tbody>tr>th,#libs>thead>tr>th:first-child,#stats>tbody>tr>th{color:hsla(0,0%,100%,.45)}#books .cover img,#books_rand .cover img,.book .cover img{width:auto}.container-fluid img{display:block;width:100%;height:auto;max-width:195px;margin:auto}#bookDetailsModal .modal-footer,#bookDetailsModal .modal-header>.close,.modal-backdrop.in{display:none}.container-fluid .single .cover img{border:0;border-radius:0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.35);box-shadow:0 0 2px rgba(0,0,0,.35);background-color:rgba(0,0,0,.45)}body>div.container-fluid>div>div.col-sm-10>div.col-sm-3.col-lg-3.col-xs-12,body>div.container-fluid>div>div.col-sm-10>div>div>div.col-sm-3.col-lg-3{max-width:calc(25% - 75px);position:fixed}body>div.container-fluid>div>div.col-sm-10>div.col-sm-3.col-lg-3.col-xs-12{padding-top:40px;padding-bottom:40px}body>div.container-fluid>div>div.col-sm-10>div>div>div.col-sm-9.col-lg-9.book-meta{margin-left:calc(25%);width:calc(75%)}.advanced_search #search>.row>.form-group.col-sm-6:first-of-type{padding-left:0}.advanced_search #search>.row>.form-group.col-sm-6:last-of-type{padding-right:0}.advanced_search .btn{text-transform:none;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400}label{font-weight:400}body>div.container-fluid>div>div.col-sm-10>div.col-sm-8{margin-left:calc(20%);width:calc(80% - 30px);padding:60px 0}body>div.container-fluid>div>div.col-sm-10>div.col-sm-8>form>div>span>input.form-control.typeahead.tt-hint{background:hsla(0,0%,100%,.08)!important}body>div.container-fluid>div>div.col-sm-10>div.col-sm-8>form>div>span>input.form-control:focus{background:#fff!important}.navigation li a .glyphicon-star{color:hsla(0,0%,100%,.7)}.glyphicon-star,.navigation li a:hover .glyphicon-star{color:#fff}.rating-input:hover{cursor:default}.rating-input{padding-left:0}body>div.container-fluid>div>div.col-sm-10>div.col-sm-8>form>.btn.btn-default{float:right;margin:0 0 0 10px;text-transform:uppercase;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif}#get_meta{float:left;margin:0}textarea{resize:none;resize:vertical}#metaModal{top:0;overflow:hidden;padding-top:60px;left:0;right:0;bottom:0;background:rgba(0,0,0,.5)}#metaModal>.modal-dialog>.modal-content{z-index:9999999999999999999999;max-height:calc(100% - 90px);-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:3px}#metaModal>.modal-dialog>.modal-content>.modal-header{padding:0;background:#282828;border-radius:3px 3px 0 0}#metaModal>.modal-dialog>.modal-content>.modal-header>h4{border-bottom:0;background:#323232;height:65px;padding:15px 0 0 15px;font-size:20px;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;line-height:1.71428571;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#eee;border-radius:3px 3px 0 0;margin-bottom:0}#metaModal>.modal-dialog>.modal-content>.modal-header>h4:before{content:"\E025";font:normal normal normal 16px/1 Glyphicons Halflings;color:#999;padding-right:10px}#metaModal>.modal-dialog>.modal-content>.modal-header>#meta-search>.input-group>span>button,.dropdown-menu>li>a,.plexBack,.plexBack>a{font-stretch:100%;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-numeric:normal;font-style:normal}#metaModal>.modal-dialog>.modal-content>.modal-header>.close{color:#eee;opacity:.2;font-size:20px;text-shadow:none;margin:20px}#metaModal>.modal-dialog>.modal-content>.modal-header>.close:hover{opacity:.5}#metaModal>.modal-dialog>.modal-content>.modal-header>#meta-search{margin:25px 0 0}#metaModal>.modal-dialog>.modal-content>.modal-header>#meta-search>.input-group>input{width:calc(100% - 51px);border-radius:0;background-color:hsla(0,0%,100%,.15)}#metaModal>.modal-dialog>.modal-content>.modal-header>#meta-search>.input-group{max-width:100%;width:100%}#metaModal>.modal-dialog>.modal-content>.modal-header>#meta-search>.input-group>span>button{height:40px;width:50px;padding:0;font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px!important;-webkit-font-variant-ligatures:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;line-height:22.29px!important;color:#eee;vertical-align:middle;background-color:hsla(0,0%,100%,.15);border-radius:0;margin:0 0 0 -1px}.dropdown-menu>li>a,.plexBack{-webkit-font-variant-ligatures:normal;font-variant-ligatures:normal}#metaModal>.modal-dialog>.modal-content>.modal-header>#meta-search>.input-group>span{float:right;text-align:right;width:50px;margin:0}#metaModal>.modal-dialog>.modal-content>.modal-header>div{font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;line-height:1.71428571;color:var(--color-primary);font-weight:100;text-align:right;position:absolute;right:0;padding:12.5px}#metaModal>.modal-dialog>.modal-content>.modal-body{padding:0}#metaModal>.modal-dialog>.modal-content>.modal-body>.text-center{text-align:left;margin-bottom:0;padding-top:10px}#metaModal>.modal-dialog>.modal-content>.modal-body>#book-list{margin-bottom:0}input.pill:checked+label{background-color:transparent;border-color:transparent;color:var(--color-secondary)}input.pill+label{border:0;border-radius:0;color:hsla(0,0%,100%,.25);cursor:pointer;display:inline-block;padding:3px 15px;user-select:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input.pill+label:hover{color:var(--color-secondary-hover)}#meta-info{max-height:calc(100vh - 357px);overflow-y:scroll;background:#282828!important;padding:0;margin:0}#meta-info #book-list .media>.media-body{font-family:"Open Sans Regular","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:24px;color:#999;font-weight:100;padding-left:15px}#meta-info #book-list .media>img{padding:0}#meta-info #book-list .media>.media-body>h4>a{color:#eee}#meta-info #book-list .media>.media-body>h4>a:hover{color:#fff}#meta-info #book-list{width:100%;margin:0}#meta-info #book-list .media:nth-of-type(odd){background:hsla(0,0%,100%,.02)}#meta-info #book-list .media{margin-top:0;padding:20px 15px 5px}#meta-info #book-list .media>.media-body>p>a{color:var(--color-secondary);padding-left:10px}#meta-info #book-list .media>.media-body>p>a:hover{color:#fff}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-header,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>#test:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9>div:nth-child(10)>label:before{color:hsla(0,0%,100%,.7);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;white-space:nowrap;-webkit-box-direction:normal;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;font-weight:400}.modal-content{position:relative;background-color:#323232;-webkit-background-clip:padding-box;background-clip:padding-box;border:0;border-radius:0 0 3px 3px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-footer{padding:15px;text-align:right;border-top:0}.modal-header{padding:15px;border-bottom:0}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>#test:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9>div:nth-child(10)>label:before{height:60px;padding-left:25px;background:0 0;font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:60px;top:60px;left:240px;position:fixed}#meta-info #book-list .media>img:hover{cursor:pointer;outline:solid var(--color-secondary);-webkit-filter:brightness(90%);filter:brightness(90%)}body>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9>div:nth-child(10)>label:before{content:"Edit Metadata";width:calc(100vw - 350px);margin:0;-webkit-margin-before:0;-webkit-margin-after:0;pointer-events:none}body>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-xs-12{margin:50px 0}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>#test:before{content:"Advanced Search";width:calc(100vw - 240px);margin:0;-webkit-margin-before:0;-webkit-margin-after:0}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>#test{border-top:2px solid rgba(0,0,0,.3);margin-top:-50px;padding-top:50px}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg>label.btn{margin:2px 3px 0 0;padding:0 10px;background:hsla(0,0%,100%,.25);overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg>label.btn:hover{background:hsla(0,0%,100%,.3)}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg>label.btn-danger:hover{background:#ce3d2a}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg>label.btn-danger.active{background:#ac3323}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg>label.btn-danger.active:hover{background:#ce3d2a}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg>label.btn-primary:hover{background:var(--color-secondary-hover)}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg>label.btn-primary.active{background:var(--color-secondary)}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg>label.btn-primary.active:hover{background:var(--color-secondary-hover)}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>label{margin-left:0}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>label:first-of-type{padding-top:40px}body.advanced_search>div.container-fluid>div>div.col-sm-10>div.col-sm-8:before{content:"\EA4F";font-family:plex-icons;font-style:normal;font-weight:400;line-height:1;font-size:6vw;position:fixed;left:240px;top:180px;width:calc(20% - 55px);text-align:center}a:focus{outline:0;outline-offset:0}#bookDetailsModal{width:calc(100vw - 240px);height:calc(100% - 60px);padding:0;position:fixed;top:60px;left:240px;background-image:url(images/caliblur/blur-noise.png),url(images/caliblur/blur-light.png);background-repeat:repeat,no-repeat;background-attachment:fixed,fixed;background-position:center center,center center;background-size:auto,cover!important;-webkit-background-size:auto,cover;-moz-background-size:auto,cover;-o-background-size:auto,cover}#bookDetailsModal>.modal-dialog.modal-lg{padding:0;margin:0;width:100%;height:100%}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content{background-color:transparent;border-radius:0;-webkit-box-shadow:none;box-shadow:none}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-header{width:100%;height:60px;margin:0;padding:0 0 0 25px;background:rgba(0,0,0,.15);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:60px;-webkit-margin-before:0;-webkit-margin-after:0;position:fixed;top:0;left:0}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-header>h4{width:100%;max-width:calc(100% - 340px);height:60px;line-height:60px}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-body{width:calc(100vw - 240px);height:calc(100% - 120px);position:fixed;min-height:1px;min-width:1px;top:60px;left:0;padding:0}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-body>.container-fluid{padding:0}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-body>div>div>div>div.col-sm-3.col-lg-3.col-xs-5{padding:30px 15px 15px 30px;height:300px}body>div.container-fluid>div>div.col-sm-10>div>div>div.col-sm-3.col-lg-3.col-xs-5{padding:15px;height:300px;pointer-events:none}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-body>div>div>div>div.col-sm-3.col-lg-3.col-xs-5>div.cover,body>div.container-fluid>div>div.col-sm-10>div>div>div.col-sm-3.col-lg-3.col-xs-5>div.cover{margin:0;width:100%;height:100%}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-body>div>div>div>div.col-sm-3.col-lg-3.col-xs-5>div.cover>img,body>div.container-fluid>div>div.col-sm-10>div>div>div.col-sm-3.col-lg-3.col-xs-5>div.cover>img{margin:0 auto;max-height:300px;max-width:200px;height:auto;width:100%}.book-meta>.bookinfo>.comments,.book-meta>.description{margin-top:60px;font-size:15px;color:#eee}.book-meta .bookinfo p{margin:0}.book-meta>.bookinfo>.publishers{margin-top:24px}.book-meta>.bookinfo>.publishers>span:first-of-type,.book-meta>.bookinfo>.publishing-date>span:first-of-type{color:hsla(0,0%,100%,.45);text-transform:uppercase;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif}.book-meta>.bookinfo>.publishers>span:last-of-type,.book-meta>.bookinfo>.publishing-date>span:last-of-type{font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;color:#fff;font-size:15px;-webkit-font-smoothing:antialiased}.book-meta>.bookinfo>.publishers>span:last-of-type{padding-left:90px}.real_custom_columns>span:last-of-type{padding-left:90px}.book-meta>.bookinfo>.publishing-date>span:last-of-type{padding-left:41px}.book-meta>.bookinfo>.languages>span:first-of-type{color:hsla(0,0%,100%,.45);text-transform:uppercase;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif}.book-meta>.bookinfo>.languages>span:last-of-type{font-size:15px;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;color:#fff;padding-left:85px}.book-meta>.bookinfo>.tags .btn-info,.book-meta>h2,body.book .author{font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif}#bookDetailsModal .book-meta>h2{margin-top:15px}.book-meta>h2{font-size:24px;color:#eee;font-weight:400;line-height:1;margin:0;max-width:calc(100% - 100px);padding:15px 0}.book-meta>.author>a:first-of-type:before{content:"Author — ";color:hsla(0,0%,100%,.45);position:absolute;left:15px;pointer-events:none}.book-meta>.bookinfo>.rating{float:right;position:relative;z-index:-1;margin-top:-50px}.book-meta>.bookinfo>p+.rating{margin-top:-25px}.book-meta>.bookinfo>.rating .glyphicon-star{color:hsla(0,0%,100%,.25)}body.book .author{font-size:15px;line-height:30px;margin-top:-5px;max-width:calc(100% - 176px);margin-left:76px}.book-meta>p{color:hsla(0,0%,100%,.45)}.book-meta>.bookinfo>p:first-of-type{color:hsla(0,0%,100%,.45);font-size:15px;margin-top:-10px;max-width:calc(100% - 100px)}.bookinfo .rating .glyphicon-star.good{color:hsla(0,0%,100%,.7)}.book-meta>.languages>p>.label-default{background:0 0;color:hsla(0,0%,100%,.45);padding:0;font-size:14px}.book-meta>.bookinfo>.languages>span:first-letter{text-transform:uppercase}.book-meta>.bookinfo>.hr{margin:24px -15px;height:2px;background-color:rgba(0,0,0,.3)}.book-meta>.bookinfo>.identifiers>p>.btn-success,.book-meta>.bookinfo>.tags .btn-info{overflow:hidden;text-align:center;white-space:nowrap;margin:2px 3px 0 0;padding:0 10px}.book-meta>.bookinfo>.tags .btn-info{background-color:rgba(0,0,0,.15);color:hsla(0,0%,100%,.7);font-size:13px;display:inline-block;border-radius:4px;-webkit-transition:background-color .2s,color .2s;transition:background-color .2s,color .2s;text-transform:none}.dropdown-menu,.tooltip.in{-webkit-transition:opacity .15s ease-out,-webkit-transform .15s cubic-bezier(.6,.4,.2,1.4)}.book-meta>.bookinfo>.tags .btn-info:hover{color:#fff;text-decoration:underline}.book-meta>.bookinfo>.identifiers,.book-meta>.bookinfo>.tags{padding-left:40px;margin:10px 0}.book-meta>.bookinfo>.tags a{max-width:100%;-o-text-overflow:ellipsis;text-overflow:ellipsis}.book-meta>.bookinfo>.identifiers .glyphicon-link,.book-meta>.bookinfo>.tags .glyphicon-tags{margin-left:-40px;margin-right:17px;color:hsla(0,0%,100%,.45);width:20px;vertical-align:text-bottom}.book-meta>h3:first-of-type{font-size:14px;font-weight:400;text-transform:uppercase;border-top:2px solid rgba(0,0,0,.3);padding-top:20px;margin-top:20px}.book-meta>div{color:hsla(0,0%,100%,.65)}.more-stuff{margin-top:0;padding-top:0;border-top:0}.book-meta>.more-stuff>br{display:none}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:0}div.btn-group[role=group][aria-label="Download, send to Kindle, reading"]{white-space:nowrap;display:-webkit-box;display:-ms-flexbox;display:flex}div.btn-group[role=group][aria-label="Download, send to Kindle, reading"]>div.btn-group[role=group]>p{display:none}#shelf-actions{float:left}#add-to-shelf,#btnGroupDrop1,#read-in-browser,#sendbtn,.book-meta .btn-toolbar>.btn-group>.btn-group:nth-child(1)>a:first-of-type,.book-meta .btn-toolbar>.btn-group>.btn-warning,.btn-toolbar>.btn-group>#btnGroupDrop2,.btn-toolbar>.btn-group>.btn-group>#btnGroupDrop2{background:0 0;color:transparent;width:50px;height:60px;margin:0;overflow:hidden;padding:0}#add-to-shelf>span.caret,#btnGroupDrop1>span.caret,#read-in-browser>span.caret,.btn-toolbar>.btn-group>#btnGroupDrop2>span.caret,.btn-toolbar>.btn-group>.btn-group>#btnGroupDrop2>span.caret{padding-bottom:5px}#add-to-shelf>span,#btnGroupDrop1>span,#read-in-browser>span,#sendbtn>span,.book-meta .btn-toolbar>.btn-group>.btn-group:nth-child(1)>a:first-of-type>span,.book-meta .btn-toolbar>.btn-group>.btn-warning>span,.btn-toolbar>.btn-group>#btnGroupDrop2>span,.btn-toolbar>.btn-group>.btn-group>#btnGroupDrop2>span{color:hsla(0,0%,100%,.7)}#add-to-shelf:hover span,#btnGroupDrop1:hover>span,#read-in-browser:hover>span,#sendbtn:hover>span,.book-meta .btn-toolbar>.btn-group>.btn-group:nth-child(1)>a:first-of-type:hover>span,.book-meta .btn-toolbar>.btn-group>.btn-warning:hover>span,.btn-toolbar>.btn-group>#btnGroupDrop2:hover>span,.btn-toolbar>.btn-group>.btn-group>#btnGroupDrop2:hover>span{color:#fff}#add-to-shelf>span.glyphicon.glyphicon-list:before{content:"\EA59";font-family:plex-icons;font-size:18px}#sendbtn>span,.book-meta .btn-toolbar>.btn-group>.btn-group:nth-child(1)>a:first-of-type>span,.book-meta .btn-toolbar>.btn-group>.btn-warning>span.glyphicon-edit{font-size:16px;line-height:54px;width:100%}#read-in-browser>span.glyphicon-eye-open:before,.btn-toolbar>.btn-group>.btn-group>#btnGroupDrop2>span.glyphicon-eye-open:before{content:"\e352";font-family:Glyphicons Regular;font-size:18px;padding-right:5px}#read-in-browser>span.glyphicon-list:before,.btn-toolbar>.btn-group>#btnGroupDrop2>span.glyphicon-list:before{font-size:18px}#btnGroupDrop1>span.glyphicon-download:before{font-size:20px;content:"\ea66";font-family:plex-icons}.col-sm-10 .book-meta>div.btn-toolbar{position:fixed;top:60px;right:0;margin:0;width:calc(100vw - 240px);height:60px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#bookDetailsModal>div>div>div.modal-body>div>div>div>div.col-sm-9.col-lg-9.book-meta>div.btn-toolbar>div>div.btn-group.open>div.dropdown-backdrop,.dropdown-backdrop{display:none}.book-meta .btn-toolbar>h2{height:60px;margin:0;padding-left:25px;color:hsla(0,0%,100%,.7);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:60px;white-space:nowrap;font-weight:400;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding-right:25px}.book-meta .btn-toolbar>.btn-group{margin:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.book-meta>div.btn-toolbar ul.dropdown-menu.offscreen{position:fixed;top:120px;right:14px;left:auto!important}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{background-color:hsla(0,0%,100%,.3)}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:hsla(0,0%,100%,.3);border-color:transparent}.book-meta>div.more-stuff>.btn-toolbar>.btn-group>.btn-group>.dropdown-menu{margin-left:-100px}.book-meta .btn-toolbar>.btn-group>ul.dropdown-menu{margin-left:0;max-width:200px;overflow:hidden}.book-meta .btn-toolbar>.btn-group>ul.dropdown-menu>li>a{max-width:200px;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}.dropdown-menu.offscreen{right:0;left:auto!important}div.btn-group[role=group][aria-label="Download, send to Kindle, reading"] .dropdown-menu.offscreen{position:fixed;top:120px;right:5px}.dropdown-menu{border-radius:4px!important;font-size:13px;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding:8px 0;background-color:#191a1c!important;-webkit-box-shadow:0 4px 10px rgba(0,0,0,.35);box-shadow:0 4px 10px rgba(0,0,0,.35);-o-transition:opacity .15s ease-out,transform .15s cubic-bezier(.6,.4,.2,1.4);transition:opacity .15s ease-out,transform .15s cubic-bezier(.6,.4,.2,1.4);transition:opacity .15s ease-out,transform .15s cubic-bezier(.6,.4,.2,1.4),-webkit-transform .15s cubic-bezier(.6,.4,.2,1.4);-webkit-transform-origin:center top;-ms-transform-origin:center top;transform-origin:center top;border:0;left:0!important}.dropdown-menu>li>a{color:hsla(0,0%,100%,.7);font-size:13px;font-weight:400;padding-top:4px;padding-bottom:4px;line-height:1.71428571}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#fff;background:hsla(0,0%,100%,.08)}.btn-group.open .dropdown-toggle{-webkit-box-shadow:none;box-shadow:none}.book-meta>.bookinfo>.identifiers>p>.btn-success{background-color:rgba(0,0,0,.15);color:hsla(0,0%,100%,.7);font-size:13px;display:inline-block;border-radius:4px;vertical-align:middle;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-transition:background-color .2s,color .2s;-o-transition:background-color .2s,color .2s;transition:background-color .2s,color .2s;text-transform:none}.book-meta>.bookinfo>.identifiers>p>.btn-success:hover{color:#fff;text-decoration:underline}#bookDetailsModal .book-meta{color:hsla(0,0%,100%,.7);height:calc(100% - 120px);overflow-x:hidden;overflow-y:scroll}.book-meta>.bookinfo .publishers,.book-meta>.bookinfo>.identifiers>p>.glyphicon-link{color:hsla(0,0%,100%,.45)}.rating .glyphicon-star.good{color:var(--color-primary)}body>div.container-fluid>div>div.col-sm-10>div.discover>.btn-danger{background:#ac3323;width:auto}body>div.container-fluid>div>div.col-sm-10>div.discover>.btn-danger:hover{background:#ce3d2a}body>div.container-fluid>div>div.col-sm-10>div.discover>.btn-primary:first-of-type{background:hsla(0,0%,100%,.25)}body>div.container-fluid>div>div.col-sm-10>div.discover>.btn-primary:first-of-type:hover{background:hsla(0,0%,100%,.3)}body>div.container-fluid>div>div.col-sm-10>div.discover>.btn-primary:last-of-type{background:var(--color-secondary)}body>div.container-fluid>div>div.col-sm-10>div.discover>.btn-primary:last-of-type:hover{background:var(--color-secondary-hover)}.book-meta>div.more-stuff>.btn-toolbar>.btn-group[aria-label="Remove from shelves"]{max-width:100%}.book-meta>.bookinfo>div.more-stuff>.btn-toolbar>.btn-group[aria-label="Remove from shelves"]>a{max-width:100%;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;margin:20px 0 0!important;border-radius:3px;background:hsla(0,0%,100%,.25);text-transform:none;padding:0 10px;text-align:left;line-height:1.5;font-family:Open Sans semibold,Helvetica Neue,Helvetica,Arial,sans-serif}.book-meta>div.more-stuff>.btn-toolbar>.btn-group[aria-label="Remove from shelves"]>a:hover{background:#ce3d2a;color:#fff}.book-meta>div.more-stuff>.btn-toolbar>.btn-group[aria-label="Remove from shelves"]>a>.glyphicon-remove{font-size:12px;padding-right:3px}.book-meta>div.more-stuff>.btn-toolbar>.btn-group[aria-label="Remove from shelves"]>a>.glyphicon-remove:before{content:"\ea64";font-family:plex-icons}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>.col-sm-6{width:100%}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.form-group{padding-left:15px}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12{padding:0}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12{padding:0;margin-bottom:60px}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#submit{float:left;margin-left:calc(100vw - 400px)}body>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9.col-xs-12>button.btn.btn-default{float:right}body>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9.col-xs-12>a:last-of-type{float:right;background:hsla(0,0%,100%,.25);margin-right:10px}body>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9.col-xs-12>a:last-of-type:hover{background:hsla(0,0%,100%,.3)}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>h2{width:calc(100vw - 390px)!important;height:60px!important;margin:0!important;padding-left:25px!important;color:hsla(0,0%,100%,.7)!important;font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif!important;font-size:15px!important;line-height:60px!important;-webkit-text-size-adjust:100%!important;-moz-text-size-adjust:100%!important;-ms-text-size-adjust:100%!important;text-size-adjust:100%!important;white-space:nowrap!important;-webkit-box-direction:normal!important;-webkit-font-smoothing:antialiased!important;-webkit-tap-highlight-color:transparent!important;font-weight:400!important;-webkit-margin-before:0!important;-webkit-margin-after:0!important;position:fixed!important;top:60px!important;left:240px!important;text-align:left!important;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding-right:25px!important}.author>.container-fluid>.row-fluid>.col-sm-10>h2:before,.plexBack>a{-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}.author>.container-fluid>.row-fluid>.col-sm-10>h2:before,.blur-wrapper>div,.plexBack>a{-webkit-box-direction:normal;-webkit-font-smoothing:antialiased}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group{position:fixed;top:60px;right:0}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[data-target="#DeleteShelfDialog"]{position:relative;float:right;width:50px;height:60px;border-radius:0;background:0 0;color:transparent;overflow:hidden;padding:6px 11px}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[data-target="#DeleteShelfDialog"]:before{content:"\EA6D";font-family:plex-icons-new;position:absolute;color:hsla(0,0%,100%,.7);font-size:20px;padding:6px 0 0 2px}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[data-target="#DeleteShelfDialog"]:hover{background:#ce3d2a}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[data-target="#DeleteShelfDialog"]:hover:before{color:#fff}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=edit]{position:relative;float:right;width:50px;height:60px;border-radius:0;background:0 0;color:transparent;overflow:hidden;margin:0;padding:6px 13px}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=edit]:before{content:"\EA5d";font-family:plex-icons;position:absolute;color:hsla(0,0%,100%,.7);font-size:20px;padding:6px 0 0 2px}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=edit]:hover:before{color:#fff}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=edit]:hover{background:0 0}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=order]{position:relative;float:right;width:50px;height:60px;border-radius:0;background:0 0;color:transparent;overflow:hidden;margin:0;padding:6px 11px}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=order]:before{content:"\E409";font-family:Glyphicons Regular;position:absolute;color:hsla(0,0%,100%,.7);font-size:20px;padding:6px 0 0 2px}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=order]:hover:before{color:#fff}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=order]:hover{background:0 0}body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a:hover{color:#fff!important;-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s;background-color:rgba(0,0,0,.55)!important}.blur-wrapper:after{content:'';display:block;width:100vw;height:100%;position:fixed;top:0;left:0;background-image:url(images/caliblur/blur-noise.png)!important;background-repeat:repeat!important;background-attachment:fixed!important;background-position:center center!important;background-size:auto!important;-webkit-background-size:auto!important}.blur-wrapper{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#3f4245;-o-transition:background-color 1s ease-in;transition:background-color 1s ease-in;-webkit-transition:background-color 1s ease-in;z-index:-9}.blur-wrapper>div{-moz-osx-font-smoothing:grayscale;position:absolute;top:0;right:0;bottom:0;left:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row;overflow:hidden}.bg-blur{background-size:cover;background-position:center center;background-repeat:no-repeat;width:100%!important;height:100%!important;position:absolute;max-width:100%!important;-webkit-filter:blur(125px) brightness(85%);filter:blur(125px) brightness(85%);-moz-filter:blur(125px);-o-filter:blur(125px);-ms-filter:blur(125px);opacity:.4;-webkit-animation:fade 1s;animation:fade 1s;-moz-animation:fade 1s;-o-animation:fade 1s;-o-object-fit:cover;object-fit:cover}.plexBack,.plexBack>a{display:block;height:60px;letter-spacing:normal;font-size:20px;top:0;font-weight:400;cursor:pointer}.authorlist .blur-wrapper{background:0 0}#scnd-nav>li.nav-head:first-child{margin-top:10px}.btn-danger{color:#fff;background-color:#ac3323;border-color:#ac3323}.btn-danger:hover{background-color:#ce3d2a;border-color:#641e14}.caret{border-top:5px solid;border-right:4px solid transparent;border-left:4px solid transparent}.plexBack{color:hsla(0,0%,100%,.7);line-height:34.29px;margin:0;padding:0;position:absolute;width:40px;left:50px}.plexBack>a{color:rgba(255,255,255,.7);font-family:plex-icons-new;-webkit-font-variant-ligatures:normal;font-variant-ligatures:normal;line-height:60px;position:relative;text-align:center;-webkit-text-size-adjust:100%;text-transform:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;width:100%;padding:0 10px}.plexBack>a:before{content:"\EA2F"}.plexBack:not(.noBack):hover>a{color:#fff}.login .well>h2{display:none}.login .well>form{max-width:480px;margin:auto}.login .well>form input{background-color:hsla(0,0%,100%,.25)}.login ::-webkit-input-placeholder{color:transparent}.login :-moz-placeholder{color:transparent}.login ::-moz-placeholder{color:transparent}.login :-ms-input-placeholder{color:transparent}body.login>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a{width:100vw;height:120px;margin:0!important;text-align:center;padding:60px 0 0;background:0 0;color:#ccc!important;font-size:20px}body.login>.container-fluid{width:100vw;height:100%;position:relative}body.login>div.container-fluid>div.row-fluid>div.col-sm-10{width:100%;height:100%;overflow-y:visible!important}body.login>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse{display:none!important}.login .navbar-default{background:0 0!important}body.login:not(.read-frame),body.shelfcreate,body.shelfedit{background-image:url(images/caliblur/blur-noise.png),url(images/caliblur/blur-dark.png)!important}body.author .undefined-img,body.shelfcreate,body.shelfedit{background-repeat:repeat,no-repeat!important;background-attachment:fixed,fixed!important;background-position:center center,center center!important}body.login>div.container-fluid>div.row-fluid>div.col-sm-10::before,body.login>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a::before{display:none}.book-meta>.bookinfo>.comments[aria-expanded=true]+a:after,.book-meta>.description[aria-expanded=true]+a:after{content:'';display:inline-block;border-color:hsla(0,0%,100%,.45);width:10px;height:10px;border-top-width:0;border-right:4px solid transparent;border-bottom-width:5px;border-left:4px solid transparent;position:absolute;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-style:solid;vertical-align:middle;-webkit-transition:border .2s,-webkit-transform .4s;-o-transition:border .2s,transform .4s;transition:border .2s,transform .4s;transition:border .2s,transform .4s,-webkit-transform .4s;margin:9px 6px}.book-meta>.bookinfo>.comments[aria-expanded=false]+a:after,.book-meta>.description[aria-expanded=false]+a:after{content:'';display:inline-block;border-color:hsla(0,0%,100%,.45);width:0;height:0;border-bottom-width:0;border-right:4px solid transparent;border-top-width:5px;border-left:4px solid transparent;position:absolute;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-style:solid;vertical-align:middle;-webkit-transition:border .2s,-webkit-transform .4s;-o-transition:border .2s,transform .4s;transition:border .2s,transform .4s;transition:border .2s,transform .4s,-webkit-transform .4s;margin:12px 6px}.book-meta>.bookinfo>.comments+a,.book-meta>.description+a{width:100px;margin-top:10px;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.book-meta>.bookinfo>.comments+a:hover,.book-meta>.description+a:hover{text-decoration:none}.book-meta>.bookinfo>.comments[aria-expanded=false]+a:hover:after,.book-meta>.description[aria-expanded=false]+a:hover:after{border-color:#fff;border-right:4px solid transparent;border-top-width:5px;border-left:4px solid transparent}.book-meta>.bookinfo>.comments[aria-expanded=true]+a:hover:after,.book-meta>.description[aria-expanded=true]+a:hover:after{border-color:#fff;border-right:4px solid transparent;border-bottom-width:5px;border-left:4px solid transparent}.navigation>ul>li>a>span.hidden-sm{display:inline-block!important}.shelfcreate .col-sm-10>.discover>form,.shelfedit .col-sm-10>.discover>form{width:500px;height:500px;margin:auto;max-width:calc(100vw - 300px);max-height:calc(100% - 200px)}body.shelfcreate>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.form-group,body.shelfedit>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.form-group{padding-left:0}body.shelfcreate,body.shelfedit{background-size:auto,cover!important;-webkit-background-size:auto,cover!important;-moz-background-size:auto,cover!important;-o-background-size:auto,cover!important;-webkit-transition:background-image 2s ease-in;-o-transition:background-image 2s ease-in;transition:background-image 2s ease-in}body.author .undefined-img{background-image:url(images/caliblur/blur-noise.png),url(images/caliblur/blur-light.png)!important;background-size:auto,cover!important;-webkit-background-size:auto,cover!important;-moz-background-size:auto,cover!important;-o-background-size:auto,cover!important;opacity:1;-webkit-filter:none;filter:none;width:100vw;height:100%;position:fixed;top:0;left:0;content:''}body.author img.bg-blur[src=undefined]{display:none}body.author:not(.authorlist) .undefined-img:before{content:"\e008";font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;font-size:6vw;position:fixed;left:240px;top:200px;width:20%;text-align:center;z-index:9}.author>.container-fluid>.row-fluid>.col-sm-10>h2:before{content:"About Author";width:calc(100vw - 240px);height:60px;margin:0;padding-left:25px;color:hsla(0,0%,100%,.7);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:60px;-webkit-text-size-adjust:100%;white-space:nowrap;-webkit-tap-highlight-color:transparent;font-weight:400;-webkit-margin-before:0;-webkit-margin-after:0;position:fixed;top:60px;left:240px;text-align:left}.author>.container-fluid>.row-fluid>.col-sm-10>h2{font-size:24px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;font-weight:400;line-height:1;margin:60px 0 0;padding:15px 15px 35px;border-bottom:2px solid rgba(0,0,0,.3)}.author>.container-fluid>.row-fluid>.col-sm-10>.author-bio{padding:35px 15px 15px;font-size:15px;color:hsla(0,0%,100%,.65)}.author>.container-fluid>.row-fluid>.col-sm-10>.author-bio>img{position:fixed;left:270px;top:200px;width:calc(20% - 60px);max-width:250px}.author>.container-fluid>.row-fluid>.col-sm-10>.author-bio>.author-link{color:var(--color-secondary)}.author>.container-fluid>.row-fluid>.col-sm-10>.author-bio>.author-link:hover{color:var(--color-secondary-hover)}body.author:not(.authorlist)>div.container-fluid>div>div.col-sm-10{width:calc(100% - 240px);left:240px;padding-left:20%;padding-right:30px;padding-bottom:20px}body.author>div.container-fluid>div>div.col-sm-10>div.discover{width:100%;padding:0 0 0 15px!important}body.author>div.container-fluid>div>div.col-sm-10>div.discover>h3{font-size:15px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:24px;text-transform:uppercase;color:#eee}.author>.container-fluid>.row-fluid>.col-sm-10>.author-bio a{color:var(--color-secondary)}.author>.container-fluid>.row-fluid>.col-sm-10>.author-bio a:hover{color:var(--color-secondary-hover)}body.shelf.modal-open>.container-fluid{z-index:9}#DeleteShelfDialog .text-center{text-align:left}#DeleteShelfDialog{top:0;overflow:hidden;padding-top:70px;left:0;right:0;bottom:0;background:rgba(0,0,0,.5)}#DeleteShelfDialog>.modal-dialog{width:450px;margin:auto}#DeleteShelfDialog>.modal-dialog>.modal-content{max-height:calc(100% - 90px);-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:3px;z-index:9999999999999999999999;left:calc(50% - 225px);right:auto;width:450px}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-header{padding:15px 20px;border-radius:3px 3px 0 0;line-height:1.71428571;vertical-align:bottom;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#eee;border-bottom:1px solid #222;background-color:#323232}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-header:before{content:"\E197";padding-right:10px;font-size:18px;color:#999;display:inline-block;font-family:Glyphicons Regular;font-style:normal;font-weight:400}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-header:after{content:"Delete Shelf";display:inline-block;font-size:20px}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-header>span{display:none}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-body{padding:20px 20px 30px;font-size:16px;line-height:1.6em;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;background:#282828}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-body>span:before{content:"Are you sure you want to delete this shelf?";display:inline-block;padding-right:5px}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-body:after{content:'';position:absolute;width:100%;height:72px;background-color:#323232;border-radius:0 0 3px 3px;left:0;margin-top:30px;z-index:0;border-top:1px solid #222;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-body>.btn{float:right;z-index:9;position:relative;margin:45px 0 0 10px;min-width:80px;padding:10px 18px;font-size:16px;line-height:1.33;border-radius:3px}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-body>.btn-default{background-color:hsla(0,0%,100%,.25)}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-body>.btn-default:hover{background-color:hsla(0,0%,100%,.3)}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:initial;background-color:initial;border-color:initial}#remove-from-shelves>.btn{background-color:rgba(0,0,0,.15);color:hsla(0,0%,100%,.7);padding:0 10px;font-size:13px;display:inline-block;overflow:hidden;border-radius:4px;vertical-align:middle;text-align:center;white-space:nowrap;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-transition:background-color .2s,color .2s;-o-transition:background-color .2s,color .2s;transition:background-color .2s,color .2s;margin:2px 6px 0 0;text-transform:none}#remove-from-shelves>.btn>span{font-size:10px;display:inline-block;top:3px;line-height:inherit;position:absolute;right:5px}#remove-from-shelves>.btn>span:before{content:"\EA52";font-family:plex-icons-new;color:transparent;padding-left:5px}#remove-from-shelves>a:first-of-type{margin-left:40px;overflow:visible}#remove-from-shelves>a:first-of-type:before{content:"\EA4D";font-family:plex-icons-new;position:absolute;color:hsla(0,0%,100%,.45);font-style:normal;font-weight:400;font-size:14px;left:-40px;pointer-events:none}#remove-from-shelves>.btn:hover{padding-right:20px;background:#ce3d2a;color:#fff;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}#remove-from-shelves>.btn:hover span:before{color:#fff;-webkit-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out}#remove-from-shelves+.identifiers,#remove-from-shelves+.languages,#remove-from-shelves+.publishers,#remove-from-shelves+.publishing-date,#remove-from-shelves+.tags{margin-top:-25px;z-index:9;position:relative}#remove-from-shelves>a.btn:last-of-type{margin-bottom:35px}#DeleteShelfDialog:before{content:"\E208";padding-right:10px;display:block;font-family:Glyphicons Regular;font-style:normal;font-weight:400;position:absolute;left:calc(50% + 185px);top:88px;font-size:16px;color:#eee;opacity:.5;-webkit-transition:-webkit-transform .3s ease-out;-o-transition:transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-60px);-ms-transform:translate(0,-60px);transform:translate(0,-60px);z-index:99}#DeleteShelfDialog.modal.in:before{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}#DeleteShelfDialog:hover:before{cursor:pointer}.btn-default.active:hover,.btn-default:active:hover{border-color:var(--color-secondary-hover);color:#fff;background-color:var(--color-secondary-hover)}body.advanced_search>div.container-fluid>div>div.col-sm-10>div.col-sm-8{padding:20px 0 60px;margin-top:120px;border-top:2px solid rgba(0,0,0,.3);width:calc(80% - 30px)}body.advanced_search>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>div,body.advanced_search>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>label{padding-left:15px;padding-right:15px}body.advanced_search>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>div .rating-input{padding-top:0;padding-bottom:0}body.advanced_search>div.container-fluid>div>div.col-sm-10>div.col-sm-8>form>.btn.btn-default{margin-right:15px;margin-top:20px}.advanced_search #search>.row>.form-group.col-sm-6{padding-left:0;margin-bottom:0}.advanced_search #search>.row>.form-group.col-sm-6>label[for=ratinghigh],.advanced_search #search>.row>.form-group.col-sm-6>label[for=ratinglow]{color:hsla(0,0%,100%,.45);font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;margin-top:10px}.glyphicon-remove:before{content:"\EA52";font-family:plex-icons-new;font-weight:400}body.advanced_search>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>div.row:nth-child(4){margin-bottom:30px}.me .dropdown-menu>li>#top_user{color:var(--color-primary)}.navbar-right>li>ul.dropdown-menu.offscreen{right:-10px}.login .plexBack,body.login>div.container-fluid>div.row-fluid>div.col-sm-2,body.login>div.navbar.navbar-default.navbar-static-top>div>form{display:none}@media only screen and (min-width:768px){#main-nav+#scnd-nav{background:rgba(0,0,0,.15)}body:not(.blur)>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>a#logout{display:none}body:not(.blur)>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>a#top_user{height:60px;padding:0!important;background:0 0!important;color:hsla(0,0%,100%,.7);line-height:20px;position:fixed;display:block;right:15px}body:not(.blur)>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>a#top_user>span.hidden-sm{display:none}body:not(.blur)>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>a#top_user>span.glyphicon-user{width:30px;height:30px;margin:15px;top:0;color:hsla(0,0%,100%,.7)}body:not(.blur)>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>a#top_user>span.glyphicon-user:before{content:'';display:inline-block;overflow:hidden;border-radius:50%;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K);background-size:contain;position:absolute;width:30px;height:30px}body:not(.blur)>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>a#top_user>span.glyphicon-user:after{content:'';display:inline-block;width:0;height:0;margin:15px 0 0 35px;vertical-align:middle;border-top:5px dashed;border-right:4px solid transparent;border-left:4px solid transparent}body:not(.blur) #nav_createshelf,body:not(.blur) #scnd-nav>#nav_about,body:not(.blur)>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li:not(.form-upload)>#form-upload,body:not(.blur)>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li:not(.top_admin)>#top_admin,body:not(.blur)>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li:not(.top_tasks)>#top_tasks{display:none}body:not(.blur) #nav_new{margin-bottom:30px}body:not(.blur) #nav_new:before{content:"\EA4F";font-family:plex-icons;font-style:normal;font-weight:400;line-height:1;color:hsla(0,0%,100%,.7);font-size:13px;position:absolute;left:25px;margin-top:9px}body:not(.blur) #nav_new:after{content:"Advanced Search";color:hsla(0,0%,100%,.7);font-size:13px;line-height:1.71428571;white-space:nowrap;position:absolute;left:49px;margin-top:5px}body:not(.blur)>.navbar>.container-fluid>.navbar-header:after,body:not(.blur)>.navbar>.container-fluid>.navbar-header:before{color:hsla(0,0%,100%,.7);cursor:pointer;display:block;font-family:plex-icons-new;font-size:20px;font-stretch:100%;font-style:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-numeric:normal;font-weight:400;height:60px;letter-spacing:normal;line-height:60px;position:absolute}body:not(.blur)>.navbar>.container-fluid>.navbar-header:before{content:"\EA30";-webkit-font-variant-ligatures:normal;font-variant-ligatures:normal;left:20px}body:not(.blur)>.navbar>.container-fluid>.navbar-header:after{content:"\EA2F";-webkit-font-variant-ligatures:normal;font-variant-ligatures:normal;left:60px}}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row:first-of-type>div.col>h2:before,body.admin>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type:before,body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1:before,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1:before{width:calc(100vw - 240px);height:60px;margin:0;padding-left:25px;background:0 0;color:hsla(0,0%,100%,.7);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:60px;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;-webkit-box-direction:normal;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;-webkit-margin-before:0;-webkit-margin-after:0;top:60px;white-space:nowrap;font-weight:400}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row:first-of-type>div.col>h2:before,body.admin>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type:before{content:"Admin Settings";position:fixed;left:240px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1:before{content:"User Settings";position:fixed;left:240px}body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1:before{content:"New User";position:fixed;left:240px}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid{height:auto;width:calc(100vw - 257px);margin:20px 0 30px!important;padding:0 10px 0 40px!important}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col>h2,body.admin>div.container-fluid>div>div.col-sm-10>div.discover>h2{font-size:24px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;font-weight:400;line-height:1}.table-striped>tbody>tr:nth-of-type(2n+1){background-color:transparent}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col>.btn>a,body.admin>div.container-fluid>div>div.col-sm-10>div.discover>.btn>a{text-decoration:none;color:#fff}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col .table>tbody>tr>td,body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col .table>tbody>tr>th,body.admin>div.container-fluid>div>div.col-sm-10>div.discover>.table>tbody>tr>td,body.admin>div.container-fluid>div>div.col-sm-10>div.discover>.table>tbody>tr>th{border:collapse}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10::before,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10::before{content:'';font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;font-size:6vw;position:fixed;left:240px;top:180px;width:calc(20% - 55px);text-align:center;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K);background-size:6vw;background-position-x:center;height:100%;background-repeat:no-repeat}body.edituser.admin>div.container-fluid>div>div.col-sm-10>div.discover,body.newuser.admin>div.container-fluid>div>div.col-sm-10>div.discover{left:240px;margin:120px 0 0 20%!important;padding:30px 15px 15px!important;width:calc(80% - 30px);border-top:2px solid rgba(0,0,0,.3)}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1{width:auto;position:absolute;top:60px;left:20%;font-size:24px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;font-weight:400;line-height:1;padding-left:30px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#submit,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#submit{float:right;margin-left:10px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#back,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#back{float:right;margin-left:0;background-color:hsla(0,0%,100%,.25)}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#back:hover,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#back:hover{background-color:hsla(0,0%,100%,.3)}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12{margin-bottom:60px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12{padding:0}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>h2,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>h2{color:#eee;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:24px;overflow:hidden;min-width:0;width:100%;max-width:100%;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;text-transform:uppercase;font-weight:400;padding-left:15px;margin-bottom:20px;top:0;left:0;height:auto}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2{height:200px;padding:0;margin:15px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a{width:100%;display:inline-block;height:100%}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:hover,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:hover{outline:solid var(--color-secondary);font-size:50px;-o-transition:outline 0s;transition:outline 0s;-webkit-transition:outline 0s}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:before{content:"\e352";display:inline-block;position:absolute;font-family:Glyphicons Regular;background:var(--color-secondary);color:#fff;border-radius:50%;font-weight:400;font-size:18px;line-height:50px;width:50px;height:50px;padding-left:16px;left:0;right:0;top:0;bottom:0;margin:auto;opacity:0;z-index:9}body.admin,body.admin td>a{color:hsla(0,0%,100%,.65)}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:hover:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:hover:before{-o-transition:opacity .2s;transition:opacity .2s;-webkit-transition:opacity .2s;opacity:1}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:after,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:after{position:absolute;content:'';width:100%;height:100%;top:0;left:0;opacity:0;background:-webkit-radial-gradient(50% 50%,farthest-corner,rgba(50,50,50,.5) 50%,#323232 100%);background:-o-radial-gradient(50% 50%,farthest-corner,rgba(50,50,50,.5) 50%,#323232 100%);background:radial-gradient(farthest-corner at 50% 50%,rgba(50,50,50,.5) 50%,#323232 100%)}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:hover:after,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:hover:after{opacity:1;-o-transition:opacity .2s;transition:opacity .2s;-webkit-transition:opacity .2s}body.admin .panel{background:rgba(0,0,0,.15);border:none;box-shadow:none;-webkit-box-shadow:none;border-radius:0}body.admin .panel-default>.panel-collapse>.panel-body,body.admin .panel-default>.panel-heading{color:hsla(0,0%,100%,.65);background-color:transparent;border:none}body.config.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>*,body.uiconfig.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>*{float:right}body.config.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>a,body.uiconfig.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>a{background-color:hsla(0,0%,100%,.25);margin-right:10px}body.config.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>a:hover,body.uiconfig.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>a:hover{background-color:hsla(0,0%,100%,.3)}body.admin{background-image:url(images/caliblur/blur-noise.png),url(images/caliblur/blur-dark.png)!important}body.admin td{font-family:Open Sans regular,Helvetica Neue,Helvetica,Arial,sans-serif}body.admin td>a:hover{color:#fff}.glyphicon-ok::before{content:"\EA55";font-family:plex-icons-new;font-weight:400}body.admin.config>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type,body.admin.uiconfig>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type,body.mailset>div.container-fluid>div>div.col-sm-10>div.discover>h1{width:calc(100vw - 240px);background:rgba(0,0,0,.15);color:hsla(0,0%,100%,.7);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:60px;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;-webkit-box-direction:normal;-webkit-margin-before:0;-webkit-margin-after:0;height:60px;top:60px;left:240px;position:fixed;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;white-space:nowrap;font-weight:400}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover>h1{margin:0;padding-left:25px}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover{padding:0 30px!important;margin-bottom:120px!important}body.admin.config>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type::before,body.admin.uiconfig>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type::before{content:none}body.admin.config>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type,body.admin.uiconfig>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type{margin:0;padding-left:25px}body:not(.blur) #scnd-nav>li>a>.glyphicon-book,body:not(.blur) #scnd-nav>li>a>.glyphicon-search{margin-right:7px}#scnd-nav>li>a>.glyphicon-search{margin-right:11px}#remove-from-shelves+.more-stuff+.languages,.identifiers+.more-stuff+.languages,.tags+.more-stuff+.languages{margin-top:20px}body:not(.blur):not(.login):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.langlist):not(.authorlist):not(.serieslist):not(.catlist):not(.shelforder):not(.admin):not(.modal-open)>div.container-fluid>div.row-fluid>div.col-sm-10:after{background:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.15)),to(rgba(0,0,0,.15))),url(images/caliblur/blur-noise.png),url(images/caliblur/blur-light.png)!important;background:-webkit-linear-gradient(bottom,rgba(0,0,0,.15),rgba(0,0,0,.15)),url(images/caliblur/blur-noise.png),url(images/caliblur/blur-light.png)!important;background:-o-linear-gradient(bottom,rgba(0,0,0,.15),rgba(0,0,0,.15)),url(images/caliblur/blur-noise.png),url(images/caliblur/blur-light.png)!important;background:linear-gradient(0deg,rgba(0,0,0,.15),rgba(0,0,0,.15)),url(images/caliblur/blur-noise.png),url(images/caliblur/blur-light.png)!important;background-repeat:no-reapeat,repeat,no-repeat!important;background-attachment:fixed,fixed,fixed!important;background-position:center center,center center,center center!important;background-size:auto,auto,cover!important;-webkit-background-size:auto,auto,cover!important;-moz-background-size:autom,auto,cover!important;-o-background-size:auto,auto,cover!important;width:100%;height:60px;display:block;content:'';position:fixed;top:60px;left:240px;z-index:99999999999999999999999999999999999}body.advsearch:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8:before,body.book:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>div.single:before,body.stat:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10:before,body:not(.blur):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.admin):not(.modal-open)>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover:first-of-type:before{background:url(images/caliblur/blur-noise.png) center center fixed,url(images/caliblur/blur-light.png) center center no-repeat fixed!important;background-size:auto,cover!important;-webkit-background-size:auto,cover!important;-moz-background-size:auto,cover!important;-o-background-size:auto,cover!important;width:calc(100vw - 240px);height:calc(100% - 120px);display:block;content:'';position:fixed;top:120px;left:240px;right:0;bottom:0;z-index:99999999999999999999999999999999999}body.advsearch:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8:after,body.book:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>div.single:after,body.stat:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>p:first-of-type:after,body:not(.blur):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.admin):not(.modal-open)>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover:first-of-type:after{content:'';-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-radius:50%;border-top:2px solid var(--color-secondary);border-right:2px solid var(--color-secondary);width:24px;height:24px;-webkit-animation:loading .5s linear infinite;animation:loading .5s linear infinite;display:block;top:240px;left:calc(50% + 120px);position:fixed;z-index:999999999999999999999999999999999999}.search #shelf-actions,body.login .home-btn{display:none}body.read:not(.blur) a[href*=readbooks]{color:hsla(0,0%,100%,.7)!important}.tooltip{-webkit-transform:translate(0) scale(1);-ms-transform:translate(0) scale(1);transform:translate(0) scale(1)}.tooltip.in{opacity:1;-o-transition:opacity .15s ease-out,transform .15s cubic-bezier(.6,.4,.2,1.4);transition:opacity .15s ease-out,transform .15s cubic-bezier(.6,.4,.2,1.4);transition:opacity .15s ease-out,transform .15s cubic-bezier(.6,.4,.2,1.4),-webkit-transform .15s cubic-bezier(.6,.4,.2,1.4);-webkit-transform:translate(0) scale(1);-ms-transform:translate(0) scale(1);transform:translate(0) scale(1);pointer-events:none}.tooltip.bottom .tooltip-inner{font-size:13px;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding:3px 10px;border-radius:4px;background-color:#191a1c;-webkit-box-shadow:0 4px 10px 0 rgba(0,0,0,.35);box-shadow:0 4px 10px 0 rgba(0,0,0,.35);opacity:1;white-space:nowrap;margin-top:-16px!important;line-height:1.71428571;color:#eee}.tooltip.bottom .tooltip-arrow{width:0;margin-left:auto;height:0;border:6px solid transparent;top:-6px;border-bottom-color:#191a1c;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);position:absolute;margin-top:-16px!important}#sendbtn>span{height:60px}body.search>div.container-fluid>div>div.col-sm-10>div.discover>h2+p{border-top:2px solid rgba(0,0,0,.3);margin:90px 27px 0 20px;text-align:center;padding-top:100px;color:hsla(0,0%,100%,.45);font-size:18px;line-height:1.5}body.search>div.container-fluid>div>div.col-sm-10>div.discover>h2+p:before{content:"Library";position:absolute;top:25px;left:60px;color:#fff;font-size:24px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:1.71428571}body.search>div.container-fluid>div>div.col-sm-10>div.discover>h2+p:after{content:"No Results";position:absolute;margin-left:-170px;margin-top:-40px;font-size:20px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3{max-width:calc(25% - 75px);position:fixed}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9{margin-left:25%!important;width:75%}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center>#delete,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center>#delete{position:fixed;top:60px;right:0;width:50px;height:60px;color:transparent;background:0 0;overflow:hidden;cursor:pointer;border-radius:0}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center>#delete:before,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center>#delete:before{content:"\EA6D";font-family:plex-icons-new;font-size:18px;color:hsla(0,0%,100%,.7)}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center>#delete:hover,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center>#delete:hover{background:#ce3d2a}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center>#delete:hover:before,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center>#delete:hover:before{color:#fff}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center.more-stuff>h4,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center.more-stuff>h4{color:#eee;margin:20px;text-transform:uppercase;font-size:16px}.editbook .form-control.tt-hint,.upload .form-control.tt-hint{background:hsla(0,0%,100%,.08)!important}.checkbox input[type=checkbox]{margin-left:-19px;margin-top:5px}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover{width:calc(100% - 3px);margin:0 0 0 3px!important;padding:0!important;border-collapse:collapse}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container,body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table{border:none;border-radius:0}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th{border-bottom:none;border-radius:0;background-color:hsla(0,0%,100%,.1);border-right:2px solid transparent;text-align:left!important;position:relative}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th:last-of-type{border-right:none}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th:hover{background-color:hsla(0,0%,100%,.15);color:#fff}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th:hover .th-inner{color:#fff}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th>.th-inner{font-size:13px;color:hsla(0,0%,100%,.7);-webkit-tap-highlight-color:transparent;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;background-image:none;text-align:left;padding:8px 20px;white-space:nowrap;width:100%;-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th>.th-inner.asc,body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th>.th-inner.desc{color:#fff}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th>.th-inner.asc:after{content:"\EA58";font-family:plex-icons-new;font-weight:400;right:20px;position:absolute}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th>.th-inner.desc:after{content:"\EA57";font-family:plex-icons-new;font-weight:400;right:20px;position:absolute}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>tbody>tr:hover{background:0 0!important}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>tbody>tr>td{background:0 0;border:none;text-align:left!important;padding:8px 20px;color:hsla(0,0%,100%,.65);-webkit-tap-highlight-color:transparent;font-size:13px;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>tbody>tr:nth-of-type(even){background-color:hsla(0,0%,100%,.02)!important}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>tbody>tr.no-records-found>td:before{content:"No Records Found";position:absolute;top:120px;left:calc(50% - 66px);font-size:14px;color:hsla(0,0%,100%,.65)}.epub-back,.epub-back:before{display:inline-block;overflow:hidden}.epub-back{width:18px;height:19px;line-height:20px;opacity:.5;padding:4px;border-radius:4px;position:relative}.epub-back>input{opacity:0;width:26px;height:27px;position:absolute;overflow:hidden;padding:0;left:0;top:0}.epub-back:before{content:"\EA1C";font-family:plex-icons-new;font-weight:400;color:#4f4f4f;position:absolute;opacity:.5;font-size:16px;left:5px;top:4px}.epub-back:hover:before{top:3px;left:4px;opacity:1}.epub-back:hover{border:1px solid rgba(0,0,0,.2);padding:3px}.col-sm-10 .book-meta>div.btn-toolbar>div.btn-group>div.btn-group>p:first-child{margin:0}body.login>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a:hover{color:#ccc!important;background-color:transparent!important}.empty-ul{opacity:.6;cursor:default;pointer-events:none}#DeleteDomain:hover:before,#RestartDialog:hover:before,#ShutdownDialog:hover:before,#UpdateprogressDialog:hover:before,#deleteButton,#deleteModal:hover:before,body.mailset>div.container-fluid>div>div.col-sm-10>div.discover td>a:hover{cursor:pointer}.lDutch{padding-left:90px!important}.blur-wrapper+.dropdown-menu{position:fixed;top:118px;right:5px}#read-in-browser[aria-expanded=true],#shelf-actions>.btn-group.open,.downloadBtn.open,.profileDrop[aria-expanded=true]{pointer-events:none}#btnGroupDrop1[aria-expanded=true]>span,#read-in-browser[aria-expanded=true]>span,#shelf-actions>.btn-group.open>#add-to-shelf>span{color:#fff}.navigation li a span{vertical-align:middle;margin-bottom:1px}.navigation li.active a .glyphicon-star{color:var(--color-primary)}#shelf-actions,#shelf-actions>.btn-group,#shelf-actions>.btn-group>.empty-ul{pointer-events:none}#shelf-actions>.btn-group>#add-to-shelf[aria-expanded=false]:not(.empty-ul){pointer-events:auto}.book-meta>.bookinfo>.comments p,.description p{margin:0 0 28px}#login,.profileDrop+span.hidden-sm{display:none}.admin #container>h2,body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col>h2{font-size:24px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;font-weight:400;line-height:1}.admin #container>.col-xs-12,body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col>.col-xs-12{width:100%;background:rgba(0,0,0,.15);padding:0;border-collapse:collapse}.admin #container>.col-xs-12:last-of-type,body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col>.col-xs-12:last-of-type{border-bottom:2px solid rgba(0,0,0,.3)}.admin #container>.col-xs-12>.Row>.col-xs-6,body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col>.col-xs-12>.row>.col-xs-6{width:50%;padding-top:8px;padding-bottom:8px;border-top:2px solid rgba(0,0,0,.3)}body.admin>div.container-fluid>div>div.col-sm-10>div.discover .btn>a{text-decoration:none;color:#fff}.admin #container+.col-xs-12{padding:0;margin:10px 0 30px}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col>.col-xs-12:nth-child(3){margin-bottom:20px}body.admin:not(.modal-open) .btn-default{margin-bottom:10px}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:hsla(0,0%,100%,.02)}.form-group[aria-label="Upload cover from local drive"]>.btn-primary{font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3{max-width:calc(25% - 75px);position:fixed;padding-left:30px;padding-right:0;z-index:9}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-9,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-9{margin-left:25%!important;width:75%}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete{position:fixed;top:60px;right:0;width:50px;height:60px;color:transparent;background:0 0;overflow:hidden;cursor:pointer;border-radius:0}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete:before,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete:before{content:"\EA6D";font-family:plex-icons-new;font-size:18px;color:hsla(0,0%,100%,.7);vertical-align:super}#main-nav+#scnd-nav .create-shelf a,#main-nav+#scnd-nav li.nav-head{font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;text-transform:uppercase}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete:hover,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete:hover{background:#ce3d2a}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete:hover:before,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete:hover:before{color:#fff}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center.more-stuff>h4,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center.more-stuff>h4{color:#eee;margin:20px;text-transform:uppercase;font-size:16px}#main-nav+#scnd-nav{width:240px;height:calc(100% - 120px);left:0;top:120px;background:0 0;padding:0 5px 20px 0;overflow-y:auto;position:fixed}#main-nav+#scnd-nav li.nav-head{margin:0;color:hsla(0,0%,100%,.3);font-size:12px;line-height:45px;padding-left:25px}#main-nav+#scnd-nav>li.nav-head:first-child{margin-top:10px}#main-nav+#scnd-nav li{min-height:30px;max-width:265px;overflow:visible;border-radius:0 4px 4px 0;display:list-item;height:auto;float:none}#main-nav+#scnd-nav li a{color:hsla(0,0%,100%,.7);text-decoration:none;padding:4px 25px;font-size:13px;height:30px;line-height:1.71428571;width:100%;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden;border-radius:0 4px 4px 0}#main-nav+#scnd-nav li a span{vertical-align:middle;margin-bottom:1px;margin-right:10px}#main-nav+#scnd-nav li a span:before{font-size:13px}#main-nav+#scnd-nav li.active a{color:var(--color-primary);background:0 0}#main-nav+#scnd-nav li a:hover{background:hsla(0,0%,100%,.08)}#main-nav+#scnd-nav li a[href*=advanced_search]{display:block}#main-nav+#scnd-nav li a[href*=advanced_search] span.hidden-sm{display:inline-block!important}#main-nav+#scnd-nav li.open a{background:0 0}#main-nav+#scnd-nav li.open a:hover{background:hsla(0,0%,100%,.08);color:#fff}#main-nav+#scnd-nav li a .glyphicon-star{color:hsla(0,0%,100%,.7)}#main-nav+#scnd-nav li a:hover .glyphicon-star{color:#fff}#main-nav+#scnd-nav #nav_cat a span{margin-right:8px}#main-nav+#scnd-nav .nav-head:nth-child(1n+2){border-top:none;padding-top:0;width:200px}#main-nav+#scnd-nav .create-shelf{width:25px;margin:10px -15px 0 0;min-height:auto;float:right;font-size:12px;text-align:center}#main-nav+#scnd-nav .create-shelf a{width:25px;color:hsla(0,0%,100%,.7)!important;background-color:transparent;padding:5px 7px 2px;font-size:12px;line-height:1;border-radius:3px;border:0;-webkit-transition:background-color .1s;-o-transition:background-color .1s;transition:background-color .1s;font-weight:400;white-space:nowrap;margin:auto;max-height:22px;-o-text-overflow:initial;text-overflow:initial;display:block}#main-nav+#scnd-nav .create-shelf a:before{content:"\EA13";font-family:plex-icons-new;font-size:100%;padding-right:10px;vertical-align:middle}#main-nav+#scnd-nav .create-shelf a:hover{background:0 0;color:#fff!important}#main-nav+#scnd-nav:after{width:100%;height:60px;background:rgba(0,0,0,.15);display:block;content:'';position:fixed;top:60px;left:240px;pointer-events:none}.modal-dialog{margin:0 auto 60px}body.admin.modal-open .navbar{z-index:0!important}#RestartDialog,#ShutdownDialog,#UpdateprogressDialog,#deleteModal{top:0;overflow:hidden;padding-top:70px;left:0;right:0;bottom:0;background:rgba(0,0,0,.5)}#RestartDialog:before,#ShutdownDialog:before,#UpdateprogressDialog:before,#deleteModal:before{content:"\E208";padding-right:10px;display:block;font-family:Glyphicons Regular;font-style:normal;font-weight:400;position:absolute;left:calc(50% + 185px);top:88px;font-size:16px;color:#eee;opacity:.5;-webkit-transition:-webkit-transform .3s ease-out;-o-transition:transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-60px);-ms-transform:translate(0,-60px);transform:translate(0,-60px);z-index:99}#RestartDialog.in:before,#ShutdownDialog.in:before,#UpdateprogressDialog.in:before,#deleteModal.in:before{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}#RestartDialog>.modal-dialog,#ShutdownDialog>.modal-dialog,#UpdateprogressDialog>.modal-dialog,#deleteModal>.modal-dialog{width:450px;margin:auto}#RestartDialog>.modal-dialog>.modal-content,#ShutdownDialog>.modal-dialog>.modal-content,#UpdateprogressDialog>.modal-dialog>.modal-content,#deleteModal>.modal-dialog>.modal-content{max-height:calc(100% - 90px);-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:3px;z-index:9999999999999999999999;left:calc(50% - 225px);right:auto;width:450px}#RestartDialog>.modal-dialog>.modal-content>.modal-header,#ShutdownDialog>.modal-dialog>.modal-content>.modal-header,#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-header,#deleteModal>.modal-dialog>.modal-content>.modal-header{padding:15px 20px;border-radius:3px 3px 0 0;line-height:1.71428571;vertical-align:bottom;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#eee;border-bottom:1px solid #222;background-color:#323232;text-align:left}#RestartDialog>.modal-dialog>.modal-content>.modal-header:before,#ShutdownDialog>.modal-dialog>.modal-content>.modal-header:before,#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-header:before,#deleteModal>.modal-dialog>.modal-content>.modal-header:before{padding-right:10px;font-size:18px;color:#999;font-style:normal;font-weight:400;display:inline-block}#RestartDialog>.modal-dialog>.modal-content>.modal-header:before{content:"\EA4F";font-family:plex-icons-new}#ShutdownDialog>.modal-dialog>.modal-content>.modal-header:before{content:"\E064";font-family:glyphicons regular}#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-header:before{content:"\EA15";font-family:plex-icons-new}#deleteModal>.modal-dialog>.modal-content>.modal-header:before{content:"\EA6D";font-family:plex-icons-new}#RestartDialog>.modal-dialog>.modal-content>.modal-header:after{content:"Restart Calibre-Web";display:inline-block;font-size:20px}#ShutdownDialog>.modal-dialog>.modal-content>.modal-header:after{content:"Stop Calibre-Web";display:inline-block;font-size:20px}#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-header:after{content:"Update Calibre-Web";display:inline-block;font-size:20px}#deleteModal>.modal-dialog>.modal-content>.modal-header:after{content:"Delete Book";display:inline-block;font-size:20px}#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-header>span,#deleteModal>.modal-dialog>.modal-content>.modal-header>span,#loader>center>img,.rating-mobile{display:none}#RestartDialog>.modal-dialog>.modal-content>.modal-body{padding:20px 20px 10px;font-size:16px;line-height:1.6em;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;background:#282828;text-align:left}#ShutdownDialog>.modal-dialog>.modal-content>.modal-body,#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-body,#deleteModal>.modal-dialog>.modal-content>.modal-body{padding:20px 20px 40px;font-size:16px;line-height:1.6em;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;background:#282828;text-align:left}#RestartDialog>.modal-dialog>.modal-content>.modal-body>p,#ShutdownDialog>.modal-dialog>.modal-content>.modal-body>p,#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-body>p,#deleteModal>.modal-dialog>.modal-content>.modal-body>p{padding:20px 20px 0 0;font-size:16px;line-height:1.6em;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;background:#282828}#RestartDialog>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#restart),#ShutdownDialog>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#shutdown),#deleteModal>.modal-dialog>.modal-content>.modal-footer>.btn-default{float:right;z-index:9;position:relative;min-width:80px;padding:10px 18px;font-size:16px;line-height:1.33;border-radius:3px;background-color:hsla(0,0%,100%,.25)}#RestartDialog>.modal-dialog>.modal-content>.modal-body>#restart{float:right;z-index:9;position:relative;margin:25px 0 0 10px;min-width:80px;padding:10px 18px;font-size:16px;line-height:1.33;border-radius:3px}#ShutdownDialog>.modal-dialog>.modal-content>.modal-body>#shutdown,#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-body>#updateFinished{float:right;z-index:9;position:relative;margin:55px 0 0 10px;min-width:80px;padding:10px 18px;font-size:16px;line-height:1.33;border-radius:3px}#deleteModal>.modal-dialog>.modal-content>.modal-footer>.btn-danger{float:right;z-index:9;position:relative;margin:0 0 0 10px;min-width:80px;padding:10px 18px;font-size:16px;line-height:1.33;border-radius:3px}#RestartDialog>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#restart){margin:25px 0 0 10px}#ShutdownDialog>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#shutdown){margin:55px 0 0 10px}#deleteModal>.modal-dialog>.modal-content>.modal-footer>.btn-default{margin:0 0 0 10px}#RestartDialog>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#restart):hover,#ShutdownDialog>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#shutdown):hover,#deleteModal>.modal-dialog>.modal-content>.modal-footer>.btn-default:hover{background-color:hsla(0,0%,100%,.3)}#RestartDialog>.modal-dialog>.modal-content>.modal-body:after{content:'';position:absolute;width:100%;height:72px;background-color:#323232;border-radius:0 0 3px 3px;left:0;margin-top:10px;z-index:0;border-top:1px solid #222;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}#ShutdownDialog>.modal-dialog>.modal-content>.modal-body:after,#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-body:after{content:'';position:absolute;width:100%;height:72px;background-color:#323232;border-radius:0 0 3px 3px;left:0;margin-top:40px;z-index:0;border-top:1px solid #222;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}#deleteButton{position:fixed;top:60px;right:50px;width:50px;height:60px;color:transparent;background:0 0;overflow:hidden;border-radius:0;border-right:2px solid rgba(0,0,0,.3)}#deleteButton>span.glyphicon-remove{font-size:18px;color:hsla(0,0%,100%,.7)}#deleteButton:hover span.glyphicon-remove{color:#fff}#deleteButton>span.glyphicon-remove:before{content:"\EA66"}.editbook .more-stuff>.dropdown-menu{position:fixed;top:90px;right:17px;left:auto!important}body.authorlist .blur-wrapper:after{content:none}#loader{background-image:url(images/caliblur/blur-noise.png),url(images/caliblur/blur-dark.png)!important;background-repeat:repeat,no-repeat!important;background-attachment:fixed,fixed!important;background-position:center center,center center!important;background-size:auto,cover!important;-webkit-background-size:auto,cover!important;-moz-background-size:auto,cover!important;-o-background-size:auto,cover!important;position:fixed;top:0;left:0;width:100vw;height:100%;z-index:9}#loader>center{display:block;width:100%;height:100%;top:calc(50% - 120px);position:absolute}#loader>center>h3{font-size:20px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;text-transform:uppercase}#loader>center:after{content:'';-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-radius:50%;border-top:2px solid var(--color-secondary);width:24px;height:24px;animation:spin .5s linear infinite;display:block;margin:20px auto;position:fixed;top:calc(50% - 24px);left:calc(50% - 12px);z-index:999999}.book:not(body){width:180px!important;max-width:180px!important;min-width:180px!important}#books .cover img,#books_rand .cover img,.book.isotope-item .cover img{width:150px!important}.container-fluid .book .meta .author,.container-fluid .book .meta .title{white-space:nowrap!important}.container-fluid .book .meta .rating{display:none!important}.container-fluid .book .meta{margin-top:0!important}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>h2,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>h2,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>h2{position:absolute;margin-top:-30px;font-size:14px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))!important;display:-ms-grid;display:grid;margin-top:40px;margin-bottom:60px}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))!important;display:-ms-grid;display:grid;margin-top:90px;margin-bottom:0}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12:before{content:'';display:block;position:absolute;width:calc(100% + 30px);height:2px;background:rgba(0,0,0,.3);margin-left:-15px;margin-top:-65px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2,body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2{width:135px!important;max-width:135px!important;min-width:135px!important}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a>img,body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a>img,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a>img{width:135px!important;height:200px!important}#theme,label[for=theme]{display:inline}@media only screen and (max-width:767px){#form-upload .form-group .btn:before,#top_admin>.glyphicon,#top_tasks>.glyphicon-tasks{-moz-osx-font-smoothing:grayscale;font-weight:400;font-style:normal}#query,.navbar-collapse.collapse>.col-sm-2{padding-left:0;padding-right:0}#query,.collapsing{-o-transition:all 0s}body.login:not(.read-frame),body:not(.read-frame){background-color:var(--color-background-mobile)!important;background-image:none!important}.navbar-default{height:48px;min-height:48px}.navbar>.container-fluid{height:48px}.navbar>.container-fluid>.navbar-header{margin:0}.navbar>.container-fluid>.navbar-header>button.navbar-toggle{border:0;float:left;padding:0;width:48px;height:48px;margin:0;top:0}.navbar>.container-fluid>.navbar-header>button.navbar-toggle:active,.navbar>.container-fluid>.navbar-header>button.navbar-toggle:focus,.navbar>.container-fluid>.navbar-header>button.navbar-toggle:hover{background:0 0}.navbar>.container-fluid>.navbar-header>button.navbar-toggle:before{content:'';display:inline-block;overflow:hidden;border-radius:50%;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K);background-size:contain;position:absolute;width:30px;height:30px;top:9px;left:9px}.navbar>.container-fluid>.navbar-header>button.navbar-toggle>span{opacity:0;position:absolute}body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a{margin:0!important;height:48px;line-height:48px;width:calc(100vw - 138px);background:0 0!important;color:hsla(0,0%,100%,.7)!important;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;pointer-events:none}.home-btn{height:48px;line-height:28.29px;right:10px;left:auto}.home-btn>a{height:48px;line-height:48px}.plexBack{height:48px;line-height:28.29px;left:48px;display:none}.plexBack>a{height:48px;line-height:48px}body>div.navbar.navbar-default.navbar-static-top>div>form{margin:0;padding:0;border:0;box-shadow:none;-webkit-box-shadow:none;position:absolute;right:50px;top:0;height:48px}body>div.navbar.navbar-default.navbar-static-top>div>form:before{top:12px;left:auto;right:15px;color:hsla(0,0%,100%,.7)}body>div.navbar.navbar-default.navbar-static-top>div>form:hover:before{color:#fff}body>div.navbar.navbar-default.navbar-static-top>div>form>div{width:40px;height:48px}#query{width:40px!important;height:48px;border-radius:0;background:0 0;cursor:pointer;color:transparent;opacity:0;-webkit-transition:all 0s;transition:all 0s}body>div.navbar.navbar-default.navbar-static-top>div>form.search-focus{position:absolute;top:0;left:0;width:100vw}body>div.navbar.navbar-default.navbar-static-top>div>form.search-focus>div.form-group{width:100vw}body>div.navbar.navbar-default.navbar-static-top>div>form.search-focus>div>#query{width:calc(100vw - 100px)!important;margin:0!important}#query:focus{background:#555!important;color:#eee!important;cursor:text;left:50px;width:calc(100px)!important;opacity:1;padding-left:15px}body>div.navbar.navbar-default.navbar-static-top>div>form.search-focus>div>span.input-group-btn:before{content:"\EA33";display:block;font-family:plex-icons-new;position:fixed;left:0;top:0;width:50px;height:48px;color:#eee;font-weight:400;font-size:14px;background:#555;line-height:48px;text-align:center;cursor:pointer}.mobile-navbar-brand,.profileDrop>span:after,body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul:first-of-type:not(.navbar-right){display:none}#form-upload>.form-group:before,.profileDrop+span.hidden-sm{font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif}body>div.navbar.navbar-default.navbar-static-top>div>form>div>span.input-group-btn{background:#555;position:absolute;left:auto;right:0;height:48px;width:50px;border-radius:0}body>div.navbar.navbar-default.navbar-static-top>div>form>div>span>button{height:48px;width:50px;border-radius:0}body>div.navbar.navbar-default.navbar-static-top>div>form>div>span>button::before{color:#555;background:#eee}.navbar-collapse.collapse{height:calc(100%)!important;width:240px;background:#3f4245;border:0;-webkit-box-shadow:none;box-shadow:none;margin:0;padding:0;position:fixed;top:0;left:0;overflow-y:auto!important;overflow-x:hidden!important}#form-upload,#main-nav>li:nth-child(1){border-bottom:1px solid hsla(0,0%,78%,.15);float:left}#main-nav{margin-right:0;height:auto}#main-nav>li:nth-child(1){margin-left:0;width:100%;height:120px;z-index:99}body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>a.profileDrop{height:120px;width:100%}body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>a.profileDrop:before{right:auto;position:absolute;left:211px;top:80px;color:#fff;content:'';display:inline-block;width:0;height:0;vertical-align:middle;border-top:5px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.profileDrop>span{width:30px;height:30px;margin:30px 15px;top:0}.profileDrop+span.hidden-sm{display:block;position:absolute;top:70px;left:15px;color:#fff;pointer-events:none}#main-nav>li{float:left}#main-nav>li.form-upload{width:100%}#form-upload{position:relative;width:100%;margin:0;padding:0;height:60px;border-top:none}#form-upload>.form-group:before{content:"Upload Book";color:#fff;font-size:13px!important;padding-left:15px;height:60px;line-height:60px;position:absolute}#form-upload .form-group .btn{float:left;width:240px}#btn-upload{width:100%}#form-upload .form-group .btn:before{content:"\e043";font-family:'Glyphicons Halflings';line-height:1;-webkit-font-smoothing:antialiased;color:#fff;font-size:16px;background:0 0;border-radius:50%;width:20px;height:20px;display:inline-block;margin:0;padding:23px 0 23px 202px;z-index:-9}#form-upload .form-group .btn:after{content:"\EA13";position:absolute;font-family:plex-icons-new;font-size:8px;background:#3c444a;color:#fff;border-radius:50%;padding:.25px .25px 0 0;z-index:9;left:198px;top:32px;width:10px;height:10px;line-height:10px;font-weight:400;text-align:center;pointer-events:none}#main-nav>li.top_admin,#main-nav>li.top_tasks{height:45px;width:100%;min-height:30px;overflow:visible;border-radius:0 4px 4px 0;max-width:265px}#main-nav>li.top_tasks:before{content:"MANAGE";color:hsla(0,0%,100%,.45);text-transform:uppercase;font-size:12px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:60px;padding-left:15px;position:absolute;top:-60px}#top_admin,#top_tasks,.navigation>ul>li>a{color:#fff;height:45px;width:100%;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;text-decoration:none}#main-nav>li.top_tasks{margin-top:72px}#top_admin,#top_tasks{padding:11.5px 15px;font-size:13px;line-height:1.71428571;overflow:hidden}#top_admin>.glyphicon,#top_tasks>.glyphicon-tasks{position:relative;top:0;font-family:'Glyphicons Halflings';line-height:1;border-radius:0;background:0 0;display:inline-block}#top_tasks>.glyphicon-tasks{-webkit-font-smoothing:antialiased;margin-right:7px}#top_admin>.glyphicon{-webkit-font-smoothing:antialiased;margin-right:10px}#top_tasks>.glyphicon-tasks::before,body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>#top_admin>.glyphicon-dashboard::before{text-transform:none;font-family:plex-icons-new;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;speak:none;vertical-align:sub;font-weight:400;font-style:normal}#top_tasks>.glyphicon-tasks::before{content:"\EA2E";line-height:22px;font-size:16px}body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>#top_admin>.glyphicon-dashboard::before{content:"\EA56";line-height:22px;font-size:14px}#top_admin>span.hidden-sm,#top_tasks>span.hidden-sm{display:inline-block;line-height:22px}.navigation>ul>li:hover{background-color:transparent}.navigation>ul>li{min-height:45px;max-width:265px;overflow:visible;border-radius:0 4px 4px 0}.navigation>ul>li>a{padding:11.5px 15px;font-size:13px;line-height:1.71428571;overflow:hidden}.navigation .nav-head{margin:0;color:hsla(0,0%,100%,.45);text-transform:uppercase;font-size:12px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:60px;padding-left:15px;height:60px;min-height:60px}.pagination,.pagination:after,body>div.container-fluid>div>div.col-sm-10>div.pagination>a.next,body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous,body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous:before{line-height:42px;height:42px}.navigation .create-shelf{width:25px;margin:17.5px 0 0;min-height:auto;float:right}.navigation .create-shelf a{color:#fff!important}.navigation li a .glyphicon-star{color:#fff}.navbar-nav .open .dropdown-menu.profileDropli{width:210px;margin-left:12px}.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:hsla(0,0%,100%,.7)}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:hsla(0,0%,100%,.08)}.navbar-collapse.collapse .navigation li a span{vertical-align:middle}.navbar-collapse.collapse .navigation li a span.caret{position:absolute;left:210px;top:20px}.navbar-collapse.collapse .hidden-xs{display:list-item!important;width:225px}.navbar-collapse.collapse:after{display:none}.tooltip{display:none!important}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2:before,body.advsearch>div.container-fluid>div>div.col-sm-10:before,body.authorlist>div.container-fluid>div>div.col-sm-10>div.container:before,body.catlist>div.container-fluid>div>div.col-sm-10>div.container:before,body.langlist>div.container-fluid>div>div.col-sm-10>div.container:before,body.login .navbar>.container-fluid>.navbar-header>button.navbar-toggle,body.serieslist>div.container-fluid>div>div.col-sm-10>div.container:before{display:none}body>div.container-fluid>div.row-fluid>div.col-sm-10{width:100%;top:42px;height:calc(100% - 42px)}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid,body>div.container-fluid>div>div.col-sm-10>div.discover{width:100%;margin:0!important;padding:10px!important}.author>.container-fluid>.row-fluid>.col-sm-10>h2:before,body.admin.config>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type,body.admin.uiconfig>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type,body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row:first-of-type>div.col>h2:before,body.admin>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type:before,body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1:before,body.mailset>div.container-fluid>div>div.col-sm-10>div.discover>h1,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1:before,body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover>h1,body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover>h2,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>#test:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9>div:nth-child(10)>label:before,body>div.container-fluid>div>div.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2,body>div.container-fluid>div>div.col-sm-10>h1,body>div.container-fluid>div>div.col-sm-10>h3:first-of-type{top:48px;left:0;padding-left:10px;height:42px;width:calc(100%);line-height:42px;padding-right:130px;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;background:rgba(0,0,0,.15);font-size:13px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1{top:10px;left:55px;font-size:16px}body.admin>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type:before{text-transform:none}.pagination{top:48px}body>div.container-fluid>div>div.col-sm-10>div.pagination>a.next:before{height:42px;line-height:42px;padding:11px 0 11px 20px}body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous:before{padding:11px 25px}body>.container-fluid{height:calc(100% - 48px);top:48px}body>div.container-fluid>div>div.col-sm-10>div.discover>div.isotope{grid-template-columns:repeat(auto-fit,minmax(110px,1fr))!important}.book:not(body){width:110px!important;max-width:110px!important;min-width:110px!important;padding:0 5px;margin-left:auto;margin-right:auto}.container-fluid .book{margin-top:10px}.container-fluid .book .cover{height:150px;margin-bottom:0}#books .cover img,#books_rand .cover img,.book.isotope-item .cover img{width:100px!important}#books>.cover>a:before,#books_rand>.cover>a:before,.book.isotope-item>.cover>a:before{line-height:40px;width:40px;height:40px;font-size:16px;padding-left:12px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10::before,body.me>div.container-fluid>div.row-fluid>div.col-sm-10:before,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10::before{position:absolute;top:20px;left:30px;width:30px;height:30px;background-size:30px}body.advanced_search>div.container-fluid>div>div.col-sm-10>div.col-sm-8:before,body.author:not(.authorlist) .undefined-img:before,body.authorlist>div.container-fluid>div.row-fluid>div.col-sm-10:before,body.catlist>div.container-fluid>div.row-fluid>div.col-sm-10:before,body.langlist>div.container-fluid>div>div.col-sm-10:before,body.serieslist>div.container-fluid>div>div.col-sm-10:before,body.shelforder>div.container-fluid>div.row-fluid>div.col-sm-10:before{position:fixed;top:62px;right:23px;left:auto;width:auto;height:auto;font-size:14px;color:hsla(0,0%,100%,.7)}body.edituser.admin>div.container-fluid>div>div.col-sm-10>div.discover,body.me>div.container-fluid>div>div.col-sm-10>div.discover,body.newuser.admin>div.container-fluid>div>div.col-sm-10>div.discover{left:0;width:auto;margin:75px 15px 0!important;padding:20px 0!important;max-width:100%!important;border-top:1px solid hsla(0,0%,78%,.15)}body>div.container-fluid>div>div.col-sm-10>div.container{left:0;width:auto;margin:0!important;padding:0!important;max-width:100%!important;border:0}body.me>div.container-fluid>div>div.col-sm-10>div.discover:before{top:30px;left:70px;font-size:16px}body:not(.shelfcreate):not(.shelfedit)>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.form-group{padding-right:15px}.form-group>label{font-size:12px}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12{margin:100px 0 0;grid-template-columns:repeat(auto-fit,minmax(110px,1fr))!important}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12{float:left;width:100%;margin-bottom:10px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12:before{width:100%;margin-left:0;margin-top:-45px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2,body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2{width:100px!important;max-width:100px!important;min-width:100px!important}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a>img,body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a>img,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a>img{width:100px!important;height:150px!important}body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#submit{margin-right:15px}body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a:after{width:calc(100%)}body>div.container-fluid>div>div.col-sm-10>h3:not(:first-of-type){margin:15px auto 10px;font-size:14px}body>div.container-fluid>div>div.col-sm-10>p{margin:auto auto 15px}.well>h2,body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>h2,body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover:only-of-type>h2{top:48px!important;left:0!important;padding-left:10px!important;height:42px!important;width:calc(100%)!important;line-height:42px!important;padding-right:130px!important;overflow:hidden!important;-o-text-overflow:ellipsis!important;text-overflow:ellipsis!important;white-space:nowrap!important;background:rgba(0,0,0,.15)!important;font-size:13px!important;max-width:100%!important}.author>.container-fluid>.row-fluid>.col-sm-10>h2:after{content:"\e008";font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;font-size:6vw;position:fixed;left:240px;top:180px;width:calc(20% - 55px);text-align:center}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2{height:42px;width:calc(100%);line-height:42px;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;background:rgba(0,0,0,.15);font-size:13px;max-width:100%;color:hsla(0,0%,100%,.7);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;position:fixed;top:48px;left:0;border:0;padding:0 50px 0 10px}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th>.th-inner.asc:after{right:2px}#libs{margin-bottom:5px}body>div.container-fluid>div>div.col-sm-10>div.container>div>.row{padding:0}.well{padding:60px 0;max-width:calc(100% - 30px);min-width:auto}body.author .undefined-img{background:var(--color-background-mobile)!important}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group{position:relative;top:0;right:auto;left:auto;width:210px;margin:auto}#DeleteShelfDialog>.modal-dialog{max-width:calc(100vw - 40px)}#DeleteShelfDialog>.modal-dialog>.modal-content{max-width:calc(100vw - 40px);left:0}.shelfcreate .col-sm-10>.discover>form,.shelfedit .col-sm-10>.discover>form{max-width:calc(100vw - 30px);max-height:calc(100% - 200px)}.shelforder>.container-fluid>.row-fluid>.col-sm-10>.col-sm-6{margin:0;width:100%;padding:10px}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2+div{margin-top:0;font-size:13px;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-primary);text-align:right;text-transform:none}.shelforder #ChangeOrder{margin:0 0 10px}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>a{margin:0 10px 10px 0}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:var(--color-primary);background-color:transparent}body.advanced_search>div.container-fluid>div>div.col-sm-10>div.col-sm-8{border:0;width:100%;margin:0;padding:10px}.advanced_search #search>.row>.form-group.col-sm-6:first-of-type{padding-right:0;margin-bottom:15px}body.advanced_search>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>div.row:nth-child(4){margin-bottom:15px}body.advanced_search>div.container-fluid>div>div.col-sm-10>div.col-sm-8>form>.btn.btn-default{margin-bottom:20px;margin-top:10px}body.me>div.container-fluid>div>div.col-sm-10>div.discover{border-top:1px solid hsla(0,0%,78%,.15)}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12:before{height:1px;background:hsla(0,0%,78%,.15)}body{font-size:13px}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col>h2,body.admin>div.container-fluid>div>div.col-sm-10>div.discover>h2{font-size:14px;text-transform:uppercase}.me .dropdown-menu>li>#top_user:hover{color:#fff}body:not(.blur):not(.login):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.langlist):not(.authorlist):not(.serieslist):not(.catlist):not(.shelforder):not(.admin):not(.modal-open)>div.container-fluid>div.row-fluid>div.col-sm-10:after{background:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.15)),to(rgba(0,0,0,.15))),url(images/caliblur/blur-noise.png),var(--color-background-mobile)!important;background:-webkit-linear-gradient(bottom,rgba(0,0,0,.15),rgba(0,0,0,.15)),url(images/caliblur/blur-noise.png),var(--color-background-mobile)!important;background:-o-linear-gradient(bottom,rgba(0,0,0,.15),rgba(0,0,0,.15)),url(images/caliblur/blur-noise.png),var(--color-background-mobile)!important;background:linear-gradient(0deg,rgba(0,0,0,.15),rgba(0,0,0,.15)),url(images/caliblur/blur-noise.png),var(--color-background-mobile)!important;width:100%;height:42px;display:block;content:'';position:fixed;top:48px;left:0;z-index:99999999999999999999999999999999999;border:0;animation:none;-webkit-animation:none;border-radius:0}body.advsearch:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8:before,body.book:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>div.single:before,body.stat:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10:before,body:not(.blur):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.admin):not(.modal-open)>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover:first-of-type:before,body:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10:before{background:var(--color-background-mobile)!important;width:100%;height:calc(100% - 90px);display:block;content:'';position:fixed;top:90px;left:0;right:0;bottom:0;z-index:99999999999999999999999999999999999}body.advsearch:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8:after,body.book:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>div.single:after,body.stat:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>p:first-of-type:after,body:not(.blur):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.admin):not(.modal-open)>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover:first-of-type:after,body:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10:after{content:'';-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-radius:50%;border-top:2px solid var(--color-secondary);border-right:2px solid var(--color-secondary);width:24px;height:24px;-webkit-animation:loading .5s linear infinite;animation:loading .5s linear infinite;display:block;top:50%;left:calc(50% - 12px);position:fixed;z-index:999999999999999999999999999999999999}body:not(.blur)>.navbar>.container-fluid>.navbar-header:before{content:"\EA30";color:hsla(0,0%,100%,.7);cursor:pointer;display:block;font-family:plex-icons-new;font-size:20px;font-stretch:100%;font-style:normal;font-variant-caps:normal;font-variant-east-asian:normal;-webkit-font-variant-ligatures:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-weight:400;height:48px;letter-spacing:normal;line-height:48px;position:absolute;left:auto;right:20px}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>#test{border-top:1px solid hsla(0,0%,78%,.15)}.col-sm-10 .book-meta>div.btn-toolbar{position:relative;top:0;width:calc(100% + 30px);margin-left:-15px}.book-meta .btn-toolbar>h2{display:none}.book-meta .btn-toolbar>.btn-group{float:none;margin:auto}.btn-toolbar{margin-left:0}#shelf-actions{width:50px}div.btn-group[role=group][aria-label="Download, send to Kindle, reading"]{display:block}.book-meta>.author>a:first-of-type::before,.book-meta>.bookinfo>.rating,.col-sm-10 .book-meta>div.btn-toolbar:after{display:none}div.btn-group[role=group][aria-label="Download, send to Kindle, reading"]>.downloadBtn{border-left:0}.blur-wrapper{display:none;-o-transition:none;transition:none;-webkit-transition:none}body.book>div.container-fluid>div.row-fluid>div.col-sm-10{width:100%;top:0;height:calc(100% - 0px)}body>div.container-fluid>div>div.col-sm-10>div.single{width:100%;padding:15px!important}body>div.container-fluid>div>div.col-sm-10>div>div>div.col-sm-3.col-lg-3.col-xs-5{position:absolute;height:150px;width:100px;padding:0;max-width:100px;margin-top:75px}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-body>div>div>div>div.col-sm-3.col-lg-3.col-xs-5>div.cover>img,body>div.container-fluid>div>div.col-sm-10>div>div>div.col-sm-3.col-lg-3.col-xs-5>div.cover>img{width:100px;height:150px}body>div.container-fluid>div>div.col-sm-10>div>div>div.col-sm-9.col-lg-9.book-meta{margin:0;width:100%;padding:0}.book-meta>h2{max-width:100%;margin-left:120px;font-size:16px;padding:15px 0 10px;min-height:60px;line-height:20px;margin-top:10px}.book-meta>.bookinfo>p:first-of-type,body.book .author{margin-left:120px;line-height:1}body.book .author{font-size:14px;padding-bottom:10px}.book-meta>.author:before{content:"Author — ";color:hsla(0,0%,100%,.45);position:relative;left:0;pointer-events:none}.book-meta>.bookinfo>.hr{background:0 0;margin:45px}.book-meta>.bookinfo>.publishing-date>span:last-of-type{padding-left:25px}.book-meta>.bookinfo>.publishers>span:last-of-type{padding-left:70px}.book-meta>.bookinfo>.languages>span:last-of-type{padding-left:65px}.book-meta>.bookinfo .publishers{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.comments+[data-readmore-toggle],div.description+[data-readmore-toggle]{text-align:center;color:var(--color-secondary);margin:10px auto}div.comments+[data-readmore-toggle]:hover,div.description+[data-readmore-toggle]:hover{color:#fff}.book-meta>.bookinfo>.comments[aria-expanded=false]+a:after,.book-meta>.description[aria-expanded=false]+a:after{content:'';display:inline-block;border-color:var(--color-secondary);width:0;height:0;border-bottom-width:0;border-right:4px solid transparent;border-top-width:5px;border-left:4px solid transparent;position:absolute;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-style:solid;vertical-align:middle;-webkit-transition:border .2s,-webkit-transform .4s;-o-transition:border .2s,transform .4s;transition:border .2s,transform .4s;transition:border .2s,transform .4s,-webkit-transform .4s;margin:12px 6px}.book-meta>.bookinfo>.comments[aria-expanded=true]+a:after,.book-meta>.description[aria-expanded=true]+a:after{content:'';display:inline-block;border-color:var(--color-secondary);width:10px;height:10px;border-top-width:0;border-right:4px solid transparent;border-bottom-width:5px;border-left:4px solid transparent;position:absolute;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-style:solid;vertical-align:middle;-webkit-transition:border .2s,-webkit-transform .4s;-o-transition:border .2s,transform .4s;transition:border .2s,transform .4s;transition:border .2s,transform .4s,-webkit-transform .4s;margin:9px 6px}body.author:not(.authorlist) .blur-wrapper:before,body.author>.container-fluid>.row-fluid>.col-sm-10>h2:after{content:"\e008";font-family:'Glyphicons Halflings';font-weight:400;z-index:9;line-height:1;text-align:center}body.author:not(.authorlist)>div.container-fluid>div>div.col-sm-10{width:100%;left:0;padding:10px}.author>.container-fluid>.row-fluid>.col-sm-10>h2{float:right;width:100%;margin:0;border-bottom:1px solid hsla(0,0%,78%,.15);padding:20px 0 0 135px;min-height:140px;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.author>.container-fluid>.row-fluid>.col-sm-10>.author-bio>img{position:absolute;left:25px;top:25px;width:100px;height:100px;z-index:9;border-radius:50%}body.author>.container-fluid>.row-fluid>.col-sm-10>h2:after{font-style:normal;font-size:8vw;position:absolute;left:25px;top:26px;width:100px;height:100px}body.author:not(.authorlist) .blur-wrapper{display:block;background:var(--color-background-mobile)}body.author:not(.authorlist) .blur-wrapper>img{opacity:0;-webkit-animation:none;animation:none;-moz-animation:none;-o-animation:none}body.author:not(.authorlist) .blur-wrapper:before{position:fixed;top:62px;right:23px;left:auto;width:auto;height:auto;font-size:14px;color:hsla(0,0%,100%,.7)}.author>.container-fluid>.row-fluid>.col-sm-10>h2+.discover>.row{padding-top:30px}body.author>div.container-fluid>div>div.col-sm-10>div.discover{padding:0!important}.author>.container-fluid>.row-fluid>.col-sm-10>.author-bio{margin-top:125px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12{float:left;width:100%;margin-bottom:10px;grid-template-columns:repeat(auto-fit,minmax(110px,1fr))!important}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12{margin-bottom:20px;padding-right:15px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2,body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2{height:150px;padding:0;margin:7.5px auto}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover{padding:15px 0!important}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover>form>.btn.btn-default{display:block;margin:10px 15px 0 100%}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover>form>a.btn.btn-default{margin-bottom:15px}.shelforder #sortTrue>.list-group-item:nth-of-type(even){background:0 0}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3{max-width:130px;width:130px;height:180px;margin:0;padding:15px;position:absolute}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9{padding:15px;margin:0!important;width:100%}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9>.form-group:nth-child(1),body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9>.form-group:nth-child(2),body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9>.form-group:nth-child(1),body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9>.form-group:nth-child(2){padding-left:120px}#deleteButton,body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete{top:48px;height:42px}#metaModal{padding:0;background:var(--color-background-mobile)}#main-nav+#scnd-nav li.open a:hover,#main-nav+#scnd-nav>li>a:hover{background:0 0}#metaModal>.modal-dialog{margin:5px}#metaModal>.modal-dialog>.modal-content{max-height:100%}#meta-info{max-height:calc(100vh - 224px)}#metaModal>.modal-dialog>.modal-content>.modal-header>div{display:none}#meta-info #book-list .media>.media-body{font-size:12px;line-height:16px}#metaModal>.modal-dialog>.modal-content>.modal-header>#meta-search{margin:0}#metaModal>.modal-dialog>.modal-content>.modal-header,#metaModal>.modal-dialog>.modal-content>.modal-header>h4{border-radius:8px 8px 0 0}#metaModal>.modal-dialog>.modal-content{border-radius:8px}.blur-wrapper:after{content:none}#main-nav+#scnd-nav{position:relative;top:0;padding:0;overflow:hidden;height:auto;width:auto;margin-bottom:10px}#main-nav+#scnd-nav li.nav-head{margin:0;color:hsla(0,0%,100%,.45);text-transform:uppercase;font-size:12px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:60px;padding-left:15px;height:60px;min-height:60px}#main-nav+#scnd-nav>li{min-height:45px;max-width:265px;overflow:visible;border-radius:0 4px 4px 0}#main-nav+#scnd-nav>li>a{color:#fff;text-decoration:none;padding:11.5px 15px;font-size:13px;height:45px;line-height:1.71428571;width:100%;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}#main-nav+#scnd-nav li a span.caret{position:absolute;left:210px;top:20px}#main-nav+#scnd-nav .open .dropdown-menu{position:absolute}#main-nav+#scnd-nav li.open ul.dropdown-menu a:hover{background:hsla(0,0%,100%,.08);color:#fff}#main-nav+#scnd-nav li a .glyphicon-star{color:#fff}#main-nav+#scnd-nav .create-shelf{width:25px;margin:17.5px 0 0;min-height:auto;float:right}#main-nav+#scnd-nav .nav-head.hidden-xs{display:list-item!important;width:225px}.shelforder #sortTrue>div:before{opacity:1;pointer-events:auto;margin-left:0;margin-right:0;padding-left:15px;padding-right:30px}.shelforder #sortTrue>.list-group-item{width:78px;overflow:visible;color:#eee;pointer-events:none}.shelforder #sortTrue>div:hover{background-color:transparent!important}#RestartDialog>.modal-dialog,#ShutdownDialog>.modal-dialog,#UpdateprogressDialog>.modal-dialog,#deleteModal>.modal-dialog{max-width:calc(100vw - 40px)}#RestartDialog>.modal-dialog>.modal-content,#ShutdownDialog>.modal-dialog>.modal-content,#UpdateprogressDialog>.modal-dialog>.modal-content,#deleteModal>.modal-dialog>.modal-content{max-width:calc(100vw - 40px);left:0}.rating-mobile{display:block;text-align:center;margin:30px 0 20px}.rating-mobile .glyphicon-star.good{color:hsla(0,0%,100%,.7)}.rating-mobile .glyphicon-star{color:hsla(0,0%,100%,.25)}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group{height:60px}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[data-target="#DeleteShelfDialog"],body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=edit],body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=order]{height:40px;width:40px;padding:0;margin:10px 15px;border-radius:50%}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[data-target="#DeleteShelfDialog"]:before,body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=edit]:before,body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=order]:before{padding:0 0 0 10px;line-height:40px}.collapsing{-webkit-transition:all 0s;transition:all 0s}.navbar-collapse.collapse.in{visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:-webkit-transform .5s;-o-transition:transform .5s;transition:transform .5s;transition:transform .5s,-webkit-transform .5s;z-index:99}.navbar-collapse{border:0;width:240px;height:100%!important;overflow:hidden;visibility:visible;-webkit-transform:translate3d(-240px,0,0);transform:translate3d(-240px,0,0);-webkit-transition:-webkit-transform .5s;-o-transition:transform .5s;transition:transform .5s;transition:transform .5s,-webkit-transform .5s;top:0;margin:0;position:fixed;display:block;opacity:1}.navbar-collapse:not(.in)>*{margin:0!important}.navbar-collapse.collapse.in+.sidebar-backdrop{width:calc(100vw);height:100%;position:fixed;top:0;left:0;background:rgba(0,0,0,.75);-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;z-index:9;visibility:visible;opacity:1}.alert{width:90%;max-width:500px}.col-xs-12>.row>.col-xs-2{position:absolute;padding:15px 0 0;text-align:center;min-width:40px;pointer-events:none;color:#}.col-xs-12>.row>.col-xs-10{padding:0;width:100%;height:100%;float:right;max-width:calc(100vw - 40px)}.col-xs-12>.row>.col-xs-10>a{padding:15px 15px 15px 16.66666667%;display:block;color:#eee}.col-xs-12>.row>.col-xs-10>a:hover{color:#eee;text-decoration:none}body>div.container-fluid>div>div.col-sm-10>div.container>div>.row:nth-of-type(even){background:0 0}body>div.container-fluid>div>div.col-sm-10>div.container>div>.row{border-bottom:1px solid hsla(0,0%,78%,.15)}.col-xs-12>.row>.col-xs-10:after{content:'';position:absolute;width:0;height:0;right:13px;top:50%;vertical-align:middle;border-left:5px dashed;border-top:4px solid transparent;border-bottom:4px solid transparent;pointer-events:none;color:#eee}}@media only screen and (max-width:500px){.login .well>form{padding:30px 15px}#RestartDialog.in:before,#ShutdownDialog.in:before,#UpdateprogressDialog.in:before,#deleteModal.in:before{left:auto;right:34px}}@media only screen and (max-width:490px){#DeleteShelfDialog:before{left:auto;right:34px}}@media only screen and (max-width:500px) and (max-height:600px){body.login .well{padding:0!important}}#btnGroupDrop1>span.caret{position:absolute;margin-left:0;left:33px;top:28px}#btnGroupDrop1>span.glyphicon-download:before{margin-left:8px}#read-in-browser>span.caret,.btn-toolbar>.btn-group>#btnGroupDrop2>span.caret,.btn-toolbar>.btn-group>.btn-group>#btnGroupDrop2>span.caret{position:absolute;margin-left:0;left:33px;top:28px}#read-in-browser>span.glyphicon-eye-open:before,.btn-toolbar>.btn-group>.btn-group>#btnGroupDrop2>span.glyphicon-eye-open:before{margin-left:8px}#add-to-shelf>span.caret{position:absolute;margin-left:0;left:33px;top:28px}#add-to-shelf>span.glyphicon.glyphicon-list:before{margin-left:8px}.container-fluid .book .meta .author,.container-fluid .book .meta .title{max-width:150px;overflow:hidden;text-overflow:ellipsis}body.publisherlist>div.container-fluid>div>div.col-sm-10:before{content:"\e241";font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;font-size:6vw;position:fixed;left:240px;top:180px;width:calc(20% - 55px);text-align:center}body.publisherlist>div.container-fluid>div>div.col-sm-10>div.container:before{content:"Series";top:60px;font-size:24px;color:#eee;line-height:1;padding-left:15px;position:absolute;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400}body.publisherlist>div.container-fluid>div>div.col-sm-10>div.container>div.col-sm-6{width:100%}#have_read_cb+label:before,#have_read_cb:checked+label:before,div[aria-label="Edit/Delete book"]>.btn-warning>span:before{line-height:1.1}@media only screen and (min-width:768px){body.author:not(.authorlist) .undefined-img{background-image:url(images/caliblur/blur-light.png)!important;background-size:cover!important;-webkit-background-size:cover!important;-moz-background-size:cover!important;-o-background-size:cover!important;opacity:1;-webkit-filter:none;filter:none;width:100vw;height:100%;position:fixed;top:0;left:0;content:''}}@media only screen and (max-width:767px){body.publisherlist>div.container-fluid>div.row-fluid>div.col-sm-10:before{position:fixed;top:62px;right:23px;left:auto;width:auto;height:auto;font-size:14px;color:hsla(0,0%,100%,.7)}body.publisherlist>div.container-fluid>div>div.col-sm-10>div.container:before{display:none!important}}body.advanced_search>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>div .twitter-typeahead .tt-hint{background-color:hsla(0,0%,100%,.08)!important}@media only screen and (min-width:767px) and (max-width:811px){body.author>div.container-fluid>div>div.col-sm-10>div.discover{width:calc(100% + 20px);padding:0!important}}body.mailset.admin>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type:before{display:none}body.mailset.admin>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type{margin-top:90px;padding-left:15px}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover .fixed-table-container{border:none;padding-left:15px;margin-bottom:30px}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover .fixed-table-container .table-hover>tbody>tr:hover{background-color:transparent}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover .bootstrap-table .table{border-radius:0;border-bottom:0}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover .editable-buttons>button{height:40px}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover .glyphicon-trash:before{content:"\EA6D";font-family:plex-icons-new}#DeleteDomain{top:0;overflow:hidden;padding-top:70px;left:0;right:0;bottom:0;background:rgba(0,0,0,.5)}#DeleteDomain.in:before{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}#DeleteDomain:before{content:"\E208";padding-right:10px;display:block;font-family:Glyphicons Regular;font-style:normal;font-weight:400;position:absolute;left:calc(50% + 185px);top:88px;font-size:16px;color:#eee;opacity:.5;-webkit-transition:-webkit-transform .3s ease-out;-o-transition:transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-60px);-ms-transform:translate(0,-60px);transform:translate(0,-60px);z-index:99}#DeleteDomain>.modal-dialog{width:450px;margin:auto}#DeleteDomain>.modal-dialog>.modal-content{max-height:calc(100% - 90px);-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:3px;z-index:9999999999999999999999;left:calc(50% - 225px);right:auto;width:450px}#DeleteDomain>.modal-dialog>.modal-content>.modal-header{padding:15px 20px;border-radius:3px 3px 0 0;line-height:1.71428571;vertical-align:bottom;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#eee;border-bottom:1px solid #222;background-color:#323232;text-align:left}#DeleteDomain>.modal-dialog>.modal-content>.modal-header:before{content:"\EA6D";font-family:plex-icons-new;padding-right:10px;font-size:18px;color:#999;font-style:normal;font-weight:400;display:inline-block}#DeleteDomain>.modal-dialog>.modal-content>.modal-header:after{content:"Remove Domain";display:inline-block;font-size:20px}#DeleteDomain>.modal-dialog>.modal-content>.modal-body,#DeleteDomain>.modal-dialog>.modal-content>.modal-body>p{font-size:16px;line-height:1.6em;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;background:#282828}#DeleteDomain>.modal-dialog>.modal-content>.modal-body{padding:20px 20px 40px;text-align:left}#DeleteDomain>.modal-dialog>.modal-content>.modal-body>p{padding:20px 20px 0 0}#DeleteDomain>.modal-dialog>.modal-content>.modal-body>#btndeletedomain,#DeleteDomain>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#btndeletedomain){margin:55px 0 0 10px;float:right;z-index:9;position:relative;min-width:80px;padding:10px 18px;font-size:16px;line-height:1.33;border-radius:3px}#DeleteDomain>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#btndeletedomain){background-color:hsla(0,0%,100%,.25)}#DeleteDomain>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#btndeletedomain):hover{background-color:hsla(0,0%,100%,.3)}#DeleteDomain>.modal-dialog>.modal-content>.modal-body:after{content:'';position:absolute;width:100%;height:72px;background-color:#323232;border-radius:0 0 3px 3px;left:0;margin-top:40px;z-index:0;border-top:1px solid #222;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}@media only screen and (max-width:500px){#DeleteDomain.in:before{left:auto;right:34px}}@media only screen and (max-width:767px){#DeleteDomain>.modal-dialog{max-width:calc(100vw - 40px)}#DeleteDomain>.modal-dialog>.modal-content{max-width:calc(100vw - 40px);left:0}}#sendbtn2{background:0 0;color:transparent;width:50px;height:60px;margin:0;overflow:hidden;padding:0}#sendbtn2>span{color:hsla(0,0%,100%,.7)}#sendbtn2>span.glyphicon-send:before{margin-left:8px}#sendbtn2>span.caret{position:absolute;margin-left:0;left:33px;top:28px;padding-bottom:5px}#sendbtn2:focus span,#sendbtn2:hover span{color:#fff}#sendbtn2[aria-expanded=true]{pointer-events:none}div.comments + [data-readmore-toggle],div.comments[data-readmore]{display:block;width:100%}div.comments[data-readmore]{transition:height 300ms;overflow:hidden}
diff --git a/cps/static/css/caliBlur_override.css b/cps/static/css/caliBlur_override.css
new file mode 100644
index 000000000..7f9402122
--- /dev/null
+++ b/cps/static/css/caliBlur_override.css
@@ -0,0 +1,17 @@
+body.serieslist.grid-view div.container-fluid>div>div.col-sm-10:before{
+ display: none;
+}
+
+.cover .badge{
+ position: absolute;
+ top: 0;
+ left: 0;
+ background-color: #cc7b19;
+ border-radius: 0;
+ padding: 0 8px;
+ box-shadow: 0 0 4px rgba(0,0,0,.6);
+ line-height: 24px;
+}
+.cover{
+ box-shadow: 0 0 4px rgba(0,0,0,.6);
+}
diff --git a/cps/static/css/kthoom.css b/cps/static/css/kthoom.css
index 6dfb99671..cc38740b7 100644
--- a/cps/static/css/kthoom.css
+++ b/cps/static/css/kthoom.css
@@ -4,7 +4,7 @@ body {
overflow-y: auto;
color: white;
font-family: sans-serif;
- margin: 0px;
+ margin: 0;
}
#main {
@@ -13,7 +13,7 @@ body {
}
.view {
- padding-top:0px;
+ padding-top: 0;
}
#sidebar a,
@@ -34,18 +34,18 @@ body {
cursor: pointer;
padding: 4px;
- transition: all .2s ease;
+ transition: all 0.2s ease;
}
#sidebar a:hover,
#sidebar a:focus {
outline: none;
- box-shadow: 0px 2px 8px 1px black;
+ box-shadow: 0 2px 8px 1px black;
}
#sidebar a.active,
#sidebar a.active img + span {
- background-color: #45B29D;
+ background-color: #45B29D;
}
#sidebar li img {
@@ -79,7 +79,6 @@ body {
font-size: 10px;
line-height: 10px;
text-align: right;
-
transition: min-height 150ms ease-in-out;
}
@@ -92,18 +91,17 @@ body {
top: 0;
left: 0;
bottom: 0;
-
transition: width 150ms ease-in-out;
}
#progress .bar-load {
color: #000;
- background-color: #CCC;
+ background-color: #ccc;
}
#progress .bar-read {
- color: #FFF;
- background-color: #45B29D;
+ color: #fff;
+ background-color: #45b29d;
}
#progress .text {
@@ -152,40 +150,8 @@ body {
max-width: 70%;
}
-#left {
- left: 40px;
-}
-
-#right {
- right: 40px;
-}
-
-.arrow {
- position: absolute;
- top: 50%;
- margin-top: -32px;
- font-size: 64px;
- color: #E2E2E2;
- font-family: arial, sans-serif;
- font-weight: bold;
- cursor: pointer;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-
-.arrow:hover {
- color: #777;
-}
-
-.arrow:active,
-.arrow.active {
- color: #000;
-}
-
-th, td {
+th,
+td {
padding: 5px;
}
@@ -239,18 +205,17 @@ th {
}
.dark-theme #titlebar {
- color: #DDD;
+ color: #ddd;
}
.dark-theme #titlebar a:active {
- color: #FFF;
+ color: #fff;
}
.dark-theme #progress .bar-read {
background-color: red;
}
-
.dark-theme .overlay {
- background-color: rgba(0,0,0,0.8);
+ background-color: rgba(0, 0, 0, 0.8);
}
diff --git a/cps/static/css/libs/bootstrap-table.min.css b/cps/static/css/libs/bootstrap-table.min.css
index 770b6728c..72a8f74f2 100644
--- a/cps/static/css/libs/bootstrap-table.min.css
+++ b/cps/static/css/libs/bootstrap-table.min.css
@@ -1 +1,10 @@
-.fixed-table-container .bs-checkbox,.fixed-table-container .no-records-found{text-align:center}.fixed-table-body thead th .th-inner,.table td,.table th{box-sizing:border-box}.bootstrap-table .table{margin-bottom:0!important;border-bottom:1px solid #ddd;border-collapse:collapse!important;border-radius:1px}.bootstrap-table .table:not(.table-condensed),.bootstrap-table .table:not(.table-condensed)>tbody>tr>td,.bootstrap-table .table:not(.table-condensed)>tbody>tr>th,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>td,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>th,.bootstrap-table .table:not(.table-condensed)>thead>tr>td{padding:8px}.bootstrap-table .table.table-no-bordered>tbody>tr>td,.bootstrap-table .table.table-no-bordered>thead>tr>th{border-right:2px solid transparent}.bootstrap-table .table.table-no-bordered>tbody>tr>td:last-child{border-right:none}.fixed-table-container{position:relative;clear:both;border:1px solid #ddd;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px}.fixed-table-container.table-no-bordered{border:1px solid transparent}.fixed-table-footer,.fixed-table-header{overflow:hidden}.fixed-table-footer{border-top:1px solid #ddd}.fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.fixed-table-container table{width:100%}.fixed-table-container thead th{height:0;padding:0;margin:0;border-left:1px solid #ddd}.fixed-table-container thead th:focus{outline:transparent solid 0}.fixed-table-container thead th:first-child:not([data-not-first-th]){border-left:none;border-top-left-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px}.fixed-table-container tbody td .th-inner,.fixed-table-container thead th .th-inner{padding:8px;line-height:24px;vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fixed-table-container thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px}.fixed-table-container thead th .both{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC')}.fixed-table-container thead th .asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.fixed-table-container thead th .desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.fixed-table-container th.detail{width:30px}.fixed-table-container tbody td{border-left:1px solid #ddd}.fixed-table-container tbody tr:first-child td{border-top:none}.fixed-table-container tbody td:first-child{border-left:none}.fixed-table-container tbody .selected td{background-color:#f5f5f5}.fixed-table-container input[type=radio],.fixed-table-container input[type=checkbox]{margin:0 auto!important}.fixed-table-pagination .pagination-detail,.fixed-table-pagination div.pagination{margin-top:10px;margin-bottom:10px}.fixed-table-pagination div.pagination .pagination{margin:0}.fixed-table-pagination .pagination a{padding:6px 12px;line-height:1.428571429}.fixed-table-pagination .pagination-info{line-height:34px;margin-right:5px}.fixed-table-pagination .btn-group{position:relative;display:inline-block;vertical-align:middle}.fixed-table-pagination .dropup .dropdown-menu{margin-bottom:0}.fixed-table-pagination .page-list{display:inline-block}.fixed-table-toolbar .columns-left{margin-right:5px}.fixed-table-toolbar .columns-right{margin-left:5px}.fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429}.fixed-table-toolbar .bs-bars,.fixed-table-toolbar .columns,.fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px;line-height:34px}.fixed-table-pagination li.disabled a{pointer-events:none;cursor:default}.fixed-table-loading{display:none;position:absolute;top:42px;right:0;bottom:0;left:0;z-index:99;background-color:#fff;text-align:center}.fixed-table-body .card-view .title{font-weight:700;display:inline-block;min-width:30%;text-align:left!important}.table td,.table th{vertical-align:middle}.fixed-table-toolbar .dropdown-menu{text-align:left;max-height:300px;overflow:auto}.fixed-table-toolbar .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.fixed-table-toolbar .btn-group>.btn-group>.btn{border-radius:0}.fixed-table-toolbar .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.fixed-table-toolbar .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .table>thead>tr>th{vertical-align:bottom;border-bottom:1px solid #ddd}.bootstrap-table .table thead>tr>th{padding:0;margin:0}.bootstrap-table .fixed-table-footer tbody>tr>td{padding:0!important}.bootstrap-table .fixed-table-footer .table{border-bottom:none;border-radius:0;padding:0!important}.bootstrap-table .pull-right .dropdown-menu{right:0;left:auto}p.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}.fixed-table-pagination:after,.fixed-table-toolbar:after{content:"";display:block;clear:both}.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important;background:#FFF}
\ No newline at end of file
+/**
+ * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation)
+ *
+ * @version v1.16.0
+ * @homepage https://bootstrap-table.com
+ * @author wenzhixin (http://wenzhixin.net.cn/)
+ * @license MIT
+ */
+
+.bootstrap-table .fixed-table-toolbar::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-toolbar .bs-bars,.bootstrap-table .fixed-table-toolbar .columns,.bootstrap-table .fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group>.btn{border-radius:0}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu{text-align:left;max-height:300px;overflow:auto;-ms-overflow-style:scrollbar;z-index:1001}.bootstrap-table .fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429}.bootstrap-table .fixed-table-toolbar .columns-left{margin-right:5px}.bootstrap-table .fixed-table-toolbar .columns-right{margin-left:5px}.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu{right:0;left:auto}.bootstrap-table .fixed-table-container{position:relative;clear:both}.bootstrap-table .fixed-table-container .table{width:100%;margin-bottom:0!important}.bootstrap-table .fixed-table-container .table td,.bootstrap-table .fixed-table-container .table th{vertical-align:middle;box-sizing:border-box}.bootstrap-table .fixed-table-container .table thead th{vertical-align:bottom;padding:0;margin:0}.bootstrap-table .fixed-table-container .table thead th:focus{outline:0 solid transparent}.bootstrap-table .fixed-table-container .table thead th.detail{width:30px}.bootstrap-table .fixed-table-container .table thead th .th-inner{padding:.75rem;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bootstrap-table .fixed-table-container .table thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px!important}.bootstrap-table .fixed-table-container .table thead th .both{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC")}.bootstrap-table .fixed-table-container .table thead th .asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.bootstrap-table .fixed-table-container .table thead th .desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.bootstrap-table .fixed-table-container .table tbody tr.selected td{background-color:rgba(0,0,0,.075)}.bootstrap-table .fixed-table-container .table tbody tr.no-records-found td{text-align:center}.bootstrap-table .fixed-table-container .table tbody tr .card-view{display:flex}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title{font-weight:700;display:inline-block;min-width:30%;text-align:left!important}.bootstrap-table .fixed-table-container .table .bs-checkbox{text-align:center}.bootstrap-table .fixed-table-container .table .bs-checkbox label{margin-bottom:0}.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=checkbox],.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=radio]{margin:0 auto!important}.bootstrap-table .fixed-table-container .table.table-sm .th-inner{padding:.3rem}.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer){border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height.has-card-view{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border{border-left:1px solid #dee2e6;border-right:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table thead th{border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th{border-bottom:1px solid #32383e}.bootstrap-table .fixed-table-container .fixed-table-header{overflow:hidden}.bootstrap-table .fixed-table-container .fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading{align-items:center;background:#fff;display:none;justify-content:center;position:absolute;bottom:0;width:100%;z-index:1000}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap{align-items:baseline;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text{font-size:2rem;margin-right:6px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap{align-items:center;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before{content:"";animation-duration:1.5s;animation-iteration-count:infinite;animation-name:LOADING;background:#212529;border-radius:50%;display:block;height:5px;margin:0 4px;opacity:0;width:5px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot{animation-delay:.3s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after{animation-delay:.6s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark{background:#212529}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before{background:#fff}.bootstrap-table .fixed-table-container .fixed-table-footer{overflow:hidden}.bootstrap-table .fixed-table-pagination::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-pagination>.pagination,.bootstrap-table .fixed-table-pagination>.pagination-detail{margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-pagination>.pagination-detail .pagination-info{line-height:34px;margin-right:5px}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list{display:inline-block}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group{position:relative;display:inline-block;vertical-align:middle}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group .dropdown-menu{margin-bottom:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination{margin:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination a{padding:6px 12px;line-height:1.428571429}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a{color:#c8c8c8}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::before{content:'\2B05'}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::after{content:'\27A1'}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.disabled a{pointer-events:none;cursor:default}.bootstrap-table.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important;background:#fff;height:calc(100vh);overflow-y:scroll}div.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}@keyframes LOADING{0%{opacity:0}50%{opacity:1}to{opacity:0}}
\ No newline at end of file
diff --git a/cps/static/css/libs/viewer.css b/cps/static/css/libs/viewer.css
index 82766d66e..5835b3092 100644
--- a/cps/static/css/libs/viewer.css
+++ b/cps/static/css/libs/viewer.css
@@ -230,36 +230,46 @@
z-index: 200;
max-width: 20em;
background-color: #FFFF99;
- box-shadow: 0px 2px 5px #333;
+ box-shadow: 0px 2px 5px #888;
border-radius: 2px;
- padding: 0.6em;
+ padding: 6px;
margin-left: 5px;
cursor: pointer;
font: message-box;
+ font-size: 9px;
word-wrap: break-word;
}
+.annotationLayer .popup > * {
+ font-size: 9px;
+}
+
.annotationLayer .popup h1 {
- font-size: 1em;
- border-bottom: 1px solid #000000;
- margin: 0;
- padding-bottom: 0.2em;
+ display: inline-block;
+}
+
+.annotationLayer .popup span {
+ display: inline-block;
+ margin-left: 5px;
}
.annotationLayer .popup p {
- margin: 0;
- padding-top: 0.2em;
+ border-top: 1px solid #333;
+ margin-top: 2px;
+ padding-top: 2px;
}
.annotationLayer .highlightAnnotation,
.annotationLayer .underlineAnnotation,
.annotationLayer .squigglyAnnotation,
.annotationLayer .strikeoutAnnotation,
+.annotationLayer .freeTextAnnotation,
.annotationLayer .lineAnnotation svg line,
.annotationLayer .squareAnnotation svg rect,
.annotationLayer .circleAnnotation svg ellipse,
.annotationLayer .polylineAnnotation svg polyline,
.annotationLayer .polygonAnnotation svg polygon,
+.annotationLayer .caretAnnotation,
.annotationLayer .inkAnnotation svg polyline,
.annotationLayer .stampAnnotation,
.annotationLayer .fileAttachmentAnnotation {
@@ -279,8 +289,9 @@
overflow: visible;
border: 9px solid transparent;
background-clip: content-box;
- -o-border-image: url(images/shadow.png) 9 9 repeat;
- border-image: url(images/shadow.png) 9 9 repeat;
+ -webkit-border-image: url(images/shadow.png) 9 9 repeat;
+ -o-border-image: url(images/shadow.png) 9 9 repeat;
+ border-image: url(images/shadow.png) 9 9 repeat;
background-color: white;
}
@@ -543,15 +554,20 @@ select {
z-index: 100;
border-top: 1px solid #333;
- transition-duration: 200ms;
- transition-timing-function: ease;
+ -webkit-transition-duration: 200ms;
+
+ transition-duration: 200ms;
+ -webkit-transition-timing-function: ease;
+ transition-timing-function: ease;
}
html[dir='ltr'] #sidebarContainer {
+ -webkit-transition-property: left;
transition-property: left;
left: -200px;
left: calc(-1 * var(--sidebar-width));
}
html[dir='rtl'] #sidebarContainer {
+ -webkit-transition-property: right;
transition-property: right;
right: -200px;
right: calc(-1 * var(--sidebar-width));
@@ -563,7 +579,8 @@ html[dir='rtl'] #sidebarContainer {
#outerContainer.sidebarResizing #sidebarContainer {
/* Improve responsiveness and avoid visual glitches when the sidebar is resized. */
- transition-duration: 0s;
+ -webkit-transition-duration: 0s;
+ transition-duration: 0s;
/* Prevent e.g. the thumbnails being selected when the sidebar is resized. */
-webkit-user-select: none;
-moz-user-select: none;
@@ -620,8 +637,10 @@ html[dir='rtl'] #sidebarContent {
outline: none;
}
#viewerContainer:not(.pdfPresentationMode) {
- transition-duration: 200ms;
- transition-timing-function: ease;
+ -webkit-transition-duration: 200ms;
+ transition-duration: 200ms;
+ -webkit-transition-timing-function: ease;
+ transition-timing-function: ease;
}
html[dir='ltr'] #viewerContainer {
box-shadow: inset 1px 0 0 hsla(0,0%,100%,.05);
@@ -632,15 +651,18 @@ html[dir='rtl'] #viewerContainer {
#outerContainer.sidebarResizing #viewerContainer {
/* Improve responsiveness and avoid visual glitches when the sidebar is resized. */
- transition-duration: 0s;
+ -webkit-transition-duration: 0s;
+ transition-duration: 0s;
}
html[dir='ltr'] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) {
+ -webkit-transition-property: left;
transition-property: left;
left: 200px;
left: var(--sidebar-width);
}
html[dir='rtl'] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) {
+ -webkit-transition-property: right;
transition-property: right;
right: 200px;
right: var(--sidebar-width);
@@ -662,6 +684,8 @@ html[dir='rtl'] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentatio
width: 100%;
height: 32px;
background-color: #424242; /* fallback */
+ background-image: url(images/texture.png),
+ -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,30%,.99)), to(hsla(0,0%,25%,.95)));
background-image: url(images/texture.png),
linear-gradient(hsla(0,0%,30%,.99), hsla(0,0%,25%,.95));
}
@@ -697,6 +721,8 @@ html[dir='rtl'] #sidebarResizer {
position: relative;
height: 32px;
background-color: #474747; /* fallback */
+ background-image: url(images/texture.png),
+ -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,32%,.99)), to(hsla(0,0%,27%,.95)));
background-image: url(images/texture.png),
linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95));
}
@@ -733,6 +759,7 @@ html[dir='rtl'] #toolbarContainer, .findbar, .secondaryToolbar {
height: 100%;
background-color: #ddd;
overflow: hidden;
+ -webkit-transition: width 200ms;
transition: width 200ms;
}
@@ -748,6 +775,7 @@ html[dir='rtl'] #toolbarContainer, .findbar, .secondaryToolbar {
#loadingBar .progress.indeterminate {
background-color: #999;
+ -webkit-transition: none;
transition: none;
}
@@ -815,6 +843,9 @@ html[dir='rtl'] .findbar {
#findInput::-webkit-input-placeholder {
color: hsl(0, 0%, 75%);
}
+#findInput::-moz-placeholder {
+ font-style: italic;
+}
#findInput:-ms-input-placeholder {
font-style: italic;
}
@@ -1006,6 +1037,7 @@ html[dir='rtl'] .splitToolbarButton > .toolbarButton {
.splitToolbarButton.toggled > .toolbarButton,
.toolbarButton.textButton {
background-color: hsla(0,0%,0%,.12);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box;
border: 1px solid hsla(0,0%,0%,.35);
@@ -1013,9 +1045,12 @@ html[dir='rtl'] .splitToolbarButton > .toolbarButton {
box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,
0 0 1px hsla(0,0%,100%,.15) inset,
0 1px 0 hsla(0,0%,100%,.05);
+ -webkit-transition-property: background-color, border-color, box-shadow;
transition-property: background-color, border-color, box-shadow;
- transition-duration: 150ms;
- transition-timing-function: ease;
+ -webkit-transition-duration: 150ms;
+ transition-duration: 150ms;
+ -webkit-transition-timing-function: ease;
+ transition-timing-function: ease;
}
.splitToolbarButton > .toolbarButton:hover,
@@ -1072,9 +1107,12 @@ html[dir='rtl'] .splitToolbarButtonSeparator {
padding: 12px 0;
margin: 1px 0;
box-shadow: 0 0 0 1px hsla(0,0%,100%,.03);
+ -webkit-transition-property: padding;
transition-property: padding;
- transition-duration: 10ms;
- transition-timing-function: ease;
+ -webkit-transition-duration: 10ms;
+ transition-duration: 10ms;
+ -webkit-transition-timing-function: ease;
+ transition-timing-function: ease;
}
.toolbarButton,
@@ -1094,9 +1132,12 @@ html[dir='rtl'] .splitToolbarButtonSeparator {
user-select: none;
/* Opera does not support user-select, use <... unselectable="on"> instead */
cursor: default;
+ -webkit-transition-property: background-color, border-color, box-shadow;
transition-property: background-color, border-color, box-shadow;
- transition-duration: 150ms;
- transition-timing-function: ease;
+ -webkit-transition-duration: 150ms;
+ transition-duration: 150ms;
+ -webkit-transition-timing-function: ease;
+ transition-timing-function: ease;
}
html[dir='ltr'] .toolbarButton,
@@ -1117,6 +1158,7 @@ html[dir='rtl'] .dropdownToolbarButton {
.secondaryToolbarButton:hover,
.secondaryToolbarButton:focus {
background-color: hsla(0,0%,0%,.12);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box;
border: 1px solid hsla(0,0%,0%,.35);
@@ -1131,28 +1173,36 @@ html[dir='rtl'] .dropdownToolbarButton {
.dropdownToolbarButton:hover:active,
.secondaryToolbarButton:hover:active {
background-color: hsla(0,0%,0%,.2);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
border-color: hsla(0,0%,0%,.35) hsla(0,0%,0%,.4) hsla(0,0%,0%,.45);
box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset,
0 0 1px hsla(0,0%,0%,.2) inset,
0 1px 0 hsla(0,0%,100%,.05);
+ -webkit-transition-property: background-color, border-color, box-shadow;
transition-property: background-color, border-color, box-shadow;
- transition-duration: 10ms;
- transition-timing-function: linear;
+ -webkit-transition-duration: 10ms;
+ transition-duration: 10ms;
+ -webkit-transition-timing-function: linear;
+ transition-timing-function: linear;
}
.toolbarButton.toggled,
.splitToolbarButton.toggled > .toolbarButton.toggled,
.secondaryToolbarButton.toggled {
background-color: hsla(0,0%,0%,.3);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.45) hsla(0,0%,0%,.5);
box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset,
0 0 1px hsla(0,0%,0%,.2) inset,
0 1px 0 hsla(0,0%,100%,.05);
+ -webkit-transition-property: background-color, border-color, box-shadow;
transition-property: background-color, border-color, box-shadow;
- transition-duration: 10ms;
- transition-timing-function: linear;
+ -webkit-transition-duration: 10ms;
+ transition-duration: 10ms;
+ -webkit-transition-timing-function: linear;
+ transition-timing-function: linear;
}
.toolbarButton.toggled:hover:active,
@@ -1493,6 +1543,7 @@ html[dir='rtl'] .verticalToolbarSeparator {
border: 1px solid transparent;
border-radius: 2px;
background-color: hsla(0,0%,100%,.09);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box;
border: 1px solid hsla(0,0%,0%,.35);
@@ -1503,9 +1554,12 @@ html[dir='rtl'] .verticalToolbarSeparator {
font-size: 12px;
line-height: 14px;
outline-style: none;
+ -webkit-transition-property: background-color, border-color, box-shadow;
transition-property: background-color, border-color, box-shadow;
- transition-duration: 150ms;
- transition-timing-function: ease;
+ -webkit-transition-duration: 150ms;
+ transition-duration: 150ms;
+ -webkit-transition-timing-function: ease;
+ transition-timing-function: ease;
}
.toolbarField[type=checkbox] {
@@ -1619,6 +1673,7 @@ a:focus > .thumbnail > .thumbnailSelectionRing > .thumbnailImage,
a:focus > .thumbnail > .thumbnailSelectionRing,
.thumbnail:hover > .thumbnailSelectionRing {
background-color: hsla(0,0%,100%,.15);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box;
box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,
@@ -1634,6 +1689,7 @@ a:focus > .thumbnail > .thumbnailSelectionRing,
.thumbnail.selected > .thumbnailSelectionRing {
background-color: hsla(0,0%,100%,.3);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box;
box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,
@@ -1755,6 +1811,7 @@ html[dir='rtl'] .outlineItemToggler::before {
.outlineItem > a:hover,
.attachmentsItem > button:hover {
background-color: hsla(0,0%,100%,.02);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box;
box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,
@@ -1766,6 +1823,7 @@ html[dir='rtl'] .outlineItemToggler::before {
.outlineItem.selected {
background-color: hsla(0,0%,100%,.08);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box;
box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,
@@ -1850,6 +1908,8 @@ html[dir='rtl'] .outlineItemToggler::before {
font-size: 12px;
line-height: 14px;
background-color: #474747; /* fallback */
+ background-image: url(images/texture.png),
+ -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,32%,.99)), to(hsla(0,0%,27%,.95)));
background-image: url(images/texture.png),
linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95));
box-shadow: inset 1px 0 0 hsla(0,0%,100%,.08),
diff --git a/cps/static/css/listen.css b/cps/static/css/listen.css
index b08cc33ce..a69af72ed 100644
--- a/cps/static/css/listen.css
+++ b/cps/static/css/listen.css
@@ -1,114 +1,89 @@
.sm2-bar-ui {
- font-size: 20px;
- }
+ font-size: 20px;
+}
- .sm2-bar-ui.compact {
- max-width: 90%;
- }
+.sm2-bar-ui.compact {
+ max-width: 90%;
+}
- .sm2-progress .sm2-progress-ball {
- width: .5333em;
- height: 1.9333em;
- border-radius: 0em;
- }
+.sm2-progress .sm2-progress-ball {
+ width: 0.5333em;
+ height: 1.9333em;
+ border-radius: 0;
+}
- .sm2-progress .sm2-progress-track {
- height: 0.15em;
- background: white;
- }
+.sm2-progress .sm2-progress-track {
+ height: 0.15em;
+ background: white;
+}
- .sm2-bar-ui .sm2-main-controls,
- .sm2-bar-ui .sm2-playlist-drawer {
- background-color: transparent;
- }
+.sm2-bar-ui .sm2-main-controls,
+.sm2-bar-ui .sm2-playlist-drawer {
+ background-color: transparent;
+}
- .sm2-bar-ui .sm2-inline-texture {
- background: transparent;
- }
+.sm2-bar-ui .sm2-inline-texture {
+ background: transparent;
+}
- .rating .glyphicon-star {
- color: gray;
- }
+.rating .glyphicon-star {
+ color: gray;
+}
- .rating .glyphicon-star.good {
- color: white;
- }
+.rating .glyphicon-star.good {
+ color: white;
+}
- body {
- overflow: hidden;
- background: #272B30;
- color: #aaa;
- }
+body {
+ overflow: hidden;
+ background: #272b30;
+ color: #aaa;
+}
- #main {
- position: absolute;
- width: 100%;
- height: 100%;
- }
+#main {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+}
- #area {
- width: 80%;
- height: 80%;
- margin: 5% auto;
- max-width: 1250px;
- }
+#area {
+ width: 80%;
+ height: 80%;
+ margin: 5% auto;
+ max-width: 1250px;
+ overflow: hidden;
+}
- #area iframe {
- border: none;
- }
+#area iframe {
+ border: none;
+}
- #prev {
- left: 40px;
- }
+#prev {
+ left: 40px;
+}
- #next {
- right: 40px;
- }
+#next {
+ right: 40px;
+}
- .arrow {
- position: absolute;
- top: 50%;
- margin-top: -32px;
- font-size: 64px;
- color: #E2E2E2;
- font-family: arial, sans-serif;
- font-weight: bold;
- cursor: pointer;
- -webkit-user-select: none;
- -moz-user-select: none;
- user-select: none;
- }
+xmp,
+pre,
+plaintext {
+ display: block;
+ font-family: -moz-fixed;
+ white-space: pre;
+ margin: 1em 0;
+}
- .arrow:hover {
- color: #777;
- }
-
- .arrow:active {
- color: #000;
- }
-
- xmp,
- pre,
- plaintext {
- display: block;
- font-family: -moz-fixed;
- white-space: pre;
- margin: 1em 0;
- }
-
- #area {
- overflow: hidden;
- }
-
- pre {
- white-space: pre-wrap;
- word-wrap: break-word;
- font-family: -moz-fixed;
- column-count: 2;
- -webkit-columns: 2;
- -moz-columns: 2;
- column-gap: 20px;
- -moz-column-gap: 20px;
- -webkit-column-gap: 20px;
- position: relative;
- }
\ No newline at end of file
+pre {
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ font-family: -moz-fixed;
+ column-count: 2;
+ -webkit-columns: 2;
+ -moz-columns: 2;
+ column-gap: 20px;
+ -moz-column-gap: 20px;
+ -webkit-column-gap: 20px;
+ position: relative;
+}
diff --git a/cps/static/css/main.css b/cps/static/css/main.css
index 4afb28f70..08506bc22 100644
--- a/cps/static/css/main.css
+++ b/cps/static/css/main.css
@@ -1,10 +1,11 @@
@font-face {
font-family: 'fontello';
src: url('fonts/fontello.eot?60518104');
- src: url('fonts/fontello.eot?60518104#iefix') format('embedded-opentype'),
- url('fonts/fontello.woff?60518104') format('woff'),
- url('fonts/fontello.ttf?60518104') format('truetype'),
- url('fonts/fontello.svg?60518104#fontello') format('svg');
+ src:
+ url('fonts/fontello.eot?60518104#iefix') format('embedded-opentype'),
+ url('fonts/fontello.woff?60518104') format('woff'),
+ url('fonts/fontello.ttf?60518104') format('truetype'),
+ url('fonts/fontello.svg?60518104#fontello') format('svg');
font-weight: normal;
font-style: normal;
}
@@ -15,30 +16,22 @@ body {
}
#main {
- /* height: 500px; */
position: absolute;
width: 100%;
height: 100%;
right: 0;
- /* left: 40px; */
-/* -webkit-transform: translate(40px, 0);
- -moz-transform: translate(40px, 0); */
-
- /* border-radius: 5px 0px 0px 5px; */
border-radius: 5px;
background: #fff;
overflow: hidden;
- -webkit-transition: -webkit-transform .4s, width .2s;
- -moz-transition: -webkit-transform .4s, width .2s;
- -ms-transition: -webkit-transform .4s, width .2s;
-
- -moz-box-shadow: inset 0 0 50px rgba(0,0,0,.1);
- -webkit-box-shadow: inset 0 0 50px rgba(0,0,0,.1);
- -ms-box-shadow: inset 0 0 50px rgba(0,0,0,.1);
- box-shadow: inset 0 0 50px rgba(0,0,0,.1);
+ -webkit-transition: -webkit-transform 0.4s, width 0.2s;
+ -moz-transition: -webkit-transform 0.4s, width 0.2s;
+ -ms-transition: -webkit-transform 0.4s, width 0.2s;
+ -moz-box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.1);
+ -webkit-box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.1);
+ -ms-box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.1);
}
-
#titlebar {
height: 8%;
min-height: 20px;
@@ -48,11 +41,11 @@ body {
color: #4f4f4f;
font-weight: 100;
font-family: Georgia, "Times New Roman", Times, serif;
- opacity: .5;
+ opacity: 0.5;
text-align: center;
- -webkit-transition: opacity .5s;
- -moz-transition: opacity .5s;
- -ms-transition: opacity .5s;
+ -webkit-transition: opacity 0.5s;
+ -moz-transition: opacity 0.5s;
+ -ms-transition: opacity 0.5s;
z-index: 10;
}
@@ -66,7 +59,7 @@ body {
line-height: 20px;
overflow: hidden;
display: inline-block;
- opacity: .5;
+ opacity: 0.5;
padding: 4px;
border-radius: 4px;
}
@@ -76,35 +69,27 @@ body {
}
#titlebar a:hover {
- opacity: .8;
- border: 1px rgba(0,0,0,.2) solid;
+ opacity: 0.8;
+ border: 1px rgba(0, 0, 0, 0.2) solid;
padding: 3px;
}
#titlebar a:active {
opacity: 1;
- color: rgba(0,0,0,.6);
- /* margin: 1px -1px -1px 1px; */
- -moz-box-shadow: inset 0 0 6px rgba(155,155,155,.8);
- -webkit-box-shadow: inset 0 0 6px rgba(155,155,155,.8);
- -ms-box-shadow: inset 0 0 6px rgba(155,155,155,.8);
- box-shadow: inset 0 0 6px rgba(155,155,155,.8);
+ color: rgba(0, 0, 0, 0.6);
+ -moz-box-shadow: inset 0 0 6px rgba(155, 155, 155, 0.8);
+ -webkit-box-shadow: inset 0 0 6px rgba(155, 155, 155, 0.8);
+ -ms-box-shadow: inset 0 0 6px rgba(155, 155, 155, 0.8);
+ box-shadow: inset 0 0 6px rgba(155, 155, 155, 0.8);
}
-#book-title {
- font-weight: 600;
-}
-
-#title-seperator {
- display: none;
-}
+#book-title { font-weight: 600; }
+#title-seperator { display: none; }
#viewer {
width: 80%;
height: 80%;
- /* margin-left: 10%; */
margin: 0 auto;
- /* max-width: 1250px; */
z-index: 2;
position: relative;
overflow: hidden;
@@ -114,18 +99,22 @@ body {
border: none;
}
+#left,
#prev {
left: 40px;
+ padding-right: 80px;
}
+#right,
#next {
right: 40px;
+ padding-left: 80px;
}
.arrow {
position: absolute;
top: 50%;
- margin-top: -32px;
+ margin-top: -192px;
font-size: 64px;
color: #E2E2E2;
font-family: arial, sans-serif;
@@ -136,6 +125,8 @@ body {
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
+ padding-top: 160px;
+ padding-bottom: 160px;
}
.arrow:hover {
@@ -150,24 +141,20 @@ body {
#sidebar {
background: #6b6b6b;
position: absolute;
- /* left: -260px; */
- /* -webkit-transform: translate(-260px, 0);
- -moz-transform: translate(-260px, 0); */
top: 0;
min-width: 300px;
width: 25%;
height: 100%;
- -webkit-transition: -webkit-transform .5s;
- -moz-transition: -moz-transform .5s;
- -ms-transition: -moz-transform .5s;
-
+ -webkit-transition: -webkit-transform 0.5s;
+ -moz-transition: -moz-transform 0.5s;
+ -ms-transition: -moz-transform 0.5s;
overflow: hidden;
}
#sidebar.open {
- /* left: 0; */
- /* -webkit-transform: translate(0, 0);
- -moz-transform: translate(0, 0); */
+ /* left: 0; */
+ /* -webkit-transform: translate(0, 0);
+ -moz-transform: translate(0, 0); */
}
#main.closed {
@@ -194,10 +181,10 @@ body {
width: 100%;
padding: 13px 0;
height: 14px;
- -moz-box-shadow: 0px 1px 3px rgba(0,0,0,.6);
- -webkit-box-shadow: 0px 1px 3px rgba(0,0,0,.6);
- -ms-box-shadow: 0px 1px 3px rgba(0,0,0,.6);
- box-shadow: 0px 1px 3px rgba(0,0,0,.6);
+ -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.6);
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.6);
+ -ms-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.6);
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.6);
}
#opener {
@@ -205,19 +192,13 @@ body {
float: left;
}
-/* #opener #slider {
- width: 25px;
-} */
-
#metainfo {
display: inline-block;
text-align: center;
max-width: 80%;
}
-#title-controls {
- float: right;
-}
+#title-controls { float: right; }
#panels a {
visibility: hidden;
@@ -229,22 +210,17 @@ body {
margin-left: 6px;
}
-#panels a::before {
- visibility: visible;
-}
-
-#panels a:hover {
- color: #AAA;
-}
+#panels a::before { visibility: visible; }
+#panels a:hover { color: #aaa; }
#panels a:active {
- color: #AAA;
+ color: #aaa;
margin: 1px 0 -1px 6px;
}
#panels a.active,
#panels a.active:hover {
- color: #AAA;
+ color: #aaa;
}
#searchBox {
@@ -252,28 +228,11 @@ body {
float: left;
margin-left: 10px;
margin-top: -1px;
- /*
- border-radius: 5px;
- background: #9b9b9b;
- float: left;
- margin-left: 5px;
- margin-top: -5px;
- padding: 3px 10px;
- color: #000;
- border: none;
- outline: none; */
-
}
-input::-webkit-input-placeholder {
- color: #454545;
-}
-input:-moz-placeholder {
- color: #454545;
-}
-input:-ms-placeholder {
- color: #454545;
-}
+input::-webkit-input-placeholder { color: #454545; }
+input:-moz-placeholder { color: #454545; }
+input:-ms-placeholder { color: #454545; }
#divider {
position: absolute;
@@ -309,13 +268,11 @@ input:-ms-placeholder {
width: 25%;
height: 100%;
visibility: hidden;
- -webkit-transition: visibility 0 ease .5s;
- -moz-transition: visibility 0 ease .5s;
- -ms-transition: visibility 0 ease .5s;
+ -webkit-transition: visibility 0 ease 0.5s;
+ -moz-transition: visibility 0 ease 0.5s;
+ -ms-transition: visibility 0 ease 0.5s;
}
-
-
#sidebar.open #tocView,
#sidebar.open #bookmarksView {
overflow-y: auto;
@@ -353,7 +310,7 @@ input:-ms-placeholder {
}
.list_item a {
- color: #AAA;
+ color: #aaa;
text-decoration: none;
}
@@ -362,7 +319,7 @@ input:-ms-placeholder {
}
.list_item a.section {
- font-size: .8em;
+ font-size: 0.8em;
}
.list_item.currentChapter > a,
@@ -372,7 +329,7 @@ input:-ms-placeholder {
/* #tocView li.openChapter > a, */
.list_item a:hover {
- color: #E2E2E2;
+ color: #e2e2e2;
}
.list_item ul {
@@ -433,7 +390,7 @@ input:-ms-placeholder {
}
#searchResults a {
- color: #AAA;
+ color: #aaa;
text-decoration: none;
}
@@ -449,11 +406,11 @@ input:-ms-placeholder {
}
#searchResults li > p {
- color: #AAA;
+ color: #aaa;
}
#searchResults li a:hover {
- color: #E2E2E2;
+ color: #e2e2e2;
}
#searchView.shown {
@@ -498,7 +455,7 @@ input:-ms-placeholder {
}
#note-text[disabled], #note-text[disabled="disabled"]{
- opacity: .5;
+ opacity: 0.5;
}
#note-anchor {
@@ -507,30 +464,30 @@ input:-ms-placeholder {
}
#settingsPanel {
- display:none;
+ display: none;
}
#settingsPanel h3 {
- color:#f1f1f1;
- font-family:Georgia, "Times New Roman", Times, serif;
- margin-bottom:10px;
+ color: #f1f1f1;
+ font-family: Georgia, "Times New Roman", Times, serif;
+ margin-bottom: 10px;
}
#settingsPanel ul {
- margin-top:60px;
- list-style-type:none;
+ margin-top: 60px;
+ list-style-type: none;
}
#settingsPanel li {
- font-size:1em;
- color:#f1f1f1;
+ font-size: 1em;
+ color: #f1f1f1;
}
-#settingsPanel .xsmall { font-size:x-small; }
-#settingsPanel .small { font-size:small; }
-#settingsPanel .medium { font-size:medium; }
-#settingsPanel .large { font-size:large; }
-#settingsPanel .xlarge { font-size:x-large; }
+#settingsPanel .xsmall { font-size: x-small; }
+#settingsPanel .small { font-size: small; }
+#settingsPanel .medium { font-size: medium; }
+#settingsPanel .large { font-size: large; }
+#settingsPanel .xlarge { font-size: x-large; }
.highlight { background-color: yellow }
@@ -558,7 +515,7 @@ input:-ms-placeholder {
left: 0;
z-index: 1000;
opacity: 0;
- background: rgba(255,255,255,0.8);
+ background: rgba(255, 255, 255, 0.8);
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
-ms-transition: all 0.3s;
@@ -591,7 +548,7 @@ input:-ms-placeholder {
font-size: 22px;
font-weight: 300;
opacity: 0.8;
- background: rgba(0,0,0,0.1);
+ background: rgba(0, 0, 0, 0.1);
border-radius: 3px 3px 0 0;
}
@@ -753,9 +710,9 @@ input:-ms-placeholder {
}
}*/
-@media only screen
-and (min-device-width : 768px)
-and (max-device-width : 1024px)
+@media only screen
+and (min-device-width : 768px)
+and (max-device-width : 1024px)
and (orientation : landscape)
/*and (-webkit-min-device-pixel-ratio: 2)*/ {
#viewer{
@@ -825,23 +782,18 @@ and (orientation : landscape)
font-style: normal;
font-weight: normal;
speak: none;
-
display: inline-block;
text-decoration: inherit;
width: 1em;
- margin-right: .2em;
+ margin-right: 0.2em;
text-align: center;
- /* opacity: .8; */
-
/* For safety - reset parent styles, that can break glyph codes*/
font-variant: normal;
text-transform: none;
-
/* you can be more comfortable with increased icons size */
font-size: 112%;
}
-
.icon-search:before { content: '\e807'; } /* '' */
.icon-resize-full-1:before { content: '\e804'; } /* '' */
.icon-cancel-circled2:before { content: '\e80f'; } /* '' */
diff --git a/cps/static/css/popup.css b/cps/static/css/popup.css
index c41aac716..b655ab48d 100644
--- a/cps/static/css/popup.css
+++ b/cps/static/css/popup.css
@@ -1,4 +1,5 @@
/* http://davidwalsh.name/css-tooltips */
+
/* base CSS element */
.popup {
background: #eee;
@@ -9,10 +10,8 @@
position: fixed;
max-width: 300px;
font-size: 12px;
-
display: none;
margin-left: 2px;
-
margin-top: 30px;
}
@@ -38,7 +37,7 @@
}
/* below */
-.popup:before {
+.popup::before {
position: absolute;
display: inline-block;
border-bottom: 10px solid #eee;
@@ -51,7 +50,7 @@
content: '';
}
-.popup:after {
+.popup::after {
position: absolute;
display: inline-block;
border-bottom: 9px solid #eee;
@@ -64,33 +63,31 @@
}
/* above */
-.popup.above:before {
+.popup.above::before {
border-bottom: none;
border-top: 10px solid #eee;
border-top-color: rgba(0, 0, 0, 0.2);
top: 100%;
}
-.popup.above:after {
+.popup.above::after {
border-bottom: none;
border-top: 9px solid #eee;
top: 100%;
}
-.popup.left:before,
-.popup.left:after
-{
+.popup.left::before,
+.popup.left::after {
left: 20px;
}
-.popup.right:before,
-.popup.right:after
-{
+.popup.right::before,
+.popup.right::after {
left: auto;
right: 20px;
}
-
-.popup.show, .popup.on {
+.popup.show,
+.popup.on {
display: block;
-}
\ No newline at end of file
+}
diff --git a/cps/static/css/style.css b/cps/static/css/style.css
index da0880216..47b0c4cba 100644
--- a/cps/static/css/style.css
+++ b/cps/static/css/style.css
@@ -1,5 +1,20 @@
-.tooltip.bottom .tooltip-inner{font-size:13px;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding:3px 10px;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 4px 10px 0 rgba(0,0,0,.35);box-shadow:0 4px 10px 0 rgba(0,0,0,.35);opacity:1;white-space:nowrap;margin-top:-16px!important;line-height:1.71428571;color:#ddd}
+.tooltip.bottom .tooltip-inner {
+ font-size: 13px;
+ font-family: Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ padding: 3px 10px;
+ border-radius: 4px;
+ background-color: #fff;
+ -webkit-box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.35);
+ box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.35);
+ opacity: 1;
+ white-space: nowrap;
+ margin-top: -16px !important;
+ line-height: 1.71428571;
+ color: #ddd;
+}
@font-face {
font-family: 'Grand Hotel';
@@ -12,140 +27,302 @@ html.http-error {
margin: 0;
height: 100%;
}
+
.http-error body {
margin: 0;
height: 100%;
display: table;
width: 100%;
}
+
.http-error body > div {
display: table-cell;
vertical-align: middle;
text-align: center;
}
-body{background:#f2f2f2}body h2{font-weight:normal;color:#444}
-body { margin-bottom: 40px;}
-a{color: #45b29d}a:hover{color: #444;}
-.navigation .nav-head{text-transform:uppercase;color:#999;margin:20px 0}.navigation .nav-head:nth-child(1n+2){border-top:1px solid #ccc;padding-top:20px}
-.navigation li a{color:#444;text-decoration:none;display:block;padding:10px}.navigation li a:hover{background:rgba(153,153,153,0.4);border-radius:5px}
-.navigation li a span{margin-right:10px}
-.navigation .create-shelf{margin:30px 0;font-size:12px;text-align:center}.navigation .create-shelf a{color:#fff;background:#45b29d;padding:10px 20px;border-radius:5px;text-decoration:none}
-.container-fluid img{display:block;max-width:100%;height:auto}
-.container-fluid .discover{margin-bottom:50px}
-.container-fluid .new-books{border-top:1px solid #ccc}.container-fluid .new-books h2{margin:50px 0 0 0}
-.container-fluid .book{margin-top:20px}.container-fluid .book .cover{height:225px;position:relative}.container-fluid .book .cover img{border:1px solid #fff;/*border-radius:7px;*/box-sizeing:border-box;height:100%;bottom:0;position:absolute;-webkit-box-shadow: 0 5px 8px -6px #777;-moz-box-shadow: 0 5px 8px -6px #777;box-shadow: 0 5px 8px -6px #777;}
-.container-fluid .book .meta{margin-top:10px}.container-fluid .book .meta p{margin:0}
-.container-fluid .book .meta .title{font-weight:bold;font-size:15px;color:#444}
-.container-fluid .book .meta .author{font-size:12px;color:#999}
-.container-fluid .book .meta .rating{margin-top:5px}.rating .glyphicon-star{color:#999}.rating .glyphicon-star.good{color:#45b29d}
-
-.container-fluid .author .author-hidden, .container-fluid .author .author-hidden-divider {
- display: none;
+body {
+ background: #f2f2f2;
+ margin-bottom: 40px;
}
-.navbar-brand{font-family: 'Grand Hotel', cursive; font-size: 35px; color: #45b29d !important;}
-.more-stuff{margin-top: 20px; padding-top: 20px; border-top: 1px solid #ccc}
-.more-stuff>li{margin-bottom: 10px;}
-.navbar-collapse.in .navbar-nav{margin: 0;}
-span.glyphicon.glyphicon-tags {padding-right: 5px;color: #999;vertical-align: text-top;}
-.book-meta {padding-bottom: 20px;}
-.book-meta .tags a {display: inline;}
-.book-meta .identifiers a {display: inline;}
+body h2 {
+ font-weight: normal;
+ color:#444;
+}
+
+a, .danger,.book-remove, .editable-empty, .editable-empty:hover { color: #45b29d; }
+
+.book-remove:hover { color: #23527c; }
+
+.btn-default a { color: #444; }
+
+.btn-default a:hover {
+ color: #45b29d;
+ text-decoration: None;
+}
+
+.btn-default:hover {
+ color: #45b29d;
+}
+
+.editable-click, a.editable-click, a.editable-click:hover { border-bottom: None; }
+
+.navigation .nav-head {
+ text-transform: uppercase;
+ color: #999;
+ margin: 20px 0;
+}
+
+.navigation .nav-head:nth-child(1n+2) {
+ border-top: 1px solid #ccc;
+ padding-top: 20px;
+}
+
+.navigation li a {
+ color: #444;
+ text-decoration: none;
+ display: block;
+ padding: 10px;
+}
+
+.navigation li a:hover {
+ background: rgba(153, 153, 153, 0.4);
+ border-radius: 5px;
+}
+
+.navigation li a span { margin-right: 10px; }
+
+.navigation .create-shelf {
+ margin: 30px 0;
+ font-size: 12px;
+ text-align: center;
+}
+
+.navigation .create-shelf a {
+ color: #fff;
+ background: #45b29d;
+ padding: 10px 20px;
+ border-radius: 5px;
+ text-decoration: none;
+}
+
+.row.display-flex {
+ display: flex;
+ flex-wrap: wrap;
+}
+
+.container-fluid img {
+ display: block;
+ max-width: 100%;
+ height: auto;
+}
+
+.container-fluid .discover{ margin-bottom: 50px; }
+.container-fluid .new-books { border-top: 1px solid #ccc; }
+.container-fluid .new-books h2 { margin: 50px 0 0 0; }
+.container-fluid .book {
+ margin-top: 20px;
+ display: flex;
+ flex-direction: column;
+}
+
+.container-fluid .book .cover {
+ height: 225px;
+ position: relative;
+}
+
+.container-fluid .book .cover img {
+ border: 1px solid #fff;
+ box-sizing: border-box;
+ height: 100%;
+ bottom: 0;
+ position: absolute;
+ -webkit-box-shadow: 0 5px 8px -6px #777;
+ -moz-box-shadow: 0 5px 8px -6px #777;
+ box-shadow: 0 5px 8px -6px #777;
+}
+
+.container-fluid .book .meta { margin-top: 10px; }
+.container-fluid .book .meta p { margin: 0; }
+
+.container-fluid .book .meta .title {
+ font-weight: bold;
+ font-size: 15px;
+ color: #444;
+}
+
+.container-fluid .book .meta .series {
+ font-weight: 400;
+ font-size: 12px;
+ color: #444;
+}
+
+.container-fluid .book .meta .author {
+ font-size: 12px;
+ color: #999;
+}
+
+.container-fluid .book .meta .rating { margin-top: 5px; }
+.rating .glyphicon-star-empty { color: #444; }
+.rating .glyphicon-star.good { color: #444; }
+.rating-clear .glyphicon-remove { color: #333 }
+
+.container-fluid .author .author-hidden, .container-fluid .author .author-hidden-divider { display: none; }
+
+.navbar-brand {
+ font-family: 'Grand Hotel', cursive;
+ font-size: 35px;
+ color: #45b29d !important;
+}
+
+.more-stuff {
+ margin-top: 20px;
+ padding-top: 20px;
+ border-top: 1px solid #ccc;
+}
+
+.more-stuff>li { margin-bottom: 10px; }
+.navbar-collapse.in .navbar-nav { margin: 0; }
+
+span.glyphicon.glyphicon-tags {
+ padding-right: 5px;
+ color: #999;
+ vertical-align: text-top;
+}
+
+.book-meta { padding-bottom: 20px; }
+.book-meta .tags a { display: inline; }
+.book-meta .identifiers a { display: inline; }
+
.container-fluid .single .cover img {
- border: 1px solid #fff;
- /*border-radius: 7px;*/
- box-sizeing: border-box;
- -webkit-box-shadow: 0 5px 8px -6px #777;
- -moz-box-shadow: 0 5px 8px -6px #777;
- box-shadow: 0 5px 8px -6px #777;
+ border: 1px solid #fff;
+ box-sizing: border-box;
+ -webkit-box-shadow: 0 5px 8px -6px #777;
+ -moz-box-shadow: 0 5px 8px -6px #777;
+ box-shadow: 0 5px 8px -6px #777;
}
-.navbar-default .navbar-toggle .icon-bar {background-color: #000;}
-.navbar-default .navbar-toggle {border-color: #000;}
-.cover { margin-bottom: 10px;}
+.navbar-default .navbar-toggle .icon-bar {background-color: #000; }
+.navbar-default .navbar-toggle {border-color: #000; }
+.cover { margin-bottom: 10px; }
+.cover .badge{
+ position: absolute;
+ top: 2px;
+ left: 2px;
+ background-color: #777;
+}
.cover-height { max-height: 100px;}
+.col-sm-2 a .cover-small {
+ margin: 5px;
+ max-height: 200px;
+}
+
.btn-file {position: relative; overflow: hidden;}
-.btn-file input[type=file] {position: absolute; top: 0; right: 0; min-width: 100%; min-height: 100%; font-size: 100px; text-align: right; filter: alpha(opacity=0); opacity: 0; outline: none; background: white; cursor: inherit; display: block;}
+
+.btn-file input[type=file] {
+ position: absolute;
+ top: 0;
+ right: 0;
+ min-width: 100%;
+ min-height: 100%;
+ font-size: 100px;
+ text-align: right;
+ filter: alpha(opacity=0);
+ opacity: 0;
+ outline: none;
+ background: white;
+ cursor: inherit;
+ display: block;
+}
.btn-toolbar .btn,.discover .btn { margin-bottom: 5px; }
-.button-link {color:#fff;}
+.button-link {color: #fff; }
.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary{ background-color: #1C5484; }
.btn-primary.disabled, .btn-primary[disabled], fieldset[disabled] .btn-primary, .btn-primary.disabled:hover, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, fieldset[disabled] .btn-primary:focus, .btn-primary.disabled:active, .btn-primary[disabled]:active, fieldset[disabled] .btn-primary:active, .btn-primary.disabled.active, .btn-primary[disabled].active, fieldset[disabled] .btn-primary.active { background-color: #89B9E2; }
-.btn-toolbar>.btn+.btn, .btn-toolbar>.btn-group+.btn, .btn-toolbar>.btn+.btn-group, .btn-toolbar>.btn-group+.btn-group { margin-left:0px; }
-.panel-body {background-color: #f5f5f5;}
-.spinner {margin:0 41%;}
-.spinner2 {margin:0 41%;}
-
+.btn-toolbar>.btn+.btn, .btn-toolbar>.btn-group+.btn, .btn-toolbar>.btn+.btn-group, .btn-toolbar>.btn-group+.btn-group { margin-left: 0px; }
+.panel-body {background-color: #f5f5f5; }
+.spinner {margin: 0 41%; }
+.spinner2 {margin: 0 41%; }
+.intend-form { margin-left:20px; }
+table .bg-dark-danger {background-color: #d9534f; color: #fff; }
+table .bg-dark-danger a {color: #fff; }
+table .bg-dark-danger:hover {background-color: #c9302c; }
+table .bg-primary:hover {background-color: #1C5484; }
+table .bg-primary a {color: #fff; }
.block-label {display: block;}
-.fake-input {position: absolute; pointer-events: none; top: 0;}
+.fake-input {position: absolute; pointer-events: none; top: 0; }
input.pill { position: absolute; opacity: 0; }
+
input.pill + label {
- border: 2px solid #45b29d;
- border-radius: 15px;
- color: #45b29d;
- cursor: pointer;
- display: inline-block;
- padding: 3px 15px;
- user-select: none;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
+ border: 2px solid #45b29d;
+ border-radius: 15px;
+ color: #45b29d;
+ cursor: pointer;
+ display: inline-block;
+ padding: 3px 15px;
+ user-select: none;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
}
+
input.pill:checked + label {
- background-color: #45b29d;
- border-color: #fff;
- color: #fff;
-}
-input.pill:not(:checked) + label .glyphicon {
- display: none;
+ background-color: #45b29d;
+ border-color: #fff;
+ color: #fff;
}
-.author-bio img {margin: 0 1em 1em 0;}
-.author-link {display: inline-block; margin-top: 10px; width: 100px;}
-.author-link img {display: block; height: 100%;}
+input.pill:not(:checked) + label .glyphicon { display: none; }
-#remove-from-shelves .btn,
-#shelf-action-errors {
- margin-left: 5px;
-}
+.author-bio img { margin: 0 1em 1em 0; }
+.author-link { display: inline-block; margin-top: 10px; width: 100px; }
+.author-link img { display: block; height: 100%; }
+#remove-from-shelves .btn, #shelf-action-errors { margin-left: 5px; }
-.tags_click, .serie_click, .language_click {margin-right: 5px;}
+.tags_click, .serie_click, .language_click { margin-right: 5px; }
#meta-info {
- height:600px;
- overflow-y:scroll;
+ height: 600px;
+ overflow-y: scroll;
}
-.media-list {
- padding-right:15px;
+
+.media-list { padding-right: 15px; }
+.media-body p { text-align: justify; }
+
+#meta-info img {
+ max-height: 150px;
+ max-width: 100px;
+ cursor: pointer;
}
-.media-body p {
- text-align: justify;
-}
-#meta-info img { max-height: 150px; max-width: 100px; cursor: pointer; }
.padded-bottom { margin-bottom: 15px; }
+.upload-format-input-text { display: initial; }
+#btn-upload-format { display: none; }
+.upload-cover-input-text { display: initial; }
+#btn-upload-cover { display: none; }
+.panel-title > a { text-decoration: none; }
+.editable-buttons {
+ display:inline-block;
+ margin-left: 7px;
+}
-.upload-format-input-text {display: initial;}
-#btn-upload-format {display: none;}
+.editable-input { display:inline-block; }
-.upload-cover-input-text {display: initial;}
-#btn-upload-cover {display: none;}
-
-.panel-title > a { text-decoration: none;}
-
-.editable-buttons { display:inline-block; margin-left: 7px ;}
-.editable-input { display:inline-block;}
-.editable-cancel { margin-bottom: 0px !important; margin-left: 7px !important;}
-.editable-submit { margin-bottom: 0px !important;}
+.editable-cancel {
+ margin-bottom: 0px !important;
+ margin-left: 7px !important;
+}
+.editable-submit { margin-bottom: 0px !important; }
.filterheader { margin-bottom: 20px; }
+.errorlink { margin-top: 20px; }
+.emailconfig { margin-top: 10px; }
-.errorlink {margin-top: 20px;}
.modal-body .comments {
- max-height:300px;
- overflow-y: auto;
+ max-height: 300px;
+ overflow-y: auto;
}
div.log {
@@ -158,3 +335,4 @@ div.log {
white-space: nowrap;
padding: 0.5em;
}
+
diff --git a/cps/static/css/upload.css b/cps/static/css/upload.css
index a56dde2c0..7739e8514 100644
--- a/cps/static/css/upload.css
+++ b/cps/static/css/upload.css
@@ -1,8 +1,8 @@
@media (min-device-width: 768px) {
- .upload-modal-dialog {
- position: absolute;
- top: 45%;
- left: 50%;
- transform: translate(-50%, -50%) !important;
- }
+ .upload-modal-dialog {
+ position: absolute;
+ top: 45%;
+ left: 50%;
+ transform: translate(-50%, -50%) !important;
+ }
}
diff --git a/cps/static/generic_cover.jpg b/cps/static/generic_cover.jpg
index f5c090c1c..67f98248a 100644
Binary files a/cps/static/generic_cover.jpg and b/cps/static/generic_cover.jpg differ
diff --git a/cps/static/js/archive/archive.js b/cps/static/js/archive/archive.js
index 13e1d183c..06c056246 100644
--- a/cps/static/js/archive/archive.js
+++ b/cps/static/js/archive/archive.js
@@ -40,7 +40,8 @@ function alphanumCase(a, b) {
while (i = (j = t.charAt(x++)).charCodeAt(0)) {
var m = (i === 46 || (i >= 48 && i <= 57));
- if (m !== n) {
+ // Compare has to be with != otherwise fails
+ if (m != n) {
tz[++y] = "";
n = m;
}
@@ -55,7 +56,8 @@ function alphanumCase(a, b) {
for (var x = 0; aa[x] && bb[x]; x++) {
if (aa[x] !== bb[x]) {
var c = Number(aa[x]), d = Number(bb[x]);
- if (c === aa[x] && d === bb[x]) {
+ // Compare has to be with == otherwise fails
+ if (c == aa[x] && d == bb[x]) {
return c - d;
} else {
return (aa[x] > bb[x]) ? 1 : -1;
@@ -409,6 +411,19 @@ bitjs.archive = bitjs.archive || {};
return "unrar.js";
};
+ /**
+ * Unrarrer5
+ * @extends {bitjs.archive.Unarchiver}
+ * @constructor
+ */
+ bitjs.archive.Unrarrer5 = function(arrayBuffer, optPathToBitJS) {
+ bitjs.base(this, arrayBuffer, optPathToBitJS);
+ };
+ bitjs.inherits(bitjs.archive.Unrarrer5, bitjs.archive.Unarchiver);
+ bitjs.archive.Unrarrer5.prototype.getScriptFileName = function() {
+ return "unrar5.js";
+ };
+
/**
* Untarrer
* @extends {bitjs.archive.Unarchiver}
diff --git a/cps/static/js/archive/rarvm.js b/cps/static/js/archive/rarvm.js
index 44e093308..8858fa05f 100644
--- a/cps/static/js/archive/rarvm.js
+++ b/cps/static/js/archive/rarvm.js
@@ -9,10 +9,18 @@
/**
* CRC Implementation.
*/
-/* global Uint8Array, Uint32Array, bitjs, DataView */
+/* global Uint8Array, Uint32Array, bitjs, DataView, mem */
/* exported MAXWINMASK, UnpackFilter */
-var CRCTab = new Array(256).fill(0);
+function emptyArr(n, v) {
+ var arr = [];
+ for (var i = 0; i < n; i += 1) {
+ arr[i] = v;
+ }
+ return arr;
+}
+
+var CRCTab = emptyArr(256, 0);
function initCRC() {
for (var i = 0; i < 256; ++i) {
diff --git a/cps/static/js/archive/unrar.js b/cps/static/js/archive/unrar.js
index fadb791e1..3e2a45af8 100644
--- a/cps/static/js/archive/unrar.js
+++ b/cps/static/js/archive/unrar.js
@@ -14,10 +14,10 @@
/* global VM_FIXEDGLOBALSIZE, VM_GLOBALMEMSIZE, MAXWINMASK, VM_GLOBALMEMADDR, MAXWINSIZE */
// This file expects to be invoked as a Worker (see onmessage below).
-importScripts("../io/bitstream.js");
+/*importScripts("../io/bitstream.js");
importScripts("../io/bytebuffer.js");
importScripts("archive.js");
-importScripts("rarvm.js");
+importScripts("rarvm.js");*/
// Progress variables.
var currentFilename = "";
@@ -29,19 +29,21 @@ var totalFilesInArchive = 0;
// Helper functions.
var info = function(str) {
- postMessage(new bitjs.archive.UnarchiveInfoEvent(str));
+ console.log(str);
+ // postMessage(new bitjs.archive.UnarchiveInfoEvent(str));
};
var err = function(str) {
- postMessage(new bitjs.archive.UnarchiveErrorEvent(str));
+ console.log(str);
+ // postMessage(new bitjs.archive.UnarchiveErrorEvent(str));
};
var postProgress = function() {
- postMessage(new bitjs.archive.UnarchiveProgressEvent(
+ /*postMessage(new bitjs.archive.UnarchiveProgressEvent(
currentFilename,
currentFileNumber,
currentBytesUnarchivedInFile,
currentBytesUnarchived,
totalUncompressedBytesInArchive,
- totalFilesInArchive));
+ totalFilesInArchive));*/
};
// shows a byte value as its hex representation
@@ -1298,7 +1300,7 @@ var unrar = function(arrayBuffer) {
totalUncompressedBytesInArchive = 0;
totalFilesInArchive = 0;
- postMessage(new bitjs.archive.UnarchiveStartEvent());
+ //postMessage(new bitjs.archive.UnarchiveStartEvent());
var bstream = new bitjs.io.BitStream(arrayBuffer, false /* rtl */);
var header = new RarVolumeHeader(bstream);
@@ -1348,7 +1350,7 @@ var unrar = function(arrayBuffer) {
localfile.unrar();
if (localfile.isValid) {
- postMessage(new bitjs.archive.UnarchiveExtractEvent(localfile));
+ // postMessage(new bitjs.archive.UnarchiveExtractEvent(localfile));
postProgress();
}
}
@@ -1358,7 +1360,7 @@ var unrar = function(arrayBuffer) {
} else {
err("Invalid RAR file");
}
- postMessage(new bitjs.archive.UnarchiveFinishEvent());
+ // postMessage(new bitjs.archive.UnarchiveFinishEvent());
};
// event.data.file has the ArrayBuffer.
diff --git a/cps/static/js/archive/unrar5.js b/cps/static/js/archive/unrar5.js
new file mode 100644
index 000000000..452989c09
--- /dev/null
+++ b/cps/static/js/archive/unrar5.js
@@ -0,0 +1,1371 @@
+/**
+ * unrar.js
+ *
+ * Licensed under the MIT License
+ *
+ * Copyright(c) 2011 Google Inc.
+ * Copyright(c) 2011 antimatter15
+ *
+ * Reference Documentation:
+ *
+ * http://kthoom.googlecode.com/hg/docs/unrar.html
+ */
+/* global bitjs, importScripts, RarVM, Uint8Array, UnpackFilter */
+/* global VM_FIXEDGLOBALSIZE, VM_GLOBALMEMSIZE, MAXWINMASK, VM_GLOBALMEMADDR, MAXWINSIZE */
+
+// This file expects to be invoked as a Worker (see onmessage below).
+/*importScripts("../io/bitstream.js");
+importScripts("../io/bytebuffer.js");
+importScripts("archive.js");
+importScripts("rarvm.js");*/
+
+// Progress variables.
+var currentFilename = "";
+var currentFileNumber = 0;
+var currentBytesUnarchivedInFile = 0;
+var currentBytesUnarchived = 0;
+var totalUncompressedBytesInArchive = 0;
+var totalFilesInArchive = 0;
+
+// Helper functions.
+var info = function(str) {
+ console.log(str)
+ //postMessage(new bitjs.archive.UnarchiveInfoEvent(str));
+};
+var err = function(str) {
+ console.log(str)
+ //postMessage(new bitjs.archive.UnarchiveErrorEvent(str));
+};
+var postProgress = function() {
+ /*postMessage(new bitjs.archive.UnarchiveProgressEvent(
+ currentFilename,
+ currentFileNumber,
+ currentBytesUnarchivedInFile,
+ currentBytesUnarchived,
+ totalUncompressedBytesInArchive,
+ totalFilesInArchive));*/
+};
+
+// shows a byte value as its hex representation
+var nibble = "0123456789ABCDEF";
+var byteValueToHexString = function(num) {
+ return nibble[num >> 4] + nibble[num & 0xF];
+};
+var twoByteValueToHexString = function(num) {
+ return nibble[(num >> 12) & 0xF] + nibble[(num >> 8) & 0xF] + nibble[(num >> 4) & 0xF] + nibble[num & 0xF];
+};
+
+
+// Volume Types
+var MAIN_HEAD = 0x01,
+ ENCRYPT_HEAD = 0x04,
+ FILE_HEAD = 0x02,
+ SERVICE_HEAD = 0x03,
+ // COMM_HEAD = 0x75,
+ // AV_HEAD = 0x76,
+ // SUB_HEAD = 0x77,
+ // PROTECT_HEAD = 0x78,
+ // SIGN_HEAD = 0x79,
+ // NEWSUB_HEAD = 0x7a,
+ ENDARC_HEAD = 0x05;
+
+// ============================================================================================== //
+
+var RarMainVolumeHeader = function(bstream) {
+ var headPos = bstream.bytePtr;
+ // byte 1,2
+ info("Rar Volume Header @" + bstream.bytePtr);
+
+ this.crc = bstream.readBits(16);
+ info(" crc=" + this.crc);
+
+ // byte 3
+ this.headType = bstream.readBits(8);
+ info(" headType=" + this.headType);
+
+ // Get flags
+ // bytes 4,5
+ this.flags = {};
+ this.flags.value = bstream.readBits(16);
+
+ // byte 6
+ this.headSize = bstream.readBits(8);
+ // byte 7
+ if (bstream.readBits(8) === 1) {
+ info(" RarVersion=5");
+ }
+ // byte 8
+ bstream.readBits(8);
+}
+
+var vint = function(bstream) {
+ var size = 0;
+ var result = 0;
+ var loop = 0 ;
+ do {
+ size = bstream.readBits(8);
+ result |= (size & 0x7F) << (loop * 7);
+ loop++;
+ } while (size & 0x80 )
+ return result;
+}
+
+/**
+ * @param {bitjs.io.BitStream} bstream
+ * @constructor
+ */
+var RarVolumeHeader = function(bstream) {
+ var headPos = bstream.bytePtr;
+ // byte 1,2
+ info("Rar Volume Header @" + bstream.bytePtr);
+
+ this.crc = bstream.readBits(32);
+ info(" crc=" + this.crc);
+
+ // byte 3 + x Header size
+ this.headSize = vint(bstream);
+ info(" Header Size=" + this.headSize);
+
+ // byte 4
+ this.headType = bstream.readBits(8);
+ info(" headType=" + this.headType);
+
+ // Get Header flags
+ this.headFlags = {};
+ this.headFlags.value = bstream.peekBits(8);
+
+ info(" Header flags=" + byteValueToHexString(this.headFlags.value));
+ this.headFlags.EXTRA_AREA = !!bstream.readBits(1);
+ this.headFlags.DATA_AREA = !!bstream.readBits(1);
+ this.headFlags.UNKNOWN = !!bstream.readBits(1);
+ this.headFlags.CONTINUE_FROM = !!bstream.readBits(1);
+ this.headFlags.CONTNUE_TO = !!bstream.readBits(1);
+ this.headFlags.DEPENDS = !!bstream.readBits(1);
+ this.headFlags.CHILDBLOCK = !!bstream.readBits(1);
+ bstream.readBits(1); // unused*/
+
+ // Get extra AreaSize
+ if (this.headFlags.EXTRA_AREA) {
+ this.extraSize = vint(bstream);
+ } else {
+ this.extraSize = 0;
+ }
+ if (this.headFlags.DATA_AREA && (this.headType == FILE_HEAD || this.headType == SERVICE_HEAD)) {
+ this.packSize = vint(bstream);
+ // this.packSize = bstream.readBits(32);
+ }
+ this.flags = {};
+ this.flags.value = bstream.peekBits(8);
+
+ switch (this.headType) {
+ case MAIN_HEAD:
+ // this.flags = {};
+ // this.flags.value = bstream.peekBits(16);
+ this.flags.MHD_VOLUME = !!bstream.readBits(1);
+ this.flags.MHD_VOLUMNE_NO = !!bstream.readBits(1);
+ this.flags.MHD_SOLID = !!bstream.readBits(1);
+ this.flags.MHD_RECOVERY = !!bstream.readBits(1);
+ this.flags.MHD_LOCKED = !!bstream.readBits(1);
+ bstream.readBits(3); // unused*/
+ if (this.flags.MHD_VOLUMNE_NO) {
+ this.volumeNumber = vint(bstream);
+ }
+ bstream.readBytes(this.extraSize);
+ // break;
+ return; // Main Header finally parsed
+ // ------------
+ case FILE_HEAD:
+ case SERVICE_HEAD:
+ this.flags.DIRECTORY = !!bstream.readBits(1);
+ this.flags.TIME = !!bstream.readBits(1);
+ this.flags.CRC = !!bstream.readBits(1);
+ this.flags.UNPACK_UNKNOWN = !!bstream.readBits(1);
+ bstream.readBits(4);
+
+ if (this.flags.UNPACK_UNKNOWN) {
+ vint(bstream);
+ } else {
+ this.unpackedSize = vint(bstream);
+ }
+ this.fileAttr = vint(bstream);
+ if (this.flags.TIME) {
+ this.fileTime = bstream.readBits(32);
+ }
+ if (this.flags.CRC) {
+ this.fileCRC = bstream.readBits(32);
+ }
+ // var compInfo = vint(bstream);
+ this.unpVer = bstream.readBits(6);
+ this.solid = bstream.readBits(1);
+ bstream.readBits(1);
+ this.method = bstream.readBits(3);
+ this.dictSize = bstream.readBits(4);
+ bstream.readBits(1);
+ this.hostOS = vint(bstream);
+ this.nameSize = vint(bstream);
+
+ this.filename = bstream.readBytes(this.nameSize);
+ var _s = "";
+ for (var _i = 0; _i < this.filename.length ; _i++) {
+ _s += String.fromCharCode(this.filename[_i]);
+ }
+
+ this.filename = _s;
+ bstream.readBytes(this.extraSize);
+ break;
+
+ default:
+ info("Found a header of type 0x" + byteValueToHexString(this.headType));
+ // skip the rest of the header bytes (for now)
+ bstream.readBytes(this.headSize - 7);
+ break;
+ }
+};
+
+//var BLOCK_LZ = 0;
+
+var rLDecode = [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224],
+ rLBits = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5],
+ rDBitLengthCounts = [4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 14, 0, 12],
+ rSDDecode = [0, 4, 8, 16, 32, 64, 128, 192],
+ rSDBits = [2, 2, 3, 4, 5, 6, 6, 6];
+
+var rDDecode = [0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32,
+ 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072,
+ 4096, 6144, 8192, 12288, 16384, 24576, 32768, 49152, 65536, 98304,
+ 131072, 196608, 262144, 327680, 393216, 458752, 524288, 589824,
+ 655360, 720896, 786432, 851968, 917504, 983040
+];
+
+var rDBits = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5,
+ 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14,
+ 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16
+];
+
+var rLowDistRepCount = 16;
+
+var rNC = 299,
+ rDC = 60,
+ rLDC = 17,
+ rRC = 28,
+ rBC = 20,
+ rHuffTableSize = (rNC + rDC + rRC + rLDC);
+
+//var UnpBlockType = BLOCK_LZ;
+var UnpOldTable = new Array(rHuffTableSize);
+
+var BD = { //bitdecode
+ DecodeLen: new Array(16),
+ DecodePos: new Array(16),
+ DecodeNum: new Array(rBC)
+};
+var LD = { //litdecode
+ DecodeLen: new Array(16),
+ DecodePos: new Array(16),
+ DecodeNum: new Array(rNC)
+};
+var DD = { //distdecode
+ DecodeLen: new Array(16),
+ DecodePos: new Array(16),
+ DecodeNum: new Array(rDC)
+};
+var LDD = { //low dist decode
+ DecodeLen: new Array(16),
+ DecodePos: new Array(16),
+ DecodeNum: new Array(rLDC)
+};
+var RD = { //rep decode
+ DecodeLen: new Array(16),
+ DecodePos: new Array(16),
+ DecodeNum: new Array(rRC)
+};
+
+/**
+ * @type {Array}
+ */
+var rOldBuffers = [];
+
+/**
+ * The current buffer we are unpacking to.
+ * @type {bitjs.io.ByteBuffer}
+ */
+var rBuffer;
+
+/**
+ * The buffer of the final bytes after filtering (only used in Unpack29).
+ * @type {bitjs.io.ByteBuffer}
+ */
+var wBuffer;
+
+var lowDistRepCount = 0;
+var prevLowDist = 0;
+
+var rOldDist = [0, 0, 0, 0];
+var lastDist;
+var lastLength;
+
+/**
+ * In unpack.cpp, UnpPtr keeps track of what bytes have been unpacked
+ * into the Window buffer and WrPtr keeps track of what bytes have been
+ * actually written to disk after the unpacking and optional filtering
+ * has been done.
+ *
+ * In our case, rBuffer is the buffer for the unpacked bytes and wBuffer is
+ * the final output bytes.
+ */
+
+
+/**
+ * Read in Huffman tables for RAR
+ * @param {bitjs.io.BitStream} bstream
+ */
+function rarReadTables(bstream) {
+ var BitLength = new Array(rBC);
+ var Table = new Array(rHuffTableSize);
+ var i;
+ // before we start anything we need to get byte-aligned
+ bstream.readBits((8 - bstream.bitPtr) & 0x7);
+
+ if (bstream.readBits(1)) {
+ info("Error! PPM not implemented yet");
+ return;
+ }
+
+ if (!bstream.readBits(1)) { //discard old table
+ for (i = UnpOldTable.length; i--;) {
+ UnpOldTable[i] = 0;
+ }
+ }
+
+ // read in bit lengths
+ for (var I = 0; I < rBC; ++I) {
+ var Length = bstream.readBits(4);
+ if (Length === 15) {
+ var ZeroCount = bstream.readBits(4);
+ if (ZeroCount === 0) {
+ BitLength[I] = 15;
+ } else {
+ ZeroCount += 2;
+ while (ZeroCount-- > 0 && I < rBC) {
+ BitLength[I++] = 0;
+ }
+ --I;
+ }
+ } else {
+ BitLength[I] = Length;
+ }
+ }
+
+ // now all 20 bit lengths are obtained, we construct the Huffman Table:
+
+ rarMakeDecodeTables(BitLength, 0, BD, rBC);
+
+ var TableSize = rHuffTableSize;
+ //console.log(DecodeLen, DecodePos, DecodeNum);
+ for (i = 0; i < TableSize;) {
+ var N;
+ var num = rarDecodeNumber(bstream, BD);
+ if (num < 16) {
+ Table[i] = (num + UnpOldTable[i]) & 0xf;
+ i++;
+ } else if (num < 18) {
+ N = (num === 16) ? (bstream.readBits(3) + 3) : (bstream.readBits(7) + 11);
+
+ while (N-- > 0 && i < TableSize) {
+ Table[i] = Table[i - 1];
+ i++;
+ }
+ } else {
+ N = (num === 18) ? (bstream.readBits(3) + 3) : (bstream.readBits(7) + 11);
+
+ while (N-- > 0 && i < TableSize) {
+ Table[i++] = 0;
+ }
+ }
+ }
+
+ rarMakeDecodeTables(Table, 0, LD, rNC);
+ rarMakeDecodeTables(Table, rNC, DD, rDC);
+ rarMakeDecodeTables(Table, rNC + rDC, LDD, rLDC);
+ rarMakeDecodeTables(Table, rNC + rDC + rLDC, RD, rRC);
+
+ for (i = UnpOldTable.length; i--;) {
+ UnpOldTable[i] = Table[i];
+ }
+ return true;
+}
+
+
+function rarDecodeNumber(bstream, dec) {
+ var DecodeLen = dec.DecodeLen,
+ DecodePos = dec.DecodePos,
+ DecodeNum = dec.DecodeNum;
+ var bitField = bstream.getBits() & 0xfffe;
+ //some sort of rolled out binary search
+ var bits = ((bitField < DecodeLen[8]) ?
+ ((bitField < DecodeLen[4]) ?
+ ((bitField < DecodeLen[2]) ?
+ ((bitField < DecodeLen[1]) ? 1 : 2) :
+ ((bitField < DecodeLen[3]) ? 3 : 4)) :
+ (bitField < DecodeLen[6]) ?
+ ((bitField < DecodeLen[5]) ? 5 : 6) :
+ ((bitField < DecodeLen[7]) ? 7 : 8)) :
+ ((bitField < DecodeLen[12]) ?
+ ((bitField < DecodeLen[10]) ?
+ ((bitField < DecodeLen[9]) ? 9 : 10) :
+ ((bitField < DecodeLen[11]) ? 11 : 12)) :
+ (bitField < DecodeLen[14]) ?
+ ((bitField < DecodeLen[13]) ? 13 : 14) :
+ 15));
+ bstream.readBits(bits);
+ var N = DecodePos[bits] + ((bitField - DecodeLen[bits - 1]) >>> (16 - bits));
+
+ return DecodeNum[N];
+}
+
+
+function rarMakeDecodeTables(BitLength, offset, dec, size) {
+ var DecodeLen = dec.DecodeLen;
+ var DecodePos = dec.DecodePos;
+ var DecodeNum = dec.DecodeNum;
+ var LenCount = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
+ var TmpPos = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
+ var N = 0;
+ var M = 0;
+ var i;
+ for (i = DecodeNum.length; i--;) {
+ DecodeNum[i] = 0;
+ }
+ for (i = 0; i < size; i++) {
+ LenCount[BitLength[i + offset] & 0xF]++;
+ }
+ LenCount[0] = 0;
+ TmpPos[0] = 0;
+ DecodePos[0] = 0;
+ DecodeLen[0] = 0;
+
+ var I;
+ for (I = 1; I < 16; ++I) {
+ N = 2 * (N + LenCount[I]);
+ M = (N << (15 - I));
+ if (M > 0xFFFF) {
+ M = 0xFFFF;
+ }
+ DecodeLen[I] = M;
+ DecodePos[I] = DecodePos[I - 1] + LenCount[I - 1];
+ TmpPos[I] = DecodePos[I];
+ }
+ for (I = 0; I < size; ++I) {
+ if (BitLength[I + offset] !== 0) {
+ DecodeNum[TmpPos[BitLength[offset + I] & 0xF]++] = I;
+ }
+ }
+
+}
+
+// TODO: implement
+/**
+ * @param {bitjs.io.BitStream} bstream
+ * @param {boolean} Solid
+ */
+function unpack15() { //bstream, Solid) {
+ info("ERROR! RAR 1.5 compression not supported");
+}
+
+/**
+ * Unpacks the bit stream into rBuffer using the Unpack20 algorithm.
+ * @param {bitjs.io.BitStream} bstream
+ * @param {boolean} Solid
+ */
+function unpack20(bstream) { //, Solid) {
+ var destUnpSize = rBuffer.data.length;
+ var oldDistPtr = 0;
+ var Length;
+ var Distance;
+ rarReadTables20(bstream);
+ while (destUnpSize > rBuffer.ptr) {
+ var num = rarDecodeNumber(bstream, LD);
+ var Bits;
+ if (num < 256) {
+ rBuffer.insertByte(num);
+ continue;
+ }
+ if (num > 269) {
+ Length = rLDecode[num -= 270] + 3;
+ if ((Bits = rLBits[num]) > 0) {
+ Length += bstream.readBits(Bits);
+ }
+ var DistNumber = rarDecodeNumber(bstream, DD);
+ Distance = rDDecode[DistNumber] + 1;
+ if ((Bits = rDBits[DistNumber]) > 0) {
+ Distance += bstream.readBits(Bits);
+ }
+ if (Distance >= 0x2000) {
+ Length++;
+ if (Distance >= 0x40000) {
+ Length++;
+ }
+ }
+ lastLength = Length;
+ lastDist = rOldDist[oldDistPtr++ & 3] = Distance;
+ rarCopyString(Length, Distance);
+ continue;
+ }
+ if (num === 269) {
+ rarReadTables20(bstream);
+ rarUpdateProgress();
+ continue;
+ }
+ if (num === 256) {
+ lastDist = rOldDist[oldDistPtr++ & 3] = lastDist;
+ rarCopyString(lastLength, lastDist);
+ continue;
+ }
+ if (num < 261) {
+ Distance = rOldDist[(oldDistPtr - (num - 256)) & 3];
+ var LengthNumber = rarDecodeNumber(bstream, RD);
+ Length = rLDecode[LengthNumber] + 2;
+ if ((Bits = rLBits[LengthNumber]) > 0) {
+ Length += bstream.readBits(Bits);
+ }
+ if (Distance >= 0x101) {
+ Length++;
+ if (Distance >= 0x2000) {
+ Length++;
+ if (Distance >= 0x40000) {
+ Length++;
+ }
+ }
+ }
+ lastLength = Length;
+ lastDist = rOldDist[oldDistPtr++ & 3] = Distance;
+ rarCopyString(Length, Distance);
+ continue;
+ }
+ if (num < 270) {
+ Distance = rSDDecode[num -= 261] + 1;
+ if ((Bits = rSDBits[num]) > 0) {
+ Distance += bstream.readBits(Bits);
+ }
+ lastLength = 2;
+ lastDist = rOldDist[oldDistPtr++ & 3] = Distance;
+ rarCopyString(2, Distance);
+ continue;
+ }
+ }
+ rarUpdateProgress();
+}
+
+function rarUpdateProgress() {
+ var change = rBuffer.ptr - currentBytesUnarchivedInFile;
+ currentBytesUnarchivedInFile = rBuffer.ptr;
+ currentBytesUnarchived += change;
+ postProgress();
+}
+
+var rNC20 = 298,
+ rDC20 = 48,
+ rRC20 = 28,
+ rBC20 = 19,
+ rMC20 = 257;
+
+var UnpOldTable20 = new Array(rMC20 * 4);
+
+function rarReadTables20(bstream) {
+ var BitLength = new Array(rBC20);
+ var Table = new Array(rMC20 * 4);
+ var TableSize, N, I;
+ var i;
+ bstream.readBits(1);
+ if (!bstream.readBits(1)) {
+ for (i = UnpOldTable20.length; i--;) {
+ UnpOldTable20[i] = 0;
+ }
+ }
+ TableSize = rNC20 + rDC20 + rRC20;
+ for (I = 0; I < rBC20; I++) {
+ BitLength[I] = bstream.readBits(4);
+ }
+ rarMakeDecodeTables(BitLength, 0, BD, rBC20);
+ I = 0;
+ while (I < TableSize) {
+ var num = rarDecodeNumber(bstream, BD);
+ if (num < 16) {
+ Table[I] = num + UnpOldTable20[I] & 0xf;
+ I++;
+ } else if (num === 16) {
+ N = bstream.readBits(2) + 3;
+ while (N-- > 0 && I < TableSize) {
+ Table[I] = Table[I - 1];
+ I++;
+ }
+ } else {
+ if (num === 17) {
+ N = bstream.readBits(3) + 3;
+ } else {
+ N = bstream.readBits(7) + 11;
+ }
+ while (N-- > 0 && I < TableSize) {
+ Table[I++] = 0;
+ }
+ }
+ }
+ rarMakeDecodeTables(Table, 0, LD, rNC20);
+ rarMakeDecodeTables(Table, rNC20, DD, rDC20);
+ rarMakeDecodeTables(Table, rNC20 + rDC20, RD, rRC20);
+ for (i = UnpOldTable20.length; i--;) {
+ UnpOldTable20[i] = Table[i];
+ }
+}
+
+// ============================================================================================== //
+
+// Unpack code specific to RarVM
+var VM = new RarVM();
+
+/**
+ * Filters code, one entry per filter.
+ * @type {Array}
+ */
+var Filters = [];
+
+/**
+ * Filters stack, several entrances of same filter are possible.
+ * @type {Array}
+ */
+var PrgStack = [];
+
+/**
+ * Lengths of preceding blocks, one length per filter. Used to reduce
+ * size required to write block length if lengths are repeating.
+ * @type {Array}
+ */
+var OldFilterLengths = [];
+
+var LastFilter = 0;
+
+function initFilters() {
+ OldFilterLengths = [];
+ LastFilter = 0;
+ Filters = [];
+ PrgStack = [];
+}
+
+
+/**
+ * @param {number} firstByte The first byte (flags).
+ * @param {Uint8Array} vmCode An array of bytes.
+ */
+function rarAddVMCode(firstByte, vmCode) {
+ VM.init();
+ var i;
+ var bstream = new bitjs.io.BitStream(vmCode.buffer, true /* rtl */ );
+
+ var filtPos;
+ if (firstByte & 0x80) {
+ filtPos = RarVM.readData(bstream);
+ if (filtPos === 0) {
+ initFilters();
+ } else {
+ filtPos--;
+ }
+ } else {
+ filtPos = LastFilter;
+ }
+
+ if (filtPos > Filters.length || filtPos > OldFilterLengths.length) {
+ return false;
+ }
+
+ LastFilter = filtPos;
+ var newFilter = (filtPos === Filters.length);
+
+ // new filter for PrgStack
+ var stackFilter = new UnpackFilter();
+ var filter = null;
+ // new filter code, never used before since VM reset
+ if (newFilter) {
+ // too many different filters, corrupt archive
+ if (filtPos > 1024) {
+ return false;
+ }
+
+ filter = new UnpackFilter();
+ Filters.push(filter);
+ stackFilter.ParentFilter = (Filters.length - 1);
+ OldFilterLengths.push(0); // OldFilterLengths.Add(1)
+ filter.ExecCount = 0;
+ } else { // filter was used in the past
+ filter = Filters[filtPos];
+ stackFilter.ParentFilter = filtPos;
+ filter.ExecCount++;
+ }
+
+ var emptyCount = 0;
+ for (i = 0; i < PrgStack.length; ++i) {
+ PrgStack[i - emptyCount] = PrgStack[i];
+
+ if (PrgStack[i] === null) {
+ emptyCount++;
+ }
+ if (emptyCount > 0) {
+ PrgStack[i] = null;
+ }
+ }
+
+ if (emptyCount === 0) {
+ PrgStack.push(null); //PrgStack.Add(1);
+ emptyCount = 1;
+ }
+
+ var stackPos = PrgStack.length - emptyCount;
+ PrgStack[stackPos] = stackFilter;
+ stackFilter.ExecCount = filter.ExecCount;
+
+ var blockStart = RarVM.readData(bstream);
+ if (firstByte & 0x40) {
+ blockStart += 258;
+ }
+ stackFilter.BlockStart = (blockStart + rBuffer.ptr) & MAXWINMASK;
+
+ if (firstByte & 0x20) {
+ stackFilter.BlockLength = RarVM.readData(bstream);
+ } else {
+ stackFilter.BlockLength = filtPos < OldFilterLengths.length ?
+ OldFilterLengths[filtPos] :
+ 0;
+ }
+ stackFilter.NextWindow = (wBuffer.ptr !== rBuffer.ptr) &&
+ (((wBuffer.ptr - rBuffer.ptr) & MAXWINMASK) <= blockStart);
+
+ OldFilterLengths[filtPos] = stackFilter.BlockLength;
+
+ for (i = 0; i < 7; ++i) {
+ stackFilter.Prg.InitR[i] = 0;
+ }
+ stackFilter.Prg.InitR[3] = VM_GLOBALMEMADDR;
+ stackFilter.Prg.InitR[4] = stackFilter.BlockLength;
+ stackFilter.Prg.InitR[5] = stackFilter.ExecCount;
+
+ // set registers to optional parameters if any
+ if (firstByte & 0x10) {
+ var initMask = bstream.readBits(7);
+ for (i = 0; i < 7; ++i) {
+ if (initMask & (1 << i)) {
+ stackFilter.Prg.InitR[i] = RarVM.readData(bstream);
+ }
+ }
+ }
+
+ if (newFilter) {
+ var vmCodeSize = RarVM.readData(bstream);
+ if (vmCodeSize >= 0x10000 || vmCodeSize === 0) {
+ return false;
+ }
+ vmCode = new Uint8Array(vmCodeSize);
+ for (i = 0; i < vmCodeSize; ++i) {
+ //if (Inp.Overflow(3))
+ // return(false);
+ vmCode[i] = bstream.readBits(8);
+ }
+ VM.prepare(vmCode, filter.Prg);
+ }
+ stackFilter.Prg.Cmd = filter.Prg.Cmd;
+ stackFilter.Prg.AltCmd = filter.Prg.Cmd;
+
+ var staticDataSize = filter.Prg.StaticData.length;
+ if (staticDataSize > 0 && staticDataSize < VM_GLOBALMEMSIZE) {
+ // read statically defined data contained in DB commands
+ for (i = 0; i < staticDataSize; ++i) {
+ stackFilter.Prg.StaticData[i] = filter.Prg.StaticData[i];
+ }
+ }
+
+ if (stackFilter.Prg.GlobalData.length < VM_FIXEDGLOBALSIZE) {
+ stackFilter.Prg.GlobalData = new Uint8Array(VM_FIXEDGLOBALSIZE);
+ }
+
+ var globalData = stackFilter.Prg.GlobalData;
+ for (i = 0; i < 7; ++i) {
+ VM.setLowEndianValue(globalData, stackFilter.Prg.InitR[i], i * 4);
+ }
+
+ VM.setLowEndianValue(globalData, stackFilter.BlockLength, 0x1c);
+ VM.setLowEndianValue(globalData, 0, 0x20);
+ VM.setLowEndianValue(globalData, stackFilter.ExecCount, 0x2c);
+ for (i = 0; i < 16; ++i) {
+ globalData[0x30 + i] = 0;
+ }
+
+ // put data block passed as parameter if any
+ if (firstByte & 8) {
+ //if (Inp.Overflow(3))
+ // return(false);
+ var dataSize = RarVM.readData(bstream);
+ if (dataSize > (VM_GLOBALMEMSIZE - VM_FIXEDGLOBALSIZE)) {
+ return (false);
+ }
+
+ var curSize = stackFilter.Prg.GlobalData.length;
+ if (curSize < dataSize + VM_FIXEDGLOBALSIZE) {
+ // Resize global data and update the stackFilter and local variable.
+ var numBytesToAdd = dataSize + VM_FIXEDGLOBALSIZE - curSize;
+ var newGlobalData = new Uint8Array(globalData.length + numBytesToAdd);
+ newGlobalData.set(globalData);
+
+ stackFilter.Prg.GlobalData = newGlobalData;
+ globalData = newGlobalData;
+ }
+ //byte *GlobalData=&StackFilter->Prg.GlobalData[VM_FIXEDGLOBALSIZE];
+ for (i = 0; i < dataSize; ++i) {
+ //if (Inp.Overflow(3))
+ // return(false);
+ globalData[VM_FIXEDGLOBALSIZE + i] = bstream.readBits(8);
+ }
+ }
+
+ return true;
+}
+
+
+/**
+ * @param {!bitjs.io.BitStream} bstream
+ */
+function rarReadVMCode(bstream) {
+ var firstByte = bstream.readBits(8);
+ var length = (firstByte & 7) + 1;
+ if (length === 7) {
+ length = bstream.readBits(8) + 7;
+ } else if (length === 8) {
+ length = bstream.readBits(16);
+ }
+
+ // Read all bytes of VM code into an array.
+ var vmCode = new Uint8Array(length);
+ for (var i = 0; i < length; i++) {
+ // Do something here with checking readbuf.
+ vmCode[i] = bstream.readBits(8);
+ }
+ return rarAddVMCode(firstByte, vmCode);
+}
+
+/**
+ * Unpacks the bit stream into rBuffer using the Unpack29 algorithm.
+ * @param {bitjs.io.BitStream} bstream
+ * @param {boolean} Solid
+ */
+function unpack29(bstream) {
+ // lazy initialize rDDecode and rDBits
+
+ var DDecode = new Array(rDC);
+ var DBits = new Array(rDC);
+ var Distance = 0;
+ var Length = 0;
+ var Dist = 0, BitLength = 0, Slot = 0;
+ var I;
+ for (I = 0; I < rDBitLengthCounts.length; I++, BitLength++) {
+ for (var J = 0; J < rDBitLengthCounts[I]; J++, Slot++, Dist += (1 << BitLength)) {
+ DDecode[Slot] = Dist;
+ DBits[Slot] = BitLength;
+ }
+ }
+
+ var Bits;
+ //tablesRead = false;
+
+ rOldDist = [0, 0, 0, 0];
+
+ lastDist = 0;
+ lastLength = 0;
+ var i;
+ for (i = UnpOldTable.length; i--;) {
+ UnpOldTable[i] = 0;
+ }
+
+ // read in Huffman tables
+ rarReadTables(bstream);
+
+ while (true) {
+ var num = rarDecodeNumber(bstream, LD);
+
+ if (num < 256) {
+ rBuffer.insertByte(num);
+ continue;
+ }
+ if (num >= 271) {
+ Length = rLDecode[num -= 271] + 3;
+ if ((Bits = rLBits[num]) > 0) {
+ Length += bstream.readBits(Bits);
+ }
+ var DistNumber = rarDecodeNumber(bstream, DD);
+ Distance = DDecode[DistNumber] + 1;
+ if ((Bits = DBits[DistNumber]) > 0) {
+ if (DistNumber > 9) {
+ if (Bits > 4) {
+ Distance += ((bstream.getBits() >>> (20 - Bits)) << 4);
+ bstream.readBits(Bits - 4);
+ //todo: check this
+ }
+ if (lowDistRepCount > 0) {
+ lowDistRepCount--;
+ Distance += prevLowDist;
+ } else {
+ var LowDist = rarDecodeNumber(bstream, LDD);
+ if (LowDist === 16) {
+ lowDistRepCount = rLowDistRepCount - 1;
+ Distance += prevLowDist;
+ } else {
+ Distance += LowDist;
+ prevLowDist = LowDist;
+ }
+ }
+ } else {
+ Distance += bstream.readBits(Bits);
+ }
+ }
+ if (Distance >= 0x2000) {
+ Length++;
+ if (Distance >= 0x40000) {
+ Length++;
+ }
+ }
+ rarInsertOldDist(Distance);
+ rarInsertLastMatch(Length, Distance);
+ rarCopyString(Length, Distance);
+ continue;
+ }
+ if (num === 256) {
+ if (!rarReadEndOfBlock(bstream)) {
+ break;
+ }
+ continue;
+ }
+ if (num === 257) {
+ if (!rarReadVMCode(bstream)) {
+ break;
+ }
+ continue;
+ }
+ if (num === 258) {
+ if (lastLength !== 0) {
+ rarCopyString(lastLength, lastDist);
+ }
+ continue;
+ }
+ if (num < 263) {
+ var DistNum = num - 259;
+ Distance = rOldDist[DistNum];
+
+ for (var I2 = DistNum; I2 > 0; I2--) {
+ rOldDist[I2] = rOldDist[I2 - 1];
+ }
+ rOldDist[0] = Distance;
+
+ var LengthNumber = rarDecodeNumber(bstream, RD);
+ Length = rLDecode[LengthNumber] + 2;
+ if ((Bits = rLBits[LengthNumber]) > 0) {
+ Length += bstream.readBits(Bits);
+ }
+ rarInsertLastMatch(Length, Distance);
+ rarCopyString(Length, Distance);
+ continue;
+ }
+ if (num < 272) {
+ Distance = rSDDecode[num -= 263] + 1;
+ if ((Bits = rSDBits[num]) > 0) {
+ Distance += bstream.readBits(Bits);
+ }
+ rarInsertOldDist(Distance);
+ rarInsertLastMatch(2, Distance);
+ rarCopyString(2, Distance);
+ continue;
+ }
+ } // while (true)
+ rarUpdateProgress();
+ rarWriteBuf();
+}
+
+/**
+ * Does stuff to the current byte buffer (rBuffer) based on
+ * the filters loaded into the RarVM and writes out to wBuffer.
+ */
+function rarWriteBuf() {
+ var writeSize = (rBuffer.ptr & MAXWINMASK);
+ var j;
+ var flt;
+ for (var i = 0; i < PrgStack.length; ++i) {
+ flt = PrgStack[i];
+ if (flt === null) {
+ continue;
+ }
+
+ if (flt.NextWindow) {
+ flt.NextWindow = false;
+ continue;
+ }
+
+ var blockStart = flt.BlockStart;
+ var blockLength = flt.BlockLength;
+ var parentPrg;
+
+ // WrittenBorder = wBuffer.ptr
+ if (((blockStart - wBuffer.ptr) & MAXWINMASK) < writeSize) {
+ if (wBuffer.ptr !== blockStart) {
+ // Copy blockStart bytes from rBuffer into wBuffer.
+ rarWriteArea(wBuffer.ptr, blockStart);
+ writeSize = (rBuffer.ptr - wBuffer.ptr) & MAXWINMASK;
+ }
+ if (blockLength <= writeSize) {
+ var blockEnd = (blockStart + blockLength) & MAXWINMASK;
+ if (blockStart < blockEnd || blockEnd === 0) {
+ VM.setMemory(0, rBuffer.data.subarray(blockStart, blockStart + blockLength), blockLength);
+ } else {
+ var firstPartLength = MAXWINSIZE - blockStart;
+ VM.setMemory(0, rBuffer.data.subarray(blockStart, blockStart + firstPartLength), firstPartLength);
+ VM.setMemory(firstPartLength, rBuffer.data, blockEnd);
+ }
+
+ parentPrg = Filters[flt.ParentFilter].Prg;
+ var prg = flt.Prg;
+
+ if (parentPrg.GlobalData.length > VM_FIXEDGLOBALSIZE) {
+ // Copy global data from previous script execution if any.
+ prg.GlobalData = new Uint8Array(parentPrg.GlobalData);
+ }
+
+ rarExecuteCode(prg);
+ var globalDataLen;
+
+ if (prg.GlobalData.length > VM_FIXEDGLOBALSIZE) {
+ // Save global data for next script execution.
+ globalDataLen = prg.GlobalData.length;
+ if (parentPrg.GlobalData.length < globalDataLen) {
+ parentPrg.GlobalData = new Uint8Array(globalDataLen);
+ }
+ parentPrg.GlobalData.set(
+ this.mem_.subarray(VM_FIXEDGLOBALSIZE, VM_FIXEDGLOBALSIZE + globalDataLen),
+ VM_FIXEDGLOBALSIZE);
+ } else {
+ parentPrg.GlobalData = new Uint8Array(0);
+ }
+
+ var filteredData = prg.FilteredData;
+
+ PrgStack[i] = null;
+ while (i + 1 < PrgStack.length) {
+ var nextFilter = PrgStack[i + 1];
+ if (nextFilter === null || nextFilter.BlockStart !== blockStart ||
+ nextFilter.BlockLength !== filteredData.length || nextFilter.NextWindow) {
+ break;
+ }
+
+ // Apply several filters to same data block.
+
+ VM.setMemory(0, filteredData, filteredData.length);
+
+ parentPrg = Filters[nextFilter.ParentFilter].Prg;
+ var nextPrg = nextFilter.Prg;
+
+ globalDataLen = parentPrg.GlobalData.length;
+ if (globalDataLen > VM_FIXEDGLOBALSIZE) {
+ // Copy global data from previous script execution if any.
+ nextPrg.GlobalData = new Uint8Array(globalDataLen);
+ nextPrg.GlobalData.set(parentPrg.GlobalData.subarray(VM_FIXEDGLOBALSIZE, VM_FIXEDGLOBALSIZE + globalDataLen), VM_FIXEDGLOBALSIZE);
+ }
+
+ rarExecuteCode(nextPrg);
+
+ if (nextPrg.GlobalData.length > VM_GLOBALMEMSIZE) {
+ // Save global data for next script execution.
+ globalDataLen = nextPrg.GlobalData.length;
+ if (parentPrg.GlobalData.length < globalDataLen) {
+ parentPrg.GlobalData = new Uint8Array(globalDataLen);
+ }
+ parentPrg.GlobalData.set(
+ this.mem_.subarray(VM_FIXEDGLOBALSIZE, VM_FIXEDGLOBALSIZE + globalDataLen),
+ VM_FIXEDGLOBALSIZE);
+ } else {
+ parentPrg.GlobalData = new Uint8Array(0);
+ }
+
+ filteredData = nextPrg.FilteredData;
+ i++;
+ PrgStack[i] = null;
+ } // while (i + 1 < PrgStack.length)
+
+ for (j = 0; j < filteredData.length; ++j) {
+ wBuffer.insertByte(filteredData[j]);
+ }
+ writeSize = (rBuffer.ptr - wBuffer.ptr) & MAXWINMASK;
+ } else { // if (blockLength <= writeSize)
+ for (j = i; j < PrgStack.length; ++j) {
+ flt = PrgStack[j];
+ if (flt !== null && flt.NextWindow) {
+ flt.NextWindow = false;
+ }
+ }
+ //WrPtr=WrittenBorder;
+ return;
+ }
+ } // if (((blockStart - wBuffer.ptr) & MAXWINMASK) < writeSize)
+ } // for (var i = 0; i < PrgStack.length; ++i)
+
+ // Write any remaining bytes from rBuffer to wBuffer;
+ rarWriteArea(wBuffer.ptr, rBuffer.ptr);
+
+ // Now that the filtered buffer has been written, swap it back to rBuffer.
+ rBuffer = wBuffer;
+}
+
+/**
+ * Copy bytes from rBuffer to wBuffer.
+ * @param {number} startPtr The starting point to copy from rBuffer.
+ * @param {number} endPtr The ending point to copy from rBuffer.
+ */
+function rarWriteArea(startPtr, endPtr) {
+ if (endPtr < startPtr) {
+ console.error("endPtr < startPtr, endPtr=" + endPtr + ", startPtr=" + startPtr);
+ // rarWriteData(startPtr, -(int)StartPtr & MAXWINMASK);
+ // RarWriteData(0, endPtr);
+ return;
+ } else if (startPtr < endPtr) {
+ rarWriteData(startPtr, endPtr - startPtr);
+ }
+}
+
+/**
+ * Writes bytes into wBuffer from rBuffer.
+ * @param {number} offset The starting point to copy bytes from rBuffer.
+ * @param {number} numBytes The number of bytes to copy.
+ */
+function rarWriteData(offset, numBytes) {
+ if (wBuffer.ptr >= rBuffer.data.length) {
+ return;
+ }
+ var leftToWrite = rBuffer.data.length - wBuffer.ptr;
+ if (numBytes > leftToWrite) {
+ numBytes = leftToWrite;
+ }
+ for (var i = 0; i < numBytes; ++i) {
+ wBuffer.insertByte(rBuffer.data[offset + i]);
+ }
+}
+
+/**
+ * @param {VM_PreparedProgram} prg
+ */
+function rarExecuteCode(prg) {
+ if (prg.GlobalData.length > 0) {
+ var writtenFileSize = wBuffer.ptr;
+ prg.InitR[6] = writtenFileSize;
+ VM.setLowEndianValue(prg.GlobalData, writtenFileSize, 0x24);
+ VM.setLowEndianValue(prg.GlobalData, (writtenFileSize >>> 32) >> 0, 0x28);
+ VM.execute(prg);
+ }
+}
+
+function rarReadEndOfBlock(bstream) {
+ rarUpdateProgress();
+
+ var NewTable = false,
+ NewFile = false;
+ if (bstream.readBits(1)) {
+ NewTable = true;
+ } else {
+ NewFile = true;
+ NewTable = !!bstream.readBits(1);
+ }
+ //tablesRead = !NewTable;
+ return !(NewFile || (NewTable && !rarReadTables(bstream)));
+}
+
+function rarInsertLastMatch(length, distance) {
+ lastDist = distance;
+ lastLength = length;
+}
+
+function rarInsertOldDist(distance) {
+ rOldDist.splice(3, 1);
+ rOldDist.splice(0, 0, distance);
+}
+
+/**
+ * Copies len bytes from distance bytes ago in the buffer to the end of the
+ * current byte buffer.
+ * @param {number} length How many bytes to copy.
+ * @param {number} distance How far back in the buffer from the current write
+ * pointer to start copying from.
+ */
+function rarCopyString(length, distance) {
+ var srcPtr = rBuffer.ptr - distance;
+ if (srcPtr < 0) {
+ var l = rOldBuffers.length;
+ while (srcPtr < 0) {
+ srcPtr = rOldBuffers[--l].data.length + srcPtr;
+ }
+ // TODO: lets hope that it never needs to read beyond file boundaries
+ while (length--) {
+ rBuffer.insertByte(rOldBuffers[l].data[srcPtr++]);
+ }
+ }
+ if (length > distance) {
+ while (length--) {
+ rBuffer.insertByte(rBuffer.data[srcPtr++]);
+ }
+ } else {
+ rBuffer.insertBytes(rBuffer.data.subarray(srcPtr, srcPtr + length));
+ }
+}
+
+/**
+ * @param {RarLocalFile} v
+ */
+function unpack(v) {
+ // TODO: implement what happens when unpVer is < 15
+ var Ver = v.header.unpVer <= 15 ? 15 : v.header.unpVer;
+ // var Solid = v.header.LHD_SOLID;
+ var bstream = new bitjs.io.BitStream(v.fileData.buffer, true /* rtl */, v.fileData.byteOffset, v.fileData.byteLength);
+
+ rBuffer = new bitjs.io.ByteBuffer(v.header.unpackedSize);
+
+ info("Unpacking " + v.filename + " RAR v" + Ver);
+
+ switch (Ver) {
+ case 15: // rar 1.5 compression
+ unpack15(); //(bstream, Solid);
+ break;
+ case 20: // rar 2.x compression
+ case 26: // files larger than 2GB
+ unpack20(bstream); //, Solid);
+ break;
+ case 29: // rar 3.x compression
+ case 36: // alternative hash
+ wBuffer = new bitjs.io.ByteBuffer(rBuffer.data.length);
+ unpack29(bstream);
+ break;
+ } // switch(method)
+
+ rOldBuffers.push(rBuffer);
+ // TODO: clear these old buffers when there's over 4MB of history
+ return rBuffer.data;
+}
+
+// bstream is a bit stream
+var RarLocalFile = function(bstream) {
+ this.header = new RarVolumeHeader(bstream);
+ this.filename = this.header.filename;
+
+ if (this.header.headType !== FILE_HEAD && this.header.headType !== ENDARC_HEAD && this.header.headType !== SERVICE_HEAD) {
+ this.isValid = false;
+ info("Error! RAR Volume did not include a FILE_HEAD header ");
+ } else {
+ // read in the compressed data
+ this.fileData = null;
+ if (this.header.packSize > 0) {
+ this.fileData = bstream.readBytes(this.header.packSize);
+ if (this.header.headType === FILE_HEAD) {
+ this.isValid = true;
+ }
+ }
+ }
+};
+
+RarLocalFile.prototype.unrar5 = function() {
+ //if (!this.header.flags.LHD_SPLIT_BEFORE) {
+ // unstore file
+ // No compression
+ if (this.header.method === 0x00) {
+ info("Unstore " + this.filename);
+ this.isValid = true;
+
+ currentBytesUnarchivedInFile += this.fileData.length;
+ currentBytesUnarchived += this.fileData.length;
+
+ // Create a new buffer and copy it over.
+ var len = this.header.packSize;
+ var newBuffer = new bitjs.io.ByteBuffer(len);
+ newBuffer.insertBytes(this.fileData);
+ this.fileData = newBuffer.data;
+ } else {
+ this.isValid = true;
+ this.fileData = unpack(this);
+ }
+ //}
+};
+
+var unrar5 = function(arrayBuffer) {
+ currentFilename = "";
+ currentFileNumber = 0;
+ currentBytesUnarchivedInFile = 0;
+ currentBytesUnarchived = 0;
+ totalUncompressedBytesInArchive = 0;
+ totalFilesInArchive = 0;
+
+ // postMessage(new bitjs.archive.UnarchiveStartEvent());
+ var bstream = new bitjs.io.BitStream(arrayBuffer, false /* rtl */);
+
+ var header = new RarMainVolumeHeader(bstream);
+ if (header.crc === 0x6152 &&
+ header.headType === 0x72 &&
+ header.flags.value === 0x1A21 &&
+ header.headSize === 7) {
+ info("Found RAR signature");
+
+ var mhead = new RarVolumeHeader(bstream);
+ if (mhead.headType !== MAIN_HEAD) {
+ info("Error! RAR did not include a MAIN_HEAD header");
+ } else {
+ var localFiles = [];
+ var localFile = null;
+ do {
+ try {
+ localFile = new RarLocalFile(bstream);
+ info("RAR localFile isValid=" + localFile.isValid + ", volume packSize=" + localFile.header.packSize);
+ if (localFile && localFile.isValid && localFile.header.packSize > 0) {
+ totalUncompressedBytesInArchive += localFile.header.unpackedSize;
+ localFiles.push(localFile);
+ } else if (localFile.header.packSize === 0 && localFile.header.unpackedSize === 0) {
+ localFile.isValid = true;
+ }
+ } catch (err) {
+ break;
+ }
+ //info("bstream" + bstream.bytePtr+"/"+bstream.bytes.length);
+ } while (localFile.isValid);
+ totalFilesInArchive = localFiles.length;
+
+ // now we have all information but things are unpacked
+ localFiles.sort(alphanumCase);
+
+ info(localFiles.map(function(a) {
+ return a.filename;
+ }).join(", "));
+ for (var i = 0; i < localFiles.length; ++i) {
+ var localfile = localFiles[i];
+
+ // update progress
+ currentFilename = localfile.header.filename;
+ currentBytesUnarchivedInFile = 0;
+
+ // actually do the unzipping
+ localfile.unrar5();
+
+ if (localfile.isValid) {
+ postMessage(new bitjs.archive.UnarchiveExtractEvent(localfile));
+ postProgress();
+ }
+ }
+
+ postProgress();
+ }
+ } else {
+ err("Invalid RAR file");
+ }
+ // postMessage(new bitjs.archive.UnarchiveFinishEvent());
+};
+
+// event.data.file has the ArrayBuffer.
+onmessage = function(event) {
+ var ab = event.data.file;
+ unrar5(ab, true);
+};
diff --git a/cps/static/js/caliBlur.js b/cps/static/js/caliBlur.js
index 53f033ba2..73e1c320d 100644
--- a/cps/static/js/caliBlur.js
+++ b/cps/static/js/caliBlur.js
@@ -15,299 +15,305 @@
* along with this program. If not, see .
*/
// Move advanced search to side-menu
-$( 'a[href*="advanced"]' ).parent().insertAfter( '#nav_new' );
-$( 'body' ).addClass('blur');
-$( 'body.stat' ).addClass( 'stats' );
-$( 'body.config' ).addClass( 'admin');
-$( 'body.uiconfig' ).addClass( 'admin');
-$( 'body.advsearch' ).addClass( 'advanced_search' );
-$( 'body.newuser' ).addClass( 'admin' );
-$( 'body.mailset' ).addClass( 'admin' );
+$("a[href*='advanced']").parent().insertAfter("#nav_new");
+$("body").addClass("blur");
+$("body.stat").addClass("stats");
+$("body.config").addClass("admin");
+$("body.uiconfig").addClass("admin");
+$("body.advsearch").addClass("advanced_search");
+$("body.newuser").addClass("admin");
+$("body.mailset").addClass("admin");
+$("body > div.container-fluid > div > div.col-sm-10 > div.filterheader").attr("style","margin: 40px 0 !important; padding: 0 10px 0 40px !important;");
+
// Back button
-curHref = window.location.href.split('/');
-prevHref = document.referrer.split('/');
-$( '.navbar-form.navbar-left' )
- .before( '' );
-if ( history.length === 1 ||
+curHref = window.location.href.split("/");
+prevHref = document.referrer.split("/");
+$(".navbar-form.navbar-left")
+ .before('');
+if (history.length === 1 ||
curHref[0] +
curHref[1] +
curHref[2] !=
prevHref[0] +
prevHref[1] +
prevHref[2] ||
- $( 'body.root' )>length > 0 ) {
- $( '.plexBack' ).addClass( 'noBack' );
+ $("body.root") > length > 0) {
+ $(".plexBack").addClass("noBack");
}
//Weird missing a after pressing back from edit.
-setTimeout(function() {
- if ( $( '.plexBack a').length < 1 ) {
- $( '.plexBack' ).append(' ');
- }
-},10);
+setTimeout(function () {
+ if ($(".plexBack a").length < 1) {
+ $(".plexBack").append(' ');
+ }
+}, 10);
// Home button
-$( '.plexBack' ).before( '
' );
-$( 'a.navbar-brand' ).clone().appendTo( '.home-btn' ).empty().removeClass('navbar-brand');
+$(".plexBack").before('
');
+$("a.navbar-brand").clone().appendTo(".home-btn").empty().removeClass("navbar-brand");
/////////////////////////////////
// Start of Book Details Work //
///////////////////////////////
// Wrap book description in div container
-if ( $( 'body.book' ).length > 0 ) {
+if ($("body.book").length > 0) {
- description = $( '.comments' );
- bookInfo = $( ".author" ).nextUntil("#decription");
- $("#decription").detach();
- $( '.comments' ).detach();
- $( bookInfo ).wrapAll( '
' );
+ description = $(".comments");
+ bookInfo = $(".author").nextUntil("#decription");
+ $("#decription").detach();
+ $(".comments").detach();
+ $(bookInfo).wrapAll('
');
// $( 'h3:contains("Description:")' ).after( '
' );
- $( '.languages' ).appendTo( '.bookinfo' );
- $('.hr').detach();
- if ( $( '.identifiers ').length > 0 ) {
- console.log(".identifiers length " + $( '.identifiers ').length );
- $( '.identifiers' ).before( '
' );
+ $(".languages").appendTo(".bookinfo");
+ $(".hr").detach();
+ if ($(".identifiers ").length > 0) {
+ console.log(".identifiers length " + $(".identifiers").length);
+ $('.identifiers').before('
');
} else {
- if ( $( '.bookinfo > p:first-child' ).length > 0 ) {
- console.log(".bookinfo > p:first-child length " + $( '.bookinfo > p' ).length );
- $( '.bookinfo > p:first-child' ).first().after( '
' );
- } else{
- if ( $( '.bookinfo a[href*="/series/"]' ).length > 0 ) {
- console.log( 'series text found; placing hr below series' );
- $( '.bookinfo a[href*="/series/"]' ).parent().after( '
' );
+ if ($(".bookinfo > p:first-child").length > 0) {
+ console.log(".bookinfo > p:first-child length " + $(".bookinfo > p").length);
+ $(".bookinfo > p:first-child").first().after('
');
} else {
- console.log("prepending hr div to top of .bookinfo");
- $( '.bookinfo' ).prepend( '
' );
- }
+ if ($('.bookinfo a[href*="/series/"]').length > 0) {
+ console.log("series text found; placing hr below series");
+ $('.bookinfo a[href*="/series/"]').parent().after('
');
+ } else {
+ console.log("prepending hr div to top of .bookinfo");
+ $(".bookinfo").prepend('
');
+ }
+ }
}
- }
- $( '.rating' ).insertBefore( '.hr' );
- $( '#remove-from-shelves' ).insertAfter( '.hr' );
- $( description ).appendTo('.bookinfo')
- /* if book description is not in html format, Remove extra line breaks
- Remove blank lines/unnecessary spaces, split by line break to array
- Push array into .description div. If there is still a wall of text,
- find sentences and split wall into groups of three sentence paragraphs.
- If the book format is in html format, Keep html, but strip away inline
- styles and empty elements */
+ $(".rating").insertBefore(".hr");
+ $("#remove-from-shelves").insertAfter(".hr");
+ $(description).appendTo(".bookinfo")
+ /* if book description is not in html format, Remove extra line breaks
+ Remove blank lines/unnecessary spaces, split by line break to array
+ Push array into .description div. If there is still a wall of text,
+ find sentences and split wall into groups of three sentence paragraphs.
+ If the book format is in html format, Keep html, but strip away inline
+ styles and empty elements */
- // If text is sitting in div as text node
- if ( $('.comments:has(p)' ).length === 0 ) {
- newdesc = description.text()
- .replace(/^(?=\n)$|^\s*|\s*$|\n\n+/gm,"").split(/\n/);
- $('.comments' ).empty();
- $.each(newdesc, function(i, val) {
- $( 'div.comments' ).append( '' + newdesc[i] + '
' );
+ // If text is sitting in div as text node
+ if ($(".comments:has(p)").length === 0) {
+ newdesc = description.text()
+ .replace(/^(?=\n)$|^\s*|\s*$|\n\n+/gm, "").split(/\n/);
+ $(".comments").empty();
+ $.each(newdesc, function (i, val) {
+ $("div.comments").append("" + newdesc[i] + "
");
+ });
+ $(".comments").fadeIn(100);
+ } //If still a wall of text create 3 sentence paragraphs.
+ if ($(".comments p").length === 1) {
+ if (description.context != undefined) {
+ newdesc = description.text()
+ .replace(/^(?=\n)$|^\s*|\s*$|\n\n+/gm, "").split(/\n/);
+ } else {
+ newdesc = description.text();
+ }
+ doc = nlp(newdesc.toString());
+ sentences = doc.map((m) => m.out("text"));
+ sentences[0] = sentences[0].replace(",", "");
+ $(".comments p").remove();
+ let size = 3;
+ let sentenceChunks = [];
+ for (var i = 0; i < sentences.length; i += size) {
+ sentenceChunks.push(sentences.slice(i, i + size));
+ }
+ let output = '';
+ $.each(sentenceChunks, function (i, val) {
+ let preOutput = '';
+ $.each(val, function (i, val) {
+ preOutput += val;
+ });
+ output += "" + preOutput + "
";
+ });
+ $("div.comments").append(output);
+ } else {
+ $.each(description, function (i, val) {
+// $( description[i].outerHTML ).appendTo( ".comments" );
+ $("div.comments :empty").remove();
+ $("div.comments ").attr("style", "");
+ });
+ $("div.comments").fadeIn(100);
+ }
+
+ // Sexy blurred backgrounds
+ cover = $(".cover img").attr("src");
+ $("#loader + .container-fluid")
+ .prepend("
");
+ $(".blur-wrapper")
+ .prepend('');
+
+ // Fix-up book detail headings
+ publisher = $(".publishers p span").text().split(":");
+ $(".publishers p span").remove();
+ $.each(publisher, function (i, val) {
+ $(".publishers").append("" + publisher[i] + " ");
});
- $( '.comments' ).fadeIn(100);
- } //If still a wall of text create 3 sentence paragraphs.
- if( $( '.comments p' ).length === 1 ) {
- if ( description.context != undefined ) {
- newdesc = description.text()
- .replace(/^(?=\n)$|^\s*|\s*$|\n\n+/gm,"").split(/\n/);
- }
- else {
- newdesc = description.text();
- }
- doc = nlp ( newdesc.toString() );
- sentences = doc.map((m)=> m.out( 'text' ));
- sentences[0] = sentences[0].replace(",","");
- $( '.comments p' ).remove();
- let size = 3; let sentenceChunks = [];
- for (var i=0; i' + preOutput + '
';
- });
- $( 'div.comments' ).append( output );
- }
- else {
- $.each(description, function(i, val) {
-// $( description[i].outerHTML ).appendTo( '.comments' );
- $( 'div.comments :empty' ).remove();
- $( 'div.comments ').attr( 'style', '' );
- });
- $( 'div.comments' ).fadeIn( 100 );
- }
-
- // Sexy blurred backgrounds
- cover = $( '.cover img' ).attr( 'src' );
- $( '#loader + .container-fluid' )
- .prepend( '
' );
-
- // Fix-up book detail headings
- publisher = $( '.publishers p span' ).text().split( ':' );
- $( '.publishers p span' ).remove();
- $.each(publisher, function(i, val) {
- $( '.publishers' ).append( '' + publisher[i] + ' ' );
+ $(".publishers span:nth-child(3)").text(function () {
+ return $(this).text().replace(/^\s+|^\t+|\t+|\s+$/g, "");
});
- $( '.publishers span:nth-child(3)' ).text(function() {
- return $(this).text().replace(/^\s+|^\t+|\t+|\s+$/g, "");
- });
- // Fix-up book custom colums headings
- // real_custom_column = $( '.real_custom_columns' ).text().split( ':' );
- real_custom_column = $( '.real_custom_columns' );
- // $( '.real_custom_columns' ).remove();
- $.each(real_custom_column, function(i, val) {
- real_cc = $(this).text().split( ':' );
- $( this ).text("");
- if (real_cc.length > 1) {
- $( this ).append( '' + real_cc[0] + ' ' + real_cc[1] + ' ' );
+ // Fix-up book custom colums headings
+ // real_custom_column = $( '.real_custom_columns' ).text().split( ':' );
+ real_custom_column = $(".real_custom_columns");
+ // $( ".real_custom_columns" ).remove();
+ $.each(real_custom_column, function (i, val) {
+ var split = $(this).text().split(":");
+ real_cc_key = split.shift();
+ real_cc_value = split.join(":");
+ $(this).text("");
+ if (real_cc_value != "") {
+ $(this).append("" + real_cc_key + " " + real_cc_value + " ");
}
});
- //$( '.real_custom_columns:nth-child(3)' ).text(function() {
- //return $(this).text().replace(/^\s+|^\t+|\t+|\s+$/g, "");
- //});
+ //$( '.real_custom_columns:nth-child(3)' ).text(function() {
+ //return $(this).text().replace(/^\s+|^\t+|\t+|\s+$/g, "");
+ //});
- published = $( '.publishing-date p' )
- .text().split(': ');
- $( '.publishing-date p' ).remove();
- $.each(published, function(i, val) {
- $( '.publishing-date' ).append( '' + published[i] + ' ' );
- });
-
- languages = $( '.languages p span' ).text().split( ': ' );
- $( '.languages p span' ).remove();
- $.each(languages, function(i, val) {
- $( '.languages' ).append( '' + languages[i] + ' ' );
- });
-
- $( '.book-meta h2:first' ).clone()
- .prependTo( '.book-meta > .btn-toolbar:first' );
-
- // If only one download type exists still put the items into a drop-drown list.
- downloads = $( 'a[id^=btnGroupDrop]' ).get();
- if ( $( downloads ).length === 1 ) {
- $( ' Download : ' ).insertBefore( downloads[downloads.length-1] );
- $( downloads ).detach();
- $.each(downloads, function(i, val) {
- $( '' + downloads[i].outerHTML + ' ' ).appendTo( '.leramslist' );
+ published = $(".publishing-date p")
+ .text().split(": ");
+ $(".publishing-date p").remove();
+ $.each(published, function (i, val) {
+ $(".publishing-date").append("" + published[i] + " ");
});
- $( '.leramslist' ).find( 'span' ).remove();
- $( '.leramslist a' ).removeClass( 'btn btn-primary' ).removeAttr( 'role' );
- }
- // Add classes to buttons
- $( '#sendbtn' ).parent().addClass( 'sendBtn' );
- $( '[id*=btnGroupDrop]' ).parent().addClass( 'downloadBtn' );
- $( 'read-in-browser' ).parent().addClass( 'readBtn' );
- $( '.downloadBtn button:first' ).addClass( 'download-text' );
+ languages = $(".languages p span").text().split(": ");
+ $(".languages p span").remove();
+ $.each(languages, function (i, val) {
+ $(".languages").append("" + languages[i] + " ");
+ });
- // Move all options in book details page to the same group
- $( '[aria-label*="Delete book"]' )
- .prependTo( '[aria-label^="Download, send"]' )
- .children().removeClass( 'btn-sm' );
- $( '.custom_columns' )
- .addClass(' btn-group' )
- .attr('role', 'group' )
- .removeClass( 'custom_columns' )
- .prependTo( '[aria-label^="Download, send"]' );
- $( '#have_read_cb' )
- .after( ' ' );
- $( '#shelf-actions' ).prependTo( '[aria-label^="Download, send"]' );
+ $(".book-meta h2:first").clone()
+ .prependTo(".book-meta > .btn-toolbar:first");
-
- // Move dropdown lists higher in dom, replace bootstrap toggle with own toggle.
- $( 'ul[aria-labelledby="read-in-browser"]' ).insertBefore( '.blur-wrapper' ).addClass('readinbrowser-drop');
- $( 'ul[aria-labelledby="send-to-kindle"]' ).insertBefore( '.blur-wrapper' ).addClass('sendtokindle-drop');
- $( '.leramslist' ).insertBefore( '.blur-wrapper' );
- $( 'ul[aria-labelledby="btnGroupDrop1"]' ).insertBefore( '.blur-wrapper' ).addClass('leramslist');
- $( '#add-to-shelves' ).insertBefore( '.blur-wrapper' );
-
- $( '#read-in-browser' ).click( function() {
- $( '.readinbrowser-drop' ).toggle();
- });
-
- $('.downloadBtn' ).click( function() {
- $( '.leramslist' ).toggle();
- });
-
- $('#sendbtn2' ).click( function() {
- $( '.sendtokindle-drop' ).toggle();
- });
-
-
- $('div[aria-label="Add to shelves"]' ).click( function() {
- $( '#add-to-shelves' ).toggle();
- });
-
- // Fix formatting error on book detail languages
- if ( !$( '.book-meta > .bookinfo > .languages > span:last-of-type' ).text().startsWith(" ") ) {
- $( '.book-meta > .bookinfo > .languages > span:last-of-type' ).prepend(" ");
- }
-
- //Work to reposition dropdowns. Does not currently solve for
- //screen resizing
- function dropdownToggle() {
-
- topPos = $( '.book-meta > .btn-toolbar:first' ).offset().top
-
- if ( $( '#read-in-browser' ).length > 0 ) {
- position = $( '#read-in-browser' ).offset().left
- if ( position + $( '.readinbrowser-drop' ).width() > $( window ).width() ) {
- positionOff = position + $( '.readinbrowser-drop' ).width() - $( window ).width();
- ribPosition = position - positionOff - 5
- $( '.readinbrowser-drop' ).attr("style", "left: " + ribPosition + "px !important; right: auto; top: " + topPos + "px");
- } else {
- $( '.readinbrowser-drop' ).attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px");
- }
+ // If only one download type exists still put the items into a drop-drown list.
+ downloads = $("a[id^=btnGroupDrop]").get();
+ if ($(downloads).length === 1) {
+ $(' Download : ').insertBefore(downloads[downloads.length - 1]);
+ $(downloads).detach();
+ $.each(downloads, function (i, val) {
+ $("" + downloads[i].outerHTML + " ").appendTo(".leramslist");
+ });
+ $(".leramslist").find("span").remove();
+ $(".leramslist a").removeClass("btn btn-primary").removeAttr("role");
}
- if ( $( '#sendbtn2' ).length > 0 ) {
- position = $( '#sendbtn2' ).offset().left
- if ( position + $( '.sendtokindle-drop' ).width() > $( window ).width() ) {
- positionOff = position + $( '.sendtokindle-drop' ).width() - $( window ).width();
- ribPosition = position - positionOff - 5
- $( '.sendtokindle-drop' ).attr("style", "left: " + ribPosition + "px !important; right: auto; top: " + topPos + "px");
- } else {
- $( '.sendtokindle-drop' ).attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px");
- }
+ // Add classes to buttons
+ $("#sendbtn").parent().addClass("sendBtn");
+ $("[id*=btnGroupDrop]").parent().addClass("downloadBtn");
+ $("read-in-browser").parent().addClass("readBtn");
+ $(".downloadBtn button:first").addClass("download-text");
+
+ // Move all options in book details page to the same group
+ $("[aria-label*='Delete book']")
+ .prependTo('[aria-label^="Download, send"]')
+ .children().removeClass("btn-sm");
+ $(".custom_columns")
+ .addClass(" btn-group")
+ .attr("role", "group")
+ .removeClass("custom_columns")
+ .prependTo('[aria-label^="Download, send"]');
+ $("#have_read_cb")
+ .after(' ');
+ $("#archived_cb")
+ .after(' ');
+ $("#shelf-actions").prependTo('[aria-label^="Download, send"]');
+
+
+ // Move dropdown lists higher in dom, replace bootstrap toggle with own toggle.
+ $('ul[aria-labelledby="read-in-browser"]').insertBefore(".blur-wrapper").addClass("readinbrowser-drop");
+ $('ul[aria-labelledby="send-to-kindle"]').insertBefore(".blur-wrapper").addClass("sendtokindle-drop");
+ $(".leramslist").insertBefore(".blur-wrapper");
+ $('ul[aria-labelledby="btnGroupDrop1"]').insertBefore(".blur-wrapper").addClass("leramslist");
+ $("#add-to-shelves").insertBefore(".blur-wrapper");
+
+ $("#read-in-browser").click(function () {
+ $(".readinbrowser-drop").toggle();
+ });
+
+ $(".downloadBtn").click(function () {
+ $(".leramslist").toggle();
+ });
+
+ $("#sendbtn2").click(function () {
+ $(".sendtokindle-drop").toggle();
+ });
+
+
+ $('div[aria-label="Add to shelves"]').click(function () {
+ $("#add-to-shelves").toggle();
+ });
+
+ // Fix formatting error on book detail languages
+ if (!$(".book-meta > .bookinfo > .languages > span:last-of-type").text().startsWith(" ")) {
+ $(".book-meta > .bookinfo > .languages > span:last-of-type").prepend(" ");
}
- if ( $( '.downloadBtn' ).length > 0 ) {
+ //Work to reposition dropdowns. Does not currently solve for
+ //screen resizing
+ function dropdownToggle() {
- position = $( '#btnGroupDrop1' ).offset().left
+ topPos = $(".book-meta > .btn-toolbar:first").offset().top
- if ( position + $( '.leramslist' ).width() > $( window ).width() ) {
- positionOff = position + $( '.leramslist' ).width() - $( window ).width();
- dlPosition = position - positionOff - 5
- $( '.leramslist' ).attr("style", "left: " + dlPosition + "px !important; right: auto; top: " + topPos + "px");
- } else {
- $( '.leramslist' ).attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px");
- }
+ if ($("#read-in-browser").length > 0) {
+ position = $("#read-in-browser").offset().left
+ if (position + $(".readinbrowser-drop").width() > $(window).width()) {
+ positionOff = position + $(".readinbrowser-drop").width() - $(window).width();
+ ribPosition = position - positionOff - 5
+ $(".readinbrowser-drop").attr("style", "left: " + ribPosition + "px !important; right: auto; top: " + topPos + "px");
+ } else {
+ $(".readinbrowser-drop").attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px");
+ }
+ }
+
+ if ($("#sendbtn2").length > 0) {
+ position = $("#sendbtn2").offset().left
+ if (position + $(".sendtokindle-drop").width() > $(window).width()) {
+ positionOff = position + $(".sendtokindle-drop").width() - $(window).width();
+ ribPosition = position - positionOff - 5
+ $(".sendtokindle-drop").attr("style", "left: " + ribPosition + "px !important; right: auto; top: " + topPos + "px");
+ } else {
+ $(".sendtokindle-drop").attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px");
+ }
+ }
+
+ if ($(".downloadBtn").length > 0) {
+
+ position = $("#btnGroupDrop1").offset().left
+
+ if (position + $(".leramslist").width() > $(window).width()) {
+ positionOff = position + $(".leramslist").width() - $(window).width();
+ dlPosition = position - positionOff - 5
+ $(".leramslist").attr("style", "left: " + dlPosition + "px !important; right: auto; top: " + topPos + "px");
+ } else {
+ $(".leramslist").attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px");
+ }
+ }
+
+ if ($('div[aria-label="Add to shelves"]').length > 0) {
+
+ position = $('div[aria-label="Add to shelves"]').offset().left
+
+ if (position + $("#add-to-shelves").width() > $(window).width()) {
+ positionOff = position + $("#add-to-shelves").width() - $(window).width();
+ adsPosition = position - positionOff - 5
+ $("#add-to-shelves").attr("style", "left: " + adsPosition + "px !important; right: auto; top: " + topPos + "px");
+ } else {
+ $("#add-to-shelves").attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px");
+ }
+ }
}
- if ( $( 'div[aria-label="Add to shelves"]' ).length > 0 ) {
-
- position = $( 'div[aria-label="Add to shelves"]' ).offset().left
-
- if ( position + $( '#add-to-shelves' ).width() > $( window ).width() ) {
- positionOff = position + $( '#add-to-shelves' ).width() - $( window ).width();
- adsPosition = position - positionOff - 5
- $( '#add-to-shelves' ).attr("style", "left: " + adsPosition + "px !important; right: auto; top: " + topPos + "px");
- } else {
- $( '#add-to-shelves' ).attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px");
- }
- }
- }
- dropdownToggle();
-
- $( window ).on( 'resize', function() {
dropdownToggle();
- });
+
+ $(window).on("resize", function () {
+ dropdownToggle();
+ });
// Clone book rating for mobile view.
-$( '.book-meta > .bookinfo > .rating' ).clone().insertBefore( '.book-meta > .description' ).addClass('rating-mobile');
+ $(".book-meta > .bookinfo > .rating").clone().insertBefore(".book-meta > .description").addClass("rating-mobile");
}
///////////////////////////////
@@ -320,80 +326,77 @@ $( '.book-meta > .bookinfo > .rating' ).clone().insertBefore( '.book-meta > .des
// Hide dropdown and collapse menus on click-off
$(document).mouseup(function (e) {
- var container = new Array();
- container.push($('ul[aria-labelledby="read-in-browser"]'));
- container.push($('.sendtokindle-drop'));
- container.push($('.leramslist'));
- container.push($('#add-to-shelves'));
- container.push($('.navbar-collapse.collapse.in'));
+ var container = new Array();
+ container.push($('ul[aria-labelledby="read-in-browser"]'));
+ container.push($(".sendtokindle-drop"));
+ container.push($(".leramslist"));
+ container.push($("#add-to-shelves"));
+ container.push($(".navbar-collapse.collapse.in"));
- $.each(container, function(key, value) {
- if (!$(value).is(e.target) // if the target of the click isn't the container...
- && $(value).has(e.target).length === 0) // ... nor a descendant of the container
- {
- if ( $(value).hasClass('dropdown-menu') )
- {
- $(value).hide();
- } else
- {
- if ( $(value).hasClass('collapse') )
+ $.each(container, function (key, value) {
+ if (!$(value).is(e.target) // if the target of the click isn't the container...
+ && $(value).has(e.target).length === 0) // ... nor a descendant of the container
{
- $(value).collapse('toggle');
+ if ($(value).hasClass("dropdown-menu")) {
+ $(value).hide();
+ } else {
+ if ($(value).hasClass("collapse")) {
+ $(value).collapse("toggle");
+ }
+ }
}
- }
- }
- });
+ });
});
// Split path name to array and remove blanks
url = window.location.pathname
// Move create shelf
-$( '#nav_createshelf' ).prependTo( '.your-shelves' );
+$("#nav_createshelf").prependTo(".your-shelves");
// Create drop-down for profile and move elements to it
-$( '#main-nav' )
- .prepend( ' ' );
-$( '#top_user' ).parent().addClass( 'dropdown' ).appendTo( '.profileDropli' );
-$( '#nav_about' ).addClass( 'dropdown' ).appendTo( '.profileDropli' );
-$( '#register' ).parent().addClass( 'dropdown' ).appendTo( '.profileDropli' );
-$( '#logout' ).parent().addClass( 'dropdown' ).appendTo( '.profileDropli' );
+$("#main-nav")
+ .prepend(' ');
+$("#top_user").parent().addClass("dropdown").appendTo(".profileDropli");
+$("#nav_about").addClass("dropdown").appendTo(".profileDropli");
+$("#register").parent().addClass("dropdown").appendTo(".profileDropli");
+$("#logout").parent().addClass("dropdown").appendTo(".profileDropli");
// Remove the modals except from some areas where they are needed
-bodyClass = $( 'body' ).attr( 'class' ).split(' ');
-modalWanted = ['admin', 'editbook', 'config', 'uiconfig'];
+bodyClass = $("body").attr("class").split(" ");
+modalWanted = ["admin", "editbook", "config", "uiconfig", "me", "edituser"];
-if ( $.inArray( bodyClass[0], modalWanted) != -1 ) {
+if ($.inArray(bodyClass[0], modalWanted) != -1) {
} else {
- $(' a:not(.dropdown-toggle) ')
- .removeAttr( 'data-toggle', 'data-target', 'data-remote' );
+ $(" a:not(.dropdown-toggle) ")
+ .removeAttr("data-toggle", "data-target", "data-remote");
}
// Add classes to global buttons
-$( '#top_tasks' ).parent().addClass( 'top_tasks' );
-$( '#top_admin' ).parent().addClass( 'top_admin' );
-$( '#form-upload' ).parent().addClass( 'form-upload' );
+$("#top_tasks").parent().addClass("top_tasks");
+$("#top_admin").parent().addClass("top_admin");
+$("#form-upload").parent().addClass("form-upload");
// Search button work
-$( 'input#query' ).focus(function() {
- $( 'form[role="search"]' ).addClass( 'search-focus' );
+$("input#query").focus(function () {
+ $('form[role="search"]').addClass("search-focus");
});
-$( 'input#query' ).focusout(function() {
- setTimeout(function() {
- $( 'form[role="search"]' ).removeClass( 'search-focus' );
- }, 100);
+$("input#query").focusout(function () {
+ setTimeout(function () {
+ $('form[role="search"]').removeClass("search-focus");
+ }, 100);
});
// Check if dropdown goes out of viewport and add class
-$(document).on('click','.dropdown-toggle',function() {
- // Add .offscreen if part of container not visible
- $('.dropdown-menu:visible').filter(function(){
- return $(this).visible() === false;
- }).each(function(){
- $(this).addClass('offscreen');
- });
+$(document).on("click", ".dropdown-toggle", function () {
+ // Add .offscreen if part of container not visible
+ $(".dropdown-menu:visible").filter(function () {
+ return $(this).visible() === false;
+ }).each(function () {
+ $(this).addClass("offscreen");
+ });
});
// Fade out content on page unload
@@ -422,302 +425,347 @@ $(document).on('click','.dropdown-toggle',function() {
});*/
// Collapse long text into read-more
-$( 'div.comments' ).readmore( {
- collapsedHeight: 134,
- heightMargin: 45,
- speed: 300,
- moreLink: 'READ MORE ', // ToDo: make translateable
- lessLink: 'READ LESS ', // ToDo: make translateable
+$("div.comments").readmore({
+ collapsedHeight: 134,
+ heightMargin: 45,
+ speed: 300,
+ moreLink: 'READ MORE ', // ToDo: make translateable
+ lessLink: 'READ LESS ', // ToDo: make translateable
});
/////////////////////////////////
// End of Global Work //
///////////////////////////////
// Author Page Background Blur
-if ( $( 'body.author' ).length >0 ) {
- cover = $( '.author-bio img' ).attr( 'src' );
- $( '#loader + .container-fluid' )
- .prepend( '
' );
- $( '.blur-wrapper' ).prepend( ' ' );
- // Place undefined cover images inside container
- if ( $( '.bg-blur[src="undefined"]' ).length > 0 ) {
- $( '.bg-blur' ).before( '
' );
- $( 'img.bg-blur' ).appendTo( '.undefined-img' );
- }
+if ($("body.author").length > 0) {
+ cover = $(".author-bio img").attr("src");
+ $("#loader + .container-fluid")
+ .prepend('
');
+ $(".blur-wrapper").prepend(' ');
+ // Place undefined cover images inside container
+ if ($('.bg-blur[src="undefined"]').length > 0) {
+ $(".bg-blur").before('
');
+ $("img.bg-blur").appendTo('.undefined-img');
+ }
}
// Ereader Page - add class to iframe body on ereader page after it loads.
-backurl = '../../book/' + url[2]
-$( 'body.epub #title-controls' )
- .append('
')
+backurl = "../../book/" + url[2]
+$("body.epub #title-controls")
+ .append('
')
-$( 'body.stat .col-sm-10 p:first' ).insertAfter( '#libs' );
+$("body.stat .col-sm-10 p:first").insertAfter("#libs");
// Check if link is external and force _blank attribute
-$(function(){ // document ready
- $( 'a' ).filter(function () {
- return this.hostname && this.hostname !== location.hostname;
- }).each(function () {
- $(this).addClass("external").attr( 'target', '_blank' );
- });
+$(function () { // document ready
+ $("a").filter(function () {
+ return this.hostname && this.hostname !== location.hostname;
+ }).each(function () {
+ $(this).addClass("external").attr("target", "_blank");
+ });
});
// Check if lists are empty and add class to buttons
-if ( $.trim( $('#add-to-shelves').html() ).length === 0 ) {
- $( '#add-to-shelf' ).addClass( 'empty-ul' );
+if ($.trim($("#add-to-shelves").html()).length === 0) {
+ $("#add-to-shelf").addClass("empty-ul");
}
-shelfLength = $('#add-to-shelves li').length
+shelfLength = $("#add-to-shelves li").length
emptyLength = 0
-$('#add-to-shelves').on('click','li a',function(){
- console.log('#remove-from-shelves change registered' );
- emptyLength++
+$("#add-to-shelves").on("click", "li a", function () {
+ console.log("#remove-from-shelves change registered");
+ emptyLength++
- setTimeout(function() {
- if ( emptyLength >= shelfLength ) {
- console.log('list is empty; adding empty-ul class' );
- $( '#add-to-shelf' ).addClass( 'empty-ul' );
- } else {
- console.log('list is not empty; removing empty-ul class' );
- $( '#add-to-shelf' ).removeClass( 'empty-ul' );
- }
- },100);
+ setTimeout(function () {
+ if (emptyLength >= shelfLength) {
+ console.log("list is empty; adding empty-ul class");
+ $("#add-to-shelf").addClass("empty-ul");
+ } else {
+ console.log("list is not empty; removing empty-ul class");
+ $("#add-to-shelf").removeClass("empty-ul");
+ }
+ }, 100);
});
-if ( $.trim( $( 'ul[aria-labelledby="read-in-browser"] li' ).html() ).length === 0 ) {
- $('#read-in-browser').addClass('empty-ul');
+if ($.trim($('ul[aria-labelledby="read-in-browser"] li').html()).length === 0) {
+ $("#read-in-browser").addClass("empty-ul");
}
// Shelf Buttons and Tooltips
-if ( $( 'body.shelf' ).length > 0 ) {
- $( 'div[data-target="#DeleteShelfDialog"]' )
- .before( '
' )
- .appendTo( '.shelf-btn-group' )
- .addClass( 'delete-shelf-btn' );
+if ($("body.shelf").length > 0) {
+ $('div[data-target="#DeleteShelfDialog"]')
+ .before('
')
+ .appendTo(".shelf-btn-group")
+ .addClass("delete-shelf-btn");
- $( 'a[href*="edit"]' )
- .appendTo( '.shelf-btn-group' )
- .addClass( 'edit-shelf-btn' );
+ $('a[href*="edit"]')
+ .appendTo(".shelf-btn-group")
+ .addClass("edit-shelf-btn");
- $( 'a[href*="order"]' )
- .appendTo( '.shelf-btn-group' )
- .addClass( 'order-shelf-btn' );
- $( '.delete-shelf-btn' ).attr({
- 'data-toggle-two': 'tooltip',
- 'title': $( '.delete-shelf-btn' ).text(), // 'Delete Shelf'
- 'data-placement': 'bottom' })
- .addClass('delete-btn-tooltip');
+ $('a[href*="order"]')
+ .appendTo(".shelf-btn-group")
+ .addClass("order-shelf-btn");
+ $(".delete-shelf-btn").attr({
+ "data-toggle-two": "tooltip",
+ "title": $(".delete-shelf-btn").text(), // "Delete Shelf"
+ "data-placement": "bottom"
+ })
+ .addClass("delete-btn-tooltip");
- $( '.edit-shelf-btn' ).attr({
- 'data-toggle-two': 'tooltip',
- 'title': $( '.edit-shelf-btn' ).text(), // 'Edit Shelf'
- 'data-placement': 'bottom' })
- .addClass('edit-btn-tooltip');
+ $(".edit-shelf-btn").attr({
+ "data-toggle-two": "tooltip",
+ "title": $(".edit-shelf-btn").text(), // "Edit Shelf"
+ "data-placement": "bottom"
+ })
+ .addClass("edit-btn-tooltip");
- $( '.order-shelf-btn' ).attr({
- 'data-toggle-two': 'tooltip',
- 'title': $( '.order-shelf-btn' ).text(), //'Reorder Shelf'
- 'data-placement': 'bottom' })
- .addClass('order-btn-tooltip');
+ $(".order-shelf-btn").attr({
+ "data-toggle-two": "tooltip",
+ "title": $(".order-shelf-btn").text(), //"Reorder Shelf"
+ "data-placement": "bottom"
+ })
+ .addClass("order-btn-tooltip");
}
// Rest of Tooltips
-$( '.home-btn > a' ).attr({
- 'data-toggle': 'tooltip',
- 'title': $(document.body).attr('data-text'), // Home
- 'data-placement': 'bottom' })
- .addClass('home-btn-tooltip');
+$(".home-btn > a").attr({
+ "data-toggle": "tooltip",
+ "title": $(document.body).attr("data-text"), // Home
+ "data-placement": "bottom"
+})
+ .addClass("home-btn-tooltip");
-$( '.plexBack > a' ).attr({
- 'data-toggle': 'tooltip',
- 'title': $(document.body).attr('data-textback'), // Back
- 'data-placement': 'bottom' })
- .addClass('back-btn-tooltip');
+$(".plexBack > a").attr({
+ "data-toggle": "tooltip",
+ "title": $(document.body).attr("data-textback"), // Back
+ "data-placement": "bottom"
+})
+ .addClass("back-btn-tooltip");
-$( '#top_tasks' ).attr({
- 'data-toggle': 'tooltip',
- 'title': $( '#top_tasks' ).text(), // 'Tasks'
- 'data-placement': 'bottom',
- 'data-viewport': '#main-nav' })
- .addClass('tasks-btn-tooltip');
+$("#top_tasks").attr({
+ "data-toggle": "tooltip",
+ "title": $("#top_tasks").text(), // "Tasks"
+ "data-placement": "bottom",
+ "data-viewport": "#main-nav"
+})
+ .addClass("tasks-btn-tooltip");
-$( '#top_admin' ).attr({
- 'data-toggle': 'tooltip',
- 'title': $( '#top_admin' ).attr('data-text'), // Settings
- 'data-placement': 'bottom',
- 'data-viewport': '#main-nav' })
- .addClass('admin-btn-tooltip');
+$("#top_admin").attr({
+ "data-toggle": "tooltip",
+ "title": $("#top_admin").attr("data-text"), // Settings
+ "data-placement": "bottom",
+ "data-viewport": "#main-nav"
+})
+ .addClass("admin-btn-tooltip");
-$( '.profileDrop' ).attr({
- 'title': $( '#top_user' ).attr('data-text'), //Account
- 'data-placement': 'bottom',
- 'data-toggle-two': 'tooltip',
- 'data-viewport': '#main-nav' })
- .addClass('send-btn-tooltip dropdown');
+$(".profileDrop").attr({
+ "title": $("#top_user").attr("data-text"), //Account
+ "data-placement": "bottom",
+ "data-toggle-two": "tooltip",
+ "data-viewport": "#main-nav"
+})
+ .addClass("send-btn-tooltip dropdown");
-$( '#btn-upload' ).attr({
- 'data-toggle': 'tooltip',
- 'title': $( '#btn-upload' ).parent().text() , // 'Upload'
- 'data-placement': 'bottom',
- 'data-viewport': '#main-nav' })
- .addClass('upload-btn-tooltip');
+$("#btn-upload").attr({
+ "data-toggle": "tooltip",
+ "title": $("#btn-upload").parent().text(), // "Upload"
+ "data-placement": "bottom",
+ "data-viewport": "#main-nav"
+})
+ .addClass("upload-btn-tooltip");
-$( '#add-to-shelf' ).attr({
- 'data-toggle-two': 'tooltip',
- 'title': $( '#add-to-shelf' ).text() , // 'Add to Shelf'
- 'data-placement': 'bottom',
- 'data-viewport': '.btn-toolbar' })
- .addClass('addtoshelf-btn-tooltip');
+$("#add-to-shelf").attr({
+ "data-toggle-two": "tooltip",
+ "title": $("#add-to-shelf").text(), // "Add to Shelf"
+ "data-placement": "bottom",
+ "data-viewport": ".btn-toolbar"
+})
+ .addClass("addtoshelf-btn-tooltip");
-$( '#have_read_cb' ).attr({
- 'data-toggle': 'tooltip',
- 'title': $( '#have_read_cb').attr('data-unchecked'),
- 'data-placement': 'bottom',
- 'data-viewport': '.btn-toolbar' })
- .addClass('readunread-btn-tooltip');
+$("#have_read_cb").attr({
+ "data-toggle": "tooltip",
+ "title": $("#have_read_cb").attr("data-unchecked"),
+ "data-placement": "bottom",
+ "data-viewport": ".btn-toolbar"
+})
+ .addClass("readunread-btn-tooltip");
-$( '#have_read_cb:checked' ).attr({
- 'data-toggle': 'tooltip',
- 'title': $( '#have_read_cb').attr('data-checked'),
- 'data-placement': 'bottom',
- 'data-viewport': '.btn-toolbar' })
- .addClass('readunread-btn-tooltip');
+$("#have_read_cb:checked").attr({
+ "data-toggle": "tooltip",
+ "title": $("#have_read_cb").attr("data-checked"),
+ "data-placement": "bottom",
+ "data-viewport": ".btn-toolbar"
+})
+ .addClass("readunread-btn-tooltip");
- $( 'button#delete' ).attr({
- 'data-toggle-two': 'tooltip',
- 'title': $( 'button#delete' ).text(), //'Delete'
- 'data-placement': 'bottom',
- 'data-viewport': '.btn-toolbar' })
- .addClass('delete-book-btn-tooltip');
+$("#archived_cb").attr({
+ "data-toggle": "tooltip",
+ "title": $("#archived_cb").attr("data-unchecked"),
+ "data-placement": "bottom",
+ "data-viewport": ".btn-toolbar"
+})
+ .addClass("readunread-btn-tooltip");
-$( '#have_read_cb' ).click(function() {
- if ( $( '#have_read_cb:checked' ).length > 0 ) {
- $( this ).attr('data-original-title', $('#have_read_cb').attr('data-checked'));
- } else {
- $( this).attr('data-original-title', $('#have_read_cb').attr('data-unchecked'));
- }
+$("#archived_cb:checked").attr({
+ "data-toggle": "tooltip",
+ "title": $("#archived_cb").attr("data-checked"),
+ "data-placement": "bottom",
+ "data-viewport": ".btn-toolbar"
+})
+ .addClass("readunread-btn-tooltip");
+
+$("button#delete").attr({
+ "data-toggle-two": "tooltip",
+ "title": $("button#delete").text(), //"Delete"
+ "data-placement": "bottom",
+ "data-viewport": ".btn-toolbar"
+})
+ .addClass("delete-book-btn-tooltip");
+
+$("#have_read_cb").click(function () {
+ if ($("#have_read_cb:checked").length > 0) {
+ $(this).attr("data-original-title", $("#have_read_cb").attr("data-checked"));
+ } else {
+ $(this).attr("data-original-title", $("#have_read_cb").attr("data-unchecked"));
+ }
});
-$( '.btn-group[aria-label="Edit/Delete book"] a' ).attr({
- 'data-toggle': 'tooltip',
- 'title': $( '#edit_book' ).text(), // 'Edit'
- 'data-placement': 'bottom',
- 'data-viewport': '.btn-toolbar' })
- .addClass('edit-btn-tooltip');
+$("#archived_cb").click(function () {
+ if ($("#archived_cb:checked").length > 0) {
+ $(this).attr("data-original-title", $("#archived_cb").attr("data-checked"));
+ } else {
+ $(this).attr("data-original-title", $("#archived_cb").attr("data-unchecked"));
+ }
+});
-$( '#sendbtn' ).attr({
- 'data-toggle': 'tooltip',
- 'title': $( '#sendbtn' ).attr('data-text'),
- 'data-placement': 'bottom',
- 'data-viewport': '.btn-toolbar' })
- .addClass('send-btn-tooltip');
+$('.btn-group[aria-label="Edit/Delete book"] a').attr({
+ "data-toggle": "tooltip",
+ "title": $("#edit_book").text(), // "Edit"
+ "data-placement": "bottom",
+ "data-viewport": ".btn-toolbar"
+})
+ .addClass("edit-btn-tooltip");
-$( '#sendbtn2' ).attr({
- 'data-toggle-two': 'tooltip',
- 'title': $( '#sendbtn2' ).text(), // 'Send to Kindle',
- 'data-placement': 'bottom',
- 'data-viewport': '.btn-toolbar' })
- .addClass('send-btn-tooltip');
+$("#sendbtn").attr({
+ "data-toggle": "tooltip",
+ "title": $("#sendbtn").attr("data-text"),
+ "data-placement": "bottom",
+ "data-viewport": ".btn-toolbar"
+})
+ .addClass("send-btn-tooltip");
-$( '#read-in-browser' ).attr({
- 'data-toggle-two': 'tooltip',
- 'title': $( '#read-in-browser' ).text(),
- 'data-placement': 'bottom',
- 'data-viewport': '.btn-toolbar'})
- .addClass('send-btn-tooltip');
+$("#sendbtn2").attr({
+ "data-toggle-two": "tooltip",
+ "title": $("#sendbtn2").text(), // "Send to Kindle",
+ "data-placement": "bottom",
+ "data-viewport": ".btn-toolbar"
+})
+ .addClass("send-btn-tooltip");
-$( '#btnGroupDrop1' ).attr({
- 'data-toggle-two': 'tooltip',
- 'title': $( '#btnGroupDrop1' ).text(),
- 'data-placement': 'bottom',
- 'data-viewport': '.btn-toolbar' });
+$("#read-in-browser").attr({
+ "data-toggle-two": "tooltip",
+ "title": $("#read-in-browser").text(),
+ "data-placement": "bottom",
+ "data-viewport": ".btn-toolbar"
+})
+ .addClass("send-btn-tooltip");
-if ( $( 'body.epub').length === 0 ) {
- $(document).ready(function(){
- $('[data-toggle="tooltip"]').tooltip({container: 'body', trigger: 'hover'});
- $('[data-toggle-two="tooltip"]').tooltip({container: 'body', trigger: 'hover'});
- $( '#btn-upload' ).attr('title', " ");
- });
+$("#btnGroupDrop1").attr({
+ "data-toggle-two": "tooltip",
+ "title": $("#btnGroupDrop1").text(),
+ "data-placement": "bottom",
+ "data-viewport": ".btn-toolbar"
+});
+
+if ($("body.epub").length === 0) {
+ $(document).ready(function () {
+ $("[data-toggle='tooltip']").tooltip({container: "body", trigger: "hover"});
+ $("[data-toggle-two='tooltip']").tooltip({container: "body", trigger: "hover"});
+ $("#btn-upload").attr("title", " ");
+ });
- $( '[data-toggle-two="tooltip"]' ).click(function(){
- $('[data-toggle-two="tooltip"]').tooltip('hide');
- });
+ $('[data-toggle-two="tooltip"]').click(function () {
+ $('[data-toggle-two="tooltip"]').tooltip("hide");
+ });
- $( '[data-toggle="tooltip"]' ).click(function(){
- $('[data-toggle="tooltip"]').tooltip('hide');
- });
+ $('[data-toggle="tooltip"]').click(function () {
+ $('[data-toggle="tooltip"]').tooltip("hide");
+ });
}
-$( '#read-in-browser a' ).attr('target',"");
+$("#read-in-browser a").attr("target", "");
-if ( $( '.edit-shelf-btn').length > 1 ) {
- $( '.edit-shelf-btn:first').remove();
+if ($(".edit-shelf-btn").length > 1) {
+ $(".edit-shelf-btn:first").remove();
}
-if ( $( '.order-shelf-btn').length > 1 ) {
- $( '.order-shelf-btn:first').remove();
+if ($(".order-shelf-btn").length > 1) {
+ $(".order-shelf-btn:first").remove();
}
-$( '#top_user > span.hidden-sm' ).clone().insertBefore( '.profileDropli' );
-$( '.navbar-collapse.collapse.in').before('');
+$("#top_user > span.hidden-sm").clone().insertBefore(".profileDropli");
+$(".navbar-collapse.collapse.in").before('');
// Get rid of leading white space
-recentlyAdded = $( '#nav_new a:contains("Recently")' ).text().trim();
-$('#nav_new a:contains("Recently")').contents().filter(function() {
+recentlyAdded = $("#nav_new a:contains('Recently')").text().trim();
+$("#nav_new a:contains('Recently')").contents().filter(function () {
return this.nodeType == 3
-}).each(function(){
- this.textContent = this.textContent.replace(' Recently Added',recentlyAdded);
+}).each(function () {
+ this.textContent = this.textContent.replace(" Recently Added", recentlyAdded);
});
// Change shelf textValue
-shelfText = $( '.shelf .discover h2:first' ).text().replace(':',' —').replace(/\'/g,'');
-$( '.shelf .discover h2:first' ).text(shelfText);
+shelfText = $(".shelf .discover h2:first").text().replace(":", " —").replace(/\'/g, "");
+$(".shelf .discover h2:first").text(shelfText);
-shelfText = $( '.shelforder .col-sm-10 .col-sm-6.col-lg-6.col-xs-6 h2:first' ).text().replace(':',' —').replace(/\'/g,'');
-$( '.shelforder .col-sm-10 .col-sm-6.col-lg-6.col-xs-6 h2:first' ).text(shelfText);
+shelfText = $(".shelforder .col-sm-10 .col-sm-6.col-lg-6.col-xs-6 h2:first").text().replace(':', ' —').replace(/\'/g, "");
+$(".shelforder .col-sm-10 .col-sm-6.col-lg-6.col-xs-6 h2:first").text(shelfText);
function mobileSupport() {
-if ( $( window ).width() <= 768 ) {
- //Move menu to collapse
- $( '.row-fluid > .col-sm-2:first' ).appendTo( '.navbar-collapse.collapse:first');
- if ( $( '.sidebar-backdrop' ).length < 1 ) {
- $( '.navbar-collapse.collapse:first' ).after( '' );
- }
- } else {
- //Move menu out of collapse
- $( '.col-sm-2:first' ).insertBefore( '.col-sm-10:first');
- $( '.sidebar-backdrop' ).remove();
- }
+ if ($(window).width() <= 768) {
+ //Move menu to collapse
+ $(".row-fluid > .col-sm-2:first").appendTo(".navbar-collapse.collapse:first");
+ if ($(".sidebar-backdrop").length < 1) {
+ $(".navbar-collapse.collapse:first").after("");
+ }
+ } else {
+ //Move menu out of collapse
+ $(".col-sm-2:first").insertBefore(".col-sm-10:first");
+ $(".sidebar-backdrop").remove();
+ }
}
// LayerCake plug
-if ( $(' body.stat p').length > 0 ) {
- $(' body.stat p').append(" and layer.Cake ");
- str = $(' body.stat p').html().replace(".","");
- $(' body.stat p').html(str);
+if ($(" body.stat p").length > 0) {
+ $(" body.stat p").append(" and layer.Cake ");
+ str = $(" body.stat p").html().replace(".", "");
+ $(" body.stat p").html(str);
}
// Collect delete buttons in editbook to single dropdown
-$( '.editbook .text-center.more-stuff' ).prepend( ' Delete Format ' );
+$(".editbook .text-center.more-stuff").prepend(' Delete Format ');
-deleteButtons = $( '.editbook .text-center.more-stuff a' ).removeClass('btn btn-danger' ).attr( 'type', '').get();
+deleteButtons = $(".editbook .text-center.more-stuff a").removeClass("btn btn-danger").attr("type", "").get();
-$( deleteButtons ).detach();
-$( '.editbook .text-center.more-stuff h4' ).remove();
-$.each(deleteButtons, function(i, val) {
- $( '' + deleteButtons[i].outerHTML + ' ' ).appendTo( '.delete-dropdown' );
+$(deleteButtons).detach();
+$(".editbook .text-center.more-stuff h4").remove();
+$.each(deleteButtons, function (i, val) {
+ $("" + deleteButtons[i].outerHTML + " ").appendTo(".delete-dropdown");
});
// Turn off bootstrap animations
-$(function() { $.support.transition = false; })
+$(function () {
+ $.support.transition = false;
+})
mobileSupport();
// Only call function once resize is complete
//var id;
-$( window ).on('resize',function() {
+$(window).on("resize", function () {
// clearTimeout(id);
// id = setTimeout(mobileSupport, 500);
-mobileSupport();
+ mobileSupport();
});
+
diff --git a/cps/static/js/details.js b/cps/static/js/details.js
index 491d23bbe..395518cb2 100644
--- a/cps/static/js/details.js
+++ b/cps/static/js/details.js
@@ -25,6 +25,14 @@ $("#have_read_cb").on("change", function() {
$(this).closest("form").submit();
});
+$(function() {
+ $("#archived_form").ajaxForm();
+});
+
+$("#archived_cb").on("change", function() {
+ $(this).closest("form").submit();
+});
+
(function() {
var templates = {
add: _.template(
diff --git a/cps/static/js/filter_grid.js b/cps/static/js/filter_grid.js
new file mode 100644
index 000000000..362c6bfa6
--- /dev/null
+++ b/cps/static/js/filter_grid.js
@@ -0,0 +1,70 @@
+/* This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
+ * Copyright (C) 2018 OzzieIsaacs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+var $list = $("#list").isotope({
+ itemSelector: ".book",
+ layoutMode: "fitRows",
+ getSortData: {
+ title: ".title",
+ }
+});
+
+$("#desc").click(function() {
+ var page = $(this).data("id");
+ $.ajax({
+ method:"post",
+ contentType: "application/json; charset=utf-8",
+ dataType: "json",
+ url: window.location.pathname + "/../../ajax/view",
+ data: "{\"" + page + "\": {\"dir\": \"desc\"}}",
+ });
+ $list.isotope({
+ sortBy: "name",
+ sortAscending: true
+ });
+ return;
+});
+
+$("#asc").click(function() {
+ var page = $(this).data("id");
+ $.ajax({
+ method:"post",
+ contentType: "application/json; charset=utf-8",
+ dataType: "json",
+ url: window.location.pathname + "/../../ajax/view",
+ data: "{\"" + page + "\": {\"dir\": \"asc\"}}",
+ });
+ $list.isotope({
+ sortBy: "name",
+ sortAscending: false
+ });
+ return;
+});
+
+$("#all").click(function() {
+ // go through all elements and make them visible
+ $list.isotope({ filter: function() {
+ return true;
+ } })
+});
+
+$(".char").click(function() {
+ var character = this.innerText;
+ $list.isotope({ filter: function() {
+ return this.attributes["data-id"].value.charAt(0).toUpperCase() == character;
+ } })
+});
diff --git a/cps/static/js/filter_list.js b/cps/static/js/filter_list.js
index 0610bb862..676ff47bb 100644
--- a/cps/static/js/filter_list.js
+++ b/cps/static/js/filter_list.js
@@ -19,6 +19,17 @@ var direction = 0; // Descending order
var sort = 0; // Show sorted entries
$("#sort_name").click(function() {
+ var class_name = $("h1").attr('Class') + "_sort_name";
+ var obj = {};
+ obj[class_name] = sort;
+ /*$.ajax({
+ method:"post",
+ contentType: "application/json; charset=utf-8",
+ dataType: "json",
+ url: window.location.pathname + "/../../ajax/view",
+ data: JSON.stringify({obj}),
+ });*/
+
var count = 0;
var index = 0;
var store;
@@ -40,12 +51,10 @@ $("#sort_name").click(function() {
count++;
}
});
- /*listItems.sort(function(a,b){
- return $(a).children()[1].innerText.localeCompare($(b).children()[1].innerText)
- });*/
+
// Find count of middle element
if (count > 20) {
- var middle = parseInt(count / 2) + (count % 2);
+ var middle = parseInt(count / 2, 10) + (count % 2);
// search for the middle of all visibe elements
$(".row").each(function() {
index++;
@@ -66,6 +75,14 @@ $("#desc").click(function() {
if (direction === 0) {
return;
}
+ var page = $(this).data("id");
+ $.ajax({
+ method:"post",
+ contentType: "application/json; charset=utf-8",
+ dataType: "json",
+ url: window.location.pathname + "/../../ajax/view",
+ data: "{\"" + page + "\": {\"dir\": \"desc\"}}",
+ });
var index = 0;
var list = $("#list");
var second = $("#second");
@@ -102,9 +119,18 @@ $("#desc").click(function() {
$("#asc").click(function() {
+
if (direction === 1) {
return;
}
+ var page = $(this).data("id");
+ $.ajax({
+ method:"post",
+ contentType: "application/json; charset=utf-8",
+ dataType: "json",
+ url: window.location.pathname + "/../../ajax/view",
+ data: "{\"" + page + "\": {\"dir\": \"asc\"}}",
+ });
var index = 0;
var list = $("#list");
var second = $("#second");
@@ -131,7 +157,6 @@ $("#asc").click(function() {
});
// middle = parseInt(elementLength / 2) + (elementLength % 2);
-
list.append(reversed.slice(0, index));
second.append(reversed.slice(index, elementLength));
} else {
@@ -146,7 +171,7 @@ $("#all").click(function() {
// Find count of middle element
var listItems = $("#list").children(".row");
var listlength = listItems.length;
- var middle = parseInt(listlength / 2) + (listlength % 2);
+ var middle = parseInt(listlength / 2, 10) + (listlength % 2);
// go through all elements and make them visible
listItems.each(function() {
$(this).show();
@@ -178,7 +203,7 @@ $(".char").click(function() {
});
if (count > 20) {
// Find count of middle element
- var middle = parseInt(count / 2) + (count % 2);
+ var middle = parseInt(count / 2, 10) + (count % 2);
// search for the middle of all visibe elements
$(".row").each(function() {
index++;
diff --git a/cps/static/js/get_meta.js b/cps/static/js/get_meta.js
index cf079ba75..d3e0eb46f 100644
--- a/cps/static/js/get_meta.js
+++ b/cps/static/js/get_meta.js
@@ -15,23 +15,29 @@
* along with this program. If not, see .
*/
/*
- * Get Metadata from Douban Books api and Google Books api
+ * Get Metadata from Douban Books api and Google Books api and ComicVine
* Google Books api document: https://developers.google.com/books/docs/v1/using
* Douban Books api document: https://developers.douban.com/wiki/?title=book_v2 (Chinese Only)
+ * ComicVine api document: https://comicvine.gamespot.com/api/documentation
*/
/* global _, i18nMsg, tinymce */
-// var dbResults = [];
+var dbResults = [];
var ggResults = [];
+var cvResults = [];
$(function () {
var msg = i18nMsg;
- /*var douban = "https://api.douban.com";
- var dbSearch = "/v2/book/search";*/
- // var dbDone = true;
+ var douban = "https://api.douban.com";
+ var dbSearch = "/v2/book/search";
+ var dbDone = 0;
var google = "https://www.googleapis.com";
var ggSearch = "/books/v1/volumes";
- var ggDone = false;
+ var ggDone = 0;
+
+ var comicvine = "https://comicvine.gamespot.com";
+ var cvSearch = "/api/search/";
+ var cvDone = 0;
var showFlag = 0;
@@ -43,12 +49,23 @@ $(function () {
function populateForm (book) {
tinymce.get("description").setContent(book.description);
- $("#bookAuthor").val(book.authors);
+ var uniqueTags = [];
+ $.each(book.tags, function(i, el) {
+ if ($.inArray(el, uniqueTags) === -1) uniqueTags.push(el);
+ });
+
+ var ampSeparatedAuthors = (book.authors || []).join(" & ");
+ $("#bookAuthor").val(ampSeparatedAuthors);
$("#book_title").val(book.title);
- $("#tags").val(book.tags.join(","));
+ $("#tags").val(uniqueTags.join(","));
$("#rating").data("rating").setValue(Math.round(book.rating));
$(".cover img").attr("src", book.cover);
$("#cover_url").val(book.cover);
+ $("#pubdate").val(book.publishedDate);
+ $("#publisher").val(book.publisher);
+ if (typeof book.series !== "undefined") {
+ $("#series").val(book.series);
+ }
}
function showResult () {
@@ -56,76 +73,164 @@ $(function () {
if (showFlag === 1) {
$("#meta-info").html("");
}
- if (!ggDone) {
+ if ((ggDone === 3 || (ggDone === 1 && ggResults.length === 0)) &&
+ (dbDone === 3 || (dbDone === 1 && dbResults.length === 0)) &&
+ (cvDone === 3 || (cvDone === 1 && cvResults.length === 0))) {
$("#meta-info").html("" + msg.no_result + "
");
return;
}
- if (ggDone && ggResults.length > 0) {
- ggResults.forEach(function(result) {
- var book = {
- id: result.id,
- title: result.volumeInfo.title,
- authors: result.volumeInfo.authors || [],
- description: result.volumeInfo.description || "",
- publisher: result.volumeInfo.publisher || "",
- publishedDate: result.volumeInfo.publishedDate || "",
- tags: result.volumeInfo.categories || [],
- rating: result.volumeInfo.averageRating || 0,
- cover: result.volumeInfo.imageLinks ?
- result.volumeInfo.imageLinks.thumbnail :
- "/static/generic_cover.jpg",
- url: "https://books.google.com/books?id=" + result.id,
- source: {
- id: "google",
- description: "Google Books",
- url: "https://books.google.com/"
- }
- };
+ function formatDate (date) {
+ var d = new Date(date),
+ month = "" + (d.getMonth() + 1),
+ day = "" + d.getDate(),
+ year = d.getFullYear();
- var $book = $(templates.bookResult(book));
- $book.find("img").on("click", function () {
- populateForm(book);
- });
+ if (month.length < 2) {
+ month = "0" + month;
+ }
+ if (day.length < 2) {
+ day = "0" + day;
+ }
- $("#book-list").append($book);
- });
- ggDone = false;
+ return [year, month, day].join("-");
}
- /*if (dbDone && dbResults.length > 0) {
- dbResults.forEach(function(result) {
- var book = {
- id: result.id,
- title: result.title,
- authors: result.author || [],
- description: result.summary,
- publisher: result.publisher || "",
- publishedDate: result.pubdate || "",
- tags: result.tags.map(function(tag) {
- return tag.title;
- }),
- rating: result.rating.average || 0,
- cover: result.image,
- url: "https://book.douban.com/subject/" + result.id,
- source: {
- id: "douban",
- description: "Douban Books",
- url: "https://book.douban.com/"
- }
- };
- if (book.rating > 0) {
- book.rating /= 2;
- }
+ if (ggResults.length > 0) {
+ if (ggDone < 2) {
+ ggResults.forEach(function(result) {
+ var book = {
+ id: result.id,
+ title: result.volumeInfo.title,
+ authors: result.volumeInfo.authors || [],
+ description: result.volumeInfo.description || "",
+ publisher: result.volumeInfo.publisher || "",
+ publishedDate: result.volumeInfo.publishedDate || "",
+ tags: result.volumeInfo.categories || [],
+ rating: result.volumeInfo.averageRating || 0,
+ cover: result.volumeInfo.imageLinks ?
+ result.volumeInfo.imageLinks.thumbnail : location + "/../../../static/generic_cover.jpg",
+ url: "https://books.google.com/books?id=" + result.id,
+ source: {
+ id: "google",
+ description: "Google Books",
+ url: "https://books.google.com/"
+ }
+ };
- var $book = $(templates.bookResult(book));
- $book.find("img").on("click", function () {
- populateForm(book);
+ var $book = $(templates.bookResult(book));
+ $book.find("img").on("click", function () {
+ populateForm(book);
+ });
+
+ $("#book-list").append($book);
});
+ ggDone = 2;
+ } else {
+ ggDone = 3;
+ }
+ }
- $("#book-list").append($book);
- });
- dbDone = false;
- }*/
+ if (dbResults.length > 0) {
+ if (dbDone < 2) {
+ dbResults.forEach(function(result) {
+ var seriesTitle = "";
+ if (result.series) {
+ seriesTitle = result.series.title;
+ }
+ var dateFomers = result.pubdate.split("-");
+ var publishedYear = parseInt(dateFomers[0]);
+ var publishedMonth = parseInt(dateFomers[1]);
+ var publishedDate = new Date(publishedYear, publishedMonth - 1, 1);
+
+ publishedDate = formatDate(publishedDate);
+
+ var book = {
+ id: result.id,
+ title: result.title,
+ authors: result.author || [],
+ description: result.summary,
+ publisher: result.publisher || "",
+ publishedDate: publishedDate || "",
+ tags: result.tags.map(function(tag) {
+ return tag.title.toLowerCase().replace(/,/g, "_");
+ }),
+ rating: result.rating.average || 0,
+ series: seriesTitle || "",
+ cover: result.image,
+ url: "https://book.douban.com/subject/" + result.id,
+ source: {
+ id: "douban",
+ description: "Douban Books",
+ url: "https://book.douban.com/"
+ }
+ };
+
+ if (book.rating > 0) {
+ book.rating /= 2;
+ }
+
+ var $book = $(templates.bookResult(book));
+ $book.find("img").on("click", function () {
+ populateForm(book);
+ });
+
+ $("#book-list").append($book);
+ });
+ dbDone = 2;
+ } else {
+ dbDone = 3;
+ }
+ }
+ if (cvResults.length > 0) {
+ if (cvDone < 2) {
+ cvResults.forEach(function(result) {
+ var seriesTitle = "";
+ if (result.volume.name) {
+ seriesTitle = result.volume.name;
+ }
+ var dateFomers = "";
+ if (result.store_date) {
+ dateFomers = result.store_date.split("-");
+ } else {
+ dateFomers = result.date_added.split("-");
+ }
+ var publishedYear = parseInt(dateFomers[0]);
+ var publishedMonth = parseInt(dateFomers[1]);
+ var publishedDate = new Date(publishedYear, publishedMonth - 1, 1);
+
+ publishedDate = formatDate(publishedDate);
+
+ var book = {
+ id: result.id,
+ title: seriesTitle + " #" + ("00" + result.issue_number).slice(-3) + " - " + result.name,
+ authors: result.author || [],
+ description: result.description,
+ publisher: "",
+ publishedDate: publishedDate || "",
+ tags: ["Comics", seriesTitle],
+ rating: 0,
+ series: seriesTitle || "",
+ cover: result.image.original_url,
+ url: result.site_detail_url,
+ source: {
+ id: "comicvine",
+ description: "ComicVine Books",
+ url: "https://comicvine.gamespot.com/"
+ }
+ };
+
+ var $book = $(templates.bookResult(book));
+ $book.find("img").on("click", function () {
+ populateForm(book);
+ });
+
+ $("#book-list").append($book);
+ });
+ cvDone = 2;
+ } else {
+ cvDone = 3;
+ }
+ }
}
function ggSearchBook (title) {
@@ -137,20 +242,20 @@ $(function () {
success: function success(data) {
if ("items" in data) {
ggResults = data.items;
- ggDone = true;
}
},
complete: function complete() {
- ggDone = true;
+ ggDone = 1;
showResult();
$("#show-google").trigger("change");
}
});
}
- /*function dbSearchBook (title) {
+ function dbSearchBook (title) {
+ var apikey = "054022eaeae0b00e0fc068c0c0a2102a";
$.ajax({
- url: douban + dbSearch + "?q=" + title + "&fields=all&count=10",
+ url: douban + dbSearch + "?apikey=" + apikey + "&q=" + title + "&fields=all&count=10",
type: "GET",
dataType: "jsonp",
jsonp: "callback",
@@ -158,22 +263,49 @@ $(function () {
dbResults = data.books;
},
error: function error() {
- $("#meta-info").html("" + msg.search_error + "!
"+ $("#meta-info")[0].innerHTML)
+ $("#meta-info").html("" + msg.search_error + "!
" + $("#meta-info")[0].innerHTML);
},
complete: function complete() {
- dbDone = true;
+ dbDone = 1;
showResult();
$("#show-douban").trigger("change");
}
});
- }*/
+ }
+
+ function cvSearchBook (title) {
+ var apikey = "57558043c53943d5d1e96a9ad425b0eb85532ee6";
+ title = encodeURIComponent(title);
+ $.ajax({
+ url: comicvine + cvSearch + "?api_key=" + apikey + "&resources=issue&query=" + title + "&sort=name:desc&format=jsonp",
+ type: "GET",
+ dataType: "jsonp",
+ jsonp: "json_callback",
+ success: function success(data) {
+ cvResults = data.results;
+ },
+ error: function error() {
+ $("#meta-info").html("" + msg.search_error + "!
" + $("#meta-info")[0].innerHTML);
+ },
+ complete: function complete() {
+ cvDone = 1;
+ showResult();
+ $("#show-comics").trigger("change");
+ }
+ });
+ }
function doSearch (keyword) {
showFlag = 0;
+ dbDone = ggDone = cvDone = 0;
+ dbResults = [];
+ ggResults = [];
+ cvResults = [];
$("#meta-info").text(msg.loading);
if (keyword) {
- // dbSearchBook(keyword);
+ dbSearchBook(keyword);
ggSearchBook(keyword);
+ cvSearchBook(keyword);
}
}
diff --git a/cps/static/js/kthoom.js b/cps/static/js/kthoom.js
index 33a2ac0ed..bbb3fead7 100644
--- a/cps/static/js/kthoom.js
+++ b/cps/static/js/kthoom.js
@@ -162,10 +162,15 @@ function initProgressClick() {
function loadFromArrayBuffer(ab) {
var start = (new Date).getTime();
var h = new Uint8Array(ab, 0, 10);
+ unrar5(ab);
var pathToBitJS = "../../static/js/archive/";
var lastCompletion = 0;
- if (h[0] === 0x52 && h[1] === 0x61 && h[2] === 0x72 && h[3] === 0x21) { //Rar!
- unarchiver = new bitjs.archive.Unrarrer(ab, pathToBitJS);
+ /*if (h[0] === 0x52 && h[1] === 0x61 && h[2] === 0x72 && h[3] === 0x21) { //Rar!
+ if (h[7] === 0x01) {
+ unarchiver = new bitjs.archive.Unrarrer(ab, pathToBitJS);
+ } else {
+ unarchiver = new bitjs.archive.Unrarrer5(ab, pathToBitJS);
+ }
} else if (h[0] === 80 && h[1] === 75) { //PK (Zip)
unarchiver = new bitjs.archive.Unzipper(ab, pathToBitJS);
} else if (h[0] === 255 && h[1] === 216) { // JPEG
@@ -229,7 +234,7 @@ function loadFromArrayBuffer(ab) {
unarchiver.start();
} else {
alert("Some error");
- }
+ }*/
}
function scrollTocToActive() {
diff --git a/cps/static/js/libs/Sortable.min.js b/cps/static/js/libs/Sortable.min.js
index e95d2a301..eba061497 100644
--- a/cps/static/js/libs/Sortable.min.js
+++ b/cps/static/js/libs/Sortable.min.js
@@ -1,2 +1,2 @@
-/*! Sortable 1.4.2 - MIT | git://github.com/rubaxa/Sortable.git */
-!function(a){"use strict";"function"==typeof define&&define.amd?define(a):"undefined"!=typeof module&&"undefined"!=typeof module.exports?module.exports=a():"undefined"!=typeof Package?Sortable=a():window.Sortable=a()}(function(){"use strict";function a(a,b){if(!a||!a.nodeType||1!==a.nodeType)throw"Sortable: `el` must be HTMLElement, and not "+{}.toString.call(a);this.el=a,this.options=b=r({},b),a[L]=this;var c={group:Math.random(),sort:!0,disabled:!1,store:null,handle:null,scroll:!0,scrollSensitivity:30,scrollSpeed:10,draggable:/[uo]l/i.test(a.nodeName)?"li":">*",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",ignore:"a, img",filter:null,animation:0,setData:function(a,b){a.setData("Text",b.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1};for(var d in c)!(d in b)&&(b[d]=c[d]);V(b);for(var f in this)"_"===f.charAt(0)&&(this[f]=this[f].bind(this));this.nativeDraggable=b.forceFallback?!1:P,e(a,"mousedown",this._onTapStart),e(a,"touchstart",this._onTapStart),this.nativeDraggable&&(e(a,"dragover",this),e(a,"dragenter",this)),T.push(this._onDragOver),b.store&&this.sort(b.store.get(this))}function b(a){v&&v.state!==a&&(h(v,"display",a?"none":""),!a&&v.state&&w.insertBefore(v,s),v.state=a)}function c(a,b,c){if(a){c=c||N,b=b.split(".");var d=b.shift().toUpperCase(),e=new RegExp("\\s("+b.join("|")+")(?=\\s)","g");do if(">*"===d&&a.parentNode===c||(""===d||a.nodeName.toUpperCase()==d)&&(!b.length||((" "+a.className+" ").match(e)||[]).length==b.length))return a;while(a!==c&&(a=a.parentNode))}return null}function d(a){a.dataTransfer&&(a.dataTransfer.dropEffect="move"),a.preventDefault()}function e(a,b,c){a.addEventListener(b,c,!1)}function f(a,b,c){a.removeEventListener(b,c,!1)}function g(a,b,c){if(a)if(a.classList)a.classList[c?"add":"remove"](b);else{var d=(" "+a.className+" ").replace(K," ").replace(" "+b+" "," ");a.className=(d+(c?" "+b:"")).replace(K," ")}}function h(a,b,c){var d=a&&a.style;if(d){if(void 0===c)return N.defaultView&&N.defaultView.getComputedStyle?c=N.defaultView.getComputedStyle(a,""):a.currentStyle&&(c=a.currentStyle),void 0===b?c:c[b];b in d||(b="-webkit-"+b),d[b]=c+("string"==typeof c?"":"px")}}function i(a,b,c){if(a){var d=a.getElementsByTagName(b),e=0,f=d.length;if(c)for(;f>e;e++)c(d[e],e);return d}return[]}function j(a,b,c,d,e,f,g){var h=N.createEvent("Event"),i=(a||b[L]).options,j="on"+c.charAt(0).toUpperCase()+c.substr(1);h.initEvent(c,!0,!0),h.to=b,h.from=e||b,h.item=d||b,h.clone=v,h.oldIndex=f,h.newIndex=g,b.dispatchEvent(h),i[j]&&i[j].call(a,h)}function k(a,b,c,d,e,f){var g,h,i=a[L],j=i.options.onMove;return g=N.createEvent("Event"),g.initEvent("move",!0,!0),g.to=b,g.from=a,g.dragged=c,g.draggedRect=d,g.related=e||b,g.relatedRect=f||b.getBoundingClientRect(),a.dispatchEvent(g),j&&(h=j.call(i,g)),h}function l(a){a.draggable=!1}function m(){R=!1}function n(a,b){var c=a.lastElementChild,d=c.getBoundingClientRect();return(b.clientY-(d.top+d.height)>5||b.clientX-(d.right+d.width)>5)&&c}function o(a){for(var b=a.tagName+a.className+a.src+a.href+a.textContent,c=b.length,d=0;c--;)d+=b.charCodeAt(c);return d.toString(36)}function p(a){var b=0;if(!a||!a.parentNode)return-1;for(;a&&(a=a.previousElementSibling);)"TEMPLATE"!==a.nodeName.toUpperCase()&&b++;return b}function q(a,b){var c,d;return function(){void 0===c&&(c=arguments,d=this,setTimeout(function(){1===c.length?a.call(d,c[0]):a.apply(d,c),c=void 0},b))}}function r(a,b){if(a&&b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}var s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J={},K=/\s+/g,L="Sortable"+(new Date).getTime(),M=window,N=M.document,O=M.parseInt,P=!!("draggable"in N.createElement("div")),Q=function(a){return a=N.createElement("x"),a.style.cssText="pointer-events:auto","auto"===a.style.pointerEvents}(),R=!1,S=Math.abs,T=([].slice,[]),U=q(function(a,b,c){if(c&&b.scroll){var d,e,f,g,h=b.scrollSensitivity,i=b.scrollSpeed,j=a.clientX,k=a.clientY,l=window.innerWidth,m=window.innerHeight;if(z!==c&&(y=b.scroll,z=c,y===!0)){y=c;do if(y.offsetWidth=l-j)-(h>=j),g=(h>=m-k)-(h>=k),(f||g)&&(d=M)),(J.vx!==f||J.vy!==g||J.el!==d)&&(J.el=d,J.vx=f,J.vy=g,clearInterval(J.pid),d&&(J.pid=setInterval(function(){d===M?M.scrollTo(M.pageXOffset+f*i,M.pageYOffset+g*i):(g&&(d.scrollTop+=g*i),f&&(d.scrollLeft+=f*i))},24)))}},30),V=function(a){var b=a.group;b&&"object"==typeof b||(b=a.group={name:b}),["pull","put"].forEach(function(a){a in b||(b[a]=!0)}),a.groups=" "+b.name+(b.put.join?" "+b.put.join(" "):"")+" "};return a.prototype={constructor:a,_onTapStart:function(a){var b=this,d=this.el,e=this.options,f=a.type,g=a.touches&&a.touches[0],h=(g||a).target,i=h,k=e.filter;if(!("mousedown"===f&&0!==a.button||e.disabled)&&(h=c(h,e.draggable,d))){if(D=p(h),"function"==typeof k){if(k.call(this,a,h,this))return j(b,i,"filter",h,d,D),void a.preventDefault()}else if(k&&(k=k.split(",").some(function(a){return a=c(i,a.trim(),d),a?(j(b,a,"filter",h,d,D),!0):void 0})))return void a.preventDefault();(!e.handle||c(i,e.handle,d))&&this._prepareDragStart(a,g,h)}},_prepareDragStart:function(a,b,c){var d,f=this,h=f.el,j=f.options,k=h.ownerDocument;c&&!s&&c.parentNode===h&&(G=a,w=h,s=c,t=s.parentNode,x=s.nextSibling,F=j.group,d=function(){f._disableDelayedDrag(),s.draggable=!0,g(s,f.options.chosenClass,!0),f._triggerDragStart(b)},j.ignore.split(",").forEach(function(a){i(s,a.trim(),l)}),e(k,"mouseup",f._onDrop),e(k,"touchend",f._onDrop),e(k,"touchcancel",f._onDrop),j.delay?(e(k,"mouseup",f._disableDelayedDrag),e(k,"touchend",f._disableDelayedDrag),e(k,"touchcancel",f._disableDelayedDrag),e(k,"mousemove",f._disableDelayedDrag),e(k,"touchmove",f._disableDelayedDrag),f._dragStartTimer=setTimeout(d,j.delay)):d())},_disableDelayedDrag:function(){var a=this.el.ownerDocument;clearTimeout(this._dragStartTimer),f(a,"mouseup",this._disableDelayedDrag),f(a,"touchend",this._disableDelayedDrag),f(a,"touchcancel",this._disableDelayedDrag),f(a,"mousemove",this._disableDelayedDrag),f(a,"touchmove",this._disableDelayedDrag)},_triggerDragStart:function(a){a?(G={target:s,clientX:a.clientX,clientY:a.clientY},this._onDragStart(G,"touch")):this.nativeDraggable?(e(s,"dragend",this),e(w,"dragstart",this._onDragStart)):this._onDragStart(G,!0);try{N.selection?N.selection.empty():window.getSelection().removeAllRanges()}catch(b){}},_dragStarted:function(){w&&s&&(g(s,this.options.ghostClass,!0),a.active=this,j(this,w,"start",s,w,D))},_emulateDragOver:function(){if(H){if(this._lastX===H.clientX&&this._lastY===H.clientY)return;this._lastX=H.clientX,this._lastY=H.clientY,Q||h(u,"display","none");var a=N.elementFromPoint(H.clientX,H.clientY),b=a,c=" "+this.options.group.name,d=T.length;if(b)do{if(b[L]&&b[L].options.groups.indexOf(c)>-1){for(;d--;)T[d]({clientX:H.clientX,clientY:H.clientY,target:a,rootEl:b});break}a=b}while(b=b.parentNode);Q||h(u,"display","")}},_onTouchMove:function(b){if(G){a.active||this._dragStarted(),this._appendGhost();var c=b.touches?b.touches[0]:b,d=c.clientX-G.clientX,e=c.clientY-G.clientY,f=b.touches?"translate3d("+d+"px,"+e+"px,0)":"translate("+d+"px,"+e+"px)";I=!0,H=c,h(u,"webkitTransform",f),h(u,"mozTransform",f),h(u,"msTransform",f),h(u,"transform",f),b.preventDefault()}},_appendGhost:function(){if(!u){var a,b=s.getBoundingClientRect(),c=h(s),d=this.options;u=s.cloneNode(!0),g(u,d.ghostClass,!1),g(u,d.fallbackClass,!0),h(u,"top",b.top-O(c.marginTop,10)),h(u,"left",b.left-O(c.marginLeft,10)),h(u,"width",b.width),h(u,"height",b.height),h(u,"opacity","0.8"),h(u,"position","fixed"),h(u,"zIndex","100000"),h(u,"pointerEvents","none"),d.fallbackOnBody&&N.body.appendChild(u)||w.appendChild(u),a=u.getBoundingClientRect(),h(u,"width",2*b.width-a.width),h(u,"height",2*b.height-a.height)}},_onDragStart:function(a,b){var c=a.dataTransfer,d=this.options;this._offUpEvents(),"clone"==F.pull&&(v=s.cloneNode(!0),h(v,"display","none"),w.insertBefore(v,s)),b?("touch"===b?(e(N,"touchmove",this._onTouchMove),e(N,"touchend",this._onDrop),e(N,"touchcancel",this._onDrop)):(e(N,"mousemove",this._onTouchMove),e(N,"mouseup",this._onDrop)),this._loopId=setInterval(this._emulateDragOver,50)):(c&&(c.effectAllowed="move",d.setData&&d.setData.call(this,c,s)),e(N,"drop",this),setTimeout(this._dragStarted,0))},_onDragOver:function(a){var d,e,f,g=this.el,i=this.options,j=i.group,l=j.put,o=F===j,p=i.sort;if(void 0!==a.preventDefault&&(a.preventDefault(),!i.dragoverBubble&&a.stopPropagation()),I=!0,F&&!i.disabled&&(o?p||(f=!w.contains(s)):F.pull&&l&&(F.name===j.name||l.indexOf&&~l.indexOf(F.name)))&&(void 0===a.rootEl||a.rootEl===this.el)){if(U(a,i,this.el),R)return;if(d=c(a.target,i.draggable,g),e=s.getBoundingClientRect(),f)return b(!0),void(v||x?w.insertBefore(s,v||x):p||w.appendChild(s));if(0===g.children.length||g.children[0]===u||g===a.target&&(d=n(g,a))){if(d){if(d.animated)return;r=d.getBoundingClientRect()}b(o),k(w,g,s,e,d,r)!==!1&&(s.contains(g)||(g.appendChild(s),t=g),this._animate(e,s),d&&this._animate(r,d))}else if(d&&!d.animated&&d!==s&&void 0!==d.parentNode[L]){A!==d&&(A=d,B=h(d),C=h(d.parentNode));var q,r=d.getBoundingClientRect(),y=r.right-r.left,z=r.bottom-r.top,D=/left|right|inline/.test(B.cssFloat+B.display)||"flex"==C.display&&0===C["flex-direction"].indexOf("row"),E=d.offsetWidth>s.offsetWidth,G=d.offsetHeight>s.offsetHeight,H=(D?(a.clientX-r.left)/y:(a.clientY-r.top)/z)>.5,J=d.nextElementSibling,K=k(w,g,s,e,d,r);if(K!==!1){if(R=!0,setTimeout(m,30),b(o),1===K||-1===K)q=1===K;else if(D){var M=s.offsetTop,N=d.offsetTop;q=M===N?d.previousElementSibling===s&&!E||H&&E:N>M}else q=J!==s&&!G||H&&G;s.contains(g)||(q&&!J?g.appendChild(s):d.parentNode.insertBefore(s,q?J:d)),t=s.parentNode,this._animate(e,s),this._animate(r,d)}}}},_animate:function(a,b){var c=this.options.animation;if(c){var d=b.getBoundingClientRect();h(b,"transition","none"),h(b,"transform","translate3d("+(a.left-d.left)+"px,"+(a.top-d.top)+"px,0)"),b.offsetWidth,h(b,"transition","all "+c+"ms"),h(b,"transform","translate3d(0,0,0)"),clearTimeout(b.animated),b.animated=setTimeout(function(){h(b,"transition",""),h(b,"transform",""),b.animated=!1},c)}},_offUpEvents:function(){var a=this.el.ownerDocument;f(N,"touchmove",this._onTouchMove),f(a,"mouseup",this._onDrop),f(a,"touchend",this._onDrop),f(a,"touchcancel",this._onDrop)},_onDrop:function(b){var c=this.el,d=this.options;clearInterval(this._loopId),clearInterval(J.pid),clearTimeout(this._dragStartTimer),f(N,"mousemove",this._onTouchMove),this.nativeDraggable&&(f(N,"drop",this),f(c,"dragstart",this._onDragStart)),this._offUpEvents(),b&&(I&&(b.preventDefault(),!d.dropBubble&&b.stopPropagation()),u&&u.parentNode.removeChild(u),s&&(this.nativeDraggable&&f(s,"dragend",this),l(s),g(s,this.options.ghostClass,!1),g(s,this.options.chosenClass,!1),w!==t?(E=p(s),E>=0&&(j(null,t,"sort",s,w,D,E),j(this,w,"sort",s,w,D,E),j(null,t,"add",s,w,D,E),j(this,w,"remove",s,w,D,E))):(v&&v.parentNode.removeChild(v),s.nextSibling!==x&&(E=p(s),E>=0&&(j(this,w,"update",s,w,D,E),j(this,w,"sort",s,w,D,E)))),a.active&&((null===E||-1===E)&&(E=D),j(this,w,"end",s,w,D,E),this.save())),w=s=t=u=x=v=y=z=G=H=I=E=A=B=F=a.active=null)},handleEvent:function(a){var b=a.type;"dragover"===b||"dragenter"===b?s&&(this._onDragOver(a),d(a)):("drop"===b||"dragend"===b)&&this._onDrop(a)},toArray:function(){for(var a,b=[],d=this.el.children,e=0,f=d.length,g=this.options;f>e;e++)a=d[e],c(a,g.draggable,this.el)&&b.push(a.getAttribute(g.dataIdAttr)||o(a));return b},sort:function(a){var b={},d=this.el;this.toArray().forEach(function(a,e){var f=d.children[e];c(f,this.options.draggable,d)&&(b[a]=f)},this),a.forEach(function(a){b[a]&&(d.removeChild(b[a]),d.appendChild(b[a]))})},save:function(){var a=this.options.store;a&&a.set(this)},closest:function(a,b){return c(a,b||this.options.draggable,this.el)},option:function(a,b){var c=this.options;return void 0===b?c[a]:(c[a]=b,void("group"===a&&V(c)))},destroy:function(){var a=this.el;a[L]=null,f(a,"mousedown",this._onTapStart),f(a,"touchstart",this._onTapStart),this.nativeDraggable&&(f(a,"dragover",this),f(a,"dragenter",this)),Array.prototype.forEach.call(a.querySelectorAll("[draggable]"),function(a){a.removeAttribute("draggable")}),T.splice(T.indexOf(this._onDragOver),1),this._onDrop(),this.el=a=null}},a.utils={on:e,off:f,css:h,find:i,is:function(a,b){return!!c(a,b,a)},extend:r,throttle:q,closest:c,toggleClass:g,index:p},a.create=function(b,c){return new a(b,c)},a.version="1.4.2",a});
\ No newline at end of file
+/*! Sortable 1.10.2 - MIT | git://github.com/SortableJS/Sortable.git */
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Sortable=e()}(this,function(){"use strict";function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(){return(a=Object.assign||function(t){for(var e=1;e"===e[0]&&(e=e.substring(1)),t)try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return!1}return!1}}function P(t,e,n,o){if(t){n=n||document;do{if(null!=e&&(">"===e[0]?t.parentNode===n&&h(t,e):h(t,e))||o&&t===n)return t;if(t===n)break}while(t=(i=t).host&&i!==document&&i.host.nodeType?i.host:i.parentNode)}var i;return null}var f,p=/\s+/g;function k(t,e,n){if(t&&e)if(t.classList)t.classList[n?"add":"remove"](e);else{var o=(" "+t.className+" ").replace(p," ").replace(" "+e+" "," ");t.className=(o+(n?" "+e:"")).replace(p," ")}}function R(t,e,n){var o=t&&t.style;if(o){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];e in o||-1!==e.indexOf("webkit")||(e="-webkit-"+e),o[e]=n+("string"==typeof n?"":"px")}}function v(t,e){var n="";if("string"==typeof t)n=t;else do{var o=R(t,"transform");o&&"none"!==o&&(n=o+" "+n)}while(!e&&(t=t.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function g(t,e,n){if(t){var o=t.getElementsByTagName(e),i=0,r=o.length;if(n)for(;i=e.left-n&&r<=e.right+n,i=a>=e.top-n&&a<=e.bottom+n;return n&&o&&i?l=t:void 0}}),l}((t=t.touches?t.touches[0]:t).clientX,t.clientY);if(e){var n={};for(var o in t)t.hasOwnProperty(o)&&(n[o]=t[o]);n.target=n.rootEl=e,n.preventDefault=void 0,n.stopPropagation=void 0,e[j]._onDragOver(n)}}}function kt(t){z&&z.parentNode[j]._isOutsideThisEl(t.target)}function Rt(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=a({},e),t[j]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Ot(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Rt.supportPointer&&"PointerEvent"in window,emptyInsertThreshold:5};for(var o in O.initializePlugins(this,t,n),n)o in e||(e[o]=n[o]);for(var i in At(e),this)"_"===i.charAt(0)&&"function"==typeof this[i]&&(this[i]=this[i].bind(this));this.nativeDraggable=!e.forceFallback&&xt,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?u(t,"pointerdown",this._onTapStart):(u(t,"mousedown",this._onTapStart),u(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(u(t,"dragover",this),u(t,"dragenter",this)),bt.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),a(this,T())}function Xt(t,e,n,o,i,r,a,l){var s,c,u=t[j],d=u.options.onMove;return!window.CustomEvent||w||E?(s=document.createEvent("Event")).initEvent("move",!0,!0):s=new CustomEvent("move",{bubbles:!0,cancelable:!0}),s.to=e,s.from=t,s.dragged=n,s.draggedRect=o,s.related=i||e,s.relatedRect=r||X(e),s.willInsertAfter=l,s.originalEvent=a,t.dispatchEvent(s),d&&(c=d.call(u,s,a)),c}function Yt(t){t.draggable=!1}function Bt(){Dt=!1}function Ft(t){for(var e=t.tagName+t.className+t.src+t.href+t.textContent,n=e.length,o=0;n--;)o+=e.charCodeAt(n);return o.toString(36)}function Ht(t){return setTimeout(t,0)}function Lt(t){return clearTimeout(t)}Rt.prototype={constructor:Rt,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(ht=null)},_getDirection:function(t,e){return"function"==typeof this.options.direction?this.options.direction.call(this,t,e,z):this.options.direction},_onTapStart:function(e){if(e.cancelable){var n=this,o=this.el,t=this.options,i=t.preventOnFilter,r=e.type,a=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,l=(a||e).target,s=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,c=t.filter;if(function(t){St.length=0;var e=t.getElementsByTagName("input"),n=e.length;for(;n--;){var o=e[n];o.checked&&St.push(o)}}(o),!z&&!(/mousedown|pointerdown/.test(r)&&0!==e.button||t.disabled||s.isContentEditable||(l=P(l,t.draggable,o,!1))&&l.animated||Z===l)){if(J=F(l),et=F(l,t.draggable),"function"==typeof c){if(c.call(this,e,l,this))return W({sortable:n,rootEl:s,name:"filter",targetEl:l,toEl:o,fromEl:o}),K("filter",n,{evt:e}),void(i&&e.cancelable&&e.preventDefault())}else if(c&&(c=c.split(",").some(function(t){if(t=P(s,t.trim(),o,!1))return W({sortable:n,rootEl:t,name:"filter",targetEl:l,fromEl:o,toEl:o}),K("filter",n,{evt:e}),!0})))return void(i&&e.cancelable&&e.preventDefault());t.handle&&!P(s,t.handle,o,!1)||this._prepareDragStart(e,a,l)}}},_prepareDragStart:function(t,e,n){var o,i=this,r=i.el,a=i.options,l=r.ownerDocument;if(n&&!z&&n.parentNode===r){var s=X(n);if(q=r,G=(z=n).parentNode,V=z.nextSibling,Z=n,ot=a.group,rt={target:Rt.dragged=z,clientX:(e||t).clientX,clientY:(e||t).clientY},ct=rt.clientX-s.left,ut=rt.clientY-s.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,z.style["will-change"]="all",o=function(){K("delayEnded",i,{evt:t}),Rt.eventCanceled?i._onDrop():(i._disableDelayedDragEvents(),!c&&i.nativeDraggable&&(z.draggable=!0),i._triggerDragStart(t,e),W({sortable:i,name:"choose",originalEvent:t}),k(z,a.chosenClass,!0))},a.ignore.split(",").forEach(function(t){g(z,t.trim(),Yt)}),u(l,"dragover",Pt),u(l,"mousemove",Pt),u(l,"touchmove",Pt),u(l,"mouseup",i._onDrop),u(l,"touchend",i._onDrop),u(l,"touchcancel",i._onDrop),c&&this.nativeDraggable&&(this.options.touchStartThreshold=4,z.draggable=!0),K("delayStart",this,{evt:t}),!a.delay||a.delayOnTouchOnly&&!e||this.nativeDraggable&&(E||w))o();else{if(Rt.eventCanceled)return void this._onDrop();u(l,"mouseup",i._disableDelayedDrag),u(l,"touchend",i._disableDelayedDrag),u(l,"touchcancel",i._disableDelayedDrag),u(l,"mousemove",i._delayedDragTouchMoveHandler),u(l,"touchmove",i._delayedDragTouchMoveHandler),a.supportPointer&&u(l,"pointermove",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(o,a.delay)}}},_delayedDragTouchMoveHandler:function(t){var e=t.touches?t.touches[0]:t;Math.max(Math.abs(e.clientX-this._lastX),Math.abs(e.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){z&&Yt(z),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;d(t,"mouseup",this._disableDelayedDrag),d(t,"touchend",this._disableDelayedDrag),d(t,"touchcancel",this._disableDelayedDrag),d(t,"mousemove",this._delayedDragTouchMoveHandler),d(t,"touchmove",this._delayedDragTouchMoveHandler),d(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?u(document,"pointermove",this._onTouchMove):u(document,e?"touchmove":"mousemove",this._onTouchMove):(u(z,"dragend",this),u(q,"dragstart",this._onDragStart));try{document.selection?Ht(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){if(vt=!1,q&&z){K("dragStarted",this,{evt:e}),this.nativeDraggable&&u(document,"dragover",kt);var n=this.options;t||k(z,n.dragClass,!1),k(z,n.ghostClass,!0),Rt.active=this,t&&this._appendGhost(),W({sortable:this,name:"start",originalEvent:e})}else this._nulling()},_emulateDragOver:function(){if(at){this._lastX=at.clientX,this._lastY=at.clientY,Nt();for(var t=document.elementFromPoint(at.clientX,at.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(at.clientX,at.clientY))!==e;)e=t;if(z.parentNode[j]._isOutsideThisEl(t),e)do{if(e[j]){if(e[j]._onDragOver({clientX:at.clientX,clientY:at.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break}t=e}while(e=e.parentNode);It()}},_onTouchMove:function(t){if(rt){var e=this.options,n=e.fallbackTolerance,o=e.fallbackOffset,i=t.touches?t.touches[0]:t,r=U&&v(U,!0),a=U&&r&&r.a,l=U&&r&&r.d,s=Ct&>&&b(gt),c=(i.clientX-rt.clientX+o.x)/(a||1)+(s?s[0]-Et[0]:0)/(a||1),u=(i.clientY-rt.clientY+o.y)/(l||1)+(s?s[1]-Et[1]:0)/(l||1);if(!Rt.active&&!vt){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))o.right+10||t.clientX<=o.right&&t.clientY>o.bottom&&t.clientX>=o.left:t.clientX>o.right&&t.clientY>o.top||t.clientX<=o.right&&t.clientY>o.bottom+10}(n,a,this)&&!g.animated){if(g===z)return A(!1);if(g&&l===n.target&&(s=g),s&&(i=X(s)),!1!==Xt(q,l,z,o,s,i,n,!!s))return O(),l.appendChild(z),G=l,N(),A(!0)}else if(s.parentNode===l){i=X(s);var v,m,b,y=z.parentNode!==l,w=!function(t,e,n){var o=n?t.left:t.top,i=n?t.right:t.bottom,r=n?t.width:t.height,a=n?e.left:e.top,l=n?e.right:e.bottom,s=n?e.width:e.height;return o===a||i===l||o+r/2===a+s/2}(z.animated&&z.toRect||o,s.animated&&s.toRect||i,a),E=a?"top":"left",D=Y(s,"top","top")||Y(z,"top","top"),S=D?D.scrollTop:void 0;if(ht!==s&&(m=i[E],yt=!1,wt=!w&&e.invertSwap||y),0!==(v=function(t,e,n,o,i,r,a,l){var s=o?t.clientY:t.clientX,c=o?n.height:n.width,u=o?n.top:n.left,d=o?n.bottom:n.right,h=!1;if(!a)if(l&&pt]/g)||[]).length<=0)return!0;var d=a(c);return d.length>0}catch(a){return!1}},_process_options:function(b){this._o=a.extend({},this._o,b);var e=this.o=a.extend({},this._o),f=e.language;q[f]||(f=f.split("-")[0],q[f]||(f=o.language)),e.language=f,e.startView=this._resolveViewName(e.startView),e.minViewMode=this._resolveViewName(e.minViewMode),e.maxViewMode=this._resolveViewName(e.maxViewMode),e.startView=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,e.startView)),e.multidate!==!0&&(e.multidate=Number(e.multidate)||!1,e.multidate!==!1&&(e.multidate=Math.max(0,e.multidate))),e.multidateSeparator=String(e.multidateSeparator),e.weekStart%=7,e.weekEnd=(e.weekStart+6)%7;var g=r.parseFormat(e.format);e.startDate!==-(1/0)&&(e.startDate?e.startDate instanceof Date?e.startDate=this._local_to_utc(this._zero_time(e.startDate)):e.startDate=r.parseDate(e.startDate,g,e.language,e.assumeNearbyYear):e.startDate=-(1/0)),e.endDate!==1/0&&(e.endDate?e.endDate instanceof Date?e.endDate=this._local_to_utc(this._zero_time(e.endDate)):e.endDate=r.parseDate(e.endDate,g,e.language,e.assumeNearbyYear):e.endDate=1/0),e.daysOfWeekDisabled=this._resolveDaysOfWeek(e.daysOfWeekDisabled||[]),e.daysOfWeekHighlighted=this._resolveDaysOfWeek(e.daysOfWeekHighlighted||[]),e.datesDisabled=e.datesDisabled||[],a.isArray(e.datesDisabled)||(e.datesDisabled=e.datesDisabled.split(",")),e.datesDisabled=a.map(e.datesDisabled,function(a){return r.parseDate(a,g,e.language,e.assumeNearbyYear)});var h=String(e.orientation).toLowerCase().split(/\s+/g),i=e.orientation.toLowerCase();if(h=a.grep(h,function(a){return/^auto|left|right|top|bottom$/.test(a)}),e.orientation={x:"auto",y:"auto"},i&&"auto"!==i)if(1===h.length)switch(h[0]){case"top":case"bottom":e.orientation.y=h[0];break;case"left":case"right":e.orientation.x=h[0]}else i=a.grep(h,function(a){return/^left|right$/.test(a)}),e.orientation.x=i[0]||"auto",i=a.grep(h,function(a){return/^top|bottom$/.test(a)}),e.orientation.y=i[0]||"auto";else;if(e.defaultViewDate instanceof Date||"string"==typeof e.defaultViewDate)e.defaultViewDate=r.parseDate(e.defaultViewDate,g,e.language,e.assumeNearbyYear);else if(e.defaultViewDate){var j=e.defaultViewDate.year||(new Date).getFullYear(),k=e.defaultViewDate.month||0,l=e.defaultViewDate.day||1;e.defaultViewDate=c(j,k,l)}else e.defaultViewDate=d()},_events:[],_secondaryEvents:[],_applyEvents:function(a){for(var c,d,e,f=0;ff?(this.picker.addClass("datepicker-orient-right"),n+=m-b):this.o.rtl?this.picker.addClass("datepicker-orient-right"):this.picker.addClass("datepicker-orient-left");var p,q=this.o.orientation.y;if("auto"===q&&(p=-g+o-c,q=p<0?"bottom":"top"),this.picker.addClass("datepicker-orient-"+q),"top"===q?o-=c+parseInt(this.picker.css("padding-top")):o+=l,this.o.rtl){var r=f-(n+m);this.picker.css({top:o,right:r,zIndex:j})}else this.picker.css({top:o,left:n,zIndex:j});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var b=this.dates.copy(),c=[],d=!1;return arguments.length?(a.each(arguments,a.proxy(function(a,b){b instanceof Date&&(b=this._local_to_utc(b)),c.push(b)},this)),d=!0):(c=this.isInput?this.element.val():this.element.data("date")||this.inputField.val(),c=c&&this.o.multidate?c.split(this.o.multidateSeparator):[c],delete this.element.data().date),c=a.map(c,a.proxy(function(a){return r.parseDate(a,this.o.format,this.o.language,this.o.assumeNearbyYear)},this)),c=a.grep(c,a.proxy(function(a){return!this.dateWithinRange(a)||!a},this),!0),this.dates.replace(c),this.o.updateViewDate&&(this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDatethis.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate),d?(this.setValue(),this.element.change()):this.dates.length&&String(b)!==String(this.dates)&&d&&(this._trigger("changeDate"),this.element.change()),!this.dates.length&&b.length&&(this._trigger("clearDate"),this.element.change()),this.fill(),this},fillDow:function(){if(this.o.showWeekDays){var b=this.o.weekStart,c="";for(this.o.calendarWeeks&&(c+=' ');b'+q[this.o.language].daysMin[b++%7]+"";c+=" ",this.picker.find(".datepicker-days thead").append(c)}},fillMonths:function(){for(var a,b=this._utc_to_local(this.viewDate),c="",d=0;d<12;d++)a=b&&b.getMonth()===d?" focused":"",c+=''+q[this.o.language].monthsShort[d]+" ";this.picker.find(".datepicker-months td").html(c)},setRange:function(b){b&&b.length?this.range=a.map(b,function(a){return a.valueOf()}):delete this.range,this.fill()},getClassNames:function(b){var c=[],f=this.viewDate.getUTCFullYear(),g=this.viewDate.getUTCMonth(),h=d();return b.getUTCFullYear()f||b.getUTCFullYear()===f&&b.getUTCMonth()>g)&&c.push("new"),this.focusDate&&b.valueOf()===this.focusDate.valueOf()&&c.push("focused"),this.o.todayHighlight&&e(b,h)&&c.push("today"),this.dates.contains(b)!==-1&&c.push("active"),this.dateWithinRange(b)||c.push("disabled"),this.dateIsDisabled(b)&&c.push("disabled","disabled-date"),a.inArray(b.getUTCDay(),this.o.daysOfWeekHighlighted)!==-1&&c.push("highlighted"),this.range&&(b>this.range[0]&&bh)&&j.push("disabled"),t===r&&j.push("focused"),i!==a.noop&&(l=i(new Date(t,0,1)),l===b?l={}:"boolean"==typeof l?l={enabled:l}:"string"==typeof l&&(l={classes:l}),l.enabled===!1&&j.push("disabled"),l.classes&&(j=j.concat(l.classes.split(/\s+/))),l.tooltip&&(k=l.tooltip)),m+='"+t+" ";o.find(".datepicker-switch").text(p+"-"+q),o.find("td").html(m)},fill:function(){var d,e,f=new Date(this.viewDate),g=f.getUTCFullYear(),h=f.getUTCMonth(),i=this.o.startDate!==-(1/0)?this.o.startDate.getUTCFullYear():-(1/0),j=this.o.startDate!==-(1/0)?this.o.startDate.getUTCMonth():-(1/0),k=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,l=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,m=q[this.o.language].today||q.en.today||"",n=q[this.o.language].clear||q.en.clear||"",o=q[this.o.language].titleFormat||q.en.titleFormat;if(!isNaN(g)&&!isNaN(h)){this.picker.find(".datepicker-days .datepicker-switch").text(r.formatDate(f,o,this.o.language)),this.picker.find("tfoot .today").text(m).css("display",this.o.todayBtn===!0||"linked"===this.o.todayBtn?"table-cell":"none"),this.picker.find("tfoot .clear").text(n).css("display",this.o.clearBtn===!0?"table-cell":"none"),this.picker.find("thead .datepicker-title").text(this.o.title).css("display","string"==typeof this.o.title&&""!==this.o.title?"table-cell":"none"),this.updateNavArrows(),this.fillMonths();var p=c(g,h,0),s=p.getUTCDate();p.setUTCDate(s-(p.getUTCDay()-this.o.weekStart+7)%7);var t=new Date(p);p.getUTCFullYear()<100&&t.setUTCFullYear(p.getUTCFullYear()),t.setUTCDate(t.getUTCDate()+42),t=t.valueOf();for(var u,v,w=[];p.valueOf()"),this.o.calendarWeeks)){var x=new Date(+p+(this.o.weekStart-u-7)%7*864e5),y=new Date(Number(x)+(11-x.getUTCDay())%7*864e5),z=new Date(Number(z=c(y.getUTCFullYear(),0,1))+(11-z.getUTCDay())%7*864e5),A=(y-z)/864e5/7+1;w.push(''+A+" ")}v=this.getClassNames(p),v.push("day");var B=p.getUTCDate();this.o.beforeShowDay!==a.noop&&(e=this.o.beforeShowDay(this._utc_to_local(p)),e===b?e={}:"boolean"==typeof e?e={enabled:e}:"string"==typeof e&&(e={classes:e}),e.enabled===!1&&v.push("disabled"),e.classes&&(v=v.concat(e.classes.split(/\s+/))),e.tooltip&&(d=e.tooltip),e.content&&(B=e.content)),v=a.isFunction(a.uniqueSort)?a.uniqueSort(v):a.unique(v),w.push(''+B+" "),d=null,u===this.o.weekEnd&&w.push(""),p.setUTCDate(p.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").html(w.join(""));var C=q[this.o.language].monthsTitle||q.en.monthsTitle||"Months",D=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?C:g).end().find("tbody span").removeClass("active");if(a.each(this.dates,function(a,b){b.getUTCFullYear()===g&&D.eq(b.getUTCMonth()).addClass("active")}),(gk)&&D.addClass("disabled"),g===i&&D.slice(0,j).addClass("disabled"),g===k&&D.slice(l+1).addClass("disabled"),this.o.beforeShowMonth!==a.noop){var E=this;a.each(D,function(c,d){var e=new Date(g,c,1),f=E.o.beforeShowMonth(e);f===b?f={}:"boolean"==typeof f?f={enabled:f}:"string"==typeof f&&(f={classes:f}),f.enabled!==!1||a(d).hasClass("disabled")||a(d).addClass("disabled"),f.classes&&a(d).addClass(f.classes),f.tooltip&&a(d).prop("title",f.tooltip)})}this._fill_yearsView(".datepicker-years","year",10,g,i,k,this.o.beforeShowYear),this._fill_yearsView(".datepicker-decades","decade",100,g,i,k,this.o.beforeShowDecade),this._fill_yearsView(".datepicker-centuries","century",1e3,g,i,k,this.o.beforeShowCentury)}},updateNavArrows:function(){if(this._allow_update){var a,b,c=new Date(this.viewDate),d=c.getUTCFullYear(),e=c.getUTCMonth(),f=this.o.startDate!==-(1/0)?this.o.startDate.getUTCFullYear():-(1/0),g=this.o.startDate!==-(1/0)?this.o.startDate.getUTCMonth():-(1/0),h=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,i=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,j=1;switch(this.viewMode){case 4:j*=10;case 3:j*=10;case 2:j*=10;case 1:a=Math.floor(d/j)*jh;break;case 0:a=d<=f&&e=h&&e>i}this.picker.find(".prev").toggleClass("disabled",a),this.picker.find(".next").toggleClass("disabled",b)}},click:function(b){b.preventDefault(),b.stopPropagation();var e,f,g,h;e=a(b.target),e.hasClass("datepicker-switch")&&this.viewMode!==this.o.maxViewMode&&this.setViewMode(this.viewMode+1),e.hasClass("today")&&!e.hasClass("day")&&(this.setViewMode(0),this._setDate(d(),"linked"===this.o.todayBtn?null:"view")),e.hasClass("clear")&&this.clearDates(),e.hasClass("disabled")||(e.hasClass("month")||e.hasClass("year")||e.hasClass("decade")||e.hasClass("century"))&&(this.viewDate.setUTCDate(1),f=1,1===this.viewMode?(h=e.parent().find("span").index(e),g=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(h)):(h=0,g=Number(e.text()),this.viewDate.setUTCFullYear(g)),this._trigger(r.viewModes[this.viewMode-1].e,this.viewDate),this.viewMode===this.o.minViewMode?this._setDate(c(g,h,f)):(this.setViewMode(this.viewMode-1),this.fill())),this.picker.is(":visible")&&this._focused_from&&this._focused_from.focus(),delete this._focused_from},dayCellClick:function(b){var c=a(b.currentTarget),d=c.data("date"),e=new Date(d);this.o.updateViewDate&&(e.getUTCFullYear()!==this.viewDate.getUTCFullYear()&&this._trigger("changeYear",this.viewDate),e.getUTCMonth()!==this.viewDate.getUTCMonth()&&this._trigger("changeMonth",this.viewDate)),this._setDate(e)},navArrowsClick:function(b){var c=a(b.currentTarget),d=c.hasClass("prev")?-1:1;0!==this.viewMode&&(d*=12*r.viewModes[this.viewMode].navStep),this.viewDate=this.moveMonth(this.viewDate,d),this._trigger(r.viewModes[this.viewMode].e,this.viewDate),this.fill()},_toggle_multidate:function(a){var b=this.dates.contains(a);if(a||this.dates.clear(),b!==-1?(this.o.multidate===!0||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(b):this.o.multidate===!1?(this.dates.clear(),this.dates.push(a)):this.dates.push(a),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(a,b){b&&"date"!==b||this._toggle_multidate(a&&new Date(a)),(!b&&this.o.updateViewDate||"view"===b)&&(this.viewDate=a&&new Date(a)),this.fill(),this.setValue(),b&&"view"===b||this._trigger("changeDate"),this.inputField.trigger("change"),!this.o.autoclose||b&&"date"!==b||this.hide()},moveDay:function(a,b){var c=new Date(a);return c.setUTCDate(a.getUTCDate()+b),c},moveWeek:function(a,b){return this.moveDay(a,7*b)},moveMonth:function(a,b){if(!g(a))return this.o.defaultViewDate;if(!b)return a;var c,d,e=new Date(a.valueOf()),f=e.getUTCDate(),h=e.getUTCMonth(),i=Math.abs(b);if(b=b>0?1:-1,1===i)d=b===-1?function(){return e.getUTCMonth()===h}:function(){return e.getUTCMonth()!==c},c=h+b,e.setUTCMonth(c),c=(c+12)%12;else{for(var j=0;j0},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(!this.picker.is(":visible"))return void(40!==a.keyCode&&27!==a.keyCode||(this.show(),a.stopPropagation()));var b,c,d=!1,e=this.focusDate||this.viewDate;switch(a.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),a.preventDefault(),a.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break;b=37===a.keyCode||38===a.keyCode?-1:1,0===this.viewMode?a.ctrlKey?(c=this.moveAvailableDate(e,b,"moveYear"),c&&this._trigger("changeYear",this.viewDate)):a.shiftKey?(c=this.moveAvailableDate(e,b,"moveMonth"),c&&this._trigger("changeMonth",this.viewDate)):37===a.keyCode||39===a.keyCode?c=this.moveAvailableDate(e,b,"moveDay"):this.weekOfDateIsDisabled(e)||(c=this.moveAvailableDate(e,b,"moveWeek")):1===this.viewMode?(38!==a.keyCode&&40!==a.keyCode||(b*=4),c=this.moveAvailableDate(e,b,"moveMonth")):2===this.viewMode&&(38!==a.keyCode&&40!==a.keyCode||(b*=4),c=this.moveAvailableDate(e,b,"moveYear")),c&&(this.focusDate=this.viewDate=c,this.setValue(),this.fill(),a.preventDefault());break;case 13:if(!this.o.forceParse)break;e=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(e),d=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(a.preventDefault(),a.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}d&&(this.dates.length?this._trigger("changeDate"):this._trigger("clearDate"),this.inputField.trigger("change"))},setViewMode:function(a){this.viewMode=a,this.picker.children("div").hide().filter(".datepicker-"+r.viewModes[this.viewMode].clsName).show(),this.updateNavArrows(),this._trigger("changeViewMode",new Date(this.viewDate))}};var l=function(b,c){a.data(b,"datepicker",this),this.element=a(b),this.inputs=a.map(c.inputs,function(a){return a.jquery?a[0]:a}),delete c.inputs,this.keepEmptyValues=c.keepEmptyValues,delete c.keepEmptyValues,n.call(a(this.inputs),c).on("changeDate",a.proxy(this.dateUpdated,this)),this.pickers=a.map(this.inputs,function(b){return a.data(b,"datepicker")}),this.updateDates()};l.prototype={updateDates:function(){this.dates=a.map(this.pickers,function(a){return a.getUTCDate()}),this.updateRanges()},updateRanges:function(){var b=a.map(this.dates,function(a){return a.valueOf()});a.each(this.pickers,function(a,c){c.setRange(b)})},clearDates:function(){a.each(this.pickers,function(a,b){b.clearDates()})},dateUpdated:function(c){if(!this.updating){this.updating=!0;var d=a.data(c.target,"datepicker");if(d!==b){var e=d.getUTCDate(),f=this.keepEmptyValues,g=a.inArray(c.target,this.inputs),h=g-1,i=g+1,j=this.inputs.length;if(g!==-1){if(a.each(this.pickers,function(a,b){b.getUTCDate()||b!==d&&f||b.setUTCDate(e)}),e=0&ðis.dates[i])for(;ithis.dates[i];)this.pickers[i++].setUTCDate(e);this.updateDates(),delete this.updating}}}},destroy:function(){a.map(this.pickers,function(a){a.destroy()}),a(this.inputs).off("changeDate",this.dateUpdated),delete this.element.data().datepicker},remove:f("destroy","Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead")};var m=a.fn.datepicker,n=function(c){var d=Array.apply(null,arguments);d.shift();var e;if(this.each(function(){var b=a(this),f=b.data("datepicker"),g="object"==typeof c&&c;if(!f){var j=h(this,"date"),m=a.extend({},o,j,g),n=i(m.language),p=a.extend({},o,n,j,g);b.hasClass("input-daterange")||p.inputs?(a.extend(p,{inputs:p.inputs||b.find("input").toArray()}),f=new l(this,p)):f=new k(this,p),b.data("datepicker",f)}"string"==typeof c&&"function"==typeof f[c]&&(e=f[c].apply(f,d))}),e===b||e instanceof k||e instanceof l)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+c+" function)");return e};a.fn.datepicker=n;var o=a.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:a.noop,beforeShowMonth:a.noop,beforeShowYear:a.noop,beforeShowDecade:a.noop,beforeShowCentury:a.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keepEmptyValues:!1,keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-(1/0),startView:0,todayBtn:!1,todayHighlight:!1,updateViewDate:!0,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body",immediateUpdates:!1,title:"",templates:{leftArrow:"«",rightArrow:"»"},showWeekDays:!0},p=a.fn.datepicker.locale_opts=["format","rtl","weekStart"];a.fn.datepicker.Constructor=k;var q=a.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},r={viewModes:[{names:["days","month"],clsName:"days",e:"changeMonth"},{names:["months","year"],clsName:"months",e:"changeYear",navStep:1},{names:["years","decade"],clsName:"years",e:"changeDecade",navStep:10},{names:["decades","century"],clsName:"decades",e:"changeCentury",navStep:100},{names:["centuries","millennium"],clsName:"centuries",e:"changeMillennium",navStep:1e3}],validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(a){if("function"==typeof a.toValue&&"function"==typeof a.toDisplay)return a;var b=a.replace(this.validParts,"\0").split("\0"),c=a.match(this.validParts);if(!b||!b.length||!c||0===c.length)throw new Error("Invalid date format.");return{separators:b,parts:c}},parseDate:function(c,e,f,g){function h(a,b){return b===!0&&(b=10),a<100&&(a+=2e3,a>(new Date).getFullYear()+b&&(a-=100)),a}function i(){var a=this.slice(0,j[n].length),b=j[n].slice(0,a.length);return a.toLowerCase()===b.toLowerCase()}if(!c)return b;if(c instanceof Date)return c;if("string"==typeof e&&(e=r.parseFormat(e)),e.toValue)return e.toValue(c,e,f);var j,l,m,n,o,p={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"},s={yesterday:"-1d",today:"+0d",tomorrow:"+1d"};if(c in s&&(c=s[c]),/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(c)){for(j=c.match(/([\-+]\d+)([dmwy])/gi),c=new Date,n=0;n'+o.templates.leftArrow+' '+o.templates.rightArrow+" ",
-contTemplate:' ',footTemplate:' '};r.template=''+r.headTemplate+" "+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+"
",a.fn.datepicker.DPGlobal=r,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=m,this},a.fn.datepicker.version="1.8.0",a.fn.datepicker.deprecated=function(a){var b=window.console;b&&b.warn&&b.warn("DEPRECATED: "+a)},a(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(b){var c=a(this);c.data("datepicker")||(b.preventDefault(),n.call(c,"show"))}),a(function(){n.call(a('[data-provide="datepicker-inline"]'))})});
\ No newline at end of file
+!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a,b){function c(){return new Date(Date.UTC.apply(Date,arguments))}function d(){var a=new Date;return c(a.getFullYear(),a.getMonth(),a.getDate())}function e(a,b){return a.getUTCFullYear()===b.getUTCFullYear()&&a.getUTCMonth()===b.getUTCMonth()&&a.getUTCDate()===b.getUTCDate()}function f(c,d){return function(){return d!==b&&a.fn.datepicker.deprecated(d),this[c].apply(this,arguments)}}function g(a){return a&&!isNaN(a.getTime())}function h(b,c){function d(a,b){return b.toLowerCase()}var e,f=a(b).data(),g={},h=new RegExp("^"+c.toLowerCase()+"([A-Z])");c=new RegExp("^"+c.toLowerCase());for(var i in f)c.test(i)&&(e=i.replace(h,d),g[e]=f[i]);return g}function i(b){var c={};if(q[b]||(b=b.split("-")[0],q[b])){var d=q[b];return a.each(p,function(a,b){b in d&&(c[b]=d[b])}),c}}var j=function(){var b={get:function(a){return this.slice(a)[0]},contains:function(a){for(var b=a&&a.valueOf(),c=0,d=this.length;c]/g)||[]).length<=0)return!0;return a(c).length>0}catch(a){return!1}},_process_options:function(b){this._o=a.extend({},this._o,b);var e=this.o=a.extend({},this._o),f=e.language;q[f]||(f=f.split("-")[0],q[f]||(f=o.language)),e.language=f,e.startView=this._resolveViewName(e.startView),e.minViewMode=this._resolveViewName(e.minViewMode),e.maxViewMode=this._resolveViewName(e.maxViewMode),e.startView=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,e.startView)),!0!==e.multidate&&(e.multidate=Number(e.multidate)||!1,!1!==e.multidate&&(e.multidate=Math.max(0,e.multidate))),e.multidateSeparator=String(e.multidateSeparator),e.weekStart%=7,e.weekEnd=(e.weekStart+6)%7;var g=r.parseFormat(e.format);e.startDate!==-1/0&&(e.startDate?e.startDate instanceof Date?e.startDate=this._local_to_utc(this._zero_time(e.startDate)):e.startDate=r.parseDate(e.startDate,g,e.language,e.assumeNearbyYear):e.startDate=-1/0),e.endDate!==1/0&&(e.endDate?e.endDate instanceof Date?e.endDate=this._local_to_utc(this._zero_time(e.endDate)):e.endDate=r.parseDate(e.endDate,g,e.language,e.assumeNearbyYear):e.endDate=1/0),e.daysOfWeekDisabled=this._resolveDaysOfWeek(e.daysOfWeekDisabled||[]),e.daysOfWeekHighlighted=this._resolveDaysOfWeek(e.daysOfWeekHighlighted||[]),e.datesDisabled=e.datesDisabled||[],a.isArray(e.datesDisabled)||(e.datesDisabled=e.datesDisabled.split(",")),e.datesDisabled=a.map(e.datesDisabled,function(a){return r.parseDate(a,g,e.language,e.assumeNearbyYear)});var h=String(e.orientation).toLowerCase().split(/\s+/g),i=e.orientation.toLowerCase();if(h=a.grep(h,function(a){return/^auto|left|right|top|bottom$/.test(a)}),e.orientation={x:"auto",y:"auto"},i&&"auto"!==i)if(1===h.length)switch(h[0]){case"top":case"bottom":e.orientation.y=h[0];break;case"left":case"right":e.orientation.x=h[0]}else i=a.grep(h,function(a){return/^left|right$/.test(a)}),e.orientation.x=i[0]||"auto",i=a.grep(h,function(a){return/^top|bottom$/.test(a)}),e.orientation.y=i[0]||"auto";else;if(e.defaultViewDate instanceof Date||"string"==typeof e.defaultViewDate)e.defaultViewDate=r.parseDate(e.defaultViewDate,g,e.language,e.assumeNearbyYear);else if(e.defaultViewDate){var j=e.defaultViewDate.year||(new Date).getFullYear(),k=e.defaultViewDate.month||0,l=e.defaultViewDate.day||1;e.defaultViewDate=c(j,k,l)}else e.defaultViewDate=d()},_applyEvents:function(a){for(var c,d,e,f=0;fe?(this.picker.addClass("datepicker-orient-right"),m+=l-b):this.o.rtl?this.picker.addClass("datepicker-orient-right"):this.picker.addClass("datepicker-orient-left");var o,p=this.o.orientation.y;if("auto"===p&&(o=-f+n-c,p=o<0?"bottom":"top"),this.picker.addClass("datepicker-orient-"+p),"top"===p?n-=c+parseInt(this.picker.css("padding-top")):n+=k,this.o.rtl){var q=e-(m+l);this.picker.css({top:n,right:q,zIndex:i})}else this.picker.css({top:n,left:m,zIndex:i});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var b=this.dates.copy(),c=[],d=!1;return arguments.length?(a.each(arguments,a.proxy(function(a,b){b instanceof Date&&(b=this._local_to_utc(b)),c.push(b)},this)),d=!0):(c=this.isInput?this.element.val():this.element.data("date")||this.inputField.val(),c=c&&this.o.multidate?c.split(this.o.multidateSeparator):[c],delete this.element.data().date),c=a.map(c,a.proxy(function(a){return r.parseDate(a,this.o.format,this.o.language,this.o.assumeNearbyYear)},this)),c=a.grep(c,a.proxy(function(a){return!this.dateWithinRange(a)||!a},this),!0),this.dates.replace(c),this.o.updateViewDate&&(this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDatethis.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate),d?(this.setValue(),this.element.change()):this.dates.length&&String(b)!==String(this.dates)&&d&&(this._trigger("changeDate"),this.element.change()),!this.dates.length&&b.length&&(this._trigger("clearDate"),this.element.change()),this.fill(),this},fillDow:function(){if(this.o.showWeekDays){var b=this.o.weekStart,c="";for(this.o.calendarWeeks&&(c+=' ');b'+q[this.o.language].daysMin[b++%7]+"";c+=" ",this.picker.find(".datepicker-days thead").append(c)}},fillMonths:function(){for(var a,b=this._utc_to_local(this.viewDate),c="",d=0;d<12;d++)a=b&&b.getMonth()===d?" focused":"",c+=''+q[this.o.language].monthsShort[d]+" ";this.picker.find(".datepicker-months td").html(c)},setRange:function(b){b&&b.length?this.range=a.map(b,function(a){return a.valueOf()}):delete this.range,this.fill()},getClassNames:function(b){var c=[],f=this.viewDate.getUTCFullYear(),g=this.viewDate.getUTCMonth(),h=d();return b.getUTCFullYear()f||b.getUTCFullYear()===f&&b.getUTCMonth()>g)&&c.push("new"),this.focusDate&&b.valueOf()===this.focusDate.valueOf()&&c.push("focused"),this.o.todayHighlight&&e(b,h)&&c.push("today"),-1!==this.dates.contains(b)&&c.push("active"),this.dateWithinRange(b)||c.push("disabled"),this.dateIsDisabled(b)&&c.push("disabled","disabled-date"),-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekHighlighted)&&c.push("highlighted"),this.range&&(b>this.range[0]&&bh)&&j.push("disabled"),t===r&&j.push("focused"),i!==a.noop&&(l=i(new Date(t,0,1)),l===b?l={}:"boolean"==typeof l?l={enabled:l}:"string"==typeof l&&(l={classes:l}),!1===l.enabled&&j.push("disabled"),l.classes&&(j=j.concat(l.classes.split(/\s+/))),l.tooltip&&(k=l.tooltip)),m+='"+t+" ";o.find(".datepicker-switch").text(p+"-"+q),o.find("td").html(m)},fill:function(){var e,f,g=new Date(this.viewDate),h=g.getUTCFullYear(),i=g.getUTCMonth(),j=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,k=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,l=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,m=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,n=q[this.o.language].today||q.en.today||"",o=q[this.o.language].clear||q.en.clear||"",p=q[this.o.language].titleFormat||q.en.titleFormat,s=d(),t=(!0===this.o.todayBtn||"linked"===this.o.todayBtn)&&s>=this.o.startDate&&s<=this.o.endDate&&!this.weekOfDateIsDisabled(s);if(!isNaN(h)&&!isNaN(i)){this.picker.find(".datepicker-days .datepicker-switch").text(r.formatDate(g,p,this.o.language)),this.picker.find("tfoot .today").text(n).css("display",t?"table-cell":"none"),this.picker.find("tfoot .clear").text(o).css("display",!0===this.o.clearBtn?"table-cell":"none"),this.picker.find("thead .datepicker-title").text(this.o.title).css("display","string"==typeof this.o.title&&""!==this.o.title?"table-cell":"none"),this.updateNavArrows(),this.fillMonths();var u=c(h,i,0),v=u.getUTCDate();u.setUTCDate(v-(u.getUTCDay()-this.o.weekStart+7)%7);var w=new Date(u);u.getUTCFullYear()<100&&w.setUTCFullYear(u.getUTCFullYear()),w.setUTCDate(w.getUTCDate()+42),w=w.valueOf();for(var x,y,z=[];u.valueOf()"),this.o.calendarWeeks)){var A=new Date(+u+(this.o.weekStart-x-7)%7*864e5),B=new Date(Number(A)+(11-A.getUTCDay())%7*864e5),C=new Date(Number(C=c(B.getUTCFullYear(),0,1))+(11-C.getUTCDay())%7*864e5),D=(B-C)/864e5/7+1;z.push(''+D+" ")}y=this.getClassNames(u),y.push("day");var E=u.getUTCDate();this.o.beforeShowDay!==a.noop&&(f=this.o.beforeShowDay(this._utc_to_local(u)),f===b?f={}:"boolean"==typeof f?f={enabled:f}:"string"==typeof f&&(f={classes:f}),!1===f.enabled&&y.push("disabled"),f.classes&&(y=y.concat(f.classes.split(/\s+/))),f.tooltip&&(e=f.tooltip),f.content&&(E=f.content)),y=a.isFunction(a.uniqueSort)?a.uniqueSort(y):a.unique(y),z.push(''+E+" "),e=null,x===this.o.weekEnd&&z.push(""),u.setUTCDate(u.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").html(z.join(""));var F=q[this.o.language].monthsTitle||q.en.monthsTitle||"Months",G=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?F:h).end().find("tbody span").removeClass("active");if(a.each(this.dates,function(a,b){b.getUTCFullYear()===h&&G.eq(b.getUTCMonth()).addClass("active")}),(hl)&&G.addClass("disabled"),h===j&&G.slice(0,k).addClass("disabled"),h===l&&G.slice(m+1).addClass("disabled"),this.o.beforeShowMonth!==a.noop){var H=this;a.each(G,function(c,d){var e=new Date(h,c,1),f=H.o.beforeShowMonth(e);f===b?f={}:"boolean"==typeof f?f={enabled:f}:"string"==typeof f&&(f={classes:f}),!1!==f.enabled||a(d).hasClass("disabled")||a(d).addClass("disabled"),f.classes&&a(d).addClass(f.classes),f.tooltip&&a(d).prop("title",f.tooltip)})}this._fill_yearsView(".datepicker-years","year",10,h,j,l,this.o.beforeShowYear),this._fill_yearsView(".datepicker-decades","decade",100,h,j,l,this.o.beforeShowDecade),this._fill_yearsView(".datepicker-centuries","century",1e3,h,j,l,this.o.beforeShowCentury)}},updateNavArrows:function(){if(this._allow_update){var a,b,c=new Date(this.viewDate),d=c.getUTCFullYear(),e=c.getUTCMonth(),f=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,g=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,h=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,i=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,j=1;switch(this.viewMode){case 4:j*=10;case 3:j*=10;case 2:j*=10;case 1:a=Math.floor(d/j)*j<=f,b=Math.floor(d/j)*j+j>h;break;case 0:a=d<=f&&e<=g,b=d>=h&&e>=i}this.picker.find(".prev").toggleClass("disabled",a),this.picker.find(".next").toggleClass("disabled",b)}},click:function(b){b.preventDefault(),b.stopPropagation();var e,f,g,h;e=a(b.target),e.hasClass("datepicker-switch")&&this.viewMode!==this.o.maxViewMode&&this.setViewMode(this.viewMode+1),e.hasClass("today")&&!e.hasClass("day")&&(this.setViewMode(0),this._setDate(d(),"linked"===this.o.todayBtn?null:"view")),e.hasClass("clear")&&this.clearDates(),e.hasClass("disabled")||(e.hasClass("month")||e.hasClass("year")||e.hasClass("decade")||e.hasClass("century"))&&(this.viewDate.setUTCDate(1),f=1,1===this.viewMode?(h=e.parent().find("span").index(e),g=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(h)):(h=0,g=Number(e.text()),this.viewDate.setUTCFullYear(g)),this._trigger(r.viewModes[this.viewMode-1].e,this.viewDate),this.viewMode===this.o.minViewMode?this._setDate(c(g,h,f)):(this.setViewMode(this.viewMode-1),this.fill())),this.picker.is(":visible")&&this._focused_from&&this._focused_from.focus(),delete this._focused_from},dayCellClick:function(b){var c=a(b.currentTarget),d=c.data("date"),e=new Date(d);this.o.updateViewDate&&(e.getUTCFullYear()!==this.viewDate.getUTCFullYear()&&this._trigger("changeYear",this.viewDate),e.getUTCMonth()!==this.viewDate.getUTCMonth()&&this._trigger("changeMonth",this.viewDate)),this._setDate(e)},navArrowsClick:function(b){var c=a(b.currentTarget),d=c.hasClass("prev")?-1:1;0!==this.viewMode&&(d*=12*r.viewModes[this.viewMode].navStep),this.viewDate=this.moveMonth(this.viewDate,d),this._trigger(r.viewModes[this.viewMode].e,this.viewDate),this.fill()},_toggle_multidate:function(a){var b=this.dates.contains(a);if(a||this.dates.clear(),-1!==b?(!0===this.o.multidate||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(b):!1===this.o.multidate?(this.dates.clear(),this.dates.push(a)):this.dates.push(a),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(a,b){b&&"date"!==b||this._toggle_multidate(a&&new Date(a)),(!b&&this.o.updateViewDate||"view"===b)&&(this.viewDate=a&&new Date(a)),this.fill(),this.setValue(),b&&"view"===b||this._trigger("changeDate"),this.inputField.trigger("change"),!this.o.autoclose||b&&"date"!==b||this.hide()},moveDay:function(a,b){var c=new Date(a);return c.setUTCDate(a.getUTCDate()+b),c},moveWeek:function(a,b){return this.moveDay(a,7*b)},moveMonth:function(a,b){if(!g(a))return this.o.defaultViewDate;if(!b)return a;var c,d,e=new Date(a.valueOf()),f=e.getUTCDate(),h=e.getUTCMonth(),i=Math.abs(b);if(b=b>0?1:-1,1===i)d=-1===b?function(){return e.getUTCMonth()===h}:function(){return e.getUTCMonth()!==c},c=h+b,e.setUTCMonth(c),c=(c+12)%12;else{for(var j=0;j0},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(!this.picker.is(":visible"))return void(40!==a.keyCode&&27!==a.keyCode||(this.show(),a.stopPropagation()));var b,c,d=!1,e=this.focusDate||this.viewDate;switch(a.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),a.preventDefault(),a.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break;b=37===a.keyCode||38===a.keyCode?-1:1,0===this.viewMode?a.ctrlKey?(c=this.moveAvailableDate(e,b,"moveYear"))&&this._trigger("changeYear",this.viewDate):a.shiftKey?(c=this.moveAvailableDate(e,b,"moveMonth"))&&this._trigger("changeMonth",this.viewDate):37===a.keyCode||39===a.keyCode?c=this.moveAvailableDate(e,b,"moveDay"):this.weekOfDateIsDisabled(e)||(c=this.moveAvailableDate(e,b,"moveWeek")):1===this.viewMode?(38!==a.keyCode&&40!==a.keyCode||(b*=4),c=this.moveAvailableDate(e,b,"moveMonth")):2===this.viewMode&&(38!==a.keyCode&&40!==a.keyCode||(b*=4),c=this.moveAvailableDate(e,b,"moveYear")),c&&(this.focusDate=this.viewDate=c,this.setValue(),this.fill(),a.preventDefault());break;case 13:if(!this.o.forceParse)break;e=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(e),d=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(a.preventDefault(),a.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}d&&(this.dates.length?this._trigger("changeDate"):this._trigger("clearDate"),this.inputField.trigger("change"))},setViewMode:function(a){this.viewMode=a,this.picker.children("div").hide().filter(".datepicker-"+r.viewModes[this.viewMode].clsName).show(),this.updateNavArrows(),this._trigger("changeViewMode",new Date(this.viewDate))}};var l=function(b,c){a.data(b,"datepicker",this),this.element=a(b),this.inputs=a.map(c.inputs,function(a){return a.jquery?a[0]:a}),delete c.inputs,this.keepEmptyValues=c.keepEmptyValues,delete c.keepEmptyValues,n.call(a(this.inputs),c).on("changeDate",a.proxy(this.dateUpdated,this)),this.pickers=a.map(this.inputs,function(b){return a.data(b,"datepicker")}),this.updateDates()};l.prototype={updateDates:function(){this.dates=a.map(this.pickers,function(a){return a.getUTCDate()}),this.updateRanges()},updateRanges:function(){var b=a.map(this.dates,function(a){return a.valueOf()});a.each(this.pickers,function(a,c){c.setRange(b)})},clearDates:function(){a.each(this.pickers,function(a,b){b.clearDates()})},dateUpdated:function(c){if(!this.updating){this.updating=!0;var d=a.data(c.target,"datepicker");if(d!==b){var e=d.getUTCDate(),f=this.keepEmptyValues,g=a.inArray(c.target,this.inputs),h=g-1,i=g+1,j=this.inputs.length;if(-1!==g){if(a.each(this.pickers,function(a,b){b.getUTCDate()||b!==d&&f||b.setUTCDate(e)}),e=0&ðis.dates[i])for(;ithis.dates[i];)this.pickers[i++].setUTCDate(e);this.updateDates(),delete this.updating}}}},destroy:function(){a.map(this.pickers,function(a){a.destroy()}),a(this.inputs).off("changeDate",this.dateUpdated),delete this.element.data().datepicker},remove:f("destroy","Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead")};var m=a.fn.datepicker,n=function(c){var d=Array.apply(null,arguments);d.shift();var e;if(this.each(function(){var b=a(this),f=b.data("datepicker"),g="object"==typeof c&&c;if(!f){var j=h(this,"date"),m=a.extend({},o,j,g),n=i(m.language),p=a.extend({},o,n,j,g);b.hasClass("input-daterange")||p.inputs?(a.extend(p,{inputs:p.inputs||b.find("input").toArray()}),f=new l(this,p)):f=new k(this,p),b.data("datepicker",f)}"string"==typeof c&&"function"==typeof f[c]&&(e=f[c].apply(f,d))}),e===b||e instanceof k||e instanceof l)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+c+" function)");return e};a.fn.datepicker=n;var o=a.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:a.noop,beforeShowMonth:a.noop,beforeShowYear:a.noop,beforeShowDecade:a.noop,beforeShowCentury:a.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keepEmptyValues:!1,keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-1/0,startView:0,todayBtn:!1,todayHighlight:!1,updateViewDate:!0,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body",immediateUpdates:!1,title:"",templates:{leftArrow:"«",rightArrow:"»"},showWeekDays:!0},p=a.fn.datepicker.locale_opts=["format","rtl","weekStart"];a.fn.datepicker.Constructor=k;var q=a.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},r={viewModes:[{names:["days","month"],clsName:"days",e:"changeMonth"},{names:["months","year"],clsName:"months",e:"changeYear",navStep:1},{names:["years","decade"],clsName:"years",e:"changeDecade",navStep:10},{names:["decades","century"],clsName:"decades",e:"changeCentury",navStep:100},{names:["centuries","millennium"],clsName:"centuries",e:"changeMillennium",navStep:1e3}],validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(a){if("function"==typeof a.toValue&&"function"==typeof a.toDisplay)return a;var b=a.replace(this.validParts,"\0").split("\0"),c=a.match(this.validParts);if(!b||!b.length||!c||0===c.length)throw new Error("Invalid date format.");return{separators:b,parts:c}},parseDate:function(c,e,f,g){function h(a,b){return!0===b&&(b=10),a<100&&(a+=2e3)>(new Date).getFullYear()+b&&(a-=100),a}function i(){var a=this.slice(0,j[n].length),b=j[n].slice(0,a.length);return a.toLowerCase()===b.toLowerCase()}if(!c)return b;if(c instanceof Date)return c;if("string"==typeof e&&(e=r.parseFormat(e)),e.toValue)return e.toValue(c,e,f);var j,l,m,n,o,p={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"},s={yesterday:"-1d",today:"+0d",tomorrow:"+1d"};if(c in s&&(c=s[c]),/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(c)){for(j=c.match(/([\-+]\d+)([dmwy])/gi),c=new Date,n=0;n'+o.templates.leftArrow+' '+o.templates.rightArrow+" ",contTemplate:' ',footTemplate:' '};r.template=''+r.headTemplate+" "+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+"
",a.fn.datepicker.DPGlobal=r,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=m,this},a.fn.datepicker.version="1.9.0",a.fn.datepicker.deprecated=function(a){var b=window.console;b&&b.warn&&b.warn("DEPRECATED: "+a)},a(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(b){var c=a(this);c.data("datepicker")||(b.preventDefault(),n.call(c,"show"))}),a(function(){n.call(a('[data-provide="datepicker-inline"]'))})});
\ No newline at end of file
diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.cs.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.cs.min.js
new file mode 100644
index 000000000..42dfd1a29
--- /dev/null
+++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.cs.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.cs={days:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],daysShort:["Ned","Pon","Úte","Stř","Čtv","Pát","Sob"],daysMin:["Ne","Po","Út","St","Čt","Pá","So"],months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],monthsShort:["Led","Úno","Bře","Dub","Kvě","Čer","Čnc","Srp","Zář","Říj","Lis","Pro"],today:"Dnes",clear:"Vymazat",monthsTitle:"Měsíc",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.el.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.el.min.js
new file mode 100644
index 000000000..046e9eb5e
--- /dev/null
+++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.el.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.el={days:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],daysShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],daysMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthsShort:["Ιαν","Φεβ","Μαρ","Απρ","Μάι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],today:"Σήμερα",clear:"Καθαρισμός",weekStart:1,format:"d/m/yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fi.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fi.min.js
new file mode 100644
index 000000000..239dfb796
--- /dev/null
+++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fi.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.fi={days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],daysShort:["sun","maa","tii","kes","tor","per","lau"],daysMin:["su","ma","ti","ke","to","pe","la"],months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],monthsShort:["tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mar","jou"],today:"tänään",clear:"Tyhjennä",weekStart:1,format:"d.m.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js
new file mode 100644
index 000000000..f9decf9a2
--- /dev/null
+++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.hu={days:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],daysShort:["vas","hét","ked","sze","csü","pén","szo"],daysMin:["V","H","K","Sze","Cs","P","Szo"],months:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],monthsShort:["jan","feb","már","ápr","máj","jún","júl","aug","sze","okt","nov","dec"],today:"ma",weekStart:1,clear:"töröl",titleFormat:"yyyy. MM",format:"yyyy.mm.dd"}}(jQuery);
\ No newline at end of file
diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js
new file mode 100644
index 000000000..648d83f84
--- /dev/null
+++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.km={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"}}(jQuery);
\ No newline at end of file
diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js
new file mode 100644
index 000000000..7ab6becb9
--- /dev/null
+++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.sv={days:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],daysShort:["sön","mån","tis","ons","tor","fre","lör"],daysMin:["sö","må","ti","on","to","fr","lö"],months:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],today:"Idag",format:"yyyy-mm-dd",weekStart:1,clear:"Rensa"}}(jQuery);
\ No newline at end of file
diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js
new file mode 100644
index 000000000..7889b1135
--- /dev/null
+++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.tr={days:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],daysShort:["Pz","Pzt","Sal","Çrş","Prş","Cu","Cts"],daysMin:["Pz","Pzt","Sa","Çr","Pr","Cu","Ct"],months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthsShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],today:"Bugün",clear:"Temizle",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js
new file mode 100644
index 000000000..41b02e6b2
--- /dev/null
+++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.uk={days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],daysShort:["Нед","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Cічень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthsShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],today:"Сьогодні",clear:"Очистити",format:"dd.mm.yyyy",weekStart:1}}(jQuery);
\ No newline at end of file
diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh_Hans_CN.min.js
similarity index 73%
rename from cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js
rename to cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh_Hans_CN.min.js
index 127917640..8e6920b0c 100644
--- a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js
+++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh_Hans_CN.min.js
@@ -1 +1 @@
-!function(a){a.fn.datepicker.dates["zh-CN"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["周日","周一","周二","周三","周四","周五","周六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",clear:"清除",format:"yyyy年mm月dd日",titleFormat:"yyyy年mm月",weekStart:1}}(jQuery);
\ No newline at end of file
+!function(a){a.fn.datepicker.dates["zh-CN"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["周日","周一","周二","周三","周四","周五","周六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",monthsTitle:"选择月份",clear:"清除",format:"yyyy-mm-dd",titleFormat:"yyyy年mm月",weekStart:1}}(jQuery);
\ No newline at end of file
diff --git a/cps/static/js/libs/bootstrap-table/bootstrap-table-editable.min.js b/cps/static/js/libs/bootstrap-table/bootstrap-table-editable.min.js
index e93e82465..cd4110370 100644
--- a/cps/static/js/libs/bootstrap-table/bootstrap-table-editable.min.js
+++ b/cps/static/js/libs/bootstrap-table/bootstrap-table-editable.min.js
@@ -1,7 +1,10 @@
-/*
-* bootstrap-table - v1.12.1 - 2018-03-12
-* https://github.com/wenzhixin/bootstrap-table
-* Copyright (c) 2018 zhixin wen
-* Licensed MIT License
-*/
-!function(a){"use strict";a.extend(a.fn.bootstrapTable.defaults,{editable:!0,onEditableInit:function(){return!1},onEditableSave:function(){return!1},onEditableShown:function(){return!1},onEditableHidden:function(){return!1}}),a.extend(a.fn.bootstrapTable.Constructor.EVENTS,{"editable-init.bs.table":"onEditableInit","editable-save.bs.table":"onEditableSave","editable-shown.bs.table":"onEditableShown","editable-hidden.bs.table":"onEditableHidden"});var b=a.fn.bootstrapTable.Constructor,c=b.prototype.initTable,d=b.prototype.initBody;b.prototype.initTable=function(){var b=this;c.apply(this,Array.prototype.slice.apply(arguments)),this.options.editable&&a.each(this.columns,function(c,d){if(d.editable){var e={},f=[],g="editable-",h=function(a,b){var c=a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()});if(c.slice(0,g.length)==g){var d=c.replace(g,"data-");e[d]=b}};a.each(b.options,h),d.formatter=d.formatter||function(a){return a},d._formatter=d._formatter?d._formatter:d.formatter,d.formatter=function(c,g,i){var j=d._formatter?d._formatter(c,g,i):c;a.each(d,h),a.each(e,function(a,b){f.push(" "+a+'="'+b+'"')});var k=!1;return d.editable.hasOwnProperty("noeditFormatter")&&(k=d.editable.noeditFormatter(c,g,i)),k===!1?[' "].join(""):k}}})},b.prototype.initBody=function(){var b=this;d.apply(this,Array.prototype.slice.apply(arguments)),this.options.editable&&(a.each(this.columns,function(c,d){d.editable&&(b.$body.find('a[data-name="'+d.field+'"]').editable(d.editable).off("save").on("save",function(c,e){var f=b.getData(),g=a(this).parents("tr[data-index]").data("index"),h=f[g],i=h[d.field];a(this).data("value",e.submitValue),h[d.field]=e.submitValue,b.trigger("editable-save",d.field,h,i,a(this)),b.resetFooter()}),b.$body.find('a[data-name="'+d.field+'"]').editable(d.editable).off("shown").on("shown",function(c,e){var f=b.getData(),g=a(this).parents("tr[data-index]").data("index"),h=f[g];b.trigger("editable-shown",d.field,h,a(this),e)}),b.$body.find('a[data-name="'+d.field+'"]').editable(d.editable).off("hidden").on("hidden",function(c,e){var f=b.getData(),g=a(this).parents("tr[data-index]").data("index"),h=f[g];b.trigger("editable-hidden",d.field,h,a(this),e)}))}),this.trigger("editable-init"))}}(jQuery);
\ No newline at end of file
+/**
+ * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation)
+ *
+ * @version v1.16.0
+ * @homepage https://bootstrap-table.com
+ * @author wenzhixin (http://wenzhixin.net.cn/)
+ * @license MIT
+ */
+
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],e):e((t=t||self).jQuery)}(this,(function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(t,e){return t(e={exports:{}},e.exports),e.exports}var r=function(t){return t&&t.Math==Math&&t},o=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof e&&e)||Function("return this")(),i=function(t){try{return!!t()}catch(t){return!0}},a=!i((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),c={}.propertyIsEnumerable,u=Object.getOwnPropertyDescriptor,f={f:u&&!c.call({1:2},1)?function(t){var e=u(this,t);return!!e&&e.enumerable}:c},l=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},s={}.toString,d=function(t){return s.call(t).slice(8,-1)},p="".split,h=i((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==d(t)?p.call(t,""):Object(t)}:Object,v=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},y=function(t){return h(v(t))},g=function(t){return"object"==typeof t?null!==t:"function"==typeof t},b=function(t,e){if(!g(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!g(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!g(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!g(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")},m={}.hasOwnProperty,x=function(t,e){return m.call(t,e)},O=o.document,w=g(O)&&g(O.createElement),E=function(t){return w?O.createElement(t):{}},j=!a&&!i((function(){return 7!=Object.defineProperty(E("div"),"a",{get:function(){return 7}}).a})),S=Object.getOwnPropertyDescriptor,T={f:a?S:function(t,e){if(t=y(t),e=b(e,!0),j)try{return S(t,e)}catch(t){}if(x(t,e))return l(!f.f.call(t,e),t[e])}},P=function(t){if(!g(t))throw TypeError(String(t)+" is not an object");return t},A=Object.defineProperty,_={f:a?A:function(t,e,n){if(P(t),e=b(e,!0),P(n),j)try{return A(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},I=a?function(t,e,n){return _.f(t,e,l(1,n))}:function(t,e,n){return t[e]=n,t},R=function(t,e){try{I(o,t,e)}catch(n){o[t]=e}return e},C=o["__core-js_shared__"]||R("__core-js_shared__",{}),k=Function.toString;"function"!=typeof C.inspectSource&&(C.inspectSource=function(t){return k.call(t)});var M,$,F,D=C.inspectSource,N=o.WeakMap,q="function"==typeof N&&/native code/.test(D(N)),B=n((function(t){(t.exports=function(t,e){return C[t]||(C[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.6.0",mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})),L=0,K=Math.random(),V=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++L+K).toString(36)},U=B("keys"),W=function(t){return U[t]||(U[t]=V(t))},z={},Y=o.WeakMap;if(q){var G=new Y,H=G.get,Q=G.has,X=G.set;M=function(t,e){return X.call(G,t,e),e},$=function(t){return H.call(G,t)||{}},F=function(t){return Q.call(G,t)}}else{var Z=W("state");z[Z]=!0,M=function(t,e){return I(t,Z,e),e},$=function(t){return x(t,Z)?t[Z]:{}},F=function(t){return x(t,Z)}}var J,tt,et={set:M,get:$,has:F,enforce:function(t){return F(t)?$(t):M(t,{})},getterFor:function(t){return function(e){var n;if(!g(e)||(n=$(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}},nt=n((function(t){var e=et.get,n=et.enforce,r=String(String).split("String");(t.exports=function(t,e,i,a){var c=!!a&&!!a.unsafe,u=!!a&&!!a.enumerable,f=!!a&&!!a.noTargetGet;"function"==typeof i&&("string"!=typeof e||x(i,"name")||I(i,"name",e),n(i).source=r.join("string"==typeof e?e:"")),t!==o?(c?!f&&t[e]&&(u=!0):delete t[e],u?t[e]=i:I(t,e,i)):u?t[e]=i:R(e,i)})(Function.prototype,"toString",(function(){return"function"==typeof this&&e(this).source||D(this)}))})),rt=o,ot=function(t){return"function"==typeof t?t:void 0},it=function(t,e){return arguments.length<2?ot(rt[t])||ot(o[t]):rt[t]&&rt[t][e]||o[t]&&o[t][e]},at=Math.ceil,ct=Math.floor,ut=function(t){return isNaN(t=+t)?0:(t>0?ct:at)(t)},ft=Math.min,lt=function(t){return t>0?ft(ut(t),9007199254740991):0},st=Math.max,dt=Math.min,pt=function(t){return function(e,n,r){var o,i=y(e),a=lt(i.length),c=function(t,e){var n=ut(t);return n<0?st(n+e,0):dt(n,e)}(r,a);if(t&&n!=n){for(;a>c;)if((o=i[c++])!=o)return!0}else for(;a>c;c++)if((t||c in i)&&i[c]===n)return t||c||0;return!t&&-1}},ht={includes:pt(!0),indexOf:pt(!1)},vt=ht.indexOf,yt=function(t,e){var n,r=y(t),o=0,i=[];for(n in r)!x(z,n)&&x(r,n)&&i.push(n);for(;e.length>o;)x(r,n=e[o++])&&(~vt(i,n)||i.push(n));return i},gt=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],bt=gt.concat("length","prototype"),mt={f:Object.getOwnPropertyNames||function(t){return yt(t,bt)}},xt={f:Object.getOwnPropertySymbols},Ot=it("Reflect","ownKeys")||function(t){var e=mt.f(P(t)),n=xt.f;return n?e.concat(n(t)):e},wt=function(t,e){for(var n=Ot(e),r=_.f,o=T.f,i=0;i=74)&&(J=Vt.match(/Chrome\/(\d+)/))&&(tt=J[1]);var Yt,Gt=tt&&+tt,Ht=Bt("species"),Qt=Bt("isConcatSpreadable"),Xt=Gt>=51||!i((function(){var t=[];return t[Qt]=!1,t.concat()[0]!==t})),Zt=(Yt="concat",Gt>=51||!i((function(){var t=[];return(t.constructor={})[Ht]=function(){return{foo:1}},1!==t[Yt](Boolean).foo}))),Jt=function(t){if(!g(t))return!1;var e=t[Qt];return void 0!==e?!!e:Ct(t)};Rt({target:"Array",proto:!0,forced:!Xt||!Zt},{concat:function(t){var e,n,r,o,i,a=kt(this),c=Kt(a,0),u=0;for(e=-1,r=arguments.length;e9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n=9007199254740991)throw TypeError("Maximum allowed index exceeded");Mt(c,u++,i)}return c.length=u,c}});var te,ee=function(t,e,n){if(function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function")}(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}},ne=[].push,re=function(t){var e=1==t,n=2==t,r=3==t,o=4==t,i=6==t,a=5==t||i;return function(c,u,f,l){for(var s,d,p=kt(c),v=h(p),y=ee(u,f,3),g=lt(v.length),b=0,m=l||Kt,x=e?m(c,g):n?m(c,0):void 0;g>b;b++)if((a||b in v)&&(d=y(s=v[b],b,p),t))if(e)x[b]=d;else if(d)switch(t){case 3:return!0;case 5:return s;case 6:return b;case 2:ne.call(x,s)}else if(o)return!1;return i?-1:r||o?o:x}},oe={forEach:re(0),map:re(1),filter:re(2),some:re(3),every:re(4),find:re(5),findIndex:re(6)},ie=Object.keys||function(t){return yt(t,gt)},ae=a?Object.defineProperties:function(t,e){P(t);for(var n,r=ie(e),o=r.length,i=0;o>i;)_.f(t,n=r[i++],e[n]);return t},ce=it("document","documentElement"),ue=W("IE_PROTO"),fe=function(){},le=function(t){return"
@@ -288,6 +305,7 @@
{% endblock %}
{% block header %}
+
{% endblock %}
diff --git a/cps/templates/book_table.html b/cps/templates/book_table.html
new file mode 100644
index 000000000..067ff5e06
--- /dev/null
+++ b/cps/templates/book_table.html
@@ -0,0 +1,99 @@
+{% extends "layout.html" %}
+{% macro text_table_row(parameter, edit_text, show_text, validate) -%}
+{{ show_text }}
+{%- endmacro %}
+
+{% block header %}
+
+
+{% endblock %}
+{% block body %}
+{{_(title)}}
+
+
+
{{_('Merge selected books')}}
+
{{_('Remove Selections')}}
+
+
+
+
+
+
+
+ {% if g.user.role_edit() %}
+
+ {% endif %}
+
+ {{ text_table_row('title', _('Enter Title'),_('Title'), true) }}
+ {{ text_table_row('sort', _('Enter Title Sort'),_('Title Sort'), false) }}
+ {{ text_table_row('author_sort', _('Enter Author Sort'),_('Author Sort'), false) }}
+ {{ text_table_row('authors', _('Enter Authors'),_('Authors'), true) }}
+ {{ text_table_row('tags', _('Enter Categories'),_('Categories'), false) }}
+ {{ text_table_row('series', _('Enter Series'),_('Series'), false) }}
+ {{_('Series Index')}}
+ {{ text_table_row('languages', _('Enter Languages'),_('Languages'), false) }}
+
+ {{ text_table_row('publishers', _('Enter Publishers'),_('Publishers'), false) }}
+ {% if g.user.role_edit() %}
+ {{_('Delete')}}
+ {% endif %}
+
+
+
+{% endblock %}
+{% block modal %}
+{{ delete_book(0) }}
+{% if g.user.role_edit() %}
+
+
+
+
+
+
+
{{_('Books with Title will be merged from:')}}
+
+
+
+
{{_('Into Book with Title:')}}
+
+
+
+
+
+
+
+{% endif %}
+
+{% endblock %}
+{% block js %}
+
+
+
+
+
+{% endblock %}
diff --git a/cps/templates/config_edit.html b/cps/templates/config_edit.html
index 85b9598e6..4c522132b 100644
--- a/cps/templates/config_edit.html
+++ b/cps/templates/config_edit.html
@@ -3,7 +3,7 @@
-
{% endblock %}
+{% block modal %}
+{{ restrict_modal() }}
+{% endblock %}
{% block js %}
+
+
+
+
{% endblock %}
diff --git a/cps/templates/detail.html b/cps/templates/detail.html
index b76a8afac..503d1dbd4 100644
--- a/cps/templates/detail.html
+++ b/cps/templates/detail.html
@@ -4,13 +4,13 @@
-
+