Changeset - fc8ab968fe10
[Not reviewed]
Merge default
1064 85 9
Weblate - 11 years ago 2015-01-05 10:58:24
noreply@weblate.org
Merge
1155 files changed with 3791 insertions and 836 deletions:
0 comments (0 inline, 0 general)
.tx/config
Show inline comments
 
deleted file
LICENSE.md
Show inline comments
 
@@ -233,26 +233,42 @@ Kallithea incorporates some CSS from a s
 

	
 
Copyright 2006 Google Inc.
 

	
 
Licensed under the Apache License, Version 2.0 (the "License");
 
you may not use this file except in compliance with the License.
 

	
 
A [copy of the Apache License 2.0](Apache-License-2.0.txt) is also included
 
in this distribution.
 

	
 

	
 

	
 
Migrate
 
-------
 

	
 
Kallithea incorporates in kallithea/lib/dbmigrate/migrate parts of the Python
 
system called [Migrate or sqlalchemy-migrate](https://github.com/stackforge/sqlalchemy-migrate),
 
which is:
 

	
 
Copyright (c) 2009 Evan Rosson, Jan Dittberner, Domen Kožar
 

	
 
and licensed under the MIT-permissive license, which is
 
[included in this distribution](MIT-Permissive-License.txt).
 

	
 

	
 
Icon fonts
 
----------
 

	
 
Kallithea incorporates subsets of both
 
[Font Awesome](http://fontawesome.io) and
 
[GitHub Octicons](https://octicons.github.com) for icons. Font Awesome is:
 

	
 
Copyright (c) 2012, Dave Gandy
 

	
 
Octicons is:
 

	
 
Copyright (c) 2012-2014 GitHub
 

	
 
These two sets are distributed under [SIL OFL 1.1](http://scripts.sil.org/OFL)
 
and have been combined into one font called "kallithea."
 

	
 

	
 
EOF
MANIFEST.in
Show inline comments
 
include kallithea/config/deployment.ini_tmpl
 
include kallithea/lib/dbmigrate/migrate.cfg
 

	
 
include README.rst
 
recursive-include kallithea/i18n *
 

	
 
#docs
 
recursive-include docs *
 

	
 
#init.d
 
recursive-include init.d *
 

	
 
#images
 
recursive-include kallithea/public/css *
 
recursive-include kallithea/public/images *
 
#js
 
recursive-include kallithea/public/js *
 
#codemirror
 
recursive-include kallithea/public/codemirror *
 
#fontello
 
recursive-include kallithea/public/fontello *
 
#templates
 
recursive-include kallithea/templates *
kallithea/config/middleware.py
Show inline comments
 
@@ -58,52 +58,55 @@ def make_app(global_conf, full_stack=Tru
 
    # The Pylons WSGI app
 
    app = PylonsApp(config=config)
 

	
 
    # Routing/Session/Cache Middleware
 
    app = RoutesMiddleware(app, config['routes.map'])
 
    app = SessionMiddleware(app, config)
 

	
 
    # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
 
    if asbool(config['pdebug']):
 
        from kallithea.lib.profiler import ProfilingMiddleware
 
        app = ProfilingMiddleware(app)
 

	
 
    if asbool(full_stack):
 

	
 
        from kallithea.lib.middleware.sentry import Sentry
 
        from kallithea.lib.middleware.errormator import Errormator
 
        if Errormator and asbool(config['app_conf'].get('errormator')):
 
            app = Errormator(app, config)
 
        elif Sentry:
 
            app = Sentry(app, config)
 

	
 
        # Handle Python exceptions
 
        app = ErrorHandler(app, global_conf, **config['pylons.errorware'])
 

	
 
        # we want our low level middleware to get to the request ASAP. We don't
 
        # need any pylons stack middleware in them
 
        app = SimpleHg(app, config)
 
        app = SimpleGit(app, config)
 
        app = RequestWrapper(app, config)
 
        # Display error documents for 401, 403, 404 status codes (and
 
        # 500 when debug is disabled)
 
        # Note: will buffer the output in memory!
 
        if asbool(config['debug']):
 
            app = StatusCodeRedirect(app)
 
        else:
 
            app = StatusCodeRedirect(app, [400, 401, 403, 404, 500])
 

	
 
    #enable https redirets based on HTTP_X_URL_SCHEME set by proxy
 
        # Enable https redirects based on HTTP_X_URL_SCHEME set by proxy
 
    if any(asbool(config.get(x)) for x in ['https_fixup', 'force_https', 'use_htsts']):
 
        app = HttpsFixup(app, config)
 

	
 
        # we want our low level middleware to get to the request ASAP. We don't
 
        # need any pylons stack middleware in them - especially no StatusCodeRedirect buffering
 
        app = SimpleHg(app, config)
 
        app = SimpleGit(app, config)
 

	
 
        app = RequestWrapper(app, config) # logging
 

	
 
    # Establish the Registry for this application
 
    app = RegistryManager(app)
 
    app = RegistryManager(app) # thread / request-local module globals / variables
 

	
 
    if asbool(static_files):
 
        # Serve static files
 
        static_app = StaticURLParser(config['pylons.paths']['static_files'])
 
        app = Cascade([static_app, app])
 
        app = make_gzip_middleware(app, global_conf, compress_level=1)
 

	
 
    app.config = config
 

	
 
    return app
kallithea/controllers/changeset.py
Show inline comments
 
@@ -88,50 +88,50 @@ def _ignorews_url(GET, fileid=None):
 
    _update_with_GET(params, GET)
 
    lbl = _('Show whitespace')
 
    ig_ws = get_ignore_ws(fileid, GET)
 
    ln_ctx = get_line_ctx(fileid, GET)
 
    # global option
 
    if fileid is None:
 
        if ig_ws is None:
 
            params['ignorews'] += [1]
 
            lbl = _('Ignore whitespace')
 
        ctx_key = 'context'
 
        ctx_val = ln_ctx
 
    # per file options
 
    else:
 
        if ig_ws is None:
 
            params[fileid] += ['WS:1']
 
            lbl = _('Ignore whitespace')
 

	
 
        ctx_key = fileid
 
        ctx_val = 'C:%s' % ln_ctx
 
    # if we have passed in ln_ctx pass it along to our params
 
    if ln_ctx:
 
        params[ctx_key] += [ctx_val]
 

	
 
    params['anchor'] = fileid
 
    img = h.image(h.url('/images/icons/text_strikethrough.png'), lbl, class_='icon')
 
    return h.link_to(img, h.url.current(**params), title=lbl, class_='tooltip')
 
    icon = h.literal('<i class="icon-strike"></i>')
 
    return h.link_to(icon, h.url.current(**params), title=lbl, class_='tooltip')
 

	
 

	
 
def get_line_ctx(fid, GET):
 
    ln_ctx_global = GET.get('context')
 
    if fid:
 
        ln_ctx = filter(lambda k: k.startswith('C'), GET.getall(fid))
 
    else:
 
        _ln_ctx = filter(lambda k: k.startswith('C'), GET)
 
        ln_ctx = GET.get(_ln_ctx[0]) if _ln_ctx  else ln_ctx_global
 
        if ln_ctx:
 
            ln_ctx = [ln_ctx]
 

	
 
    if ln_ctx:
 
        retval = ln_ctx[0].split(':')[-1]
 
    else:
 
        retval = ln_ctx_global
 

	
 
    try:
 
        return int(retval)
 
    except Exception:
 
        return 3
 

	
 

	
 
def _context_url(GET, fileid=None):
 
@@ -148,50 +148,50 @@ def _context_url(GET, fileid=None):
 
    params = defaultdict(list)
 
    _update_with_GET(params, GET)
 

	
 
    # global option
 
    if fileid is None:
 
        if ln_ctx > 0:
 
            params['context'] += [ln_ctx]
 

	
 
        if ig_ws:
 
            ig_ws_key = 'ignorews'
 
            ig_ws_val = 1
 

	
 
    # per file option
 
    else:
 
        params[fileid] += ['C:%s' % ln_ctx]
 
        ig_ws_key = fileid
 
        ig_ws_val = 'WS:%s' % 1
 

	
 
    if ig_ws:
 
        params[ig_ws_key] += [ig_ws_val]
 

	
 
    lbl = _('increase diff context to %(num)s lines') % {'num': ln_ctx}
 

	
 
    params['anchor'] = fileid
 
    img = h.image(h.url('/images/icons/table_add.png'), lbl, class_='icon')
 
    return h.link_to(img, h.url.current(**params), title=lbl, class_='tooltip')
 
    icon = h.literal('<i class="icon-sort"></i>')
 
    return h.link_to(icon, h.url.current(**params), title=lbl, class_='tooltip')
 

	
 

	
 
class ChangesetController(BaseRepoController):
 

	
 
    def __before__(self):
 
        super(ChangesetController, self).__before__()
 
        c.affected_files_cut_off = 60
 

	
 
    def __load_data(self):
 
        repo_model = RepoModel()
 
        c.users_array = repo_model.get_users_js()
 
        c.user_groups_array = repo_model.get_user_groups_js()
 

	
 
    def _index(self, revision, method):
 
        c.anchor_url = anchor_url
 
        c.ignorews_url = _ignorews_url
 
        c.context_url = _context_url
 
        c.fulldiff = fulldiff = request.GET.get('fulldiff')
 
        #get ranges of revisions if preset
 
        rev_range = revision.split('...')[:2]
 
        enable_comments = True
 
        c.cs_repo = c.db_repo
 
        try:
 
            if len(rev_range) == 2:
kallithea/controllers/files.py
Show inline comments
 
@@ -542,62 +542,58 @@ class FilesController(BaseRepoController
 
        except (ImproperArchiveTypeError, KeyError):
 
            return _('Unknown archive type')
 
        # archive cache
 
        from kallithea import CONFIG
 
        rev_name = cs.raw_id[:12]
 
        archive_name = '%s-%s%s' % (safe_str(repo_name.replace('/', '_')),
 
                                    safe_str(rev_name), ext)
 

	
 
        use_cached_archive = False  # defines if we use cached version of archive
 
        archive_cache_enabled = CONFIG.get('archive_cache_dir')
 
        if not subrepos and archive_cache_enabled:
 
            #check if we it's ok to write
 
            if not os.path.isdir(CONFIG['archive_cache_dir']):
 
                os.makedirs(CONFIG['archive_cache_dir'])
 
            cached_archive_path = os.path.join(CONFIG['archive_cache_dir'], archive_name)
 
            if os.path.isfile(cached_archive_path):
 
                log.debug('Found cached archive in %s' % cached_archive_path)
 
                fd, archive = None, cached_archive_path
 
                use_cached_archive = True
 
            else:
 
                log.debug('Archive %s is not yet cached' % (archive_name))
 

	
 
        if not use_cached_archive:
 
            # generate new archive
 
            temp_stream = None
 
            try:
 
                fd, archive = tempfile.mkstemp()
 
                temp_stream = open(archive, 'wb')
 
                log.debug('Creating new temp archive in %s' % archive)
 
                cs.fill_archive(stream=temp_stream, kind=fileformat, subrepos=subrepos)
 
            temp_stream.close()
 
                if not subrepos and archive_cache_enabled:
 
                    #if we generated the archive and use cache rename that
 
                    log.debug('Storing new archive in %s' % cached_archive_path)
 
                    shutil.move(archive, cached_archive_path)
 
                    archive = cached_archive_path
 
            finally:
 
                if temp_stream:
 
                    temp_stream.close()
 

	
 
        def get_chunked_archive(archive):
 
            stream = open(archive, 'rb')
 
            while True:
 
                data = stream.read(16 * 1024)
 
                if not data:
 
                    stream.close()
 
                    if fd:  # fd means we used temporary file
 
                        os.close(fd)
 
                    if not archive_cache_enabled:
 
                        log.debug('Destroing temp archive %s' % archive)
 
                        os.remove(archive)
 
                    break
 
                yield data
 
        # store download action
 
        action_logger(user=c.authuser,
 
                      action='user_downloaded_archive:%s' % (archive_name),
 
                      repo=repo_name, ipaddr=self.ip_addr, commit=True)
 
        response.content_disposition = str('attachment; filename=%s' % (archive_name))
 
        response.content_type = str(content_type)
 
        return get_chunked_archive(archive)
 

	
 
    @LoginRequired()
 
    @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
kallithea/i18n/how_to
Show inline comments
 
##########################
 
# to create new language #
 
##########################
 

	
 
Translations are available on transifex under::
 
Translations are available on Hosted Weblate under::
 

	
 
    https://www.transifex.com/projects/p/Kallithea/
 
    https://hosted.weblate.org/projects/kallithea/kallithea/
 

	
 
Preferred method is to register on transifex and request new language translation.
 
Preferred method is to register on Weblate and request new language translation.
 

	
 
manual creation of new language
 
+++++++++++++++++++++++++++++++
 
 
 
Dowload sources of Kallithea. Run::
 

	
 
    python setup.py develop
 

	
 
To prepare the enviroment
 

	
 

	
 
Make sure all translation strings are extracted by running::
 

	
 
    python setup.py extract_messages
 

	
 
Create new language by executing following command::
 
    python setup.py init_catalog -l <new_language_code>
 

	
 
This creates a new language under directory kallithea/i18n/<new_language_code>
 
Be sure to update transifex mapping under .tx/config for new language
 

	
 
Edit the new PO file located in LC_MESSAGES directory with poedit or your
 
favorite PO files editor. Do translations and at the end verify the translation
 
file for any errors. This can be done by executing::
 

	
 
    msgfmt -f -c kallithea/i18n/<new_language_code>/LC_MESSAGES/<updated_file.po>
 

	
 
finally compile the translations::
 

	
 
    python setup.py compile_catalog -l <new_language_code>
 

	
 
##########################
 
# to update translations #
 
##########################
 

	
 
Fetch latest version of strings for translation by running::
 

	
 
    python setup.py extract_messages
 

	
 
Update PO file by doing::
 

	
 
    python setup.py update_catalog -l <new_language_code><- to update the translations
 

	
 
Edit the new updated po file. Repeat all steps after `init_catalog` step from
kallithea/i18n/ja/LC_MESSAGES/kallithea.po
Show inline comments
 
# Japanese translations for Kallithea.
 
# Copyright (C) 2014 RhodeCode GmbH, and others.
 
# This file is distributed under the same license as the Kallithea project.
 
# Translators:
 
# しろう, 2013
 
# shirou - しろう, 2013
 
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011
 
# こいんとす <tkondou@gmail.com>, 2013
 
# Takumi IINO <trot.thunder@gmail.com>, 2013
 
# whosaysni <whosaysni@gmail.com>, 2014
 
msgid ""
 
msgstr ""
 
"Project-Id-Version:  Kallithea\n"
 
"Report-Msgid-Bugs-To: translations@kallithea-scm.org\n"
 
"POT-Creation-Date: 2014-07-02 19:08-0400\n"
 
"PO-Revision-Date: 2014-02-13 14:34+0000\n"
 
"Last-Translator: marcinkuzminski <marcin@python-blog.com>\n"
 
"Language-Team: Japanese "
 
"(http://www.transifex.com/projects/p/Kallithea/language/ja/)\n"
 
"<https://hosted.weblate.org/projects/kallithea/kallithea/ja/>\n"
 
"Plural-Forms: nplurals=1; plural=0\n"
 
"MIME-Version: 1.0\n"
 
"Content-Type: text/plain; charset=utf-8\n"
 
"Content-Transfer-Encoding: 8bit\n"
 
"Generated-By: Babel 0.9.6\n"
 

	
 
#: kallithea/controllers/changelog.py:90 kallithea/controllers/compare.py:90
 
#: kallithea/controllers/pullrequests.py:265
 
msgid "There are no changesets yet"
 
msgstr "まだチェンジセットがありません"
 

	
 
#: kallithea/controllers/changelog.py:186
 
msgid "All Branches"
 
msgstr "すべてのブランチ"
 

	
 
#: kallithea/controllers/changelog.py:189
 
msgid "(closed)"
 
msgstr "(閉鎖済み)"
 

	
 
#: kallithea/controllers/changeset.py:87
 
msgid "Show whitespace"
 
msgstr "空白を表示"
 

	
 
#: kallithea/controllers/changeset.py:94 kallithea/controllers/changeset.py:101
kallithea/i18n/pt_BR/LC_MESSAGES/kallithea.po
Show inline comments
 
# Portuguese (Brazil) translations for Kallithea.
 
# Copyright (C) 2014 RhodeCode GmbH, and others.
 
# This file is distributed under the same license as the Kallithea project.
 
# Translators:
 
# Augusto Herrmann <augusto.herrmann@gmail.com>, 2012
 
# gnustavo <gustavo@gnustavo.com>, 2013
 
msgid ""
 
msgstr ""
 
"Project-Id-Version:  Kallithea\n"
 
"Report-Msgid-Bugs-To: translations@kallithea-scm.org\n"
 
"POT-Creation-Date: 2014-07-02 19:08-0400\n"
 
"PO-Revision-Date: 2014-02-13 14:34+0000\n"
 
"Last-Translator: marcinkuzminski <marcin@python-blog.com>\n"
 
"Language-Team: Portuguese (Brazil) "
 
"(http://www.transifex.com/projects/p/Kallithea/language/pt_BR/)\n"
 
"<https://hosted.weblate.org/projects/kallithea/kallithea/pt_BR/>\n"
 
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
 
"MIME-Version: 1.0\n"
 
"Content-Type: text/plain; charset=utf-8\n"
 
"Content-Transfer-Encoding: 8bit\n"
 
"Generated-By: Babel 0.9.6\n"
 

	
 
#: kallithea/controllers/changelog.py:90 kallithea/controllers/compare.py:90
 
#: kallithea/controllers/pullrequests.py:265
 
msgid "There are no changesets yet"
 
msgstr "Não há nenhum changeset ainda"
 

	
 
#: kallithea/controllers/changelog.py:186
 
msgid "All Branches"
 
msgstr "Todos os Ramos"
 

	
 
#: kallithea/controllers/changelog.py:189
 
msgid "(closed)"
 
msgstr "(fechado)"
 

	
 
#: kallithea/controllers/changeset.py:87
 
msgid "Show whitespace"
 
msgstr "Mostrar espaços em branco"
 

	
 
#: kallithea/controllers/changeset.py:94 kallithea/controllers/changeset.py:101
kallithea/i18n/zh_TW/LC_MESSAGES/kallithea.po
Show inline comments
 
# Chinese (Taiwan) translations for Kallithea.
 
# Copyright (C) 2014 RhodeCode GmbH, and others.
 
# This file is distributed under the same license as the Kallithea project.
 
# Translators:
 
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011
 
msgid ""
 
msgstr ""
 
"Project-Id-Version:  Kallithea\n"
 
"Report-Msgid-Bugs-To: translations@kallithea-scm.org\n"
 
"POT-Creation-Date: 2014-07-02 19:08-0400\n"
 
"PO-Revision-Date: 2014-02-13 14:34+0000\n"
 
"Last-Translator: marcinkuzminski <marcin@python-blog.com>\n"
 
"Language-Team: Chinese (Taiwan) "
 
"(http://www.transifex.com/projects/p/Kallithea/language/zh_TW/)\n"
 
"<https://hosted.weblate.org/projects/kallithea/kallithea/zh_TW/>\n"
 
"Plural-Forms: nplurals=1; plural=0\n"
 
"MIME-Version: 1.0\n"
 
"Content-Type: text/plain; charset=utf-8\n"
 
"Content-Transfer-Encoding: 8bit\n"
 
"Generated-By: Babel 0.9.6\n"
 

	
 
#: kallithea/controllers/changelog.py:90 kallithea/controllers/compare.py:90
 
#: kallithea/controllers/pullrequests.py:265
 
msgid "There are no changesets yet"
 
msgstr ""
 

	
 
#: kallithea/controllers/changelog.py:186
 
msgid "All Branches"
 
msgstr ""
 

	
 
#: kallithea/controllers/changelog.py:189
 
msgid "(closed)"
 
msgstr ""
 

	
 
#: kallithea/controllers/changeset.py:87
 
msgid "Show whitespace"
 
msgstr ""
 

	
 
#: kallithea/controllers/changeset.py:94 kallithea/controllers/changeset.py:101
kallithea/lib/diffs.py
Show inline comments
 
@@ -136,86 +136,88 @@ class DiffLimitExceeded(Exception):
 
    pass
 

	
 

	
 
class LimitedDiffContainer(object):
 

	
 
    def __init__(self, diff_limit, cur_diff_size, diff):
 
        self.diff = diff
 
        self.diff_limit = diff_limit
 
        self.cur_diff_size = cur_diff_size
 

	
 
    def __iter__(self):
 
        for l in self.diff:
 
            yield l
 

	
 

	
 
class DiffProcessor(object):
 
    """
 
    Give it a unified or git diff and it returns a list of the files that were
 
    mentioned in the diff together with a dict of meta information that
 
    can be used to render it in a HTML template.
 
    """
 
    _chunk_re = re.compile(r'^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@(.*)')
 
    _newline_marker = re.compile(r'^\\ No newline at end of file')
 
    _git_header_re = re.compile(r"""
 
        # has already been split on this:
 
        #^diff[ ]--git
 
            [ ]a/(?P<a_path>.+?)[ ]b/(?P<b_path>.+?)\n
 
        (?:^similarity[ ]index[ ](?P<similarity_index>\d+)%\n
 
           ^rename[ ]from[ ](?P<rename_from>\S+)\n
 
           ^rename[ ]to[ ](?P<rename_to>\S+)(?:\n|$))?
 
           ^rename[ ]from[ ](?P<rename_from>.+)\n
 
           ^rename[ ]to[ ](?P<rename_to>.+)(?:\n|$))?
 
        (?:^old[ ]mode[ ](?P<old_mode>\d+)\n
 
           ^new[ ]mode[ ](?P<new_mode>\d+)(?:\n|$))?
 
        (?:^new[ ]file[ ]mode[ ](?P<new_file_mode>.+)(?:\n|$))?
 
        (?:^deleted[ ]file[ ]mode[ ](?P<deleted_file_mode>.+)(?:\n|$))?
 
        (?:^index[ ](?P<a_blob_id>[0-9A-Fa-f]+)
 
            \.\.(?P<b_blob_id>[0-9A-Fa-f]+)[ ]?(?P<b_mode>.+)?(?:\n|$))?
 
        (?:^(?P<bin_patch>GIT[ ]binary[ ]patch)(?:\n|$))?
 
        (?:^---[ ](a/(?P<a_file>.+)|/dev/null)(?:\n|$))?
 
        (?:^\+\+\+[ ](b/(?P<b_file>.+)|/dev/null)(?:\n|$))?
 
        (?:^---[ ](a/(?P<a_file>.+?)|/dev/null)\t?(?:\n|$))?
 
        (?:^\+\+\+[ ](b/(?P<b_file>.+?)|/dev/null)\t?(?:\n|$))?
 
    """, re.VERBOSE | re.MULTILINE)
 
    _hg_header_re = re.compile(r"""
 
        # has already been split on this:
 
        #^diff[ ]--git
 
            [ ]a/(?P<a_path>.+?)[ ]b/(?P<b_path>.+?)\n
 
        (?:^old[ ]mode[ ](?P<old_mode>\d+)\n
 
           ^new[ ]mode[ ](?P<new_mode>\d+)(?:\n|$))?
 
        (?:^similarity[ ]index[ ](?P<similarity_index>\d+)%(?:\n|$))?
 
        (?:^rename[ ]from[ ](?P<rename_from>\S+)\n
 
           ^rename[ ]to[ ](?P<rename_to>\S+)(?:\n|$))?
 
        (?:^copy[ ]from[ ](?P<copy_from>\S+)\n
 
           ^copy[ ]to[ ](?P<copy_to>\S+)(?:\n|$))?
 
        (?:^rename[ ]from[ ](?P<rename_from>.+)\n
 
           ^rename[ ]to[ ](?P<rename_to>.+)(?:\n|$))?
 
        (?:^copy[ ]from[ ](?P<copy_from>.+)\n
 
           ^copy[ ]to[ ](?P<copy_to>.+)(?:\n|$))?
 
        (?:^new[ ]file[ ]mode[ ](?P<new_file_mode>.+)(?:\n|$))?
 
        (?:^deleted[ ]file[ ]mode[ ](?P<deleted_file_mode>.+)(?:\n|$))?
 
        (?:^index[ ](?P<a_blob_id>[0-9A-Fa-f]+)
 
            \.\.(?P<b_blob_id>[0-9A-Fa-f]+)[ ]?(?P<b_mode>.+)?(?:\n|$))?
 
        (?:^(?P<bin_patch>GIT[ ]binary[ ]patch)(?:\n|$))?
 
        (?:^---[ ](a/(?P<a_file>.+)|/dev/null)(?:\n|$))?
 
        (?:^\+\+\+[ ](b/(?P<b_file>.+)|/dev/null)(?:\n|$))?
 
        (?:^---[ ](a/(?P<a_file>.+?)|/dev/null)\t?(?:\n|$))?
 
        (?:^\+\+\+[ ](b/(?P<b_file>.+?)|/dev/null)\t?(?:\n|$))?
 
    """, re.VERBOSE | re.MULTILINE)
 

	
 
    #used for inline highlighter word split
 
    _token_re = re.compile(r'()(&gt;|&lt;|&amp;|<u>\t</u>| <i></i>|\W+?)')
 

	
 
    _escape_re = re.compile(r'(&)|(<)|(>)|(\t)|( \n| $)')
 
    _escape_re = re.compile(r'(&)|(<)|(>)|(\t)|(?<=.)( \n| $)')
 

	
 

	
 
    def __init__(self, diff, vcs='hg', format='gitdiff', diff_limit=None):
 
        """
 
        :param diff:   a text in diff format
 
        :param vcs: type of version controll hg or git
 
        :param format: format of diff passed, `udiff` or `gitdiff`
 
        :param diff_limit: define the size of diff that is considered "big"
 
            based on that parameter cut off will be triggered, set to None
 
            to show full diff
 
        """
 
        if not isinstance(diff, basestring):
 
            raise Exception('Diff must be a basestring got %s instead' % type(diff))
 

	
 
        self._diff = diff
 
        self._format = format
 
        self.adds = 0
 
        self.removes = 0
 
        # calculate diff size
 
        self.diff_size = len(diff)
 
        self.diff_limit = diff_limit
 
        self.cur_diff_size = 0
 
        self.parsed = False
 
        self.parsed_diff = []
 
@@ -240,50 +242,51 @@ class DiffProcessor(object):
 
    def _escaper(self, string):
 
        """
 
        Escaper for diff escapes special chars and checks the diff limit
 

	
 
        :param string:
 
        """
 

	
 
        self.cur_diff_size += len(string)
 

	
 
        # escaper gets iterated on each .next() call and it checks if each
 
        # parsed line doesn't exceed the diff limit
 
        if self.diff_limit is not None and self.cur_diff_size > self.diff_limit:
 
            raise DiffLimitExceeded('Diff Limit Exceeded')
 

	
 
        def substitute(m):
 
            groups = m.groups()
 
            if groups[0]:
 
                return '&amp;'
 
            if groups[1]:
 
                return '&lt;'
 
            if groups[2]:
 
                return '&gt;'
 
            if groups[3]:
 
                return '<u>\t</u>'
 
            if groups[4] and m.start(): # skip 1st column with +/-
 
            if groups[4]:
 
                return ' <i></i>'
 
            assert False
 

	
 
        return self._escape_re.sub(substitute, safe_unicode(string))
 

	
 
    def _line_counter(self, l):
 
        """
 
        Checks each line and bumps total adds/removes for this diff
 

	
 
        :param l:
 
        """
 
        if l.startswith('+') and not l.startswith('+++'):
 
            self.adds += 1
 
        elif l.startswith('-') and not l.startswith('---'):
 
            self.removes += 1
 
        return safe_unicode(l)
 

	
 
    def _highlight_line_difflib(self, line, next_):
 
        """
 
        Highlight inline changes in both lines.
 
        """
 

	
 
        if line['action'] == 'del':
 
            old, new = line, next_
 
        else:
 
            old, new = next_, line
 
@@ -328,101 +331,104 @@ class DiffProcessor(object):
 
                else:
 
                    tag = 'del'
 
                l['line'] = '%s<%s>%s</%s>%s' % (
 
                    l['line'][:start],
 
                    tag,
 
                    l['line'][start:last],
 
                    tag,
 
                    l['line'][last:]
 
                )
 
            do(line)
 
            do(next_)
 

	
 
    def _get_header(self, diff_chunk):
 
        """
 
        parses the diff header, and returns parts, and leftover diff
 
        parts consists of 14 elements::
 

	
 
            a_path, b_path, similarity_index, rename_from, rename_to,
 
            old_mode, new_mode, new_file_mode, deleted_file_mode,
 
            a_blob_id, b_blob_id, b_mode, a_file, b_file
 

	
 
        :param diff_chunk:
 
        """
 

	
 
        match = None
 
        if self.vcs == 'git':
 
            match = self._git_header_re.match(diff_chunk)
 
            diff = diff_chunk[match.end():]
 
            return match.groupdict(), imap(self._escaper, diff.splitlines(1))
 
        elif self.vcs == 'hg':
 
            match = self._hg_header_re.match(diff_chunk)
 
            diff = diff_chunk[match.end():]
 
            return match.groupdict(), imap(self._escaper, diff.splitlines(1))
 
        else:
 
        if match is None:
 
            raise Exception('VCS type %s is not supported' % self.vcs)
 
        groups = match.groupdict()
 
        rest = diff_chunk[match.end():]
 
        if rest and not rest.startswith('@') and not rest.startswith('literal '):
 
            raise Exception('cannot parse diff header: %r followed by %r' % (diff_chunk[:match.end()], rest[:1000]))
 
        difflines = imap(self._escaper, re.findall(r'.*\n|.+$', rest)) # don't split on \r as str.splitlines do
 
        return groups, difflines
 

	
 
    def _clean_line(self, line, command):
 
        if command in ['+', '-', ' ']:
 
            #only modify the line if it's actually a diff thing
 
            line = line[1:]
 
        return line
 

	
 
    def _parse_gitdiff(self, inline_diff=True):
 
        _files = []
 
        diff_container = lambda arg: arg
 

	
 
        ##split the diff in chunks of separate --git a/file b/file chunks
 
        for raw_diff in ('\n' + self._diff).split('\ndiff --git')[1:]:
 
            head, diff = self._get_header(raw_diff)
 

	
 
            op = None
 
            stats = {
 
                'added': 0,
 
                'deleted': 0,
 
                'binary': False,
 
                'ops': {},
 
            }
 

	
 
            if head['deleted_file_mode']:
 
                op = 'D'
 
                stats['binary'] = True
 
                stats['ops'][DEL_FILENODE] = 'deleted file'
 

	
 
            elif head['new_file_mode']:
 
                op = 'A'
 
                stats['binary'] = True
 
                stats['ops'][NEW_FILENODE] = 'new file %s' % head['new_file_mode']
 
            else:  # modify operation, can be cp, rename, chmod
 
                # CHMOD
 
                if head['new_mode'] and head['old_mode']:
 
                    op = 'M'
 
                    stats['binary'] = True
 
                    stats['ops'][CHMOD_FILENODE] = ('modified file chmod %s => %s'
 
                                        % (head['old_mode'], head['new_mode']))
 
                # RENAME
 
                if (head['rename_from'] and head['rename_to']
 
                      and head['rename_from'] != head['rename_to']):
 
                    op = 'M'
 
                    op = 'R'
 
                    stats['binary'] = True
 
                    stats['ops'][RENAMED_FILENODE] = ('file renamed from %s to %s'
 
                                    % (head['rename_from'], head['rename_to']))
 
                # COPY
 
                if head.get('copy_from') and head.get('copy_to'):
 
                    op = 'M'
 
                    stats['binary'] = True
 
                    stats['ops'][COPIED_FILENODE] = ('file copied from %s to %s'
 
                                        % (head['copy_from'], head['copy_to']))
 
                # FALL BACK: detect missed old style add or remove
 
                if op is None:
 
                    if not head['a_file'] and head['b_file']:
 
                        op = 'A'
 
                        stats['binary'] = True
 
                        stats['ops'][NEW_FILENODE] = 'new file'
 

	
 
                    elif head['a_file'] and not head['b_file']:
 
                        op = 'D'
 
                        stats['binary'] = True
 
                        stats['ops'][DEL_FILENODE] = 'deleted file'
 

	
 
                # it's not ADD not DELETE
 
                if op is None:
 
                    op = 'M'
 
@@ -478,135 +484,141 @@ class DiffProcessor(object):
 

	
 
        # highlight inline changes
 
        for diff_data in _files:
 
            for chunk in diff_data['chunks']:
 
                lineiter = iter(chunk)
 
                try:
 
                    while 1:
 
                        line = lineiter.next()
 
                        if line['action'] not in ['unmod', 'context']:
 
                            nextline = lineiter.next()
 
                            if nextline['action'] in ['unmod', 'context'] or \
 
                               nextline['action'] == line['action']:
 
                                continue
 
                            self.differ(line, nextline)
 
                except StopIteration:
 
                    pass
 

	
 
        return diff_container(_files)
 

	
 
    def _parse_udiff(self, inline_diff=True):
 
        raise NotImplementedError()
 

	
 
    def _parse_lines(self, diff):
 
        """
 
        Parse the diff an return data for the template.
 
        Parse the diff and return data for the template.
 
        """
 

	
 
        lineiter = iter(diff)
 
        stats = [0, 0]
 
        (old_line, old_end, new_line, new_end) = (None, None, None, None)
 

	
 
        try:
 
            chunks = []
 
            line = lineiter.next()
 
            line = diff.next()
 

	
 
            while line:
 
            while True:
 
                lines = []
 
                chunks.append(lines)
 

	
 
                match = self._chunk_re.match(line)
 

	
 
                if not match:
 
                    break
 
                    raise Exception('error parsing diff @@ line %r' % line)
 

	
 
                gr = match.groups()
 
                (old_line, old_end,
 
                 new_line, new_end) = [int(x or 1) for x in gr[:-1]]
 
                old_line -= 1
 
                new_line -= 1
 

	
 
                context = len(gr) == 5
 
                old_end += old_line
 
                new_end += new_line
 

	
 
                if context:
 
                    # skip context only if it's first line
 
                    if int(gr[0]) > 1:
 
                        lines.append({
 
                            'old_lineno': '...',
 
                            'new_lineno': '...',
 
                            'action':     'context',
 
                            'line':       line,
 
                        })
 

	
 
                line = lineiter.next()
 
                line = diff.next()
 

	
 
                while old_line < old_end or new_line < new_end:
 
                    command = ' '
 
                    if line:
 
                        command = line[0]
 
                    if not line:
 
                        raise Exception('error parsing diff - empty line at -%s+%s' % (old_line, new_line))
 

	
 
                    affects_old = affects_new = False
 

	
 
                    # ignore those if we don't expect them
 
                    if command in '#@':
 
                        continue
 
                    elif command == '+':
 
                    command = line[0]
 
                    if command == '+':
 
                        affects_new = True
 
                        action = 'add'
 
                        stats[0] += 1
 
                    elif command == '-':
 
                        affects_old = True
 
                        action = 'del'
 
                        stats[1] += 1
 
                    else:
 
                    elif command == ' ':
 
                        affects_old = affects_new = True
 
                        action = 'unmod'
 
                    else:
 
                        raise Exception('error parsing diff - unknown command in line %r at -%s+%s' % (line, old_line, new_line))
 

	
 
                    if not self._newline_marker.match(line):
 
                        old_line += affects_old
 
                        new_line += affects_new
 
                        lines.append({
 
                            'old_lineno':   affects_old and old_line or '',
 
                            'new_lineno':   affects_new and new_line or '',
 
                            'action':       action,
 
                            'line':         self._clean_line(line, command)
 
                        })
 

	
 
                    line = lineiter.next()
 
                    line = diff.next()
 

	
 
                    if self._newline_marker.match(line):
 
                        # we need to append to lines, since this is not
 
                        # counted in the line specs of diff
 
                        lines.append({
 
                            'old_lineno':   '...',
 
                            'new_lineno':   '...',
 
                            'action':       'context',
 
                            'line':         self._clean_line(line, command)
 
                        })
 

	
 
                        line = diff.next()
 
                if old_line > old_end:
 
                        raise Exception('error parsing diff - more than %s "-" lines at -%s+%s' % (old_end, old_line, new_line))
 
                if new_line > new_end:
 
                        raise Exception('error parsing diff - more than %s "+" lines at -%s+%s' % (new_end, old_line, new_line))
 
        except StopIteration:
 
            pass
 
        if old_line != old_end or new_line != new_end:
 
            raise Exception('diff processing broken when old %s<>%s or new %s<>%s line %r' % (old_line, old_end, new_line, new_end, line))
 

	
 
        return chunks, stats
 

	
 
    def _safe_id(self, idstring):
 
        """Make a string safe for including in an id attribute.
 

	
 
        The HTML spec says that id attributes 'must begin with
 
        a letter ([A-Za-z]) and may be followed by any number
 
        of letters, digits ([0-9]), hyphens ("-"), underscores
 
        ("_"), colons (":"), and periods (".")'. These regexps
 
        are slightly over-zealous, in that they remove colons
 
        and periods unnecessarily.
 

	
 
        Whitespace is transformed into underscores, and then
 
        anything which is not a hyphen or a character that
 
        matches \w (alphanumerics and underscore) is removed.
 

	
 
        """
 
        # Transform all whitespace to underscore
 
        idstring = re.sub(r'\s', "_", '%s' % idstring)
 
        # Remove everything that is not a hyphen or a member of \w
 
        idstring = re.sub(r'(?!-)\W', "", idstring).lower()
 
        return idstring
 

	
 
    def prepare(self, inline_diff=True):
kallithea/lib/helpers.py
Show inline comments
 
@@ -36,49 +36,49 @@ from webhelpers.html import literal, HTM
 
from webhelpers.html.tools import *
 
from webhelpers.html.builder import make_tag
 
from webhelpers.html.tags import auto_discovery_link, checkbox, css_classes, \
 
    end_form, file, form, hidden, image, javascript_link, link_to, \
 
    link_to_if, link_to_unless, ol, required_legend, select, stylesheet_link, \
 
    submit, text, password, textarea, title, ul, xml_declaration, radio
 
from webhelpers.html.tools import auto_link, button_to, highlight, \
 
    js_obfuscate, mail_to, strip_links, strip_tags, tag_re
 
from webhelpers.number import format_byte_size, format_bit_size
 
from webhelpers.pylonslib import Flash as _Flash
 
from webhelpers.pylonslib.secure_form import secure_form
 
from webhelpers.text import chop_at, collapse, convert_accented_entities, \
 
    convert_misc_entities, lchop, plural, rchop, remove_formatting, \
 
    replace_whitespace, urlify, truncate, wrap_paragraphs
 
from webhelpers.date import time_ago_in_words
 
from webhelpers.paginate import Page as _Page
 
from webhelpers.html.tags import _set_input_attrs, _set_id_attr, \
 
    convert_boolean_attrs, NotGiven, _make_safe_id_component
 

	
 
from kallithea.lib.annotate import annotate_highlight
 
from kallithea.lib.utils import repo_name_slug, get_custom_lexer
 
from kallithea.lib.utils2 import str2bool, safe_unicode, safe_str, \
 
    get_changeset_safe, datetime_to_time, time_to_datetime, AttributeDict,\
 
    safe_int
 
from kallithea.lib.markup_renderer import MarkupRenderer
 
from kallithea.lib.markup_renderer import MarkupRenderer, url_re
 
from kallithea.lib.vcs.exceptions import ChangesetDoesNotExistError
 
from kallithea.lib.vcs.backends.base import BaseChangeset, EmptyChangeset
 
from kallithea.config.conf import DATE_FORMAT, DATETIME_FORMAT
 
from kallithea.model.changeset_status import ChangesetStatusModel
 
from kallithea.model.db import URL_SEP, Permission
 

	
 
log = logging.getLogger(__name__)
 

	
 

	
 
def canonical_url(*args, **kargs):
 
    '''Like url(x, qualified=True), but returns url that not only is qualified
 
    but also canonical, as configured in canonical_url'''
 
    from kallithea import CONFIG
 
    try:
 
        parts = CONFIG.get('canonical_url', '').split('://', 1)
 
        kargs['host'] = parts[1].split('/', 1)[0]
 
        kargs['protocol'] = parts[0]
 
    except IndexError:
 
        kargs['qualified'] = True
 
    return url(*args, **kargs)
 

	
 
def canonical_hostname():
 
    '''Return canonical hostname of system'''
 
    from kallithea import CONFIG
 
@@ -567,51 +567,51 @@ def desc_stylize(value):
 
        return ''
 

	
 
    value = re.sub(r'\[see\ \=\>\ *([a-zA-Z0-9\/\=\?\&\ \:\/\.\-]*)\]',
 
                   '<div class="metatag" tag="see">see =&gt; \\1 </div>', value)
 
    value = re.sub(r'\[license\ \=\>\ *([a-zA-Z0-9\/\=\?\&\ \:\/\.\-]*)\]',
 
                   '<div class="metatag" tag="license"><a href="http:\/\/www.opensource.org/licenses/\\1">\\1</a></div>', value)
 
    value = re.sub(r'\[(requires|recommends|conflicts|base)\ \=\>\ *([a-zA-Z0-9\-\/]*)\]',
 
                   '<div class="metatag" tag="\\1">\\1 =&gt; <a href="/\\2">\\2</a></div>', value)
 
    value = re.sub(r'\[(lang|language)\ \=\>\ *([a-zA-Z\-\/\#\+]*)\]',
 
                   '<div class="metatag" tag="lang">\\2</div>', value)
 
    value = re.sub(r'\[([a-z]+)\]',
 
                  '<div class="metatag" tag="\\1">\\1</div>', value)
 

	
 
    return value
 

	
 

	
 
def boolicon(value):
 
    """Returns boolean value of a value, represented as small html image of true/false
 
    icons
 

	
 
    :param value: value
 
    """
 

	
 
    if value:
 
        return HTML.tag('i', class_="icon-ok-sign")
 
        return HTML.tag('i', class_="icon-ok")
 
    else:
 
        return HTML.tag('i', class_="icon-minus-sign")
 
        return HTML.tag('i', class_="icon-minus-circled")
 

	
 

	
 
def action_parser(user_log, feed=False, parse_cs=False):
 
    """
 
    This helper will action_map the specified string action into translated
 
    fancy names with icons and links
 

	
 
    :param user_log: user log instance
 
    :param feed: use output for feeds (no html and fancy icons)
 
    :param parse_cs: parse Changesets into VCS instances
 
    """
 

	
 
    action = user_log.action
 
    action_params = ' '
 

	
 
    x = action.split(':')
 

	
 
    if len(x) > 1:
 
        action, action_params = x
 

	
 
    def get_cs_links():
 
        revs_limit = 3  # display this amount always
 
        revs_top_limit = 50  # show upto this amount of changesets hidden
 
        revs_ids = action_params.split(',')
 
@@ -752,89 +752,89 @@ def action_parser(user_log, feed=False, 
 
        return user_name
 

	
 
    def get_users_group():
 
        group_name = action_params
 
        return group_name
 

	
 
    def get_pull_request():
 
        pull_request_id = action_params
 
        deleted = user_log.repository is None
 
        if deleted:
 
            repo_name = user_log.repository_name
 
        else:
 
            repo_name = user_log.repository.repo_name
 
        return link_to(_('Pull request #%s') % pull_request_id,
 
                    url('pullrequest_show', repo_name=repo_name,
 
                    pull_request_id=pull_request_id))
 

	
 
    def get_archive_name():
 
        archive_name = action_params
 
        return archive_name
 

	
 
    # action : translated str, callback(extractor), icon
 
    action_map = {
 
    'user_deleted_repo':           (_('[deleted] repository'),
 
                                    None, 'icon-trash'),
 
                                    None, 'icon-trashcan'),
 
    'user_created_repo':           (_('[created] repository'),
 
                                    None, 'icon-plus icon-plus-colored'),
 
    'user_created_fork':           (_('[created] repository as fork'),
 
                                    None, 'icon-code-fork'),
 
                                    None, 'icon-fork'),
 
    'user_forked_repo':            (_('[forked] repository'),
 
                                    get_fork_name, 'icon-code-fork'),
 
                                    get_fork_name, 'icon-fork'),
 
    'user_updated_repo':           (_('[updated] repository'),
 
                                    None, 'icon-pencil icon-pencil-colored'),
 
    'user_downloaded_archive':      (_('[downloaded] archive from repository'),
 
                                    get_archive_name, 'icon-download-alt'),
 
                                    get_archive_name, 'icon-download-cloud'),
 
    'admin_deleted_repo':          (_('[delete] repository'),
 
                                    None, 'icon-trash'),
 
                                    None, 'icon-trashcan'),
 
    'admin_created_repo':          (_('[created] repository'),
 
                                    None, 'icon-plus icon-plus-colored'),
 
    'admin_forked_repo':           (_('[forked] repository'),
 
                                    None, 'icon-code-fork icon-fork-colored'),
 
                                    None, 'icon-fork icon-fork-colored'),
 
    'admin_updated_repo':          (_('[updated] repository'),
 
                                    None, 'icon-pencil icon-pencil-colored'),
 
    'admin_created_user':          (_('[created] user'),
 
                                    get_user_name, 'icon-user icon-user-colored'),
 
    'admin_updated_user':          (_('[updated] user'),
 
                                    get_user_name, 'icon-user icon-user-colored'),
 
    'admin_created_users_group':   (_('[created] user group'),
 
                                    get_users_group, 'icon-pencil icon-pencil-colored'),
 
    'admin_updated_users_group':   (_('[updated] user group'),
 
                                    get_users_group, 'icon-pencil icon-pencil-colored'),
 
    'user_commented_revision':     (_('[commented] on revision in repository'),
 
                                    get_cs_links, 'icon-comment icon-comment-colored'),
 
    'user_commented_pull_request': (_('[commented] on pull request for'),
 
                                    get_pull_request, 'icon-comment icon-comment-colored'),
 
    'user_closed_pull_request':    (_('[closed] pull request for'),
 
                                    get_pull_request, 'icon-check'),
 
                                    get_pull_request, 'icon-ok'),
 
    'push':                        (_('[pushed] into'),
 
                                    get_cs_links, 'icon-arrow-up'),
 
                                    get_cs_links, 'icon-move-up'),
 
    'push_local':                  (_('[committed via Kallithea] into repository'),
 
                                    get_cs_links, 'icon-pencil icon-pencil-colored'),
 
    'push_remote':                 (_('[pulled from remote] into repository'),
 
                                    get_cs_links, 'icon-arrow-up'),
 
                                    get_cs_links, 'icon-move-up'),
 
    'pull':                        (_('[pulled] from'),
 
                                    None, 'icon-arrow-down'),
 
                                    None, 'icon-move-down'),
 
    'started_following_repo':      (_('[started following] repository'),
 
                                    None, 'icon-heart icon-heart-colored'),
 
    'stopped_following_repo':      (_('[stopped following] repository'),
 
                                    None, 'icon-heart-empty icon-heart-colored'),
 
    }
 

	
 
    action_str = action_map.get(action, action)
 
    if feed:
 
        action = action_str[0].replace('[', '').replace(']', '')
 
    else:
 
        action = action_str[0]\
 
            .replace('[', '<span class="journal_highlight">')\
 
            .replace(']', '</span>')
 

	
 
    action_params_func = lambda: ""
 

	
 
    if callable(action_str[1]):
 
        action_params_func = action_str[1]
 

	
 
    def action_parser_icon():
 
        action = user_log.action
 
        action_params = None
 
        x = action.split(':')
 

	
 
@@ -1235,55 +1235,52 @@ def fancy_file_stats(stats):
 
        if a_p > d_p:
 
            a_p = a_p - (p_sum - width)
 
        else:
 
            d_p = d_p - (p_sum - width)
 

	
 
    a_v = a if a > 0 else ''
 
    d_v = d if d > 0 else ''
 

	
 
    d_a = '<div class="added %s" style="width:%s%%">%s</div>' % (
 
        cgen('a', a_v, d_v), a_p, a_v
 
    )
 
    d_d = '<div class="deleted %s" style="width:%s%%">%s</div>' % (
 
        cgen('d', a_v, d_v), d_p, d_v
 
    )
 
    return literal('<div style="width:%spx">%s%s</div>' % (width, d_a, d_d))
 

	
 

	
 
def urlify_text(text_, safe=True):
 
    """
 
    Extrac urls from text and make html links out of them
 

	
 
    :param text_:
 
    """
 

	
 
    url_pat = re.compile(r'''(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+#]'''
 
                         '''|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)''')
 

	
 
    def url_func(match_obj):
 
        url_full = match_obj.groups()[0]
 
        return '<a href="%(url)s">%(url)s</a>' % ({'url': url_full})
 
    _newtext = url_pat.sub(url_func, text_)
 
    _newtext = url_re.sub(url_func, text_)
 
    if safe:
 
        return literal(_newtext)
 
    return _newtext
 

	
 

	
 
def urlify_changesets(text_, repository):
 
    """
 
    Extract revision ids from changeset and make link from them
 

	
 
    :param text_:
 
    :param repository: repo name to build the URL with
 
    """
 
    from pylons import url  # doh, we need to re-import url to mock it later
 

	
 
    def url_func(match_obj):
 
        rev = match_obj.group(0)
 
        return '<a class="revision-link" href="%(url)s">%(rev)s</a>' % {
 
         'url': url('changeset_home', repo_name=repository, revision=rev),
 
         'rev': rev,
 
        }
 

	
 
    return re.sub(r'(?:^|(?<=\s))([0-9a-fA-F]{12,40})(?=$|\s|[.,:])', url_func, text_)
 

	
 

	
kallithea/lib/markup_renderer.py
Show inline comments
 
@@ -14,48 +14,51 @@
 
"""
 
kallithea.lib.markup_renderer
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 

	
 
Renderer for markup languages with ability to parse using rst or markdown
 

	
 
This file was forked by the Kallithea project in July 2014.
 
Original author and date, and relevant copyright and licensing information is below:
 
:created_on: Oct 27, 2011
 
:author: marcink
 
:copyright: (c) 2013 RhodeCode GmbH, and others.
 
:license: GPLv3, see LICENSE.md for more details.
 
"""
 

	
 

	
 
import re
 
import logging
 
import traceback
 

	
 
from kallithea.lib.utils2 import safe_unicode, MENTIONS_REGEX
 

	
 
log = logging.getLogger(__name__)
 

	
 

	
 
url_re = re.compile(r'''(\bhttps?://(?:[\da-zA-Z0-9@:.-]+)'''
 
                    r'''(?:[/a-zA-Z0-9_=@#~&+%.,:?!*()-]*[/a-zA-Z0-9_=@#~])?)''')
 

	
 
class MarkupRenderer(object):
 
    RESTRUCTUREDTEXT_DISALLOWED_DIRECTIVES = ['include', 'meta', 'raw']
 

	
 
    MARKDOWN_PAT = re.compile(r'md|mkdn?|mdown|markdown', re.IGNORECASE)
 
    RST_PAT = re.compile(r're?st', re.IGNORECASE)
 
    PLAIN_PAT = re.compile(r'readme', re.IGNORECASE)
 

	
 
    def _detect_renderer(self, source, filename=None):
 
        """
 
        runs detection of what renderer should be used for generating html
 
        from a markup language
 

	
 
        filename can be also explicitly a renderer name
 

	
 
        :param source:
 
        :param filename:
 
        """
 

	
 
        if MarkupRenderer.MARKDOWN_PAT.findall(filename):
 
            detected_renderer = 'markdown'
 
        elif MarkupRenderer.RST_PAT.findall(filename):
 
            detected_renderer = 'rst'
 
        elif MarkupRenderer.PLAIN_PAT.findall(filename):
 
            detected_renderer = 'rst'
 
@@ -106,59 +109,53 @@ class MarkupRenderer(object):
 
                      pre_insert_callback, text)
 

	
 
        return text
 

	
 
    def render(self, source, filename=None):
 
        """
 
        Renders a given filename using detected renderer
 
        it detects renderers based on file extension or mimetype.
 
        At last it will just do a simple html replacing new lines with <br/>
 

	
 
        :param file_name:
 
        :param source:
 
        """
 

	
 
        renderer = self._detect_renderer(source, filename)
 
        readme_data = renderer(source)
 
        return readme_data
 

	
 
    @classmethod
 
    def plain(cls, source, universal_newline=True):
 
        source = safe_unicode(source)
 
        if universal_newline:
 
            newline = '\n'
 
            source = newline.join(source.splitlines())
 
        def urlify_text(text):
 
            url_pat = re.compile(r'(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+#]'
 
                                 '|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)')
 

	
 
            def url_func(match_obj):
 
                url_full = match_obj.groups()[0]
 
                return '<a href="%(url)s">%(url)s</a>' % ({'url': url_full})
 

	
 
            return url_pat.sub(url_func, text)
 

	
 
        source = urlify_text(source)
 
        source = url_re.sub(url_func, source)
 
        return '<br />' + source.replace("\n", '<br />')
 

	
 
    @classmethod
 
    def markdown(cls, source, safe=True, flavored=False):
 
        source = safe_unicode(source)
 
        try:
 
            import markdown as __markdown
 
            if flavored:
 
                source = cls._flavored_markdown(source)
 
            return __markdown.markdown(source, ['codehilite', 'extra'])
 
        except ImportError:
 
            log.warning('Install markdown to use this function')
 
            return cls.plain(source)
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            if safe:
 
                log.debug('Fallbacking to render in plain mode')
 
                return cls.plain(source)
 
            else:
 
                raise
 

	
 
    @classmethod
 
    def rst(cls, source, safe=True):
 
        source = safe_unicode(source)
kallithea/model/db.py
Show inline comments
 
@@ -2288,52 +2288,53 @@ class PullRequest(Base, BaseModel):
 
    author = relationship('User', lazy='joined')
 
    reviewers = relationship('PullRequestReviewers',
 
                             cascade="all, delete, delete-orphan")
 
    org_repo = relationship('Repository', primaryjoin='PullRequest.org_repo_id==Repository.repo_id')
 
    other_repo = relationship('Repository', primaryjoin='PullRequest.other_repo_id==Repository.repo_id')
 
    statuses = relationship('ChangesetStatus')
 
    comments = relationship('ChangesetComment',
 
                             cascade="all, delete, delete-orphan")
 

	
 
    def is_closed(self):
 
        return self.status == self.STATUS_CLOSED
 

	
 
    @property
 
    def last_review_status(self):
 
        return str(self.statuses[-1].status) if self.statuses else ''
 

	
 
    def __json__(self):
 
        return dict(
 
            revisions=self.revisions
 
        )
 

	
 
    def url(self, **kwargs):
 
        canonical = kwargs.pop('canonical', None)
 
        import kallithea.lib.helpers as h
 
        s = '/' + self.title
 
        b = self.org_ref_parts[1]
 
        if b != self.other_ref_parts[1]:
 
            s = '/_%s_%s' % (b, s)
 
            s = '/_/' + b
 
        else:
 
            s = '/_/' + self.title
 
        kwargs['extra'] = urlreadable(s)
 
        if canonical:
 
            return h.canonical_url('pullrequest_show', repo_name=self.other_repo.repo_name,
 
                                   pull_request_id=self.pull_request_id, **kwargs)
 
        return h.url('pullrequest_show', repo_name=self.other_repo.repo_name,
 
                     pull_request_id=self.pull_request_id, **kwargs)
 

	
 
class PullRequestReviewers(Base, BaseModel):
 
    __tablename__ = 'pull_request_reviewers'
 
    __table_args__ = (
 
        {'extend_existing': True, 'mysql_engine': 'InnoDB',
 
         'mysql_charset': 'utf8', 'sqlite_autoincrement': True},
 
    )
 

	
 
    def __init__(self, user=None, pull_request=None):
 
        self.user = user
 
        self.pull_request = pull_request
 

	
 
    pull_requests_reviewers_id = Column('pull_requests_reviewers_id', Integer(), nullable=False, primary_key=True)
 
    pull_request_id = Column("pull_request_id", Integer(), ForeignKey('pull_requests.pull_request_id'), nullable=False)
 
    user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=True)
 

	
 
    user = relationship('User')
 
    pull_request = relationship('PullRequest')
kallithea/public/css/bootstrap.css
Show inline comments
 
@@ -2523,49 +2523,49 @@ input[type="button"].btn-block {
 
.glyphicon-download-alt:before {
 
  content: "\e025";
 
}
 

	
 
.glyphicon-download:before {
 
  content: "\e026";
 
}
 

	
 
.glyphicon-upload:before {
 
  content: "\e027";
 
}
 

	
 
.glyphicon-inbox:before {
 
  content: "\e028";
 
}
 

	
 
.glyphicon-play-circle:before {
 
  content: "\e029";
 
}
 

	
 
.glyphicon-repeat:before {
 
  content: "\e030";
 
}
 

	
 
.glyphicon-refresh:before {
 
.glyphicon-arrows-cw:before {
 
  content: "\e031";
 
}
 

	
 
.glyphicon-list-alt:before {
 
  content: "\e032";
 
}
 

	
 
.glyphicon-flag:before {
 
  content: "\e034";
 
}
 

	
 
.glyphicon-headphones:before {
 
  content: "\e035";
 
}
 

	
 
.glyphicon-volume-off:before {
 
  content: "\e036";
 
}
 

	
 
.glyphicon-volume-down:before {
 
  content: "\e037";
 
}
 

	
 
.glyphicon-volume-up:before {
kallithea/public/css/contextbar.css
Show inline comments
 
/**
 
 * Stylesheets for the context bar
 
 */
 

	
 
i.icon-archive { background-image: url("../images/icons/database_edit.png"); }
 
i.icon-arrow-right { background-image: url('../images/icons/arrow_right.png');}
 
i.icon-ban-circle { background-image: url("../images/icons/cancel.png"); }
 
i.icon-bar-chart { background-image: url("../images/icons/chart_bar.png"); }
 
i.icon-book { background-image: url("../images/icons/book.png"); }
 
i.icon-bookmark { background-image: url("../images/icons/tag_green.png"); }
 
i.icon-code-fork { background-image: url("../images/icons/arrow_branch.png"); }
 
i.icon-code-merge { background-image: url("../images/icons/arrow_merge.png"); } /* unused! */
 
i.icon-cog { background-image: url("../images/icons/cog_edit.png"); }
 
i.icon-cog { background-image: url("../images/icons/cog.png"); }
 
i.icon-cogs { background-image: url("../images/icons/table_gear.png"); }
 
i.icon-ellipsis-horizontal:after { content: ' ...';}
 
i.icon-eye-open { background-image: url("../images/icons/eye.png"); }
 
i.icon-file-2 { background-image: url("../images/icons/note.png"); }
 
i.icon-file-alt { background-image: url("../images/icons/note_add.png"); }
 
i.icon-file { background-image: url("../images/icons/file.png"); }
 
i.icon-file-text { background-image: url("../images/icons/clipboard_16.png"); }
 
i.icon-file-txt { background-image: url("../images/icons/note_error.png"); }
 
i.icon-folder-close { background-image: url("../images/icons/database_link.png"); }
 
i.icon-git { background-image: url('../images/icons/giticon.png');}
 
i.icon-group { background-image: url("../images/icons/group_edit.png"); }
 
i.icon-heart { background-image: url("../images/icons/heart_delete.png"); }
 
i.icon-heart-empty { background-image: url("../images/icons/heart.png"); }
 
i.icon-hg { background-image: url('../images/icons/hgicon.png');}
 
i.icon-key { background-image: url("../images/icons/server_key.png"); }
 
i.icon-lock { background-image: url('../images/icons/lock.png');}
 
i.icon-lock-alt { background-image: url('../images/icons/private_repo.png');}
 
i.icon-loop { background-image: url('../images/icons/arrow_inout.png');}
 
i.icon-loop-2 { background-image: url('../images/icons/arrow_inout.png');}
 
i.icon-private { background-image: url('../images/icons/private_repo.png');}
 
i.icon-public { background-image: url('../images/icons/public_repo.png');}
 
i.icon-random { background-image: url("../images/icons/arrow_switch.png"); }
 
i.icon-refresh { background-image: url('../images/icons/arrow_refresh.png');}
 
i.icon-search { background-image: url("../images/icons/search_16.png"); }
 
i.icon-tag { background-image: url("../images/icons/tag_blue.png"); }
 
i.icon-time { background-image: url("../images/icons/time.png"); }
 
i.icon-list-alt { background-image: url("../images/icons/time.png"); }
 
i.icon-unlock { background-image: url('../images/icons/lock_open.png');}
 
i.icon-unlock-alt { background-image: url('../images/icons/public_repo.png');}
 
i.icon-user { background-image: url("../images/icons/user_edit.png"); }
 
i.icon-wrench { background-image: url("../images/icons/wrench.png"); }
 
i.icon-rss-sign { background-image: url('../images/icons/rss_16.png');}
 
i.icon-plus-sign { background-image: url('../images/icons/add.png');}
 
i.icon-chevron-left:after { content: "\00AB";}
 
i.icon-chevron-right:after { content: "\00BB";}
 
i.icon-copy { background-image: url('../images/icons/note_add.png');}
 
i.icon-pencil { background-image: url('../images/icons/application_form_edit.png');}
 
i.icon-remove { background-image: url('../images/icons/delete.png');}
 
i.icon-remove-sign { background-image: url('../images/icons/delete.png');}
 
i.icon-plus { background-image: url('../images/icons/plus_16.png');}
 
i.icon-resize-vertical { background-image: url('../images/icons/text_align_left.png');}
 
i.icon-ok-sign { background-image: url('../images/icons/tick.png');}
 
i.icon-minus-sign { background-image: url('../images/icons/delete.png');}
 
i.icon-disabled { background-image: url('../images/icons/shading.png');} /* todo: use instead of minus sign */
 

	
 
i[class^='icon-'] {
 
    background-repeat: no-repeat;
 
    background-position: center;
 
    display: inline-block;
 
    width: 16px;
 
    height: 16px;
 
    min-width: 16px;
 
    min-height: 16px;
 
    margin: -2px 0 -4px 0;
 
    /* background-color: red; /* for debugging */
 

	
 
}
 

	
 
/* css classes for diff file status ... it'd be nice if css had a way to
 
   inherit from another class but alas, we must make sure this content is the
 
   same from the icon font file */
 

	
 
.icon-diff-M:before {
 
    font-family: 'kallithea';
 
    content: '\e805';
 
    color: #d0b44c;
 
}
 

	
 
.icon-diff-D:before {
 
    font-family: 'kallithea';
 
    content: '\e807';
 
    color: #bd2c00;
 
}
 

	
 
.icon-diff-A:before {
 
    font-family: 'kallithea';
 
    content: '\e806';
 
    color: #6cc644;
 
}
 

	
 
.icon-diff-R:before {
 
    font-family: 'kallithea';
 
    content: '\e81f';
 
    color: #677a85;
 
}
 

	
 
#content #context-bar {
 
    position: relative;
 
    overflow: visible;
 
    background-color: #577632;
 
    padding: 0 5px;
 
    min-height: 36px;
 
}
 

	
 
#content #context-bar h2 {
 
    display: inline-block;
 
    color: #FFF;
 
}
 

	
 
#header #header-inner #quick a,
 
#content #context-bar,
 
#content #context-bar a {
 
    color: #FFFFFF;
 
}
 

	
 
#header #header-inner #quick a:hover,
 
#content #context-bar a:hover {
 
    text-decoration: none;
kallithea/public/css/style.css
Show inline comments
 
@@ -480,206 +480,99 @@ div.header img {
 
#header #header-inner #quick ul.repo_switcher {
 
    max-height: 275px;
 
    overflow-x: hidden;
 
    overflow-y: auto;
 
}
 

	
 
#header #header-inner #quick ul.repo_switcher li.qfilter_rs {
 
    padding: 2px 3px;
 
    padding-right: 17px;
 
}
 

	
 
#header #header-inner #quick ul.repo_switcher li.qfilter_rs input {
 
    width: 100%;
 
    border-radius: 10px;
 
    padding: 2px 7px;
 
}
 

	
 
#header #header-inner #quick .repo_switcher_type {
 
    position: absolute;
 
    left: 0;
 
    top: 9px;
 
    margin: 0px 2px 0px 2px;
 
}
 

	
 
#header #header-inner #quick li ul li a.journal,
 
#header #header-inner #quick li ul li a.journal:hover {
 
    background-image: url("../images/icons/book.png");
 
}
 

	
 
#header #header-inner #quick li ul li a.private_repo,
 
#header #header-inner #quick li ul li a.private_repo:hover {
 
    background-image: url("../images/icons/private_repo.png")
 
}
 

	
 
#header #header-inner #quick li ul li a.public_repo,
 
#header #header-inner #quick li ul li a.public_repo:hover {
 
    background-image: url("../images/icons/public_repo.png");
 
}
 

	
 
#header #header-inner #quick li ul li a.hg,
 
#header #header-inner #quick li ul li a.hg:hover {
 
    background-image: url("../images/icons/hgicon.png");
 
    padding-left: 42px;
 
    background-position: 20px 9px;
 
}
 

	
 
#header #header-inner #quick li ul li a.git,
 
#header #header-inner #quick li ul li a.git:hover {
 
    background-image: url("../images/icons/giticon.png");
 
    padding-left: 42px;
 
    background-position: 20px 9px;
 
}
 

	
 
#header #header-inner #quick li ul li a.repos,
 
#header #header-inner #quick li ul li a.repos:hover {
 
    background-image: url("../images/icons/database_edit.png");
 
}
 

	
 
#header #header-inner #quick li ul li a.repos_groups,
 
#header #header-inner #quick li ul li a.repos_groups:hover {
 
    background-image: url("../images/icons/database_link.png");
 
}
 

	
 
#header #header-inner #quick li ul li a.users,
 
#header #header-inner #quick li ul li a.users:hover {
 
    background-image: url("../images/icons/user_edit.png");
 
}
 

	
 
#header #header-inner #quick li ul li a.groups,
 
#header #header-inner #quick li ul li a.groups:hover {
 
    background-image: url("../images/icons/group_edit.png");
 
}
 

	
 
#header #header-inner #quick li ul li a.defaults,
 
#header #header-inner #quick li ul li a.defaults:hover {
 
    background-image: url("../images/icons/wrench.png");
 
}
 

	
 
#header #header-inner #quick li ul li a.settings,
 
#header #header-inner #quick li ul li a.settings:hover {
 
    background-image: url("../images/icons/cog.png");
 
}
 

	
 
#header #header-inner #quick li ul li a.permissions,
 
#header #header-inner #quick li ul li a.permissions:hover {
 
    background-image: url("../images/icons/key.png");
 
}
 

	
 
#header #header-inner #quick li ul li a.ldap,
 
#header #header-inner #quick li ul li a.ldap:hover {
 
    background-image: url("../images/icons/server_key.png");
 
}
 

	
 
#header #header-inner #quick li ul li a.fork,
 
#header #header-inner #quick li ul li a.fork:hover {
 
    background-image: url("../images/icons/arrow_divide.png");
 
}
 

	
 
#header #header-inner #quick li ul li a.locking_add,
 
#header #header-inner #quick li ul li a.locking_add:hover {
 
    background-image: url("../images/icons/lock_add.png");
 
}
 

	
 
#header #header-inner #quick li ul li a.locking_del,
 
#header #header-inner #quick li ul li a.locking_del:hover {
 
    background-image: url("../images/icons/lock_delete.png");
 
}
 

	
 
#header #header-inner #quick li ul li a.pull_request,
 
#header #header-inner #quick li ul li a.pull_request:hover {
 
    background-image: url("../images/icons/arrow_join.png") ;
 
}
 

	
 
#header #header-inner #quick li ul li a.compare_request,
 
#header #header-inner #quick li ul li a.compare_request:hover {
 
    background-image: url("../images/icons/arrow_inout.png");
 
}
 

	
 
#header #header-inner #quick li ul li a.search,
 
#header #header-inner #quick li ul li a.search:hover {
 
    background-image: url("../images/icons/search_16.png");
 
}
 

	
 
#header #header-inner #quick li ul li a.delete,
 
#header #header-inner #quick li ul li a.delete:hover {
 
    background-image: url("../images/icons/delete.png");
 
}
 

	
 
#header #header-inner #quick li ul li a.branches,
 
#header #header-inner #quick li ul li a.branches:hover {
 
    background-image: url("../images/icons/arrow_branch.png");
 
}
 

	
 
#header #header-inner #quick li ul li a.tags,
 
#header #header-inner #quick li ul li a.tags:hover {
 
    background: #FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
 
    width: 167px;
 
    margin: 0;
 
    padding: 12px 9px 7px 24px;
 
}
 

	
 
#header #header-inner #quick li ul li a.bookmarks,
 
#header #header-inner #quick li ul li a.bookmarks:hover {
 
    background: #FFF url("../images/icons/tag_green.png") no-repeat 4px 9px;
 
    width: 167px;
 
    margin: 0;
 
    padding: 12px 9px 7px 24px;
 
}
 

	
 
#header #header-inner #quick li ul li a.admin,
 
#header #header-inner #quick li ul li a.admin:hover {
 
    background: #FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
 
    width: 167px;
 
    margin: 0;
 
    padding: 12px 9px 7px 24px;
 
}
 

	
 
.groups_breadcrumbs a {
 
    color: #fff;
 
}
 

	
 
.groups_breadcrumbs a:hover {
 
    color: #bfe3ff;
 
    text-decoration: none;
 
}
 

	
 
td.quick_repo_menu:before {
 
    font-family: "kallithea";
 
    content: "\e80f";           /* triangle-right */
 
    margin-left: 3px;
 
    padding-right: 3px;
 
}
 

	
 
td.quick_repo_menu {
 
    background: #FFF url("../images/vertical-indicator.png") 8px 50% no-repeat !important;
 
    cursor: pointer;
 
    width: 8px;
 
    border: 1px solid transparent;
 
}
 

	
 
td.quick_repo_menu.active:before {
 
    font-family: "kallithea";
 
    content: "\e80d";           /* triangle-down */
 
    margin-left: 1px;
 
    padding-right: 0px;
 
}
 

	
 
td.quick_repo_menu.active {
 
    background: url("../images/dt-arrow-dn.png") no-repeat scroll 5px 50% #FFFFFF !important;
 
    border: 1px solid #577632;
 
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
 
    cursor: pointer;
 
}
 

	
 
td.quick_repo_menu .menu_items {
 
    margin-top: 10px;
 
    margin-top: 5px;
 
    margin-left: -6px;
 
    width: 150px;
 
    position: absolute;
 
    background-color: #FFF;
 
    background: none repeat scroll 0 0 #FFFFFF;
 
    border-color: #577632 #666666 #666666;
 
    border-right: 1px solid #666666;
 
    border-style: solid;
 
    border-width: 1px;
 
    box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
 
    border-top-style: none;
 
}
 

	
 
td.quick_repo_menu .menu_items li {
 
    padding: 0 !important;
 
}
 

	
 
td.quick_repo_menu .menu_items a {
 
    display: block;
 
    padding: 4px 12px 4px 8px;
 
}
 

	
 
td.quick_repo_menu .menu_items a:hover {
 
    background-color: #EEE;
 
@@ -757,49 +650,48 @@ th.yui-dt-hidden .yui-dt-resizer { displ
 
.yui-dt-editor-shim {
 
    position: absolute;
 
    z-index: 9000;
 
}
 
.yui-skin-sam .yui-dt table {
 
    margin: 0;
 
    padding: 0;
 
    font-family: arial;
 
    font-size: inherit;
 
    border-collapse: separate;
 
    *border-collapse: collapse;
 
    border-spacing: 0;
 
    border: 1px solid #7f7f7f;
 
}
 
.yui-skin-sam .yui-dt thead { border-spacing: 0 }
 
.yui-skin-sam .yui-dt caption {
 
    color: #000;
 
    font-size: 85%;
 
    font-weight: normal;
 
    font-style: italic;
 
    line-height: 1;
 
    padding: 1em 0;
 
    text-align: center;
 
}
 
.yui-skin-sam .yui-dt th { background: #d8d8da url(../images/sprite.png) repeat-x 0 0 }
 
.yui-skin-sam .yui-dt th,
 
.yui-skin-sam .yui-dt th a {
 
    font-weight: normal;
 
    text-decoration: none;
 
    color: #000;
 
    vertical-align: bottom;
 
}
 
.yui-skin-sam .yui-dt th {
 
    margin: 0;
 
    padding: 0;
 
    border: 0;
 
    border-right: 1px solid #cbcbcb;
 
}
 
.yui-skin-sam .yui-dt tr.yui-dt-first td { border-top: 1px solid #7f7f7f }
 
.yui-skin-sam .yui-dt th .yui-dt-liner { white-space: nowrap }
 
.yui-skin-sam .yui-dt-liner {
 
    margin: 0;
 
    padding: 0;
 
}
 
.yui-skin-sam .yui-dt-coltarget {
 
    width: 5px;
 
    background-color: red;
 
}
 
.yui-skin-sam .yui-dt td {
 
@@ -810,88 +702,75 @@ th.yui-dt-hidden .yui-dt-resizer { displ
 
    text-align: left;
 
}
 
.yui-skin-sam .yui-dt-list td { border-right: 0 }
 
.yui-skin-sam .yui-dt-resizer { width: 6px }
 
.yui-skin-sam .yui-dt-mask {
 
    background-color: #000;
 
    opacity: .25;
 
    filter: alpha(opacity=25);
 
}
 
.yui-skin-sam .yui-dt-message { background-color: #FFF }
 
.yui-skin-sam .yui-dt-scrollable table { border: 0 }
 
.yui-skin-sam .yui-dt-scrollable .yui-dt-hd {
 
    border-left: 1px solid #7f7f7f;
 
    border-top: 1px solid #7f7f7f;
 
    border-right: 1px solid #7f7f7f;
 
}
 
.yui-skin-sam .yui-dt-scrollable .yui-dt-bd {
 
    border-left: 1px solid #7f7f7f;
 
    border-bottom: 1px solid #7f7f7f;
 
    border-right: 1px solid #7f7f7f;
 
    background-color: #FFF;
 
}
 
.yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td { border-bottom: 1px solid #7f7f7f }
 
.yui-skin-sam th.yui-dt-asc,
 
.yui-skin-sam th.yui-dt-desc { background: url(../images/sprite.png) repeat-x 0 -100px }
 
.yui-skin-sam th.yui-dt-sortable .yui-dt-label { margin-right: 10px }
 
.yui-skin-sam th.yui-dt-asc .yui-dt-liner { background: url(../images/dt-arrow-up.png) no-repeat right }
 
.yui-skin-sam th.yui-dt-desc .yui-dt-liner { background: url(../images/dt-arrow-dn.png) no-repeat right }
 

	
 
.yui-skin-sam th.yui-dt-asc .yui-dt-liner:after {
 
    font-family: "kallithea";
 
    content: "\e810";           /* triangle-up */
 
}
 

	
 
.yui-skin-sam th.yui-dt-desc .yui-dt-liner:after {
 
    font-family: "kallithea";
 
    content: "\e80d";           /* triangle-down */
 
}
 

	
 
tbody .yui-dt-editable { cursor: pointer }
 
.yui-dt-editor {
 
    text-align: left;
 
    background-color: #f2f2f2;
 
    border: 1px solid #808080;
 
    padding: 6px;
 
}
 
.yui-dt-editor label {
 
    padding-left: 4px;
 
    padding-right: 6px;
 
}
 
.yui-dt-editor .yui-dt-button {
 
    padding-top: 6px;
 
    text-align: right;
 
}
 
.yui-dt-editor .yui-dt-button button {
 
    background: url(../images/sprite.png) repeat-x 0 0;
 
    border: 1px solid #999;
 
    width: 4em;
 
    height: 1.8em;
 
    margin-left: 6px;
 
}
 
.yui-dt-editor .yui-dt-button button.yui-dt-default {
 
    background: url(../images/sprite.png) repeat-x 0 -1400px;
 
    background-color: #5584e0;
 
    border: 1px solid #304369;
 
    color: #FFF;
 
}
 
.yui-dt-editor .yui-dt-button button:hover {
 
    background: url(../images/sprite.png) repeat-x 0 -1300px;
 
    color: #000;
 
}
 
.yui-dt-editor .yui-dt-button button:active {
 
    background: url(../images/sprite.png) repeat-x 0 -1700px;
 
    color: #000;
 
}
 
.yui-skin-sam tr.yui-dt-even { background-color: #FFF }
 
.yui-skin-sam tr.yui-dt-odd { background-color: #edf5ff }
 
.yui-skin-sam tr.yui-dt-even td.yui-dt-asc,
 
.yui-skin-sam tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
 
.yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,
 
.yui-skin-sam tr.yui-dt-odd td.yui-dt-desc { background-color: #dbeaff }
 
.yui-skin-sam .yui-dt-list tr.yui-dt-even { background-color: #FFF }
 
.yui-skin-sam .yui-dt-list tr.yui-dt-odd { background-color: #FFF }
 
.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-asc,
 
.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
 
.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-asc,
 
.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-desc { background-color: #edf5ff }
 
.yui-skin-sam th.yui-dt-highlighted,
 
.yui-skin-sam th.yui-dt-highlighted a { background-color: #b2d2ff }
 
.yui-skin-sam tr.yui-dt-highlighted,
 
.yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,
 
.yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,
 
.yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,
 
.yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted {
 
    cursor: pointer;
 
    background-color: #b2d2ff;
 
}
 
.yui-skin-sam .yui-dt-list th.yui-dt-highlighted,
 
.yui-skin-sam .yui-dt-list th.yui-dt-highlighted a { background-color: #b2d2ff }
 
@@ -1169,57 +1048,48 @@ tbody .yui-dt-editable { cursor: pointer
 
    border-radius: 2px;
 
}
 

	
 
#content div.box div.message a {
 
    font-weight: 400 !important;
 
}
 

	
 
#content div.box div.message div.image {
 
    float: left;
 
    margin: 9px 0 0 5px;
 
    padding: 6px;
 
}
 

	
 
#content div.box div.message div.image img {
 
    vertical-align: middle;
 
    margin: 0;
 
}
 

	
 
#content div.box div.message div.text {
 
    float: left;
 
    margin: 0;
 
    padding: 9px 6px;
 
}
 

	
 
#content div.box div.message div.dismiss a {
 
    height: 16px;
 
    width: 16px;
 
    display: block;
 
    background: url("../images/icons/cross.png") no-repeat;
 
    margin: 15px 14px 0 0;
 
    padding: 0;
 
}
 

	
 
#content div.box div.message div.text h1,
 
#content div.box div.message div.text h2,
 
#content div.box div.message div.text h3,
 
#content div.box div.message div.text h4,
 
#content div.box div.message div.text h5,
 
#content div.box div.message div.text h6 {
 
    border: none;
 
    margin: 0;
 
    padding: 0;
 
}
 

	
 
#content div.box div.message div.text span {
 
    height: 1%;
 
    display: block;
 
    margin: 0;
 
    padding: 5px 0 0;
 
}
 

	
 
#content div.box div.message-error {
 
    height: 1%;
 
    clear: both;
 
    overflow: hidden;
 
    background: #FBE3E4;
 
    border: 1px solid #FBC2C4;
 
@@ -1781,54 +1651,48 @@ div.form div.fields div.field div.button
 
    right: 0;
 
}
 

	
 
#summary-menu-stats ul {
 
    margin: 0 10px;
 
    display: block;
 
    background-color: #f9f9f9;
 
    border: 1px solid #d1d1d1;
 
    border-radius: 4px;
 
}
 

	
 
#content #summary-menu-stats li {
 
    border-top: 1px solid #d1d1d1;
 
    padding: 0;
 
}
 

	
 
#content #summary-menu-stats li:hover {
 
    background: #f0f0f0;
 
}
 

	
 
#content #summary-menu-stats li:first-child {
 
    border-top: none;
 
}
 

	
 
#summary-menu-stats a.followers { background-image: url('../images/icons/heart.png')}
 
#summary-menu-stats a.forks { background-image: url('../images/icons/arrow_divide.png')}
 
#summary-menu-stats a.settings { background-image: url('../images/icons/cog_edit.png')}
 
#summary-menu-stats a.feed { background-image: url('../images/icons/rss_16.png')}
 
#summary-menu-stats a.repo-size { background-image: url('../images/icons/server.png')}
 

	
 
#summary-menu-stats a {
 
    display: block;
 
    padding: 12px 10px;
 
    background-repeat: no-repeat;
 
    background-position: 10px 50%;
 
    padding-right: 10px;
 
}
 

	
 
#repo_size_2.loaded {
 
    margin-left: 30px;
 
    display: block;
 
    padding-right: 10px;
 
    padding-bottom: 7px;
 
}
 

	
 
#summary-menu-stats a:hover {
 
    text-decoration: none;
 
}
 

	
 
#summary-menu-stats a span {
 
    background-color: #DEDEDE;
 
    color: #888 !important;
 
    border-radius: 4px;
 
    padding: 2px 4px;
 
@@ -1960,50 +1824,55 @@ a.metatag[tag="license"]:hover {
 

	
 
#footer div#footer-inner .footer-link a,
 
#footer div#footer-inner .footer-link-right a {
 
    color: #FFF;
 
}
 

	
 
#login div.title {
 
    clear: both;
 
    overflow: hidden;
 
    position: relative;
 
    background-color: #577632;
 
    background-repeat: repeat-x;
 
    background-image: -khtml-gradient( linear, left top, left bottom, from(#577632), to(#577632));
 
    background-image: -moz-linear-gradient( top, #577632, #577632);
 
    background-image: -ms-linear-gradient( top, #577632, #577632);
 
    background-image: -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #577632), color-stop( 100%, #577632));
 
    background-image: -webkit-linear-gradient( top, #577632, #577632));
 
    background-image: -o-linear-gradient( top, #577632, #577632));
 
    background-image: linear-gradient(to bottom, #577632, #577632);
 
    filter: progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#577632', endColorstr = '#577632', GradientType = 0);
 
    margin: 0 auto;
 
    padding: 0;
 
}
 

	
 
#login div.inner .icon-lock {
 
    font-size: 80pt;
 
    color: #DDD;
 
}
 

	
 
#login div.inner {
 
    background: #FFF url("../images/login.png") no-repeat top left;
 
    background: #FFF;
 
    border-top: none;
 
    border-bottom: none;
 
    margin: 0 auto;
 
    padding: 20px;
 
}
 

	
 
#login div.form div.fields div.field div.label {
 
    width: 173px;
 
    float: left;
 
    text-align: right;
 
    margin: 2px 10px 0 0;
 
    padding: 5px 0 0 5px;
 
}
 

	
 
#login div.form div.fields div.field div.input input {
 
    background: #FFF;
 
    border-top: 1px solid #b3b3b3;
 
    border-left: 1px solid #b3b3b3;
 
    border-right: 1px solid #eaeaea;
 
    border-bottom: 1px solid #eaeaea;
 
    color: #000;
 
    font-size: 11px;
 
    margin: 0;
 
    padding: 7px 7px 6px;
 
@@ -2527,72 +2396,70 @@ BIN_FILENODE = 6
 
}
 

	
 
/*mod binary*/
 
.cs_files .changes .bin.bin3 {
 
    background-color: #DDDDDD;
 
}
 

	
 
/*rename file*/
 
.cs_files .changes .bin.bin4 {
 
    background-color: #6D99FF;
 
}
 

	
 
/*rename file*/
 
.cs_files .changes .bin.bin4 {
 
    background-color: #6D99FF;
 
}
 

	
 
/*chmod file*/
 
.cs_files .changes .bin.bin5 {
 
    background-color: #6D99FF;
 
}
 

	
 
.cs_files .cs_added,
 
.cs_files .cs_A {
 
    background: url("../images/icons/page_white_add.png") no-repeat scroll
 
        3px;
 
    height: 16px;
 
    padding-left: 20px;
 
    margin-top: 7px;
 
    text-align: left;
 
}
 

	
 
.cs_files .cs_changed,
 
.cs_files .cs_M {
 
    background: url("../images/icons/page_white_edit.png") no-repeat scroll
 
        3px;
 
    height: 16px;
 
    padding-left: 20px;
 
    margin-top: 7px;
 
    text-align: left;
 
}
 

	
 
.cs_files .cs_removed,
 
.cs_files .cs_D {
 
    background: url("../images/icons/page_white_delete.png") no-repeat
 
        scroll 3px;
 
    height: 16px;
 
    padding-left: 20px;
 
    margin-top: 7px;
 
    text-align: left;
 
}
 

	
 
.cs_files .cs_renamed,
 
.cs_files .cs_R {
 
    height: 16px;
 
    margin-top: 7px;
 
    text-align: left;
 
}
 

	
 
.table {
 
    position: relative;
 
}
 

	
 
#graph {
 
    position: relative;
 
    overflow: hidden;
 
}
 

	
 
#graph_nodes {
 
    position: absolute;
 
}
 

	
 
#graph_content,
 
#graph .info_box,
 
#graph .container_header {
 
    margin-left: 100px;
 
}
 

	
 
#graph_content {
 
@@ -2795,68 +2662,72 @@ BIN_FILENODE = 6
 
    margin-top: 1px;
 
    float: right;
 
    height: 14px;
 
}
 
.code-header .changeset-status-container {
 
    float: left;
 
    padding: 2px 0px 0px 2px;
 
}
 
.changeset-status-container .changeset-status-lbl {
 
    float: left;
 
    padding: 3px 4px 0px 0px
 
}
 
.code-header .changeset-status-container .changeset-status-lbl {
 
    float: left;
 
    padding: 0px 4px 0px 0px;
 
}
 
.changeset-status-container .changeset-status-ico {
 
    float: left;
 
}
 
.code-header .changeset-status-container .changeset-status-ico,
 
.container .changeset-status-ico {
 
    float: left;
 
}
 

	
 
/* changeset statuses (must be the same name as the status) */
 
.changeset-status-not_reviewed {
 
    color: #bababa;
 
}
 
.changeset-status-approved {
 
    color: #81ba51;
 
}
 
.changeset-status-rejected {
 
    color: #cc392e;
 
}
 
.changeset-status-under_review {
 
    color: #ffc71e;
 
}
 

	
 
#graph_content .comments-cnt {
 
    color: rgb(136, 136, 136);
 
    padding: 5px 0;
 
}
 

	
 
#shortlog_data .comments-cnt {
 
    color: rgb(136, 136, 136);
 
    padding: 3px 0;
 
}
 

	
 
#pull_request_overview .comments-cnt a,
 
#changeset_compare_view_content .comments-cnt a,
 
#graph_content .comments-cnt a,
 
#shortlog_data .comments-cnt a {
 
    background-image: url('../images/icons/comments.png');
 
    background-repeat: no-repeat;
 
    background-position: 100% 50%;
 
    padding: 5px 0;
 
}
 

	
 
.right .changes {
 
    clear: both;
 
}
 

	
 
.right .changes .changed_total {
 
    display: block;
 
    float: right;
 
    text-align: center;
 
    min-width: 45px;
 
    cursor: pointer;
 
    color: #444444;
 
    background: #FEA;
 
    -webkit-border-radius: 0px 0px 0px 6px;
 
    border-radius: 0px 0px 0px 6px;
 
    padding: 1px;
 
}
 

	
 
.right .changes .added,
 
.changed, .removed {
 
    display: block;
 
    padding: 1px;
 
    color: #444444;
 
    float: right;
 
    text-align: center;
 
@@ -3064,104 +2935,106 @@ div.browserblock .browser-body {
 
table.code-browser {
 
    border-collapse: collapse;
 
    width: 100%;
 
}
 

	
 
table.code-browser tr {
 
    margin: 3px;
 
}
 

	
 
table.code-browser thead th {
 
    background-color: #EEE;
 
    height: 20px;
 
    font-size: 1.1em;
 
    font-weight: 700;
 
    text-align: left;
 
    padding-left: 10px;
 
}
 

	
 
table.code-browser tbody td {
 
    padding-left: 10px;
 
    height: 20px;
 
}
 

	
 
table.code-browser .browser-file {
 
    background: url("../images/icons/document_16.png") no-repeat scroll 3px;
 
    height: 16px;
 
    padding-left: 20px;
 
    padding-left: 5px;
 
    text-align: left;
 
}
 
.diffblock .changeset_header {
 
    height: 16px;
 
}
 
.diffblock .changeset_file {
 
    float: left;
 
}
 
.diffblock .diff-menu-wrapper {
 
    float: left;
 
}
 

	
 
.diffblock .diff-menu {
 
    position: absolute;
 
    background: none repeat scroll 0 0 #FFFFFF;
 
    border-color: #577632 #666666 #666666;
 
    border-right: 1px solid #666666;
 
    border-style: solid solid solid;
 
    border-width: 1px;
 
    box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
 
    margin-top: 5px;
 
    margin-left: 1px;
 

	
 
}
 
.diffblock .diff-actions {
 
    padding: 2px 0px 0px 2px;
 
    float: left;
 
}
 
.diffblock .diff-menu ul li {
 
    padding: 0px 0px 0px 0px !important;
 
}
 
.diffblock .diff-menu ul li a {
 
    display: block;
 
    padding: 3px 8px 3px 8px !important;
 
}
 
.diffblock .diff-menu ul li a:hover {
 
    text-decoration: none;
 
    background-color: #EEEEEE;
 
}
 
table.code-browser .browser-dir {
 
    background: url("../images/icons/folder_16.png") no-repeat scroll 3px;
 
    height: 16px;
 
    padding-left: 20px;
 
    padding-left: 5px;
 
    text-align: left;
 
}
 

	
 
table.code-browser .submodule-dir {
 
    background: url("../images/icons/disconnect.png") no-repeat scroll 3px;
 
    height: 16px;
 
    padding-left: 20px;
 
    padding-left: 5px;
 
    text-align: left;
 
}
 

	
 
/* add some padding to the right of the file, folder, or submodule icon and
 
before the text */
 
table.code-browser i[class^='icon-'] {
 
    padding-right: .3em;
 
}
 

	
 
.box .search {
 
    clear: both;
 
    overflow: hidden;
 
    margin: 0;
 
    padding: 0 20px 10px;
 
}
 

	
 
.box .search div.search_path {
 
    background: none repeat scroll 0 0 #EEE;
 
    border: 1px solid #CCC;
 
    color: blue;
 
    margin-bottom: 10px;
 
    padding: 10px 0;
 
}
 

	
 
.box .search div.search_path div.link {
 
    font-weight: 700;
 
    margin-left: 25px;
 
}
 

	
 
.box .search div.search_path div.link a {
 
    color: #577632;
 
    cursor: pointer;
 
@@ -3314,170 +3187,60 @@ table.code-browser .submodule-dir {
 
    height: 18px;
 
    z-index: 9050;
 
    display: block;
 
    width: auto !important;
 
}
 

	
 
.ac .yui-ac-content li .ac-container-wrap {
 
    width: auto;
 
}
 

	
 
.ac .yui-ac-content li.yui-ac-prehighlight {
 
    background: #B3D4FF;
 
    z-index: 9050;
 
}
 

	
 
.ac .yui-ac-content li.yui-ac-highlight {
 
    background: #556CB5;
 
    color: #FFF;
 
    z-index: 9050;
 
}
 
.ac .yui-ac-bd {
 
    z-index: 9050;
 
}
 

	
 
.reposize {
 
    background: url("../images/icons/server.png") no-repeat scroll 3px;
 
    height: 16px;
 
    width: 20px;
 
    cursor: pointer;
 
    display: block;
 
    float: right;
 
    margin-top: 2px;
 
}
 

	
 
#repo_size {
 
    display: block;
 
    margin-top: 4px;
 
    color: #666;
 
    float: right;
 
}
 

	
 
.locking_locked {
 
    background: #FFF url("../images/icons/block_16.png") no-repeat scroll 3px;
 
    height: 16px;
 
    width: 20px;
 
    cursor: pointer;
 
    display: block;
 
    float: right;
 
    margin-top: 2px;
 
}
 

	
 
.locking_unlocked {
 
    background: #FFF url("../images/icons/accept.png") no-repeat scroll 3px;
 
    height: 16px;
 
    width: 20px;
 
    cursor: pointer;
 
    display: block;
 
    float: right;
 
    margin-top: 2px;
 
}
 

	
 
.currently_following {
 
    padding-left: 10px;
 
    padding-bottom: 5px;
 
}
 

	
 
.add_icon {
 
    background: url("../images/icons/add.png") no-repeat scroll 3px;
 
    padding-left: 20px;
 
    padding-top: 0px;
 
    text-align: left;
 
}
 

	
 
.accept_icon {
 
    background: url("../images/icons/accept.png") no-repeat scroll 3px;
 
    padding-left: 20px;
 
    padding-top: 0px;
 
    text-align: left;
 
}
 

	
 
.edit_icon {
 
    background: url("../images/icons/application_form_edit.png") no-repeat scroll 3px;
 
    padding-left: 20px;
 
    padding-top: 0px;
 
    text-align: left;
 
}
 

	
 
.delete_icon {
 
    background: url("../images/icons/delete.png") no-repeat scroll 3px;
 
    padding-left: 20px;
 
    padding-top: 0px;
 
    text-align: left;
 
}
 

	
 
.refresh_icon {
 
    background: url("../images/icons/arrow_refresh.png") no-repeat scroll
 
        3px;
 
    padding-left: 20px;
 
    padding-top: 0px;
 
    text-align: left;
 
}
 

	
 
.pull_icon {
 
    background: url("../images/icons/connect.png") no-repeat scroll 3px;
 
    padding-left: 20px;
 
    padding-top: 0px;
 
    text-align: left;
 
}
 

	
 
.rss_icon {
 
    background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
 
    padding-left: 20px;
 
    padding-top: 4px;
 
    text-align: left;
 
    font-size: 8px
 
}
 

	
 
.atom_icon {
 
    background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
 
    padding-left: 20px;
 
    padding-top: 4px;
 
    text-align: left;
 
    font-size: 8px
 
}
 

	
 
.archive_icon {
 
    background: url("../images/icons/compress.png") no-repeat scroll 3px;
 
    padding-left: 20px;
 
    text-align: left;
 
    padding-top: 1px;
 
}
 

	
 
.start_following_icon {
 
    background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
 
    padding-left: 20px;
 
    text-align: left;
 
    padding-top: 0px;
 
}
 

	
 
.stop_following_icon {
 
    background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
 
    padding-left: 20px;
 
    text-align: left;
 
    padding-top: 0px;
 
}
 

	
 
.action_button {
 
    border: 0;
 
    display: inline;
 
}
 

	
 
.action_button:hover {
 
    border: 0;
 
    text-decoration: underline;
 
    cursor: pointer;
 
}
 

	
 
#switch_repos {
 
    position: absolute;
 
    height: 25px;
 
    z-index: 1;
 
}
 

	
 
#switch_repos select {
 
    min-width: 150px;
 
    max-height: 250px;
 
    z-index: 1;
 
}
 

	
 
.breadcrumbs {
 
@@ -3586,57 +3349,48 @@ table.code-browser .submodule-dir {
 
.flash_msg .alert-error,
 
.flash_msg .alert-warning,
 
.flash_msg .alert-success,
 
.flash_msg .alert-info {
 
    font-size: 12px;
 
    font-weight: 700;
 
    min-height: 14px;
 
    line-height: 14px;
 
    margin-bottom: 10px;
 
    margin-top: 0;
 
    display: block;
 
    overflow: auto;
 
    padding: 6px 10px 6px 10px;
 
    border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
 
    position: relative;
 
    color: #FFF;
 
    border-width: 1px;
 
    border-style: solid;
 
    -webkit-border-radius: 4px;
 
    border-radius: 4px;
 
    -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
 
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
 
}
 

	
 
#msg_close {
 
    background: transparent url("../images/cross_grey_small.png") no-repeat scroll 0 0;
 
    cursor: pointer;
 
    height: 16px;
 
    position: absolute;
 
    right: 5px;
 
    top: 5px;
 
    width: 16px;
 
}
 
div#legend_data {
 
    padding-left: 10px;
 
}
 
div#legend_container table {
 
    border: none !important;
 
}
 
div#legend_container table,
 
div#legend_choices table {
 
    width: auto !important;
 
}
 

	
 
table#permissions_manage {
 
    width: 0 !important;
 
}
 

	
 
table#permissions_manage span.private_repo_msg {
 
    font-size: 0.8em;
 
    opacity: 0.6;
 
}
 

	
 
table#permissions_manage td.private_repo_msg {
 
    font-size: 0.8em;
 
}
 

	
 
@@ -3711,61 +3465,48 @@ div.gravatar img {
 

	
 
ul.nav-stacked {
 
    margin: 20px;
 
    color: #393939;
 
    font-weight: 700;
 
}
 

	
 
ul.nav-stacked a {
 
    color: inherit;
 
}
 

	
 
/* make .btn inputs and buttons and divs look the same */
 
button.btn,
 
input.btn {
 
    font-family: inherit;
 
    font-size: inherit;
 
    line-height: inherit;
 
}
 

	
 
.btn::-moz-focus-inner {
 
    border: 0;
 
    padding: 0;
 
}
 

	
 
/* make .btn inputs and buttons and divs look the same */
 
button.btn,
 
input.btn {
 
    font-family: inherit;
 
    font-size: inherit;
 
    line-height: inherit;
 
}
 

	
 
.btn::-moz-focus-inner {
 
    border: 0;
 
    padding: 0;
 
}
 

	
 
.btn.badge {
 
    cursor: default !important;
 
}
 

	
 
.btn.disabled {
 
    color: #999;
 
}
 

	
 
.btn.btn-danger.disabled {
 
    color: #eee;
 
    background-color: #c77;
 
    border-color: #b66
 
}
 

	
 
.btn.btn-small {
 
    padding: 2px 6px;
 
}
 

	
 
.btn.btn-mini {
 
    padding: 0px 4px;
 
}
 

	
 
.btn:focus {
 
    outline: none;
 
@@ -4062,118 +3803,80 @@ div#legend_data, div#legend_container, d
 

	
 
#content div.box div.form div.fields div.field div.checkboxes div.checkbox input,
 
#content div.box div.form div.fields div.field div.radios div.radio input {
 
    float: left;
 
    margin: 0;
 
}
 

	
 
#content div.box div.form div.fields div.field div.checkboxes div.checkbox label,
 
#content div.box div.form div.fields div.field div.radios div.radio label {
 
    height: 1%;
 
    display: block;
 
    float: left;
 
    margin: 2px 0 0 4px;
 
}
 

	
 
div.form div.fields div.field div.button input,
 
#content div.box div.form div.fields div.buttons input
 
div.form div.fields div.buttons input,
 
#content div.box div.action div.button input {
 
    font-size: 11px;
 
    font-weight: 700;
 
    margin: 0;
 
}
 

	
 
input.ui-button {
 
    background: #e5e3e3 url("../images/button.png") repeat-x;
 
    border-top: 1px solid #DDD;
 
    border-left: 1px solid #c6c6c6;
 
    border-right: 1px solid #DDD;
 
    border-bottom: 1px solid #c6c6c6;
 
    color: #515151 !important;
 
    outline: none;
 
    margin: 0;
 
    padding: 6px 12px;
 
    -webkit-border-radius: 4px 4px 4px 4px;
 
    -khtml-border-radius: 4px 4px 4px 4px;
 
    border-radius: 4px 4px 4px 4px;
 
    box-shadow: 0 1px 0 #ececec;
 
    cursor: pointer;
 
}
 

	
 
input.ui-button:hover {
 
    background: #b4b4b4 url("../images/button_selected.png") repeat-x;
 
    border-top: 1px solid #ccc;
 
    border-left: 1px solid #bebebe;
 
    border-right: 1px solid #b1b1b1;
 
    border-bottom: 1px solid #afafaf;
 
}
 

	
 
div.form div.fields div.field div.highlight,
 
#content div.box div.form div.fields div.buttons div.highlight {
 
    display: inline;
 
}
 

	
 
#content div.box div.form div.fields div.buttons,
 
div.form div.fields div.buttons {
 
    margin: 10px 0 0 200px;
 
    padding: 0;
 
}
 

	
 
#content div.box-left div.form div.fields div.buttons,
 
#content div.box-right div.form div.fields div.buttons,
 
div.box-left div.form div.fields div.buttons,
 
div.box-right div.form div.fields div.buttons {
 
    margin: 10px 0 0;
 
}
 

	
 
#content div.box table td.user,
 
#content div.box table td.address {
 
    width: 10%;
 
    text-align: center;
 
}
 

	
 
#content div.box div.action div.button,
 
#login div.form div.fields div.field div.input div.link,
 
#register div.form div.fields div.field div.input div.link {
 
    text-align: right;
 
    margin: 6px 0 0;
 
    padding: 0;
 
}
 

	
 
#content div.box div.action div.button input.ui-state-hover,
 
#login div.form div.fields div.buttons input.ui-state-hover,
 
#register div.form div.fields div.buttons input.ui-state-hover {
 
    background: #b4b4b4 url("../images/button_selected.png") repeat-x;
 
    border-top: 1px solid #ccc;
 
    border-left: 1px solid #bebebe;
 
    border-right: 1px solid #b1b1b1;
 
    border-bottom: 1px solid #afafaf;
 
    color: #515151;
 
    margin: 0;
 
    padding: 6px 12px;
 
}
 

	
 
#content div.box div.pagination div.results,
 
#content div.box div.pagination-wh div.results {
 
    text-align: left;
 
    float: left;
 
    margin: 0;
 
    padding: 0;
 
}
 

	
 
#content div.box div.pagination div.results span,
 
#content div.box div.pagination-wh div.results span {
 
    height: 1%;
 
    display: block;
 
    float: left;
 
    background: #ebebeb url("../images/pager.png") repeat-x;
 
    border-top: 1px solid #dedede;
 
    border-left: 1px solid #cfcfcf;
 
    border-right: 1px solid #c4c4c4;
 
    border-bottom: 1px solid #c4c4c4;
 
    color: #4A4A4A;
 
    font-weight: 700;
 
    margin: 0;
 
    padding: 6px 8px;
 
}
 

	
 
@@ -5216,78 +4919,87 @@ table.code-difftable .code pre {
 
    margin: 0;
 
    padding: 0;
 
    min-height: 17px;
 
    line-height: 17px;
 
    white-space: pre-wrap;
 
}
 

	
 
.add-bubble {
 
    display: none;
 
    float: left;
 
    width: 0px;
 
    height: 0px;
 
}
 

	
 
tr.line.add td.code:hover .add-bubble,
 
tr.line.del td.code:hover .add-bubble,
 
tr.line.unmod td.code:hover .add-bubble {
 
    display: inherit;
 
}
 

	
 
.add-bubble div {
 
    position: relative;
 
    left: -32px;
 
    width: 32px;
 
    top: -8px;
 
    height: 32px;
 
    background: url("../images/icons/comment_add.png") no-repeat 100% 50%;
 
    cursor: pointer;
 
}
 

	
 
.add-bubble div:before {
 
    font-size: 14px;
 
    color: #577632;
 
    font-family: "kallithea";
 
    content: '\e80c';
 
}
 

	
 
div.comment:target>.comment-wrapp {
 
    border: solid 2px #ee0 !important;
 
}
 

	
 
.lineno:target a {
 
    border: solid 2px #ee0 !important;
 
    margin: -2px;
 
}
 

	
 
.btn-image-diff-show,
 
.btn-image-diff-swap {
 
    margin: 5px;
 
}
 

	
 
.img-diff {
 
    max-width: 45%;
 
    height: auto;
 
    margin: 5px;
 
    /* http://lea.verou.me/demos/css3-patterns.html */
 
    background-image:
 
        linear-gradient(45deg, #888 25%, transparent 25%, transparent),
 
        linear-gradient(-45deg, #888 25%, transparent 25%, transparent),
 
        linear-gradient(45deg, transparent 75%, #888 75%),
 
        linear-gradient(-45deg, transparent 75%, #888 75%);
 
    background-size: 10px 10px;
 
    background-color: #999;
 
}
 

	
 
.img-preview {
 
    max-width: 100%;
 
    height: auto;
 
    margin: 5px;
 
}
 

	
 
div.prev-next-comment div.prev-comment,
 
div.prev-next-comment div.next-comment {
 
    display: inline-block;
 
    min-width: 150px;
 
    margin: 3px 6px;
 
}
 

	
 
#help_kb {
 
    display: none;
 
}
 

	
 
.repo-switcher-dropdown .select2-result-label span.repo-icons {
 
    margin-left: -12px;
 
}
 

	
 
.icon-only-links i {
 
    color: white;
 
}
kallithea/public/fontello/README-kallithea.txt
Show inline comments
 
new file 100644
 
Files mentioned here might have been edited or removed. Re-run the export from
 
fontello by importing the config.json found in this same directory.
 

	
 
Specifically, the ie7 and animation css files were not added to the repository.
kallithea/public/fontello/README.txt
Show inline comments
 
new file 100644
 
This webfont is generated by http://fontello.com open source project.
 

	
 

	
 
================================================================================
 
Please, note, that you should obey original font licences, used to make this
 
webfont pack. Details available in LICENSE.txt file.
 

	
 
- Usually, it's enough to publish content of LICENSE.txt file somewhere on your
 
  site in "About" section.
 

	
 
- If your project is open-source, usually, it will be ok to make LICENSE.txt
 
  file publically available in your repository.
 

	
 
- Fonts, used in Fontello, don't require to make clickable links on your site.
 
  But any kind of additional authors crediting is welcome.
 
================================================================================
 

	
 

	
 
Comments on archive content
 
---------------------------
 

	
 
- /font/* - fonts in different formats
 

	
 
- /css/*  - different kinds of css, for all situations. Should be ok with 
 
  twitter bootstrap. Also, you can skip <i> style and assign icon classes
 
  directly to text elements, if you don't mind about IE7.
 

	
 
- demo.html - demo file, to show your webfont content
 

	
 
- LICENSE.txt - license info about source fonts, used to build your one.
 

	
 
- config.json - keeps your settings. You can import it back to fontello anytime,
 
  to continue your work
 

	
 

	
 
Why so many CSS files ?
 
-----------------------
 

	
 
Because we like to fit all your needs :)
 

	
 
- basic file, <your_font_name>.css - is usually enougth, in contains @font-face
 
  and character codes definition
 

	
 
- *-ie7.css - if you need IE7 support, but still don't wish to put char codes
 
  directly into html
 

	
 
- *-codes.css and *-ie7-codes.css - if you like to use your own @font-face
 
  rules, but still wish to benefit of css generation. That can be very
 
  convenient for automated assets build systems. When you need to update font -
 
  no needs to manually edit files, just override old version with archive
 
  content. See fontello source codes for example.
 

	
 
- *-embedded.css - basic css file, but with embedded WOFF font, to avoid
 
  CORS issues in Firefox and IE9+, when fonts are hosted on the separate domain.
 
  We strongly recommend to resolve this issue by `Access-Control-Allow-Origin`
 
  server headers. But if you ok with dirty hack - this file is for you. Note,
 
  that data url moved to separate @font-face to avoid problems with <IE9, when
 
  string is too long.
 

	
 
- animate.css - use it to get ideas about spinner rotation animation.
 

	
 

	
 
Attention for server setup
 
--------------------------
 

	
 
You MUST setup server to reply with proper `mime-types` for font files. In other
 
case, some browsers will fail to show fonts.
 

	
 
Usually, `apache` already has necessary settings, but `nginx` and other
 
webservers should be tuned. Here is list of mime types for our file extentions:
 

	
 
- `application/vnd.ms-fontobject` - eot
 
- `application/x-font-woff` - woff
 
- `application/x-font-ttf` - ttf
 
- `image/svg+xml` - svg
kallithea/public/fontello/config.json
Show inline comments
 
new file 100644
 
{
 
  "name": "kallithea",
 
  "css_prefix_text": "icon-",
 
  "css_use_suffix": false,
 
  "hinting": true,
 
  "units_per_em": 1000,
 
  "ascent": 850,
 
  "glyphs": [
 
    {
 
      "uid": "4d940d2925ed2b86e01f545cb38df709",
 
      "css": "alert",
 
      "code": 61485,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M982.3 781.5L554.3 32.5C543.1 13 522.4 1 500 1S456.9 13 445.7 32.5L17.7 781.5C6.7 800.8 6.7 824.6 17.9 843.9 29.1 863.1 49.7 875 72 875H928C950.3 875 970.9 863.1 982.1 843.9S993.3 800.8 982.3 781.5ZM562.5 750H437.5V625H562.5V750ZM562.5 562.5H437.5V312.5H562.5V562.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "alert"
 
      ]
 
    },
 
    {
 
      "uid": "497245c871af3beed8902fe5ff1fba8d",
 
      "css": "alignment-align",
 
      "code": 61578,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M187.5 62.5C83.9 62.5 0 146.4 0 250S83.9 437.5 187.5 437.5C291.1 437.5 375 353.6 375 250S291.1 62.5 187.5 62.5ZM656.3 593.8L812.5 437.5H375V875L531.3 718.8 812.5 1000 937.5 875 656.3 593.8Z",
 
        "width": 937.5
 
      },
 
      "search": [
 
        "alignment-align"
 
      ]
 
    },
 
    {
 
      "uid": "29f953aeabda44c85915365f5f5d93be",
 
      "css": "alignment-aligned-to",
 
      "code": 61582,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M375 562.5L500 437.5 781.3 718.8 937.5 562.5V1000H500L656.3 843.8 375 562.5ZM187.5 437.5C83.9 437.5 0 353.6 0 250S83.9 62.5 187.5 62.5C291.1 62.5 375 146.4 375 250S291.1 437.5 187.5 437.5Z",
 
        "width": 937.5
 
      },
 
      "search": [
 
        "alignment-aligned-to"
 
      ]
 
    },
 
    {
 
      "uid": "8457c58c95b8ae6124ea5f59da534aa4",
 
      "css": "alignment-unalign",
 
      "code": 61579,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M500 187.5L375 312.5 125 62.5 0 187.5 250 437.5 125 562.5 187.5 625 562.5 250 500 187.5ZM625 562.5L750 437.5 687.5 375 312.5 750 375 812.5 500 687.5 750 937.5 875 812.5 625 562.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "alignment-unalign"
 
      ]
 
    },
 
    {
 
      "uid": "f71518625bda022d868bc78d958b17b1",
 
      "css": "arrow-down",
 
      "code": 61503,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M437.5 437.5V187.5H187.5V437.5H0L312.5 812.5 625 437.5H437.5Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "arrow-down"
 
      ]
 
    },
 
    {
 
      "uid": "4fa3158fc70394d7834c6091f751778d",
 
      "css": "arrow-left",
 
      "code": 61504,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M375 375V187.5L0 500 375 812.5V625H625V375H375Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "arrow-left"
 
      ]
 
    },
 
    {
 
      "uid": "7a015a88a8a4b3ff4951753ed948ca94",
 
      "css": "arrow-right",
 
      "code": 61502,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M625 500L250 187.5V375H0V625H250V812.5L625 500Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "arrow-right"
 
      ]
 
    },
 
    {
 
      "uid": "de165ed694873aacd78b32fbc31e8789",
 
      "css": "arrow-small-down",
 
      "code": 61600,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M250 437.5V312.5H125V437.5H0L187.5 687.5 375 437.5H250Z",
 
        "width": 375
 
      },
 
      "search": [
 
        "arrow-small-down"
 
      ]
 
    },
 
    {
 
      "uid": "8a4d911d729067296d3170add5fee4ac",
 
      "css": "arrow-small-left",
 
      "code": 61601,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M250 437.5V312.5L0 500 250 687.5V562.5H375V437.5H250Z",
 
        "width": 375
 
      },
 
      "search": [
 
        "arrow-small-left"
 
      ]
 
    },
 
    {
 
      "uid": "904a4ab12857f5cbe221778d5140377f",
 
      "css": "arrow-small-right",
 
      "code": 61553,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M375 500L125 312.5V437.5H0V562.5H125V687.5L375 500Z",
 
        "width": 375
 
      },
 
      "search": [
 
        "arrow-small-right"
 
      ]
 
    },
 
    {
 
      "uid": "b9e26074052d5b68dba6eed337c7c8b2",
 
      "css": "arrow-small-up",
 
      "code": 61599,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M187.5 312.5L0 562.5H125V687.5H250V562.5H375L187.5 312.5Z",
 
        "width": 375
 
      },
 
      "search": [
 
        "arrow-small-up"
 
      ]
 
    },
 
    {
 
      "uid": "38eb6306433f2a4c3aad68dbb9c7220d",
 
      "css": "arrow-up",
 
      "code": 61501,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M312.5 187.5L0 562.5H187.5V812.5H437.5V562.5H625L312.5 187.5Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "arrow-up"
 
      ]
 
    },
 
    {
 
      "uid": "f888798f5214d6c62638f44e18556631",
 
      "css": "beer",
 
      "code": 61545,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M875 250C844.7 250 687.5 250 687.5 250V125C687.5 55.7 533.2 0 343.8 0S0 55.7 0 125V875C0 944.3 154.3 1000 343.8 1000S687.5 944.3 687.5 875V750S843.8 750 875 750 937.5 720.7 937.5 687.5 937.5 345.7 937.5 312.5 909.2 250 875 250ZM187.5 812.5H125V312.5H187.5V812.5ZM375 875H312.5V375H375V875ZM562.5 812.5H500V312.5H562.5V812.5ZM343.8 187.5C222.7 187.5 125 159.2 125 125S222.7 62.5 343.8 62.5 562.5 90.8 562.5 125 464.8 187.5 343.8 187.5ZM812.5 625H687.5V375H812.5V625Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "beer"
 
      ]
 
    },
 
    {
 
      "uid": "502e81350dcac80b743b3ac5fff58128",
 
      "css": "book",
 
      "code": 61447,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M750 562.5H625C591.8 562.5 562.5 593.8 562.5 625H812.5C812.5 591.8 781.3 562.5 750 562.5ZM696.3 156.3C533.2 156.3 492.2 187.5 468.8 210.9 445.3 187.5 404.3 156.3 241.2 156.3S0 201.2 0 232.4V804.7C28.3 789.1 116.2 757.8 209 750 321.3 741.2 437.5 758.8 437.5 781.3 437.5 796.9 445.3 811.5 467.8 812.5 467.8 812.5 467.8 812.5 468.8 812.5 468.8 812.5 468.8 812.5 469.7 812.5 492.2 811.5 500 796.9 500 781.3 500 758.8 616.2 741.2 728.5 750 820.3 756.8 909.2 789.1 937.5 804.7V232.4C937.5 201.2 859.4 156.3 696.3 156.3ZM437.5 714.8C408.2 699.2 336.9 687.5 250 687.5S84 699.2 62.5 713.9C62.5 713.9 62.5 312.5 62.5 281.3S125 223.6 250 223.6 437.5 250 437.5 281.3 437.5 714.8 437.5 714.8ZM875 713.9C853.5 699.2 774.4 687.5 687.5 687.5S529.3 699.2 500 714.8C500 714.8 500 312.5 500 281.3S562.5 223.6 687.5 223.6 875 250 875 281.3 875 713.9 875 713.9ZM750 437.5H625C591.8 437.5 562.5 468.8 562.5 500H812.5C812.5 466.8 781.3 437.5 750 437.5ZM750 312.5H625C591.8 312.5 562.5 343.8 562.5 375H812.5C812.5 341.8 781.3 312.5 750 312.5ZM312.5 437.5H187.5C156.3 437.5 125 466.8 125 500H375C375 468.8 345.7 437.5 312.5 437.5ZM312.5 562.5H187.5C156.3 562.5 125 591.8 125 625H375C375 593.8 345.7 562.5 312.5 562.5ZM312.5 312.5H187.5C156.3 312.5 125 341.8 125 375H375C375 343.8 345.7 312.5 312.5 312.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "book"
 
      ]
 
    },
 
    {
 
      "uid": "0673947e384f16c81c7ebe25cb0da9ce",
 
      "css": "bookmark",
 
      "code": 61563,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M0 125V875L187.5 750 375 875V125H0ZM308.8 317.1L238.6 367.9 265.2 449.3C267.9 457.5 264.5 460.1 257.8 455.8L187.5 404.9 117.2 455.7C110.5 460.1 107.1 457.4 109.8 449.2L136.4 367.8 66.2 317.1C59.9 312.1 61.3 308.1 70 308.1L155.9 308 182.4 226.9C185.2 218.3 189.8 218.3 192.6 226.9L219.1 308 305 308.1C313.7 308.1 315.1 312.1 308.8 317.1Z",
 
        "width": 375
 
      },
 
      "search": [
 
        "bookmark"
 
      ]
 
    },
 
    {
 
      "uid": "afd06c955146ee8f5240361d7834c5de",
 
      "css": "briefcase",
 
      "code": 61651,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M875 187.5H625V123C625 89.6 597.9 62.5 564.5 62.5H435.5C402.1 62.5 375 89.6 375 123V187.5H125C90.5 187.5 62.5 215.5 62.5 250V750C62.5 784.5 90.5 812.5 125 812.5H875C909.5 812.5 937.5 784.5 937.5 750V250C937.5 215.5 909.5 187.5 875 187.5ZM437.5 140.6C437.5 132 444.5 125 453.1 125H546.9C555.5 125 562.5 132 562.5 140.6V187.5H437.5V140.6ZM875 500H562.5V562.5H437.5V500H125V250H187.5V437.5H812.5V250H875V500Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "briefcase"
 
      ]
 
    },
 
    {
 
      "uid": "406c3b050b2b1897ea9d68b6c0a636d2",
 
      "css": "broadcast",
 
      "code": 61512,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M437.5 187.5C576.2 187.5 687.5 299.8 687.5 437.5 687.5 504.9 660.2 566.4 617.2 611.3L601.6 702.1C690.4 647.5 750 549.8 750 437.5 750 264.6 610.4 125 437.5 125S125 264.6 125 437.5C125 549.8 184.6 647.5 273.4 702.1L257.8 611.3C213.9 566.4 187.5 504.9 187.5 437.5 187.5 298.8 298.8 187.5 437.5 187.5ZM375 500C339.8 500 312.5 528.3 312.5 562.5V687.5C312.5 722.7 341.8 750 375 750V1000H500V750C533.2 750 562.5 722.7 562.5 687.5V562.5C562.5 528.3 535.2 500 500 500S437.5 500 437.5 500 410.2 500 375 500ZM562.5 375C562.5 305.7 506.8 250 437.5 250S312.5 305.7 312.5 375 368.2 500 437.5 500 562.5 444.3 562.5 375ZM437.5 0C196.3 0 0 196.3 0 437.5 0 629.9 125 792 297.9 850.6L286.1 780.3C154.3 721.7 62.5 590.8 62.5 437.5 62.5 230.5 230.5 62.5 437.5 62.5S812.5 230.5 812.5 437.5C812.5 590.8 720.7 721.7 588.9 780.3L577.1 850.6C750 792 875 630.9 875 437.5 875 196.3 678.7 0 437.5 0Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "broadcast"
 
      ]
 
    },
 
    {
 
      "uid": "9917016b6f8011b7995c79c166d6de03",
 
      "css": "browser",
 
      "code": 61637,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M312.5 187.5H375V250H312.5V187.5ZM187.5 187.5H250V250H187.5V187.5ZM62.5 187.5H125V250H62.5V187.5ZM812.5 812.5H62.5V312.5H812.5V812.5ZM812.5 250H437.5V187.5H812.5V250ZM875 187.5C875 153 847 125 812.5 125H62.5C28 125 0 153 0 187.5V812.5C0 847 28 875 62.5 875H812.5C847 875 875 847 875 812.5V187.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "browser"
 
      ]
 
    },
 
    {
 
      "uid": "c6ef11e31edb98aa4236088ee6baaaf5",
 
      "css": "bug",
 
      "code": 61585,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M237.9 152.9C186.3 208.3 200.5 296.9 200.5 296.9S253.2 359.4 356.8 359.4C460.3 359.4 513.1 296.9 513.1 296.9S527.1 209.5 476.6 154C508.2 136.4 526.8 110.9 519.1 93.6 510.4 74.1 471.9 72.4 432.9 89.8 418.5 96.2 406.1 104.4 396.5 113.1 384.4 110.9 371.5 109.4 356.8 109.4 343 109.4 330.8 110.7 319.3 112.5 309.9 104 297.8 96.1 283.7 89.8 244.7 72.4 206.1 74.2 197.5 93.6 189.9 110.6 207.5 135.3 237.9 152.9ZM629.6 556.4C621.6 554.7 613.9 553.7 606.4 553 606.4 550.9 606.8 549 606.8 546.8 606.8 514 602.2 482.7 594.7 452.9 610.7 454.3 631.2 450.6 651.9 441.4 690.8 424.1 715.3 394.2 706.7 374.8 698 355.3 659.4 353.6 620.5 370.9 602.3 379.1 587.5 390 577.5 401.1 569.9 383.3 561.4 366.2 551.3 350.6 521.8 375.2 466.1 411.9 388.2 420V734.3C388.2 734.3 387.9 765.5 356.9 765.5 325.9 765.5 325.6 734.3 325.6 734.3V420.1C247.7 412 191.9 375.2 162.5 350.7 152.8 365.7 144.5 382 137.1 398.9 127.1 388.6 113.1 378.6 96.2 371 57.2 353.7 18.6 355.4 10 374.9 1.3 394.3 25.8 424.1 64.8 441.5 84.2 450.1 103.4 454 119 453.3 111.5 483 106.8 514.2 106.8 546.9 106.8 549 107.1 551 107.2 553.2 100.6 554 93.8 554.9 86.9 556.4 36.2 566.9-2.7 593.1 0.1 614.8 3 636.6 46.5 645.6 97.4 635 104 633.7 110.5 632 116.7 630.1 125.7 669.9 140 706.9 159.8 738.8 148 744.7 135.8 753.4 124.6 764.8 93.5 795.9 80.8 833.7 96.4 849.3 112 864.9 149.8 852.2 180.9 821.2 190 812 197.4 802.4 203 792.8 245.5 834.5 298.8 859.4 356.9 859.4 415.8 859.4 470 833.7 512.7 791.1 518.4 801.1 526.1 811.4 535.8 821 566.8 852.2 604.7 864.8 620.3 849.2S623.2 795.9 592.1 764.8C580.1 752.7 567 743.5 554.6 737.5 574.2 705.7 588.4 668.8 597.2 629 604.2 631.2 611.6 633.3 619.3 634.9 670.1 645.5 713.6 636.5 716.5 614.7 719.3 593.1 680.4 566.9 629.6 556.4Z",
 
        "width": 716.685546875
 
      },
 
      "search": [
 
        "bug"
 
      ]
 
    },
 
    {
 
      "uid": "e37c016d0f6a5970f86382100014c3fc",
 
      "css": "calendar",
 
      "code": 61544,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M687.5 500H625V625H687.5V500ZM562.5 500H500V625H562.5V500ZM687.5 312.5H625V437.5H687.5V312.5ZM812.5 500H750V625H812.5V500ZM562.5 687.5H500V812.5H562.5V687.5ZM750 0H687.5V125H750V0ZM250 0H187.5V125H250V0ZM812.5 312.5H750V437.5H812.5V312.5ZM562.5 312.5H500V437.5H562.5V312.5ZM312.5 687.5H250V812.5H312.5V687.5ZM187.5 500H125V625H187.5V500ZM312.5 500H250V625H312.5V500ZM812.5 62.5V187.5H625V62.5H312.5V187.5H125V62.5H0V937.5H937.5V62.5H812.5ZM875 875H62.5V250H875V875ZM187.5 687.5H125V812.5H187.5V687.5ZM437.5 312.5H375V437.5H437.5V312.5ZM437.5 687.5H375V812.5H437.5V687.5ZM312.5 312.5H250V437.5H312.5V312.5ZM437.5 500H375V625H437.5V500ZM687.5 687.5H625V812.5H687.5V687.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "calendar"
 
      ]
 
    },
 
    {
 
      "uid": "bc7d1a1f7679a473a4056bf68dd45b20",
 
      "css": "check",
 
      "code": 61498,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M625 187.5L250 562.5 125 437.5 0 562.5 250 812.5 750 312.5 625 187.5Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "check"
 
      ]
 
    },
 
    {
 
      "uid": "98740fc4de7db6568a9dbe4d8d5ce7f6",
 
      "css": "checklist",
 
      "code": 61558,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M742.9 504.1L694.2 455.6C687.9 449.3 677.7 449.2 671.4 455.6L568.8 558.1 451.5 675.7 360.7 584.7C354.3 578.3 344.1 578.3 337.7 584.7L289.2 633.2C282.8 639.6 282.8 649.9 289.2 656.3L391.5 758.7 409.1 776.1 440 807.2C446.4 813.6 456.8 813.6 463 807.2L511.5 758.7 742.8 527.1C749.3 520.8 749.3 510.6 742.9 504.1ZM223.1 567.2L271.6 518.6C313.1 477.2 385.3 477.1 426.7 518.6L451.4 543.3 562.5 437.5V125H0V812.5H312.5L223.1 722.5C180.4 679.6 180.4 610 223.1 567.2ZM187.5 187.5H500V250H187.5V187.5ZM187.5 312.5H500V375H187.5V312.5ZM125 500H62.5V437.5H125V500ZM125 375H62.5V312.5H125V375ZM125 250H62.5V187.5H125V250ZM187.5 437.5H250V500H187.5V437.5Z",
 
        "width": 747.658203125
 
      },
 
      "search": [
 
        "checklist"
 
      ]
 
    },
 
    {
 
      "uid": "752ef5ab12c316baaa324c467d8f1332",
 
      "css": "chevron-down",
 
      "code": 59475,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M500 312.5L312.5 500 125 312.5 0 437.5 312.5 750 625 437.5 500 312.5Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "chevron-down"
 
      ]
 
    },
 
    {
 
      "uid": "74afabc69471f2cef9ae23562015408c",
 
      "css": "chevron-left",
 
      "code": 59476,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M437.5 312.5L312.5 187.5 0 500 312.5 812.5 437.5 687.5 250 500 437.5 312.5Z",
 
        "width": 437.5
 
      },
 
      "search": [
 
        "chevron-left"
 
      ]
 
    },
 
    {
 
      "uid": "d2e3cb0b0b743eeb8fc05a471ff3215f",
 
      "css": "chevron-right",
 
      "code": 59477,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M125 187.5L0 312.5 187.5 500 0 687.5 125 812.5 437.5 500 125 187.5Z",
 
        "width": 437.5
 
      },
 
      "search": [
 
        "chevron-right"
 
      ]
 
    },
 
    {
 
      "uid": "e116e4d0f56a9f4b9aca966d036c8063",
 
      "css": "chevron-up",
 
      "code": 59478,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M312.5 250L0 562.5 125 687.5 312.5 500 500 687.5 625 562.5 312.5 250Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "chevron-up"
 
      ]
 
    },
 
    {
 
      "uid": "35827823b89a7524aa41e88c4422dda9",
 
      "css": "circle-slash",
 
      "code": 61572,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M312.5 187.5C139.9 187.5 0 327.4 0 500 0 672.6 139.9 812.5 312.5 812.5 485.1 812.5 625 672.6 625 500 625 327.4 485.1 187.5 312.5 187.5ZM312.5 312.5C339.5 312.5 364.9 318.5 388.1 328.7L141.2 575.6C131 552.4 125 527 125 500 125 396.5 208.9 312.5 312.5 312.5ZM312.5 687.5C285.1 687.5 259.2 681.3 235.7 670.8L483.7 424.2C494 447.4 500 472.9 500 500 500 603.6 416.1 687.5 312.5 687.5Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "circle-slash"
 
      ]
 
    },
 
    {
 
      "uid": "91422c8bccceaffa4276550a33f7ba7f",
 
      "css": "circuit-board",
 
      "code": 61654,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M312.5 250C347 250 375 278 375 312.5 375 347 347 375 312.5 375S250 347 250 312.5C250 278 278 250 312.5 250ZM937.5 750C937.5 853.6 853.6 937.5 750 937.5H312.5L500 750H579.2C600.8 787.4 641.2 812.5 687.5 812.5 756.5 812.5 812.5 756.5 812.5 687.5S756.5 562.5 687.5 562.5C641.2 562.5 600.8 587.6 579.2 625H437.5L152.4 910.1C98.5 877.2 62.5 817.8 62.5 750V250C62.5 146.4 146.4 62.5 250 62.5V204.2C212.6 225.8 187.5 266.2 187.5 312.5 187.5 381.5 243.5 437.5 312.5 437.5 358.7 437.5 399 412.5 420.6 375.2L579.2 375C600.9 412.4 641.2 437.5 687.5 437.5 756.5 437.5 812.5 381.5 812.5 312.5S756.5 187.5 687.5 187.5C641.2 187.5 600.8 212.6 579.2 250L420.9 250.2C409.9 231.2 394.1 215.3 375 204.2V62.5H750C853.6 62.5 937.5 146.4 937.5 250V750ZM625 687.5C625 653 653 625 687.5 625S750 653 750 687.5C750 722 722 750 687.5 750S625 722 625 687.5ZM625 312.5C625 278 653 250 687.5 250S750 278 750 312.5C750 347 722 375 687.5 375S625 347 625 312.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "circuit-board"
 
      ]
 
    },
 
    {
 
      "uid": "c04672812513206682a859166c207252",
 
      "css": "clippy",
 
      "code": 59419,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M687.5 875H62.5V312.5H687.5V500H750V187.5C750 153.3 721.7 125 687.5 125H500C500 55.7 444.3 0 375 0S250 55.7 250 125H62.5C28.3 125 0 153.3 0 187.5V875C0 909.2 28.3 937.5 62.5 937.5H687.5C721.7 937.5 750 909.2 750 875V750H687.5V875ZM187.5 187.5C215.8 187.5 215.8 187.5 250 187.5S312.5 159.2 312.5 125 340.8 62.5 375 62.5 437.5 90.8 437.5 125 468.8 187.5 500 187.5 532.2 187.5 562.5 187.5 625 215.8 625 250H125C125 211.9 152.3 187.5 187.5 187.5ZM125 687.5H250V625H125V687.5ZM562.5 562.5V437.5L312.5 625 562.5 812.5V687.5H875V562.5H562.5ZM125 812.5H312.5V750H125V812.5ZM437.5 375H125V437.5H437.5V375ZM250 500H125V562.5H250V500Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "clippy"
 
      ]
 
    },
 
    {
 
      "uid": "bd42be67cad3f1b118748f19fbe4b177",
 
      "css": "clock",
 
      "code": 59448,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M375 562.5H625L687.5 500 625 437.5H500V250L437.5 187.5 375 250V562.5ZM437.5 62.5C195.9 62.5 0 258.4 0 500 0 741.6 195.9 937.5 437.5 937.5 679.1 937.5 875 741.6 875 500 875 258.4 679.1 62.5 437.5 62.5ZM437.5 812.5C265.4 812.5 125 672.1 125 500 125 328.2 265.8 188 437.5 187.5 609.2 188 750 328.2 750 500 750 672.1 609.6 812.5 437.5 812.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "clock"
 
      ]
 
    },
 
    {
 
      "uid": "e8e86c9c320fad6d21710053a7c9ea66",
 
      "css": "cloud-download",
 
      "code": 59411,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M812.5 312.5C804 312.5 795.8 313.9 787.5 315 739.9 203.4 629 125 500 125 370.9 125 260.2 203.4 212.5 315 204.3 313.9 196.1 312.5 187.5 312.5 83.9 312.5 0 396.4 0 500S83.9 687.5 187.5 687.5C207.5 687.5 226.4 683.3 244.5 677.4 277.8 714.2 323.5 739 375 746.6V682.9C326.3 672.7 285.6 641.1 265 597 243.7 614.3 217 625 187.5 625 118.5 625 62.5 569 62.5 500 62.5 431 118.5 375 187.5 375 212.2 375 235 382.4 254.3 394.6 274.8 277.1 376.6 187.5 500 187.5 623.5 187.5 724.4 277.6 744.6 395.3 764.2 382.6 787.5 375 812.5 375 881.5 375 937.5 431 937.5 500 937.5 569 881.5 625 812.5 625 802.5 625 793 623.5 783.6 621.3 755.3 661.3 708.9 687.5 656.3 687.5 645.4 687.5 635.1 685.9 625 683.6V747C635.2 748.7 645.6 750 656.3 750 716 750 770 726 809.5 687.1 810.5 687.1 811.4 687.5 812.5 687.5 916.1 687.5 1000 603.6 1000 500S916.1 312.5 812.5 312.5ZM562.5 500H437.5V812.5H312.5L500 1000 687.5 812.5H562.5V500Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "cloud-download"
 
      ]
 
    },
 
    {
 
      "uid": "106c00ba6303cc45ebc93680f0c2296c",
 
      "css": "cloud-upload",
 
      "code": 59412,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M500 375L312.5 562.5H437.5V875H562.5V562.5H687.5L500 375ZM812.5 312.5C804 312.5 795.8 313.9 787.5 315 739.9 203.3 629 125 500 125 370.9 125 260.2 203.3 212.5 315 204.3 313.9 196.1 312.5 187.5 312.5 83.9 312.5 0 396.5 0 500 0 603.6 83.9 687.5 187.5 687.5 207.5 687.5 226.4 683.3 244.5 677.3 277.8 714.2 323.5 739 375 746.6V682.9C326.3 672.7 285.6 641.1 265 597.2 243.7 614.3 217 625 187.5 625 118.5 625 62.5 569 62.5 500 62.5 431 118.5 375 187.5 375 212.2 375 235 382.4 254.3 394.7 274.8 277.1 376.6 187.5 500 187.5 623.5 187.5 724.4 277.6 744.6 395.3 764.2 382.6 787.5 375 812.5 375 881.5 375 937.5 431 937.5 500 937.5 569 881.5 625 812.5 625 802.5 625 793 623.5 783.6 621.3 755.3 661.3 708.9 687.5 656.3 687.5 645.4 687.5 635.1 685.9 625 683.6V747C635.2 748.7 645.6 750 656.3 750 716 750 770 725.9 809.6 687.1 810.5 687.1 811.4 687.5 812.5 687.5 916.1 687.5 1000 603.6 1000 500 1000 396.5 916.1 312.5 812.5 312.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "cloud-upload"
 
      ]
 
    },
 
    {
 
      "uid": "c9e14800494dc6027b3dcee0817cf984",
 
      "css": "code",
 
      "code": 59425,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M593.8 187.5L500 281.3 718.8 500 500 718.8 593.8 812.5 875 500 593.8 187.5ZM281.3 187.5L0 500 281.3 812.5 375 718.8 156.3 500 375 281.3 281.3 187.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "code"
 
      ]
 
    },
 
    {
 
      "uid": "3734b36c027336d121aebe4d689b70d2",
 
      "css": "color-mode",
 
      "code": 61541,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M0 125V875H750V125H0ZM62.5 812.5V187.5H687.5L62.5 812.5Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "color-mode"
 
      ]
 
    },
 
    {
 
      "uid": "7aeda197b5b0fba630669530807d736d",
 
      "css": "comment",
 
      "code": 59403,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M750 125H125C64.5 125 0 187.5 0 250V625C0 750 125 750 125 750H187.5V1000L437.5 750C437.5 750 689.5 750 750 750S875 683.6 875 625V250C875 189.5 812.5 125 750 125Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "comment"
 
      ]
 
    },
 
    {
 
      "uid": "28655242f029e97efd1bf5379e22c4ba",
 
      "css": "comment-discussion",
 
      "code": 59404,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M250 500C250 437.5 250 312.5 250 312.5S93.8 312.5 62.5 312.5 0 343.8 0 375 0 656.3 0 687.5 31.3 750 62.5 750 125 750 125 750V937.5L314.5 750S472.7 750 502 750 562.5 718.8 562.5 687.5 562.5 625 562.5 625 437.5 625 375 625 250 562.5 250 500ZM812.5 125C781.3 125 406.3 125 375 125S312.5 156.3 312.5 187.5 312.5 468.8 312.5 500 343.8 562.5 375 562.5 560.5 562.5 560.5 562.5L750 750V562.5S781.3 562.5 812.5 562.5 875 531.3 875 500 875 218.8 875 187.5 843.8 125 812.5 125Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "comment-discussion"
 
      ]
 
    },
 
    {
 
      "uid": "a73d8a91b1b467acb70e53f683667170",
 
      "css": "credit-card",
 
      "code": 61509,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M125 687.5H250V625H125V687.5ZM312.5 687.5H437.5V625H312.5V687.5ZM375 500H125V562.5H375V500ZM250 437.5H312.5L437.5 312.5H375L250 437.5ZM437.5 562.5H625V500H437.5V562.5ZM937.5 187.5C906.3 187.5 93.8 187.5 62.5 187.5S0 218.8 0 250 0 718.8 0 750 31.3 812.5 62.5 812.5 906.3 812.5 937.5 812.5 1000 781.3 1000 750 1000 281.3 1000 250 968.8 187.5 937.5 187.5ZM937.5 437.5V718.8S937.5 750 906.3 750H93.8C62.5 750 62.5 718.8 62.5 718.8V437.5H125L250 312.5H62.5V281.3S62.5 250 93.8 250H906.3C937.5 250 937.5 281.3 937.5 281.3V312.5H562.5L437.5 437.5H937.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "credit-card"
 
      ]
 
    },
 
    {
 
      "uid": "3cee8636cbe7761b450389604c97ecf4",
 
      "css": "dash",
 
      "code": 61642,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M0 437.5V562.5H500V437.5H0Z",
 
        "width": 500
 
      },
 
      "search": [
 
        "dash"
 
      ]
 
    },
 
    {
 
      "uid": "838a45cf16489b2bc473b954b0b76cc8",
 
      "css": "dashboard",
 
      "code": 61565,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M406.3 453.6C346.1 453.6 297.4 502.4 297.4 562.5S346.1 671.4 406.3 671.4 515.1 622.6 515.1 562.5C515.1 554.2 514 546.1 512.2 538.4 591.9 445.7 715.3 301.1 781.3 218.8 803.8 190.6 779 163.9 750 187.5 666.8 255.2 523.1 377.6 430.8 456.6 422.9 454.8 414.7 453.6 406.3 453.6ZM437.4 249.9C437.4 232.6 423.4 218.6 406.1 218.6S374.9 232.6 374.9 249.9 388.9 281.1 406.1 281.1 437.4 267.1 437.4 249.9ZM624.9 499.9C624.9 517.1 638.9 531.1 656.1 531.1S687.4 517.1 687.4 499.9 673.3 468.6 656.1 468.6 624.9 482.6 624.9 499.9ZM281.1 249.9C263.9 249.9 249.9 263.9 249.9 281.1S263.9 312.4 281.1 312.4 312.4 298.4 312.4 281.1 298.4 249.9 281.1 249.9ZM218.6 374.9C218.6 357.6 204.6 343.6 187.4 343.6S156.1 357.6 156.1 374.9 170.1 406.1 187.4 406.1 218.6 392.1 218.6 374.9ZM124.9 499.9C124.9 517.1 138.9 531.1 156.1 531.1S187.4 517.1 187.4 499.9 173.4 468.6 156.1 468.6 124.9 482.6 124.9 499.9ZM562.4 281.1C562.4 263.9 548.3 249.9 531.1 249.9S499.9 263.9 499.9 281.1 513.9 312.4 531.1 312.4 562.4 298.4 562.4 281.1ZM774.3 328.8L707.2 416.6C714.5 443.2 718.8 471.1 718.8 500 718.8 672.6 578.8 812.5 406.3 812.5S93.8 672.6 93.8 500C93.8 327.5 233.7 187.5 406.3 187.5 470.6 187.5 530.3 207 580 240.3L657.3 181.1C588.3 126.6 501.2 93.8 406.3 93.8 181.9 93.8 0 275.6 0 500S181.9 906.3 406.3 906.3 812.5 724.4 812.5 500C812.5 438.8 798.6 380.9 774.3 328.8Z",
 
        "width": 812.5
 
      },
 
      "search": [
 
        "dashboard"
 
      ]
 
    },
 
    {
 
      "uid": "776af96a4db73c51c13fd256f12d6f40",
 
      "css": "database",
 
      "code": 59392,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M375 937.5C167.9 937.5 0 881.5 0 812.5 0 774.8 0 733.5 0 687.5 0 676.6 5.4 666.3 13.2 656.3 55.1 710.1 200.4 750 375 750S694.9 710.1 736.8 656.3C744.6 666.3 750 676.6 750 687.5 750 723.7 750 762.1 750 812.5 750 881.5 582 937.5 375 937.5ZM375 687.5C167.9 687.5 0 631.5 0 562.5 0 524.8 0 483.6 0 437.5 0 430.9 2.5 424.4 5.9 418.1L5.9 418.1C7.8 414.1 10.3 410.1 13.2 406.3 55.1 460.1 200.4 500 375 500S694.9 460.1 736.8 406.3C739.7 410.1 742.2 414.1 744.1 418.1L744.1 418.1C747.5 424.4 750 430.9 750 437.5 750 473.7 750 512.1 750 562.5 750 631.5 582 687.5 375 687.5ZM375 437.5C167.9 437.5 0 381.5 0 312.5 0 292.8 0 271.9 0 250 0 230.1 0 209.5 0 187.5 0 118.5 167.9 62.5 375 62.5 582 62.5 750 118.5 750 187.5 750 207 750 227.7 750 250 750 269.1 750 289.3 750 312.5 750 381.5 582 437.5 375 437.5ZM375 125C236.9 125 125 152.9 125 187.5S236.9 250 375 250 625 222.1 625 187.5 513.1 125 375 125Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "database"
 
      ]
 
    },
 
    {
 
      "uid": "db715c6b5405020e238180c06f6eefc4",
 
      "css": "device-camera",
 
      "code": 61526,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M500 375C431 375 375 431 375 500S431 625 500 625C505.6 625 511.1 624.6 516.5 623.9 471.2 617 436.5 577.9 436.5 530.8 436.5 478.7 478.7 436.5 530.8 436.5 577.9 436.5 617 471.2 623.9 516.5 624.6 511.1 625 505.6 625 500 625 431 569 375 500 375ZM875 250H750L625 125H375L250 250H125C90.5 250 62.5 278 62.5 312.5V750C62.5 784.5 90.5 812.5 125 812.5H875C909.5 812.5 937.5 784.5 937.5 750V312.5C937.5 278 909.5 250 875 250ZM406.3 187.5H593.8L656.3 250H343.8L406.3 187.5ZM156.4 750C139.1 750 125 735.9 125 718.6V437.5H187.5V375H125V343.9C125 326.6 139.1 312.5 156.4 312.5H334.6C330.8 315.9 326.9 319.5 323.2 323.2 225.6 420.9 225.6 579.1 323.2 676.8L396.4 750H156.4ZM500 687.5C396.4 687.5 312.5 603.6 312.5 500S396.4 312.5 500 312.5 687.5 396.4 687.5 500 603.6 687.5 500 687.5ZM812.5 468.8L665.4 312.5H812.5V468.8Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "device-camera"
 
      ]
 
    },
 
    {
 
      "uid": "a57e38151c4c0f790717d232ac0cf4ac",
 
      "css": "device-camera-video",
 
      "code": 61527,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M562.5 187.5C528 187.5 500 215.5 500 250S528 312.5 562.5 312.5 625 284.5 625 250 597 187.5 562.5 187.5ZM875 375L750 500V437.5C750 407.6 729 382.6 700.9 376.5 731.4 343.1 750 298.7 750 250 750 146.4 666.1 62.5 562.5 62.5 463.7 62.5 382.8 138.8 375.5 235.7 342.3 205.8 298.3 187.5 250 187.5 146.4 187.5 62.5 271.4 62.5 375 62.5 478.6 146.4 562.5 250 562.5H187.5V687.5H250V812.5C250 847 278 875 312.5 875H687.5C722 875 750 847 750 812.5V750L875 875H937.5V375H875ZM250 312.5C215.5 312.5 187.5 340.5 187.5 375S215.5 437.5 250 437.5V500C181 500 125 444 125 375 125 306 181 250 250 250S375 306 375 375H312.5C312.5 340.5 284.5 312.5 250 312.5ZM562.5 687.5H437.5V562.5H562.5V687.5ZM687.5 580.8C654.8 548.1 618.9 512.2 615.8 509.2 610.2 503.5 602.4 500 593.8 500H406.3C389 500 375 514 375 531.3V718.8C375 726.9 378.1 734.3 383.2 739.9 383.7 740.4 421.4 778.1 455.9 812.5H343.8C326.5 812.5 312.5 798.5 312.5 781.3V468.8C312.5 451.5 326.5 437.5 343.8 437.5H656.3C673.5 437.5 687.5 451.5 687.5 468.8V580.8ZM562.5 375C493.5 375 437.5 319 437.5 250 437.5 181 493.5 125 562.5 125S687.5 181 687.5 250C687.5 319 631.5 375 562.5 375ZM875 687.5L812.5 625 812.6 499.9 875 437.5V687.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "device-camera-video"
 
      ]
 
    },
 
    {
 
      "uid": "8a3a1cbe1f908e97efa8035367a9f5e1",
 
      "css": "device-desktop",
 
      "code": 62076,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M937.5 62.5C906.3 62.5 93.8 62.5 62.5 62.5S0 93.8 0 125 0 656.3 0 687.5 31.3 750 62.5 750 375 750 375 750 187.5 812.5 187.5 875C187.5 906.3 218.8 937.5 250 937.5S718.8 937.5 750 937.5 812.5 906.3 812.5 875C812.5 812.5 625 750 625 750S906.3 750 937.5 750 1000 718.8 1000 687.5 1000 156.3 1000 125 968.8 62.5 937.5 62.5ZM937.5 687.5H62.5V125H937.5V687.5ZM875 187.5H687.5C312.5 250 158.2 480.5 125 562.5V625H875V187.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "device-desktop"
 
      ]
 
    },
 
    {
 
      "uid": "f13b1f4c44e01def85956a7648ed043e",
 
      "css": "device-mobile",
 
      "code": 61496,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M562.5 0H62.5C28 0 0 28 0 62.5V937.5C0 972 28 1000 62.5 1000H562.5C597 1000 625 972 625 937.5V62.5C625 28 597 0 562.5 0ZM281.3 62.5H343.8C361 62.5 375 76.5 375 93.8S361 125 343.8 125H281.3C264 125 250 111 250 93.8S264 62.5 281.3 62.5ZM343.8 937.5H281.3C264 937.5 250 923.5 250 906.3S264 875 281.3 875H343.8C361 875 375 889 375 906.3S361 937.5 343.8 937.5ZM562.5 812.5H62.5V187.5H562.5V812.5Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "device-mobile"
 
      ]
 
    },
 
    {
 
      "uid": "44a3ab4ff4aaf0664110d4891d8d4683",
 
      "css": "diff",
 
      "code": 59421,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M437.5 250H312.5V375H187.5V500H312.5V625H437.5V500H562.5V375H437.5V250ZM187.5 875H562.5V750H187.5V875ZM625 0H125V62.5H593.8L812.5 281.3V875H875V250L625 0ZM0 125V1000H750V312.5L562.5 125H0ZM687.5 937.5H62.5V187.5H531.3L687.5 343.8V937.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "diff"
 
      ]
 
    },
 
    {
 
      "uid": "ccc8f787411138446b85c9fe52e33b8b",
 
      "css": "diff-added",
 
      "code": 59398,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M500 312.5H375V437.5H250V562.5H375V687.5H500V562.5H625V437.5H500V312.5ZM812.5 62.5C781.3 62.5 93.8 62.5 62.5 62.5S0 93.8 0 125 0 843.8 0 875 31.3 937.5 62.5 937.5 781.3 937.5 812.5 937.5 875 906.3 875 875 875 156.3 875 125 843.8 62.5 812.5 62.5ZM750 781.3C750 796.9 733.4 812.5 718.8 812.5S173.8 812.5 156.3 812.5 125 800.8 125 781.3C125 765.6 125 234.4 125 218.8S140.6 187.5 156.3 187.5 704.1 187.5 718.8 187.5 750 203.1 750 218.8 750 765.6 750 781.3Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "diff-added"
 
      ]
 
    },
 
    {
 
      "uid": "2105296cf3c7f17070171a7492a46ceb",
 
      "css": "diff-ignored",
 
      "code": 59422,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M812.5 62.5H62.5C31.3 62.5 0 93.8 0 125V875C0 906.3 31.3 937.5 62.5 937.5H812.5C843.8 937.5 875 906.3 875 875V125C875 93.8 843.8 62.5 812.5 62.5ZM750 781.3C750 796.9 733.4 812.5 718.8 812.5H156.3C138.7 812.5 125 800.8 125 781.3V218.8C125 203.1 140.6 187.5 156.3 187.5H718.8C733.4 187.5 750 203.1 750 218.8V781.3ZM250 591.8V687.5H345.7L625 408.2V312.5H529.3L250 591.8Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "diff-ignored"
 
      ]
 
    },
 
    {
 
      "uid": "2672a84540d3632649f01108e2db0341",
 
      "css": "diff-modified",
 
      "code": 59397,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M812.5 62.5H62.5C31.3 62.5 0 93.8 0 125V875C0 906.3 31.3 937.5 62.5 937.5H812.5C843.8 937.5 875 906.3 875 875V125C875 93.8 843.8 62.5 812.5 62.5ZM750 781.3C750 796.9 733.4 812.5 718.8 812.5H156.3C138.7 812.5 125 800.8 125 781.3V218.8C125 203.1 140.6 187.5 156.3 187.5H718.8C733.4 187.5 750 203.1 750 218.8V781.3ZM437.5 375C368.2 375 312.5 430.7 312.5 500S368.2 625 437.5 625 562.5 569.3 562.5 500 506.8 375 437.5 375Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "diff-modified"
 
      ]
 
    },
 
    {
 
      "uid": "1ce39df7ee1648c4054633b371546367",
 
      "css": "diff-removed",
 
      "code": 59399,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M812.5 62.5H62.5C31.3 62.5 0 93.8 0 125V875C0 906.3 31.3 937.5 62.5 937.5H812.5C843.8 937.5 875 906.3 875 875V125C875 93.8 843.8 62.5 812.5 62.5ZM750 781.3C750 796.9 733.4 812.5 718.8 812.5H156.3C138.7 812.5 125 800.8 125 781.3V218.8C125 203.1 140.6 187.5 156.3 187.5H718.8C733.4 187.5 750 203.1 750 218.8V781.3ZM250 562.5H625V437.5H250V562.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "diff-removed"
 
      ]
 
    },
 
    {
 
      "uid": "96579b960643442734ae46adb8d3156e",
 
      "css": "diff-renamed",
 
      "code": 59423,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M812.5 62.5H62.5C31.3 62.5 0 93.8 0 125V875C0 906.3 31.3 937.5 62.5 937.5H812.5C843.8 937.5 875 906.3 875 875V125C875 93.8 843.8 62.5 812.5 62.5ZM750 781.3C750 796.9 733.4 812.5 718.8 812.5H156.3C138.7 812.5 125 800.8 125 781.3V218.8C125 203.1 140.6 187.5 156.3 187.5H718.8C733.4 187.5 750 203.1 750 218.8V781.3ZM437.5 437.5H250V562.5H437.5V687.5L687.5 500 437.5 312.5V437.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "diff-renamed"
 
      ]
 
    },
 
    {
 
      "uid": "b8c0413f5084c24894907bfebc2cd971",
 
      "css": "ellipsis",
 
      "code": 61594,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M625 312.5C562.5 312.5 187.5 312.5 125 312.5S0 375 0 437.5 0 500 0 562.5 62.5 687.5 125 687.5 562.5 687.5 625 687.5 750 625 750 562.5 750 500 750 437.5 687.5 312.5 625 312.5ZM250 562.5H125V437.5H250V562.5ZM437.5 562.5H312.5V437.5H437.5V562.5ZM625 562.5H500V437.5H625V562.5Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "ellipsis"
 
      ]
 
    },
 
    {
 
      "uid": "af4d3e9f7b12590e91e24c1870b342ed",
 
      "css": "eye",
 
      "code": 61518,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M500 125C312.5 125 93.8 250 0 500 93.8 687.5 281.3 812.5 500 812.5S906.3 687.5 1000 500C906.3 250 687.5 125 500 125ZM500 750C312.5 750 156.3 625 125 500 156.3 375 312.5 250 500 250S843.8 375 875 500C843.8 625 687.5 750 500 750ZM500 312.5C480.5 312.5 462.9 316.4 445.3 321.3 477.5 335.9 500 368.2 500 406.3 500 458 458 500 406.3 500 368.2 500 335.9 477.5 321.3 445.3 316.4 462.9 312.5 480.5 312.5 500 312.5 603.5 396.5 687.5 500 687.5S687.5 603.5 687.5 500 603.5 312.5 500 312.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "eye"
 
      ]
 
    },
 
    {
 
      "uid": "8f9274ef20b91326ce971b176ba18503",
 
      "css": "file-binary",
 
      "code": 61588,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M0 937.5V62.5H562.5L750 250V937.5H0ZM687.5 312.5L500 125H62.5V875H687.5V312.5ZM312.5 500H125V250H312.5V500ZM250 312.5H187.5V437.5H250V312.5ZM250 750H312.5V812.5H125V750H187.5V625H125V562.5H250V750ZM500 437.5H562.5V500H375V437.5H437.5V312.5H375V250H500V437.5ZM562.5 812.5H375V562.5H562.5V812.5ZM500 625H437.5V750H500V625Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "file-binary"
 
      ]
 
    },
 
    {
 
      "uid": "9facf19d62225ce999242da09d2efa3f",
 
      "css": "file-code",
 
      "code": 59418,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M281.3 375L125 531.3 281.3 687.5 343.8 625 250 531.3 343.8 437.5 281.3 375ZM406.3 437.5L500 531.3 406.3 625 468.8 687.5 625 531.3 468.8 375 406.3 437.5ZM562.5 62.5H0V937.5H750V250L562.5 62.5ZM687.5 875H62.5V125H500L687.5 312.5V875Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "file-code"
 
      ]
 
    },
 
    {
 
      "uid": "d8e43e2d54b2326f757e0dd95a3f30cc",
 
      "css": "file-directory",
 
      "code": 59427,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M812.5 187.5C781.3 187.5 484.4 187.5 468.8 187.5S437.5 171.9 437.5 156.3 437.5 156.3 437.5 125 406.3 62.5 375 62.5 93.8 62.5 62.5 62.5 0 93.8 0 125 0 812.5 0 812.5H875S875 281.3 875 250 843.8 187.5 812.5 187.5ZM375 187.5H62.5S62.5 172.9 62.5 156.3 78.1 125 93.8 125 329.1 125 343.8 125 375 139.6 375 156.3 375 187.5 375 187.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "file-directory"
 
      ]
 
    },
 
    {
 
      "uid": "c2b983cf7c90340d0d729b4ee1271e50",
 
      "css": "file-media",
 
      "code": 61458,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M562.5 62.5H0V937.5H750V250L562.5 62.5ZM687.5 875H62.5V125H500L687.5 312.5V875ZM125 250V750H250C250 681 306 625 375 625 306 625 250 569 250 500 250 431 306 375 375 375 444 375 500 431 500 500 500 569 444 625 375 625 444 625 500 681 500 750H625V375L500 250H125Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "file-media"
 
      ]
 
    },
 
    {
 
      "uid": "5865538f5b42d1c467c3e0a0e51aa926",
 
      "css": "file-pdf",
 
      "code": 61460,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M562.5 62.5H0V937.5H750V250L562.5 62.5ZM62.5 125H312.3C299.4 129 285.7 139.7 278.5 166.9 265.6 215.1 271.6 294.6 293.8 371.3 270.2 450.6 174 641.5 167.5 652.8 152.3 657.6 103.7 675.9 62.5 711.2V125ZM339 425.3C395.3 571.5 431.8 571.3 471 588.9 389 601.6 326.4 610.6 243.9 647 240.3 653.3 318.6 504.5 339 425.3ZM687.5 875H64.3 62.5V874.6C63.3 874.7 63.6 875 64.3 875 97.3 875 147.1 854.5 240.6 696.9 277.9 681.8 311 670.7 317.3 668.6 374.7 654.1 439.3 642.6 500.4 636 553.6 662.6 624.1 680.7 664.3 683.2 673.7 683.7 680 682.1 687.5 681.3V875ZM687.5 571.7C664.4 557.3 634.8 547.2 600.5 547.2 576.8 547.2 551 548.6 523.6 551.5 497.3 538.8 433.2 519.6 379.9 365.8 396.6 264.6 392.3 196.3 392.3 196.3 398.9 144.6 369.5 125.1 341.9 125.1 341.9 125.1 341.6 125 341.6 125H500L687.5 312.5V571.7Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "file-pdf"
 
      ]
 
    },
 
    {
 
      "uid": "83a552c5e20498e1355e3d3a9b1a5135",
 
      "css": "file-submodule",
 
      "code": 59393,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M812.5 500C781.3 500 625 500 625 500 625 468.8 593.8 437.5 562.5 437.5S468.8 437.5 437.5 437.5 375 468.8 375 500 375 812.5 375 812.5H875S875 593.8 875 562.5 843.8 500 812.5 500ZM562.5 562.5H437.5S437.5 545.9 437.5 531.3 452.1 500 468.8 500 515.6 500 531.3 500 562.5 514.6 562.5 531.3 562.5 562.5 562.5 562.5ZM812.5 250C781.3 250 484.4 250 468.8 250S437.5 233.4 437.5 218.8 437.5 218.8 437.5 187.5 406.3 125 375 125 93.8 125 62.5 125 0 156.3 0 187.5 0 812.5 0 812.5H312.5S312.5 468.8 312.5 437.5 343.8 375 375 375 593.8 375 625 375 687.5 406.3 687.5 437.5H875S875 343.8 875 312.5 843.8 250 812.5 250ZM375 250H62.5S62.5 234.4 62.5 218.8 78.1 187.5 93.8 187.5 328.1 187.5 343.8 187.5 375 204.1 375 218.8 375 250 375 250Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "file-submodule"
 
      ]
 
    },
 
    {
 
      "uid": "f77f8bd0bf6600c5e2f0c3684e3107de",
 
      "css": "file-symlink-directory",
 
      "code": 61617,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M812.5 187.5H468.8C453.1 187.5 437.5 171.9 437.5 156.3S437.5 156.3 437.5 125 406.3 62.5 375 62.5H62.5C31.3 62.5 0 93.8 0 125S0 812.5 0 812.5H875S875 281.3 875 250 843.8 187.5 812.5 187.5ZM62.5 156.3C62.5 139.6 78.1 125 93.8 125H343.8C358.4 125 375 139.6 375 156.3S375 187.5 375 187.5H62.5S62.5 172.9 62.5 156.3ZM437.5 687.5V562.5C315.4 562.5 218.8 617.2 187.5 750 187.5 545.9 292 437.5 437.5 437.5 437.5 389.6 437.5 312.5 437.5 312.5L687.5 500 437.5 687.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "file-symlink-directory"
 
      ]
 
    },
 
    {
 
      "uid": "4171240f85d6ca4f864e6a290a8c1927",
 
      "css": "file-symlink-file",
 
      "code": 61616,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M562.5 62.5H0V937.5H750V250L562.5 62.5ZM687.5 875H62.5V125H500L687.5 312.5V875ZM375 437.5C229.5 437.5 125 545.9 125 750 156.3 617.2 252.9 562.5 375 562.5V687.5L625 500 375 312.5S375 389.6 375 437.5Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "file-symlink-file"
 
      ]
 
    },
 
    {
 
      "uid": "643c344b76357d789a5c5e6f589e394d",
 
      "css": "file-text",
 
      "code": 61457,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M437.5 250H125V312.5H437.5V250ZM562.5 62.5H0V937.5H750V250L562.5 62.5ZM687.5 875H62.5V125H500L687.5 312.5V875ZM125 750H625V687.5H125V750ZM125 625H625V562.5H125V625ZM125 500H625V437.5H125V500Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "file-text"
 
      ]
 
    },
 
    {
 
      "uid": "a0cadbd3c979a6fd6a82431513f67d28",
 
      "css": "file-zip",
 
      "code": 59414,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M312.5 562.5V500H250V562.5H312.5ZM312.5 437.5V375H250V437.5H312.5ZM312.5 312.5V250H250V312.5H312.5ZM187.5 375H250V312.5H187.5V375ZM562.5 62.5H0V937.5H750V250L562.5 62.5ZM687.5 875H62.5V125H250V187.5H312.5V125H500L687.5 312.5V875ZM187.5 250H250V187.5H187.5V250ZM187.5 500H250V437.5H187.5V500ZM187.5 625L125 687.5V812.5H375V687.5L312.5 625H250V562.5H187.5V625ZM312.5 687.5V750H187.5V687.5H312.5Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "file-zip"
 
      ]
 
    },
 
    {
 
      "uid": "546771313329ab02daa1147fe11372a9",
 
      "css": "flame",
 
      "code": 61650,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M422.9 43.9C471.7 174.8 446.3 246.1 391.6 302.7 332 365.2 239.3 412.1 173.8 503.9 86.9 626 72.3 894.5 385.7 964.8 253.9 895.5 225.6 694.3 368.2 568.4 331.1 690.4 399.4 768.6 484.4 740.2 567.4 711.9 622.1 771.5 620.1 839.8 619.1 886.7 600.6 926.8 552.7 949.2 756.8 913.1 838.9 744.1 838.9 615.2 838.9 445.3 687.5 421.9 763.7 279.3 672.9 287.1 641.6 346.7 650.4 444.3 656.3 508.8 588.9 552.7 539.1 523.4 499 499 500 452.1 535.2 417 610.4 342.8 639.6 171.9 422.9 43.9Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "flame"
 
      ]
 
    },
 
    {
 
      "uid": "7d833f4e243a8ee9467c2b6e3254381b",
 
      "css": "fold",
 
      "code": 61644,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M875 250H656.3L593.8 312.5H781.3L656.3 437.5H218.8L93.8 312.5H281.3L218.8 250H0V312.5L156.3 468.8 0 625V687.5H218.8L281.3 625H93.8L218.8 500H656.3L781.3 625H593.8L656.3 687.5H875V625L718.8 468.8 875 312.5V250ZM625 187.5H500V0H375V187.5H250L437.5 375 625 187.5ZM250 750H375V937.5H500V750H625L437.5 562.5 250 750Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "fold"
 
      ]
 
    },
 
    {
 
      "uid": "c59600c892bd7e46476f38e89812fbbf",
 
      "css": "gear",
 
      "code": 59441,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M437.4 341.8C350.1 341.8 279.3 412.6 279.3 500 279.3 587.3 350.1 658.3 437.4 658.3 524.8 658.3 595.1 587.3 595.1 500 595.1 412.6 524.8 341.8 437.4 341.8ZM754.5 590.9L726 659.5 776.9 759.4 783.6 772.6 713.1 843.1 597.4 788.5 528.7 816.7 493.9 923.3 489.4 937.5H389.8L346.7 817.1 278 788.8 178 839.5 164.8 846.1 94.4 775.6 148.9 659.9 120.6 591.3 14.1 556.5 0 551.9V452.4L120.5 409.2 148.8 340.6 98.1 240.6 91.4 227.4 161.8 157.1 277.6 211.6 346.2 183.3 381 76.6 385.5 62.5H485.1L528.3 183.1 596.7 211.4 696.8 160.7 710.1 154 780.5 224.4 726 340 754.2 408.7 861 443.5 875 448V547.5L754.5 590.9Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "gear"
 
      ]
 
    },
 
    {
 
      "uid": "0918a7ce3efa2ad888521df624c6de00",
 
      "css": "gift",
 
      "code": 61506,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M437.5 937.5H750V625H437.5V937.5ZM62.5 937.5H375V625H62.5V937.5ZM437.3 367.4C468 364 502.6 360.1 522.6 357.9 604.5 348.8 678.2 275 687.3 193.1 696.4 111.3 637.5 52.4 555.8 61.6 491.9 68.7 433.4 115.2 406.3 174.2 379.1 115.2 320.6 68.7 256.7 61.5 175 52.4 116 111.3 125.2 193.1 134.3 275 208.1 348.7 289.9 357.9 309.9 360.1 344.5 364 375.2 367.4 374.8 371.5 375 375 375 375H437.5C437.5 375 437.7 371.5 437.3 367.4ZM542.4 137.4C586.5 132.4 618.5 164.3 613.5 208.6 608.6 252.8 568.7 292.7 524.5 297.6 480.2 302.6 448.4 270.7 453.3 226.4 458.3 182.2 498.2 142.3 542.4 137.4ZM288 297.6C243.8 292.7 203.9 252.8 199 208.6 194.1 164.3 226 132.4 270.1 137.4 314.4 142.3 354.2 182.2 359.2 226.4 364.1 270.7 332.2 302.6 288 297.6ZM437.5 375V562.5H812.5V375H437.5ZM0 562.5H375V375H0V562.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "gift"
 
      ]
 
    },
 
    {
 
      "uid": "4c1b47cd5d75a692a497f800e06b71e1",
 
      "css": "gist",
 
      "code": 61454,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M406.3 375L500 468.8 406.3 562.5 468.8 625 625 468.8 468.8 312.5 406.3 375ZM0 62.5V875H750V62.5H0ZM687.5 812.5H62.5V125H687.5V812.5ZM343.8 562.5L250 468.8 343.8 375 281.3 312.5 125 468.8 281.3 625 343.8 562.5Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "gist"
 
      ]
 
    },
 
    {
 
      "uid": "01d1e94bd2d2a750b855f80e5433e008",
 
      "css": "gist-secret",
 
      "code": 61580,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M188.5 687.5L313.5 875H63.5L0 625 251 562.5 188.5 687.5ZM626 562.5L688.5 687.5 563.5 875H813.5L876 625 626 562.5ZM543.9 562.5H333L376 662.1 313.5 875H563.5L501 662.1 543.9 562.5ZM626 375H251L126 437.5H751L626 375ZM563.5 125L438.5 187.5 313.5 125 251 312.5H626L563.5 125Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "gist-secret"
 
      ]
 
    },
 
    {
 
      "uid": "f04967ae47d54e007b6806da65cef039",
 
      "css": "git-branch",
 
      "code": 61472,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M500 187.5C430.7 187.5 375 243.2 375 312.5 375 358.4 400.4 398.4 437.5 419.9V437.5C437.5 500 375 562.5 312.5 562.5 260.7 562.5 219.7 573.2 187.5 590.8V294.9C224.6 273.4 250 233.4 250 187.5 250 118.2 194.3 62.5 125 62.5S0 118.2 0 187.5C0 233.4 25.4 273.4 62.5 294.9V704.1C25.4 725.6 0 765.6 0 811.5 0 880.9 55.7 936.5 125 936.5S250 880.9 250 811.5C250 778.3 237.3 749 216.8 726.6 235.4 704.1 264.6 686.5 312.5 686.5 437.5 686.5 562.5 561.5 562.5 436.5V418.9C599.6 397.5 625 357.4 625 311.5 625 242.2 569.3 186.5 500 186.5ZM125 125C159.2 125 187.5 153.3 187.5 187.5S159.2 250 125 250 62.5 221.7 62.5 187.5 90.8 125 125 125ZM125 875C90.8 875 62.5 846.7 62.5 812.5S90.8 750 125 750 187.5 778.3 187.5 812.5 159.2 875 125 875ZM500 375C465.8 375 437.5 346.7 437.5 312.5S465.8 250 500 250 562.5 278.3 562.5 312.5 534.2 375 500 375Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "git-branch"
 
      ]
 
    },
 
    {
 
      "uid": "a7f815f1d9a252e87a0bf5fb4505edff",
 
      "css": "git-commit",
 
      "code": 61471,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M678.6 437.5C650.8 329.9 553.8 250 437.5 250 321.2 250 224.2 329.9 196.4 437.5H0V562.5H196.4C224.2 670.2 321.2 750 437.5 750 553.8 750 650.8 670.2 678.6 562.5H875V437.5H678.6ZM437.5 625C368.5 625 312.5 569 312.5 500 312.5 431 368.5 375 437.5 375 506.5 375 562.5 431 562.5 500 562.5 569 506.5 625 437.5 625Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "git-commit"
 
      ]
 
    },
 
    {
 
      "uid": "3dc18417b945ff9b4c5250211a6b5ea0",
 
      "css": "git-compare",
 
      "code": 59428,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M812.5 705.1S812.5 406.3 812.5 312.5 718.8 125 625 125C562.5 125 562.5 125 562.5 125V0L375 187.5 562.5 375V250S593.8 250 625 250 687.5 281.3 687.5 312.5 687.5 705.1 687.5 705.1C650.4 726.6 625 766.6 625 812.5 625 881.8 680.7 937.5 750 937.5S875 881.8 875 812.5C875 766.6 849.6 726.6 812.5 705.1ZM750 875C715.8 875 687.5 846.7 687.5 812.5S715.8 750 750 750 812.5 778.3 812.5 812.5 784.2 875 750 875ZM312.5 750S281.3 750 250 750 187.5 718.8 187.5 687.5 187.5 294.9 187.5 294.9C224.6 273.4 250 233.4 250 187.5 250 118.2 194.3 62.5 125 62.5S0 118.2 0 187.5C0 233.4 25.4 273.4 62.5 294.9 62.5 294.9 62.5 593.8 62.5 687.5S156.3 875 250 875C312.5 875 312.5 875 312.5 875V1000L500 812.5 312.5 625V750ZM125 250C90.8 250 62.5 221.7 62.5 187.5S90.8 125 125 125 187.5 153.3 187.5 187.5 159.2 250 125 250Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "git-compare"
 
      ]
 
    },
 
    {
 
      "uid": "9f83d8e7e07499740128737b86f54897",
 
      "css": "git-merge",
 
      "code": 59394,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M625 437.5C578.5 437.5 538.5 463.2 517 500.9 511.4 500.5 505.9 500 500 500 372 500 250.5 402.5 206.2 281.8 232.9 258.9 250 225.3 250 187.5 250 118.5 194 62.5 125 62.5S0 118.5 0 187.5C0 233.6 25.2 273.5 62.5 295.2V704.8C25.2 726.5 0 766.4 0 812.5 0 881.5 56 937.5 125 937.5S250 881.5 250 812.5C250 766.4 224.8 726.5 187.5 704.8V480C269.7 566.9 383.2 625 500 625 506.2 625 511.4 624.6 517 624.4 538.6 661.9 578.6 687.5 625 687.5 694 687.5 750 631.5 750 562.5 750 493.5 694 437.5 625 437.5ZM125 875C90.5 875 62.5 847 62.5 812.5 62.5 778 90.5 750 125 750 159.6 750 187.5 778 187.5 812.5 187.5 847 159.6 875 125 875ZM125 250C90.5 250 62.5 222.1 62.5 187.5S90.5 125 125 125C159.6 125 187.5 152.9 187.5 187.5S159.6 250 125 250ZM625 625C590.5 625 562.5 597 562.5 562.5 562.5 527.9 590.5 500 625 500 659.5 500 687.5 527.9 687.5 562.5 687.5 597 659.5 625 625 625Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "git-merge"
 
      ]
 
    },
 
    {
 
      "uid": "55d2b1b5e1b356d97eab9b460322dee5",
 
      "css": "git-pull-request",
 
      "code": 59429,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M687.5 705.1S687.5 406.3 687.5 312.5 593.8 125 500 125C437.5 125 437.5 125 437.5 125V0L250 187.5 437.5 375V250S468.8 250 500 250 562.5 281.3 562.5 312.5 562.5 705.1 562.5 705.1C525.4 726.6 500 766.6 500 812.5 500 881.8 555.7 937.5 625 937.5S750 881.8 750 812.5C750 766.6 724.6 726.6 687.5 705.1ZM625 875C590.8 875 562.5 846.7 562.5 812.5S590.8 750 625 750 687.5 778.3 687.5 812.5 659.2 875 625 875ZM125 62.5C55.7 62.5 0 118.2 0 187.5 0 233.4 25.4 273.4 62.5 294.9V704.1C25.4 725.6 0 765.6 0 811.5 0 880.9 55.7 936.5 125 936.5S250 880.9 250 811.5C250 765.6 224.6 725.6 187.5 704.1V294.9C224.6 273.4 250 233.4 250 187.5 250 118.2 194.3 62.5 125 62.5ZM125 875C90.8 875 62.5 846.7 62.5 812.5S90.8 750 125 750 187.5 778.3 187.5 812.5 159.2 875 125 875ZM125 250C90.8 250 62.5 221.7 62.5 187.5S90.8 125 125 125 187.5 153.3 187.5 187.5 159.2 250 125 250Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "git-pull-request"
 
      ]
 
    },
 
    {
 
      "uid": "b00e349d8883c0b89796940a9913e8e8",
 
      "css": "globe",
 
      "code": 59410,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M500 125C292.9 125 125 292.9 125 500S292.9 875 500 875C525.3 875 550.1 872.5 574 867.7 564.4 863.1 563.3 828.5 572.9 808.7 583.5 786.7 616.8 731.1 583.9 712.4S560.1 685.3 539.9 663.7 528 638.8 526.7 633.3C522.3 614.3 546.1 585.7 547.2 582.8S548.3 568.8 548 565.6 533 553.5 529.3 553.1 523.8 559 518.7 559.3 491.2 545.8 486.5 542.1 479.5 529.7 472.9 523.1 465.6 521.6 455.3 517.6 412.1 501.5 386.8 491.2 359.4 466.6 359 456.4 343.6 431.5 336.6 420.9C329.5 410.3 328.2 395.6 325.7 398.9S338.9 440.7 336.3 441.8 328.2 431.2 320.9 421.6 328.6 417.2 305.2 371.1 312.5 301.4 314 277.3 333.7 286.1 324.2 270.8 325 223.1 317.6 211.4 268.6 224.6 268.6 224.6C269.7 213.3 305.2 193.8 330.8 175.9S372.1 171.9 392.7 178.5 414.7 182.9 407.7 176.3 410.6 166.4 426.8 168.9 447.3 190.9 471.8 189.1 474.4 193.8 477.7 200.1 474 205.6 457.9 216.6 458.3 227.5 486.8 248.4 506.6 234.5 503.7 219.1 524.5 215.8 524.5 215.8C542.1 227.5 538.9 216.5 551.7 220.5S599.2 253.9 599.2 253.9C555.7 277.7 583.1 280.3 590.5 285.8S575.4 301.9 575.4 301.9C566.3 292.7 564.8 302.2 559 305.5S558.6 317.3 558.6 317.3C528.3 322 535.2 353.9 535.5 361.6S516.1 381 511 392 524.2 426.8 514.6 428.2 495.6 392.3 444.3 406.3C428.9 410.4 394.5 428.2 412.8 464.5S461.5 454.2 471.8 459.4 468.9 487.5 471.1 487.9 500 488.9 501.5 520.1 542.1 548.7 550.5 549.4 587.2 526.4 591.2 525.3 611.3 510.6 646.5 530.8 699.6 548 711.7 556.4 715.3 581.7 726.7 587.2 783.4 585.3 794.8 604 747.9 716.4 729.6 726.7 702.9 760.4 684.6 775.4 640.6 809 616.5 823.4C595.1 836.1 591.2 858.9 581.7 866.1 749.5 828.8 875 679.1 875 500 875 292.9 707.1 125 500 125ZM587.9 476.9C582.8 478.4 572.1 487.9 546.1 472.5S502.2 460.1 500 457.5C500 457.5 497.8 451.3 509.2 450.2 532.5 447.9 561.9 471.8 568.5 472.2S578.4 465.6 590.1 469.4C601.8 473.1 593 475.5 587.9 476.9ZM465.2 162.4C462.7 160.5 467.3 158.4 470.1 154.7 471.7 152.5 470.5 149 472.5 147 478 141.5 505.1 133.8 499.8 148.8 494.5 163.8 469.2 165.3 465.2 162.4ZM530.8 210C521.6 209.6 500.1 207.3 504 203.4 519.5 188 498.2 183.6 485 182.5S466.3 174.1 472.9 173.3 505.9 173.7 510.3 177.4 538.5 190.6 539.9 197.5 539.9 210.3 530.8 210ZM610.2 207.4C602.9 213.3 566 186.4 559 180.3 528.2 153.9 511.7 162.7 505.3 158.3 498.8 153.9 501.1 148.1 511 139.3S548.7 142.2 564.8 144 599.6 158.3 600 173.1C600.3 187.9 617.6 201.5 610.2 207.4Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "globe"
 
      ]
 
    },
 
    {
 
      "uid": "54f0ed9f7bd5d65cf66436e37da3a9ac",
 
      "css": "graph",
 
      "code": 59413,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M687.5 250H500V875H687.5V250ZM937.5 437.5H750V875H937.5V437.5ZM62.5 937.5V812.5H125V750H62.5V625H125V562.5H62.5V437.5H125V375H62.5V250H125V187.5H62.5V62.5H125V0H0V1000H1000V937.5H62.5ZM437.5 562.5H250V875H437.5V562.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "graph"
 
      ]
 
    },
 
    {
 
      "uid": "6a94501fd4a094e9b7776c47fa0b8828",
 
      "css": "heart",
 
      "code": 9829,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M375 843.8C764.6 537.1 750 428.7 750 343.8S679.7 156.3 562.5 156.3 375 281.3 375 281.3 304.7 156.3 187.5 156.3 0 258.8 0 343.8-14.6 537.1 375 843.8Z",
 
        "width": 750.1943359375
 
      },
 
      "search": [
 
        "heart"
 
      ]
 
    },
 
    {
 
      "uid": "3874d5ca3cfcc9744049a7fcff8e1ae6",
 
      "css": "history",
 
      "code": 61566,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M437.5 62.5C348.7 62.5 266.3 89.4 197.3 134.8L125 62.5V312.5H375L289.1 226.6C333.4 202.5 383.5 187.5 437.5 187.5 610.1 187.5 750 327.4 750 500 750 672.6 610.1 812.5 437.5 812.5 264.9 812.5 125 672.6 125 500 125 455.5 134.6 413.3 151.4 375H62.5V277.9C23.7 343.3 0 418.5 0 500 0 741.6 195.9 937.5 437.5 937.5 679.1 937.5 875 741.6 875 500 875 258.4 679.1 62.5 437.5 62.5ZM436.6 811.5L500 750V562.5H625L687.5 500 625 437.5H500L437.5 375 312.5 500 375 562.5V750L436.6 811.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "history"
 
      ]
 
    },
 
    {
 
      "uid": "df401be4ed0eb29776c8830fff2c894f",
 
      "css": "home",
 
      "code": 61581,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M187.5 562.5L250 937.5H437.5V625H562.5V937.5H750L812.5 562.5 500 250 187.5 562.5ZM812.5 375V125H687.5L687.8 250.3 500 62.5 0 562.5H125L500 187.5 875 562.5H1000L812.5 375Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "home"
 
      ]
 
    },
 
    {
 
      "uid": "aae75c355a25073b68865cd9b4712e67",
 
      "css": "horizontal-rule",
 
      "code": 61552,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M62.4 437.5H187.4V562.5H249.9V187.6H187.4V375H62.4V187.6H0V562.5H62.4V437.5ZM624.9 562.5V437.5H562.4V562.5H624.9ZM624.9 375V250.1H562.4V375H624.9ZM437.4 375V250.1H562.4V187.6H374.9V562.5H437.4V437.5H562.4V375H437.4ZM0 812.5H624.9V687.5H0V812.5Z",
 
        "width": 624.8779296875
 
      },
 
      "search": [
 
        "horizontal-rule"
 
      ]
 
    },
 
    {
 
      "uid": "2545fa355b60cfe2bae5168e649a84e5",
 
      "css": "hourglass",
 
      "code": 61598,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M557.6 500C672.9 417 750 265.6 750 125 750 55.7 582 0 375 0S0 55.7 0 125C0 265.6 78.1 417 192.4 500 77.1 583 0 734.4 0 875 0 944.3 168 1000 375 1000S750 944.3 750 875C750 734.4 671.9 583 557.6 500ZM375 62.5C512.7 62.5 625 90.8 625 125S512.7 187.5 375 187.5 125 159.2 125 125 237.3 62.5 375 62.5ZM312.5 752C162.1 758.8 80.1 791 65.4 832 81.1 720.7 138.7 647.5 203.1 586.9 274.4 520.5 312.5 528.3 312.5 486.3V752.9ZM210 408.2C141.6 354.5 90.8 281.3 71.3 198.2 139.6 229.5 250 250 375 250S610.4 229.5 678.7 198.2C659.2 281.3 608.4 354.5 540 408.2 516.6 391.6 471.7 375 375 375S233.4 391.6 210 408.2ZM437.5 752V485.4C437.5 527.3 475.6 519.5 546.9 585.9 611.3 646.5 668.9 720.7 684.6 831.1 670.9 791 587.9 757.8 437.5 751Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "hourglass"
 
      ]
 
    },
 
    {
 
      "uid": "77940935aa30aafa0dfb79823f6447c8",
 
      "css": "hubot",
 
      "code": 61597,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M500 62.5C223.6 62.5 0 286.1 0 562.5 0 562.5 0 750 0 812.5S62.5 937.5 125 937.5 812.5 937.5 875 937.5 1000 875 1000 812.5 1000 562.5 1000 562.5C1000 286.1 776.4 62.5 500 62.5ZM593.8 812.5H406.3C388.7 812.5 375 798.8 375 781.3S388.7 750 406.3 750H593.8C611.3 750 625 763.7 625 781.3S611.3 812.5 593.8 812.5ZM875 687.5C875 718.8 843.8 750 812.5 750S687.5 750 687.5 750C687.5 718.8 656.3 687.5 625 687.5S406.3 687.5 375 687.5 312.5 718.8 312.5 750C312.5 750 218.8 750 187.5 750S125 718.8 125 687.5 125 335.9 125 335.9C201.2 210 339.8 125 500 125S798.8 210 875 335.9C875 335.9 875 656.3 875 687.5ZM750 312.5C718.8 312.5 281.3 312.5 250 312.5S187.5 343.8 187.5 375 187.5 468.8 187.5 500 218.8 562.5 250 562.5 718.8 562.5 750 562.5 812.5 531.3 812.5 500 812.5 406.3 812.5 375 781.3 312.5 750 312.5ZM750 437.5L687.5 500H562.5L500 437.5 437.5 500H312.5L250 437.5V375H312.5L375 437.5 437.5 375H562.5L625 437.5 687.5 375H750V437.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "hubot"
 
      ]
 
    },
 
    {
 
      "uid": "3152c105eb74163df4c3c4264f55b208",
 
      "css": "inbox",
 
      "code": 61647,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M687.5 187.5H62.5L0 562.5V812.5H750V562.5L687.5 187.5ZM562.5 562.5L500 687.5H250L187.5 562.5H77.1L125 250H625L672.9 562.5H562.5Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "inbox"
 
      ]
 
    },
 
    {
 
      "uid": "888118346e0f52d20347b0688cead6a4",
 
      "css": "info",
 
      "code": 61529,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M437.5 375C471.7 375 500 346.7 500 312.5S471.7 250 437.5 250 375 278.3 375 312.5 403.3 375 437.5 375ZM437.5 62.5C196.3 62.5 0 258.8 0 500S196.3 937.5 437.5 937.5 875 741.2 875 500 678.7 62.5 437.5 62.5ZM437.5 812.5C264.6 812.5 125 672.9 125 500S264.6 187.5 437.5 187.5 750 327.1 750 500 610.4 812.5 437.5 812.5ZM500 500C500 468.8 468.8 437.5 437.5 437.5S406.3 437.5 375 437.5 312.5 468.8 312.5 500H375S375 656.3 375 687.5 406.3 750 437.5 750 468.8 750 500 750 562.5 718.8 562.5 687.5H500S500 531.3 500 500Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "info"
 
      ]
 
    },
 
    {
 
      "uid": "21e35f37aef17864677ff8b277d678a6",
 
      "css": "issue-closed",
 
      "code": 61480,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M687.5 308.6L593.8 402.4 750 562.5 1000 312.5 906.3 218.8 751.2 373.8 687.5 308.6ZM500 812.5C327.4 812.5 187.5 672.6 187.5 500 187.5 327.4 327.4 187.5 500 187.5 586.3 187.5 664.4 222.5 720.9 279.1L809.4 190.7C730.2 111.5 620.8 62.5 500 62.5 258.4 62.5 62.5 258.4 62.5 500 62.5 741.6 258.4 937.5 500 937.5 741.6 937.5 937.5 741.6 937.5 500L741.9 695.6C750.7 684.8 668.7 812.5 500 812.5ZM562.5 250H437.5V562.5H562.5V250ZM437.5 750H562.5V625H437.5V750Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "issue-closed"
 
      ]
 
    },
 
    {
 
      "uid": "400f03ee77a10e082e22807c4e9e6a02",
 
      "css": "issue-opened",
 
      "code": 61478,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M437.5 62.5C195.9 62.5 0 258.4 0 500 0 741.6 195.9 937.5 437.5 937.5 679.1 937.5 875 741.6 875 500 875 258.4 679.1 62.5 437.5 62.5ZM437.5 812.5C264.9 812.5 125 672.6 125 500 125 327.4 264.9 187.5 437.5 187.5 610.1 187.5 750 327.4 750 500 750 672.6 610.1 812.5 437.5 812.5ZM375 750H500V625H375V750ZM375 562.5H500V250H375V562.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "issue-opened"
 
      ]
 
    },
 
    {
 
      "uid": "c33e298f22d605475b5facb15757474c",
 
      "css": "issue-reopened",
 
      "code": 61479,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M624.1 749.3C572 788.5 507.8 812.5 437.5 812.5 264.9 812.5 125 672.6 125 500 125 455.5 134.6 413.3 151.4 375H62.5V277.9C23.7 343.2 0 418.5 0 500 0 741.6 195.9 937.5 437.5 937.5 542.4 937.5 637.2 899.1 712.6 837.6L750 875V687.5H562.5L624.1 749.3ZM375 750H500V625H375V750ZM500 250H375V562.5H500V250ZM875 500C875 258.4 679.1 62.5 437.5 62.5 332.6 62.5 237.8 100.9 162.4 162.4L125 125V312.5H312.5L250.8 250.8C303 211.6 367.2 187.5 437.5 187.5 610.1 187.5 750 327.4 750 500 750 544.5 740.5 586.7 723.6 625H812.5V722.2C851.3 656.8 875 581.5 875 500Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "issue-reopened"
 
      ]
 
    },
 
    {
 
      "uid": "afdd7bccce89c3caa215686831001138",
 
      "css": "jersey",
 
      "code": 61465,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M687.5 0H500C500 31.3 467.8 62.5 405.3 62.5S312.5 31.3 312.5 0H125C125 125 123 375 0 375 0 375-1 906.3-1 937.5S30.3 1000 61.5 1000 717.8 1000 749 1000 811.5 968.8 811.5 937.5 811.5 375 811.5 375C688.5 375 686.5 125 686.5 0ZM92.8 937.5C77.1 937.5 62.5 927.7 62.5 906.3 62.5 875 62.5 437.5 62.5 437.5 178.7 375 187.5 250 187.5 62.5H250C250 156.3 281.3 249 406.3 250S562.5 156.3 562.5 62.5H625C625 244.1 656.3 332 687.5 393.6V937.5S108.4 937.5 92.8 937.5ZM468.8 375L437.5 406.3V718.8L468.8 750H593.8L625 718.8V406.3L593.8 375H468.8ZM562.5 687.5H500V437.5H562.5V687.5ZM218.8 375L187.5 406.3V718.8L218.8 750H343.8L375 718.8V406.3L343.8 375H218.8ZM312.5 687.5H250V437.5H312.5V687.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "jersey"
 
      ]
 
    },
 
    {
 
      "uid": "1a6e69db671ea32806877b1d2a7622dd",
 
      "css": "jump-down",
 
      "code": 61554,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M749.8 187.5H0.2L375 562.3 749.8 187.5ZM0 687.5V812.5H750V687.5H0Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "jump-down"
 
      ]
 
    },
 
    {
 
      "uid": "bb05793a3ef7387772ac35ee908c0ba3",
 
      "css": "jump-left",
 
      "code": 61605,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M250.2 500L625 874.8V125.2L250.2 500ZM0 875H125V125H0V875Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "jump-left"
 
      ]
 
    },
 
    {
 
      "uid": "8cbbb2cb1bf5f89422493b552ad46eb8",
 
      "css": "jump-right",
 
      "code": 61606,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M0 874.8L374.8 500 0 125.2V874.8ZM500 125V875H625V125H500Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "jump-right"
 
      ]
 
    },
 
    {
 
      "uid": "8048a6ec2d4364e16e21887426d3bc9b",
 
      "css": "jump-up",
 
      "code": 61555,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M0.2 812.5H749.7L375 437.7 0.2 812.5ZM0 187.5V312.5H750V187.5H0Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "jump-up"
 
      ]
 
    },
 
    {
 
      "uid": "3617d121a15ef91892d5083aeead6ce3",
 
      "css": "key",
 
      "code": 59430,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M625.9 62.4C487.8 62.4 375.9 174.3 375.9 312.4 375.9 331.5 378 350.1 382.1 368L0 750V812.5L62.5 875H187.5L250 812.5V750H312.5V687.5H375V625H500L569.1 555.9C587.4 560.1 606.3 562.3 625.9 562.3 764 562.3 875.9 450.4 875.9 312.3S763.9 62.4 625.9 62.4ZM375 500L62.5 812.5V750L375 437.5V500ZM687.5 312.5C653 312.5 625 284.5 625 250 625 215.5 653 187.5 687.5 187.5S750 215.5 750 250C750 284.5 722 312.5 687.5 312.5Z",
 
        "width": 875.87890625
 
      },
 
      "search": [
 
        "key"
 
      ]
 
    },
 
    {
 
      "uid": "f36701c4b81c69c4f1c22a92c2977742",
 
      "css": "keyboard",
 
      "code": 61453,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M625 562.5H687.5V437.5H625V562.5ZM750 250H687.5V375H750V250ZM625 250H562.5V375H625V250ZM500 562.5H562.5V437.5H500V562.5ZM375 750H687.5V625H375V750ZM750 562.5H875V250H812.5V437.5H750V562.5ZM250 750H312.5V625H250V750ZM750 750H875V625H750V750ZM500 250H437.5V375H500V250ZM187.5 437.5H125V562.5H187.5V437.5ZM187.5 625H125V750H187.5V625ZM0 125V875H1000V125H0ZM937.5 812.5H62.5V187.5H937.5V812.5ZM375 562.5H437.5V437.5H375V562.5ZM250 250H125V375H250V250ZM375 250H312.5V375H375V250ZM250 562.5H312.5V437.5H250V562.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "keyboard"
 
      ]
 
    },
 
    {
 
      "uid": "6fa0b74540a72db5a2b6ca256171409c",
 
      "css": "law",
 
      "code": 61656,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M502 187.5C535.2 186.5 561.5 160.2 562.5 127 563.5 90.8 534.2 61.5 498 62.5 464.8 63.5 438.5 89.8 437.5 123 436.5 159.2 465.8 188.5 502 187.5ZM955.1 562.5H937.5L813.5 322.3C831.1 320.3 848.6 313.5 864.3 306.6 887.7 295.9 892.6 264.6 875 246.1L874 245.1C863.3 234.4 846.7 230.5 832 237.3 818.4 243.2 798.8 250 780.3 250 725.6 250 701.2 187.5 500 187.5S274.4 250 219.7 250C200.2 250 181.6 244.1 168 237.3 153.3 231.4 136.7 234.4 126 245.1L125 246.1C107.4 264.6 112.3 294.9 135.7 306.6 151.4 314.5 168.9 320.3 186.5 322.3L62.5 562.5H44.9C37.1 562.5 31.3 569.3 32.2 577.1 43 639.6 122.1 687.5 218.8 687.5S394.5 639.6 405.3 577.1C406.3 569.3 400.4 562.5 392.6 562.5H375L251 323.2C332 316.4 375 275.4 437.5 275.4V750C403.3 750 375 778.3 375 812.5H305.7C278.3 812.5 250 840.8 250 875H750C750 840.8 721.7 812.5 680.7 812.5H625C625 778.3 596.7 750 562.5 750V275.4C625 275.4 668 316.4 749 323.2L625 562.5H607.4C599.6 562.5 593.8 569.3 594.7 577.1 605.5 639.6 684.6 687.5 781.3 687.5S957 639.6 967.8 577.1C968.8 569.3 962.9 562.5 955.1 562.5ZM312.5 562.5H125L218.8 386.7 312.5 562.5ZM687.5 562.5L781.3 386.7 875 562.5H687.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "law"
 
      ]
 
    },
 
    {
 
      "uid": "8a015bd739abee1927794f198f393b29",
 
      "css": "light-bulb",
 
      "code": 61440,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M500 62.5C327.4 62.5 187.5 202.4 187.5 375 187.5 477.2 236.6 568 312.5 625V812.5C312.5 847 340.5 875 375 875 375 909.5 403 937.5 437.5 937.5H562.5C597 937.5 625 909.5 625 875 659.5 875 687.5 847 687.5 812.5V625C763.4 568 812.5 477.2 812.5 375 812.5 202.4 672.6 62.5 500 62.5ZM625 781.3C625 798.5 611 812.5 593.8 812.5H406.3C389 812.5 375 798.5 375 781.3V750H625V781.3ZM687.5 540.3C655 572.6 625 581.7 625 661.5V687.5H562.5V562.5L687.5 437.5V375L625 312.5 562.5 375 500 312.5 437.5 375 375 312.5 312.5 375V437.5L437.5 562.5V687.5H375V661.5C375 581.7 345 572.6 312.5 540.3 273.6 496.3 250 438.4 250 375 250 236.9 361.9 125 500 125S750 236.9 750 375C750 438.4 726.4 496.3 687.5 540.3ZM500 562.5L375 437.5V375L437.5 437.5 500 375 562.5 437.5 625 375V437.5L500 562.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "light-bulb"
 
      ]
 
    },
 
    {
 
      "uid": "de0554650af40ee36f0c8817ff35c9a9",
 
      "css": "link",
 
      "code": 61532,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M750 250H615.2C662.1 281.3 706.1 336.9 719.7 375H749C812.5 375 874 437.5 874 500S810.5 625 749 625H561.5C500 625 436.5 562.5 436.5 500 436.5 477.5 443.4 456.1 454.1 437.5H320.3C315.4 458 312.5 478.5 312.5 500 312.5 625 436.5 750 561.5 750S625 750 750 750 1000 625 1000 500 875 250 750 250ZM280.3 625H251C187.5 625 126 562.5 126 500S189.5 375 251 375H438.5C500 375 563.5 437.5 563.5 500 563.5 522.5 556.6 543.9 545.9 562.5H679.7C684.6 542 687.5 521.5 687.5 500 687.5 375 563.5 250 438.5 250S375 250 250 250 0 375 0 500 125 750 250 750H384.8C337.9 718.8 293.9 663.1 280.3 625Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "link"
 
      ]
 
    },
 
    {
 
      "uid": "f7470b19bba74113acba7439960390d7",
 
      "css": "link-external",
 
      "code": 61567,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M625 750H125V251.9L250 250V125H0V875H750V562.5H625V750ZM375 125L500 250 312.5 437.5 437.5 562.5 625 375 750 500V125H375Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "link-external"
 
      ]
 
    },
 
    {
 
      "uid": "d6f464382f73a2b302e4228ad8f13577",
 
      "css": "list-ordered",
 
      "code": 61538,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M312.5 562.5H750V437.5H312.5V562.5ZM312.5 812.5H750V687.5H312.5V812.5ZM312.5 187.5V312.5H750V187.5H312.5ZM77.1 437.5H153.3V187.5H118.2L35.2 210V258.8L77.1 256.8V437.5ZM184.6 638.7C184.6 603.5 172.9 562.5 90.8 562.5 58.6 562.5 28.3 568.4 9.8 578.1L10.7 642.6C31.3 632.8 51.8 627.9 76.2 627.9S107.4 638.7 107.4 655.3C107.4 680.7 78.1 711.9 0 764.6V813.5H187.5V748L98.6 750C146.5 720.7 183.6 685.5 183.6 639.6L184.6 638.7Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "list-ordered"
 
      ]
 
    },
 
    {
 
      "uid": "0f74ec338c4fdbb0465a12415bc764d4",
 
      "css": "list-unordered",
 
      "code": 61537,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M0 562.5H125V437.5H0V562.5ZM0 312.5H125V187.5H0V312.5ZM0 812.5H125V687.5H0V812.5ZM250 562.5H750V437.5H250V562.5ZM250 312.5H750V187.5H250V312.5ZM250 812.5H750V687.5H250V812.5Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "list-unordered"
 
      ]
 
    },
 
    {
 
      "uid": "52fff2a63720edccd4dcd8e2b48cc223",
 
      "css": "location",
 
      "code": 61536,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M312.5 0C139.6 0 0 139.6 0 312.5S156.3 718.8 312.5 1000C468.8 718.8 625 485.4 625 312.5S485.4 0 312.5 0ZM312.5 437.5C243.2 437.5 187.5 381.8 187.5 312.5S243.2 187.5 312.5 187.5 437.5 243.2 437.5 312.5 381.8 437.5 312.5 437.5Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "location"
 
      ]
 
    },
 
    {
 
      "uid": "04b356dbf50d670b6da230cbc556dc07",
 
      "css": "lock",
 
      "code": 61546,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M687.5 437.5C656.3 437.5 625 437.5 625 437.5S625 375 625 250 500 0 375 0 125 125 125 250 125 437.5 125 437.5 93.8 437.5 62.5 437.5 0 468.8 0 500 0 906.3 0 937.5 31.3 1000 62.5 1000 656.3 1000 687.5 1000 750 968.8 750 937.5 750 531.3 750 500 718.8 437.5 687.5 437.5ZM500 562.5H125V625H500V687.5H125V750H500V812.5H125V875H500V937.5H62.5V500H500V562.5ZM500 437.5H250S250 312.5 250 250 312.5 125 375 125 500 187.5 500 250 500 437.5 500 437.5Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "lock"
 
      ]
 
    },
 
    {
 
      "uid": "32f6ab0fe765f7c10e1ba3920c4cd45a",
 
      "css": "logo-github",
 
      "code": 61586,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M539.8 324.4H304.3C298.2 324.4 293.3 329.3 293.3 335.4V450.5C293.3 456.6 298.2 461.5 304.3 461.5H396.2V604.6C396.2 604.6 375.5 611.5 318.5 611.5 251.2 611.5 157.2 586.9 157.2 380.3 157.2 173.6 255.1 146.4 347 146.4 426.5 146.4 460.8 160.4 482.6 167.1 489.5 169.3 495.7 162.4 495.7 156.3L522 45C522 42.2 521 38.8 517.9 36.5 509 30.2 454.9 0 318.5 0 161.3 0 0 66.9 0 388.4 0 709.9 184.6 757.8 340.2 757.8 469 757.8 547.3 702.8 547.3 702.8 550.5 701.1 550.8 696.6 550.8 694.5V335.4C550.7 329.3 545.8 324.4 539.8 324.4ZM1730.8 27.5H1598.3C1592.2 27.5 1587.3 32.4 1587.3 38.5V294.7H1380.7V38.5C1380.7 32.4 1375.7 27.5 1369.7 27.5H1237.1C1231.1 27.5 1226.3 32.4 1226.3 38.5V732.3C1226.3 738.5 1231.2 743.4 1237.1 743.4H1369.7C1375.8 743.4 1380.7 738.4 1380.7 732.3V435.6H1587.3L1586.9 732.4C1586.9 738.5 1591.8 743.4 1597.7 743.4H1730.4C1736.5 743.4 1741.3 738.4 1741.3 732.4L1741.7 38.5C1741.8 32.4 1736.9 27.5 1730.8 27.5ZM698.2 43.2C651 43.2 612.7 81.8 612.7 129.5 612.7 177.2 651 215.9 698.2 215.9S783.7 177.2 783.7 129.5C783.7 81.8 745.4 43.2 698.2 43.2ZM774.3 265.7C774.3 259.7 769.4 254.7 763.4 254.7H631.2C625 254.7 619.7 260.9 619.7 267 619.7 267 619.7 652.4 619.7 725.9 619.7 739.3 628.1 743.4 638.9 743.4 638.9 743.4 695.3 743.4 758 743.4 771 743.4 774.5 737 774.5 725.6 774.4 701 774.4 604.7 774.4 586 774.3 568.3 774.3 265.7 774.3 265.7ZM2244.1 255.7H2112.6C2106.6 255.7 2101.7 260.7 2101.7 266.8V606.9C2101.7 606.9 2068.3 631.5 2020.8 631.5 1973.3 631.5 1960.7 610 1960.7 563.5 1960.7 517 1960.7 266.7 1960.7 266.7 1960.7 260.6 1955.7 255.7 1949.8 255.7H1816.4C1810.3 255.7 1805.4 260.6 1805.4 266.7 1805.4 266.7 1805.4 447.9 1805.4 585.9 1805.4 723.9 1882.4 757.7 1988.1 757.7 2074.8 757.7 2144.9 709.7 2144.9 709.7S2148.2 734.9 2149.8 737.9C2151.2 740.9 2155.2 743.9 2159.5 743.9H2244C2250 743.9 2254.9 738.9 2254.9 732.8L2255.3 266.7C2255 260.7 2250.1 255.7 2244.1 255.7ZM2604.4 240.1C2529.7 240.1 2478.8 273.4 2478.8 273.4V38.5C2478.8 32.4 2473.9 27.5 2468 27.5H2334.9C2328.9 27.5 2324 32.4 2324 38.5L2323.7 732.4C2323.7 738.5 2328.6 743.4 2334.6 743.4 2334.6 743.4 2427.2 743.4 2427.3 743.4 2431.4 743.4 2434.5 741.3 2436.8 737.6 2439.2 733.8 2442.4 705.5 2442.4 705.5S2496.7 757.1 2599.7 757.1C2720.6 757.1 2789.9 695.7 2789.9 481.8 2789.9 268.1 2679.2 240.1 2604.4 240.1ZM2552.5 631.1C2506.9 629.7 2476 609 2476 609V389.2C2476 389.2 2506.6 370.4 2544.1 367.1 2591.5 362.9 2637.3 377.2 2637.3 490.3 2637 609.4 2616.4 633 2552.5 631.1ZM1157.3 628.6C1151.5 628.6 1136.6 630.9 1121.4 630.9 1072.6 630.9 1056 608.2 1056 578.8 1056 549.3 1056 383.6 1056 383.6H1155.5C1161.6 383.6 1166.4 378.7 1166.4 372.6V265.7C1166.5 259.5 1161.6 254.6 1155.5 254.6H1056L1055.8 123.2C1055.8 118.2 1053.2 115.7 1047.5 115.7H912C906.7 115.7 903.8 118.1 903.8 123.1V258.9C903.8 258.9 835.9 275.3 831.3 276.7 826.8 278 823.4 282.2 823.4 287.3V372.6C823.4 378.7 828.4 383.7 834.4 383.7H903.8C903.8 383.7 903.8 472.9 903.8 589 903.8 741.4 1010.8 756.4 1083 756.4 1115.9 756.4 1155.3 745.7 1161.9 743.4 1165.9 742 1168.2 737.9 1168.2 733.5L1168.2 639.6C1168.2 633.5 1163.1 628.5 1157.3 628.6Z",
 
        "width": 2789.8994140625
 
      },
 
      "search": [
 
        "logo-github"
 
      ]
 
    },
 
    {
 
      "uid": "cbaa072a6e05c0232c6f438ec9b7501e",
 
      "css": "mail",
 
      "code": 61499,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M0 187.5V812.5H875V187.5H0ZM750 250L437.5 507.8 125 250H750ZM62.5 312.5L308.6 499.6 62.5 687.5V312.5ZM125 750L373 548.6 437.5 597.7 501.8 548.7 750 750H125ZM812.5 687.5L566 499.9 812.5 312.5V687.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "mail"
 
      ]
 
    },
 
    {
 
      "uid": "aecf5fb3fb6d6233455f535e8fcf36c6",
 
      "css": "mail-read",
 
      "code": 61500,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M562.5 375H250V437.5H562.5V375ZM375 250H250V312.5H375V250ZM750 223.2V125H612.5L437.5 0 262.5 125H125V223.2L0 312.5V937.5H875V312.5L750 223.2ZM187.5 187.5H687.5V426.6L437.5 632.8 187.5 426.6V187.5ZM62.5 437.5L308.6 624.6 62.5 812.5V437.5ZM125 875L373 673.6 437.5 722.7 501.8 673.7 750 875H125ZM812.5 812.5L566 624.9 812.5 437.5V812.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "mail-read"
 
      ]
 
    },
 
    {
 
      "uid": "a42ce4fe0b0cacab094ff1cdc12981c7",
 
      "css": "mail-reply",
 
      "code": 61521,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M375 156.3L0 437.5 375 718.8V531.3C483.4 531.3 696.3 590.8 750 804.7 750 520.5 558.6 364.3 375 343.8V156.3Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "mail-reply"
 
      ]
 
    },
 
    {
 
      "uid": "ebdfec131458ad8effaacbc29fab9dc1",
 
      "css": "mark-github",
 
      "code": 61450,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M500 0C223.9 0 0 223.9 0 500 0 720.9 143.3 908.3 341.9 974.4 366.9 979 376.1 963.6 376.1 950.4 376.1 938.5 375.6 899 375.4 857.3 236.3 887.5 206.9 798.3 206.9 798.3 184.2 740.6 151.4 725.2 151.4 725.2 106 694.2 154.9 694.8 154.9 694.8 205.1 698.3 231.5 746.3 231.5 746.3 276.1 822.8 348.6 800.7 377 787.8 381.6 755.6 394.5 733.5 408.8 721.1 297.8 708.4 181 665.5 181 473.9 181 419.3 200.5 374.8 232.4 339.8 227.3 327.1 210.1 276.2 237.4 207.4 237.4 207.4 279.3 193.9 374.9 258.6 414.7 247.5 457.5 242 500 241.8 542.5 242 585.3 247.6 625.2 258.7 720.6 193.9 762.6 207.4 762.6 207.4 789.9 276.3 772.7 327.1 767.6 339.8 799.6 374.8 819 419.3 819 473.9 819 666 702 708.3 590.6 720.7 608.6 736.2 624.6 766.6 624.6 813.2 624.6 880.1 623.9 934 623.9 950.4 623.9 963.7 633 979.3 658.3 974.4 856.9 908.2 1000 720.8 1000 500 1000 223.9 776.1 0 500 0Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "mark-github"
 
      ]
 
    },
 
    {
 
      "uid": "ed117211526a59ab193ac5ec70269ca8",
 
      "css": "markdown",
 
      "code": 61641,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M927.9 187.5H72.1C32.4 187.5 0 219.9 0 259.6V740.4C0 780.2 32.4 812.5 72.1 812.5H927.9C967.7 812.5 1000 780.2 1000 740.4V259.6C1000 219.9 967.7 187.5 927.9 187.5ZM562.5 687.4L437.5 687.5V500L343.8 620.2 250 500V687.5H125V312.5H250L343.8 437.5 437.5 312.5 562.5 312.4V687.4ZM749.1 718.6L593.8 500H687.5V312.5H812.5V500H906.3L749.1 718.6Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "markdown"
 
      ]
 
    },
 
    {
 
      "uid": "396e6db6190924895c8832651778d53d",
 
      "css": "megaphone",
 
      "code": 61559,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M812.5 31.3C685.5 31.3 691.4 158.2 125 156.3 56 156.3 0 268.2 0 406.3S56 656.3 125 656.3C147.2 656.3 167.2 656.7 187.7 657.1L250 937.5 437.5 968.8 500 875 455.9 676.6C692.7 712 716.6 781.3 812.5 781.3 916 781.3 1000 613.3 1000 406.3 1000 199.2 916 31.3 812.5 31.3ZM192.4 471.6C154.1 470.2 112.1 469.4 67.8 469.1 64.5 449.8 62.5 428.6 62.5 406.3 62.5 319.9 90.5 218.8 125 218.8 163.1 218.9 198.2 218.3 231.4 217.4 204.7 263.2 187.5 330.4 187.5 406.3 187.5 429 189.5 450.6 192.4 471.6ZM255.2 474.5C252.1 452.8 250 430.1 250 406.3 250 328.6 268 260.3 295.8 214.6 447.3 206.5 541.8 186.8 607.4 165.6 579.7 230.9 562.5 314.1 562.5 406.3 562.5 445.3 566.3 482.4 571.8 517.9 501.3 499.6 403.1 483 255.2 474.5ZM812.5 687.5C800.7 687.5 789.4 682.6 778.5 675.7 763.6 609.9 697 267.1 893.2 193.1 920 244.6 937.5 320.5 937.5 406.3 937.5 561.5 881.5 687.5 812.5 687.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "megaphone"
 
      ]
 
    },
 
    {
 
      "uid": "c7013d840279b7e7016c820444a92d4d",
 
      "css": "mention",
 
      "code": 61630,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M455.8 96.8C233.1 69.4 30.4 227.8 3 450.5-24.3 673.2 134 875.9 356.7 903.2 426.5 911.8 498.5 902.3 565.1 874L565 873.9C588.9 863.8 600 836.3 589.9 812.5 579.8 788.7 552.3 777.5 528.4 787.6L528.4 787.6C477.2 809.5 421.8 816.7 368.2 810.2 196.9 789.1 75 633.2 96.1 461.9 117.1 290.6 273 168.8 444.3 189.8 615.6 210.9 737.5 366.8 716.4 538.1 712.2 572.3 695.4 592.5 656.3 592.5 614.8 592.5 593.8 547.7 593.8 513.2V390.6C593.8 364.7 572.8 343.8 546.9 343.8 537.4 343.8 528.6 346.6 521.2 351.4 496.2 331.6 465.1 318.3 429.1 313.9 326.3 301.3 232.8 374.4 220.1 477.1 207.5 579.9 280.6 673.5 383.4 686.1 439.4 693 496.9 671.7 537.6 634.2 561.9 661.7 596 680.7 635.3 685.6 721 696.1 799 635.2 809.5 549.5 836.8 326.8 678.5 124.1 455.8 96.8ZM499.3 511.4C493 562.8 446.2 599.4 394.8 593.1 343.4 586.7 306.9 540 313.2 488.6 319.5 437.2 366.3 400.6 417.7 406.9 469.1 413.3 505.6 460 499.3 511.4Z",
 
        "width": 812.5
 
      },
 
      "search": [
 
        "mention"
 
      ]
 
    },
 
    {
 
      "uid": "1f2687a8b850a6e3d54c5cd07de28b0f",
 
      "css": "microscope",
 
      "code": 61577,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M602.5 875C686.8 856.7 750 777.3 750 687.5 750 630.4 724 580 683.7 545.5 686 530.6 687.5 515.5 687.5 500 687.5 397.6 638.8 306.8 562.5 250L625 187.5V125L687.5 62.5 625 0 562.5 62.5H500L250 312.5 125 375V500L187.5 562.5H312.5L375 437.5 468.8 343.8C522.9 376.4 562.5 432.1 562.5 500 458.9 500 375 583.9 375 687.5H0V750H187.5C206.2 763.9 228.6 771.6 250 781.3V875H125L0 1000H750L625 875H602.5ZM500 687.5C500 653 528 625 562.5 625S625 653 625 687.5C625 722 597 750 562.5 750S500 722 500 687.5Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "microscope"
 
      ]
 
    },
 
    {
 
      "uid": "e5b01346619b6404a1d14783a70a2f22",
 
      "css": "milestone",
 
      "code": 61557,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M687.5 187.5H0V437.5H687.5L812.5 312.5 687.5 187.5ZM437.5 375H312.5V250H437.5V375ZM437.5 0H312.5V125H437.5V0ZM312.5 1000H437.5V500H312.5V1000Z",
 
        "width": 812.5
 
      },
 
      "search": [
 
        "milestone"
 
      ]
 
    },
 
    {
 
      "uid": "47d7c514c97c5bbd112f4e36740b969b",
 
      "css": "mirror",
 
      "code": 61476,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M312.5 312.5L125 500 312.5 687.5V562.5H687.5V687.5L875 500 687.5 312.5V437.5H312.5V312.5ZM500 0L0 312.5V1000L500 750 1000 1000V312.5L500 0ZM937.5 875L562.5 687.5V625H437.5V687.5L62.5 875V375L437.5 125V375H562.5V125L937.5 375V875Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "mirror"
 
      ]
 
    },
 
    {
 
      "uid": "c38a474c7737b5835e9511e962445493",
 
      "css": "mortar-board",
 
      "code": 61655,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M489.3 574.2L250 500S250 593.8 250 656.3 362.3 750 500 750 750 718.8 750 656.3 750 500 750 500L510.7 574.2C503.9 576.2 496.1 576.2 488.3 574.2H489.3ZM506.8 174.8C502.9 173.8 498 173.8 494.1 174.8L16.6 323.2C-3.9 330.1-3.9 358.4 16.6 365.2L125 399.4V509.8C106.4 520.5 93.8 541 93.8 563.5 93.8 575.2 96.7 585.9 102.5 594.7 97.7 603.5 93.8 614.3 93.8 626V787.1C93.8 821.3 218.8 821.3 218.8 787.1V626C218.8 614.3 215.8 603.5 210 594.7 214.8 585.9 218.8 575.2 218.8 563.5 218.8 540 206.1 520.5 187.5 509.8V418.9L493.2 514.6C497.1 515.6 502 515.6 505.9 514.6L983.4 366.2C1003.9 359.4 1003.9 331.1 983.4 324.2L506.8 174.8ZM501 375C466.8 375 438.5 361.3 438.5 343.8S466.8 312.5 501 312.5 563.5 326.2 563.5 343.8 535.2 375 501 375Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "mortar-board"
 
      ]
 
    },
 
    {
 
      "uid": "ef6263a57a35ecee2f8ddda2fe20dcab",
 
      "css": "move-down",
 
      "code": 59395,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M625 312.5H437.5V0H187.5V312.5H0L312.5 687.5 625 312.5ZM0 1000H625V812.5H0V1000Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "move-down"
 
      ]
 
    },
 
    {
 
      "uid": "349d4aa27beb144cdc4de52b8dad1773",
 
      "css": "move-left",
 
      "code": 61556,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M0 812.5H187.5V187.5H0V812.5ZM687.5 375V187.5L312.5 500 687.5 812.5V625H1000V375H687.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "move-left"
 
      ]
 
    },
 
    {
 
      "uid": "b9424c2c6ed8511d1ed266ecf1b7970e",
 
      "css": "move-right",
 
      "code": 61609,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M812.5 187.5V812.5H1000V187.5H812.5ZM312.5 375H0V625H312.5V812.5L687.5 500 312.5 187.5V375Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "move-right"
 
      ]
 
    },
 
    {
 
      "uid": "13e7ebf511552da48a5bc1d2e7cf6de2",
 
      "css": "move-up",
 
      "code": 59396,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M0 687.5H187.5V1000H437.5V687.5H625L312.5 312.5 0 687.5ZM0 0V187.5H625V0H0Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "move-up"
 
      ]
 
    },
 
    {
 
      "uid": "de9428c7a2781f21f3e007a2a36c3d80",
 
      "css": "mute",
 
      "code": 61568,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M125 375H0V625H125L375 812.5H437.5V187.5H375L125 375ZM843.8 406.3L781.3 343.8 687.5 437.5 593.8 343.8 532.2 405.8 625 500 531.3 593.8 593.8 656.3 687.5 562.5 781.3 656.3 843.8 593.8 750 500 843.8 406.3Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "mute"
 
      ]
 
    },
 
    {
 
      "uid": "102648ac68f381291409e014cd9a0ad0",
 
      "css": "no-newline",
 
      "code": 61596,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M875 312.5V437.5H750V312.5L562.5 500 750 687.5V562.5H937.5C937.5 562.5 1000 562.1 1000 500S1000 312.5 1000 312.5H875ZM218.8 281.3C97.9 281.3 0 379.2 0 500 0 620.8 97.9 718.8 218.8 718.8S437.5 620.8 437.5 500C437.5 379.2 339.6 281.3 218.8 281.3ZM93.8 500C93.8 431 149.8 375 218.8 375 237.1 375 254.3 379.1 270 386.3L105 551.3C97.9 535.5 93.8 518.3 93.8 500ZM218.8 625C200.4 625 183.2 620.8 167.5 613.8L332.5 448.8C339.6 464.4 343.8 481.7 343.8 500 343.8 569 287.8 625 218.8 625Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "no-newline"
 
      ]
 
    },
 
    {
 
      "uid": "4131a29a421cd140f459ce6e74318b40",
 
      "css": "octoface",
 
      "code": 61448,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M918.8 271.2C926.8 251.4 953.3 171.8 910.4 64.2 910.4 64.2 844.6 43.4 695.7 145.2 633.3 128.1 566.3 125.5 500 125.5 433.7 125.5 366.8 128.1 304.2 145.3 155.3 43.4 89.6 64.2 89.6 64.2 46.7 171.9 73.2 251.4 81.2 271.2 30.8 325.7 0 395.4 0 480.8 0 802.3 208.3 875 498.9 875 789.6 875 1000 802.3 1000 480.8 1000 395.4 969.2 325.7 918.8 271.2ZM500 813.5C293.5 813.5 126.2 803.8 126.2 603.8 126.2 556 149.7 511.4 190 474.6 257.1 413.1 370.9 445.6 500 445.6 629.2 445.6 742.8 413.1 810 474.5 850.3 511.4 873.9 555.9 873.9 603.8 873.9 803.8 706.4 813.5 500 813.5ZM342.9 500.4C301.5 500.4 267.8 550.3 267.8 611.9S301.5 723.6 342.9 723.6C384.3 723.6 417.9 673.6 417.9 611.9S384.3 500.4 342.9 500.4ZM657.1 500.4C615.7 500.4 582 550.3 582 611.9S615.7 723.6 657.1 723.6 732.1 673.6 732.1 611.9C732.2 550.3 698.5 500.4 657.1 500.4Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "octoface"
 
      ]
 
    },
 
    {
 
      "uid": "3f792c148d4bfe960a5cdedb7ebdb004",
 
      "css": "organization",
 
      "code": 61495,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M750 375H687.5 562.5 500 437.5 375 312.5 187.5 125C56 375 0 431 0 500V562.5C0 608.6 25.2 648.5 62.5 670.2V875H312.5V1000H562.5V875H812.5V670.2C849.7 648.5 875 608.7 875 562.5V500C875 431 819 375 750 375ZM250 812.5H125V562.5H62.5V500C62.5 465.5 90.5 437.5 125 437.5H204.8C194.1 455.9 187.5 477.1 187.5 500V625C187.5 671.1 212.7 711 250 732.7V812.5ZM562.5 687.5V562.5H500V937.5H375V562.5H312.5V687.5C278 687.5 250 659.5 250 625V500C250 465.5 278 437.5 312.5 437.5H562.5C597 437.5 625 465.5 625 500V625C625 659.5 597 687.5 562.5 687.5ZM812.5 562.5H750V812.5H625V732.7C662.2 711 687.5 671.2 687.5 625V500C687.5 477.1 680.9 455.9 670.2 437.5H750C784.5 437.5 812.5 465.5 812.5 500V562.5ZM296.6 309.9C330.9 349.5 381 375 437.5 375 494 375 544.1 349.5 578.4 309.9 599.7 348.6 640.3 375 687.5 375 756.5 375 812.5 319 812.5 250S756.5 125 687.5 125C662.5 125 639.3 132.5 619.8 145.2 600.5 62.1 526.4 0 437.5 0S274.5 62.1 255.2 145.2C235.7 132.5 212.5 125 187.5 125 118.5 125 62.5 181 62.5 250S118.5 375 187.5 375C234.7 375 275.2 348.6 296.6 309.9ZM687.5 187.5C722 187.5 750 215.4 750 250S722 312.5 687.5 312.5C653 312.5 625 284.6 625 250S653 187.5 687.5 187.5ZM437.5 62.5C506.5 62.5 562.5 118.5 562.5 187.5S506.5 312.5 437.5 312.5C368.5 312.5 312.5 256.5 312.5 187.5S368.5 62.5 437.5 62.5ZM187.5 312.5C153 312.5 125 284.6 125 250S153 187.5 187.5 187.5C222.1 187.5 250 215.4 250 250S222.1 312.5 187.5 312.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "organization"
 
      ]
 
    },
 
    {
 
      "uid": "b0660213707eb5a2ca66f5f72a07962b",
 
      "css": "package",
 
      "code": 61636,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M468.8 62.5L0 187.5V750L468.8 875 937.5 750V187.5L468.8 62.5ZM62.4 704L62 281.3 437.5 381.4 437.5 804.1 62.4 704ZM62 218.8L218.5 177 625 285.4V285.5L468.8 327.2 62 218.8ZM875.1 704L500 804.1 500 381.4 625 348V500.4L750 467.1V314.7L875.5 281.3 875.1 704ZM750 252.2V252.1L343.5 143.7 468.8 110.3 875.5 218.8 750 252.2Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "package"
 
      ]
 
    },
 
    {
 
      "uid": "15b495b0d3f9e29bb99dfe8621e474f7",
 
      "css": "paintcan",
 
      "code": 61649,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M375 0C167.9 0 0 167.9 0 375V437.5C0 472 28 500 62.5 500V812.5C62.5 881.5 202.4 937.5 375 937.5S687.5 881.5 687.5 812.5V500C722 500 750 472 750 437.5V375C750 167.9 582.1 0 375 0ZM562.5 625V656.3C562.5 673.5 548.5 687.5 531.3 687.5S500 673.5 500 656.3V625C500 607.7 486 593.8 468.8 593.8S437.5 607.7 437.5 625V781.3C437.5 798.5 423.5 812.5 406.3 812.5S375 798.5 375 781.3V656.3C375 639 361 625 343.8 625S312.5 639 312.5 656.3V687.5C312.5 722 284.5 750 250 750S187.5 722 187.5 687.5V625C153 625 125 597 125 562.5V450C182 480.4 272.8 500 375 500S568 480.4 625 450V562.5C625 597 597 625 562.5 625ZM375 437.5C270.1 437.5 180.3 411.6 143.2 375 180.3 338.4 270.1 312.5 375 312.5S569.7 338.4 606.8 375C569.7 411.6 479.9 437.5 375 437.5ZM375 250C202.5 250 62.7 305.9 62.5 374.9 62.5 374.9 62.5 374.9 62.5 374.9 62.6 202.3 202.5 62.5 375 62.5 547.6 62.5 687.5 202.4 687.5 375 687.5 306 547.6 250 375 250Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "paintcan"
 
      ]
 
    },
 
    {
 
      "uid": "e842c9e82a050d90b6207d345f77f8bd",
 
      "css": "pencil",
 
      "code": 61528,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M687.5 62.5L562.5 187.5 750 375 875 250 687.5 62.5ZM0 750L0.7 938 187.5 937.5 687.5 437.5 500 250 0 750ZM187.5 875H62.5V750H125V812.5H187.5V875Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "pencil"
 
      ]
 
    },
 
    {
 
      "uid": "35c8329050add753aaa88bdccbd7b8ca",
 
      "css": "person",
 
      "code": 61464,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M437.5 187.5C437.5 84 353.6 0 250 0S62.5 84 62.5 187.5C62.5 291.1 146.4 375 250 375S437.5 291.1 437.5 187.5ZM250 312.5C181 312.5 125 256.5 125 187.5S181 62.5 250 62.5C319 62.5 375 118.5 375 187.5S319 312.5 250 312.5ZM375 375H250 125C56 375 0 431 0 500V625C0 694 56 750 125 750V1000H375V750C444 750 500 694 500 625V500C500 431 444 375 375 375ZM437.5 625C437.5 659.5 409.5 687.5 375 687.5V562.5H312.5V937.5H187.5V562.5H125V687.5C90.5 687.5 62.5 659.5 62.5 625V500C62.5 465.5 90.5 437.5 125 437.5H375C409.5 437.5 437.5 465.5 437.5 500V625Z",
 
        "width": 500
 
      },
 
      "search": [
 
        "person"
 
      ]
 
    },
 
    {
 
      "uid": "fb75a64fd7a7cdde0943e14672cfa55f",
 
      "css": "pin",
 
      "code": 61505,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M191.4 687.5L253.9 1000 316.4 687.5C296.9 689.5 274.4 690.4 253.9 690.4S210.9 689.5 191.4 687.5ZM439.5 395.5C407.2 378.9 378.9 337.9 378.9 312.5V250C378.9 228.5 390.6 211.9 401.4 199.2 416 186.5 424.8 170.9 424.8 155.3 424.8 103.5 365.2 62.5 253.9 62.5S83 103.5 83 155.3C83 170.9 91.8 186.5 106.4 199.2 117.2 211.9 128.9 228.5 128.9 250V312.5C128.9 337.9 100.6 378.9 68.4 395.5 31.3 414.1 0 448.2 0 481.4 0 553.7 98.6 626 253.9 626S507.8 554.7 507.8 481.4C507.8 449.2 477.5 415 439.5 395.5Z",
 
        "width": 507.47753906250006
 
      },
 
      "search": [
 
        "pin"
 
      ]
 
    },
 
    {
 
      "uid": "bda83a747dd1ba391ceba5f4fa08a960",
 
      "css": "playback-fast-forward",
 
      "code": 61629,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M0 750L375 500 0 250V750ZM750 500L375 250V500 750L750 500Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "playback-fast-forward"
 
      ]
 
    },
 
    {
 
      "uid": "8bbbb03e976d03703131a29cca4501ea",
 
      "css": "playback-pause",
 
      "code": 61627,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M0 812.5H187.5V187.5H0V812.5ZM312.5 187.5V812.5H500V187.5H312.5Z",
 
        "width": 500
 
      },
 
      "search": [
 
        "playback-pause"
 
      ]
 
    },
 
    {
 
      "uid": "a1ea6191b7303f77924e4dfbb754be56",
 
      "css": "playback-play",
 
      "code": 61631,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M0 187.5L500 500 0 812.5V187.5Z",
 
        "width": 500
 
      },
 
      "search": [
 
        "playback-play"
 
      ]
 
    },
 
    {
 
      "uid": "829335e4e4b843c75a4ee0fd4af3ff60",
 
      "css": "playback-rewind",
 
      "code": 61628,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M375 500L750 750V250L375 500ZM0 500L375 750V500 250L0 500Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "playback-rewind"
 
      ]
 
    },
 
    {
 
      "uid": "c56e938388b46fcaf35a0bdad7cb7805",
 
      "css": "plug",
 
      "code": 61652,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M979.9 199.9L979 199C954.8 174.8 915.6 174.8 891.5 199L846.8 243.6 758.5 155.2 803.1 110.6C827.3 86.4 827.3 47.3 803.1 23.1L802.2 22.2C778-2 738.9-2 714.7 22.2L667.9 69.1C607.2 28.9 524.6 35.5 471.2 88.9L446.9 113.2C340.4 219.7 327.8 384.4 408.9 504.7L404.9 508.8C344 569.7 343.9 668.4 404.6 729.5 416.8 741.7 417 762 404.8 774.1 392.5 786.2 372.9 786.1 360.7 773.9L273.4 686.6C212.2 625.4 112.6 624.4 51.4 685.5-9.7 746.5-9.7 845.5 51.3 906.5L59.9 915.1C84.1 939.3 123.2 939.3 147.4 915.1L148.3 914.2C172.5 890 172.5 850.9 148.3 826.7L140.2 818.6C128.2 806.6 127.4 786.9 139.1 774.6 151.3 761.7 171.5 761.5 183.9 773.9L271.2 861.2C332.6 922.6 432.8 923.5 493.9 861.7 554.2 800.7 554.1 702.4 493.5 641.6 481.2 629.3 481 609.5 493.3 597.2L497.3 593.1C617.6 674.3 782.4 661.6 888.8 555.2L913.1 530.9C966.6 477.4 973.2 394.9 933 334.2L979.9 287.4C1004 263.2 1004 224 979.9 199.9ZM868.9 486.7C832.3 523.3 773 523.3 736.4 486.7L515.4 265.7C478.8 229.1 478.8 169.7 515.4 133.1 544.3 104.3 587.2 98.2 622.1 114.8L581.2 155.7C557.1 179.8 557.1 219 581.2 243.2L582.1 244.1C606.3 268.2 645.5 268.2 669.6 244.1L714.3 199.4 802.7 287.8 758 332.4C733.9 356.6 733.9 395.8 758 420L758.9 420.8C783.1 445 822.2 445 846.4 420.8L887.3 380C903.9 414.8 897.8 457.8 868.9 486.7Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "plug"
 
      ]
 
    },
 
    {
 
      "uid": "b3f35d01ce0c365745d59c7df3ae19fe",
 
      "css": "plus",
 
      "code": 61533,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M375 437.5V187.5H250V437.5H0V562.5H250V812.5H375V562.5H625V437.5H375Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "plus"
 
      ]
 
    },
 
    {
 
      "uid": "94568823f51bd8357d94124d3142d88e",
 
      "css": "podium",
 
      "code": 61615,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M312.5 0C281.3 0 250 31.3 250 62.5S250 125 250 125H187.5L0 312.5V437.5H187.5L250 812.5 125 875V937.5H625V875L500 812.5 562.5 437.5H750V312.5L562.5 125H312.5V62.5S326.2 62.5 343.8 62.5 375 45.9 375 31.3 359.4 0 343.8 0 343.8 0 312.5 0ZM312.5 812.5L260.7 500H376L375 812.5H312.5ZM93.8 312.5L218.8 187.5H250V250H312.5V187.5H531.3L656.3 312.5H93.8Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "podium"
 
      ]
 
    },
 
    {
 
      "uid": "d06dcdce4ac91868eba1ece8db38cd32",
 
      "css": "primitive-dot",
 
      "code": 61522,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M-0.1 500C-0.1 361.8 111.7 250 249.9 250 388 250 499.9 361.8 499.9 500S388 750 249.9 750C111.7 750-0.1 638.2-0.1 500Z",
 
        "width": 499.8291015625
 
      },
 
      "search": [
 
        "primitive-dot"
 
      ]
 
    },
 
    {
 
      "uid": "3d854fbd9341b3bed4878141f31b3cff",
 
      "css": "primitive-square",
 
      "code": 61523,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M500 750H0V250H500V750Z",
 
        "width": 500
 
      },
 
      "search": [
 
        "primitive-square"
 
      ]
 
    },
 
    {
 
      "uid": "81cc193c4e77f5e490e7a823de0c0b23",
 
      "css": "pulse",
 
      "code": 61573,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M718.8 499.9L550 337.5 412.5 531.3 343.8 100 148.9 499.9H0V625H225L281.3 512.5 337.5 850 562.5 531.3 662.5 625H875V499.9H718.8Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "pulse"
 
      ]
 
    },
 
    {
 
      "uid": "0e48a45fcc4310c09e945174a0120919",
 
      "css": "puzzle",
 
      "code": 61632,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M738 561.7C724.4 551.9 710.2 545.5 695.6 542.2 687 540.6 677.9 539.9 668.7 540.4 659.9 540.9 651.5 542.1 643.6 543.9 637.6 545.5 631.6 547.7 625.7 550.3 607.9 558.2 592.6 568 580 579.9 568 592.5 558.2 607.9 550.3 625.6 547.7 631.6 545.5 637.6 543.9 643.5 542.1 651.5 540.9 659.9 540.5 668.6 540 677.9 540.6 686.9 542.2 695.6 545.5 710.2 552 724.4 561.7 738 565.5 743.3 569.6 748.2 573.9 752.5 593.5 772.1 618.7 782.5 647.6 785.8 656.3 786.8 665.3 787.5 673.5 790.2 678.5 791.9 682.5 794.2 685.3 797.1 691.8 803.5 692.8 812.8 687.7 823.7 684.7 830.4 680.2 836.8 675.1 842.1L672.4 844.9C668.5 848.7 666.1 851.1 665.5 851.7 662.4 854.8 659.5 857.8 656.6 860.7L653.7 863.5C643.5 873.9 633.1 884.2 622.8 894.4 600.6 916.7 578.3 939 556 961.2 548.7 968.5 541.4 975.8 534.1 983.2 530.7 986.5 527.2 989.4 523.5 991.7 521.8 992.9 520.1 993.9 518.5 994.8 499.3 1004.5 478 1000.6 460.6 983.2 455.4 978 450.3 972.9 445.2 967.8 415.6 938.2 386.1 908.7 356.5 879.2 348.1 870.8 339.8 862.5 331.4 854.2 325.5 848.2 319.1 842.6 312.3 837.5 306.7 833.3 301 830.1 295.3 828 274.6 820.9 254.8 826 241.9 841 238.2 845.6 235.1 851.2 232.7 857.5 229.4 866.5 228.2 876.5 227 886.2 222.2 922.8 201.8 953 172.3 966.9 165 970.4 157.2 973 149 974.5 141.2 975.9 133.4 976.2 125.7 975.5 99.7 974.2 77.3 962.7 58.8 943.7 57.1 942.1 56.7 941.7 56.3 941.2 37.3 922.7 25.8 900.3 24.5 874.3 23.8 866.6 24.1 858.8 25.5 851.1 27 842.8 29.6 835 33.1 827.7 47 798.2 77.2 777.8 113.8 773.1 123.5 771.8 133.5 770.6 142.5 767.3 149.3 764.8 155.2 761.4 160 757.3 174.2 744.5 179.2 725.4 172.6 706.2 169.9 699 166.7 693.3 162.5 687.7 157.4 681 151.8 674.6 145.8 668.6 137.5 660.3 129.2 651.9 120.9 643.6 94.6 617.2 68.3 591 42 564.7L32.2 554.9C27.1 549.8 22 544.7 17.3 540-0.6 522-4.5 500.7 5.2 481.6 6.1 479.9 7.1 478.3 8.2 476.6 10.6 472.9 13.5 469.4 16.8 466 24.2 458.7 31.5 451.3 38.8 444 61 421.7 83.3 399.5 105.6 377.2 115.8 366.9 126.1 356.6 136.5 346.3L139.3 343.4C142.2 340.5 145.2 337.6 148.1 334.7 148.9 333.9 151.3 331.5 155.1 327.7L157.9 325C163.2 319.8 169.6 315.4 176.3 312.3 187.2 307.3 196.5 308.2 202.9 314.7 205.8 317.6 208.1 321.5 209.8 326.5 212.5 334.7 213.1 343.7 214.1 352.4 217.5 381.3 227.9 406.5 247.5 426.1 251.8 430.5 256.7 434.6 262 438.3 275.6 448.1 289.8 454.6 304.4 457.8 313.1 459.5 322.1 460.1 331.4 459.6 340.1 459.1 348.5 457.9 356.4 456.1 362.4 454.5 368.4 452.3 374.4 449.7 392.1 441.9 407.5 432 420.1 420.1 432 407.5 441.9 392.1 449.7 374.4 452.3 368.4 454.5 362.4 456.1 356.5 457.9 348.5 459.1 340.2 459.6 331.4 460.1 322.1 459.4 313.1 457.8 304.5 454.5 289.9 448.1 275.6 438.3 262 434.5 256.7 430.4 251.9 426.1 247.5 406.5 227.9 381.3 217.5 352.4 214.2 343.7 213.2 334.7 212.5 326.5 209.8 321.5 208.1 317.6 205.8 314.7 202.9 308.2 196.5 307.3 187.2 312.3 176.3 315.4 169.7 319.8 163.2 324.9 157.9L327.7 155.1C331.5 151.3 333.9 148.9 334.5 148.3 337.6 145.2 340.5 142.3 343.4 139.3L346.3 136.5C356.6 126.2 366.9 115.9 377.2 105.6 399.4 83.3 421.7 61.1 444 38.8 451.3 31.5 458.6 24.2 465.9 16.9 469.3 13.5 472.9 10.6 476.5 8.3 478.2 7.1 479.9 6.1 481.5 5.2 500.7-4.5 522-0.6 539.4 16.8 544.7 22.1 549.8 27.2 554.9 32.3 584.4 61.8 613.9 91.4 643.5 120.9 651.9 129.2 660.2 137.5 668.6 145.9 674.6 151.8 681 157.4 687.7 162.5 693.3 166.7 699 169.9 704.7 172 725.4 179.2 745.2 174 758.1 159.1 761.8 154.4 765 148.8 767.3 142.5 770.6 133.5 771.8 123.5 773.1 113.9 777.8 77.2 798.3 47 827.7 33.1 835 29.6 842.9 27 851.1 25.5 858.8 24.2 866.6 23.9 874.4 24.5 900.3 25.8 922.7 37.3 941.3 56.3 942.9 58 943.3 58.4 943.7 58.8 962.7 77.4 974.2 99.7 975.5 125.7 976.2 133.4 975.9 141.2 974.5 149 973 157.2 970.5 165 966.9 172.3 953 201.8 922.8 222.2 886.2 227 876.5 228.2 866.6 229.4 857.5 232.7 850.7 235.2 844.9 238.6 840 242.7 825.8 255.6 820.8 274.6 827.4 293.8 830.1 301 833.3 306.7 837.5 312.3 842.6 319.1 848.2 325.4 854.2 331.4 862.5 339.8 870.8 348.1 879.1 356.5 908.7 386.1 938.3 415.6 967.8 445.1 972.9 450.2 978 455.3 982.7 460 1000.6 478 1004.5 499.3 994.9 518.5 994 520.1 993 521.8 991.8 523.4 989.4 527.1 986.6 530.7 983.2 534.1 975.9 541.4 968.5 548.7 961.2 556 939 578.3 916.7 600.6 894.5 622.8 884.2 633.1 873.9 643.4 863.6 653.7L860.7 656.6C857.8 659.5 854.9 662.4 851.9 665.3 851.2 666.1 848.7 668.5 844.9 672.4L842.1 675.1C836.8 680.2 830.4 684.6 823.7 687.7 812.8 692.7 803.6 691.8 797.1 685.3 794.2 682.4 791.9 678.5 790.3 673.5 787.5 665.3 786.9 656.3 785.9 647.6 782.5 618.7 772.1 593.5 752.6 573.9 748.2 569.6 743.3 565.5 738 561.7Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "puzzle"
 
      ]
 
    },
 
    {
 
      "uid": "d1cb1b0883390fe33664660508261572",
 
      "css": "question",
 
      "code": 61484,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M437.5 750H562.5V625H437.5V750ZM500 250C406.3 250 312.5 343.8 312.5 437.5H437.5C437.5 406.3 468.8 375 500 375S562.5 406.3 562.5 437.5C562.5 500 437.5 500 437.5 562.5H562.5C625 541 687.5 500 687.5 406.3S593.8 250 500 250ZM500 0C223.6 0 0 223.6 0 500S223.6 1000 500 1000 1000 776.4 1000 500 776.4 0 500 0ZM500 875C293 875 125 707 125 500S293 125 500 125 875 293 875 500 707 875 500 875Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "question"
 
      ]
 
    },
 
    {
 
      "uid": "a70a33e699b2e77b63ad5a999101a554",
 
      "css": "quote",
 
      "code": 61539,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M0 500V750H250V500H125C125 500 125 375 250 375V250C250 250 0 250 0 500ZM625 375V250C625 250 375 250 375 500V750H625V500H500C500 500 500 375 625 375Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "quote"
 
      ]
 
    },
 
    {
 
      "uid": "d33de0d363fd51cf8c78878421e5ab3c",
 
      "css": "radio-tower",
 
      "code": 61488,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M299.6 381.6C315.1 365.7 315.1 339.9 299.6 323.9 279.6 303.3 269.7 276.6 269.7 249.6 269.7 222.5 279.6 195.8 299.6 175.2 315.1 159.2 315.1 133.4 299.6 117.5 291.9 109.5 281.8 105.5 271.6 105.5 261.5 105.5 251.3 109.5 243.5 117.4 208.1 153.9 190.2 201.8 190.3 249.6 190.2 297.2 208.1 345.2 243.5 381.6 259 397.5 284.2 397.5 299.6 381.6ZM145.6 32.4C137.7 24.3 127.4 20.2 117 20.2 106.7 20.2 96.3 24.3 88.4 32.4 30.1 92.3 0.7 171 0.8 249.6 0.7 328 30.1 407 88.4 466.8 104.2 483 129.7 483 145.5 466.8 161.3 450.6 161.3 424.3 145.5 408.2 102.9 364.2 81.6 307.1 81.6 249.6S102.9 134.9 145.5 91C161.3 74.8 161.3 48.5 145.6 32.4ZM501 351.4C557 351.4 602.5 305.9 602.5 249.9 602.5 193.9 557 148.4 501 148.4 445 148.4 399.5 193.9 399.5 249.9 399.5 305.9 445 351.4 501 351.4ZM911.7 33C895.9 16.7 870.3 16.7 854.6 33 838.8 49.2 838.8 75.5 854.6 91.6 897.2 135.5 918.4 192.7 918.4 250.2 918.4 307.7 897.1 364.8 854.5 408.7 838.8 424.9 838.8 451.3 854.6 467.4 862.4 475.5 872.7 479.5 883.1 479.5 893.4 479.5 903.8 475.5 911.7 467.4 970 407.5 999.3 328.6 999.2 250.1 999.3 171.7 970 92.8 911.7 33ZM501.3 432.5L501.3 432.5C475.4 432.6 449.5 426.2 426 413.5L229.5 937.1H322.5L376.1 874.6H626L678.7 937.1H771.7L575.3 413.6C552.1 426.1 526.8 432.5 501.3 432.5ZM500.6 462.4L563.5 687.2H438.5L500.6 462.4ZM376.1 812.2L438.5 749.7H563.5L626 812.2H376.1ZM700.4 118.2C684.9 134.1 684.9 159.9 700.4 175.9 720.4 196.5 730.3 223.2 730.3 250.2 730.3 277.3 720.4 304 700.4 324.6 684.9 340.6 684.9 366.4 700.4 382.3 708.1 390.3 718.2 394.2 728.4 394.2 738.5 394.2 748.7 390.3 756.5 382.3 791.9 345.9 809.8 297.9 809.7 250.2 809.8 202.5 792 154.6 756.5 118.2 741 102.3 715.9 102.3 700.4 118.2Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "radio-tower"
 
      ]
 
    },
 
    {
 
      "uid": "a8a7bb3dfb8c0662c3811691d3bc5c4f",
 
      "css": "repo",
 
      "code": 61441,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M312.5 250H250V312.5H312.5V250ZM312.5 125H250V187.5H312.5V125ZM687.5 0C656.3 0 93.8 0 62.5 0S0 31.3 0 62.5 0 781.3 0 812.5 31.3 875 62.5 875 187.5 875 187.5 875V1000L281.3 906.3 375 1000V875S656.3 875 687.5 875 750 843.8 750 812.5 750 93.8 750 62.5 718.8 0 687.5 0ZM687.5 781.3C687.5 796.9 672.9 812.5 656.3 812.5S375 812.5 375 812.5V750H187.5V812.5S110.4 812.5 93.8 812.5 62.5 795.9 62.5 781.3 62.5 687.5 62.5 687.5H687.5S687.5 765.6 687.5 781.3ZM687.5 625H187.5V62.5H688.5L687.5 625ZM312.5 500H250V562.5H312.5V500ZM312.5 375H250V437.5H312.5V375Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "repo"
 
      ]
 
    },
 
    {
 
      "uid": "ae162feb44a11f044fa5ba41fb16ff60",
 
      "css": "repo-clone",
 
      "code": 61516,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M312.5 375H250V437.5H312.5V375ZM187.5 62.5H437.5V0S93.8 0 62.5 0 0 31.3 0 62.5 0 781.3 0 812.5 31.3 875 62.5 875 187.5 875 187.5 875V1000L281.3 906.3 375 1000V875S654.3 875 687.5 875 750 843.8 750 812.5 750 625 750 625H187.5V62.5ZM687.5 687.5S687.5 764.6 687.5 781.3 673.8 812.5 656.3 812.5 375 812.5 375 812.5V750H187.5V812.5S109.4 812.5 93.8 812.5 62.5 796.9 62.5 781.3 62.5 687.5 62.5 687.5H687.5ZM312.5 250H250V312.5H312.5V250ZM250 562.5H312.5V500H250V562.5ZM937.5 0C906.3 0 656.3 0 625 0S562.5 31.3 562.5 62.5 562.5 406.3 562.5 437.5 593.8 500 625 500 687.5 500 687.5 500V562.5L718.8 531.3 750 562.5V500S906.3 500 937.5 500 1000 468.8 1000 437.5 1000 93.8 1000 62.5 968.8 0 937.5 0ZM687.5 437.5S672.9 437.5 656.3 437.5 625 422.9 625 406.3 625 375 625 375H687.5V437.5ZM937.5 406.3C937.5 421.9 922.9 437.5 906.3 437.5S750 437.5 750 437.5V375H937.5S937.5 390.6 937.5 406.3ZM937.5 312.5H687.5V62.5H906.3S937.5 62.5 937.5 93.8 937.5 312.5 937.5 312.5ZM312.5 125H250V187.5H312.5V125Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "repo-clone"
 
      ]
 
    },
 
    {
 
      "uid": "032c5e0b27e90df1b774652db5a0524f",
 
      "css": "repo-force-push",
 
      "code": 61514,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M750 62.5C750 31.3 718.8 0 687.5 0S93.8 0 62.5 0 0 31.3 0 62.5 0 812.5 0 812.5 0 781.3 0 812.5 31.3 875 62.5 875 187.5 875 187.5 875V1000L312.5 875V750H187.5V812.5S110.4 812.5 93.8 812.5 62.5 797.9 62.5 781.3 62.5 687.5 62.5 687.5H312.5V625H187.5V62.5H687.5V625H562.5V687.5H687.5S687.5 765.6 687.5 781.3 672.9 812.5 656.3 812.5 562.5 812.5 562.5 812.5V875S656.3 875 687.5 875 750 843.8 750 812.5 750 93.8 750 62.5ZM484.4 375H625L437.5 125 250 375H390.6L250 562.5H375V1000H500V562.5H625L484.4 375Z",
 
        "width": 749.8984375
 
      },
 
      "search": [
 
        "repo-force-push"
 
      ]
 
    },
 
    {
 
      "uid": "fa15c85a151b1717d37edd5457bf3f1d",
 
      "css": "repo-forked",
 
      "code": 59431,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M750 125C750 55.7 694.3 0 625 0S500 55.7 500 125C500 170.9 525.4 211.9 562.5 233.4V336.9L375 543.9 187.5 336.9V233.4C224.6 211.9 250 171.9 250 125 250 55.7 194.3 0 125 0S0 55.7 0 125C0 170.9 25.4 211.9 62.5 233.4V385.7L312.5 661.1V767.6C275.4 789.1 250 829.1 250 876 250 945.3 305.7 1001 375 1001S500 945.3 500 876C500 830.1 474.6 789.1 437.5 767.6V661.1L687.5 385.7V233.4C724.6 211.9 750 171.9 750 125ZM125 63.5C158.2 63.5 185.5 90.8 185.5 124S158.2 184.6 125 184.6 64.5 157.2 64.5 124 91.8 63.5 125 63.5ZM375 933.6C341.8 933.6 314.5 906.3 314.5 873S341.8 812.5 375 812.5 435.5 839.8 435.5 873 408.2 933.6 375 933.6ZM625 63.5C658.2 63.5 685.5 90.8 685.5 124S658.2 184.6 625 184.6 564.5 157.2 564.5 124 591.8 63.5 625 63.5Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "repo-forked"
 
      ]
 
    },
 
    {
 
      "uid": "7161810c41e6192e0eeb3c02f3c71b7e",
 
      "css": "repo-pull",
 
      "code": 61446,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M1000 312.5L812.5 125V250H437.5V375H812.5V500L1000 312.5ZM687.5 625H187.5V62.5H687.5V187.5H750S750 93.8 750 62.5 718.8 0 687.5 0 93.8 0 62.5 0 0 31.3 0 62.5 0 781.3 0 812.5 31.3 875 62.5 875 187.5 875 187.5 875V1000L281.3 906.3 375 1000V875S656.3 875 687.5 875 750 843.8 750 812.5 750 437.5 750 437.5H687.5V625ZM687.5 781.3C687.5 795.9 672.9 812.5 656.3 812.5S375 812.5 375 812.5V750H187.5V812.5S110.4 812.5 93.8 812.5 62.5 796.9 62.5 781.3 62.5 687.5 62.5 687.5H687.5S687.5 766.6 687.5 781.3ZM312.5 250H250V312.5H312.5V250ZM312.5 125H250V187.5H312.5V125ZM312.5 375H250V437.5H312.5V375ZM250 562.5H312.5V500H250V562.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "repo-pull"
 
      ]
 
    },
 
    {
 
      "uid": "fcf76fe3a3473fbecf4beb1310a7f26d",
 
      "css": "repo-push",
 
      "code": 61445,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M437.5 312.5L250 562.5H375V1000H500V562.5H625L437.5 312.5ZM250 312.5H312.5V250H250V312.5ZM312.5 125H250V187.5H312.5V125ZM687.5 0C656.3 0 93.8 0 62.5 0S0 31.3 0 62.5 0 781.3 0 812.5 31.3 875 62.5 875 187.5 875 187.5 875V1000L312.5 875V750H187.5V812.5S110.4 812.5 93.8 812.5 62.5 798.8 62.5 781.3 62.5 687.5 62.5 687.5H312.5V625H187.5V62.5H688.5L687.5 625H562.5V687.5H687.5S687.5 764.6 687.5 781.3 672.9 812.5 656.3 812.5 562.5 812.5 562.5 812.5V875S656.3 875 687.5 875 750 843.8 750 812.5 750 93.8 750 62.5 718.8 0 687.5 0Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "repo-push"
 
      ]
 
    },
 
    {
 
      "uid": "a7acd238d79eb520a82ec837e621fc3a",
 
      "css": "rocket",
 
      "code": 61491,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M699.9 121.1C629.7 161.9 555.4 215 486.6 283.8 442.7 327.8 407.3 370.5 378.8 410.5L204.6 442.7 0 647.5 182.5 653.1 311 524.7C265.6 618.6 261.6 680.9 261.6 680.9L319.1 738.3C319.1 738.3 383.4 732.2 478 686.4L346.8 817.5 352.5 1000 557.2 795.4 589.5 620.3C629.9 592 672.7 556.8 716.2 513.4 785 444.6 838.1 370.3 878.8 300 833.9 290.9 792.8 272.2 760.3 239.8 727.8 207.2 709 166 699.9 121.1ZM767.7 84.8C772.6 128.8 787.2 164.2 811.5 188.3 835.7 212.7 871 227.3 915.1 232.1 979.6 101.9 1000 0 1000 0S898.1 20.4 767.7 84.8Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "rocket"
 
      ]
 
    },
 
    {
 
      "uid": "5d358671bebe775f7c0e56be065efe42",
 
      "css": "rss",
 
      "code": 61492,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M125 625C56 625 0 681 0 750S56 875 125 875 250 819 250 750 194 625 125 625ZM125 375C125 375 62.5 377 62.5 437.5S125 500 125 500C263.1 500 375 611.9 375 750 375 750 375 812.5 437.5 812.5S500 750 500 750C500 543 332.1 375 125 375ZM125 125C125 125 62.5 125 62.5 187.5S125 250 125 250C401.1 250 625 473.9 625 750 625 750 625 812.5 687.5 812.5S750 750 750 750C750 404.9 470.2 125 125 125Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "rss"
 
      ]
 
    },
 
    {
 
      "uid": "139945d7eee98966dbf65e978a8a4af0",
 
      "css": "ruby",
 
      "code": 61511,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M750 125H250L0 375 500 875 1000 375 750 125ZM125 375L312.5 187.5H687.5L875 375 500 750 125 375ZM687.5 250H500V687.5L812.5 375 687.5 250Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "ruby"
 
      ]
 
    },
 
    {
 
      "uid": "3856c998d176e6a015e76cec5f1ace1d",
 
      "css": "screen-full",
 
      "code": 61542,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M125 750H749.9V250H125V750ZM249.9 375H624.9V625H249.9V375ZM62.5 187.6H249.9V125.1H0V375H62.5V187.6ZM62.5 625H0V874.9H249.9V812.5H62.5V625ZM624.9 125.1V187.6H812.4V375H874.9V125.1H624.9ZM812.4 812.5H624.9V874.9H874.9V625H812.4V812.5Z",
 
        "width": 874.8779296875
 
      },
 
      "search": [
 
        "screen-full"
 
      ]
 
    },
 
    {
 
      "uid": "ff59487671c549822cdeaec1be027349",
 
      "css": "screen-normal",
 
      "code": 61543,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M124.9 187.4H0V249.9H187.4V62.5H124.9V187.4ZM0 812.6H124.9V937.5H187.4V750.1H0V812.6ZM750.1 187.4V62.5H687.6V249.9H875V187.4H750.1ZM687.6 937.5H750.1V812.6H875V750.1H687.6V937.5ZM187.6 687.5H687.5V312.5H187.6V687.5ZM312.5 437.5H562.5V562.5H312.5V437.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "screen-normal"
 
      ]
 
    },
 
    {
 
      "uid": "809bb7ea7bf6ca7e94029eae402f922f",
 
      "css": "search",
 
      "code": 59435,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M937.5 812.5L694.2 569.2C728.9 512.5 750 446.4 750 375 750 167.9 582 0 375 0 167.9 0 0 167.9 0 375 0 582 167.9 750 375 750 446.4 750 512.5 728.9 569.2 694.3L812.5 937.5C829.6 954.6 857.9 954.5 875 937.5L937.5 875C954.6 857.9 954.6 829.6 937.5 812.5ZM375 625C236.9 625 125 513.1 125 375S236.9 125 375 125 625 236.9 625 375 513.1 625 375 625Z",
 
        "width": 950.3173828125
 
      },
 
      "search": [
 
        "search"
 
      ]
 
    },
 
    {
 
      "uid": "aad1358a866f4e37b1534c5b93e8ba2d",
 
      "css": "server",
 
      "code": 61591,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M687.5 375H62.5C28.3 375 0 406.3 0 437.5V562.5C0 593.8 31.3 625 62.5 625H687.5C718.8 625 750 593.8 750 562.5V437.5C750 406.3 718.8 375 687.5 375ZM125 562.5H62.5V437.5H125V562.5ZM250 562.5H187.5V437.5H250V562.5ZM375 562.5H312.5V437.5H375V562.5ZM500 562.5H437.5V437.5H500V562.5ZM687.5 687.5H62.5C28.3 687.5 0 718.8 0 750V875C0 906.3 31.3 937.5 62.5 937.5H687.5C718.8 937.5 750 906.3 750 875V750C750 718.8 718.8 687.5 687.5 687.5ZM125 875H62.5V750H125V875ZM250 875H187.5V750H250V875ZM375 875H312.5V750H375V875ZM500 875H437.5V750H500V875ZM687.5 62.5H62.5C28.3 62.5 0 93.8 0 125V250C0 281.3 31.3 312.5 62.5 312.5H687.5C718.8 312.5 750 281.3 750 250V125C750 93.8 718.8 62.5 687.5 62.5ZM125 250H62.5V125H125V250ZM250 250H187.5V125H250V250ZM375 250H312.5V125H375V250ZM500 250H437.5V125H500V250ZM687.5 187.5H625V125H687.5V187.5Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "server"
 
      ]
 
    },
 
    {
 
      "uid": "5211f9981588e524b21aea93cd3e0f14",
 
      "css": "settings",
 
      "code": 61564,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M62.5 875H187.5V687.5H62.5V875ZM187.5 125H62.5V437.5H187.5V125ZM500 125H375V250H500V125ZM0 625H250V500H0V625ZM375 875H500V500H375V875ZM312.5 437.5H562.5V312.5H312.5V437.5ZM812.5 125H687.5V500H812.5V125ZM625 562.5V687.5H875V562.5H625ZM687.5 875H812.5V750H687.5V875Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "settings"
 
      ]
 
    },
 
    {
 
      "uid": "fd277fe129a7d5a6a7cb658c67a2253c",
 
      "css": "sign-in",
 
      "code": 61494,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M625 562.5L625 437.5 875 437.5 875 312.5 625 312.5 625 187.5 437.5 328.1 437.5 187.5 187.5 62.5 687.5 62.5 687.5 250 750 250 750 0 62.5 0 62.5 812.5 437.5 1000 437.5 812.5 750 812.5 750 500 687.5 500 687.5 750 437.5 750 437.5 421.9Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "sign-in"
 
      ]
 
    },
 
    {
 
      "uid": "d03e95f94d48f60961e1135b6f828919",
 
      "css": "sign-out",
 
      "code": 61490,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M625 750H375V187.5L125 62.5H625V250H687.5V0H0V812.5L375 1000V812.5H687.5V500H625V750ZM1000 375L750 187.5V312.5H500V437.5H750V562.5L1000 375Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "sign-out"
 
      ]
 
    },
 
    {
 
      "uid": "63ac1e80b89659fec27aac7e2ed265a1",
 
      "css": "split",
 
      "code": 61638,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M437.5 250L187.5 0 0 187.5 303.7 480.5C318.4 401.4 345.7 347.7 433.6 255.9L438.5 250ZM562.5 0L692.4 129.9 500 322.3C403.3 418.9 375 480.5 375 624V999H625V624C625 573.2 643.6 532.2 676.8 499L869.1 306.6 999 436.5V-1H561.5Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "split"
 
      ]
 
    },
 
    {
 
      "uid": "24170ea589f492278a3264ca280b086c",
 
      "css": "squirrel",
 
      "code": 61618,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M750 62.5C611.9 62.5 500 144.3 500 245 500 366 531.3 434.6 500 625 500 343.8 327.1 228.7 250 228.7 253.2 197.3 219.8 187.5 219.8 187.5S206.1 194.5 200.9 208.6C184 189 165.6 191.4 165.6 191.4L157.3 227.7C157.3 227.7 43 267.6 41.4 429.1 54.7 450.2 138 466.9 197.2 456.2 253 459.1 239.1 505.6 226.6 518.1 173.9 570.9 125 500 62.5 500S0 562.5 62.5 562.5 125 625 250 625C56.6 700.2 250 875 250 875H187.5C125 875 125 937.5 125 937.5S375 937.5 500 937.5C687.5 937.5 812.5 875 812.5 720.5 812.5 667.5 785.5 608.6 750 562.1 680.7 471.3 764.1 395 812.5 437.5S1000 500 1000 312.5C1000 174.4 888.1 62.5 750 62.5ZM156.3 375C139 375 125 361 125 343.8 125 326.5 139 312.5 156.3 312.5 173.5 312.5 187.5 326.5 187.5 343.8 187.5 361 173.5 375 156.3 375Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "squirrel"
 
      ]
 
    },
 
    {
 
      "uid": "f15d40c685b0d4363a4f2d2bc8a36434",
 
      "css": "star",
 
      "code": 61482,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M875 375L568.8 335.2 437.5 62.5 306.1 335.2 0 375 225.1 579 167 874.9 437.5 729.6 708.1 874.9 649.9 579 875 375Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "star"
 
      ]
 
    },
 
    {
 
      "uid": "42611565b4bd738361421652b3b026b6",
 
      "css": "steps",
 
      "code": 61639,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M132.8 62.5C59.5 62.5 0 160.4 0 281.3 0 348.5 16.6 419.8 33.2 529.8 46.2 616 77.8 687.5 132.8 687.5S224.7 639.9 224.7 552.8C224.7 523.1 200.3 475.9 199.2 435.5 197.2 362.8 248 333.8 248 266.6 248 145.8 206.2 62.5 132.8 62.5ZM491.2 312.5C417.8 312.5 376 395.8 376 516.6 376 583.8 426.7 612.8 424.8 685.5 423.7 725.9 399.3 773.1 399.3 802.8 399.3 889.9 436.2 937.5 491.2 937.5S577.8 866 590.8 779.8C607.4 669.8 624 598.5 624 531.3 624 410.4 564.5 312.5 491.2 312.5Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "steps"
 
      ]
 
    },
 
    {
 
      "uid": "f6c4fee45c5a81b6b4ec84c0b796bf46",
 
      "css": "stop",
 
      "code": 61583,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M687.5 0H312.5L0 312.5V687.5L312.5 1000H687.5L1000 687.5V312.5L687.5 0ZM875 625L625 875H375L125 625V375L375 125H625L875 375V625ZM437.5 562.5H562.5V250H437.5V562.5ZM437.5 750H562.5V625H437.5V750Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "stop"
 
      ]
 
    },
 
    {
 
      "uid": "7033bb681bc7124bddc921831bbb700c",
 
      "css": "sync",
 
      "code": 61575,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M640.1 462.4C651.7 542.2 627.3 626.2 565.1 687.6 473.1 778.3 331.2 789.5 226.8 721.3L300 650 31.2 612.5 68.7 875 150.8 796.4C298.1 905 507.2 894.8 641.1 762.6 718.7 686 754.1 584.4 749.7 484L640.1 462.4ZM185 312.6C277 221.8 418.8 210.6 523.2 278.8L450 350.1 718.7 387.6 681.2 125 599.3 203.8C451.9 95.1 242.9 105.4 109 237.5 31.3 314.1-4 415.8 0.3 516.1L109.9 537.7C98.3 457.9 122.8 373.9 185 312.6Z",
 
        "width": 750.0498046875
 
      },
 
      "search": [
 
        "sync"
 
      ]
 
    },
 
    {
 
      "uid": "53480562cfd047c3c80269dd0be1623a",
 
      "css": "tag",
 
      "code": 61461,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M375 62.5H125L0 187.5V437.5L500 937.5 875 562.5 375 62.5ZM62.5 406.3V218.8L156.3 125H343.8L781.3 562.5 500 843.8 62.5 406.3ZM437.5 312.5L250 500 500 750 687.5 562.5 437.5 312.5ZM343.8 500L437.5 406.3 593.8 562.5 500 656.3 343.8 500ZM312.5 281.3C312.5 229.5 270.5 187.5 218.8 187.5S125 229.5 125 281.3 167 375 218.8 375 312.5 333 312.5 281.3ZM218.8 312.5C201.5 312.5 187.5 298.5 187.5 281.3S201.5 250 218.8 250 250 264 250 281.3 236 312.5 218.8 312.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "tag"
 
      ]
 
    },
 
    {
 
      "uid": "e7208222497a4b28809b8a52c660cbc8",
 
      "css": "telescope",
 
      "code": 61576,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M74.2 413.1C105.5 405.3 297.9 355.5 297.9 355.5 296.9 361.3 295.9 374 295.9 374 295.9 443.4 343.8 499 420.9 499S545.9 441.4 545.9 374C545.9 363.3 538.1 352.5 527.3 342.8L575.2 345.7S582 343.8 605.5 337.9C555.7 351.6 500 307.6 482.4 241.2S490.2 109.4 541 95.7C517.6 101.6 510.7 103.5 510.7 103.5L346.7 210.9C313.5 219.7 293 255.9 301.8 289.1 303.7 297.9 308.6 305.7 313.5 311.5 306.6 323.2 301.8 336.9 298.8 350.6 272.5 349.6 249 332 241.2 305.7 232.4 272.5 252 238.3 285.2 229.5L45.9 293C12.7 301.8-6.8 335 2 368.2S42 420.9 73.2 413.1ZM483.4 562.5H358.4V625L45.9 937.5H170.9L358.4 812.5V937.5H483.4V812.5L670.9 937.5H795.9L483.4 625V562.5ZM902.3 125C884.8 58.6 834 17.6 783.2 31.3 715.8 48.8 687.5 58.6 601.6 81.1 551.8 94.7 524.4 159.2 542 225.6S614.3 337.9 664.1 325.2C749 302.7 778.3 293 845.7 275.4 895.5 261.7 919.9 192.4 902.3 125ZM834 212.9C817.4 217.8 793 196.3 784.2 163.1S780.3 98.6 796.9 94.7 837.9 111.3 846.7 144.5 850.6 209 834 212.9Z",
 
        "width": 908.0810546875
 
      },
 
      "search": [
 
        "telescope"
 
      ]
 
    },
 
    {
 
      "uid": "1e1fce9d9bf32c22d6eeea01f4ef9026",
 
      "css": "terminal",
 
      "code": 61640,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M811.5 124H61.5C27 124-1 152-1 186.5V811.5C-1 846 27 874 61.5 874H811.5C846 874 874 846 874 811.5V186.5C874 152 846 124 811.5 124ZM124 561.5L249 436.5 124 311.5 186.5 249 374 436.5 186.5 624 124 561.5ZM624 624H374V561.5H624V624Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "terminal"
 
      ]
 
    },
 
    {
 
      "uid": "b46a8a13a8eaa753be591fc8d4548c42",
 
      "css": "three-bars",
 
      "code": 61534,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M0 187.5V312.5H750V187.5H0ZM0 562.5H750V437.5H0V562.5ZM0 812.5H750V687.5H0V812.5Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "three-bars"
 
      ]
 
    },
 
    {
 
      "uid": "92dd16866a2367537f47bec5ee11484f",
 
      "css": "tools",
 
      "code": 59400,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M279.8 454.1C296.3 470.5 359.6 537.4 359.6 537.4L394.8 501.2 339.7 444.3 445.4 332.1C445.4 332.1 397.7 285.5 418.6 304.1 438.5 229.9 420.3 147.2 364 89 308.2 31.2 228.9 12.2 157.6 32.1L278.4 156.9 246.6 279.2 128.4 311.9 7.7 187.1C-11.5 260.8 6.8 342.7 62.7 400.6 121.4 461.2 205.9 479 279.8 454.1ZM682.4 575.4L536.8 719.3 777 968.1C796.6 988.4 822.4 998.6 848.1 998.6 873.8 998.6 899.5 988.4 919.2 968.1 958.6 927.5 958.6 861.7 919.2 821L682.4 575.4ZM999.7 158L846.7 0 395.9 466.1 450.9 523 181.1 801.9 119.4 834.9 32.3 977 54.5 1000 192 909.9 223.9 846.2 493.8 567.3 548.8 624.2 999.7 158Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "tools"
 
      ]
 
    },
 
    {
 
      "uid": "448bfec39235117b6a7e3e8d46aa184f",
 
      "css": "trashcan",
 
      "code": 59433,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M687.5 125H437.5C437.5 125 437.5 101.5 437.5 93.8 437.5 76.5 423.5 62.5 406.3 62.5S375 76.5 375 93.8C375 111 375 125 375 125H125C90.5 125 62.5 153 62.5 187.5V250C62.5 284.5 90.5 312.5 125 312.5V875C125 909.5 153 937.5 187.5 937.5H625C659.5 937.5 687.5 909.5 687.5 875V312.5C722 312.5 750 284.5 750 250V187.5C750 153 722 125 687.5 125ZM625 843.8C625 861 611 875 593.8 875H218.8C201.5 875 187.5 861 187.5 843.8V312.5H250V781.3C250 798.5 264 812.5 281.3 812.5S312.5 798.5 312.5 781.3L312.9 312.5H375V781.3C375 798.5 389 812.5 406.3 812.5S437.5 798.5 437.5 781.3L437.9 312.5H500.4L500 781.3C500 798.5 514 812.5 531.3 812.5S562.5 798.5 562.5 781.3V312.5H625V843.8ZM687.5 234.4C687.5 243 680.5 250 671.9 250H140.6C132 250 125 243 125 234.4V203.1C125 194.5 132 187.5 140.6 187.5H671.9C680.5 187.5 687.5 194.5 687.5 203.1V234.4Z",
 
        "width": 750
 
      },
 
      "search": [
 
        "trashcan"
 
      ]
 
    },
 
    {
 
      "uid": "ebbb1978bedc8e562ab0d462a832919f",
 
      "css": "triangle-down",
 
      "code": 59405,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M0 375L374.8 749.8 749.5 375H0Z",
 
        "width": 749.51171875
 
      },
 
      "search": [
 
        "triangle-down"
 
      ]
 
    },
 
    {
 
      "uid": "814cb1fe473de29d20b3d4e366ed434b",
 
      "css": "triangle-left",
 
      "code": 59406,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M0 499.9L374.8 874.6V125.1L0 499.9Z",
 
        "width": 374.755859375
 
      },
 
      "search": [
 
        "triangle-left"
 
      ]
 
    },
 
    {
 
      "uid": "d191392505c6a27bbeafd2d283a18d23",
 
      "css": "triangle-right",
 
      "code": 59407,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M0.1 125.2L374.8 500 0.1 874.8V125.2Z",
 
        "width": 374.8779296875
 
      },
 
      "search": [
 
        "triangle-right"
 
      ]
 
    },
 
    {
 
      "uid": "14bdc9ddaebbaecf5bad552a14cae637",
 
      "css": "triangle-up",
 
      "code": 59408,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M374.8 250L0 624.8H749.5L374.8 250Z",
 
        "width": 749.51171875
 
      },
 
      "search": [
 
        "triangle-up"
 
      ]
 
    },
 
    {
 
      "uid": "755e54899cab1bb101ce4c577701eb02",
 
      "css": "unfold",
 
      "code": 61497,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M375 375H500V187.5H625L437.5 0 250 187.5H375V375ZM562.5 250V312.5H781.3L656.3 437.5H218.8L93.8 312.5H312.5V250H0V312.5L156.3 468.8 0 625V687.5H312.5V625H93.8L218.8 500H656.3L781.3 625H562.5V687.5H875V625L718.8 468.8 875 312.5V250H562.5ZM500 562.5H375V750H250L437.5 937.5 625 750H500V562.5Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "unfold"
 
      ]
 
    },
 
    {
 
      "uid": "eff2b8831260c574cc9a1146ae1e143d",
 
      "css": "unmute",
 
      "code": 61626,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M125 375H0V625H125L375 812.5H437.5V187.5H375L125 375ZM525.9 411.6C513.7 399.4 493.9 399.4 481.7 411.6 469.5 423.8 469.5 443.6 481.7 455.8 506.1 480.2 506.1 519.8 481.7 544.2 469.5 556.4 469.5 576.2 481.7 588.4 493.9 600.6 513.7 600.6 525.9 588.4 574.7 539.6 574.7 460.4 525.9 411.6ZM614.3 323.2C602.1 311 582.3 311 570.1 323.2 557.9 335.4 557.9 355.2 570.1 367.4 643.3 440.6 643.3 559.4 570.1 632.6 557.9 644.8 557.9 664.6 570.1 676.8 582.3 689 602.1 689 614.3 676.8 711.9 579.1 711.9 420.9 614.3 323.2ZM702.7 234.8C690.5 222.6 670.7 222.6 658.5 234.8 646.3 247 646.3 266.8 658.5 279 780.5 401.1 780.5 598.9 658.5 721 646.3 733.2 646.3 753 658.5 765.2 670.7 777.4 690.5 777.4 702.7 765.2 849.1 618.7 849.1 381.3 702.7 234.8Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "unmute"
 
      ]
 
    },
 
    {
 
      "uid": "463d4a32f82362017b17bd75fbb2fa45",
 
      "css": "versions",
 
      "code": 61540,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M0 687.5H125V625H62.5V375H125V312.5H0V687.5ZM375 187.5V812.5H875V187.5H375ZM750 687.5H500V312.5H750V687.5ZM187.5 750H312.5V687.5H250V312.5H312.5V250H187.5V750Z",
 
        "width": 875
 
      },
 
      "search": [
 
        "versions"
 
      ]
 
    },
 
    {
 
      "uid": "2d6f44a29b7a67c9a9e4e8a6be30613c",
 
      "css": "x",
 
      "code": 61569,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M625 312.5L500 187.5 312.5 375 125 187.5 0 312.5 187.5 500 0 687.5 125 812.5 312.5 625 500 812.5 625 687.5 437.5 500 625 312.5Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "x"
 
      ]
 
    },
 
    {
 
      "uid": "d84a81ed0d99fb880328210e99e900a1",
 
      "css": "zap",
 
      "code": 9889,
 
      "src": "custom_icons",
 
      "selected": false,
 
      "svg": {
 
        "path": "M625 437.5H375L562.5 0 0 562.5H250L62.5 1000 625 437.5Z",
 
        "width": 625
 
      },
 
      "search": [
 
        "zap"
 
      ]
 
    },
 
    {
 
      "uid": "3025e53498f62fab0ad07b3b6b78c292",
 
      "css": "ruler",
 
      "code": 59409,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M125 583.3H166.7V541.7H125V583.3ZM166.7 166.7H125V208.3H166.7V166.7ZM166.7 916.7H125V958.3H41.7V1000H250V958.3H166.7V916.7ZM125 333.3H166.7V291.7H125V333.3ZM125 458.3H166.7V416.7H125V458.3ZM375 0V1000H916.7V0H375ZM708.3 916.7H458.3V83.3H708.3V916.7ZM833.3 916.7H750V833.3H833.3V916.7ZM833.3 791.7H750V708.3H833.3V791.7ZM833.3 666.7H750V583.3H833.3V666.7ZM833.3 541.7H750V458.3H833.3V541.7ZM833.3 416.7H750V333.3H833.3V416.7ZM833.3 291.7H750V208.3H833.3V291.7ZM833.3 166.7H750V83.3H833.3V166.7ZM41.7 41.7H125V83.3H166.7V41.7H250V0H41.7V41.7ZM125 833.3H166.7V791.7H125V833.3ZM125 708.3H166.7V666.7H125V708.3Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "ruler"
 
      ]
 
    },
 
    {
 
      "uid": "16b70cc2a5fbff7de2cbf73498e25b5c",
 
      "css": "keyhole-circled",
 
      "code": 59426,
 
      "src": "custom_icons",
 
      "selected": true,
 
      "svg": {
 
        "path": "M500 116.2C288 116.2 116.2 288 116.2 500 116.2 712 288 883.8 500 883.8 712 883.8 883.8 712 883.8 500 883.8 288 712 116.2 500 116.2ZM630.9 761.8H369.1L426 477.1C391.7 453.5 369.1 413.9 369.1 369.1 369.1 296.8 427.7 238.2 500 238.2 572.3 238.2 630.9 296.8 630.9 369.1 630.9 413.9 608.3 453.5 574 477.1L630.9 761.8Z",
 
        "width": 1000
 
      },
 
      "search": [
 
        "keyhole-circled"
 
      ]
 
    },
 
    {
 
      "uid": "d73eceadda1f594cec0536087539afbf",
 
      "css": "heart",
 
      "code": 59436,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "f3dc2d6d8fe9cf9ebff84dc260888cdf",
 
      "css": "heart-empty",
 
      "code": 59437,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "8b80d36d4ef43889db10bc1f0dc9a862",
 
      "css": "user",
 
      "code": 59438,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "31972e4e9d080eaa796290349ae6c1fd",
 
      "css": "users",
 
      "code": 59439,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "12f4ece88e46abd864e40b35e05b11cd",
 
      "css": "ok",
 
      "code": 59440,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "43ab845088317bd348dee1d975700c48",
 
      "css": "ok-circled",
 
      "code": 59402,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "5211af474d3a9848f67f945e2ccaf143",
 
      "css": "cancel",
 
      "code": 59434,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "0f4cae16f34ae243a6144c18a003f2d8",
 
      "css": "cancel-circled",
 
      "code": 59401,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "44e04715aecbca7f266a17d5a7863c68",
 
      "css": "plus",
 
      "code": 59471,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "4ba33d2607902cf690dd45df09774cb0",
 
      "css": "plus-circled",
 
      "code": 59468,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "861ab06e455e2de3232ebef67d60d708",
 
      "css": "minus",
 
      "code": 59472,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "eeadb020bb75d089b25d8424aabe19e0",
 
      "css": "minus-circled",
 
      "code": 59469,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "c1f1975c885aa9f3dad7810c53b82074",
 
      "css": "lock",
 
      "code": 59450,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "05376be04a27d5a46e855a233d6e8508",
 
      "css": "lock-open-alt",
 
      "code": 59451,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "c5fd349cbd3d23e4ade333789c29c729",
 
      "css": "eye",
 
      "code": 59474,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "7fd683b2c518ceb9e5fa6757f2276faa",
 
      "css": "eye-off",
 
      "code": 59473,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "3db5347bd219f3bce6025780f5d9ef45",
 
      "css": "tag",
 
      "code": 59452,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "a3f89e106175a5c5c4e9738870b12e55",
 
      "css": "tags",
 
      "code": 59453,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "f04a5d24e9e659145b966739c4fde82a",
 
      "css": "bookmark",
 
      "code": 59456,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "2f5ef6f6b7aaebc56458ab4e865beff5",
 
      "css": "bookmark-empty",
 
      "code": 59455,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "f5999a012fc3752386635ec02a858447",
 
      "css": "download-cloud",
 
      "code": 59411,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "de2fc7a5c986ab8c622f63455d7cf814",
 
      "css": "upload-cloud",
 
      "code": 59412,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "d35a1d35efeb784d1dc9ac18b9b6c2b6",
 
      "css": "pencil",
 
      "code": 59458,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "44fae3bfdd54754dc68ec50d37efea37",
 
      "css": "pencil-squared",
 
      "code": 59460,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "41087bc74d4b20b55059c60a33bf4008",
 
      "css": "edit",
 
      "code": 59461,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "1b5a5d7b7e3c71437f5a26befdd045ed",
 
      "css": "doc",
 
      "code": 59443,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "c8585e1e5b0467f28b70bce765d5840c",
 
      "css": "docs",
 
      "code": 59444,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "5408be43f7c42bccee419c6be53fdef5",
 
      "css": "doc-text",
 
      "code": 59445,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "178053298e3e5b03551d754d4b9acd8b",
 
      "css": "doc-inv",
 
      "code": 59446,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "c08a1cde48d96cba21d8c05fa7d7feb1",
 
      "css": "doc-text-inv",
 
      "code": 59420,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "edcd4022de8d8df266ef7c42d2658ca5",
 
      "css": "file-powerpoint",
 
      "code": 59447,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "f8aa663c489bcbd6e68ec8147dca841e",
 
      "css": "folder",
 
      "code": 59475,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "c95735c17a10af81448c7fed98a04546",
 
      "css": "folder-open",
 
      "code": 59462,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "b091a8bd0fdade174951f17d936f51e4",
 
      "css": "folder-empty",
 
      "code": 59476,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "6533bdc16ab201eb3f3b27ce989cab33",
 
      "css": "folder-open-empty",
 
      "code": 59463,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "04ff8d6592fe548b332b27ed87ce397a",
 
      "css": "box",
 
      "code": 59486,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "72b1277834cba5b7944b0a6cac7ddb0d",
 
      "css": "rss",
 
      "code": 59477,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "de5f0a564ccf8816325330e292e11533",
 
      "css": "rss-squared",
 
      "code": 59478,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "98687378abd1faf8f6af97c254eb6cd6",
 
      "css": "cog-alt",
 
      "code": 59442,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "5bb103cd29de77e0e06a52638527b575",
 
      "css": "wrench",
 
      "code": 59479,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "21b42d3c3e6be44c3cc3d73042faa216",
 
      "css": "sliders",
 
      "code": 59459,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "598a5f2bcf3521d1615de8e1881ccd17",
 
      "css": "clock",
 
      "code": 59449,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "98d9c83c1ee7c2c25af784b518c522c5",
 
      "css": "block",
 
      "code": 59470,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "d3b3f17bc3eb7cd809a07bbd4d178bee",
 
      "css": "resize-vertical",
 
      "code": 59415,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "ccddff8e8670dcd130e3cb55fdfc2fd0",
 
      "css": "down-open",
 
      "code": 59464,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "d870630ff8f81e6de3958ecaeac532f2",
 
      "css": "left-open",
 
      "code": 59465,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "399ef63b1e23ab1b761dfbb5591fa4da",
 
      "css": "right-open",
 
      "code": 59466,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "fe6697b391355dec12f3d86d6d490397",
 
      "css": "up-open",
 
      "code": 59467,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "a73c5deb486c8d66249811642e5d719a",
 
      "css": "arrows-cw",
 
      "code": 59448,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "6020aff067fc3c119cdd75daa5249220",
 
      "css": "exchange",
 
      "code": 59483,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "f4f0e849b805be1f6d76b65581cb3b8b",
 
      "css": "align-left",
 
      "code": 59457,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "61c242c9e2134d5864d7fdd57b3c9289",
 
      "css": "strike",
 
      "code": 59481,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "b429436ec5a518c78479d44ef18dbd60",
 
      "css": "paste",
 
      "code": 59424,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "9755f76110ae4d12ac5f9466c9152031",
 
      "css": "book",
 
      "code": 59454,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "130380e481a7defc690dfb24123a1f0c",
 
      "css": "circle",
 
      "code": 59485,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "422e07e5afb80258a9c4ed1706498f8a",
 
      "css": "circle-empty",
 
      "code": 59484,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "f4445feb55521283572ee88bc304f928",
 
      "css": "floppy",
 
      "code": 59480,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "bc4b94dd7a9a1dd2e02f9e4648062596",
 
      "css": "fork",
 
      "code": 59432,
 
      "src": "fontawesome"
 
    },
 
    {
 
      "uid": "56a21935a5d4d79b2e91ec00f760b369",
 
      "css": "sort",
 
      "code": 59482,
 
      "src": "fontawesome"
 
    }
 
  ]
 
}
 
\ No newline at end of file
kallithea/public/fontello/css/kallithea.css
Show inline comments
 
new file 100644
 
@font-face {
 
  font-family: 'kallithea';
 
  src: url('../font/kallithea.eot?42811111');
 
  src: url('../font/kallithea.eot?42811111#iefix') format('embedded-opentype'),
 
       url('../font/kallithea.woff?42811111') format('woff'),
 
       url('../font/kallithea.ttf?42811111') format('truetype'),
 
       url('../font/kallithea.svg?42811111#kallithea') format('svg');
 
  font-weight: normal;
 
  font-style: normal;
 
}
 
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
 
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
 
/*
 
@media screen and (-webkit-min-device-pixel-ratio:0) {
 
  @font-face {
 
    font-family: 'kallithea';
 
    src: url('../font/kallithea.svg?42811111#kallithea') format('svg');
 
  }
 
}
 
*/
 
 
 
 [class^="icon-"]:before, [class*=" icon-"]:before {
 
  font-family: "kallithea";
 
  font-style: normal;
 
  font-weight: normal;
 
  speak: none;
 
 
 
  display: inline-block;
 
  text-decoration: inherit;
 
  width: 1em;
 
  margin-right: .2em;
 
  text-align: center;
 
  /* opacity: .8; */
 
 
 
  /* For safety - reset parent styles, that can break glyph codes*/
 
  font-variant: normal;
 
  text-transform: none;
 
     
 
  /* fix buttons height, for twitter bootstrap */
 
  line-height: 1em;
 
 
 
  /* Animation center compensation - margins should be symmetric */
 
  /* remove if not needed */
 
  margin-left: .2em;
 
 
 
  /* you can be more comfortable with increased icons size */
 
  /* font-size: 120%; */
 
 
 
  /* Uncomment for 3D effect */
 
  /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
 
}
 
 
 
.icon-database:before { content: '\e800'; } /* '' */
 
.icon-file-submodule:before { content: '\e801'; } /* '' */
 
.icon-git-merge:before { content: '\e802'; } /* '' */
 
.icon-move-down:before { content: '\e803'; } /* '' */
 
.icon-move-up:before { content: '\e804'; } /* '' */
 
.icon-diff-modified:before { content: '\e805'; } /* '' */
 
.icon-diff-added:before { content: '\e806'; } /* '' */
 
.icon-diff-removed:before { content: '\e807'; } /* '' */
 
.icon-tools:before { content: '\e808'; } /* '' */
 
.icon-cancel-circled:before { content: '\e809'; } /* '' */
 
.icon-ok-circled:before { content: '\e80a'; } /* '' */
 
.icon-comment:before { content: '\e80b'; } /* '' */
 
.icon-comment-discussion:before { content: '\e80c'; } /* '' */
 
.icon-triangle-down:before { content: '\e80d'; } /* '' */
 
.icon-triangle-left:before { content: '\e80e'; } /* '' */
 
.icon-triangle-right:before { content: '\e80f'; } /* '' */
 
.icon-triangle-up:before { content: '\e810'; } /* '' */
 
.icon-ruler:before { content: '\e811'; } /* '' */
 
.icon-globe:before { content: '\e812'; } /* '' */
 
.icon-download-cloud:before { content: '\e813'; } /* '' */
 
.icon-upload-cloud:before { content: '\e814'; } /* '' */
 
.icon-graph:before { content: '\e815'; } /* '' */
 
.icon-file-zip:before { content: '\e816'; } /* '' */
 
.icon-resize-vertical:before { content: '\e817'; } /* '' */
 
.icon-file-code:before { content: '\e81a'; } /* '' */
 
.icon-clippy:before { content: '\e81b'; } /* '' */
 
.icon-doc-text-inv:before { content: '\e81c'; } /* '' */
 
.icon-diff:before { content: '\e81d'; } /* '' */
 
.icon-diff-ignored:before { content: '\e81e'; } /* '' */
 
.icon-diff-renamed:before { content: '\e81f'; } /* '' */
 
.icon-paste:before { content: '\e820'; } /* '' */
 
.icon-code:before { content: '\e821'; } /* '' */
 
.icon-keyhole-circled:before { content: '\e822'; } /* '' */
 
.icon-file-directory:before { content: '\e823'; } /* '' */
 
.icon-git-compare:before { content: '\e824'; } /* '' */
 
.icon-git-pull-request:before { content: '\e825'; } /* '' */
 
.icon-key:before { content: '\e826'; } /* '' */
 
.icon-repo-forked:before { content: '\e827'; } /* '' */
 
.icon-fork:before { content: '\e828'; } /* '' */
 
.icon-trashcan:before { content: '\e829'; } /* '' */
 
.icon-cancel:before { content: '\e82a'; } /* '' */
 
.icon-search:before { content: '\e82b'; } /* '' */
 
.icon-heart:before { content: '\e82c'; } /* '' */
 
.icon-heart-empty:before { content: '\e82d'; } /* '' */
 
.icon-user:before { content: '\e82e'; } /* '' */
 
.icon-users:before { content: '\e82f'; } /* '' */
 
.icon-ok:before { content: '\e830'; } /* '' */
 
.icon-gear:before { content: '\e831'; } /* '' */
 
.icon-cog-alt:before { content: '\e832'; } /* '' */
 
.icon-doc:before { content: '\e833'; } /* '' */
 
.icon-docs:before { content: '\e834'; } /* '' */
 
.icon-doc-text:before { content: '\e835'; } /* '' */
 
.icon-doc-inv:before { content: '\e836'; } /* '' */
 
.icon-file-powerpoint:before { content: '\e837'; } /* '' */
 
.icon-arrows-cw:before { content: '\e838'; } /* '' */
 
.icon-clock:before { content: '\e839'; } /* '' */
 
.icon-lock:before { content: '\e83a'; } /* '' */
 
.icon-lock-open-alt:before { content: '\e83b'; } /* '' */
 
.icon-tag:before { content: '\e83c'; } /* '' */
 
.icon-tags:before { content: '\e83d'; } /* '' */
 
.icon-book:before { content: '\e83e'; } /* '' */
 
.icon-bookmark-empty:before { content: '\e83f'; } /* '' */
 
.icon-bookmark:before { content: '\e840'; } /* '' */
 
.icon-align-left:before { content: '\e841'; } /* '' */
 
.icon-pencil:before { content: '\e842'; } /* '' */
 
.icon-sliders:before { content: '\e843'; } /* '' */
 
.icon-pencil-squared:before { content: '\e844'; } /* '' */
 
.icon-edit:before { content: '\e845'; } /* '' */
 
.icon-folder-open:before { content: '\e846'; } /* '' */
 
.icon-folder-open-empty:before { content: '\e847'; } /* '' */
 
.icon-down-open:before { content: '\e848'; } /* '' */
 
.icon-left-open:before { content: '\e849'; } /* '' */
 
.icon-right-open:before { content: '\e84a'; } /* '' */
 
.icon-up-open:before { content: '\e84b'; } /* '' */
 
.icon-plus-circled:before { content: '\e84c'; } /* '' */
 
.icon-minus-circled:before { content: '\e84d'; } /* '' */
 
.icon-block:before { content: '\e84e'; } /* '' */
 
.icon-plus:before { content: '\e84f'; } /* '' */
 
.icon-minus:before { content: '\e850'; } /* '' */
 
.icon-eye-off:before { content: '\e851'; } /* '' */
 
.icon-eye:before { content: '\e852'; } /* '' */
 
.icon-folder:before { content: '\e853'; } /* '' */
 
.icon-folder-empty:before { content: '\e854'; } /* '' */
 
.icon-rss:before { content: '\e855'; } /* '' */
 
.icon-rss-squared:before { content: '\e856'; } /* '' */
 
.icon-wrench:before { content: '\e857'; } /* '' */
 
.icon-floppy:before { content: '\e858'; } /* '' */
 
.icon-strike:before { content: '\e859'; } /* '' */
 
.icon-sort:before { content: '\e85a'; } /* '' */
 
.icon-exchange:before { content: '\e85b'; } /* '' */
 
.icon-circle-empty:before { content: '\e85c'; } /* '' */
 
.icon-circle:before { content: '\e85d'; } /* '' */
 
.icon-box:before { content: '\e85e'; } /* '' */
 
\ No newline at end of file
kallithea/public/fontello/font/kallithea.eot
Show inline comments
 
new file 100644
 
binary diff not shown
kallithea/public/fontello/font/kallithea.svg
Show inline comments
 
new file 100644
 
<?xml version="1.0" standalone="no"?>
 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
 
<svg xmlns="http://www.w3.org/2000/svg">
 
<metadata>Copyright (C) 2014 by original authors @ fontello.com</metadata>
 
<defs>
 
<font id="kallithea" horiz-adv-x="1000" >
 
<font-face font-family="kallithea" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
 
<missing-glyph horiz-adv-x="1000" />
 
<glyph glyph-name="database" unicode="&#xe800;" d="m375-88c-207 0-375 56-375 126 0 37 0 79 0 125 0 10 5 21 13 31 42-54 187-94 362-94s320 40 362 94c8-10 13-21 13-31 0-37 0-75 0-125 0-70-168-126-375-126z m0 251c-207 0-375 56-375 125 0 37 0 78 0 125 0 6 3 13 6 19l0 0c2 4 4 8 7 12 42-54 187-94 362-94s320 40 362 94c3-4 5-8 7-12l0 0c4-6 6-13 6-19 0-37 0-75 0-125 0-69-168-125-375-125z m0 250c-207 0-375 56-375 125 0 19 0 40 0 62 0 20 0 41 0 63 0 69 168 125 375 125 207 0 375-56 375-125 0-20 0-41 0-63 0-19 0-39 0-62 0-69-168-125-375-125z m0 312c-138 0-250-28-250-62s112-63 250-63 250 28 250 63-112 62-250 62z" horiz-adv-x="750" />
 
<glyph glyph-name="file-submodule" unicode="&#xe801;" d="m813 350c-32 0-188 0-188 0 0 31-31 63-62 63s-94 0-125 0-63-32-63-63 0-312 0-312h500s0 218 0 250-31 62-62 62z m-250-62h-125s0 16 0 31 14 31 31 31 47 0 62 0 32-15 32-31 0-31 0-31z m250 312c-32 0-329 0-344 0s-31 17-31 31 0 0 0 32-32 62-63 62-281 0-312 0-63-31-63-62 0-625 0-625h313s0 343 0 375 31 62 62 62 219 0 250 0 63-31 63-62h187s0 93 0 125-31 62-62 62z m-438 0h-312s0 16 0 31 15 32 31 32 234 0 250 0 31-17 31-32 0-31 0-31z" horiz-adv-x="875" />
 
<glyph glyph-name="git-merge" unicode="&#xe802;" d="m625 413c-46 0-86-26-108-64-6 1-11 1-17 1-128 0-249 98-294 218 27 23 44 57 44 95 0 69-56 125-125 125s-125-56-125-125c0-47 25-86 63-108v-410c-38-21-63-61-63-107 0-70 56-126 125-126s125 56 125 126c0 46-25 86-62 107v225c82-87 195-145 312-145 6 0 11 0 17 1 22-38 62-63 108-63 69 0 125 56 125 125 0 69-56 125-125 125z m-500-438c-34 0-62 28-62 63 0 34 28 62 62 62 35 0 63-28 63-62 0-35-28-63-63-63z m0 625c-34 0-62 28-62 63s28 62 62 62c35 0 63-28 63-62s-28-63-63-63z m500-375c-34 0-62 28-62 63 0 34 28 62 62 62 35 0 63-28 63-62 0-35-28-63-63-63z" horiz-adv-x="750" />
 
<glyph glyph-name="move-down" unicode="&#xe803;" d="m625 538h-187v312h-250v-312h-188l313-375 312 375z m-625-688h625v188h-625v-188z" horiz-adv-x="625" />
 
<glyph glyph-name="move-up" unicode="&#xe804;" d="m0 163h188v-313h250v313h187l-312 375-313-375z m0 687v-187h625v187h-625z" horiz-adv-x="625" />
 
<glyph glyph-name="diff-modified" unicode="&#xe805;" d="m813 788h-750c-32 0-63-32-63-63v-750c0-31 31-63 63-63h750c31 0 62 32 62 63v750c0 31-31 63-62 63z m-63-719c0-16-17-31-31-31h-563c-17 0-31 11-31 31v562c0 16 16 32 31 32h563c14 0 31-16 31-32v-562z m-312 406c-70 0-125-56-125-125s55-125 125-125 125 56 125 125-56 125-125 125z" horiz-adv-x="875" />
 
<glyph glyph-name="diff-added" unicode="&#xe806;" d="m500 538h-125v-125h-125v-125h125v-125h125v125h125v125h-125v125z m313 250c-32 0-719 0-750 0s-63-32-63-63 0-719 0-750 31-63 63-63 718 0 750 0 62 32 62 63 0 719 0 750-31 63-62 63z m-63-719c0-16-17-31-31-31s-545 0-563 0-31 11-31 31c0 15 0 547 0 562s16 32 31 32 548 0 563 0 31-16 31-32 0-547 0-562z" horiz-adv-x="875" />
 
<glyph glyph-name="diff-removed" unicode="&#xe807;" d="m813 788h-750c-32 0-63-32-63-63v-750c0-31 31-63 63-63h750c31 0 62 32 62 63v750c0 31-31 63-62 63z m-63-719c0-16-17-31-31-31h-563c-17 0-31 11-31 31v562c0 16 16 32 31 32h563c14 0 31-16 31-32v-562z m-500 219h375v125h-375v-125z" horiz-adv-x="875" />
 
<glyph glyph-name="tools" unicode="&#xe808;" d="m280 396c16-16 80-83 80-83l35 36-55 57 105 112c0 0-47 47-26 28 20 74 1 157-55 215-56 58-135 77-206 57l120-125-31-122-119-33-120 125c-20-74-1-156 55-214 58-60 143-78 217-53z m402-121l-145-144 240-249c20-20 45-31 71-31 26 0 52 11 71 31 40 40 40 106 0 147l-237 246z m318 417l-153 158-451-466 55-57-270-279-62-33-87-142 23-23 137 90 32 64 270 279 55-57 451 466z" horiz-adv-x="1000" />
 
<glyph glyph-name="cancel-circled" unicode="&#xe809;" d="m641 224q0 14-10 25l-101 101 101 101q10 11 10 25 0 15-10 26l-51 50q-10 11-25 11-15 0-25-11l-101-101-101 101q-11 11-26 11-15 0-25-11l-50-50q-11-11-11-26 0-14 11-25l101-101-101-101q-11-11-11-25 0-15 11-26l50-50q10-11 25-11 15 0 26 11l101 101 101-101q10-11 25-11 15 0 25 11l51 50q10 11 10 26z m216 126q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
 
<glyph glyph-name="ok-circled" unicode="&#xe80a;" d="m717 440q0 16-11 26l-50 50q-11 11-25 11t-26-11l-227-227-126 126q-11 11-25 11t-26-11l-50-50q-10-10-10-26 0-15 10-25l202-202q10-10 25-10 15 0 25 10l303 303q11 10 11 25z m140-90q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
 
<glyph glyph-name="comment" unicode="&#xe80b;" d="m750 725h-625c-60 0-125-62-125-125v-375c0-125 125-125 125-125h63v-250l250 250c0 0 252 0 312 0s125 66 125 125v375c0 61-62 125-125 125z" horiz-adv-x="875" />
 
<glyph glyph-name="comment-discussion" unicode="&#xe80c;" d="m250 350c0 63 0 188 0 188s-156 0-187 0-63-32-63-63 0-281 0-312 31-63 63-63 62 0 62 0v-188l190 188s158 0 187 0 61 31 61 63 0 62 0 62-125 0-188 0-125 63-125 125z m563 375c-32 0-407 0-438 0s-62-31-62-62 0-282 0-313 31-62 62-62 186 0 186 0l189-188v188s31 0 63 0 62 31 62 62 0 281 0 313-31 62-62 62z" horiz-adv-x="875" />
 
<glyph glyph-name="triangle-down" unicode="&#xe80d;" d="m0 475l375-375 375 375h-750z" horiz-adv-x="749.5" />
 
<glyph glyph-name="triangle-left" unicode="&#xe80e;" d="m0 350l375-375v750l-375-375z" horiz-adv-x="374.8" />
 
<glyph glyph-name="triangle-right" unicode="&#xe80f;" d="m0 725l375-375-375-375v750z" horiz-adv-x="374.9" />
 
<glyph glyph-name="triangle-up" unicode="&#xe810;" d="m375 600l-375-375h750l-375 375z" horiz-adv-x="749.5" />
 
<glyph glyph-name="ruler" unicode="&#xe811;" d="m125 267h42v41h-42v-41z m42 416h-42v-41h42v41z m0-750h-42v-41h-83v-42h208v42h-83v41z m-42 584h42v41h-42v-41z m0-125h42v41h-42v-41z m250 458v-1000h542v1000h-542z m333-917h-250v834h250v-834z m125 0h-83v84h83v-84z m0 125h-83v84h83v-84z m0 125h-83v84h83v-84z m0 125h-83v84h83v-84z m0 125h-83v84h83v-84z m0 125h-83v84h83v-84z m0 125h-83v84h83v-84z m-791 125h83v-41h42v41h83v42h-208v-42z m83-791h42v41h-42v-41z m0 125h42v41h-42v-41z" horiz-adv-x="1000" />
 
<glyph glyph-name="globe" unicode="&#xe812;" d="m500 725c-207 0-375-168-375-375s168-375 375-375c25 0 50 2 74 7-10 5-11 40-1 59 11 22 44 78 11 97s-24 27-44 48-12 25-13 31c-5 19 19 47 20 50s1 14 1 17-15 13-19 13-5-6-10-6-28 13-32 17-7 12-14 19-7 1-18 5-43 17-68 27-28 24-28 35-15 25-22 35c-7 11-9 25-11 22s13-42 10-43-8 11-15 20 8 5-16 51 8 70 9 94 20-9 10 6 1 48-6 60-49-14-49-14c1 12 36 31 62 49s41 4 62-2 22-5 15 2 3 10 19 7 20-22 45-20 2-5 6-11-4-6-20-17 0-10 29-31 20 14 17 29 21 3 21 3c17-11 14 0 27-4s47-34 47-34c-43-24-16-26-8-32s-16-16-16-16c-9 9-10 0-16-3s0-12 0-12c-31-5-24-37-23-45s-20-19-25-30 13-35 4-36-19 36-71 22c-15-4-49-22-31-58s49 10 59 5-3-28-1-29 29-1 31-32 40-29 49-29 36 23 40 24 20 14 56-6 53-17 65-25 3-26 15-31 56 2 68-17-47-112-65-123-27-33-45-48-44-34-68-48c-22-13-26-36-35-43 168 37 293 187 293 366 0 207-168 375-375 375z m88-352c-5-1-16-11-42 5s-44 12-46 15c0 0-2 6 9 7 24 2 53-22 60-22s9 6 21 3c12-4 3-6-2-8z m-123 315c-2 2 2 4 5 7 2 3 1 6 3 8 5 6 32 13 27-2-5-15-31-16-35-13z m66-48c-9 0-31 3-27 7 16 15-6 19-19 21s-19 8-12 9 33-1 37-4 29-14 30-20 0-13-9-13z m79 3c-7-6-44 21-51 27-31 26-47 17-54 22-6 4-4 10 6 19s38-3 54-5 35-14 35-29c0-15 18-28 10-34z" horiz-adv-x="1000" />
 
<glyph glyph-name="download-cloud" unicode="&#xe813;" d="m714 332q0 8-5 13t-13 5h-125v196q0 8-5 13t-12 5h-108q-7 0-12-5t-5-13v-196h-125q-8 0-13-5t-5-13q0-8 5-13l196-196q5-5 13-5t13 5l196 196q5 6 5 13z m357-125q0-89-62-151t-152-63h-607q-103 0-177 73t-73 177q0 72 39 134t105 92q-1 17-1 24 0 118 84 202t202 84q87 0 159-49t105-129q40 35 93 35 59 0 101-42t42-101q0-43-23-77 72-17 119-76t46-133z" horiz-adv-x="1071.4" />
 
<glyph glyph-name="upload-cloud" unicode="&#xe814;" d="m714 368q0 8-5 13l-196 196q-5 5-13 5t-13-5l-196-196q-5-6-5-13 0-8 5-13t13-5h125v-196q0-8 5-13t12-5h108q7 0 12 5t5 13v196h125q8 0 13 5t5 13z m357-161q0-89-62-151t-152-63h-607q-103 0-177 73t-73 177q0 72 39 134t105 92q-1 17-1 24 0 118 84 202t202 84q87 0 159-49t105-129q40 35 93 35 59 0 101-42t42-101q0-43-23-77 72-17 119-76t46-133z" horiz-adv-x="1071.4" />
 
<glyph glyph-name="graph" unicode="&#xe815;" d="m688 600h-188v-625h188v625z m250-187h-188v-438h188v438z m-875-501v126h62v62h-62v125h62v63h-62v125h62v62h-62v125h62v63h-62v125h62v62h-125v-1000h1000v62h-937z m375 376h-188v-313h188v313z" horiz-adv-x="1000" />
 
<glyph glyph-name="file-zip" unicode="&#xe816;" d="m313 288v62h-63v-62h63z m0 125v62h-63v-62h63z m0 125v62h-63v-62h63z m-125-63h62v63h-62v-63z m375 313h-563v-876h750v688l-187 188z m125-813h-625v750h187v-62h63v62h187l188-187v-563z m-500 625h62v63h-62v-63z m0-250h62v63h-62v-63z m0-125l-63-62v-125h250v125l-62 62h-63v63h-62v-63z m125-62v-63h-125v63h125z" horiz-adv-x="750" />
 
<glyph glyph-name="resize-vertical" unicode="&#xe817;" d="m393 671q0-14-11-25t-25-10h-71v-572h71q15 0 25-10t11-25-11-26l-143-142q-10-11-25-11t-25 11l-143 142q-10 11-10 26t10 25 25 10h72v572h-72q-14 0-25 10t-10 25 10 26l143 142q11 11 25 11t25-11l143-142q11-11 11-26z" horiz-adv-x="428.6" />
 
<glyph glyph-name="file-code" unicode="&#xe81a;" d="m281 475l-156-156 156-156 63 62-94 94 94 94-63 62z m125-62l94-94-94-94 63-62 156 156-156 156-63-62z m157 375h-563v-876h750v688l-187 188z m125-813h-625v750h437l188-187v-563z" horiz-adv-x="750" />
 
<glyph glyph-name="clippy" unicode="&#xe81b;" d="m688-25h-625v563h625v-188h62v313c0 34-28 62-62 62h-188c0 69-56 125-125 125s-125-56-125-125h-187c-35 0-63-28-63-62v-688c0-34 28-63 63-63h625c34 0 62 29 62 63v125h-62v-125z m-500 688c28 0 28 0 62 0s63 28 63 62 28 63 62 63 63-29 63-63 31-62 62-62 32 0 63 0 62-29 62-63h-500c0 38 27 63 63 63z m-63-500h125v62h-125v-62z m438 125v125l-250-188 250-187v125h312v125h-312z m-438-250h188v62h-188v-62z m313 437h-313v-62h313v62z m-188-125h-125v-62h125v62z" horiz-adv-x="875" />
 
<glyph glyph-name="doc-text-inv" unicode="&#xe81c;" d="m819 584q8-7 16-20h-264v264q13-8 21-16z m-265-91h303v-589q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h446v-304q0-22 16-38t38-15z m89-411v36q0 8-5 13t-13 5h-393q-8 0-13-5t-5-13v-36q0-8 5-13t13-5h393q8 0 13 5t5 13z m0 143v36q0 7-5 12t-13 5h-393q-8 0-13-5t-5-12v-36q0-8 5-13t13-5h393q8 0 13 5t5 13z m0 143v35q0 8-5 13t-13 5h-393q-8 0-13-5t-5-13v-35q0-8 5-13t13-5h393q8 0 13 5t5 13z" horiz-adv-x="857.1" />
 
<glyph glyph-name="diff" unicode="&#xe81d;" d="m438 600h-125v-125h-125v-125h125v-125h125v125h125v125h-125v125z m-250-625h375v125h-375v-125z m437 875h-500v-62h469l219-219v-594h62v625l-250 250z m-625-125v-875h750v688l-187 187h-563z m688-813h-625v751h468l157-157v-594z" horiz-adv-x="875" />
 
<glyph glyph-name="diff-ignored" unicode="&#xe81e;" d="m813 788h-750c-32 0-63-32-63-63v-750c0-31 31-63 63-63h750c31 0 62 32 62 63v750c0 31-31 63-62 63z m-63-719c0-16-17-31-31-31h-563c-17 0-31 11-31 31v562c0 16 16 32 31 32h563c14 0 31-16 31-32v-562z m-500 189v-95h96l279 279v96h-96l-279-280z" horiz-adv-x="875" />
 
<glyph glyph-name="diff-renamed" unicode="&#xe81f;" d="m813 788h-750c-32 0-63-32-63-63v-750c0-31 31-63 63-63h750c31 0 62 32 62 63v750c0 31-31 63-62 63z m-63-719c0-16-17-31-31-31h-563c-17 0-31 11-31 31v562c0 16 16 32 31 32h563c14 0 31-16 31-32v-562z m-312 344h-188v-125h188v-125l250 187-250 188v-125z" horiz-adv-x="875" />
 
<glyph glyph-name="paste" unicode="&#xe820;" d="m429-79h500v358h-233q-22 0-38 15t-15 38v232h-214v-643z m142 804v36q0 7-5 12t-12 6h-393q-7 0-13-6t-5-12v-36q0-7 5-13t13-5h393q7 0 12 5t5 13z m143-375h167l-167 167v-167z m286-71v-375q0-23-16-38t-38-16h-535q-23 0-38 16t-16 38v89h-303q-23 0-38 16t-16 37v750q0 23 16 38t38 16h607q22 0 38-16t15-38v-183q12-7 20-15l228-228q16-16 27-42t11-50z" horiz-adv-x="1000" />
 
<glyph glyph-name="code" unicode="&#xe821;" d="m594 663l-94-94 219-219-219-219 94-93 281 312-281 313z m-313 0l-281-313 281-312 94 93-219 219 219 219-94 94z" horiz-adv-x="875" />
 
<glyph glyph-name="keyhole-circled" unicode="&#xe822;" d="m500 734c-212 0-384-172-384-384 0-212 172-384 384-384 212 0 384 172 384 384 0 212-172 384-384 384z m131-646h-262l57 285c-34 24-57 63-57 108 0 72 59 131 131 131 72 0 131-59 131-131 0-45-23-84-57-108l57-285z" horiz-adv-x="1000" />
 
<glyph glyph-name="file-directory" unicode="&#xe823;" d="m813 663c-32 0-329 0-344 0s-31 15-31 31 0 0 0 31-32 63-63 63-281 0-312 0-63-32-63-63 0-687 0-687h875s0 531 0 562-31 63-62 63z m-438 0h-312s0 14 0 31 15 31 31 31 235 0 250 0 31-15 31-31 0-31 0-31z" horiz-adv-x="875" />
 
<glyph glyph-name="git-compare" unicode="&#xe824;" d="m813 145s0 299 0 393-94 187-188 187c-62 0-62 0-62 0v125l-188-187 188-188v125s31 0 62 0 63-31 63-62 0-393 0-393c-38-22-63-62-63-107 0-70 56-126 125-126s125 56 125 126c0 45-25 85-62 107z m-63-170c-34 0-62 28-62 63s28 62 62 62 63-28 63-62-29-63-63-63z m-437 125s-32 0-63 0-62 31-62 63 0 392 0 392c37 22 62 62 62 108 0 69-56 125-125 125s-125-56-125-125c0-46 25-86 63-108 0 0 0-299 0-392s93-188 187-188c63 0 63 0 63 0v-125l187 188-187 187v-125z m-188 500c-34 0-62 28-62 63s28 62 62 62 63-28 63-62-29-63-63-63z" horiz-adv-x="875" />
 
<glyph glyph-name="git-pull-request" unicode="&#xe825;" d="m688 145s0 299 0 393-94 187-188 187c-62 0-62 0-62 0v125l-188-187 188-188v125s31 0 62 0 63-31 63-62 0-393 0-393c-38-22-63-62-63-107 0-70 56-126 125-126s125 56 125 126c0 45-25 85-62 107z m-63-170c-34 0-62 28-62 63s28 62 62 62 63-28 63-62-29-63-63-63z m-500 813c-69 0-125-56-125-125 0-46 25-86 63-108v-409c-38-22-63-62-63-107 0-70 56-126 125-126s125 56 125 126c0 45-25 85-62 107v409c37 22 62 62 62 108 0 69-56 125-125 125z m0-813c-34 0-62 28-62 63s28 62 62 62 63-28 63-62-29-63-63-63z m0 625c-34 0-62 28-62 63s28 62 62 62 63-28 63-62-29-63-63-63z" horiz-adv-x="750" />
 
<glyph glyph-name="key" unicode="&#xe826;" d="m626 788c-138 0-250-112-250-250 0-19 2-38 6-56l-382-382v-62l63-63h125l62 63v62h63v63h62v62h125l69 69c18-4 37-6 57-6 138 0 250 112 250 250s-112 250-250 250z m-251-438l-312-312v62l312 313v-63z m313 188c-35 0-63 28-63 62 0 35 28 63 63 63s62-28 62-63c0-34-28-62-62-62z" horiz-adv-x="875.9" />
 
<glyph glyph-name="repo-forked" unicode="&#xe827;" d="m750 725c0 69-56 125-125 125s-125-56-125-125c0-46 25-87 63-108v-104l-188-207-187 207v104c37 21 62 61 62 108 0 69-56 125-125 125s-125-56-125-125c0-46 25-87 63-108v-153l250-275v-107c-38-21-63-61-63-108 0-69 56-125 125-125s125 56 125 125c0 46-25 87-62 108v107l250 275v153c37 21 62 61 62 108z m-625 62c33 0 61-28 61-61s-28-61-61-61-60 28-60 61 27 61 60 61z m250-871c-33 0-60 28-60 61s27 61 60 61 61-28 61-61-28-61-61-61z m250 871c33 0 61-28 61-61s-28-61-61-61-60 28-60 61 27 61 60 61z" horiz-adv-x="750" />
 
<glyph glyph-name="fork" unicode="&#xe828;" d="m161 29q0 22-16 38t-38 15-38-15-15-38 15-38 38-16 38 16 16 38z m0 642q0 23-16 38t-38 16-38-16-15-38 15-38 38-15 38 15 16 38z m357-71q0 22-16 38t-38 16-38-16-15-38 15-38 38-16 38 16 16 38z m53 0q0-29-14-54t-39-39q-1-160-126-231-38-21-114-45-71-22-94-39t-23-56v-15q24-14 39-39t14-53q0-45-31-76t-76-32-76 32-31 76q0 29 15 53t39 39v458q-25 14-39 39t-15 53q0 45 31 76t76 32 76-32 31-76q0-29-14-53t-39-39v-278q30 15 86 32 30 10 49 17t39 17 33 22 22 29 16 38 5 51q-25 14-39 39t-15 54q0 45 31 76t76 31 76-31 31-76z" horiz-adv-x="571.4" />
 
<glyph glyph-name="trashcan" unicode="&#xe829;" d="m688 725h-250c0 0 0 24 0 31 0 18-14 32-32 32s-31-14-31-32c0-17 0-31 0-31h-250c-34 0-62-28-62-62v-63c0-34 28-62 62-62v-563c0-35 28-63 63-63h437c35 0 63 28 63 63v563c34 0 62 28 62 62v63c0 34-28 62-62 62z m-63-719c0-17-14-31-31-31h-375c-17 0-31 14-31 31v532h62v-469c0-17 14-31 31-31s32 14 32 31l0 469h62v-469c0-17 14-31 31-31s32 14 32 31l0 469h62l0-469c0-17 14-31 31-31s32 14 32 31v469h62v-532z m63 610c0-9-7-16-16-16h-531c-9 0-16 7-16 16v31c0 9 7 16 16 16h531c9 0 16-7 16-16v-31z" horiz-adv-x="750" />
 
<glyph glyph-name="cancel" unicode="&#xe82a;" d="m724 112q0-22-15-38l-76-76q-16-15-38-15t-38 15l-164 165-164-165q-16-15-38-15t-38 15l-76 76q-16 16-16 38t16 38l164 164-164 164q-16 16-16 38t16 38l76 76q16 16 38 16t38-16l164-164 164 164q16 16 38 16t38-16l76-76q15-15 15-38t-15-38l-164-164 164-164q15-15 15-38z" horiz-adv-x="785.7" />
 
<glyph glyph-name="search" unicode="&#xe82b;" d="m938 38l-244 243c35 57 56 123 56 194 0 207-168 375-375 375-207 0-375-168-375-375 0-207 168-375 375-375 71 0 138 21 194 56l244-244c17-17 45-17 62 0l63 63c17 17 17 45 0 63z m-563 187c-138 0-250 112-250 250s112 250 250 250 250-112 250-250-112-250-250-250z" horiz-adv-x="950.3" />
 
<glyph glyph-name="heart" unicode="&#xe82c;" d="m500-79q-14 0-25 10l-348 336q-5 5-15 15t-31 36-38 55-30 67-13 77q0 123 71 192t196 70q34 0 70-12t67-33 54-38 42-38q20 20 42 38t54 38 67 33 70 12q125 0 196-70t71-192q0-123-128-251l-347-335q-10-10-25-10z" horiz-adv-x="1000" />
 
<glyph glyph-name="heart-empty" unicode="&#xe82d;" d="m929 517q0 46-12 80t-31 55-46 33-52 18-55 4-62-14-62-36-48-40-34-34q-10-13-27-13t-27 13q-14 15-34 34t-48 40-62 36-62 14-55-4-52-18-46-33-31-55-12-80q0-93 105-198l324-312 324 312q105 105 105 198z m71 0q0-123-128-251l-347-335q-10-10-25-10t-25 10l-348 336q-5 5-15 15t-31 36-38 55-30 67-13 77q0 123 71 192t196 70q34 0 70-12t67-33 54-38 42-38q20 20 42 38t54 38 67 33 70 12q125 0 196-70t71-192z" horiz-adv-x="1000" />
 
<glyph glyph-name="user" unicode="&#xe82e;" d="m786 66q0-67-41-106t-108-39h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q5 0 24-12t41-27 60-27 75-12 74 12 61 27 41 27 24 12q34 0 62-11t48-30 34-45 24-55 15-60 8-61 2-58z m-179 498q0-88-63-151t-151-63-152 63-62 151 62 152 152 63 151-63 63-152z" horiz-adv-x="785.7" />
 
<glyph glyph-name="users" unicode="&#xe82f;" d="m331 350q-90-3-148-71h-75q-45 0-77 22t-31 66q0 197 69 197 4 0 25-11t54-24 66-12q38 0 75 13-3-21-3-37 0-78 45-143z m598-356q0-66-41-105t-108-39h-488q-68 0-108 39t-41 105q0 30 2 58t8 61 14 61 24 54 35 45 48 30 62 11q6 0 24-12t41-26 59-27 76-12 75 12 60 27 41 26 23 12q35 0 63-11t47-30 35-45 24-54 15-61 8-61 2-58z m-572 713q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m393-214q0-89-63-152t-151-62-152 62-63 152 63 151 152 63 151-63 63-151z m321-126q0-43-31-66t-77-22h-75q-57 68-147 71 45 65 45 143 0 16-3 37 37-13 74-13 33 0 67 12t54 24 24 11q69 0 69-197z m-71 340q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z" horiz-adv-x="1071.4" />
 
<glyph glyph-name="ok" unicode="&#xe830;" d="m932 534q0-22-15-38l-404-404-76-76q-16-15-38-15t-38 15l-76 76-202 202q-15 16-15 38t15 38l76 76q16 16 38 16t38-16l164-165 366 367q16 16 38 16t38-16l76-76q15-16 15-38z" horiz-adv-x="1000" />
 
<glyph glyph-name="gear" unicode="&#xe831;" d="m437 508c-87 0-158-71-158-158 0-87 71-158 158-158 88 0 158 71 158 158 0 87-70 158-158 158z m318-249l-29-68 51-100 7-14-71-70-116 55-68-29-35-106-5-15h-99l-43 121-69 28-100-50-13-7-71 70 55 116-28 69-107 35-14 4v100l121 43 28 68-51 100-7 14 71 70 116-55 68 29 35 106 5 15h99l43-121 69-28 100 50 13 7 71-70-55-116 28-69 107-34 14-5v-99l-120-44z" horiz-adv-x="875" />
 
<glyph glyph-name="cog-alt" unicode="&#xe832;" d="m500 350q0 59-42 101t-101 42-101-42-42-101 42-101 101-42 101 42 42 101z m429-286q0 29-22 51t-50 21-50-21-21-51q0-29 21-50t50-21 51 21 21 50z m0 572q0 29-22 50t-50 21-50-21-21-50q0-30 21-51t50-21 51 21 21 51z m-215-235v-103q0-6-4-11t-9-6l-86-14q-6-19-18-42 19-27 50-64 4-6 4-11 0-7-4-11-13-17-46-50t-44-33q-6 0-11 4l-64 50q-21-11-43-17-6-60-13-87-4-13-17-13h-104q-6 0-11 4t-5 10l-13 85q-19 6-42 18l-66-50q-4-4-11-4-6 0-12 4-80 75-80 90 0 5 4 10 5 8 23 30t26 34q-13 24-20 46l-85 13q-5 1-9 5t-4 11v103q0 6 4 11t9 6l86 14q7 19 18 42-19 27-50 64-4 6-4 11 0 7 4 11 12 17 46 50t44 33q6 0 12-4l64-50q19 10 43 18 6 60 13 86 3 13 16 13h104q6 0 11-4t6-10l13-85q19-6 41-17l66 49q5 4 11 4 7 0 12-4 81-75 81-90 0-5-4-10-7-9-24-30t-25-34q13-27 19-46l85-12q5-2 9-6t4-11z m357-298v-78q0-9-83-17-6-15-16-29 28-63 28-77 0-2-2-4-68-40-69-40-5 0-26 27t-29 37q-11-1-17-1t-17 1q-7-11-29-37t-25-27q-1 0-69 40-3 2-3 4 0 14 29 77-10 14-17 29-83 8-83 17v78q0 9 83 18 7 16 17 29-29 63-29 77 0 2 3 4 2 1 19 11t33 19 17 9q4 0 25-26t29-38q12 1 17 1t17-1q28 40 51 63l4 1q2 0 69-39 2-2 2-4 0-14-28-77 9-13 16-29 83-9 83-18z m0 572v-78q0-9-83-18-6-15-16-29 28-63 28-77 0-2-2-4-68-39-69-39-5 0-26 26t-29 38q-11-1-17-1t-17 1q-7-12-29-38t-25-26q-1 0-69 39-3 2-3 4 0 14 29 77-10 14-17 29-83 9-83 18v78q0 9 83 17 7 16 17 29-29 63-29 77 0 2 3 4 2 1 19 11t33 19 17 9q4 0 25-26t29-38q12 2 17 2t17-2q28 40 51 63l4 1q2 0 69-39 2-2 2-4 0-14-28-77 9-13 16-29 83-8 83-17z" horiz-adv-x="1071.4" />
 
<glyph glyph-name="doc" unicode="&#xe833;" d="m819 638q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 16-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 15t-16 38v233h-429v-858h715z" horiz-adv-x="857.1" />
 
<glyph glyph-name="docs" unicode="&#xe834;" d="m946 636q23 0 38-16t16-38v-678q0-23-16-38t-38-16h-535q-23 0-38 16t-16 38v160h-303q-23 0-38 16t-16 38v375q0 22 11 49t27 42l228 228q15 16 42 27t49 11h232q23 0 38-16t16-38v-183q38 23 71 23h232z m-303-119l-167-167h167v167z m-357 214l-167-167h167v167z m109-361l176 176v233h-214v-233q0-22-15-38t-38-15h-233v-357h286v143q0 22 11 49t27 42z m534-449v643h-215v-232q0-22-15-38t-38-15h-232v-358h500z" horiz-adv-x="1000" />
 
<glyph glyph-name="doc-text" unicode="&#xe835;" d="m819 638q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 16-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 15t-16 38v233h-429v-858h715z m-572 483q0 7 5 12t13 5h393q8 0 13-5t5-12v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36z m411-125q8 0 13-5t5-13v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36q0 8 5 13t13 5h393z m0-143q8 0 13-5t5-13v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36q0 8 5 13t13 5h393z" horiz-adv-x="857.1" />
 
<glyph glyph-name="doc-inv" unicode="&#xe836;" d="m571 564v264q13-8 21-16l227-228q8-7 16-20h-264z m-71-18q0-22 16-38t38-15h303v-589q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h446v-304z" horiz-adv-x="857.1" />
 
<glyph glyph-name="file-powerpoint" unicode="&#xe837;" d="m819 638q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 16-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 15t-16 38v233h-429v-858h715z m-554 131v-59h183v59h-52v93h76q43 0 66 9 37 12 59 48t23 82q0 45-21 78t-56 49q-27 10-72 10h-206v-59h52v-310h-52z m197 156h-66v150h67q29 0 46-10 31-19 31-64 0-50-34-67-18-9-44-9z" horiz-adv-x="857.1" />
 
<glyph glyph-name="arrows-cw" unicode="&#xe838;" d="m843 261q0-3 0-4-36-150-150-243t-267-93q-81 0-157 31t-136 88l-72-72q-11-11-25-11t-25 11-11 25v250q0 14 11 25t25 11h250q14 0 25-11t10-25-10-25l-77-77q40-37 90-57t105-20q74 0 139 37t104 99q6 10 29 66 5 13 17 13h107q8 0 13-6t5-12z m14 446v-250q0-14-10-25t-26-11h-250q-14 0-25 11t-10 25 10 25l77 77q-82 77-194 77-75 0-140-37t-104-99q-6-10-29-66-5-13-17-13h-111q-7 0-13 6t-5 12v4q36 150 151 243t268 93q81 0 158-31t137-88l72 72q11 11 25 11t26-11 10-25z" horiz-adv-x="857.1" />
 
<glyph glyph-name="clock" unicode="&#xe839;" d="m500 546v-250q0-7-5-12t-13-5h-178q-8 0-13 5t-5 12v36q0 8 5 13t13 5h125v196q0 8 5 13t12 5h36q8 0 13-5t5-13z m232-196q0 83-41 152t-110 111-152 41-153-41-110-111-41-152 41-152 110-111 153-41 152 41 110 111 41 152z m125 0q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
 
<glyph glyph-name="lock" unicode="&#xe83a;" d="m179 421h285v108q0 59-42 101t-101 41-101-41-41-101v-108z m464-53v-322q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37v322q0 22 16 38t38 15h17v108q0 102 74 176t176 74 177-74 73-176v-108h18q23 0 38-15t16-38z" horiz-adv-x="642.9" />
 
<glyph glyph-name="lock-open-alt" unicode="&#xe83b;" d="m589 421q23 0 38-15t16-38v-322q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37v322q0 22 16 38t38 15h17v179q0 103 74 177t176 73 177-73 73-177q0-15-10-25t-25-11h-36q-14 0-25 11t-11 25q0 59-42 101t-101 42-101-42-41-101v-179h410z" horiz-adv-x="642.9" />
 
<glyph glyph-name="tag" unicode="&#xe83c;" d="m250 600q0 30-21 51t-50 20-51-20-21-51 21-50 51-21 50 21 21 50z m595-321q0-30-20-51l-274-274q-22-21-51-21-30 0-50 21l-399 399q-21 21-36 57t-15 65v232q0 29 21 50t50 22h233q29 0 65-15t57-36l399-399q20-21 20-50z" horiz-adv-x="857.1" />
 
<glyph glyph-name="tags" unicode="&#xe83d;" d="m250 600q0 30-21 51t-50 20-51-20-21-51 21-50 51-21 50 21 21 50z m595-321q0-30-20-51l-274-274q-22-21-51-21-30 0-50 21l-399 399q-21 21-36 57t-15 65v232q0 29 21 50t50 22h233q29 0 65-15t57-36l399-399q20-21 20-50z m215 0q0-30-21-51l-274-274q-22-21-51-21-20 0-33 8t-29 25l262 262q21 21 21 51 0 29-21 50l-399 399q-21 21-57 36t-65 15h125q29 0 65-15t57-36l399-399q21-21 21-50z" horiz-adv-x="1071.4" />
 
<glyph glyph-name="book" unicode="&#xe83e;" d="m915 583q22-32 10-72l-154-505q-10-36-42-60t-69-25h-515q-43 0-83 30t-55 74q-14 37-1 71 0 2 1 15t3 20q0 5-2 12t-2 11q1 6 5 12t9 13 9 13q13 21 25 51t17 51q2 6 0 17t0 16q2 6 9 15t10 13q12 20 23 51t14 51q1 5-1 17t0 16q2 7 12 17t13 13q10 14 23 47t16 54q0 4-2 14t-1 15q1 4 5 10t10 13 10 11q4 7 9 17t8 20 9 20 11 18 15 13 20 6 26-3l0-1q21 5 28 5h425q41 0 63-32t10-72l-152-506q-20-66-40-85t-72-20h-485q-15 0-21-8-6-9-1-24 14-39 81-39h515q16 0 31 9t19 23l168 550q4 13 3 32 21-8 33-24z m-594-1q-2-7 1-12t11-6h339q8 0 15 6t9 12l12 36q2 7-2 12t-11 6h-339q-7 0-14-6t-9-12z m-46-143q-3-7 1-12t11-6h339q7 0 14 6t10 12l11 36q3 7-1 13t-11 5h-339q-8 0-14-5t-10-13z" horiz-adv-x="928.6" />
 
<glyph glyph-name="bookmark-empty" unicode="&#xe83f;" d="m643 707h-572v-693l237 227 49 47 50-47 236-227v693z m7 72q12 0 24-5 19-8 29-23t11-35v-719q0-19-11-35t-29-23q-10-4-24-4-27 0-47 18l-246 236-246-236q-20-19-46-19-13 0-25 5-18 7-29 23t-11 35v719q0 19 11 35t29 23q12 5 25 5h585z" horiz-adv-x="714.3" />
 
<glyph glyph-name="bookmark" unicode="&#xe840;" d="m650 779q12 0 24-5 19-8 29-23t11-35v-719q0-19-11-35t-29-23q-10-4-24-4-27 0-47 18l-246 236-246-236q-20-19-46-19-13 0-25 5-18 7-29 23t-11 35v719q0 19 11 35t29 23q12 5 25 5h585z" horiz-adv-x="714.3" />
 
<glyph glyph-name="align-left" unicode="&#xe841;" d="m1000 100v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m-214 214v-71q0-15-11-25t-25-11h-714q-15 0-25 11t-11 25v71q0 15 11 25t25 11h714q15 0 25-11t11-25z m143 215v-72q0-14-11-25t-25-11h-857q-15 0-25 11t-11 25v72q0 14 11 25t25 10h857q14 0 25-10t11-25z m-215 214v-72q0-14-10-25t-25-10h-643q-15 0-25 10t-11 25v72q0 14 11 25t25 11h643q14 0 25-11t10-25z" horiz-adv-x="1000" />
 
<glyph glyph-name="pencil" unicode="&#xe842;" d="m203-7l50 51-131 131-51-51v-60h72v-71h60z m291 518q0 12-12 12-5 0-9-4l-303-302q-4-4-4-10 0-12 13-12 5 0 9 4l303 302q3 4 3 10z m-30 107l232-232-464-465h-232v233z m381-54q0-29-20-50l-93-93-232 233 93 92q20 21 50 21 29 0 51-21l131-131q20-22 20-51z" horiz-adv-x="857.1" />
 
<glyph glyph-name="sliders" unicode="&#xe843;" d="m196 64v-71h-196v71h196z m197 72q14 0 25-11t11-25v-143q0-14-11-25t-25-11h-143q-14 0-25 11t-11 25v143q0 15 11 25t25 11h143z m89 214v-71h-482v71h482z m-357 286v-72h-125v72h125z m732-572v-71h-411v71h411z m-536 643q15 0 26-10t10-26v-142q0-15-10-26t-26-10h-142q-15 0-26 10t-10 26v142q0 15 10 26t26 10h142z m358-286q14 0 25-10t10-25v-143q0-15-10-25t-25-11h-143q-15 0-25 11t-11 25v143q0 14 11 25t25 10h143z m178-71v-71h-125v71h125z m0 286v-72h-482v72h482z" horiz-adv-x="857.1" />
 
<glyph glyph-name="pencil-squared" unicode="&#xe844;" d="m225 232l85-85-29-29h-31v53h-54v32z m231 217q8-7-1-16l-163-163q-9-9-16-1-8 7 1 16l163 163q9 9 16 1z m-152-385l303 304-161 161-303-304v-161h161z m339 340l51 51q16 16 16 38t-16 38l-85 85q-15 15-38 15t-38-15l-51-52z m214 214v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" />
 
<glyph glyph-name="edit" unicode="&#xe845;" d="m496 189l64 65-85 85-64-65v-31h53v-54h32z m245 402q-9 9-18 0l-196-196q-9-9 0-18t18 0l196 196q9 9 0 18z m45-331v-106q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h464q35 0 65-14 9-4 10-13 2-10-5-16l-27-28q-8-8-18-4-13 3-25 3h-464q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63v70q0 7 5 12l36 36q8 8 20 4t11-16z m-54 411l161-160-375-375h-161v160z m248-73l-51-52-161 161 51 51q16 16 38 16t38-16l85-84q16-16 16-38t-16-38z" horiz-adv-x="1000" />
 
<glyph glyph-name="folder-open" unicode="&#xe846;" d="m1049 319q0-18-18-37l-187-221q-24-28-67-48t-81-20h-607q-19 0-33 7t-15 24q0 17 17 37l188 221q24 28 67 48t80 20h607q19 0 34-7t15-24z m-192 192v-90h-464q-53 0-110-26t-92-67l-188-221-2-3q0 2-1 7t0 7v536q0 51 37 88t88 37h179q51 0 88-37t37-88v-18h303q51 0 88-37t37-88z" horiz-adv-x="1071.4" />
 
<glyph glyph-name="folder-open-empty" unicode="&#xe847;" d="m994 330q0 20-30 20h-607q-22 0-48-12t-39-29l-164-203q-11-13-11-22 0-20 30-20h607q22 0 48 13t40 29l164 203q10 12 10 21z m-637 91h429v90q0 22-16 38t-38 15h-321q-23 0-38 16t-16 38v36q0 22-15 38t-38 15h-179q-22 0-38-15t-16-38v-476l143 175q25 30 65 49t78 19z m708-91q0-34-25-66l-165-203q-24-30-65-49t-78-19h-607q-51 0-88 37t-37 88v536q0 51 37 88t88 37h179q51 0 88-37t37-88v-18h303q51 0 88-37t37-88v-90h107q30 0 56-13t37-40q8-17 8-38z" horiz-adv-x="1071.4" />
 
<glyph glyph-name="down-open" unicode="&#xe848;" d="m939 399l-414-413q-10-11-25-11t-25 11l-414 413q-11 11-11 26t11 25l92 92q11 11 26 11t25-11l296-296 296 296q11 11 25 11t26-11l92-92q11-11 11-25t-11-26z" horiz-adv-x="1000" />
 
<glyph glyph-name="left-open" unicode="&#xe849;" d="m653 682l-296-296 296-297q11-10 11-25t-11-25l-92-93q-11-10-25-10t-25 10l-414 415q-11 10-11 25t11 25l414 414q10 10 25 10t25-10l92-93q11-10 11-25t-11-25z" horiz-adv-x="714.3" />
 
<glyph glyph-name="right-open" unicode="&#xe84a;" d="m618 361l-414-415q-11-10-25-10t-26 10l-92 93q-11 11-11 25t11 25l296 297-296 296q-11 11-11 25t11 25l92 93q11 10 26 10t25-10l414-414q10-11 10-25t-10-25z" horiz-adv-x="714.3" />
 
<glyph glyph-name="up-open" unicode="&#xe84b;" d="m939 107l-92-92q-11-10-26-10t-25 10l-296 297-296-297q-11-10-25-10t-26 10l-92 92q-11 11-11 26t11 25l414 414q11 10 25 10t25-10l414-414q11-11 11-25t-11-26z" horiz-adv-x="1000" />
 
<glyph glyph-name="plus-circled" unicode="&#xe84c;" d="m679 314v72q0 14-11 25t-25 10h-143v143q0 15-11 25t-25 11h-71q-15 0-25-11t-11-25v-143h-143q-14 0-25-10t-10-25v-72q0-14 10-25t25-11h143v-142q0-15 11-25t25-11h71q15 0 25 11t11 25v142h143q14 0 25 11t11 25z m178 36q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
 
<glyph glyph-name="minus-circled" unicode="&#xe84d;" d="m679 314v72q0 14-11 25t-25 10h-429q-14 0-25-10t-10-25v-72q0-14 10-25t25-10h429q14 0 25 10t11 25z m178 36q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
 
<glyph glyph-name="block" unicode="&#xe84e;" d="m732 352q0 90-48 164l-421-420q76-50 166-50 62 0 118 25t96 65 65 97 24 119z m-557-167l421 421q-75 50-167 50-83 0-153-40t-110-112-41-152q0-91 50-167z m682 167q0-88-34-168t-91-137-137-92-166-34-167 34-137 92-91 137-34 168 34 167 91 137 137 91 167 34 166-34 137-91 91-137 34-167z" horiz-adv-x="857.1" />
 
<glyph glyph-name="plus" unicode="&#xe84f;" d="m786 439v-107q0-22-16-38t-38-15h-232v-233q0-22-16-37t-38-16h-107q-22 0-38 16t-15 37v233h-232q-23 0-38 15t-16 38v107q0 23 16 38t38 16h232v232q0 22 15 38t38 16h107q23 0 38-16t16-38v-232h232q22 0 38-16t16-38z" horiz-adv-x="785.7" />
 
<glyph glyph-name="minus" unicode="&#xe850;" d="m786 439v-107q0-22-16-38t-38-15h-678q-23 0-38 15t-16 38v107q0 23 16 38t38 16h678q22 0 38-16t16-38z" horiz-adv-x="785.7" />
 
<glyph glyph-name="eye-off" unicode="&#xe851;" d="m310 105l43 79q-48 35-76 88t-27 114q0 67 34 125-128-65-213-197 94-144 239-209z m217 424q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-12 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m202 106q0-4 0-5-59-105-176-316t-176-316l-28-50q-5-9-15-9-7 0-75 39-9 6-9 16 0 7 25 49-80 36-147 96t-117 137q-11 17-11 38t11 39q86 131 212 207t277 76q50 0 100-10l31 54q5 9 15 9 3 0 10-3t18-9 18-10 18-10 10-7q9-5 9-15z m21-249q0-78-44-142t-117-92l157 281q4-26 4-47z m250-72q0-19-11-38-22-36-61-81-84-96-194-149t-234-53l41 74q119 10 219 76t169 171q-65 100-158 164l35 63q53-36 102-86t81-102q11-19 11-39z" horiz-adv-x="1000" />
 
<glyph glyph-name="eye" unicode="&#xe852;" d="m929 314q-85 132-213 197 34-58 34-125 0-104-73-177t-177-73-177 73-73 177q0 67 34 125-128-65-213-197 75-114 187-182t242-68 242 68 187 182z m-402 215q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-12 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m473-215q0-19-11-38-78-129-210-206t-279-77-279 77-210 206q-11 19-11 38t11 39q78 128 210 205t279 78 279-78 210-205q11-20 11-39z" horiz-adv-x="1000" />
 
<glyph glyph-name="folder" unicode="&#xe853;" d="m929 511v-393q0-51-37-88t-88-37h-679q-51 0-88 37t-37 88v536q0 51 37 88t88 37h179q51 0 88-37t37-88v-18h375q51 0 88-37t37-88z" horiz-adv-x="928.6" />
 
<glyph glyph-name="folder-empty" unicode="&#xe854;" d="m857 118v393q0 22-15 38t-38 15h-393q-23 0-38 16t-16 38v36q0 22-15 38t-38 15h-179q-22 0-38-15t-16-38v-536q0-22 16-38t38-16h679q22 0 38 16t15 38z m72 393v-393q0-51-37-88t-88-37h-679q-51 0-88 37t-37 88v536q0 51 37 88t88 37h179q51 0 88-37t37-88v-18h375q51 0 88-37t37-88z" horiz-adv-x="928.6" />
 
<glyph glyph-name="rss" unicode="&#xe855;" d="m214 100q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m286-69q1-15-9-26-11-12-27-12h-75q-14 0-24 9t-11 23q-12 128-103 219t-219 103q-14 1-23 11t-9 24v75q0 16 12 26 9 10 24 10h3q89-7 170-45t145-101q63-63 101-145t45-171z m286-1q1-15-10-26-10-11-26-11h-80q-14 0-25 10t-11 23q-6 120-56 228t-129 188-188 129-227 57q-14 0-24 11t-10 24v80q0 15 11 26 10 10 25 10h1q147-8 280-67t238-164q104-104 164-238t67-280z" horiz-adv-x="785.7" />
 
<glyph glyph-name="rss-squared" unicode="&#xe856;" d="m286 136q0 29-21 50t-51 21-50-21-21-50 21-51 50-21 51 21 21 51z m196-53q-8 130-99 221t-221 99q-8 1-14-5t-5-13v-71q0-8 5-13t12-5q86-6 147-68t67-147q1-7 6-12t12-5h72q7 0 13 6t5 13z m214 0q-3 86-31 166t-78 145-115 114-145 78-166 31q-8 1-13-5-5-5-5-13v-71q0-7 5-12t12-6q114-4 211-62t156-155 62-211q0-8 5-13t13-5h71q7 0 13 6 6 5 5 13z m161 535v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" />
 
<glyph glyph-name="wrench" unicode="&#xe857;" d="m214 29q0 14-10 25t-25 10-26-10-10-25 10-26 26-10 25 10 10 26z m360 234l-381-381q-21-20-50-20-29 0-51 20l-59 61q-21 20-21 50 0 29 21 51l380 380q22-55 64-97t97-64z m353 243q0-22-12-59-27-75-92-122t-144-46q-104 0-177 73t-73 177 73 176 177 74q32 0 67-10t60-26q9-6 9-15t-9-16l-163-94v-125l108-60q2 2 44 27t75 45 40 20q8 0 13-5t4-14z" horiz-adv-x="928.6" />
 
<glyph glyph-name="floppy" unicode="&#xe858;" d="m214-7h429v214h-429v-214z m500 0h72v500q0 8-6 21t-11 20l-157 156q-5 6-19 12t-22 5v-232q0-22-15-38t-38-16h-322q-22 0-37 16t-16 38v232h-72v-714h72v232q0 22 16 38t37 16h465q22 0 38-16t15-38v-232z m-214 518v178q0 8-5 13t-13 5h-107q-7 0-13-5t-5-13v-178q0-8 5-13t13-5h107q7 0 13 5t5 13z m357-18v-518q0-22-15-38t-38-16h-750q-23 0-38 16t-16 38v750q0 22 16 38t38 16h517q23 0 50-12t42-26l156-157q16-15 27-42t11-49z" horiz-adv-x="857.1" />
 
<glyph glyph-name="strike" unicode="&#xe859;" d="m982 350q8 0 13-5t5-13v-36q0-7-5-12t-13-5h-964q-8 0-13 5t-5 12v36q0 8 5 13t13 5h964z m-712 36q-16 19-29 44-27 54-27 105 0 101 75 173 74 71 219 71 28 0 94-11 36-7 98-27 6-21 12-66 8-68 8-102 0-10-3-25l-7-2-46 4-8 1q-28 83-58 114-49 51-117 51-64 0-102-33-37-32-37-81 0-41 37-79t156-72q38-11 96-36 33-16 53-29h-414z m282-143h230q4-22 4-51 0-62-23-119-13-30-40-58-20-19-61-45-44-27-85-37-45-12-113-12-64 0-109 13l-78 23q-32 8-40 15-5 5-5 12v8q0 60-1 87 0 17 0 38l1 20v25l57 1q8-19 17-40t12-31 7-15q20-32 45-52 24-20 59-32 33-12 73-12 36 0 78 15 43 14 68 48 26 34 26 72 0 47-45 87-19 16-77 40z" horiz-adv-x="1000" />
 
<glyph glyph-name="sort" unicode="&#xe85a;" d="m571 243q0-15-10-25l-250-250q-11-11-25-11t-25 11l-250 250q-11 10-11 25t11 25 25 11h500q14 0 25-11t10-25z m0 214q0-14-10-25t-25-11h-500q-15 0-25 11t-11 25 11 25l250 250q10 11 25 11t25-11l250-250q10-10 10-25z" horiz-adv-x="571.4" />
 
<glyph glyph-name="exchange" unicode="&#xe85b;" d="m1000 189v-107q0-7-5-12t-13-6h-768v-107q0-7-5-12t-13-6q-6 0-13 6l-178 178q-5 5-5 13 0 8 5 13l179 178q5 5 12 5 8 0 13-5t5-13v-107h768q7 0 13-5t5-13z m0 304q0-8-5-13l-179-179q-5-5-12-5-8 0-13 6t-5 12v107h-768q-7 0-13 6t-5 12v107q0 8 5 13t13 5h768v107q0 8 5 13t13 5q6 0 13-5l178-178q5-5 5-13z" horiz-adv-x="1000" />
 
<glyph glyph-name="circle-empty" unicode="&#xe85c;" d="m429 654q-83 0-153-41t-110-111-41-152 41-152 110-111 153-41 152 41 110 111 41 152-41 152-110 111-152 41z m428-304q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
 
<glyph glyph-name="circle" unicode="&#xe85d;" d="m857 350q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
 
<glyph glyph-name="box" unicode="&#xe85e;" d="m607 386q0 14-10 25t-26 10h-142q-15 0-26-10t-10-25 10-25 26-11h142q15 0 26 11t10 25z m322 107v-536q0-14-11-25t-25-11h-786q-14 0-25 11t-11 25v536q0 14 11 25t25 11h786q14 0 25-11t11-25z m35 250v-143q0-15-10-25t-25-11h-858q-14 0-25 11t-10 25v143q0 14 10 25t25 11h858q14 0 25-11t10-25z" horiz-adv-x="1000" />
 
</font>
 
</defs>
 
</svg>
 
\ No newline at end of file
kallithea/public/fontello/font/kallithea.ttf
Show inline comments
 
new file 100644
 
binary diff not shown
kallithea/public/fontello/font/kallithea.woff
Show inline comments
 
new file 100644
 
binary diff not shown
kallithea/public/images/arrow_right_64.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/button.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/button_highlight.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/button_selected.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/dt-arrow-dn.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/dt-arrow-up.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/accept.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/address_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/anchor.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_cascade.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_double.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_form.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_form_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_form_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_form_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_form_magnify.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_get.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_home.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_lightning.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_osx.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_osx_terminal.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_put.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_side_boxes.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_side_contract.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_side_expand.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_side_list.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_side_tree.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_split.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_tile_horizontal.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_tile_vertical.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_view_columns.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_view_detail.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_view_gallery.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_view_icons.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_view_list.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_view_tile.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_xp.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/application_xp_terminal.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_branch.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_divide.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_down.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_in.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_inout.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_join.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_left.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_merge.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_out.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_redo.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_refresh.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_refresh_small.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_right.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_rotate_anticlockwise.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_rotate_clockwise.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_switch.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_turn_left.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_turn_right.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_undo.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/arrow_up.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/asterisk_orange.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/asterisk_yellow.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/atom.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/attach.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/award_star_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/award_star_bronze_1.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/award_star_bronze_2.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/award_star_bronze_3.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/award_star_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/award_star_gold_1.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/award_star_gold_2.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/award_star_gold_3.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/award_star_silver_1.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/award_star_silver_2.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/award_star_silver_3.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/basket.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/basket_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/basket_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/basket_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/basket_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/basket_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/basket_put.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/basket_remove.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bell.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bell_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bell_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bell_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bell_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bell_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bin.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bin_closed.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bin_empty.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/block_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bomb.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/book.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/book_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/book_addresses.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/book_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/book_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/book_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/book_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/book_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/book_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/book_next.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/book_open.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/book_previous.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bookmark_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/box.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/brick.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/brick_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/brick_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/brick_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/brick_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/brick_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/brick_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bricks.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/briefcase.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/briefcase_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bubble_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bug.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bug_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bug_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bug_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bug_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bug_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bug_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/building.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/building_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/building_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/building_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/building_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/building_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/building_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/building_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_arrow_bottom.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_arrow_down.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_arrow_top.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_arrow_up.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_black.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_blue.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_disk.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_feed.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_green.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_orange.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_picture.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_pink.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_purple.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_red.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_star.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_toggle_minus.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_toggle_plus.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_white.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_wrench.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/bullet_yellow.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/buy_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cake.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/calculator.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/calculator_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/calculator_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/calculator_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/calculator_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/calculator_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/calendar.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/calendar_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/calendar_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/calendar_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/calendar_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/calendar_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/calendar_view_day.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/calendar_view_month.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/calendar_view_week.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/camera.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/camera_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/camera_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/camera_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/camera_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/camera_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/camera_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/camera_small.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cancel.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/car.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/car_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/car_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cart.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cart_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cart_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cart_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cart_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cart_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cart_put.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cart_remove.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cd.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cd_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cd_burn.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cd_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cd_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cd_eject.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cd_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_bar.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_bar_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_bar_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_bar_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_bar_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_bar_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_curve.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_curve_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_curve_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_curve_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_curve_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_curve_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_curve_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_line.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_line_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_line_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_line_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_line_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_line_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_organisation.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_organisation_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_organisation_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_pie.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_pie_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_pie_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_pie_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_pie_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/chart_pie_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/clipboard_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/clock.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/clock_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/clock_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/clock_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/clock_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/clock_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/clock_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/clock_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/clock_pause.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/clock_play.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/clock_red.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/clock_stop.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cog.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cog_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cog_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cog_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cog_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cog_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/coins.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/coins_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/coins_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/color_swatch.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/color_wheel.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/comment.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/comment_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/comment_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/comment_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/comments.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/comments_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/comments_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/compress.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/computer.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/computer_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/computer_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/computer_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/computer_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/computer_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/computer_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/computer_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/connect.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/contrast.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/contrast_decrease.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/contrast_high.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/contrast_increase.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/contrast_low.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_eject.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_eject_blue.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_end.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_end_blue.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_equalizer.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_equalizer_blue.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_fastforward.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_fastforward_blue.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_pause.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_pause_blue.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_play.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_play_blue.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_repeat.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_repeat_blue.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_rewind.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_rewind_blue.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_start.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_start_blue.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_stop.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/control_stop_blue.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/controller.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/controller_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/controller_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/controller_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/creditcards.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cross.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/css.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/css_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/css_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/css_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/css_valid.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cup.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cup_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cup_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cup_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cup_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cup_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cup_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cup_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cursor.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cut.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/cut_red.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/database.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/database_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/database_connect.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/database_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/database_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/database_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/database_gear.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/database_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/database_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/database_lightning.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/database_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/database_refresh.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/database_save.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/database_table.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/date.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/date_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/date_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/date_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/date_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/date_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/date_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/date_magnify.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/date_next.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/date_previous.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/delete_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/diagram_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/disconnect.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/disk.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/disk_multiple.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/document_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/door.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/door_in.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/door_open.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/door_out.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/down_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drink.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drink_empty.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drive.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drive_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drive_burn.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drive_cd.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drive_cd_empty.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drive_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drive_disk.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drive_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drive_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drive_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drive_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drive_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drive_magnify.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drive_network.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drive_rename.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drive_user.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/drive_web.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/dvd.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/dvd_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/dvd_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/dvd_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/dvd_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/dvd_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/dvd_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/dvd_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/email.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/email_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/email_attach.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/email_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/email_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/email_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/email_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/email_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/email_open.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/email_open_image.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/emoticon_evilgrin.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/emoticon_grin.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/emoticon_happy.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/emoticon_smile.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/emoticon_surprised.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/emoticon_tongue.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/emoticon_unhappy.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/emoticon_waii.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/emoticon_wink.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/error_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/error_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/error_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/error_msg.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/exclamation.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/eye.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/feed.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/feed_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/feed_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/feed_disk.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/feed_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/feed_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/feed_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/feed_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/feed_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/feed_magnify.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/female.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/file.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/film.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/film_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/film_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/film_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/film_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/film_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/film_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/film_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/film_save.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/find.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/flag_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/flag_blue.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/flag_green.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/flag_orange.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/flag_pink.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/flag_purple.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/flag_red.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/flag_status_approved.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/flag_status_not_reviewed.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/flag_status_rejected.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/flag_status_under_review.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/flag_yellow.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_bell.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_brick.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_bug.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_camera.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_database.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_explore.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_feed.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_find.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_heart.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_image.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_lightbulb.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_magnify.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_page.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_page_white.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_palette.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_picture.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_star.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_table.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_user.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/folder_wrench.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/font.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/font_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/font_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/font_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/gear_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/globe_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/group_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/group_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/group_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/group_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/group_gear.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/group_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/group_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/group_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/heart.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/heart_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/heart_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/heart_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/help.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/help_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/home_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/hourglass.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/hourglass_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/hourglass_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/hourglass_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/hourglass_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/house.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/house_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/house_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/html.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/html_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/html_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/html_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/html_valid.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/image.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/image_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/image_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/image_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/image_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/images.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/info_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/information.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/ipod.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/ipod_cast.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/ipod_cast_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/ipod_cast_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/ipod_sound.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/joystick.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/joystick_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/joystick_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/joystick_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/key_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/key_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/key_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/key_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/keyboard.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/keyboard_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/keyboard_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/keyboard_magnify.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/label_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/layers.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/layout.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/layout_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/layout_content.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/layout_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/layout_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/layout_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/layout_header.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/layout_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/layout_sidebar.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/left_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/letter_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lightbulb.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lightbulb_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lightbulb_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lightbulb_off.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lightning.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lightning_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lightning_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lightning_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/link_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/link_break.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/link_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/link_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/link_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/link_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lock.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lock_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lock_break.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lock_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lock_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lock_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lock_open.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lorry.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lorry_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lorry_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lorry_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lorry_flatbed.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lorry_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/lorry_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/magifier_zoom_out.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/magnifier.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/magnifier_zoom_in.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/male.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/map.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/map_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/map_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/map_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/map_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/map_magnify.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/medal_bronze_1.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/medal_bronze_2.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/medal_bronze_3.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/medal_bronze_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/medal_bronze_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/medal_gold_1.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/medal_gold_2.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/medal_gold_3.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/medal_gold_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/medal_gold_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/medal_silver_1.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/medal_silver_2.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/medal_silver_3.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/medal_silver_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/medal_silver_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/money.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/money_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/money_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/money_dollar.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/money_euro.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/money_pound.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/money_yen.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/monitor.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/monitor_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/monitor_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/monitor_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/monitor_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/monitor_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/monitor_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/monitor_lightning.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/monitor_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/mouse.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/mouse_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/mouse_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/mouse_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/music.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/new.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/newspaper.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/newspaper_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/newspaper_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/newspaper_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/newspaper_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/note.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/note_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/note_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/note_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/note_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/note_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/notice_msg.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/overlays.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/package.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/package_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/package_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/package_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/package_green.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/package_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_attach.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_code.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_copy.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_excel.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_find.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_gear.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_green.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_lightning.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_paintbrush.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_paste.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_red.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_refresh.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_save.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_acrobat.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_actionscript.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_c.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_camera.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_cd.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_code.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_code_red.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_coldfusion.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_compressed.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_copy.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_cplusplus.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_csharp.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_cup.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_database.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_dvd.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_excel.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_find.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_flash.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_freehand.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_gear.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_get.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_h.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_horizontal.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_lightning.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_magnify.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_medal.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_office.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_paint.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_paintbrush.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_paste.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_php.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_picture.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_powerpoint.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_put.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_ruby.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_stack.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_star.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_swoosh.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_text.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_text_width.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_tux.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_vector.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_visualstudio.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_width.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_word.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_world.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_wrench.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_white_zip.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_word.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/page_world.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/paintbrush.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/paintcan.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/palette.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/paste_plain.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/paste_word.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/pencil.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/pencil_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/pencil_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/pencil_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/pencil_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/phone.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/phone_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/phone_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/phone_sound.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/photo.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/photo_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/photo_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/photo_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/photos.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/picture.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/picture_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/picture_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/picture_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/picture_empty.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/picture_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/picture_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/picture_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/picture_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/picture_save.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/pictures.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/pilcrow.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/pill.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/pill_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/pill_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/pill_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/plugin.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/plugin_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/plugin_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/plugin_disabled.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/plugin_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/plugin_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/plugin_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/plugin_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/plus_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/present_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/print_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/printer.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/printer_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/printer_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/printer_empty.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/printer_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/private_repo.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/public_repo.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/rainbow.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/report.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/report_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/report_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/report_disk.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/report_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/report_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/report_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/report_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/report_magnify.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/report_picture.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/report_user.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/report_word.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/resultset_first.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/resultset_last.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/resultset_next.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/resultset_previous.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/right_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/rosette.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/rss.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/rss_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/rss_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/rss_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/rss_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/rss_valid.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/ruby.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/ruby_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/ruby_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/ruby_gear.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/ruby_get.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/ruby_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/ruby_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/ruby_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/ruby_put.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/save_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/script.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/script_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/script_code.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/script_code_red.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/script_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/script_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/script_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/script_gear.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/script_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/script_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/script_lightning.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/script_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/script_palette.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/script_save.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/search_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/server.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/server_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/server_chart.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/server_compressed.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/server_connect.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/server_database.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/server_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/server_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/server_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/server_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/server_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/server_lightning.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/server_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/server_uncompressed.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shading.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_align_bottom.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_align_center.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_align_left.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_align_middle.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_align_right.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_align_top.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_flip_horizontal.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_flip_vertical.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_group.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_handles.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_move_back.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_move_backwards.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_move_forwards.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_move_front.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_rotate_anticlockwise.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_rotate_clockwise.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_square.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_square_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_square_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_square_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_square_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_square_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_square_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_square_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shape_ungroup.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shield.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shield_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shield_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shield_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/shield_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/sitemap.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/sitemap_color.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/sound.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/sound_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/sound_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/sound_low.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/sound_mute.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/sound_none.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/spellcheck.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/sport_8ball.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/sport_basketball.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/sport_football.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/sport_golf.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/sport_raquet.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/sport_shuttlecock.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/sport_soccer.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/sport_tennis.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/star.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/statistics_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/status_away.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/status_busy.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/status_offline.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/status_online.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/stop.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/stop_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/style.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/style_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/style_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/style_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/style_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/success_msg.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/sum.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tab.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tab_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tab_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tab_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tab_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/table.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/table_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/table_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/table_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/table_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/table_gear.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/table_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/table_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/table_lightning.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/table_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/table_multiple.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/table_refresh.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/table_relationship.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/table_row_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/table_row_insert.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/table_save.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/table_sort.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tag.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tag_blue.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tag_blue_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tag_blue_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tag_blue_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tag_green.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tag_orange.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tag_pink.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tag_purple.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tag_red.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tag_yellow.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/telephone.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/telephone_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/telephone_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/telephone_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/telephone_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/telephone_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/telephone_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/telephone_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/television.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/television_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/television_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_align_center.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_align_justify.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_align_left.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_align_right.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_allcaps.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_bold.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_columns.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_dropcaps.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_heading_1.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_heading_2.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_heading_3.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_heading_4.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_heading_5.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_heading_6.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_horizontalrule.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_indent.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_indent_remove.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_italic.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_kerning.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_letter_omega.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_letterspacing.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_linespacing.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_list_bullets.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_list_numbers.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_lowercase.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_padding_bottom.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_padding_left.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_padding_right.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_padding_top.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_replace.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_signature.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_smallcaps.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_strikethrough.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_subscript.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_superscript.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_underline.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/text_uppercase.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/textfield.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/textfield_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/textfield_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/textfield_key.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/textfield_rename.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/thumb_down.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/thumb_up.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tick.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tick_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/time.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/time_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/time_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/time_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/timeline_marker.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/transmit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/transmit_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/transmit_blue.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/transmit_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/transmit_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/transmit_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/transmit_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/trash_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/tux.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/up_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/user.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/user_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/user_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/user_comment.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/user_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/user_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/user_female.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/user_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/user_gray.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/user_green.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/user_orange.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/user_red.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/user_suit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/vcard.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/vcard_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/vcard_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/vcard_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/vector.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/vector_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/vector_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/wallet_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/wand.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/warning_16.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/warning_msg.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/weather_clouds.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/weather_cloudy.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/weather_lightning.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/weather_rain.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/weather_snow.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/weather_sun.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/webcam.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/webcam_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/webcam_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/webcam_error.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/world.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/world_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/world_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/world_edit.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/world_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/world_link.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/wrench.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/wrench_orange.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/xhtml.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/xhtml_add.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/xhtml_delete.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/xhtml_go.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/xhtml_valid.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/zoom.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/zoom_in.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/icons/zoom_out.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/login.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/sprite.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/images/vertical-indicator.png
Show inline comments
 
deleted file
 
binary diff not shown
Show images
kallithea/public/js/base.js
Show inline comments
 
@@ -294,52 +294,50 @@ var pyroutes = (function() {
 
        },
 
        'register': function(route_name, route_tmpl, req_params) {
 
            if (typeof(req_params) != 'object') {
 
                req_params = [];
 
            }
 
            var keys = [];
 
            for (var i=0; i < req_params.length; i++) {
 
                keys.push(req_params[i])
 
            }
 
            matchlist[route_name] = [
 
                unescape(route_tmpl),
 
                keys
 
            ]
 
        },
 
        '_routes': function(){
 
            return matchlist;
 
        }
 
    }
 
})();
 

	
 

	
 
/**
 
 * GLOBAL YUI Shortcuts
 
 */
 
var YUC = YAHOO.util.Connect;
 
var YUD = YAHOO.util.Dom;
 
var YUE = YAHOO.util.Event;
 
var YUQ = YAHOO.util.Selector.query;
 

	
 
/* Invoke all functions in callbacks */
 
var _run_callbacks = function(callbacks){
 
    if (callbacks !== undefined){
 
        var _l = callbacks.length;
 
        for (var i=0;i<_l;i++){
 
            var func = callbacks[i];
 
            if(typeof(func)=='function'){
 
                try{
 
                    func();
 
                }catch (err){};
 
            }
 
        }
 
    }
 
}
 

	
 
/**
 
 * turns objects into GET query string
 
 */
 
var _toQueryString = function(o) {
 
    if(typeof o !== 'object') {
 
        return false;
 
    }
 
    var _p, _qs = [];
 
@@ -361,108 +359,96 @@ function asynchtml(url, $target, success
 
        args=null;
 
    }
 
    $target.html(_TM['Loading ...']).css('opacity','0.3');
 

	
 
    return $.ajax({url: url, data: args, headers: {'X-PARTIAL-XHR': '1'}, cache: false, dataType: 'html'})
 
        .done(function(html) {
 
                $target.html(html);
 
                $target.css('opacity','1.0');
 
                //execute the given original callback
 
                if (success !== undefined && success) {
 
                    success();
 
                }
 
            })
 
        .fail(function(jqXHR, textStatus, errorThrown) {
 
                if (textStatus == "abort")
 
                    return;
 
                console.log('Ajax failure: ' + textStatus);
 
                $target.html('<span class="error_red">ERROR: {0}</span>'.format(textStatus));
 
                $target.css('opacity','1.0');
 
            })
 
        ;
 
};
 

	
 
var ajaxGET = function(url,success) {
 
    // Set special header for ajax == HTTP_X_PARTIAL_XHR
 
    YUC.initHeader('X-PARTIAL-XHR',true);
 

	
 
    var sUrl = url;
 
    var callback = {
 
        success: success,
 
        failure: function (o) {
 
            if (o.status != 0) {
 
                alert("Ajax GET error: " + o.statusText);
 
            };
 
        }
 
    };
 

	
 
    var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
 
    return request;
 
    return $.ajax({url: url, headers: {'X-PARTIAL-XHR': '1'}, cache: false})
 
        .done(success)
 
        .fail(function(jqXHR, textStatus, errorThrown) {
 
                if (textStatus == "abort")
 
                    return;
 
                alert("Ajax GET error: " + textStatus);
 
        })
 
        ;
 
};
 

	
 
var ajaxPOST = function(url,postData,success) {
 
    // Set special header for ajax == HTTP_X_PARTIAL_XHR
 
    YUC.initHeader('X-PARTIAL-XHR',true);
 

	
 
    var sUrl = url;
 
    var callback = {
 
        success: success,
 
        failure: function (o) {
 
            alert("Ajax POST error: " + o.statusText);
 
        }
 
    };
 
    var postData = _toQueryString(postData);
 
    var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
 
    return request;
 
    return $.ajax({url: url, data: postData, type: 'POST', headers: {'X-PARTIAL-XHR': '1'}, cache: false})
 
        .done(success)
 
        .fail(function(jqXHR, textStatus, errorThrown) {
 
                if (textStatus == "abort")
 
                    return;
 
                alert("Ajax POST error: " + textStatus);
 
            })
 
        ;
 
};
 

	
 

	
 
/**
 
 * activate .show_more links
 
 * the .show_more must have an id that is the the id of an element to hide prefixed with _
 
 * the parentnode will be displayed
 
 */
 
var show_more_event = function(){
 
    $('.show_more').click(function(e){
 
        var el = e.currentTarget;
 
        $('#' + el.id.substring(1)).hide();
 
        $(el.parentNode).show();
 
    });
 
};
 

	
 
/**
 
 * activate .lazy-cs mouseover for showing changeset tooltip
 
 */
 
var show_changeset_tooltip = function(){
 
    $('.lazy-cs').mouseover(function(e){
 
        var $target = $(e.currentTarget);
 
        var rid = $target.attr('raw_id');
 
        var repo_name = $target.attr('repo_name');
 
        if(rid && !$target.hasClass('tooltip')){
 
            _show_tooltip(e, _TM['loading ...']);
 
            var url = pyroutes.url('changeset_info', {"repo_name": repo_name, "revision": rid});
 
            ajaxGET(url, function(o){
 
                    var json = JSON.parse(o.responseText);
 
            ajaxGET(url, function(json){
 
                    $target.addClass('tooltip')
 
                    _show_tooltip(e, json['message']);
 
                    _activate_tooltip($target);
 
                });
 
        }
 
    });
 
};
 

	
 
var _onSuccessFollow = function(target){
 
    var $target = $(target);
 
    var $f_cnt = $('#current_followers_count');
 
    if($target.hasClass('follow')){
 
        $target.attr('class', 'following');
 
        $target.attr('title', _TM['Stop following this repository']);
 
        if($f_cnt.html()){
 
            var cnt = Number($f_cnt.html())+1;
 
            $f_cnt.html(cnt);
 
        }
 
    }
 
    else{
 
        $target.attr('class', 'follow');
 
        $target.attr('title', _TM['Start following this repository']);
 
        if($f_cnt.html()){
 
            var cnt = Number($f_cnt.html())-1;
 
@@ -550,87 +536,94 @@ var _show_tooltip = function(e, tipText)
 

	
 
var _move_tooltip = function(e){
 
    e.stopImmediatePropagation();
 
    var $tipBox = $('#tip-box');
 
    $tipBox.css('top', (e.pageY + 15) + 'px');
 
    $tipBox.css('left', (e.pageX + 15) + 'px');
 
};
 

	
 
var _close_tooltip = function(e){
 
    e.stopImmediatePropagation();
 
    var $tipBox = $('#tip-box');
 
    $tipBox.hide();
 
    var el = e.currentTarget;
 
    $(el).attr('title', $(el).attr('tt_title'));
 
};
 

	
 
/**
 
 * Quick filter widget
 
 *
 
 * @param target: filter input target
 
 * @param nodes: list of nodes in html we want to filter.
 
 * @param display_element function that takes current node from nodes and
 
 *    does hide or show based on the node
 
 */
 
var q_filter = function(target, nodes, display_element){
 
    var nodes = nodes;
 
var q_filter = (function() {
 
    var _namespace = {};
 
    var namespace = function (target) {
 
        if (!(target in _namespace)) {
 
            _namespace[target] = {};
 
        }
 
        return _namespace[target];
 
    };
 
    return function (target, $nodes, display_element) {
 
        var $nodes = $nodes;
 
    var $q_filter_field = $('#' + target);
 
    var F = YAHOO.namespace(target);
 
        var F = namespace(target);
 

	
 
    $q_filter_field.keyup(function(e){
 
        clearTimeout(F.filterTimeout);
 
        F.filterTimeout = setTimeout(F.updateFilter, 600);
 
    });
 

	
 
    F.filterTimeout = null;
 

	
 
    F.updateFilter  = function() {
 
        // Reset timeout
 
        F.filterTimeout = null;
 

	
 
        var obsolete = [];
 

	
 
        var req = $q_filter_field.val().toLowerCase();
 

	
 
        var l = nodes.length;
 
        var i;
 
        var showing = 0;
 

	
 
        for (i=0; i<l; i++ ){
 
            var n = nodes[i];
 
            var target_element = display_element(n)
 
            $nodes.each(function () {
 
                var n = this;
 
                var target_element = display_element(n);
 
            if(req && n.innerHTML.toLowerCase().indexOf(req) == -1){
 
                $(target_element).hide();
 
            }
 
            else{
 
                $(target_element).show();
 
                showing += 1;
 
            }
 
        }
 
            });
 

	
 
        $('#repo_count').html(showing); /* FIXME: don't hardcode */
 
            $('#repo_count').html(showing);
 
            /* FIXME: don't hardcode */
 
    }
 
};
 
    }
 
})();
 

	
 
/* return jQuery expression with a tr with body in 3rd column and class cls and id named after the body */
 
var _table_tr = function(cls, body){
 
    // like: <div class="comment" id="comment-8" line="o92"><div class="comment-wrapp">...
 
    // except new inlines which are different ...
 
    var comment_id = ($(body).attr('id') || 'comment-new').split('comment-')[1];
 
    var tr_id = 'comment-tr-{0}'.format(comment_id);
 
    return $(('<tr id="{0}" class="{1}">'+
 
                  '<td class="lineno-inline new-inline"></td>'+
 
                  '<td class="lineno-inline old-inline"></td>'+
 
                  '<td>{2}</td>'+
 
                 '</tr>').format(tr_id, cls, body));
 
};
 

	
 
/** return jQuery expression with new inline form based on template **/
 
var _createInlineForm = function(parent_tr, f_path, line) {
 
    var $tmpl = $('#comment-inline-form-template').html().format(f_path, line);
 
    var $form = _table_tr('comment-form-inline', $tmpl)
 

	
 
    // create event for hide button
 
    $form.find('.hide-inline-form').click(function(e) {
 
        var newtr = e.currentTarget.parentNode.parentNode.parentNode.parentNode.parentNode;
 
        if($(newtr).next().hasClass('inline-comments-button')){
 
            $(newtr).next().show();
 
@@ -669,78 +662,77 @@ var injectInlineForm = function(tr){
 
    }
 
    $form.insertAfter($parent);
 
    var $overlay = $form.find('.submitting-overlay');
 
    var $inlineform = $form.find('.inline-form');
 

	
 
    $form.submit(function(e){
 
        e.preventDefault();
 

	
 
        if(lineno === undefined){
 
            alert('Error submitting, line ' + lineno + ' not found.');
 
            return
 
        }
 
        if(f_path === undefined){
 
            alert('Error submitting, file path ' + f_path + ' not found.');
 
            return
 
        }
 

	
 
        var text = $('#text_'+lineno).val();
 
        if(text == ""){
 
            return
 
        }
 

	
 
        $overlay.show();
 

	
 
        var success = function(o){
 
        var success = function(json_data){
 
            $tr.removeClass('form-open');
 
            $form.remove();
 
            var json_data = JSON.parse(o.responseText);
 
            _renderInlineComment(json_data);
 
        };
 
        var postData = {
 
                'text': text,
 
                'f_path': f_path,
 
                'line': lineno
 
        };
 
        ajaxPOST(submit_url, postData, success);
 
    });
 

	
 
    $('#preview-btn_'+lineno).click(function(e){
 
        var text = $('#text_'+lineno).val();
 
        if(!text){
 
            return
 
        }
 
        $('#preview-box_'+lineno).addClass('unloaded');
 
        $('#preview-box_'+lineno).html(_TM['Loading ...']);
 
        $('#edit-container_'+lineno).hide();
 
        $('#edit-btn_'+lineno).show();
 
        $('#preview-container_'+lineno).show();
 
        $('#preview-btn_'+lineno).hide();
 

	
 
        var url = pyroutes.url('changeset_comment_preview', {'repo_name': REPO_NAME});
 
        var post_data = {'text': text};
 
        ajaxPOST(url, post_data, function(o){
 
            $('#preview-box_'+lineno).html(o.responseText);
 
        ajaxPOST(url, post_data, function(html){
 
            $('#preview-box_'+lineno).html(html);
 
            $('#preview-box_'+lineno).removeClass('unloaded');
 
        })
 
    })
 
    $('#edit-btn_'+lineno).click(function(e){
 
        $('#edit-container_'+lineno).show();
 
        $('#edit-btn_'+lineno).hide();
 
        $('#preview-container_'+lineno).hide();
 
        $('#preview-btn_'+lineno).show();
 
    })
 

	
 
    setTimeout(function(){
 
        // callbacks
 
        tooltip_activate();
 
        MentionsAutoComplete('text_'+lineno, 'mentions_container_'+lineno,
 
                             _USERS_AC_DATA, _GROUPS_AC_DATA);
 
        $('#text_'+lineno).focus();
 
    },10)
 
};
 

	
 
var deleteComment = function(comment_id){
 
    var url = AJAX_COMMENT_DELETE_URL.replace('__COMMENT_ID__',comment_id);
 
    var postData = {'_method':'delete'};
 
    var success = function(o){
 
        var $deleted = $('#comment-tr-'+comment_id);
 
@@ -879,64 +871,63 @@ var linkInlineComments = function(firstl
 
/* activate files.html stuff */
 
var fileBrowserListeners = function(current_url, node_list_url, url_base){
 
    var current_url_branch = "?branch=__BRANCH__";
 

	
 
    $('#stay_at_branch').on('click',function(e){
 
        if(e.currentTarget.checked){
 
            var uri = current_url_branch;
 
            uri = uri.replace('__BRANCH__',e.currentTarget.value);
 
            window.location = uri;
 
        }
 
        else{
 
            window.location = current_url;
 
        }
 
    })
 

	
 
    var $node_filter = $('#node_filter');
 

	
 
    var filterTimeout = null;
 
    var nodes = null;
 

	
 
    var initFilter = function(){
 
        $('#node_filter_box_loading').show();
 
        $('#search_activate_id').hide();
 
        $('#add_node_id').hide();
 
        YUC.initHeader('X-PARTIAL-XHR',true);
 
        YUC.asyncRequest('GET', node_list_url, {
 
            success:function(o){
 
                nodes = JSON.parse(o.responseText).nodes;
 
        $.ajax({url: node_list_url, headers: {'X-PARTIAL-XHR': '1'}, cache: false})
 
            .done(function(json) {
 
                    nodes = json.nodes;
 
                $('#node_filter_box_loading').hide();
 
                $('#node_filter_box').show();
 
                $node_filter.focus();
 
                if($node_filter.hasClass('init')){
 
                    $node_filter.val('');
 
                    $node_filter.removeClass('init');
 
                }
 
            },
 
            failure:function(o){
 
                })
 
            .fail(function() {
 
                console.log('failed to load');
 
            }
 
        },null);
 
                })
 
        ;
 
    }
 

	
 
    var updateFilter = function(e) {
 
        return function(){
 
            // Reset timeout
 
            filterTimeout = null;
 
            var query = e.currentTarget.value.toLowerCase();
 
            var match = [];
 
            var matches = 0;
 
            var matches_max = 20;
 
            if (query != ""){
 
                for(var i=0;i<nodes.length;i++){
 
                    var pos = nodes[i].name.toLowerCase().indexOf(query)
 
                    if(query && pos != -1){
 
                        matches++
 
                        //show only certain amount to not kill browser
 
                        if (matches > matches_max){
 
                            break;
 
                        }
 

	
 
                        var n = nodes[i].name;
 
                        var t = nodes[i].type;
 
                        var n_hl = n.substring(0,pos)
 
                          +"<b>{0}</b>".format(n.substring(pos,pos+query.length))
 
@@ -1452,56 +1443,56 @@ var MentionsAutoComplete = function (div
 
    };
 

	
 
    var $divid = $('#'+divid);
 
    $divid.keyup(function(e){
 
            var currentMessage = $divid.val();
 
            var currentCaretPosition = $divid[0].selectionStart;
 

	
 
            var unam = ownerAC.get_mention(currentMessage, currentCaretPosition);
 
            var curr_search = null;
 
            if(unam[0]){
 
                curr_search = unam[0];
 
            }
 

	
 
            ownerAC.dataSource.chunks = unam[1];
 
            ownerAC.dataSource.mentionQuery = curr_search;
 
        });
 
}
 

	
 
var addReviewMember = function(id,fname,lname,nname,gravatar_link){
 
    var displayname = "{0} {1} ({2})".format(fname, lname, nname);
 
    var element = (
 
        '     <li id="reviewer_{2}">\n'+
 
        '       <div class="reviewers_member">\n'+
 
        '           <div class="reviewer_status tooltip" title="not_reviewed">\n'+
 
        '             <img src="/images/icons/flag_status_not_reviewed.png"/>\n'+
 
        '             <i class="icon-circle changeset-status-not_reviewed"></i>\n'+
 
        '           </div>\n'+
 
        '         <div class="reviewer_gravatar gravatar"><img alt="gravatar" src="{0}"/> </div>\n'+
 
        '         <div style="float:left;">{1}</div>\n'+
 
        '         <input type="hidden" value="{2}" name="review_members" />\n'+
 
        '         <div class="reviewer_member_remove action_button" onclick="removeReviewMember({2})">\n'+
 
        '             <i class="icon-remove-sign" style="color: #FF4444;"></i>\n'+
 
        '         </div> *\n'+
 
        '             <i class="icon-minus-circled" style="color: #FF4444;"></i>\n'+
 
        '         </div>\n'+
 
        '       </div>\n'+
 
        '     </li>\n'
 
        ).format(gravatar_link, displayname, id);
 
    // check if we don't have this ID already in
 
    var ids = [];
 
    $('#review_members').find('li').each(function() {
 
            ids.push(this.id);
 
        });
 
    if(ids.indexOf('reviewer_'+id) == -1){
 
        //only add if it's not there
 
        $('#review_members').append(element);
 
    }
 
}
 

	
 
var removeReviewMember = function(reviewer_id, repo_name, pull_request_id){
 
    var $li = $('#reviewer_{0}'.format(reviewer_id));
 
    $li.find('div div').css("text-decoration", "line-through");
 
    $li.find('input').remove();
 
    $li.find('.reviewer_member_remove').remove();
 
}
 

	
 
/* handle "Save Changes" of addReviewMember and removeReviewMember on PR */
 
var updateReviewers = function(reviewers_ids, repo_name, pull_request_id){
 
    if (reviewers_ids === undefined){
kallithea/templates/admin/gists/edit.html
Show inline comments
 
@@ -14,49 +14,49 @@
 
<script type="text/javascript" src="${h.url('/codemirror/mode/meta.js')}"></script>
 
</%def>
 
<%def name="css_extra()">
 
<link rel="stylesheet" type="text/css" href="${h.url('/codemirror/lib/codemirror.css')}"/>
 
</%def>
 

	
 
<%def name="breadcrumbs_links()">
 
    ${_('Edit Gist')} &middot; ${c.gist.gist_access_id}
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('gists')}
 
</%def>
 

	
 
<%def name="main()">
 
<div class="box">
 
    <!-- box / title -->
 
    <div class="title">
 
        ${self.breadcrumbs()}
 
    </div>
 

	
 
    <div class="table">
 
        <div id="edit_error" style="display: none" class="flash_msg">
 
            <div class="alert alert-dismissable alert-warning">
 
              <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
 
              <button type="button" class="close" data-dismiss="alert" aria-hidden="true"><i class="icon-cancel-circled"></i></button>
 
              ${h.literal(_('Gist was update since you started editing. Copy your changes and click %(here)s to reload new version.')
 
                             % {'here': h.link_to('here',h.url('edit_gist', gist_id=c.gist.gist_access_id))})}
 
            </div>
 
            <script>
 
            if (typeof jQuery != 'undefined') {
 
                $(".alert").alert();
 
            }
 
            </script>
 
        </div>
 

	
 
        <div id="files_data">
 
          ${h.form(h.url('edit_gist', gist_id=c.gist.gist_access_id), method='post', id='eform')}
 
            <div>
 
                <div class="gravatar">
 
                   <img alt="gravatar" src="${h.gravatar_url(h.email_or_none(c.authuser.full_contact),32)}"/>
 
                </div>
 
                <input type="hidden" value="${c.file_changeset.raw_id}" name="parent_hash">
 
                <textarea style="resize:vertical; width:400px;border: 1px solid #ccc;border-radius: 3px;"
 
                          id="description" name="description"
 
                          placeholder="${_('Gist description ...')}">${c.gist.gist_description}</textarea>
 
                <div style="padding:0px 0px 0px 42px">
 
                    <label for='lifetime'>${_('Gist lifetime')}</label>
 
                    ${h.select('lifetime', '0', c.lifetime_options)}
 
                    <span class="" style="color: #AAA">
kallithea/templates/admin/my_account/my_account_api_keys.html
Show inline comments
 
@@ -17,49 +17,49 @@
 
            ${h.end_form()}
 
        </td>
 
    </tr>
 
    %if c.user_api_keys:
 
        %for api_key in c.user_api_keys:
 
          <tr class="${'expired' if api_key.expired else ''}">
 
            <td style="width: 450px"><div class="truncate autoexpand" style="width:120px;font-size:16px;font-family: monospace">${api_key.api_key}</div></td>
 
            <td>${api_key.description}</td>
 
            <td style="min-width: 80px">
 
                 %if api_key.expires == -1:
 
                  ${_('expires')}: ${_('never')}
 
                 %else:
 
                    %if api_key.expired:
 
                        ${_('expired')}: ${h.age(h.time_to_datetime(api_key.expires))}
 
                    %else:
 
                        ${_('expires')}: ${h.age(h.time_to_datetime(api_key.expires))}
 
                    %endif
 
                 %endif
 
            </td>
 
            <td>
 
                ${h.form(url('my_account_api_keys'),method='delete')}
 
                    ${h.hidden('del_api_key',api_key.api_key)}
 
                    <button class="btn btn-mini btn-danger" type="submit"
 
                            onclick="return confirm('${_('Confirm to remove this api key: %s') % api_key.api_key}');">
 
                        <i class="icon-remove-sign"></i>
 
                        <i class="icon-minus-circled"></i>
 
                        ${_('remove')}
 
                    </button>
 
                ${h.end_form()}
 
            </td>
 
          </tr>
 
        %endfor
 
    %else:
 
    <tr><td><div class="ip">${_('No additional api keys specified')}</div></td></tr>
 
    %endif
 
  </table>
 
</div>
 

	
 
<div>
 
    ${h.form(url('my_account_api_keys'), method='post')}
 
    <div class="form">
 
        <!-- fields -->
 
        <div class="fields">
 
             <div class="field">
 
                <div class="label">
 
                    <label for="new_email">${_('New api key')}:</label>
 
                </div>
 
                <div class="input">
 
                    ${h.text('description', class_='medium', placeholder=_('Description'))}
 
                    ${h.select('lifetime', '', c.lifetime_options)}
kallithea/templates/admin/my_account/my_account_emails.html
Show inline comments
 
<div class="emails_wrap">
 
  <table class="noborder">
 
    <tr>
 
    <td><div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(c.user.email,16)}"/> </div></td>
 
    <td><div class="email">${c.user.email}</div></td>
 
    <td>
 
        <span class="btn btn-mini btn-success disabled">${_('Primary')}</span>
 
    </td>
 
    </tr>
 
    %if c.user_email_map:
 
        %for em in c.user_email_map:
 
          <tr>
 
            <td><div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(em.email,16)}"/> </div></td>
 
            <td><div class="email">${em.email}</div></td>
 
            <td>
 
                ${h.form(url('my_account_emails'),method='delete')}
 
                    ${h.hidden('del_email_id',em.email_id)}
 
                    <i class="icon-remove-sign" style="color:#FF4444"></i>
 
                    <i class="icon-minus-circled" style="color:#FF4444"></i>
 
                    ${h.submit('remove_',_('delete'),id="remove_email_%s" % em.email_id,
 
                    class_="action_button", onclick="return  confirm('"+_('Confirm to delete this email: %s') % em.email+"');")}
 
                ${h.end_form()}
 
            </td>
 
          </tr>
 
        %endfor
 
    %else:
 
    <tr><td><div class="ip">${_('No additional emails specified.')}</div></td></tr>
 
    %endif
 
  </table>
 
</div>
 

	
 
<div>
 
    ${h.form(url('my_account_emails'), method='post')}
 
    <div class="form">
 
        <!-- fields -->
 
        <div class="fields">
 
             <div class="field">
 
                <div class="label">
 
                    <label for="new_email">${_('New email address')}:</label>
 
                </div>
 
                <div class="input">
 
                    ${h.text('new_email', class_='medium')}
 
                </div>
kallithea/templates/admin/notifications/notifications_data.html
Show inline comments
 

	
 
%if c.notifications:
 
<%
 
unread = lambda n:{False:'unread'}.get(n)
 
%>
 

	
 

	
 
<div class="notification-list  notification-table">
 
%for notification in c.notifications:
 
  <div id="notification_${notification.notification.notification_id}" class="container ${unread(notification.read)}">
 
    <div class="notification-header">
 
      <div class="gravatar">
 
          <img alt="gravatar" src="${h.gravatar_url(h.email_or_none(notification.notification.created_by_user.email),24)}"/>
 
      </div>
 
      <div class="desc ${unread(notification.read)}">
 
      <a href="${url('notification', notification_id=notification.notification.notification_id)}">${notification.notification.description}</a>
 

	
 
      </div>
 
      <div class="delete-notifications">
 
        <span id="${notification.notification.notification_id}" class="delete-notification"><i class="icon-minus-sign" id="yui-gen24" style="color: #b94a48; padding: 2px;"></i></span>
 
        <span id="${notification.notification.notification_id}" class="delete-notification"><i class="icon-minus-circled" id="yui-gen24" style="color: #b94a48; padding: 2px;"></i></span>
 
      </div>
 
      %if not notification.read:
 
      <div class="read-notifications">
 
        <span id="${notification.notification.notification_id}" class="read-notification"><i class="icon-ok-sign" id="yui-gen24" style="color: #4CBB17; padding: 2px;"></i></span>
 
        <span id="${notification.notification.notification_id}" class="read-notification"><i class="icon-ok" id="yui-gen24" style="color: #4CBB17; padding: 2px;"></i></span>
 
      </div>
 
      %endif
 
    </div>
 
        <div class="notification-subject"></div>
 
  </div>
 
%endfor
 
</div>
 

	
 
<div class="notification-paginator">
 
  <div class="pagination-wh pagination-left">
 
  ${c.notifications.pager('$link_previous ~2~ $link_next',**request.GET.mixed())}
 
  </div>
 
</div>
 

	
 
%else:
 
    <div class="table">${_('No notifications here yet')}</div>
 
%endif
kallithea/templates/admin/notifications/show_notification.html
Show inline comments
 
@@ -13,45 +13,45 @@
 
    &raquo;
 
    ${_('Show Notification')}
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('admin')}
 
</%def>
 

	
 
<%def name="main()">
 
<div class="box">
 
    <!-- box / title -->
 
    <div class="title">
 
        ${self.breadcrumbs()}
 
    </div>
 
    <div class="table">
 
      <div id="notification_${c.notification.notification_id}">
 
        <div class="notification-header">
 
          <div class="gravatar">
 
              <img alt="gravatar" src="${h.gravatar_url(h.email_or_none(c.notification.created_by_user.email),24)}"/>
 
          </div>
 
          <div class="desc">
 
              ${c.notification.description}
 
          </div>
 
          <div class="delete-notifications">
 
            <span id="${c.notification.notification_id}" class="delete-notification action"><i class="icon-minus-sign" id="yui-gen24"></i></span>
 
            <span id="${c.notification.notification_id}" class="delete-notification action"><i class="icon-minus-circled" id="yui-gen24"></i></span>
 
          </div>
 
        </div>
 
        <div class="notification-body">
 
        <div class="notification-subject">${h.literal(c.notification.subject)}</div>
 
        %if c.notification.body:
 
            ${h.rst_w_mentions(c.notification.body)}
 
        %endif
 
        </div>
 
      </div>
 
    </div>
 
</div>
 
<script type="text/javascript">
 
var url = "${url('notification', notification_id='__NOTIFICATION_ID__')}";
 
var main = "${url('notifications')}";
 
   $('.delete-notification').click(function(e){
 
       var notification_id = e.currentTarget.id;
 
       deleteNotification(url,notification_id,[function(){window.location=main}])
 
   });
 
</script>
 
</%def>
kallithea/templates/admin/permissions/permissions.html
Show inline comments
 
@@ -10,43 +10,43 @@
 

	
 
<%def name="breadcrumbs_links()">
 
    ${h.link_to(_('Admin'),h.url('admin_home'))}
 
    &raquo;
 
    ${_('Permissions')}
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('admin')}
 
</%def>
 

	
 

	
 
<%def name="main()">
 
<div class="box" style="overflow:auto">
 
    <div class="title">
 
        ${self.breadcrumbs()}
 
    </div>
 

	
 
    ##main
 
    <div style="width: 150px; float:left">
 
        <ul class="nav nav-pills nav-stacked">
 
          <li>
 
           <div class="gravatar_box" style="height: 26px">
 
               <div class="gravatar" style="float: left">
 
                <i class="icon-ban-circle" style="font-size: 26px"></i>
 
                <i class="icon-block" style="font-size: 26px"></i>
 
               </div>
 
               <div class="truncate" style="margin:10px 0px 10px 0px; color:#5f5f5f; float:left; width: 100px">
 
                <strong>${_('Permissions')}</strong>
 
               </div>
 
           </div>
 
          </li>
 
          <li class="${'active' if c.active=='globals' else ''}"><a href="${h.url('admin_permissions')}">${_('Global')}</a></li>
 
          <li class="${'active' if c.active=='ips' else ''}"><a href="${h.url('admin_permissions_ips')}">${_('IP Whitelist')}</a></li>
 
          <li class="${'active' if c.active=='perms' else ''}"><a href="${h.url('admin_permissions_perms')}">${_('Overview')}</a></li>
 
        </ul>
 
    </div>
 

	
 
    <div style="width:750px; float:left; padding: 10px 0px 0px 20px;margin: 0px 0px 0px 10px; border-left: 1px solid #DDDDDD">
 
        <%include file="/admin/permissions/permissions_${c.active}.html"/>
 
    </div>
 
</div>
 

	
 
</%def>
kallithea/templates/admin/permissions/permissions_ips.html
Show inline comments
 
<h4>${_('Default IP Whitelist for All Users')}</h4>
 

	
 
<div class="ips_wrap">
 
      <table class="noborder">
 
      %if c.user_ip_map:
 
        %for ip in c.user_ip_map:
 
          <tr>
 
              <td><div class="ip">${ip.ip_addr}</div></td>
 
              <td><div class="ip">${h.ip_range(ip.ip_addr)}</div></td>
 
              <td>
 
                ${h.form(url('edit_user_ips', id=c.user.user_id),method='delete')}
 
                    ${h.hidden('del_ip_id',ip.ip_id)}
 
                    ${h.hidden('default_user', 'True')}
 
                    <i class="icon-remove-sign" style="color:#FF4444"></i> ${h.submit('remove_',_('delete'),id="remove_ip_%s" % ip.ip_id,
 
                    <i class="icon-minus-circled" style="color:#FF4444"></i> ${h.submit('remove_',_('delete'),id="remove_ip_%s" % ip.ip_id,
 
                    class_="action_button", onclick="return confirm('"+_('Confirm to delete this ip: %s') % ip.ip_addr+"');")}
 
                ${h.end_form()}
 
              </td>
 
          </tr>
 
        %endfor
 
       %else:
 
        <tr><td><div class="ip">${_('All IP addresses are allowed.')}</div></td></tr>
 
       %endif
 
      </table>
 
</div>
 

	
 
${h.form(url('edit_user_ips', id=c.user.user_id),method='put')}
 
    <div class="form">
 
        <!-- fields -->
 
        <div class="fields">
 
             <div class="field">
 
                <div class="label">
 
                    <label for="new_ip">${_('New ip address')}:</label>
 
                </div>
 
                <div class="input">
 
                    ${h.hidden('default_user', 'True')}
 
                    ${h.text('new_ip', class_='medium')}
 
                </div>
 
             </div>
kallithea/templates/admin/repo_groups/repo_group_edit_advanced.html
Show inline comments
 
<div style="font-size: 24px; color: #666666; padding: 0px 0px 10px 0px">${_('Repository Group: %s') % c.repo_group.group_name}</div>
 

	
 
<dl class="dl-horizontal">
 
<%
 
 elems = [
 
    (_('Top level repositories'), c.repo_group.repositories.count(), ''),
 
    (_('Total repositories'), c.repo_group.repositories_recursive_count, ''),
 
    (_('Children groups'), c.repo_group.children.count(), ''),
 
    (_('Created on'), h.fmt_date(c.repo_group.created_on), ''),
 
    (_('Owner'), h.person(c.repo_group.user.username), '')
 
 ]
 
%>
 
%for dt, dd, tt in elems:
 
  <dt style="width:150px; text-align: left">${dt}:</dt>
 
  <dd style="margin-left: 160px" title="${tt}">${dd}</dd>
 
%endfor
 
</dl>
 

	
 
${h.form(h.url('repos_group', group_name=c.repo_group.group_name),method='delete')}
 
    <button class="btn btn-small btn-danger" type="submit"
 
            onclick="return confirm('${ungettext('Confirm to delete this group: %s with %s repository',
 
          'Confirm to delete this group: %s with %s repositories',
 
 c.repo_group.repositories_recursive_count) % (c.repo_group.group_name, c.repo_group.repositories_recursive_count)}');">
 
        <i class="icon-remove-sign"></i>
 
        <i class="icon-minus-circled"></i>
 
        ${_('Delete this repository group')}
 
    </button>
 
${h.end_form()}
kallithea/templates/admin/repo_groups/repo_group_edit_perms.html
Show inline comments
 
@@ -10,86 +10,86 @@ ${h.form(url('edit_repo_group_perms', gr
 
                    <td>${_('admin')}</td>
 
                    <td>${_('user/user group')}</td>
 
                    <td></td>
 
                </tr>
 
                ## USERS
 
                %for r2p in c.repo_group.repo_group_to_perm:
 
                    ##forbid revoking permission from yourself, except if you're an super admin
 
                    <tr id="id${id(r2p.user.username)}">
 
                        %if c.authuser.user_id != r2p.user.user_id or c.authuser.is_admin:
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'group.none')}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'group.read')}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'group.write')}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'group.admin')}</td>
 
                        <td style="white-space: nowrap;">
 
                            <img class="perm-gravatar" src="${h.gravatar_url(r2p.user.email,14)}"/>
 
                            %if h.HasPermissionAny('hg.admin')() and r2p.user.username != 'default':
 
                             <a href="${h.url('edit_user',id=r2p.user.user_id)}">${r2p.user.username}</a>
 
                            %else:
 
                             ${r2p.user.username if r2p.user.username != 'default' else _('default')}
 
                            %endif
 
                        </td>
 
                        <td>
 
                          %if r2p.user.username !='default':
 
                            <span style="color:#da4f49" class="action_button" onclick="ajaxActionRevoke(${r2p.user.user_id}, 'user', '${'id%s'%id(r2p.user.username)}', '${r2p.user.username}')">
 
                             <i class="icon-remove"></i> ${_('revoke')}
 
                             <i class="icon-minus-circled"></i> ${_('revoke')}
 
                            </span>
 
                          %endif
 
                        </td>
 
                        %else:
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'group.none', disabled="disabled")}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'group.read', disabled="disabled")}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'group.write', disabled="disabled")}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'group.admin', disabled="disabled")}</td>
 
                        <td style="white-space: nowrap;">
 
                            <img class="perm-gravatar" src="${h.gravatar_url(r2p.user.email,14)}"/>
 
                            ${r2p.user.username if r2p.user.username != 'default' else _('default')}
 
                        </td>
 
                        <td><i class="icon-user"></i> ${_('delegated admin')}</td>
 
                        %endif
 
                    </tr>
 
                %endfor
 

	
 
                ## USER GROUPS
 
                %for g2p in c.repo_group.users_group_to_perm:
 
                    <tr id="id${id(g2p.users_group.users_group_name)}">
 
                        <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'group.none')}</td>
 
                        <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'group.read')}</td>
 
                        <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'group.write')}</td>
 
                        <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'group.admin')}</td>
 
                        <td style="white-space: nowrap;">
 
                            <img class="perm-gravatar" src="${h.url('/images/icons/group.png')}"/>
 
                            %if h.HasPermissionAny('hg.admin')():
 
                             <a href="${h.url('edit_users_group',id=g2p.users_group.users_group_id)}">
 
                                 ${g2p.users_group.users_group_name}
 
                             </a>
 
                            %else:
 
                             ${g2p.users_group.users_group_name}
 
                            %endif
 
                        </td>
 
                        <td>
 
                            <span style="color:#da4f49" class="action_button" onclick="ajaxActionRevoke(${g2p.users_group.users_group_id}, 'user_group', '${'id%s'%id(g2p.users_group.users_group_name)}', '${g2p.users_group.users_group_name}')">
 
                            <i class="icon-remove"></i> ${_('revoke')}
 
                            <i class="icon-minus-circled"></i> ${_('revoke')}
 
                            </span>
 
                        </td>
 
                    </tr>
 
                %endfor
 

	
 
                <%
 
                _tmpl = h.literal("""' \
 
                    <td><input type="radio" value="group.none" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
 
                    <td><input type="radio" value="group.read" checked="checked" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
 
                    <td><input type="radio" value="group.write" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
 
                    <td><input type="radio" value="group.admin" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
 
                    <td class="ac"> \
 
                        <div class="perm_ac" id="perm_ac_{0}"> \
 
                            <input class="yui-ac-input" id="perm_new_member_name_{0}" name="perm_new_member_name_{0}" value="" type="text"> \
 
                            <input id="perm_new_member_type_{0}" name="perm_new_member_type_{0}" value="" type="hidden">  \
 
                            <div id="perm_container_{0}"></div> \
 
                        </div> \
 
                    </td> \
 
                    <td></td>'""")
 
                %>
 
                ## ADD HERE DYNAMICALLY NEW INPUTS FROM THE '_tmpl'
 
                <tr class="new_members last_new_member" id="add_perm_input"></tr>
 
                <tr>
 
                    <td colspan="6">
kallithea/templates/admin/repos/repo_add_base.html
Show inline comments
 
## -*- coding: utf-8 -*-
 

	
 
${h.form(url('repos'))}
 
<div class="form">
 
    <!-- fields -->
 
    <div class="fields">
 
        <div class="field">
 
            <div class="label">
 
                <label for="repo_name">${_('Name')}:</label>
 
            </div>
 
            <div class="input">
 
                ${h.text('repo_name',class_="small")}
 
                <div style="margin: 6px 0px 0px 0px">
 
                    <a id="remote_clone_toggle" href="#"><i class="icon-download-alt"></i> ${_('Import existing repository ?')}</a>
 
                    <a id="remote_clone_toggle" href="#"><i class="icon-download-cloud"></i> ${_('Import existing repository ?')}</a>
 
                </div>
 
                %if not c.authuser.is_admin:
 
                    ${h.hidden('user_created',True)}
 
                %endif
 
            </div>
 
         </div>
 
        <div id="remote_clone" class="field" style="display: none">
 
            <div class="label">
 
                <label for="clone_uri">${_('Clone from')}:</label>
 
            </div>
 
            <div class="input">
 
                ${h.text('clone_uri',class_="small")}
 
                <span class="help-block">${_('Optional http[s] url from which repository should be cloned.')}</span>
 
            </div>
 
        </div>
 
        <div class="field">
 
            <div class="label label-textarea">
 
                <label for="repo_description">${_('Description')}:</label>
 
            </div>
 
            <div class="textarea-repo editor">
 
                ${h.textarea('repo_description')}
 
                <span class="help-block">${_('Keep it short and to the point. Use a README file for longer descriptions.')}</span>
 
            </div>
 
        </div>
kallithea/templates/admin/repos/repo_edit.html
Show inline comments
 
@@ -11,49 +11,49 @@
 
    %endif
 
</%def>
 

	
 
<%def name="breadcrumbs_links()">
 
    ${_('Settings')}
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('repositories')}
 
</%def>
 

	
 
<%def name="main()">
 
${self.repo_context_bar('options')}
 
<div class="box" style="overflow:auto">
 
    <!--<div class="title">-->
 
        <!--${self.breadcrumbs()}-->
 
    <!--</div>-->
 

	
 
    ##main
 
    <div style="width: 150px; float:left">
 
        <ul class="nav nav-pills nav-stacked">
 
          <!--<li>-->
 
           <!--<div class="gravatar_box" style="height: 26px">-->
 
             <!--<div class="gravatar" style="float: left">-->
 
                <!--<i class="icon-group" style="font-size: 26px"></i>-->
 
                <!--<i class="icon-users" style="font-size: 26px"></i>-->
 
             <!--</div>-->
 
               <!--<div style="margin:10px 0px 10px 0px; color:#5f5f5f; float:left">-->
 
                <!--<strong>${'repo-info'}</strong>-->
 
               <!--</div>-->
 
           <!--</div>-->
 
          <!--</li>-->
 
          <li class="${'active' if c.active=='settings' else ''}">
 
              <a href="${h.url('edit_repo', repo_name=c.repo_name)}">${_('Settings')}</a>
 
          </li>
 
          <li class="${'active' if c.active=='permissions' else ''}">
 
              <a href="${h.url('edit_repo_perms', repo_name=c.repo_name)}">${_('Permissions')}</a>
 
          </li>
 
          <li class="${'active' if c.active=='advanced' else ''}">
 
              <a href="${h.url('edit_repo_advanced', repo_name=c.repo_name)}">${_('Advanced')}</a>
 
          </li>
 
          <li class="${'active' if c.active=='fields' else ''}">
 
              <a href="${h.url('edit_repo_fields', repo_name=c.repo_name)}">${_('Extra Fields')}</a>
 
          </li>
 
          <li class="${'active' if c.active=='caches' else ''}">
 
              <a href="${h.url('edit_repo_caches', repo_name=c.repo_name)}">${_('Caches')}</a>
 
          </li>
 
          <li class="${'active' if c.active=='remote' else ''}">
 
              <a href="${h.url('edit_repo_remote', repo_name=c.repo_name)}">${_('Remote')}</a>
 
          </li>
kallithea/templates/admin/repos/repo_edit_advanced.html
Show inline comments
 
@@ -30,66 +30,66 @@ ${h.form(url('edit_repo_advanced_journal
 
        ${_('Remove from public journal')}
 
    </button>
 
  %else:
 
    <button class="btn btn-small" type="submit">
 
        <i class="icon-plus"></i>
 
        ${_('Add to Public Journal')}
 
    </button>
 
  %endif
 
  </div>
 
 <div class="field" style="border:none;color:#888">
 
 <ul>
 
      <li>${_('All actions done in this repository will be visible to everyone in the public journal.')}</li>
 
 </ul>
 
 </div>
 
</div>
 
${h.end_form()}
 

	
 
<h3>${_('Change Locking')}</h3>
 
${h.form(url('edit_repo_advanced_locking', repo_name=c.repo_info.repo_name), method='put')}
 
<div class="form">
 
      %if c.repo_info.locked[0]:
 
        ${h.hidden('set_unlock', '1')}
 
        <button class="btn btn-small" type="submit"
 
                onclick="return confirm('${_('Confirm to unlock repository.')}');">
 
            <i class="icon-unlock"></i>
 
            <i class="icon-lock-open-alt"></i>
 
            ${_('Unlock Repository')}
 
        </button>
 
       ${'Locked by %s on %s' % (h.person_by_id(c.repo_info.locked[0]),h.fmt_date(h.time_to_datetime(c.repo_info.locked[1])))}
 
      %else:
 
        ${h.hidden('set_lock', '1')}
 
        <button class="btn btn-small" type="submit"
 
                onclick="return confirm('${_('Confirm to lock repository.')}');">
 
            <i class="icon-lock"></i>
 
            ${_('Lock Repository')}
 
        </button>
 
        ${_('Repository is not locked')}
 
      %endif
 
   <div class="field" style="border:none;color:#888">
 
   <ul>
 
        <li>${_('Force locking on the repository. Works only when anonymous access is disabled. Triggering a pull locks the repository.  The user who is pulling locks the repository; only the user who pulled and locked it can unlock it by doing a push.')}
 
        </li>
 
   </ul>
 
   </div>
 
</div>
 
${h.end_form()}
 

	
 
<h3>${_('Delete')}</h3>
 
${h.form(url('repo', repo_name=c.repo_name),method='delete')}
 
<div class="form">
 
    <button class="btn btn-small btn-danger" type="submit"
 
            onclick="return confirm('${_('Confirm to delete this repository: %s') % c.repo_name}');">
 
        <i class="icon-remove-sign"></i>
 
        <i class="icon-remove-circled"></i>
 
        ${_('Delete this Repository')}
 
    </button>
 
    %if c.repo_info.forks.count():
 
        ${ungettext('This repository has %s fork', 'This repository has %s forks', c.repo_info.forks.count()) % c.repo_info.forks.count()}
 
        <input type="radio" name="forks" value="detach_forks" checked="checked"/> <label for="forks">${_('Detach forks')}</label>
 
        <input type="radio" name="forks" value="delete_forks" /> <label for="forks">${_('Delete forks')}</label>
 
    %endif
 
    <div class="field" style="border:none;color:#888">
 
        <ul>
 
        <li>${_('The deleted repository will be moved away and hidden until the administrator expires it. The administrator can both permanently delete it or restore it.')}</li>
 
        </ul>
 
    </div>
 
</div>
 
${h.end_form()}
kallithea/templates/admin/repos/repo_edit_fields.html
Show inline comments
 
%if c.visual.repository_fields:
 
    %if c.repo_fields:
 
    <div class="emails_wrap">
 
      <table class="noborder">
 
        <th>${_('Label')}</th>
 
        <th>${_('Key')}</th>
 
        <th>${_('Type')}</th>
 
        <th>${_('Action')}</th>
 

	
 
      %for field in c.repo_fields:
 
        <tr>
 
            <td>${field.field_label}</td>
 
            <td>${field.field_key}</td>
 
            <td>${field.field_type}</td>
 
            <td>
 
              ${h.form(url('delete_repo_fields', repo_name=c.repo_info.repo_name, field_id=field.repo_field_id),method='delete')}
 
                  <i class="icon-remove-sign" style="color:#FF4444"></i>
 
                  <i class="icon-minus-circled" style="color:#FF4444"></i>
 
                  ${h.submit('remove_%s' % field.repo_field_id, _('delete'), id="remove_field_%s" % field.repo_field_id,
 
                  class_="action_button", onclick="return confirm('"+_('Confirm to delete this field: %s') % field.field_key+"');")}
 
              ${h.end_form()}
 
            </td>
 
        </tr>
 
      %endfor
 
      </table>
 
    </div>
 
    %endif
 
    ${h.form(url('create_repo_fields', repo_name=c.repo_name),method='put')}
 
    <div class="form">
 
        <!-- fields -->
 
        <div class="fields">
 
             <div class="field">
 
                <div class="label">
 
                    <label for="new_field_key">${_('New field key')}:</label>
 
                </div>
 
                <div class="input">
 
                    ${h.text('new_field_key', class_='small')}
 
                </div>
 
             </div>
 
             <div class="field">
 
                <div class="label">
 
                    <label for="new_field_label">${_('New field label')}:</label>
kallithea/templates/admin/repos/repo_edit_permissions.html
Show inline comments
 
@@ -19,74 +19,74 @@ ${h.form(url('edit_repo_perms_update', r
 
                            <td colspan="4">
 
                                <span class="private_repo_msg">
 
                                ${_('private repository')}
 
                                </span>
 
                            </td>
 
                            <td class="private_repo_msg"><i class="icon-user"></i> ${_('default')}</td>
 
                        </tr>
 
                    %else:
 
                    <tr id="id${id(r2p.user.username)}">
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.none')}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.read')}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.write')}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.admin')}</td>
 
                        <td style="white-space: nowrap;">
 
                            <img class="perm-gravatar" src="${h.gravatar_url(r2p.user.email,14)}"/>
 
                            %if h.HasPermissionAny('hg.admin')() and r2p.user.username != 'default':
 
                             <a href="${h.url('edit_user',id=r2p.user.user_id)}">${r2p.user.username}</a>
 
                            %else:
 
                             ${r2p.user.username if r2p.user.username != 'default' else _('default')}
 
                            %endif
 
                        </td>
 
                        <td>
 
                          %if r2p.user.username !='default':
 
                            <span style="color:#da4f49" class="action_button" onclick="ajaxActionRevoke(${r2p.user.user_id}, 'user', '${'id%s'%id(r2p.user.username)}', '${r2p.user.username}')">
 
                            <i class="icon-remove"></i> ${_('revoke')}
 
                            <i class="icon-minus-circled"></i> ${_('revoke')}
 
                            </span>
 
                          %endif
 
                        </td>
 
                    </tr>
 
                    %endif
 
                %endfor
 

	
 
                ## USER GROUPS
 
                %for g2p in sorted(c.repo_info.users_group_to_perm, key=lambda x:x.users_group.users_group_name):
 
                    <tr id="id${id(g2p.users_group.users_group_name)}">
 
                        <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.none')}</td>
 
                        <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.read')}</td>
 
                        <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.write')}</td>
 
                        <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.admin')}</td>
 
                        <td style="white-space: nowrap;">
 
                            <img class="perm-gravatar" src="${h.url('/images/icons/group.png')}"/>
 
                            %if h.HasPermissionAny('hg.admin')():
 
                             <a href="${h.url('edit_users_group',id=g2p.users_group.users_group_id)}">${g2p.users_group.users_group_name}</a>
 
                            %else:
 
                             ${g2p.users_group.users_group_name}
 
                            %endif
 
                        </td>
 
                        <td>
 
                            <span style="color:#da4f49" class="action_button" onclick="ajaxActionRevoke(${g2p.users_group.users_group_id}, 'user_group', '${'id%s'%id(g2p.users_group.users_group_name)}', '${g2p.users_group.users_group_name}')">
 
                            <i class="icon-remove"></i> ${_('revoke')}
 
                            <i class="icon-minus-circled"></i> ${_('revoke')}
 
                            </span>
 
                        </td>
 
                    </tr>
 
                %endfor
 

	
 
                <%
 
                _tmpl = h.literal("""' \
 
                    <td><input type="radio" value="repository.none" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
 
                    <td><input type="radio" value="repository.read" checked="checked" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
 
                    <td><input type="radio" value="repository.write" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
 
                    <td><input type="radio" value="repository.admin" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
 
                    <td class="ac"> \
 
                        <div class="perm_ac" id="perm_ac_{0}"> \
 
                            <input class="yui-ac-input" id="perm_new_member_name_{0}" name="perm_new_member_name_{0}" value="" type="text"> \
 
                            <input id="perm_new_member_type_{0}" name="perm_new_member_type_{0}" value="" type="hidden">  \
 
                            <div id="perm_container_{0}"></div> \
 
                        </div> \
 
                    </td> \
 
                    <td></td>'""")
 
                %>
 
                ## ADD HERE DYNAMICALLY NEW INPUTS FROM THE '_tmpl'
 
                <tr class="new_members last_new_member" id="add_perm_input"></tr>
 
                <tr>
 
                    <td colspan="6">
kallithea/templates/admin/settings/settings.html
Show inline comments
 
@@ -9,48 +9,48 @@
 
</%def>
 

	
 
<%def name="breadcrumbs_links()">
 
    ${h.link_to(_('Admin'),h.url('admin_home'))}
 
    &raquo;
 
    ${_('Settings')}
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('admin')}
 
</%def>
 

	
 
<%def name="main()">
 
<div class="box" style="overflow:auto">
 
    <div class="title">
 
        ${self.breadcrumbs()}
 
    </div>
 

	
 
    ##main
 
    <div style="width: 150px; float:left">
 
        <ul class="nav nav-pills nav-stacked">
 
          <li>
 
           <div class="gravatar_box" style="height: 26px">
 
               <div class="gravatar" style="float: left">
 
                <i class="icon-cog" style="font-size: 26px"></i>
 
                <i class="icon-gear" style="font-size: 26px"></i>
 
               </div>
 
               <div style="margin:10px 0px 10px 0px; color:#5f5f5f; float:left">
 
                <strong>${_('Settings')}</strong>
 
               </div>
 
           </div>
 
          </li>
 
          <li class="${'active' if c.active=='vcs' else ''}"><a href="${h.url('admin_settings')}">${_('VCS')}</a></li>
 
          <li class="${'active' if c.active=='mapping' else ''}"><a href="${h.url('admin_settings_mapping')}">${_('Remap and Rescan')}</a></li>
 
          <li class="${'active' if c.active=='global' else ''}"><a href="${h.url('admin_settings_global')}">${_('Global')}</a></li>
 
          <li class="${'active' if c.active=='visual' else ''}"><a href="${h.url('admin_settings_visual')}">${_('Visual')}</a></li>
 
          <li class="${'active' if c.active=='email' else ''}"><a href="${h.url('admin_settings_email')}">${_('Email')}</a></li>
 
          <li class="${'active' if c.active=='hooks' else ''}"><a href="${h.url('admin_settings_hooks')}">${_('Hooks')}</a></li>
 
          <li class="${'active' if c.active=='search' else ''}"><a href="${h.url('admin_settings_search')}">${_('Full Text Search')}</a></li>
 
          <li class="${'active' if c.active=='system' else ''}"><a href="${h.url('admin_settings_system')}">${_('System Info')}</a></li>
 
        </ul>
 
    </div>
 

	
 
    <div style="width:750px; float:left; padding: 10px 0px 0px 20px;margin: 0px 0px 0px 10px; border-left: 1px solid #DDDDDD">
 
        <%include file="/admin/settings/settings_${c.active}.html"/>
 
    </div>
 
</div>
 

	
 
</%def>
kallithea/templates/admin/settings/settings_hooks.html
Show inline comments
 
@@ -11,49 +11,49 @@
 
            </div>
 
        </div>
 
      % endfor
 
    </div>
 
    <span class="help-block">${_('Hooks can be used to trigger actions on certain events such as push / pull. They can trigger Python functions or external applications.')}</span>
 
</div>
 

	
 
% if c.visual.allow_custom_hooks_settings:
 
<h4>${_('Custom Hooks')}</h4>
 
${h.form(url('admin_settings_hooks'), method='post')}
 
<div class="form">
 
    <div class="fields">
 

	
 
      % for hook in c.custom_hooks:
 
      <div class="field"  id="${'id%s' % hook.ui_id }">
 
        <div class="label label">
 
            <label for="${hook.ui_key}">${hook.ui_key}</label>
 
        </div>
 
        <div class="input" style="margin-left:280px">
 
            ${h.hidden('hook_ui_key',hook.ui_key)}
 
            ${h.hidden('hook_ui_value',hook.ui_value)}
 
            ${h.text('hook_ui_value_new',hook.ui_value,size=60)}
 
            <span class="action_button"
 
            onclick="ajaxActionHook(${hook.ui_id},'${'id%s' % hook.ui_id }')">
 
            <i class="icon-remove-sign" style="color:#FF4444"></i>
 
            <i class="icon-minus-circled" style="color:#FF4444"></i>
 
            ${_('delete')}
 
            </span>
 
        </div>
 
      </div>
 
      % endfor
 

	
 
      <div class="field">
 
        <div class="input" style="margin-left:-135px;position: absolute;">
 
          <div class="input">
 
             ${h.text('new_hook_ui_key',size=30)}
 
          </div>
 
        </div>
 
        <div class="input" style="margin-left:280px">
 
            ${h.text('new_hook_ui_value',size=60)}
 
        </div>
 
      </div>
 
      <div class="buttons" style="margin-left:280px">
 
         ${h.submit('save',_('Save'),class_="btn")}
 
      </div>
 
    </div>
 
</div>
 
${h.end_form()}
 
% endif
 

	
kallithea/templates/admin/settings/settings_vcs.html
Show inline comments
 
@@ -67,30 +67,30 @@ ${h.form(url('admin_settings'), method='
 
                    ${h.text('paths_root_path',size=60,readonly="readonly", class_="disabled")}
 
                    <span id="path_unlock" class="tooltip" style="cursor: pointer"
 
                            title="${h.tooltip(_('Click to unlock. You must restart Kallithea in order to make this setting take effect.'))}">
 
                        <div class="btn btn-small"><i id="path_unlock_icon" class="icon-lock"></i></div>
 
                    </span>
 
                    <span class="help-block">${_('Filesystem location where repositories are stored. After changing this value, a restart and rescan of the repository folder are both required.')}</span>
 
                </div>
 
            </div>
 
            %else:
 
            ## form still requires this but we cannot internally change it anyway
 
            ${h.hidden('paths_root_path',size=30,readonly="readonly", class_="disabled")}
 
            %endif
 
            <div class="buttons">
 
                ${h.submit('save',_('Save Settings'),class_="btn")}
 
                ${h.reset('reset',_('Reset'),class_="btn")}
 
           </div>
 
        </div>
 
    </div>
 
    ${h.end_form()}
 

	
 
    <script type="text/javascript">
 
        $(document).ready(function(){
 
            $('#path_unlock').on('click', function(e){
 
                $('#path_unlock_icon').removeClass('icon-lock');
 
                $('#path_unlock_icon').addClass('icon-unlock');
 
                $('#path_unlock_icon').addClass('icon-lock-open-alt');
 
                $('#paths_root_path').removeAttr('readonly');
 
                $('#paths_root_path').removeClass('disabled');
 
            })
 
        })
 
    </script>
kallithea/templates/admin/user_groups/user_group_edit.html
Show inline comments
 
@@ -11,44 +11,44 @@
 
<%def name="breadcrumbs_links()">
 
    ${h.link_to(_('Admin'),h.url('admin_home'))}
 
    &raquo;
 
    ${h.link_to(_('User Groups'),h.url('users_groups'))}
 
    &raquo;
 
    ${c.user_group.users_group_name}
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('admin')}
 
</%def>
 

	
 
<%def name="main()">
 
<div class="box" style="overflow:auto">
 
    <div class="title">
 
        ${self.breadcrumbs()}
 
    </div>
 

	
 
    ##main
 
    <div style="width: 150px; float:left">
 
        <ul class="nav nav-pills nav-stacked">
 
          <li>
 
           <div class="gravatar_box" style="height: 26px">
 
             <div class="gravatar" style="float: left">
 
                <i class="icon-group" style="font-size: 26px"></i>
 
                <i class="icon-users" style="font-size: 26px"></i>
 
             </div>
 
               <div class="truncate" style="margin:7px 0px 10px 0px; color:#5f5f5f; float:left; width: 100px">
 
                <strong>${c.user_group.users_group_name}</strong>
 
               </div>
 
           </div>
 
          </li>
 
          <li class="${'active' if c.active=='settings' else ''}"><a href="${h.url('edit_users_group', id=c.user_group.users_group_id)}">${_('Settings')}</a></li>
 
          <li class="${'active' if c.active=='advanced' else ''}"><a href="${h.url('edit_user_group_advanced', id=c.user_group.users_group_id)}">${_('Advanced')}</a></li>
 
          <li class="${'active' if c.active=='default_perms' else ''}"><a href="${h.url('edit_user_group_default_perms', id=c.user_group.users_group_id)}">${_('Default permissions')}</a></li>
 
          <li class="${'active' if c.active=='perms' else ''}"><a href="${h.url('edit_user_group_perms', id=c.user_group.users_group_id)}">${_('Permissions')}</a></li>
 
          <li class="${'active' if c.active=='members' else ''}"><a href="${h.url('edit_user_group_members', id=c.user_group.users_group_id)}">${_('Members')}</a></li>
 
        </ul>
 
    </div>
 

	
 
    <div style="width:750px; float:left; padding: 10px 0px 0px 20px;margin: 0px 0px 0px 10px; border-left: 1px solid #DDDDDD">
 
        <%include file="/admin/user_groups/user_group_edit_${c.active}.html"/>
 
    </div>
 
</div>
 
</%def>
kallithea/templates/admin/user_groups/user_group_edit_advanced.html
Show inline comments
 
<div style="font-size: 24px; color: #666666; padding: 0px 0px 10px 0px">${_('User Group: %s') % c.user_group.users_group_name}</div>
 

	
 
<dl class="dl-horizontal">
 
<%
 
 elems = [
 
    (_('Members'), len(c.group_members_obj), ''),
 
    (_('Created on'), h.fmt_date(c.user_group.created_on), ''),
 
    (_('Owner'), h.person(c.user_group.user.username), '')
 
    ]
 
%>
 
%for dt, dd, tt in elems:
 
  <dt style="width:150px; text-align: left">${dt}:</dt>
 
  <dd style="margin-left: 160px" title="${tt}">${dd}</dd>
 
%endfor
 
</dl>
 

	
 
${h.form(h.url('users_group', id=c.user_group.users_group_id),method='delete')}
 
    <button class="btn btn-small btn-danger" type="submit"
 
            onclick="return confirm('${_('Confirm to delete this user group: %s') % c.user_group.users_group_name}');">
 
        <i class="icon-remove-sign"></i>
 
        <i class="icon-minus-circled"></i>
 
        ${_('Delete this user group')}
 
    </button>
 
${h.end_form()}
kallithea/templates/admin/user_groups/user_group_edit_perms.html
Show inline comments
 
@@ -10,86 +10,86 @@ ${h.form(url('edit_user_group_perms', id
 
                    <td>${_('admin')}</td>
 
                    <td>${_('user/user group')}</td>
 
                    <td></td>
 
                </tr>
 
                ## USERS
 
                %for r2p in c.user_group.user_user_group_to_perm:
 
                    ##forbid revoking permission from yourself, except if you're an super admin
 
                    <tr id="id${id(r2p.user.username)}">
 
                        %if c.authuser.user_id != r2p.user.user_id or c.authuser.is_admin:
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'usergroup.none')}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'usergroup.read')}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'usergroup.write')}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'usergroup.admin')}</td>
 
                        <td style="white-space: nowrap;">
 
                            <img class="perm-gravatar" src="${h.gravatar_url(r2p.user.email,14)}"/>
 
                            %if h.HasPermissionAny('hg.admin')() and r2p.user.username != 'default':
 
                             <a href="${h.url('edit_user',id=r2p.user.user_id)}">${r2p.user.username}</a>
 
                            %else:
 
                             ${r2p.user.username if r2p.user.username != 'default' else _('default')}
 
                            %endif
 
                        </td>
 
                        <td>
 
                          %if r2p.user.username !='default':
 
                            <span style="color:#da4f49" class="action_button" onclick="ajaxActionRevoke(${r2p.user.user_id}, 'user', '${'id%s'%id(r2p.user.username)}', '${r2p.user.username}')">
 
                             <i class="icon-remove"></i> ${_('revoke')}
 
                             <i class="icon-minus-circled"></i> ${_('revoke')}
 
                            </span>
 
                          %endif
 
                        </td>
 
                        %else:
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'usergroup.none', disabled="disabled")}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'usergroup.read', disabled="disabled")}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'usergroup.write', disabled="disabled")}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'usergroup.admin', disabled="disabled")}</td>
 
                        <td style="white-space: nowrap;">
 
                            <img class="perm-gravatar" src="${h.gravatar_url(r2p.user.email,14)}"/>
 
                            ${r2p.user.username if r2p.user.username != 'default' else _('default')}
 
                        </td>
 
                        <td><i class="icon-user"></i> ${_('delegated admin')}</td>
 
                        %endif
 
                    </tr>
 
                %endfor
 

	
 
                ## USER GROUPS
 
                %for g2p in c.user_group.user_group_user_group_to_perm:
 
                    <tr id="id${id(g2p.user_group.users_group_name)}">
 
                        <td>${h.radio('g_perm_%s' % g2p.user_group.users_group_name,'usergroup.none')}</td>
 
                        <td>${h.radio('g_perm_%s' % g2p.user_group.users_group_name,'usergroup.read')}</td>
 
                        <td>${h.radio('g_perm_%s' % g2p.user_group.users_group_name,'usergroup.write')}</td>
 
                        <td>${h.radio('g_perm_%s' % g2p.user_group.users_group_name,'usergroup.admin')}</td>
 
                        <td style="white-space: nowrap;">
 
                            <img class="perm-gravatar" src="${h.url('/images/icons/group.png')}"/>
 
                            %if h.HasPermissionAny('hg.admin')():
 
                             <a href="${h.url('edit_users_group',id=g2p.user_group.users_group_id)}">
 
                                 ${g2p.user_group.users_group_name}
 
                             </a>
 
                            %else:
 
                             ${g2p.user_group.users_group_name}
 
                            %endif
 
                        </td>
 
                        <td>
 
                            <span style="color:#da4f49" class="action_button" onclick="ajaxActionRevoke(${g2p.user_group.users_group_id}, 'user_group', '${'id%s'%id(g2p.user_group.users_group_name)}', '${g2p.user_group.users_group_name}')">
 
                            <i class="icon-remove"></i> ${_('revoke')}
 
                            <i class="icon-minus-circled"></i> ${_('revoke')}
 
                            </span>
 
                        </td>
 
                    </tr>
 
                %endfor
 

	
 
                <%
 
                _tmpl = h.literal("""' \
 
                    <td><input type="radio" value="usergroup.none" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
 
                    <td><input type="radio" value="usergroup.read" checked="checked" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
 
                    <td><input type="radio" value="usergroup.write" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
 
                    <td><input type="radio" value="usergroup.admin" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
 
                    <td class="ac"> \
 
                        <div class="perm_ac" id="perm_ac_{0}"> \
 
                            <input class="yui-ac-input" id="perm_new_member_name_{0}" name="perm_new_member_name_{0}" value="" type="text"> \
 
                            <input id="perm_new_member_type_{0}" name="perm_new_member_type_{0}" value="" type="hidden">  \
 
                            <div id="perm_container_{0}"></div> \
 
                        </div> \
 
                    </td> \
 
                    <td></td>'""")
 
                %>
 
                ## ADD HERE DYNAMICALLY NEW INPUTS FROM THE '_tmpl'
 
                <tr class="new_members last_new_member" id="add_perm_input"></tr>
 
                <tr>
 
                    <td colspan="6">
kallithea/templates/admin/user_groups/user_group_edit_settings.html
Show inline comments
 
@@ -20,55 +20,55 @@ ${h.form(url('users_group', id=c.user_gr
 
                    </div>
 
                 </div>
 
                 <div class="field">
 
                    <div class="label label-checkbox">
 
                        <label for="users_group_active">${_('Active')}:</label>
 
                    </div>
 
                    <div class="checkboxes">
 
                        ${h.checkbox('users_group_active',value=True)}
 
                    </div>
 
                 </div>
 
                <div class="field">
 
                    <div class="label">
 
                        <label for="users_group_active">${_('Members')}:</label>
 
                    </div>
 
                    <div class="select">
 
                        <table>
 
                                <tr>
 
                                    <td>
 
                                        <div>
 
                                            <div style="float:left">
 
                                                <div class="text" style="padding: 0px 0px 6px;">${_('Chosen group members')}</div>
 
                                                ${h.select('users_group_members',[x[0] for x in c.group_members],c.group_members,multiple=True,size=8,style="min-width:210px")}
 
                                               <div id="remove_all_elements" style="cursor:pointer;text-align:center;margin: 4px; ">
 
                                                   ${_('Remove all elements')}
 
                                                   <i style="cursor:pointer; font-size: 16px;position: relative; bottom: -2px; padding: 2px" class="icon-chevron-right"></i>
 
                                                   <i style="cursor:pointer; font-size: 16px;position: relative; bottom: -2px; padding: 2px" class="icon-right-open"></i>
 
                                               </div>
 
                                            </div>
 
                                            <div style="float:left;width:20px;padding-top:50px">
 
                                                <i style="cursor:pointer; padding: 4px; font-size: 16px" id="add_element" class="icon-chevron-left"></i>
 
                                                <i style="cursor:pointer; padding: 4px; font-size: 16px" id="add_element" class="icon-left-open"></i>
 
                                                <br />
 
                                                <i style="cursor:pointer; padding: 4px; font-size: 16px" id="remove_element" class="icon-chevron-right"></i>
 
                                                <i style="cursor:pointer; padding: 4px; font-size: 16px" id="remove_element" class="icon-right-open"></i>
 
                                            </div>
 
                                            <div style="float:left">
 
                                                 <div class="text" style="padding: 0px 0px 6px;">${_('Available members')}</div>
 
                                                 ${h.select('available_members',[],c.available_members,multiple=True,size=8,style="min-width:210px")}
 
                                                 <div id="add_all_elements" style="cursor:pointer;text-align:center;margin: 4px;">
 
                                                     <i style="cursor:pointer;font-size: 16px;position: relative; bottom: -2px; padding: 4px" class="icon-chevron-left"></i>${_('Add all elements')}
 
                                                     <i style="cursor:pointer;font-size: 16px;position: relative; bottom: -2px; padding: 4px" class="icon-left-open"></i>${_('Add all elements')}
 
                                                 </div>
 
                                            </div>
 
                                        </div>
 
                                    </td>
 
                                </tr>
 
                        </table>
 
                    </div>
 

	
 
                </div>
 
                <div class="buttons">
 
                  ${h.submit('Save',_('Save'),class_="btn")}
 
                </div>
 
            </div>
 
    </div>
 
${h.end_form()}
 
<script type="text/javascript">
 
  MultiSelectWidget('users_group_members','available_members','edit_users_group');
 
</script>
kallithea/templates/admin/users/user_edit_advanced.html
Show inline comments
 
<div style="font-size: 24px; color: #666666; padding: 0px 0px 10px 0px">${_('User: %s') % c.user.username}</div>
 

	
 
<dl class="dl-horizontal">
 
<%
 
 elems = [
 
    (_('Repositories'), len(c.user.repositories), ', '.join((x.repo_name for x in c.user.repositories))),
 
    (_('Source of Record'), c.user.extern_type, ''),
 
    (_('Created on'), h.fmt_date(c.user.created_on), ''),
 
    (_('Last Login'), c.user.last_login or '-', ''),
 
    (_('Member of User groups'), len(c.user.group_member), ', '.join((x.users_group.users_group_name for x in c.user.group_member)))
 
 ]
 
%>
 
%for dt, dd, tt in elems:
 
  <dt style="width:150px; text-align: left">${dt}:</dt>
 
  <dd style="margin-left: 160px" title="${tt}">${dd}</dd>
 
%endfor
 
</dl>
 

	
 
${h.form(h.url('delete_user', id=c.user.user_id),method='delete')}
 
    <button class="btn btn-small btn-danger" type="submit"
 
            onclick="return confirm('${_('Confirm to delete this user: %s') % c.user.username}');">
 
        <i class="icon-remove-sign"></i>
 
        <i class="icon-minus-circled"></i>
 
        ${_('Delete this user')}
 
    </button>
 
${h.end_form()}
kallithea/templates/admin/users/user_edit_api_keys.html
Show inline comments
 
@@ -17,49 +17,49 @@
 
            ${h.end_form()}
 
        </td>
 
    </tr>
 
    %if c.user_api_keys:
 
        %for api_key in c.user_api_keys:
 
          <tr class="${'expired' if api_key.expired else ''}">
 
            <td style="width: 450px"><div class="truncate autoexpand" style="width:120px;font-size:16px;font-family: monospace">${api_key.api_key}</div></td>
 
            <td>${api_key.description}</td>
 
            <td style="min-width: 80px">
 
                 %if api_key.expires == -1:
 
                  ${_('expires')}: ${_('never')}
 
                 %else:
 
                    %if api_key.expired:
 
                        ${_('expired')}: ${h.age(h.time_to_datetime(api_key.expires))}
 
                    %else:
 
                        ${_('expires')}: ${h.age(h.time_to_datetime(api_key.expires))}
 
                    %endif
 
                 %endif
 
            </td>
 
            <td>
 
                ${h.form(url('edit_user_api_keys', id=c.user.user_id),method='delete')}
 
                    ${h.hidden('del_api_key',api_key.api_key)}
 
                    <button class="btn btn-mini btn-danger" type="submit"
 
                            onclick="return confirm('${_('Confirm to remove this api key: %s') % api_key.api_key}');">
 
                        <i class="icon-remove-sign"></i>
 
                        <i class="icon-minus-circled"></i>
 
                        ${_('remove')}
 
                    </button>
 
                ${h.end_form()}
 
            </td>
 
          </tr>
 
        %endfor
 
    %else:
 
    <tr><td><div class="ip">${_('No additional api keys specified')}</div></td></tr>
 
    %endif
 
  </table>
 
</div>
 

	
 
<div>
 
    ${h.form(url('edit_user_api_keys', id=c.user.user_id), method='put')}
 
    <div class="form">
 
        <!-- fields -->
 
        <div class="fields">
 
             <div class="field">
 
                <div class="label">
 
                    <label for="new_email">${_('New api key')}:</label>
 
                </div>
 
                <div class="input">
 
                    ${h.text('description', class_='medium', placeholder=_('Description'))}
 
                    ${h.select('lifetime', '', c.lifetime_options)}
kallithea/templates/admin/users/user_edit_emails.html
Show inline comments
 
<div class="emails_wrap">
 
  <table class="noborder">
 
    <tr>
 
    <td><div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(c.user.email,16)}"/> </div></td>
 
    <td><div class="email">${c.user.email}</div></td>
 
    <td>
 
        <span class="btn btn-mini btn-success disabled">${_('Primary')}</span>
 
    </td>
 
    </tr>
 
    %if c.user_email_map:
 
        %for em in c.user_email_map:
 
          <tr>
 
            <td><div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(em.email,16)}"/> </div></td>
 
            <td><div class="email">${em.email}</div></td>
 
            <td>
 
                ${h.form(url('edit_user_emails', id=c.user.user_id),method='delete')}
 
                    ${h.hidden('del_email_id',em.email_id)}
 
                    <i class="icon-remove-sign" style="color:#FF4444"></i>
 
                    <i class="icon-minus-circled" style="color:#FF4444"></i>
 
                    ${h.submit('remove_',_('delete'),id="remove_email_%s" % em.email_id,
 
                    class_="action_button", onclick="return  confirm('"+_('Confirm to delete this email: %s') % em.email+"');")}
 
                ${h.end_form()}
 
            </td>
 
          </tr>
 
        %endfor
 
    %else:
 
    <tr><td><div class="ip">${_('No additional emails specified.')}</div></td></tr>
 
    %endif
 
  </table>
 
</div>
 

	
 
<div>
 
    ${h.form(url('edit_user_emails', id=c.user.user_id),method='put')}
 
    <div class="form">
 
        <!-- fields -->
 
        <div class="fields">
 
             <div class="field">
 
                <div class="label">
 
                    <label for="new_email">${_('New email address')}:</label>
 
                </div>
 
                <div class="input">
 
                    ${h.text('new_email', class_='medium')}
 
                </div>
kallithea/templates/admin/users/user_edit_ips.html
Show inline comments
 
<div class="ips_wrap">
 
  <table class="noborder">
 
    %if c.default_user_ip_map and c.inherit_default_ips:
 
        %for ip in c.default_user_ip_map:
 
          <tr>
 
            <td><div class="ip">${ip.ip_addr}</div></td>
 
            <td><div class="ip">${h.ip_range(ip.ip_addr)}</div></td>
 
            <td>${h.literal(_('Inherited from %s') % h.link_to('*default*',h.url('admin_permissions_ips')))}</td>
 
          </tr>
 
        %endfor
 
    %endif
 

	
 
    %if c.user_ip_map:
 
        %for ip in c.user_ip_map:
 
          <tr>
 
            <td><div class="ip">${ip.ip_addr}</div></td>
 
            <td><div class="ip">${h.ip_range(ip.ip_addr)}</div></td>
 
            <td>
 
                ${h.form(url('edit_user_ips', id=c.user.user_id),method='delete')}
 
                    ${h.hidden('del_ip_id',ip.ip_id)}
 
                    <i class="icon-remove-sign" style="color:#FF4444"></i>
 
                    <i class="icon-minus-circled" style="color:#FF4444"></i>
 
                    ${h.submit('remove_',_('delete'),id="remove_ip_%s" % ip.ip_id,
 
                    class_="action_button", onclick="return  confirm('"+_('Confirm to delete this ip: %s') % ip.ip_addr+"');")}
 
                ${h.end_form()}
 
            </td>
 
          </tr>
 
        %endfor
 
    %endif
 
    %if not c.default_user_ip_map and not c.user_ip_map:
 
        <tr><td><div class="ip">${_('All IP addresses are allowed.')}</div></td></tr>
 
    %endif
 
  </table>
 
</div>
 

	
 
<div>
 
    ${h.form(url('edit_user_ips', id=c.user.user_id),method='put')}
 
    <div class="form">
 
        <!-- fields -->
 
        <div class="fields">
 
             <div class="field">
 
                <div class="label">
 
                    <label for="new_ip">${_('New ip address')}:</label>
 
                </div>
 
                <div class="input">
 
                    ${h.text('new_ip', class_='medium')}
kallithea/templates/base/base.html
Show inline comments
 
@@ -51,175 +51,175 @@
 
                   &ndash; <a href="${c.issues_url}" target="_blank">${_('Support')}</a>
 
               %endif
 
           </p>
 
       </div>
 
   </div>
 
</div>
 

	
 
<!-- END FOOTER -->
 

	
 
### MAKO DEFS ###
 

	
 
<%def name="flash_msg()">
 
    <%include file="/base/flash_msg.html"/>
 
</%def>
 

	
 
<%def name="breadcrumbs()">
 
    <div class="breadcrumbs">
 
    ${self.breadcrumbs_links()}
 
    </div>
 
</%def>
 

	
 
<%def name="admin_menu()">
 
  <ul class="admin_menu">
 
      <li><a href="${h.url('admin_home')}"><i class="icon-book"></i> ${_('Admin Journal')}</a></li>
 
      <li><a href="${h.url('repos')}"><i class="icon-archive"></i> ${_('Repositories')}</a></li>
 
      <li><a href="${h.url('repos_groups')}"><i class="icon-folder-close"></i> ${_('Repository Groups')}</a></li>
 
      <li><a href="${h.url('repos')}"><i class="icon-database"></i> ${_('Repositories')}</a></li>
 
      <li><a href="${h.url('repos_groups')}"><i class="icon-folder"></i> ${_('Repository Groups')}</a></li>
 
      <li><a href="${h.url('users')}"><i class="icon-user"></i> ${_('Users')}</a></li>
 
      <li><a href="${h.url('users_groups')}"><i class="icon-group"></i> ${_('User Groups')}</a></li>
 
      <li><a href="${h.url('admin_permissions')}"><i class="icon-ban-circle"></i> ${_('Permissions')}</a></li>
 
      <li><a href="${h.url('users_groups')}"><i class="icon-users"></i> ${_('User Groups')}</a></li>
 
      <li><a href="${h.url('admin_permissions')}"><i class="icon-block"></i> ${_('Permissions')}</a></li>
 
      <li><a href="${h.url('auth_home')}"><i class="icon-key"></i> ${_('Authentication')}</a></li>
 
      <li><a href="${h.url('defaults')}"><i class="icon-wrench"></i> ${_('Defaults')}</a></li>
 
      <li class="last"><a href="${h.url('admin_settings')}"><i class="icon-cog"></i> ${_('Settings')}</a></li>
 
      <li class="last"><a href="${h.url('admin_settings')}"><i class="icon-gear"></i> ${_('Settings')}</a></li>
 
  </ul>
 

	
 
</%def>
 

	
 

	
 
## admin menu used for people that have some admin resources
 
<%def name="admin_menu_simple(repositories=None, repository_groups=None, user_groups=None)">
 
  <ul>
 
   %if repositories:
 
      <li><a href="${h.url('repos')}"><i class="icon-archive"></i> ${_('Repositories')}</a></li>
 
      <li><a href="${h.url('repos')}"><i class="icon-database"></i> ${_('Repositories')}</a></li>
 
   %endif
 
   %if repository_groups:
 
      <li><a href="${h.url('repos_groups')}"><i class="icon-folder-close"></i> ${_('Repository Groups')}</a></li>
 
      <li><a href="${h.url('repos_groups')}"><i class="icon-folder"></i> ${_('Repository Groups')}</a></li>
 
   %endif
 
   %if user_groups:
 
      <li><a href="${h.url('users_groups')}"><i class="icon-group"></i> ${_('User Groups')}</a></li>
 
      <li><a href="${h.url('users_groups')}"><i class="icon-users"></i> ${_('User Groups')}</a></li>
 
   %endif
 
  </ul>
 
</%def>
 

	
 
<%def name="repo_context_bar(current=None, rev=None)">
 
  <% rev = None if rev == 'tip' else rev %>
 
  <%
 
      def follow_class():
 
          if c.repository_following:
 
              return h.literal('following')
 
          else:
 
              return h.literal('follow')
 
  %>
 
  <%
 
    def is_current(selected):
 
        if selected == current:
 
            return h.literal('class="current"')
 
    %>
 

	
 
  <!--- CONTEXT BAR -->
 
  <div id="context-bar" class="box">
 
      <h2>
 
        %if h.is_hg(c.db_repo):
 
          <i class="icon-hg" style="color: #576622; font-size: 24px"></i>
 
        %endif
 
        %if h.is_git(c.db_repo):
 
          <i class="icon-git" style="color: #e85634; font-size: 24px"></i>
 
        %endif
 

	
 
        ## public/private
 
        %if c.db_repo.private:
 
          <i class="icon-lock"></i>
 
          <i class="icon-keyhole-circled"></i>
 
        %else:
 
          <i class="icon-unlock-alt"></i>
 
          <i class="icon-globe"></i>
 
        %endif
 
        ${h.repo_link(c.db_repo.groups_and_repo)}
 

	
 
        %if current == 'createfork':
 
         - ${_('Create Fork')}
 
        %endif
 
      </h2>
 
      <!--
 
      <div id="breadcrumbs">
 
        ${h.link_to(_(u'Repositories'),h.url('home'))}
 
        &raquo;
 
        ${h.repo_link(c.db_repo.groups_and_repo)}
 
      </div>
 
      -->
 
      <ul id="context-pages" class="horizontal-list">
 
        <li ${is_current('summary')}><a href="${h.url('summary_home', repo_name=c.repo_name)}"><i class="icon-file-text"></i> ${_('Summary')}</a></li>
 
        %if rev:
 
        <li ${is_current('changelog')}><a href="${h.url('changelog_file_home', repo_name=c.repo_name, revision=rev, f_path='')}"><i class="icon-time"></i> ${_('Changelog')}</a></li>
 
        <li ${is_current('changelog')}><a href="${h.url('changelog_file_home', repo_name=c.repo_name, revision=rev, f_path='')}"><i class="icon-clock"></i> ${_('Changelog')}</a></li>
 
        %else:
 
        <li ${is_current('changelog')}><a href="${h.url('changelog_home', repo_name=c.repo_name)}"><i class="icon-time"></i> ${_('Changelog')}</a></li>
 
        <li ${is_current('changelog')}><a href="${h.url('changelog_home', repo_name=c.repo_name)}"><i class="icon-clock"></i> ${_('Changelog')}</a></li>
 
        %endif
 
        <li ${is_current('files')}><a href="${h.url('files_home', repo_name=c.repo_name, revision=rev or 'tip')}"><i class="icon-file"></i> ${_('Files')}</a></li>
 
        <li ${is_current('files')}><a href="${h.url('files_home', repo_name=c.repo_name, revision=rev or 'tip')}"><i class="icon-doc-inv"></i> ${_('Files')}</a></li>
 
        <li ${is_current('switch-to')}>
 
          <a href="#" id="branch_tag_switcher_2" class="dropdown"><i class="icon-random"></i> ${_('Switch To')}</a>
 
          <a href="#" id="branch_tag_switcher_2" class="dropdown"><i class="icon-exchange"></i> ${_('Switch To')}</a>
 
          <ul id="switch_to_list_2" class="switch_to submenu">
 
            <li><a href="#">${_('Loading...')}</a></li>
 
          </ul>
 
        </li>
 
        <li ${is_current('options')}>
 
             %if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
 
               <a href="${h.url('edit_repo',repo_name=c.repo_name)}" class="dropdown"><i class="icon-cogs"></i> ${_('Options')}</a>
 
               <a href="${h.url('edit_repo',repo_name=c.repo_name)}" class="dropdown"><i class="icon-wrench"></i> ${_('Options')}</a>
 
             %else:
 
               <a href="#" class="dropdown"><i class="icon-cogs"></i> ${_('Options')}</a>
 
               <a href="#" class="dropdown"><i class="icon-wrench"></i> ${_('Options')}</a>
 
             %endif
 
          <ul>
 
             %if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
 
                   <li><a href="${h.url('edit_repo',repo_name=c.repo_name)}"><i class="icon-cog"></i> ${_('Settings')}</a></li>
 
                   <li><a href="${h.url('edit_repo',repo_name=c.repo_name)}"><i class="icon-gear"></i> ${_('Settings')}</a></li>
 
             %endif
 
              %if c.db_repo.fork:
 
               <li><a href="${h.url('compare_url',repo_name=c.db_repo.fork.repo_name,org_ref_type=c.db_repo.landing_rev[0],org_ref_name=c.db_repo.landing_rev[1], other_repo=c.repo_name,other_ref_type='branch' if request.GET.get('branch') else c.db_repo.landing_rev[0],other_ref_name=request.GET.get('branch') or c.db_repo.landing_rev[1], merge=1)}">
 
                   <i class="icon-loop"></i> ${_('Compare Fork')}</a></li>
 
                   <i class="icon-git-compare"></i> ${_('Compare Fork')}</a></li>
 
              %endif
 
              <li><a href="${h.url('compare_home',repo_name=c.repo_name)}"><i class="icon-loop"></i> ${_('Compare')}</a></li>
 
              <li><a href="${h.url('compare_home',repo_name=c.repo_name)}"><i class="icon-git-compare"></i> ${_('Compare')}</a></li>
 

	
 
              <li><a href="${h.url('search_repo',repo_name=c.repo_name)}"><i class="icon-search"></i> ${_('Search')}</a></li>
 

	
 
              %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name) and c.db_repo.enable_locking:
 
                %if c.db_repo.locked[0]:
 
                  <li>${h.link_to(_('Unlock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_del')}</li>
 
                %else:
 
                  <li>${h.link_to(_('Lock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_add')}</li>
 
                %endif
 
              %endif
 
              ## TODO: this check feels wrong, it would be better to have a check for permissions
 
              ## also it feels like a job for the controller
 
              %if c.authuser.username != 'default':
 
                  <li>
 
                   <a class="${follow_class()}" onclick="javascript:toggleFollowingRepo(this,${c.db_repo.repo_id},'${str(h.get_token())}');">
 
                    <span class="show-follow"><i class="icon-heart-empty"></i> ${_('Follow')}</span>
 
                    <span class="show-following"><i class="icon-heart"></i> ${_('Unfollow')}</span>
 
                  </a>
 
                  </li>
 
                  <li><a href="${h.url('repo_fork_home',repo_name=c.repo_name)}"><i class="icon-code-fork"></i> ${_('Fork')}</a></li>
 
                  <li><a href="${h.url('pullrequest_home',repo_name=c.repo_name)}"><i class="icon-code-fork"></i> ${_('Create Pull Request')}</a></li>
 
                  <li><a href="${h.url('repo_fork_home',repo_name=c.repo_name)}"><i class="icon-git-pull-request"></i> ${_('Fork')}</a></li>
 
                  <li><a href="${h.url('pullrequest_home',repo_name=c.repo_name)}"><i class="icon-git-pull-request"></i> ${_('Create Pull Request')}</a></li>
 
              %endif
 
             </ul>
 
        </li>
 
        <li ${is_current('showpullrequest')}>
 
          <a href="${h.url('pullrequest_show_all',repo_name=c.repo_name)}" title="${_('Show Pull Requests for %s') % c.repo_name}"> <i class="icon-code-fork"></i> ${_('Pull Requests')}
 
          <a href="${h.url('pullrequest_show_all',repo_name=c.repo_name)}" title="${_('Show Pull Requests for %s') % c.repo_name}"> <i class="icon-git-pull-request"></i> ${_('Pull Requests')}
 
            %if c.repository_pull_requests:
 
              <span>${c.repository_pull_requests}</span>
 
            %endif
 
          </a>
 
        </li>
 
      </ul>
 
  </div>
 
  <script type="text/javascript">
 
      YUE.on('branch_tag_switcher_2','mouseover',function(){
 
         var $branch_tag_switcher_2 = $('#branch_tag_switcher_2');
 
         var loaded = $branch_tag_switcher_2.hasClass('loaded');
 
         if(!loaded){
 
             $branch_tag_switcher_2.addClass('loaded');
 
             asynchtml("${h.url('branch_tag_switcher',repo_name=c.repo_name)}", $('#switch_to_list_2'));
 
         }
 
         return false;
 
      });
 
  </script>
 
  <!--- END CONTEXT BAR -->
 
</%def>
 

	
 
<%def name="menu(current=None)">
 
  <%
 
  def is_current(selected):
 
@@ -228,85 +228,85 @@
 
  %>
 

	
 
  <ul id="quick" class="horizontal-list">
 
    <!-- repo switcher -->
 
    <li ${is_current('repositories')}>
 
      <input id="repo_switcher" name="repo_switcher" type="hidden">
 
    </li>
 

	
 
    ##ROOT MENU
 
    %if c.authuser.username != 'default':
 
      <li ${is_current('journal')}>
 
        <a class="menu_link" title="${_('Show recent activity')}"  href="${h.url('journal')}">
 
          <i class="icon-book"></i> ${_('Journal')}
 
        </a>
 
      </li>
 
    %else:
 
      <li ${is_current('journal')}>
 
        <a class="menu_link" title="${_('Public journal')}"  href="${h.url('public_journal')}">
 
          <i class="icon-book"></i> ${_('Public journal')}
 
        </a>
 
      </li>
 
    %endif
 
      <li ${is_current('gists')}>
 
        <a class="menu_link childs" title="${_('Show public gists')}"  href="${h.url('gists')}">
 
          <i class="icon-file-2"></i> ${_('Gists')}
 
          <i class="icon-clippy"></i> ${_('Gists')}
 
        </a>
 
          <ul class="admin_menu">
 
            <li><a href="${h.url('new_gist', public=1)}"><i class="icon-file-alt"></i> ${_('Create New Gist')}</a></li>
 
            <li><a href="${h.url('gists')}"><i class="icon-copy"></i> ${_('All Public Gists')}</a></li>
 
            <li><a href="${h.url('new_gist', public=1)}"><i class="icon-paste"></i> ${_('Create New Gist')}</a></li>
 
            <li><a href="${h.url('gists')}"><i class="icon-globe"></i> ${_('All Public Gists')}</a></li>
 
            %if c.authuser.username != 'default':
 
              <li><a href="${h.url('gists', public=1)}"><i class="icon-copy"></i> ${_('My Public Gists')}</a></li>
 
              <li><a href="${h.url('gists', private=1)}"><i class="icon-file-text"></i> ${_('My Private Gists')}</a></li>
 
              <li><a href="${h.url('gists', public=1)}"><i class="icon-user"></i> ${_('My Public Gists')}</a></li>
 
              <li><a href="${h.url('gists', private=1)}"><i class="icon-keyhole-circled"></i> ${_('My Private Gists')}</a></li>
 
            %endif
 
          </ul>
 
      </li>
 
    <li ${is_current('search')}>
 
        <a class="menu_link" title="${_('Search in repositories')}"  href="${h.url('search')}">
 
          <i class="icon-search"></i> ${_('Search')}
 
        </a>
 
    </li>
 
    % if h.HasPermissionAll('hg.admin')('access admin main page'):
 
      <li ${is_current('admin')}>
 
        <a class="menu_link childs" title="${_('Admin')}" href="${h.url('admin_home')}">
 
          <i class="icon-cog"></i> ${_('Admin')}
 
          <i class="icon-gear"></i> ${_('Admin')}
 
        </a>
 
        ${admin_menu()}
 
      </li>
 
    % elif c.authuser.repositories_admin or c.authuser.repository_groups_admin or c.authuser.user_groups_admin:
 
    <li ${is_current('admin')}>
 
        <a class="menu_link childs" title="${_('Admin')}">
 
          <i class="icon-cog"></i> ${_('Admin')}
 
          <i class="icon-gear"></i> ${_('Admin')}
 
        </a>
 
        ${admin_menu_simple(c.authuser.repositories_admin,
 
                            c.authuser.repository_groups_admin,
 
                            c.authuser.user_groups_admin or h.HasPermissionAny('hg.usergroup.create.true')())}
 
    </li>
 
    % endif
 

	
 
    <li ${is_current('my_pullrequests')}>
 
      <a class="menu_link" title="${_('My Pull Requests')}" href="${h.url('my_pullrequests')}">
 
        <i class="icon-code-fork"></i> ${_('My Pull Requests')}
 
        <i class="icon-git-pull-request"></i> ${_('My Pull Requests')}
 
        %if c.my_pr_count != 0:
 
          <span class="menu_link_notifications">${c.my_pr_count}</span>
 
        %endif
 
      </a>
 
    </li>
 

	
 
    ## USER MENU
 
    <li>
 
      <a class="menu_link childs" id="quick_login_link">
 
          <span class="icon">
 
             <img src="${h.gravatar_url(c.authuser.email,20)}" alt="avatar">
 
          </span>
 
          %if c.authuser.username != 'default':
 
            <span class="menu_link_user">${c.authuser.username}</span>
 
            %if c.unread_notifications != 0:
 
              <span class="menu_link_notifications">${c.unread_notifications}</span>
 
            %endif
 
          %else:
 
              <span>${_('Not Logged In')}</span>
 
          %endif
 
      </a>
 

	
 
      <div class="user-menu">
 
        <div id="quick_login">
 
@@ -364,75 +364,75 @@
 
        </div>
 
      </div>
 
    </li>
 

	
 
    <script type="text/javascript">
 
        var visual_show_public_icon = "${c.visual.show_public_icon}" == "True";
 
        var cache = {}
 
        /*format the look of items in the list*/
 
        var format = function(state){
 
            if (!state.id){
 
              return state.text; // optgroup
 
            }
 
            var obj_dict = state.obj;
 
            var tmpl = '';
 

	
 
            if(obj_dict && state.type == 'repo'){
 
                tmpl += '<span class="repo-icons">';
 
                if(obj_dict['repo_type'] === 'hg'){
 
                    tmpl += '<i class="icon-hg"></i> ';
 
                }
 
                else if(obj_dict['repo_type'] === 'git'){
 
                    tmpl += '<i class="icon-git"></i> ';
 
                }
 
                if(obj_dict['private']){
 
                    tmpl += '<i class="icon-lock" style="color: #e85634;"></i> ';
 
                    tmpl += '<i class="icon-keyhole-circled"></i> ';
 
                }
 
                else if(visual_show_public_icon){
 
                    tmpl += '<i class="icon-unlock-alt"></i> ';
 
                    tmpl += '<i class="icon-globe"></i> ';
 
                }
 
                tmpl += '</span>';
 
            }
 
            if(obj_dict && state.type == 'group'){
 
                    tmpl += '<i class="icon-folder-close"></i> ';
 
                    tmpl += '<i class="icon-folder"></i> ';
 
            }
 
            tmpl += state.text;
 
            return tmpl;
 
        }
 

	
 
        $("#repo_switcher").select2({
 
            placeholder: '<i class="icon-archive"></i> ${_('Repositories')}',
 
            placeholder: '<i class="icon-database"></i> ${_('Repositories')}',
 
            dropdownAutoWidth: true,
 
            formatResult: format,
 
            formatSelection: format,
 
            formatNoMatches: function(term){
 
                return "${_('No matches found')}";
 
            },
 
            containerCssClass: "repo-switcher",
 
            dropdownCssClass: "repo-switcher-dropdown",
 
            escapeMarkup: function(m){
 
                // don't escape our custom placeholder
 
                if(m.substr(0,28) == '<i class="icon-archive"></i>'){
 
                if(m.substr(0,29) == '<i class="icon-database"></i>'){
 
                    return m;
 
                }
 

	
 
                return Select2.util.escapeMarkup(m);
 
            },
 
            query: function(query){
 
              var key = 'cache';
 
              var cached = cache[key] ;
 
              if(cached) {
 
                var data = {results: []};
 
                //filter results
 
                $.each(cached.results, function(){
 
                    var section = this.text;
 
                    var children = [];
 
                    $.each(this.children, function(){
 
                        if(query.term.length == 0 || this.text.toUpperCase().indexOf(query.term.toUpperCase()) >= 0 ){
 
                            children.push({'id': this.id, 'text': this.text, 'type': this.type, 'obj': this.obj})
 
                        }
 
                    })
 
                    if(children.length !== 0){
 
                        data.results.push({'text': section, 'children': children})
 
                    }
 

	
 
                });
 
@@ -512,49 +512,49 @@
 
                window.location = pyroutes.url('changelog_home', {'repo_name': REPO_NAME});
 
            });
 
            Mousetrap.bind(['g F'], function(e) {
 
                window.location = pyroutes.url('files_home', {'repo_name': REPO_NAME, 'revision': '${c.db_repo.landing_rev[1]}', 'f_path': '', 'search': '1'});
 
            });
 
            Mousetrap.bind(['g f'], function(e) {
 
                window.location = pyroutes.url('files_home', {'repo_name': REPO_NAME, 'revision': '${c.db_repo.landing_rev[1]}', 'f_path': ''});
 
            });
 
            Mousetrap.bind(['g o'], function(e) {
 
                window.location = pyroutes.url('edit_repo', {'repo_name': REPO_NAME});
 
            });
 
            Mousetrap.bind(['g O'], function(e) {
 
                window.location = pyroutes.url('edit_repo_perms', {'repo_name': REPO_NAME});
 
            });
 
        % endif
 

	
 
    </script>
 
</%def>
 

	
 
%if 0:
 
<div class="modal" id="help_kb" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
 
    <div class="modal-dialog">
 
      <div class="modal-content">
 
        <div class="modal-header">
 
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
 
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true"><i class="icon-cancel-circled"></i></button>
 
          <h4 class="modal-title">${_('Keyboard shortcuts')}</h4>
 
        </div>
 
        <div class="modal-body">
 
           <div class="row">
 
              <div class="col-md-5">
 
                <table class="keyboard-mappings">
 
                    <tbody>
 
                  <tr>
 
                    <th></th>
 
                    <th>${_('Site-wide shortcuts')}</th>
 
                  </tr>
 
                  <%
 
                     elems = [
 
                         ('/', 'Open quick search box'),
 
                         ('ctrl/cmd+b', 'Show main settings bar'),
 
                         ('g h', 'Goto home page'),
 
                         ('g g', 'Goto my private gists page'),
 
                         ('g G', 'Goto my public gists page'),
 
                         ('n r', 'New repository page'),
 
                         ('n g', 'New gist page')
 
                     ]
 
                  %>
 
                  %for key, desc in elems:
 
                  <tr>
kallithea/templates/base/flash_msg.html
Show inline comments
 
<div class="flash_msg">
 
    <% messages = h.flash.pop_messages() %>
 
    % if messages:
 
        % for message in messages:
 
            <div class="alert alert-dismissable alert-${message.category}">
 
              <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
 
              <button type="button" class="close" data-dismiss="alert" aria-hidden="true"><i class="icon-cancel-circled"></i></button>
 
              ${message}
 
            </div>
 
        % endfor
 
    % endif
 
    <script>
 
    if (typeof jQuery != 'undefined') {
 
        $(".alert").alert();
 
    }
 
    </script>
 
</div>
kallithea/templates/base/root.html
Show inline comments
 
## -*- coding: utf-8 -*-
 
<!DOCTYPE html>
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
    <head>
 
        <title>${self.title()}</title>
 
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 
        <meta name="robots" content="index, nofollow"/>
 
        <link rel="icon" href="${h.url('/images/favicon.ico')}" type="image/png" />
 

	
 
        ## CSS ###
 
        <%def name="css()">
 
            <link rel="stylesheet" type="text/css" href="${h.url('/js/select2/select2.css', ver=c.kallithea_version)}"/>
 
            <link rel="stylesheet" type="text/css" href="${h.url('/css/pygments.css', ver=c.kallithea_version)}"/>
 
            <link rel="stylesheet" type="text/css" href="${h.url('/css/style.css', ver=c.kallithea_version)}" media="screen"/>
 
            <link rel="stylesheet" type="text/css" href="${h.url('/css/contextbar.css', ver=c.kallithea_version)}" media="screen"/>
 

	
 
            <link rel="stylesheet" type="text/css" href="${h.url('/fontello/css/kallithea.css', ver=c.kallithea_version)}">
 
            ## EXTRA FOR CSS
 
            ${self.css_extra()}
 
        </%def>
 

	
 
        <%def name="css_extra()"></%def>
 

	
 
        ${self.css()}
 

	
 
        ## JAVASCRIPT ##
 
        <%def name="js()">
 
            <script type="text/javascript">
 
            //JS translations map
 
            var TRANSLATION_MAP = {
 
                'Add Another Comment':'${_("Add Another Comment")}',
 
                'Stop following this repository':"${_('Stop following this repository')}",
 
                'Start following this repository':"${_('Start following this repository')}",
 
                'Group':"${_('Group')}",
 
                'members':"${_('members')}",
 
                'Loading ...':"${_('Loading ...')}",
 
                'loading ...':"${_('loading ...')}",
 
                'Search truncated': "${_('Search truncated')}",
 
                'No matching files': "${_('No matching files')}",
 
                'Open New Pull Request': "${_('Open New Pull Request')}",
 
                'Open New Pull Request for Selected Changesets':  "${_('Open New Pull Request for Selected Changesets')}",
kallithea/templates/bookmarks/bookmarks.html
Show inline comments
 
@@ -70,30 +70,30 @@ myDataSource.responseSchema = {
 
        {key:"raw_date"},
 
        {key:"date"},
 
        {key:"author"},
 
        {key:"last_rev_raw"},
 
        {key:"revision"},
 
        {key:"compare"}
 
    ]
 
};
 

	
 
var myDataTable = new YAHOO.widget.DataTable("table_wrap", myColumnDefs, myDataSource,
 
    {
 
         sortedBy:{key:"name",dir:"asc"},
 
         MSG_SORTASC:"${_('Click to sort ascending')}",
 
         MSG_SORTDESC:"${_('Click to sort descending')}",
 
         MSG_EMPTY:"${_('No records found.')}",
 
         MSG_ERROR:"${_('Data error.')}",
 
         MSG_LOADING:"${_('Loading...')}"
 
    }
 
);
 
myDataTable.subscribe('postRenderEvent',function(oArgs) {
 
    tooltip_activate();
 
    var func = function(node){
 
        return node.parentNode.parentNode.parentNode.parentNode.parentNode;
 
    }
 
    q_filter('q_filter_bookmarks',YUQ('div.table tr td .logbooks .booktag a'),func);
 
    q_filter('q_filter_bookmarks',$('div.table tr td .logbooks .booktag a'),func);
 
});
 

	
 
</script>
 

	
 
</%def>
kallithea/templates/branches/branches.html
Show inline comments
 
@@ -70,30 +70,30 @@ myDataSource.responseSchema = {
 
        {key:"raw_date"},
 
        {key:"date"},
 
        {key:"author"},
 
        {key:"last_rev_raw"},
 
        {key:"revision"},
 
        {key:"compare"}
 
    ]
 
};
 

	
 
var myDataTable = new YAHOO.widget.DataTable("table_wrap", myColumnDefs, myDataSource,
 
    {
 
         sortedBy:{key:"name",dir:"asc"},
 
         MSG_SORTASC:"${_('Click to sort ascending')}",
 
         MSG_SORTDESC:"${_('Click to sort descending')}",
 
         MSG_EMPTY:"${_('No records found.')}",
 
         MSG_ERROR:"${_('Data error.')}",
 
         MSG_LOADING:"${_('Loading...')}"
 
    }
 
);
 
myDataTable.subscribe('postRenderEvent',function(oArgs) {
 
    tooltip_activate();
 
    var func = function(node){
 
        return node.parentNode.parentNode.parentNode.parentNode.parentNode;
 
    }
 
    q_filter('q_filter_branches',YUQ('div.table tr td .logtags .branchtag a'),func);
 
    q_filter('q_filter_branches',$('div.table tr td .logtags .branchtag a'),func);
 
});
 

	
 
</script>
 

	
 
</%def>
kallithea/templates/changelog/changelog.html
Show inline comments
 
@@ -41,114 +41,114 @@ ${self.repo_context_bar('changelog', c.f
 
                <div style="overflow:auto; display:${'none' if c.changelog_for_path else ''}">
 
                    <div class="container_header">
 
                        <div style="float:left; margin-left:20px;">
 
                        ${h.form(h.url.current(),method='get')}
 
                            ${h.submit('set',_('Show'),class_="btn btn-small")}
 
                            ${h.text('size',size=3,value=c.size)}
 
                            ${_('revisions')}
 
                            %if c.branch_name:
 
                            ${h.hidden('branch', c.branch_name)}
 
                            %endif
 
                        ${h.end_form()}
 
                        </div>
 
                        <div style="float: right; margin: 0px 0px 0px 4px">
 
                            <a href="#" class="btn btn-small" id="rev_range_container" style="display:none"></a>
 
                            <a href="#" class="btn btn-small" id="rev_range_clear" style="display:none">${_('Clear selection')}</a>
 
                            %if c.revision:
 
                                <a class="btn btn-small" href="${h.url('changelog_home', repo_name=c.repo_name)}">
 
                                    ${_('Go to tip of repository')}
 
                                </a>
 
                            %endif
 
                            %if c.db_repo.fork:
 
                                <a id="compare_fork"
 
                                   title="${_('Compare fork with %s' % c.db_repo.fork.repo_name)}"
 
                                   href="${h.url('compare_url',repo_name=c.db_repo.fork.repo_name,org_ref_type=c.db_repo.landing_rev[0],org_ref_name=c.db_repo.landing_rev[1],other_repo=c.repo_name,other_ref_type='branch' if request.GET.get('branch') else c.db_repo.landing_rev[0],other_ref_name=request.GET.get('branch') or c.db_repo.landing_rev[1], merge=1)}"
 
                                   class="btn btn-small"><i class="icon-loop"></i> ${_('Compare fork with parent repo (%s)' % c.db_repo.fork.repo_name)}</a>
 
                                   class="btn btn-small"><i class="icon-git-compare"></i> ${_('Compare fork with parent repo (%s)' % c.db_repo.fork.repo_name)}</a>
 
                            %endif
 
                            ## text and href of open_new_pr is controlled from javascript
 
                            <a id="open_new_pr" class="btn btn-small"></a>
 
                            ${_("Branch filter:")} ${h.select('branch_filter',c.branch_name,c.branch_filters)}
 
                        </div>
 
                    </div>
 
                </div>
 

	
 
                <div id="changelog" style="clear:both">
 

	
 
                <div id="graph_nodes">
 
                    <canvas id="graph_canvas"></canvas>
 
                </div>
 
                <div id="graph_content" style="${'margin: 0px' if c.changelog_for_path else ''}">
 

	
 
                <table id="changesets">
 
                <tbody>
 
                %for cnt,cs in enumerate(c.pagination):
 
                    <tr id="chg_${cnt+1}" class="container ${'tablerow%s' % (cnt%2)}">
 
                        <td class="checkbox">
 
                            %if c.changelog_for_path:
 
                                ${h.checkbox(cs.raw_id,class_="changeset_range", disabled="disabled")}
 
                            %else:
 
                                ${h.checkbox(cs.raw_id,class_="changeset_range")}
 
                            %endif
 
                        <td class="status">
 
                          %if c.statuses.get(cs.raw_id):
 
                            <div class="changeset-status-ico">
 
                            %if c.statuses.get(cs.raw_id)[2]:
 
                              <a class="tooltip" title="${_('Changeset status: %s\nClick to open associated pull request #%s') % (h.changeset_status_lbl(c.statuses.get(cs.raw_id)[0]), c.statuses.get(cs.raw_id)[2])}" href="${h.url('pullrequest_show',repo_name=c.statuses.get(cs.raw_id)[3],pull_request_id=c.statuses.get(cs.raw_id)[2])}">
 
                                <img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses.get(cs.raw_id)[0])}" />
 
                                <i class="icon-circle changeset-status-${c.statuses.get(cs.raw_id)[0]}"></i>
 
                              </a>
 
                            %else:
 
                              <a class="tooltip" title="${_('Changeset status: %s') % h.changeset_status_lbl(c.statuses.get(cs.raw_id)[0])}" href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id,anchor='comment-%s' % c.comments[cs.raw_id][0].comment_id)}">
 
                                  <img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses.get(cs.raw_id)[0])}" />
 
                                  <i class="icon-circle changeset-status-${c.statuses.get(cs.raw_id)[0]}"></i>
 
                              </a>
 
                            %endif
 
                            </div>
 
                          %endif
 
                        </td>
 
                        <td class="author">
 
                            <img alt="gravatar" src="${h.gravatar_url(h.email_or_none(cs.author),16)}"/>
 
                            <span title="${cs.author}" class="user">${h.shorter(h.person(cs.author),22)}</span>
 
                        </td>
 
                        <td class="hash" style="width:${len(h.show_id(cs))*6.5}px">
 
                            <a href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id)}">
 
                                <span class="changeset_hash">${h.show_id(cs)}</span>
 
                            </a>
 
                        </td>
 
                        <td class="date">
 
                            <div class="date">${h.age(cs.date,True)}</div>
 
                        </td>
 
                        <td class="expand_commit" commit_id="${cs.raw_id}" title="${_('Expand commit message')}">
 
                            <i class="icon-resize-vertical" style="color:#DDD"></i>
 
                            <i class="icon-align-left" style="color:#999"></i>
 
                        </td>
 
                        <td class="mid">
 
                            <div class="log-container">
 
                                <div class="message" id="C-${cs.raw_id}">${h.urlify_commit(cs.message, c.repo_name,h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}</div>
 
                                <div class="extra-container">
 
                                    %if c.comments.get(cs.raw_id):
 
                                        <div class="comments-container">
 
                                            <div class="comments-cnt" title="${_('Changeset has comments')}">
 
                                                <a href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id,anchor='comment-%s' % c.comments[cs.raw_id][0].comment_id)}">
 
                                                    ${len(c.comments[cs.raw_id])}
 
                                                    <i class="icon-comment-alt icon-comment-colored"></i>
 
                                                    <i class="icon-comment-discussion"></i>
 
                                                </a>
 
                                            </div>
 
                                        </div>
 
                                    %endif
 
                                    %if h.is_hg(c.db_repo_scm_instance):
 
                                        %for book in cs.bookmarks:
 
                                            <div class="booktag" title="${_('Bookmark %s') % book}">
 
                                                ${h.link_to(book,h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}
 
                                            </div>
 
                                        %endfor
 
                                    %endif
 
                                    %for tag in cs.tags:
 
                                        <div class="tagtag" title="${_('Tag %s') % tag}">
 
                                            ${h.link_to(tag,h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}
 
                                        </div>
 
                                    %endfor
 
                                    %if (not c.branch_name) and cs.branch:
 
                                        <div class="branchtag" title="${_('Branch %s' % cs.branch)}">
 
                                            ${h.link_to(cs.branch,h.url('changelog_home',repo_name=c.repo_name,branch=cs.branch))}
 
                                        </div>
 
                                    %endif
 
                                </div>
 
                            </div>
 
                        </td>
 
@@ -222,63 +222,62 @@ ${self.repo_context_bar('changelog', c.f
 
                        %if c.revision:
 
                            YUD.get('open_new_pr').href = pyroutes.url('pullrequest_home',
 
                                                                       {'repo_name': '${c.repo_name}',
 
                                                                        'rev_end':'${c.first_revision.raw_id}'});
 
                        %else:
 
                            YUD.get('open_new_pr').href = pyroutes.url('pullrequest_home',
 
                                                                       {'repo_name': '${c.repo_name}',
 
                                                                        'branch':'${c.first_revision.branch}'});
 
                        %endif
 
                        YUD.setStyle('compare_fork','display','');
 
                    }
 
                };
 
                checkbox_checker();
 
                YUE.on(checkboxes,'click', checkbox_checker);
 

	
 
                YUE.on('rev_range_clear','click',function(e){
 
                    for (var i=0; i<checkboxes.length; i++){
 
                        var cb = checkboxes[i];
 
                        cb.checked = false;
 
                    }
 
                    checkbox_checker();
 
                    YUE.preventDefault(e);
 
                });
 

	
 
                var msgs = YUQ('.message');
 
                var $msgs = $('.message');
 
                // get first element height
 
                var el = YUQ('#graph_content .container')[0];
 
                var el = $('#graph_content .container')[0];
 
                var row_h = el.clientHeight;
 
                for(var i=0;i<msgs.length;i++){
 
                    var m = msgs[i];
 
                $msgs.each(function() {
 
                    var m = this;
 

	
 
                    var h = m.clientHeight;
 
                    var pad = YUD.getStyle(m,'padding');
 
                    if(h > row_h){
 
                        var offset = row_h - (h+12);
 
                        YUD.setStyle(m.nextElementSibling,'display','block');
 
                        YUD.setStyle(m.nextElementSibling,'margin-top',offset+'px');
 
                    };
 
                        $(m.nextElementSibling).css('display', 'block');
 
                        $(m.nextElementSibling).css('margin-top', offset+'px');
 
                }
 
                });
 

	
 
                $('.expand_commit').on('click',function(e){
 
                    var cid = $(this).attr('commit_id');
 
                    $('#C-'+cid).toggleClass('expanded');
 

	
 
                    //redraw the graph, r and jsdata are bound outside function
 
                    r.render(jsdata,100);
 
                });
 

	
 
                // change branch filter
 
                $("#branch_filter").select2({
 
                    dropdownAutoWidth: true,
 
                    minimumInputLength: 1
 
                    });
 

	
 
                $("#branch_filter").change(function(e){
 
                    var selected_branch = e.currentTarget.options[e.currentTarget.selectedIndex].value;
 
                    if(selected_branch != ''){
 
                        window.location = pyroutes.url('changelog_home', {'repo_name': '${c.repo_name}',
 
                                                                          'branch': selected_branch});
 
                    }else{
 
                        window.location = pyroutes.url('changelog_home', {'repo_name': '${c.repo_name}'});
 
                    }
 
                    $("#changelog").hide();
kallithea/templates/changelog/changelog_summary_data.html
Show inline comments
 
## -*- coding: utf-8 -*-
 
%if c.repo_changesets:
 
<table class="table_disp">
 
    <tr>
 
        <th class="left">${_('Revision')}</th>
 
        <th class="left">${_('Commit Message')}</th>
 
        <th class="left">${_('Age')}</th>
 
        <th class="left">${_('Author')}</th>
 
        <th class="left">${_('Refs')}</th>
 
    </tr>
 
%for cnt,cs in enumerate(c.repo_changesets):
 
    <tr class="parity${cnt%2}">
 
        <td>
 
          <div>
 
            <div class="changeset-status-container">
 
              %if c.statuses.get(cs.raw_id):
 
                <div class="changeset-status-ico shortlog">
 
                %if c.statuses.get(cs.raw_id)[2]:
 
                  <a class="tooltip" title="${_('Changeset status: %s\nClick to open associated pull request #%s') % (c.statuses.get(cs.raw_id)[0], c.statuses.get(cs.raw_id)[2])}" href="${h.url('pullrequest_show',repo_name=c.statuses.get(cs.raw_id)[3],pull_request_id=c.statuses.get(cs.raw_id)[2])}">
 
                    <img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses.get(cs.raw_id)[0])}" />
 
                    <i class="icon-circle changeset-status-${c.statuses.get(cs.raw_id)[0]}"></i>
 
                  </a>
 
                %else:
 
                  <img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses.get(cs.raw_id)[0])}" />
 
                  <i class="icon-circle changeset-status-${c.statuses.get(cs.raw_id)[0]}"></i>
 
                %endif
 
                </div>
 
              %endif
 
              %if c.comments.get(cs.raw_id,[]):
 
               <div class="comments-container">
 
                   <div title="${('comments')}">
 
                       <a href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id,anchor='comment-%s' % c.comments[cs.raw_id][0].comment_id)}">
 
                          <i class="icon-comment-alt icon-comment-colored"></i> ${len(c.comments[cs.raw_id])}
 
                       </a>
 
                   </div>
 
               </div>
 
              %endif
 
            </div>
 
            <pre><a href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id)}">${h.show_id(cs)}</a></pre>
 
         </div>
 
        </td>
 
        <td>
 
            ${h.urlify_commit(h.truncate(cs.message,50),c.repo_name, h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}
 
        </td>
 
        <td><span class="tooltip" title="${h.tooltip(h.fmt_date(cs.date))}">
 
                      ${h.age(cs.date)}</span>
 
        </td>
 
        <td title="${cs.author}">${h.person(cs.author)}</td>
 
        <td>
kallithea/templates/changeset/changeset.html
Show inline comments
 
@@ -13,74 +13,74 @@
 
    ${_('Changeset')} - <span class='hash'>${h.show_id(c.changeset)}</span>
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('repositories')}
 
</%def>
 

	
 
<%def name="main()">
 
${self.repo_context_bar('changelog', c.changeset.raw_id)}
 
<div class="box">
 
    <!-- box / title -->
 
    <div class="title">
 
        ${self.breadcrumbs()}
 
    </div>
 
    <script>
 
    var _USERS_AC_DATA = ${c.users_array|n};
 
    var _GROUPS_AC_DATA = ${c.user_groups_array|n};
 
    AJAX_COMMENT_URL = "${url('changeset_comment',repo_name=c.repo_name,revision=c.changeset.raw_id)}";
 
    AJAX_COMMENT_DELETE_URL = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}";
 
    </script>
 
    <div class="table">
 
        <div class="diffblock">
 
            <div class="parents">
 
                <div id="parent_link" class="changeset_hash">
 
                    <i style="color:#036185" class="icon-chevron-left"></i> <a href="#">${_('parent rev.')}</a>
 
                    <i style="color:#036185" class="icon-left-open"></i> <a href="#">${_('parent rev.')}</a>
 
                </div>
 
            </div>
 

	
 
            <div class="children">
 
                <div id="child_link" class="changeset_hash">
 
                    <a href="#">${_('child rev.')}</a> <i style="color:#036185" class="icon-chevron-right"></i>
 
                    <a href="#">${_('child rev.')}</a> <i style="color:#036185" class="icon-right-open"></i>
 
                </div>
 
            </div>
 

	
 
            <div class="code-header banner">
 
                <div class="changeset-status-container">
 
                    %if c.statuses:
 
                        <div class="changeset-status-ico"><img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses[0])}" /></div>
 
                        <div class="changeset-status-ico"><i class="icon-circle changeset-status-${c.statuses[0]}"></i></div>
 
                        <div title="${_('Changeset status')}" class="changeset-status-lbl">[${h.changeset_status_lbl(c.statuses[0])}]</div>
 
                    %endif
 
                </div>
 
                <div class="diff-actions">
 
                  <a href="${h.url('changeset_raw_home',repo_name=c.repo_name,revision=c.changeset.raw_id)}"  class="tooltip" title="${h.tooltip(_('Raw diff'))}">
 
                      <img class="icon" src="${h.url('/images/icons/page_white.png')}"/>
 
                      <i class="icon-diff"></i>
 
                  </a>
 
                  <a href="${h.url('changeset_patch_home',repo_name=c.repo_name,revision=c.changeset.raw_id)}"  class="tooltip" title="${h.tooltip(_('Patch diff'))}">
 
                      <img class="icon" src="${h.url('/images/icons/page_add.png')}"/>
 
                      <i class="icon-file-powerpoint"></i>
 
                  </a>
 
                  <a href="${h.url('changeset_download_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='download')}" class="tooltip" title="${h.tooltip(_('Download diff'))}">
 
                      <img class="icon" src="${h.url('/images/icons/page_save.png')}"/>
 
                      <i class="icon-floppy"></i>
 
                  </a>
 
                  ${c.ignorews_url(request.GET)}
 
                  ${c.context_url(request.GET)}
 
                </div>
 
                <div class="comments-number" style="float:right;padding-right:5px">${ungettext("%d comment", "%d comments", len(c.comments)) % len(c.comments)} ${ungettext("(%d inline)", "(%d inline)", c.inline_cnt) % c.inline_cnt} <span class="firstlink"></span> </div>
 
            </div>
 
        </div>
 
        <div id="changeset_content">
 
            <div class="container">
 

	
 
                <div class="right">
 
                    <div class="changes">
 
                        % if (len(c.changeset.affected_files) <= c.affected_files_cut_off) or c.fulldiff:
 
                         <span class="removed" title="${_('Removed')}">${len(c.changeset.removed)}</span>
 
                         <span class="changed" title="${_('Changed')}">${len(c.changeset.changed)}</span>
 
                         <span class="added" title="${_('Added')}">${len(c.changeset.added)}</span>
 
                        % else:
 
                         <span class="removed" title="${_('Affected %s files') % len(c.changeset.affected_files)}">!</span>
 
                         <span class="changed" title="${_('Affected %s files') % len(c.changeset.affected_files)}">!</span>
 
                         <span class="added"   title="${_('Affected %s files') % len(c.changeset.affected_files)}">!</span>
 
                        % endif
 
                    </div>
 

	
 
                    <span class="logtags">
 
@@ -121,48 +121,49 @@ ${self.repo_context_bar('changelog', c.c
 
                     <div>
 
                       ${_('Grafted from:')} ${h.link_to(h.short_id(rev),h.url('changeset_home',repo_name=c.repo_name,revision=rev))}
 
                     </div>
 
                     %endif
 
                     <% rev = c.changeset.extra.get('transplant_source', '').encode('hex') %>
 
                     %if rev:
 
                     <div>
 
                       ${_('Transplanted from:')} ${h.link_to(h.short_id(rev),h.url('changeset_home',repo_name=c.repo_name,revision=rev))}
 
                     </div>
 
                     %endif
 
                     <div class="message">${h.urlify_commit(c.changeset.message, c.repo_name)}</div>
 
                </div>
 
            </div>
 
            <div class="changes_txt">
 
            % if c.limited_diff:
 
            ${ungettext('%s file changed','%s files changed',len(c.changeset.affected_files)) % (len(c.changeset.affected_files))}:
 
            % else:
 
            ${ungettext('%s file changed with %s insertions and %s deletions','%s files changed with %s insertions and %s deletions', len(c.changeset.affected_files)) % (len(c.changeset.affected_files),c.lines_added,c.lines_deleted)}:
 
            %endif
 
            </div>
 
            <div class="cs_files">
 
              %for FID, (cs1, cs2, change, path, diff, stats) in c.changes[c.changeset.raw_id].iteritems():
 
                  <div class="cs_${change}">
 
                        <div class="node">
 
                            <i class="icon-diff-${change}"></i>
 
                            <a href="#${FID}">${h.safe_unicode(path)}</a>
 
                        </div>
 
                    <div class="changes">${h.fancy_file_stats(stats)}</div>
 
                  </div>
 
              %endfor
 
              % if c.limited_diff:
 
                <h5>${_('Changeset was too big and was cut off...')} <a href="${h.url.current(fulldiff=1, **request.GET.mixed())}">${_('Show full diff anyway')}</a></h5>
 
              % endif
 
            </div>
 
        </div>
 

	
 
    </div>
 

	
 
    ## diff block
 
    <%namespace name="diff_block" file="/changeset/diff_block.html"/>
 
    ${diff_block.diff_block_js()}
 
    ${diff_block.diff_block(c.changes[c.changeset.raw_id])}
 

	
 
    % if c.limited_diff:
 
      <h4>${_('Changeset was too big and was cut off...')} <a href="${h.url.current(fulldiff=1, **request.GET.mixed())}">${_('Show full diff anyway')}</a></h4>
 
    % endif
 

	
 
    ## template for inline comment form
 
    <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
 
@@ -180,112 +181,112 @@ ${self.repo_context_bar('changelog', c.c
 
      $(document).ready(function(){
 
          $('.show-inline-comments').change(function(e){
 
              var target = e.currentTarget;
 
              if(target == null){
 
                  target = this;
 
              }
 
              var boxid = $(target).attr('id_for');
 
              if(target.checked){
 
                  $('#{0} .inline-comments'.format(boxid)).show();
 
                  $('#{0} .inline-comments-button'.format(boxid)).show();
 
              }else{
 
                  $('#{0} .inline-comments'.format(boxid)).hide();
 
                  $('#{0} .inline-comments-button'.format(boxid)).hide();
 
              }
 
          });
 
          $('.add-bubble').click(function(e){
 
              var tr = e.currentTarget;
 
              if(tr == null){
 
                  tr = this;
 
              }
 
              injectInlineForm(tr.parentNode.parentNode);
 
          });
 

	
 
          // inject comments into they proper positions
 
          var file_comments = YUQ('.inline-comment-placeholder');
 
          var file_comments = $('.inline-comment-placeholder').toArray();
 
          renderInlineComments(file_comments);
 

	
 
          linkInlineComments(document.getElementsByClassName('firstlink'), document.getElementsByClassName("inline-comment"));
 

	
 
          pyroutes.register('changeset_home',
 
                            "${h.url('changeset_home', repo_name='%(repo_name)s', revision='%(revision)s')}",
 
                            ['repo_name', 'revision']);
 

	
 
          //next links
 
          $('#child_link').on('click', function(e){
 
              //fetch via ajax what is going to be the next link, if we have
 
              //>1 links show them to user to choose
 
              if(!$('#child_link').hasClass('disabled')){
 
                  $.ajax({
 
                    url: '${h.url('changeset_children',repo_name=c.repo_name, revision=c.changeset.raw_id)}',
 
                    success: function(data) {
 
                      if(data.results.length === 0){
 
                          $('#child_link').addClass('disabled');
 
                          $('#child_link').html('${_('no revisions')}');
 
                      }
 
                      if(data.results.length === 1){
 
                          var commit = data.results[0];
 
                          window.location = pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': commit.raw_id});
 
                      }
 
                      else if(data.results.length === 2){
 
                          $('#child_link').addClass('disabled');
 
                          $('#child_link').addClass('double');
 
                          var _html = '';
 
                          _html +='<a title="__title__" href="__url__">__rev__</a> <i style="color:#036185" class="icon-chevron-right"></i>'
 
                          _html +='<a title="__title__" href="__url__">__rev__</a> <i style="color:#036185" class="icon-right-open"></i>'
 
                                  .replace('__rev__','r{0}:{1}'.format(data.results[0].revision, data.results[0].raw_id.substr(0,6)))
 
                                  .replace('__title__', data.results[0].message)
 
                                  .replace('__url__', pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': data.results[0].raw_id}));
 
                          _html +='<br/>'
 
                          _html +='<a title="__title__" href="__url__">__rev__</a> <i style="color:#036185" class="icon-chevron-right"></i>'
 
                          _html +='<a title="__title__" href="__url__">__rev__</a> <i style="color:#036185" class="icon-right-open"></i>'
 
                                  .replace('__rev__','r{0}:{1}'.format(data.results[1].revision, data.results[1].raw_id.substr(0,6)))
 
                                  .replace('__title__', data.results[1].message)
 
                                  .replace('__url__', pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': data.results[1].raw_id}));
 
                          $('#child_link').html(_html);
 
                      }
 
                    }
 
                  });
 
              e.preventDefault();
 
              }
 
          })
 

	
 
          //prev links
 
          $('#parent_link').on('click', function(e){
 
              //fetch via ajax what is going to be the next link, if we have
 
              //>1 links show them to user to choose
 
              if(!$('#parent_link').hasClass('disabled')){
 
                  $.ajax({
 
                    url: '${h.url('changeset_parents',repo_name=c.repo_name, revision=c.changeset.raw_id)}',
 
                    success: function(data) {
 
                      if(data.results.length === 0){
 
                          $('#parent_link').addClass('disabled');
 
                          $('#parent_link').html('${_('no revisions')}');
 
                      }
 
                      if(data.results.length === 1){
 
                          var commit = data.results[0];
 
                          window.location = pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': commit.raw_id});
 
                      }
 
                      else if(data.results.length === 2){
 
                          $('#parent_link').addClass('disabled');
 
                          $('#parent_link').addClass('double');
 
                          var _html = '';
 
                          _html +='<i style="color:#036185" class="icon-chevron-left"></i> <a title="__title__" href="__url__">__rev__</a>'
 
                          _html +='<i style="color:#036185" class="icon-left-open"></i> <a title="__title__" href="__url__">__rev__</a>'
 
                                  .replace('__rev__','r{0}:{1}'.format(data.results[0].revision, data.results[0].raw_id.substr(0,6)))
 
                                  .replace('__title__', data.results[0].message)
 
                                  .replace('__url__', pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': data.results[0].raw_id}));
 
                          _html +='<br/>'
 
                          _html +='<i style="color:#036185" class="icon-chevron-left"></i> <a title="__title__" href="__url__">__rev__</a>'
 
                          _html +='<i style="color:#036185" class="icon-left-open"></i> <a title="__title__" href="__url__">__rev__</a>'
 
                                  .replace('__rev__','r{0}:{1}'.format(data.results[1].revision, data.results[1].raw_id.substr(0,6)))
 
                                  .replace('__title__', data.results[1].message)
 
                                  .replace('__url__', pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': data.results[1].raw_id}));
 
                          $('#parent_link').html(_html);
 
                      }
 
                    }
 
                  });
 
              e.preventDefault();
 
              }
 
          })
 
      })
 

	
 
    </script>
 

	
 
    </div>
 
</%def>
kallithea/templates/changeset/changeset_file_comment.html
Show inline comments
 
@@ -18,49 +18,49 @@
 
       <div style="float:left;padding:4px 0px 0px 5px">
 
        <span class="">
 
         %if co.pull_request:
 
            %if co.status_change:
 
              ${_('Status change from pull request')}
 
              <a href="${co.pull_request.url()}">"${co.pull_request.title or _("No title")}"</a>:
 
            %else:
 
              ${_('Comment from pull request')}
 
              <a href="${co.pull_request.url()}">"${co.pull_request.title or _("No title")}"</a>
 
            %endif
 
         %else:
 
            %if co.status_change:
 
              ${_('Status change on changeset')}:
 
            %else:
 
              ${_('Comment on changeset')}
 
            %endif
 
         %endif
 
        </span>
 
       </div>
 

	
 
        %if co.status_change:
 
           <div  style="float:left" class="changeset-status-container">
 
             <div style="float:left;padding:10px 2px 0px 2px"></div>
 
             <div title="${_('Changeset status')}" class="changeset-status-lbl"> ${co.status_change[0].status_lbl}</div>
 
             <div class="changeset-status-ico"><img src="${h.url(str('/images/icons/flag_status_%s.png' % co.status_change[0].status))}" /></div>
 
             <div class="changeset-status-ico"><i class="icon-circle changeset-status-${co.status_change[0].status}"></i></div>
 
           </div>
 
        %endif
 

	
 
      <a class="permalink" href="#comment-${co.comment_id}">&para;</a>
 
      %if h.HasPermissionAny('hg.admin')() or h.HasRepoPermissionAny('repository.admin')(c.repo_name) or co.author.user_id == c.authuser.user_id:
 
          <div onClick="confirm('${_("Delete comment?")}') && deleteComment(${co.comment_id})" class="buttons delete-comment btn btn-mini">${_('Delete')}</div>
 
      %endif
 
      </div>
 
      <div class="text">
 
          ${h.rst_w_mentions(co.text)|n}
 
      </div>
 
    </div>
 
  </div>
 
</%def>
 

	
 

	
 
<%def name="comment_inline_form()">
 
<div id='comment-inline-form-template' style="display:none">
 
  <div class="comment-inline-form ac">
 
  %if c.authuser.username != 'default':
 
    ${h.form('#', class_='inline-form')}
 
      <div id="edit-container_{1}" class="clearfix">
 
        <div class="comment-help">${_('Commenting on line {1}.')}
 
          ${(_('Comments parsed using %s syntax with %s support.') % (
 
@@ -145,86 +145,86 @@
 
    <div class="comment-form ac">
 
      ${h.form(post_url)}
 
        <div id="edit-container" class="clearfix">
 
            <div class="comment-help">
 
                ${(_('Comments parsed using %s syntax with %s support.') % (('<a href="%s">RST</a>' % h.url('rst_help')),
 
                  '<span style="color:#577632" class="tooltip" title="%s">@mention</span>' %
 
                  _('Use @username inside this text to send notification to another local user.')))|n}
 
            </div>
 
            <div class="mentions-container" id="mentions_container"></div>
 
            ${h.textarea('text', class_="comment-block-ta")}
 
            %if change_status:
 
              <div id="status_block_container" class="status-block">
 
                %if is_pr:
 
                  ${_('Vote for pull request status')}:
 
                %else:
 
                  ${_('Set changeset status')}:
 
                %endif
 
                <input type="radio" class="status_change_radio" name="changeset_status" id="changeset_status_unchanged" value="" checked="checked" />
 
                <label for="changeset_status_unchanged">
 
                  ${_('No change')}
 
                </label>
 
                %for status,lbl in c.changeset_statuses:
 
                    <span style="margin-left: 15px;">
 
                        <input type="radio" class="status_change_radio" name="changeset_status" id="${status}" value="${status}">
 
                        <label for="${status}"><img src="${h.url('/images/icons/flag_status_%s.png' % status)}" />${lbl}</label>
 
                        <label for="${status}"><i class="icon-circle changeset-status-${status}" /></i>${lbl}</label>
 
                    </span>
 
                %endfor
 
                %if is_pr and change_status:
 
                <input id="save_close" type="checkbox" name="save_close">
 
                <label id="save_close_label" for="save_close">${_("Close")}</label>
 
                %endif
 
              </div>
 
            %endif
 
        </div>
 

	
 
        <div id="preview-container" class="clearfix" style="display:none">
 
            <div class="comment-help">
 
                ${_('Comment preview')}
 
            </div>
 
            <div id="preview-box" class="preview-box"></div>
 
        </div>
 

	
 
        <div class="comment-button">
 
            ${h.submit('save', _('Comment'), class_="btn")}
 
            <div id="preview-btn" class="preview-btn btn">${_('Preview')}</div>
 
            <div id="edit-btn" class="edit-btn btn" style="display:none">${_('Edit')}</div>
 
        </div>
 
      ${h.end_form()}
 
    </div>
 
    %endif
 
</div>
 

	
 
<script>
 

	
 
$(document).ready(function () {
 
   MentionsAutoComplete('text', 'mentions_container', _USERS_AC_DATA, _GROUPS_AC_DATA);
 

	
 
   $('#preview-btn').click(function(){
 
       var _text = $('#text').val();
 
       if(!_text){
 
           return;
 
       }
 
       var post_data = {'text': _text};
 
       $('#preview-box').addClass('unloaded');
 
       $('#preivew-box').html(_TM['Loading ...']);
 
       $('#edit-container').hide();
 
       $('#edit-btn').show();
 
       $('#preview-container').show();
 
       $('#preview-btn').hide();
 

	
 
       var url = pyroutes.url('changeset_comment_preview', {'repo_name': '${c.repo_name}'});
 
       ajaxPOST(url,post_data,function(o){
 
           $('#preview-box').html(o.responseText);
 
       ajaxPOST(url,post_data,function(html){
 
           $('#preview-box').html(html);
 
           $('#preview-box').removeClass('unloaded');
 
       });
 
   });
 
   $('#edit-btn').click(function(){
 
       $('#edit-container').show();
 
       $('#edit-btn').hide();
 
       $('#preview-container').hide();
 
       $('#preview-btn').show();
 
   });
 

	
 
});
 
</script>
 
</%def>
kallithea/templates/changeset/changeset_range.html
Show inline comments
 
@@ -12,78 +12,79 @@
 
    ${_('Changesets')} -
 
    ${h.link_to(h.show_id(c.cs_ranges[0]),h.url('changeset_home',repo_name=c.repo_name,revision=c.cs_ranges[0]))}</td>
 
    <i class="icon-arrow-right"></i>
 
    ${h.link_to(h.show_id(c.cs_ranges[-1]),h.url('changeset_home',repo_name=c.repo_name,revision=c.cs_ranges[-1]))}</td>
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('repositories')}
 
</%def>
 

	
 
<%def name="main()">
 
${self.repo_context_bar('changelog')}
 
<div class="box">
 
    <!-- box / title -->
 
    <div class="title">
 
        ${self.breadcrumbs()}
 
    </div>
 
    <div class="table">
 
        <div id="body" class="diffblock">
 
            <div class="code-header">
 
                <div>
 
                    ${h.show_id(c.cs_ranges[0])}
 
                    <i class="icon-arrow-right"></i>
 
                    ${h.show_id(c.cs_ranges[-1])}
 
                    <a style="font-weight: bold" href="${h.url('compare_url',repo_name=c.repo_name,org_ref_type='rev',org_ref_name=getattr(c.cs_ranges[0].parents[0] if c.cs_ranges[0].parents else h.EmptyChangeset(),'raw_id'),other_ref_type='rev',other_ref_name=c.cs_ranges[-1].raw_id)}" class="btn btn-small"><i class="icon-loop"></i> Compare Revisions</a>
 
                    <a style="font-weight: bold" href="${h.url('compare_url',repo_name=c.repo_name,org_ref_type='rev',org_ref_name=getattr(c.cs_ranges[0].parents[0] if c.cs_ranges[0].parents else h.EmptyChangeset(),'raw_id'),other_ref_type='rev',other_ref_name=c.cs_ranges[-1].raw_id)}" class="btn btn-small"><i class="icon-git-compare"></i> Compare Revisions</a>
 
                </div>
 
            </div>
 
        </div>
 
        <div id="changeset_compare_view_content">
 
            <div class="container">
 
            <table class="compare_view_commits noborder">
 
            %for cnt,cs in enumerate(c.cs_ranges):
 
                <tr>
 
                <td><div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(h.email_or_none(cs.author),14)}"/></div></td>
 
                <td>${h.link_to('r%s:%s' % (cs.revision,h.short_id(cs.raw_id)),h.url('changeset_home',repo_name=c.cs_repo.repo_name,revision=cs.raw_id))}</td>
 
                <td><div class="author">${h.person(cs.author)}</div></td>
 
                <td><span class="tooltip" title="${h.age(cs.date)}">${cs.date}</span></td>
 
                <td>
 
                  %if c.statuses:
 
                    <div title="${h.tooltip(_('Changeset status'))}" class="changeset-status-ico"><img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses[cnt])}" /></div>
 
                    <div title="${h.tooltip(_('Changeset status'))}" class="changeset-status-ico"><i class="icon-circle changeset-status-${c.statuses[cnt]}"></i></div>
 
                  %endif
 
                </td>
 
                <td><div class="message">${h.urlify_commit(h.wrap_paragraphs(cs.message),c.repo_name)}</div></td>
 
                </tr>
 
            %endfor
 
            </table>
 
            </div>
 
            <div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px">${_('Files affected')}</div>
 
            <div class="cs_files">
 
                %for cs in c.cs_ranges:
 
                    <div class="cur_cs">${h.link_to(h.show_id(cs),h.url('changeset_home',repo_name=c.cs_repo.repo_name,revision=cs.raw_id))}</div>
 
                    %for FID, (cs1, cs2, change, path, diff, stats) in c.changes[cs.raw_id].iteritems():
 
                        <div class="cs_${change}">
 
                            <div class="node">
 
                                <i class="icon-diff-${change}"></i>
 
                                ${h.link_to(h.safe_unicode(path),h.url.current(anchor=FID))}
 
                            </div>
 
                            <div class="changes">${h.fancy_file_stats(stats)}</div>
 
                        </div>
 
                    %endfor
 
                %endfor
 
            </div>
 
        </div>
 

	
 
    </div>
 
    <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
 
    <%namespace name="diff_block" file="/changeset/diff_block.html"/>
 
    ${diff_block.diff_block_js()}
 
    %for cs in c.cs_ranges:
 
          ##${comment.comment_inline_form(cs)}
 
          ## diff block
 
          <div class="h3">
 
          <a class="tooltip" title="${h.tooltip(cs.message)}" href="${h.url('changeset_home',repo_name=c.cs_repo.repo_name,revision=cs.raw_id)}">${h.show_id(cs)}</a>
 
             <div class="gravatar">
 
                 <img alt="gravatar" src="${h.gravatar_url(h.email_or_none(cs.author),20)}"/>
 
             </div>
 
             <div class="right">
 
              <span class="logtags">
 
                %if len(cs.parents)>1:
kallithea/templates/changeset/diff_block.html
Show inline comments
 
## -*- coding: utf-8 -*-
 
##usage:
 
## <%namespace name="diff_block" file="/changeset/diff_block.html"/>
 
## ${diff_block.diff_block(change)}
 
##
 
<%def name="diff_block(change)">
 
<div class="diff-collapse">
 
    <span target="${'diff-container-%s' % (id(change))}" class="diff-collapse-button">&uarr; ${_('Collapse Diff')} &uarr;</span>
 
</div>
 
<div class="diff-container" id="${'diff-container-%s' % (id(change))}">
 
%for FID,(cs1, cs2, change, path, diff, stats) in change.iteritems():
 
    <div id="${FID}_target" style="clear:both;margin-top:25px"></div>
 
    <div id="${FID}" class="diffblock  margined comm">
 
        <div class="code-header">
 
            <div class="changeset_header">
 
                <div class="changeset_file">
 
                    ${h.link_to_if(change!='D',h.safe_unicode(path),h.url('files_home',repo_name=c.repo_name,
 
                    revision=cs2,f_path=h.safe_unicode(path)))}
 
                </div>
 
                <div class="diff-actions">
 
                  <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(path),diff2=cs2,diff1=cs1,diff='diff',fulldiff=1)}" class="tooltip" title="${h.tooltip(_('Show full diff for this file'))}">
 
                      <img class="icon" src="${h.url('/images/icons/page_white_go.png')}"/>
 
                      <i class="icon-file-code"></i>
 
                  </a>
 
                  <a href="${h.url('files_diff_2way_home',repo_name=c.repo_name,f_path=h.safe_unicode(path),diff2=cs2,diff1=cs1,diff='diff',fulldiff=1)}" class="tooltip" title="${h.tooltip(_('Show full side-by-side diff for this file'))}">
 
                      <img class="icon" src="${h.url('/images/icons/application_double.png')}"/>
 
                      <i class="icon-docs"></i>
 
                  </a>
 
                  <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(path),diff2=cs2,diff1=cs1,diff='raw')}" class="tooltip" title="${h.tooltip(_('Raw diff'))}">
 
                      <img class="icon" src="${h.url('/images/icons/page_white.png')}"/>
 
                      <i class="icon-diff"></i>
 
                  </a>
 
                  <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(path),diff2=cs2,diff1=cs1,diff='download')}" class="tooltip" title="${h.tooltip(_('Download diff'))}">
 
                      <img class="icon" src="${h.url('/images/icons/page_save.png')}"/>
 
                      <i class="icon-floppy"></i>
 
                  </a>
 
                  ${c.ignorews_url(request.GET, h.FID(cs2,path))}
 
                  ${c.context_url(request.GET, h.FID(cs2,path))}
 
                </div>
 
                <span style="float:right;margin-top:-3px">
 
                  <label>
 
                  ${_('Show inline comments')}
 
                  ${h.checkbox('',checked="checked",class_="show-inline-comments",id_for=h.FID(cs2,path))}
 
                  </label>
 
                </span>
 
            </div>
 
        </div>
 
        <div class="code-body">
 
            <div class="full_f_path" path="${h.safe_unicode(path)}"></div>
 
            ${diff|n}
 
            %if path.rsplit('.')[-1] in ['png', 'gif', 'jpg', 'bmp']:
 
              <div class="btn btn-image-diff-show">Show images</div>
 
              %if change =='M':
 
                <div id="${FID}_image-diff" class="btn btn-image-diff-swap" style="display:none">Press to swap images</div>
 
              %endif
 
              <div style="font-size: 0">
 
                %if change == 'M':
 
                  <img id="${FID}_image-diff-img-a" class="img-diff img-diff-swapable" style="display:none"
 
                      realsrc="${h.url('files_raw_home',repo_name=c.repo_name,revision=cs1,f_path=path)}" />
 
@@ -65,55 +65,60 @@
 
%endfor
 
</div>
 
</%def>
 

	
 
<%def name="diff_block_simple(change)">
 

	
 
  %for op,filenode_path,diff in change:
 
    <div id="${h.FID('',filenode_path)}_target" style="clear:both;margin-top:25px"></div>
 
    <div id="${h.FID('',filenode_path)}" class="diffblock  margined comm">
 
      <div class="code-header">
 
          <div class="changeset_header">
 
              <div class="changeset_file">
 
                  ${h.safe_unicode(filenode_path)} |
 
                  ## TODO: link to ancestor and head of other instead of exactly other
 
                  %if op == 'A':
 
                    ${_('Added')}
 
                    <a class="spantag" href="${h.url('files_home', repo_name=c.cs_repo.repo_name, f_path=filenode_path, revision=c.cs_rev)}">${h.short_id(c.cs_ref_name) if c.cs_ref_type=='rev' else c.cs_ref_name}</a>
 
                  %elif op == 'M':
 
                    <a class="spantag" href="${h.url('files_home', repo_name=c.a_repo.repo_name, f_path=filenode_path, revision=c.a_rev)}">${h.short_id(c.a_ref_name) if c.a_ref_type=='rev' else c.a_ref_name}</a>
 
                    <i class="icon-arrow-right"></i>
 
                    <a class="spantag" href="${h.url('files_home', repo_name=c.cs_repo.repo_name, f_path=filenode_path, revision=c.cs_rev)}">${h.short_id(c.cs_ref_name) if c.cs_ref_type=='rev' else c.cs_ref_name}</a>
 
                  %elif op == 'D':
 
                    ${_('Deleted')}
 
                    <a class="spantag" href="${h.url('files_home', repo_name=c.a_repo.repo_name, f_path=filenode_path, revision=c.a_rev)}">${h.short_id(c.a_ref_name) if c.a_ref_type=='rev' else c.a_ref_name}</a>
 
                  %elif op == 'R':
 
                    ${_('Renamed')}
 
                    <a class="spantag" href="${h.url('files_home', repo_name=c.a_repo.repo_name, f_path=filenode_path, revision=c.a_rev)}">${h.short_id(c.a_ref_name) if c.a_ref_type=='rev' else c.a_ref_name}</a>
 
                    <i class="icon-arrow-right"></i>
 
                    <a class="spantag" href="${h.url('files_home', repo_name=c.cs_repo.repo_name, f_path=filenode_path, revision=c.cs_rev)}">${h.short_id(c.cs_ref_name) if c.cs_ref_type=='rev' else c.cs_ref_name}</a>
 
                  %else:
 
                    ${op}???
 
                  %endif
 
              </div>
 
              <div class="diff-actions">
 
                <a href="${h.url('files_diff_2way_home',repo_name=c.cs_repo.repo_name,f_path=h.safe_unicode(filenode_path),diff1=c.a_rev,diff2=c.cs_rev,diff='diff',fulldiff=1)}" class="tooltip" title="${h.tooltip(_('Show full side-by-side diff for this file'))}">
 
                  <img class="icon" src="${h.url('/images/icons/application_double.png')}"/>
 
                  <i class="icon-docs"></i>
 
                </a>
 
                ${c.ignorews_url(request.GET)}
 
                ${c.context_url(request.GET)}
 
              </div>
 
          </div>
 
      </div>
 
        <div class="code-body">
 
            <div class="full_f_path" path="${h.safe_unicode(filenode_path)}"></div>
 
            ${diff|n}
 
            %if filenode_path.rsplit('.')[-1] in ['png', 'gif', 'jpg', 'bmp']:
 
              <div class="btn btn-image-diff-show">Show images</div>
 
              %if op == 'M':
 
                <div id="${h.FID('',filenode_path)}_image-diff" class="btn btn-image-diff-swap" style="display:none">Press to swap images</div>
 
              %endif
 
              <div style="font-size: 0">
 
                %if op == 'M':
 
                  <img id="${h.FID('',filenode_path)}_image-diff-img-a" class="img-diff img-diff-swapable" style="display:none"
 
                      realsrc="${h.url('files_raw_home',repo_name=c.a_repo.repo_name,revision=c.a_rev,f_path=filenode_path) if op in 'DM' else ''}" />
 
                %endif
 
                %if op in 'AM':
 
                  <img id="${h.FID('',filenode_path)}_image-diff-img-b" class="img-diff img-diff-swapable" style="display:none"
 
                      realsrc="${h.url('files_raw_home',repo_name=c.cs_repo.repo_name,revision=c.cs_rev,f_path=filenode_path) if op in 'AM' else ''}" />
 
                %endif
 
              </div>
kallithea/templates/compare/compare_cs.html
Show inline comments
 
## Changesets table !
 
<div class="container">
 
  %if not c.cs_ranges:
 
    <span class="empty_data">${_('No changesets')}</span>
 
  %else:
 

	
 
    %if c.ancestor:
 
    <div class="ancestor">${_('Ancestor')}:
 
      ${h.link_to(h.short_id(c.ancestor),h.url('changeset_home',repo_name=c.repo_name,revision=c.ancestor))}
 
    </div>
 
    %endif
 

	
 
    <div id="graph_nodes">
 
        <canvas id="graph_canvas"></canvas>
 
    </div>
 

	
 
    <div id="graph_content_pr" style="margin-left: 100px;">
 

	
 
    <table class="compare_view_commits noborder">
 
    %for cnt, cs in enumerate(reversed(c.cs_ranges)):
 
        <tr id="chg_${cnt+1}">
 
        <td style="width:50px">
 
          %if cs.raw_id in c.statuses:
 
            <div title="${_('Changeset status: %s') % c.statuses[cs.raw_id][1]}" class="changeset-status-ico">
 
                <img height="16" width="16" src="${h.url('/images/icons/flag_status_%s.png' % c.statuses[cs.raw_id][0])}" />
 
                <i class="icon-circle changeset-status-${c.statuses[cs.raw_id][0]}"></i>
 
            </div>
 
          %endif
 
          %if c.cs_comments.get(cs.raw_id):
 
              <div class="comments-container">
 
                  <div class="comments-cnt" title="${_('Changeset has comments')}">
 
                      <a href="${h.url('changeset_home',repo_name=c.cs_repo.repo_name,revision=cs.raw_id,anchor='comment-%s' % c.cs_comments[cs.raw_id][0].comment_id)}">
 
                          ${len(c.cs_comments[cs.raw_id])}
 
                          <i class="icon-comment-alt icon-comment-colored"></i>
 
                      </a>
 
                  </div>
 
              </div>
 
          %endif
 
        </td>
 
        <td style="width: 140px"><span class="tooltip" title="${h.tooltip(h.age(cs.date))}">${cs.date}</span></td>
 
        <td><div class="gravatar" commit_id="${cs.raw_id}"><img alt="gravatar" src="${h.gravatar_url(h.email_or_none(cs.author),14)}" height="14" width="14"/></div></td>
 
        <td><div class="author">${h.person(cs.author)}</div></td>
 
        <td>${h.link_to(h.show_id(cs),h.url('changeset_home',repo_name=c.cs_repo.repo_name,revision=cs.raw_id))}</td>
 
        <td>
 
        %if cs.branch:
 
        <span class="branchtag">${h.link_to(cs.branch,h.url('changelog_home',repo_name=c.cs_repo.repo_name,branch=cs.branch))}</span>
 
        %endif
 
        </td>
 
        <td class="expand_commit" commit_id="${cs.raw_id}" title="${_('Expand commit message')}">
 
            <i class="icon-resize-vertical" style="color:#DDD"></i>
 
            <i class="icon-align-left" style="color:#999"></i>
 
        </td>
 
        <td><div id="C-${cs.raw_id}" class="message">${h.urlify_commit(cs.message, c.repo_name)}</div></td>
 
        </tr>
 
    %endfor
 
    </table>
 

	
 
    </div>
 

	
 
    %if c.as_form:
 
      <div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px">
 
      ## links should perhaps use ('rev', c.a_rev) instead ...
 
      ${h.link_to(_('Show merge diff'),
 
        h.url('compare_url',
 
          repo_name=c.a_repo.repo_name,
 
          org_ref_type=c.a_ref_type, org_ref_name=c.a_ref_name,
 
          other_repo=c.cs_repo.repo_name,
 
          other_ref_type=c.cs_ref_type, other_ref_name=c.cs_ref_name,
 
          merge='1')
 
        )}
 
      </div>
 
      <div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px">
 
        ${_('Common ancestor')}:
 
        %if c.ancestor:
 
        ${h.link_to(h.short_id(c.ancestor),h.url('changeset_home',repo_name=c.repo_name,revision=c.ancestor))}
kallithea/templates/compare/compare_diff.html
Show inline comments
 
@@ -12,85 +12,88 @@
 
    %endif
 
</%def>
 

	
 
<%def name="breadcrumbs_links()">
 
  ${_('Compare Revisions')}
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('repositories')}
 
</%def>
 

	
 
<%def name="main()">
 
${self.repo_context_bar('changelog')}
 
<div class="box">
 
    <!-- box / title -->
 
    <div class="title">
 
        ${self.breadcrumbs()}
 
    </div>
 
    <div class="table">
 
        <div id="body" class="diffblock">
 
            <div class="code-header">
 
                <div>
 
                    ${h.hidden('compare_org')} <i class="icon-arrow-right"></i> ${h.hidden('compare_other')}
 
                    %if not c.compare_home:
 
                        <a class="btn btn-small" href="${c.swap_url}"><i class="icon-refresh"></i> ${_('Swap')}</a>
 
                        <a class="btn btn-small" href="${c.swap_url}"><i class="icon-arrows-cw"></i> ${_('Swap')}</a>
 
                    %endif
 
                    <div id="compare_revs" class="btn btn-small"><i class="icon-loop"></i> ${_('Compare Revisions')}</div>
 
                    <div id="compare_revs" class="btn btn-small"><i class="icon-git-compare"></i> ${_('Compare Revisions')}</div>
 
                </div>
 
            </div>
 
        </div>
 

	
 
    %if c.compare_home:
 
        <div id="changeset_compare_view_content">
 
         <div style="color:#999;font-size: 18px">${_('Compare revisions, branches, bookmarks, or tags.')}</div>
 
        </div>
 
    %else:
 
        <div id="changeset_compare_view_content">
 
                ##CS
 
                <div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px">${ungettext('Showing %s commit','Showing %s commits', len(c.cs_ranges)) % len(c.cs_ranges)}</div>
 
                <%include file="compare_cs.html" />
 

	
 
                ## FILES
 
                <div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px">
 

	
 
                % if c.limited_diff:
 
                    ${ungettext('%s file changed', '%s files changed', len(c.files)) % len(c.files)}
 
                % else:
 
                    ${ungettext('%s file changed with %s insertions and %s deletions','%s files changed with %s insertions and %s deletions', len(c.files)) % (len(c.files),c.lines_added,c.lines_deleted)}:
 
                %endif
 

	
 
                ${c.ignorews_url(request.GET)}
 
                ${c.context_url(request.GET)}
 

	
 
                </div>
 
                <div class="cs_files">
 
                  %if not c.files:
 
                     <span class="empty_data">${_('No files')}</span>
 
                  %endif
 
                  %for fid, change, f, stat in c.files:
 
                      <div class="cs_${change}">
 
                        <div class="node">${h.link_to(h.safe_unicode(f), '#' + fid)}</div>
 
                         <div class="node">
 
                             <i class="icon-diff-${change}"></i>
 
                             ${h.link_to(h.safe_unicode(f), '#' + fid)}
 
                         </div>
 
                        <div class="changes">${h.fancy_file_stats(stat)}</div>
 
                      </div>
 
                  %endfor
 
                </div>
 
                % if c.limited_diff:
 
                  <h5>${_('Changeset was too big and was cut off...')} <a href="${h.url.current(fulldiff=1, **request.GET.mixed())}">${_('Show full diff')}</a></h5>
 
                % endif
 
         </div>
 

	
 
        ## diff block
 
        <%namespace name="diff_block" file="/changeset/diff_block.html"/>
 
        ${diff_block.diff_block_js()}
 
        %for fid, change, f, stat in c.files:
 
          ${diff_block.diff_block_simple([c.changes[fid]])}
 
        %endfor
 
        % if c.limited_diff:
 
          <h4>${_('Changeset was too big and was cut off...')} <a href="${h.url.current(fulldiff=1, **request.GET.mixed())}">${_('Show full diff')}</a></h4>
 
        % endif
 
    %endif
 
    </div>
 

	
 
</div>
 
    <script type="text/javascript">
 

	
kallithea/templates/data_table/_dt_elements.html
Show inline comments
 
## DATA TABLE RE USABLE ELEMENTS
 
## usage:
 
## <%namespace name="dt" file="/data_table/_dt_elements.html"/>
 

	
 
<%def name="quick_menu(repo_name)">
 
  <ul class="menu_items hidden">
 
  ##<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
 

	
 
    <li style="border-top:1px solid #577632;margin-left:18px;padding-left:-99px"></li>
 
    <li>
 
       <a title="${_('Summary')}" href="${h.url('summary_home',repo_name=repo_name)}">
 
       <span class="icon">
 
           <i class="icon-file-text"></i>
 
           <i class="icon-doc-text-inv"></i>
 
       </span>
 
       <span>${_('Summary')}</span>
 
       </a>
 
    </li>
 
    <li>
 
       <a title="${_('Changelog')}" href="${h.url('changelog_home',repo_name=repo_name)}">
 
       <span class="icon">
 
           <i class="icon-list-alt"></i>
 
           <i class="icon-clock"></i>
 
       </span>
 
       <span>${_('Changelog')}</span>
 
       </a>
 
    </li>
 
    <li>
 
       <a title="${_('Files')}" href="${h.url('files_home',repo_name=repo_name)}">
 
       <span class="icon">
 
           <i class="icon-file-alt"></i>
 
           <i class="icon-docs"></i>
 
       </span>
 
       <span>${_('Files')}</span>
 
       </a>
 
    </li>
 
    <li>
 
       <a title="${_('Fork')}" href="${h.url('repo_fork_home',repo_name=repo_name)}">
 
       <span class="icon">
 
           <i class="icon-code-fork"></i>
 
           <i class="icon-fork"></i>
 
       </span>
 
       <span>${_('Fork')}</span>
 
       </a>
 
    </li>
 
    <li>
 
       <a title="${_('Settings')}" href="${h.url('edit_repo',repo_name=repo_name)}">
 
       <span class="icon">
 
           <i class="icon-cog"></i>
 
           <i class="icon-gear"></i>
 
       </span>
 
       <span>${_('Settings')}</span>
 
       </a>
 
    </li>
 
  </ul>
 
</%def>
 

	
 
<%def name="repo_name(name,rtype,rstate,private,fork_of,short_name=False,admin=False)">
 
    <%
 
    def get_name(name,short_name=short_name):
 
      if short_name:
 
        return name.split('/')[-1]
 
      else:
 
        return name
 
    %>
 
  <div style="white-space: nowrap; ${'opacity: 0.5' if rstate == 'repo_state_pending' else ''}}">
 
    ##NAME
 
    %if admin:
 
        <a href="${h.url('edit_repo',repo_name=name)}">
 
    %else:
 
        <a href="${h.url('summary_home',repo_name=name)}">
 
    %endif
 

	
 
    ##TYPE OF REPO
 
    %if h.is_hg(rtype):
 
        <span title="${_('Mercurial repository')}"><i class="icon-hg" style="color: #576622; font-size: 14px;"></i></span>
 
    %elif h.is_git(rtype):
 
        <span title="${_('Git repository')}"><i class="icon-git" style="color: #e85634; font-size: 14px;"></i></span>
 
    %endif
 

	
 
    ##PRIVATE/PUBLIC
 
    %if private and c.visual.show_private_icon:
 
      <i class="icon-lock" style="color: #e85634; font-size: 16px; vertical-align: -2px; margin: 0px 1px 0px 3px" title="${_('Private repository')}"></i>
 
      <i class="icon-keyhole-circled" title="${_('Private repository')}" style="font-size: 16px; vertical-align: -2px; margin: 0px 1px 0px 3px"></i>
 
    %elif not private and c.visual.show_public_icon:
 
      <i class="icon-unlock-alt" style="color: #999999; font-size: 16px; vertical-align: -2px; margin: 0px 1px 0px 3px" title="${_('Public repository')}"></i>
 
      <i class="icon-globe" title="${_('Public repository')}" style="font-size: 16px; vertical-align: -2px; margin: 0px 1px 0px 3px"></i>
 
    %else:
 
      <span style="margin: 0px 8px 0px 8px"></span>
 
    %endif
 
    ${get_name(name)}
 
    </a>
 
    %if fork_of:
 
      <a href="${h.url('summary_home',repo_name=fork_of.repo_name)}"><i class="icon-code-fork"></i></a>
 
      <a href="${h.url('summary_home',repo_name=fork_of.repo_name)}"><i class="icon-fork"></i></a>
 
    %endif
 
    %if rstate == 'repo_state_pending':
 
      <i class="icon-cogs" style="color: #036185;" title="${_('Repository creating in progress...')}"></i>
 
      <i class="icon-wrench" style="color: #036185;" title="${_('Repository creating in progress...')}"></i>
 
    %endif
 
  </div>
 
</%def>
 

	
 
<%def name="last_change(last_change)">
 
  <span class="tooltip" date="${last_change}" title="${h.tooltip(h.fmt_date(last_change))}">${h.age(last_change)}</span>
 
</%def>
 

	
 
<%def name="revision(name,rev,tip,author,last_msg)">
 
  <div>
 
  %if rev >= 0:
 
      <pre><a title="${h.tooltip('%s:\n\n%s' % (author,last_msg))}" class="tooltip" href="${h.url('changeset_home',repo_name=name,revision=tip)}">${'r%s:%s' % (rev,h.short_id(tip))}</a></pre>
 
  %else:
 
      ${_('No changesets yet')}
 
  %endif
 
  </div>
 
</%def>
 

	
 
<%def name="rss(name)">
 
  %if c.authuser.username != 'default':
 
    <a title="${_('Subscribe to %s rss feed')% name}" href="${h.url('rss_feed_home',repo_name=name,api_key=c.authuser.api_key)}"><i class="icon-rss-sign" style="color: #fa9b39"></i></a>
 
    <a title="${_('Subscribe to %s rss feed')% name}" href="${h.url('rss_feed_home',repo_name=name,api_key=c.authuser.api_key)}"><i class="icon-rss-squared"></i></a>
 
  %else:
 
    <a title="${_('Subscribe to %s rss feed')% name}" href="${h.url('rss_feed_home',repo_name=name)}"><i class="icon-rss-sign" style="color: #fa9b39"></i></a>
 
    <a title="${_('Subscribe to %s rss feed')% name}" href="${h.url('rss_feed_home',repo_name=name)}"><i class="icon-rss-squared"></i></a>
 
  %endif
 
</%def>
 

	
 
<%def name="atom(name)">
 
  %if c.authuser.username != 'default':
 
    <a title="${_('Subscribe to %s atom feed')% name}" href="${h.url('atom_feed_home',repo_name=name,api_key=c.authuser.api_key)}"><i class="icon-rss-sign"  style="color: #fa9b39"></i></a>
 
    <a title="${_('Subscribe to %s atom feed')% name}" href="${h.url('atom_feed_home',repo_name=name,api_key=c.authuser.api_key)}"><i class="icon-rss-squared"></i></a>
 
  %else:
 
    <a title="${_('Subscribe to %s atom feed')% name}" href="${h.url('atom_feed_home',repo_name=name)}"><i class="icon-rss-sign"  style="color: #fa9b39"></i></a>
 
    <a title="${_('Subscribe to %s atom feed')% name}" href="${h.url('atom_feed_home',repo_name=name)}"><i class="icon-rss-squared"></i></a>
 
  %endif
 
</%def>
 

	
 
<%def name="user_gravatar(email, size=24)">
 
    <div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(email, size)}"/> </div>
 
</%def>
 

	
 
<%def name="repo_actions(repo_name, super_user=True)">
 
  <div>
 
    <div style="float:left; margin-right:5px;" class="grid_edit">
 
      <a href="${h.url('edit_repo',repo_name=repo_name)}" title="${_('edit')}">
 
        <i class="icon-pencil"></i> ${h.submit('edit_%s' % repo_name,_('edit'),class_="action_button")}
 
      </a>
 
    </div>
 
    <div style="float:left" class="grid_delete">
 
      ${h.form(h.url('repo', repo_name=repo_name),method='delete')}
 
        <i class="icon-remove-sign" style="color:#FF4444"></i>
 
        <i class="icon-minus-circled" style="color:#FF4444"></i>
 
        ${h.submit('remove_%s' % repo_name,_('delete'),class_="action_button",
 
        onclick="return confirm('"+_('Confirm to delete this repository: %s') % repo_name+"');")}
 
      ${h.end_form()}
 
    </div>
 
  </div>
 
</%def>
 

	
 
<%def name="repo_state(repo_state)">
 
  <div>
 
    %if repo_state == 'repo_state_pending':
 
        <div class="btn btn-mini btn-info disabled">${_('Creating')}</div>
 
    %elif repo_state == 'repo_state_created':
 
        <div class="btn btn-mini btn-success disabled">${_('Created')}</div>
 
    %else:
 
        <div class="btn btn-mini btn-danger disabled" title="${repo_state}">invalid</div>
 
    %endif
 
  </div>
 
</%def>
 

	
 
<%def name="user_actions(user_id, username)">
 
 <div style="float:left" class="grid_edit">
 
   <a href="${h.url('edit_user',id=user_id)}" title="${_('edit')}">
 
     <i class="icon-pencil"></i> ${h.submit('edit_%s' % username,_('edit'),class_="action_button")}
 
   </a>
 
 </div>
 
 <div style="float:left" class="grid_delete">
 
  ${h.form(h.url('delete_user', id=user_id),method='delete')}
 
    <i class="icon-remove-sign" style="color:#FF4444"></i>
 
    <i class="icon-minus-circled" style="color:#FF4444"></i>
 
    ${h.submit('remove_',_('delete'),id="remove_user_%s" % user_id, class_="action_button",
 
    onclick="return confirm('"+_('Confirm to delete this user: %s') % username+"');")}
 
  ${h.end_form()}
 
 </div>
 
</%def>
 

	
 
<%def name="user_group_actions(user_group_id, user_group_name)">
 
 <div style="float:left" class="grid_edit">
 
    <a href="${h.url('edit_users_group', id=user_group_id)}" title="${_('Edit')}">
 
    <i class="icon-pencil"></i>
 
     ${h.submit('edit_%s' % user_group_name,_('edit'),class_="action_button", id_="submit_user_group_edit")}
 
    </a>
 
 </div>
 
 <div style="float:left" class="grid_delete">
 
    ${h.form(h.url('users_group', id=user_group_id),method='delete')}
 
      <i class="icon-remove-sign" style="color:#FF4444"></i>
 
      <i class="icon-minus-circled" style="color:#FF4444"></i>
 
      ${h.submit('remove_',_('delete'),id="remove_group_%s" % user_group_id, class_="action_button",
 
      onclick="return confirm('"+_('Confirm to delete this user group: %s') % user_group_name+"');")}
 
    ${h.end_form()}
 
 </div>
 
</%def>
 

	
 
<%def name="repo_group_actions(repo_group_id, repo_group_name, gr_count)">
 
 <div style="float:left" class="grid_edit">
 
    <a href="${h.url('edit_repo_group',group_name=repo_group_name)}" title="${_('Edit')}">
 
    <i class="icon-pencil"></i>
 
     ${h.submit('edit_%s' % repo_group_name, _('edit'),class_="action_button")}
 
    </a>
 
 </div>
 
 <div style="float:left" class="grid_delete">
 
    ${h.form(h.url('repos_group', group_name=repo_group_name),method='delete')}
 
        <i class="icon-remove-sign" style="color:#FF4444"></i>
 
        <i class="icon-minus-circled" style="color:#FF4444"></i>
 
        ${h.submit('remove_%s' % repo_group_name,_('delete'),class_="action_button",
 
        onclick="return confirm('"+ungettext('Confirm to delete this group: %s with %s repository','Confirm to delete this group: %s with %s repositories',gr_count) % (repo_group_name, gr_count)+"');")}
 
    ${h.end_form()}
 
 </div>
 
</%def>
 

	
 
<%def name="user_name(user_id, username)">
 
    ${h.link_to(username,h.url('edit_user', id=user_id))}
 
</%def>
 

	
 
<%def name="repo_group_name(repo_group_name, children_groups)">
 
  <div style="white-space: nowrap">
 
  <a href="${h.url('repos_group_home',group_name=repo_group_name)}">
 
    <i class="icon-folder-close" title="${_('Repository group')}"></i> ${h.literal(' &raquo; '.join(children_groups))}</a>
 
  </div>
 
</%def>
 

	
 
<%def name="user_group_name(user_group_id, user_group_name)">
 
  <div style="white-space: nowrap">
 
  <a href="${h.url('edit_users_group', id=user_group_id)}">
 
    <i class="icon-group" title="${_('User group')}"></i> ${user_group_name}</a>
 
    <i class="icon-users" title="${_('User group')}"></i> ${user_group_name}</a>
 
  </div>
 
</%def>
 

	
 
<%def name="toggle_follow(repo_id)">
 
  <span id="follow_toggle_${repo_id}" class="following" title="${_('Stop following this repository')}"
 
        onclick="javascript:toggleFollowingRepo(this, ${repo_id},'${str(h.get_token())}')">
 
  </span>
 
</%def>
kallithea/templates/files/diff_2way.html
Show inline comments
 
@@ -23,58 +23,58 @@
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('repositories')}
 
</%def>
 

	
 
<%def name="main()">
 
${self.repo_context_bar('changelog')}
 
<div class="box">
 
    <!-- box / title -->
 
    <div class="title">
 
        ${self.breadcrumbs()}
 
    </div>
 

	
 
    <div class="diff-container" style="overflow-x: hidden">
 
        <div class="diffblock comm" style="margin:3px; padding:1px">
 
            <div class="code-header">
 
                <div class="changeset_header">
 
                    <div class="changeset_file">
 
                        ${h.link_to(h.safe_unicode(c.node1.path),h.url('files_home',repo_name=c.repo_name,
 
                        revision=c.cs2.raw_id,f_path=h.safe_unicode(c.node1.path)))}
 
                    </div>
 
                    <div class="diff-actions">
 
                      <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(c.node1.path),diff2=c.cs2.raw_id,diff1=c.cs1.raw_id,diff='diff',fulldiff=1)}" class="tooltip" title="${h.tooltip(_('Show full diff for this file'))}">
 
                          <img class="icon" src="${h.url('/images/icons/page_white_go.png')}"/>
 
                          <i class="icon-file-code"></i>
 
                      </a>
 
                      <a href="${h.url('files_diff_2way_home',repo_name=c.repo_name,f_path=h.safe_unicode(c.node1.path),diff2=c.cs2.raw_id,diff1=c.cs1.raw_id,diff='diff',fulldiff=1)}" class="tooltip" title="${h.tooltip(_('Show full side-by-side diff for this file'))}">
 
                          <img class="icon" src="${h.url('/images/icons/application_double.png')}"/>
 
                          <i class="icon-docs"></i>
 
                      </a>
 
                      <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(c.node1.path),diff2=c.cs2.raw_id,diff1=c.cs1.raw_id,diff='raw')}" class="tooltip" title="${h.tooltip(_('Raw diff'))}">
 
                          <img class="icon" src="${h.url('/images/icons/page_white.png')}"/>
 
                          <i class="icon-diff"></i>
 
                      </a>
 
                      <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(c.node1.path),diff2=c.cs2.raw_id,diff1=c.cs1.raw_id,diff='download')}" class="tooltip" title="${h.tooltip(_('Download diff'))}">
 
                          <img class="icon" src="${h.url('/images/icons/page_save.png')}"/>
 
                          <i class="icon-floppy"></i>
 
                      </a>
 
                      ${h.checkbox('ignorews', label=_('Ignore whitespace'))}
 
                      ${h.checkbox('edit_mode', label=_('Edit'))}
 
                    </div>
 
                </div>
 
            </div>
 
            <div id="compare"></div>
 
        </div>
 
    </div>
 

	
 
<script>
 
var orig1_url = '${h.url('files_raw_home',repo_name=c.repo_name,f_path=h.safe_unicode(c.node1.path),revision=c.cs1.raw_id)}';
 
var orig2_url = '${h.url('files_raw_home',repo_name=c.repo_name,f_path=h.safe_unicode(c.node2.path),revision=c.cs2.raw_id)}';
 

	
 
$(document).ready(function () {
 
    $('#compare').mergely({
 
        width: 'auto',
 
        height: '600',
 
        fgcolor: {a:'#ddffdd',c:'#cccccc',d:'#ffdddd'},
 
        bgcolor: '#fff',
 
        viewport: true,
 
        cmsettings: {mode: 'text/plain', readOnly: true, lineWrapping: false, lineNumbers: true},
 
        lhs: function(setValue) {
 
            if("${c.node1.is_binary}" == "True"){
kallithea/templates/files/files_browser.html
Show inline comments
 
<%def name="file_class(node)">
 
    %if node.is_file():
 
        <%return "browser-file" %>
 
    %elif node.is_submodule():
 
        <%return "submodule-dir"%>
 
    %else:
 
        <%return "browser-dir"%>
 
    %endif
 
</%def>
 
<%def name="file_url(node, c)">
 
    %if node.is_submodule():
 
        <%return node.url or '#'%>
 
    %else:
 
        <%return h.url('files_home', repo_name=c.repo_name, revision=c.changeset.raw_id, f_path=h.safe_unicode(node.path))%>
 
    %endif
 
</%def>
 
<%def name="file_name(node)">
 
    <%
 
        c = "icon-folder-open"
 
        if node.is_file():
 
            c = "icon-doc"
 
        elif node.is_submodule():
 
            c = "icon-file-submodule"
 
    %>
 
    <%return h.literal('<i class="%s"></i><span>%s</span>' % (c, node.name))%>
 
</%def>
 
<div id="body" class="browserblock">
 
    <div class="browser-header">
 
        <div class="browser-nav">
 
            ${h.form(h.url.current())}
 
            <div class="info_box">
 
              <div class="info_box_elem rev">${_('revision')}</div>
 
              <div class="info_box_elem"><a class="btn btn-mini ypjax-link" href="${c.url_prev}" title="${_('Previous revision')}"><i class="icon-chevron-left"></i></a></div>
 
              <div class="info_box_elem"><a class="btn btn-mini ypjax-link" href="${c.url_prev}" title="${_('Previous revision')}"><i class="icon-left-open"></i></a></div>
 
              <div class="info_box_elem">${h.text('at_rev',value=c.changeset.revision,size=5)}</div>
 
              <div class="info_box_elem"><a class="btn btn-mini ypjax-link" href="${c.url_next}" title="${_('Next revision')}"><i class="icon-chevron-right"></i></a></div>
 
              <div class="info_box_elem"><a class="btn btn-mini ypjax-link" href="${c.url_next}" title="${_('Next revision')}"><i class="icon-right-open"></i></a></div>
 
            </div>
 
            ${h.end_form()}
 
        </div>
 
        <div class="browser-branch">
 
           ${h.checkbox('stay_at_branch',c.changeset.branch,c.changeset.branch==c.branch)}
 
           <label>${_('Follow current branch')}</label>
 
        </div>
 
        <div id="search_activate_id" class="search_activate">
 
           <a class="btn btn-mini" id="filter_activate" href="#">${_('Search File List')}</a>
 
        </div>
 
        <div class="browser-search">
 
            <div>
 
                <div id="node_filter_box_loading" style="display:none">${_('Loading file list...')}</div>
 
                <div id="node_filter_box" style="display:none">
 
                ${h.files_breadcrumbs(c.repo_name,c.changeset.raw_id,c.file.path)}/<input class="init" type="text" value="type to search..." name="filter" size="25" id="node_filter" autocomplete="off">
 
                </div>
 
            </div>
 
        </div>
 
    </div>
 

	
 
    <div class="browser-body">
 
        <table class="code-browser">
 
            <thead>
 
                <tr>
 
                    <th>${_('Name')}</th>
 
                    <th>${_('Size')}</th>
 
                    <th>${_('Mimetype')}</th>
 
                    <th>${_('Last Revision')}</th>
 
                    <th>${_('Last Modified')}</th>
 
                    <th>${_('Last Committer')}</th>
 
                </tr>
 
            </thead>
 

	
 
            <tbody id="tbody">
 
                %if c.file.parent:
 
                <tr class="parity0">
 
                    <td>
 
                        ${h.link_to('..',h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.file.parent.path),class_="browser-dir ypjax-link")}
 
                        ${h.link_to(h.literal('<i class="icon-folder-open"></i><span>..</span>'),h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.file.parent.path),class_="browser-dir ypjax-link")}
 
                    </td>
 
                    <td></td>
 
                    <td></td>
 
                    <td></td>
 
                    <td></td>
 
                    <td></td>
 
                </tr>
 
                %endif
 

	
 
            %for cnt,node in enumerate(c.file):
 
                <tr class="parity${cnt%2}">
 
                     <td>
 
                        %if node.is_submodule():
 
                           ${h.link_to(node.name,node.url or '#',class_="submodule-dir ypjax-link")}
 
                        %else:
 
                          ${h.link_to(node.name, h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=h.safe_unicode(node.path)),class_=file_class(node)+" ypjax-link")}
 
                        %endif:
 
                         ${h.link_to(file_name(node),file_url(node,c),class_=file_class(node)+" ypjax-link")}
 
                     </td>
 
                     <td>
 
                     %if node.is_file():
 
                         ${h.format_byte_size(node.size,binary=True)}
 
                     %endif
 
                     </td>
 
                     <td>
 
                      %if node.is_file():
 
                          ${node.mimetype}
 
                      %endif
 
                     </td>
 
                     <td>
 
                         %if node.is_file():
 
                             <div class="tooltip" title="${h.tooltip(node.last_changeset.message)}">
 
                              <pre>${h.show_id(node.last_changeset)}</pre>
 
                             </div>
 
                         %endif
 
                     </td>
 
                     <td>
 
                         %if node.is_file():
 
                             <span class="tooltip" title="${h.tooltip(h.fmt_date(node.last_changeset.date))}">
 
                            ${h.age(node.last_changeset.date)}</span>
 
                         %endif
 
                     </td>
kallithea/templates/files/files_edit.html
Show inline comments
 
@@ -22,49 +22,49 @@
 

	
 
<%def name="breadcrumbs_links()">
 
    ${_('Edit file')} @ ${h.show_id(c.cs)}
 
</%def>
 

	
 
<%def name="main()">
 
${self.repo_context_bar('files')}
 
<div class="box">
 
    <!-- box / title -->
 
    <div class="title">
 
        ${self.breadcrumbs()}
 
        <ul class="links">
 
            <li>
 
              <span><a href="#">${_('Branch')}: ${c.cs.branch}</a></span>
 
            </li>
 
        </ul>
 
    </div>
 
    <div class="table" id="edit">
 
        <div id="files_data">
 
            <h3 class="files_location">${_('Location')}: ${h.files_breadcrumbs(c.repo_name,c.cs.revision,c.file.path)}</h3>
 
            ${h.form(h.url.current(),method='post',id='eform')}
 
            <div id="body" class="codeblock">
 
            <div class="code-header">
 
                <div class="stats">
 
                    <div class="left"><i class="icon-file"></i></div>
 
                    <div class="left"><i class="icon-doc-inv"></i></div>
 
                    <div class="left item">${h.link_to(h.show_id(c.file.changeset),h.url('changeset_home',repo_name=c.repo_name,revision=c.file.changeset.raw_id))}</div>
 
                    <div class="left item">${h.format_byte_size(c.file.size,binary=True)}</div>
 
                    <div class="left item last">${c.file.mimetype}</div>
 
                    <div class="buttons">
 
                      ${h.link_to(_('Show Annotation'),h.url('files_annotate_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="btn btn-mini")}
 
                      ${h.link_to(_('Show as Raw'),h.url('files_raw_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="btn btn-mini")}
 
                      ${h.link_to(_('Download as Raw'),h.url('files_rawfile_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="btn btn-mini")}
 
                      % if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
 
                       % if not c.file.is_binary:
 
                        ${h.link_to(_('Source'),h.url('files_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="btn btn-mini")}
 
                       % endif
 
                      % endif
 
                    </div>
 
                </div>
 
                <label class="commit" for="set_mode">${_('Editing file')}: ${c.file.unicode_path}</label>
 
                <select id="set_mode" name="set_mode"/>
 
            </div>
 
                <pre id="editor_pre"></pre>
 
                <textarea id="editor" name="content" style="display:none">${h.escape(c.file.content)|n}</textarea>
 
                <div style="padding: 10px;color:#666666">${_('Commit Message')}</div>
 
                <textarea id="commit" name="message" style="height: 60px;width: 99%;margin-left:4px" placeholder="${c.default_message}"></textarea>
 
            </div>
 
            <div style="text-align: left;padding-top: 5px">
 
            ${h.submit('commit',_('Commit Changes'),class_="btn btn-small btn-success")}
kallithea/templates/files/files_source.html
Show inline comments
 
<div id="node_history" style="padding: 0px 0px 10px 0px">
 
    <div>
 
        <div style="float:left">
 
        ${h.form(h.url('files_diff_home',repo_name=c.repo_name,f_path=c.f_path),method='get')}
 
        ${h.hidden('diff2',c.file_changeset.raw_id)}
 
        ${h.hidden('diff1')}
 
        ${h.submit('diff',_('Diff to Revision'),class_="btn btn-small")}
 
        ${h.submit('show_rev',_('Show at Revision'),class_="btn btn-small")}
 
        ${h.hidden('annotate', c.annotate)}
 
        ${h.link_to(_('Show Full History'),h.url('changelog_file_home',repo_name=c.repo_name, revision=c.file_changeset.raw_id, f_path=c.f_path),class_="btn btn-small")}
 
        ${h.link_to(_('Show Authors'),'#',class_="btn btn-small" ,id="show_authors")}
 

	
 
        ${h.end_form()}
 
        </div>
 
        <div id="file_authors" class="file_author" style="clear:both; display: none"></div>
 
    </div>
 
    <div style="clear:both"></div>
 
</div>
 

	
 

	
 
<div id="body" class="codeblock">
 
    <div class="code-header">
 
        <div class="stats">
 
            <div class="left img"><i class="icon-file"></i></div>
 
            <div class="left img"><i class="icon-doc-inv"></i></div>
 
            <div class="left item"><pre class="tooltip" title="${h.tooltip(h.fmt_date(c.file_changeset.date))}">${h.link_to(h.show_id(c.file_changeset),h.url('changeset_home',repo_name=c.repo_name,revision=c.file_changeset.raw_id))}</pre></div>
 
            <div class="left item"><pre>${h.format_byte_size(c.file.size,binary=True)}</pre></div>
 
            <div class="left item last"><pre>${c.file.mimetype}</pre></div>
 
            <div class="buttons">
 
              %if c.annotate:
 
                ${h.link_to(_('Show Source'),    h.url('files_home',         repo_name=c.repo_name,revision=c.file_changeset.raw_id,f_path=c.f_path),class_="btn btn-mini")}
 
              %else:
 
                ${h.link_to(_('Show Annotation'),h.url('files_annotate_home',repo_name=c.repo_name,revision=c.file_changeset.raw_id,f_path=c.f_path),class_="btn btn-mini")}
 
              %endif
 
              ${h.link_to(_('Show as Raw'),h.url('files_raw_home',repo_name=c.repo_name,revision=c.file_changeset.raw_id,f_path=c.f_path),class_="btn btn-mini")}
 
              ${h.link_to(_('Download as Raw'),h.url('files_rawfile_home',repo_name=c.repo_name,revision=c.file_changeset.raw_id,f_path=c.f_path),class_="btn btn-mini")}
 
              % if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
 
               %if c.on_branch_head and c.changeset.branch and not c.file.is_binary:
 
                ${h.link_to(_('Edit on Branch:%s') % c.changeset.branch, h.url('files_edit_home',repo_name=c.repo_name,revision=c.changeset.branch,f_path=c.f_path, anchor='edit'),class_="btn btn-mini")}
 
                ${h.link_to(_('Delete'), h.url('files_delete_home',repo_name=c.repo_name,revision=c.changeset.branch,f_path=c.f_path, anchor='edit'),class_="btn btn-mini btn-danger")}
 
               %elif c.on_branch_head and c.changeset.branch and c.file.is_binary:
 
                ${h.link_to(_('Edit'), '#', class_="btn btn-mini disabled tooltip", title=_('Editing binary files not allowed'))}
 
                ${h.link_to(_('Delete'), h.url('files_delete_home',repo_name=c.repo_name,revision=c.changeset.branch,f_path=c.f_path, anchor='edit'),class_="btn btn-mini btn-danger")}
 
               %else:
 
                ${h.link_to(_('Edit'), '#', class_="btn btn-mini disabled tooltip", title=_('Editing files allowed only when on branch head revision'))}
 
                ${h.link_to(_('Delete'), '#', class_="btn btn-mini btn-danger disabled tooltip", title=_('Deleting files allowed only when on branch head revision'))}
 
               % endif
 
              % endif
 
            </div>
kallithea/templates/files/files_ypjax.html
Show inline comments
 
%if c.file:
 
    <h3 class="files_location">
 
        ${_('Location')}: ${h.files_breadcrumbs(c.repo_name,c.changeset.raw_id,c.file.path)}
 
        %if c.annotate:
 
        - ${_('annotation')}
 
        %endif
 
        %if c.file.is_dir():
 
          % if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
 
             / <span title="${_('Add New File')}">
 
               <a href="${h.url('files_add_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path, anchor='edit')}">
 
                   <i class="icon-plus-sign" style="color:#5bb75b;"></i></a>
 
                   <i class="icon-plus-circled" style="color:#5bb75b; font-size: 16px"></i></a>
 
               </span>
 
          % endif
 
        %endif
 
    </h3>
 
        %if c.file.is_dir():
 
            <%include file='files_browser.html'/>
 
        %else:
 
            <%include file='files_source.html'/>
 
        %endif
 
%else:
 
    <h2>
 
        <a href="#" onClick="javascript:parent.history.back();" target="main">${_('Go Back')}</a>
 
        ${_('No files at given path')}: "${c.f_path or "/"}"
 
    </h2>
 
%endif
kallithea/templates/forks/forks_data.html
Show inline comments
 
## -*- coding: utf-8 -*-
 

	
 
% if c.forks_pager:
 
    % for f in c.forks_pager:
 
        <div>
 
            <div class="fork_user">
 
                <div class="gravatar">
 
                    <img alt="gravatar" src="${h.gravatar_url(f.user.email,24)}"/>
 
                </div>
 
                <span style="font-size: 20px">
 
                 <b>${f.user.username}</b> (${f.user.name} ${f.user.lastname}) /
 
                  ${h.link_to(f.repo_name,h.url('summary_home',repo_name=f.repo_name))}
 
                </span>
 
                <div style="padding:5px 3px 3px 42px;">${f.description}</div>
 
            </div>
 
            <div style="clear:both;padding-top: 10px"></div>
 
            <div class="follower_date">${_('Forked')} -
 
                <span class="tooltip" title="${h.tooltip(h.fmt_date(f.created_on))}"> ${h.age(f.created_on)}</span>
 
                <a title="${_('Compare fork with %s' % c.repo_name)}"
 
                   href="${h.url('compare_url',repo_name=c.repo_name, org_ref_type=c.db_repo.landing_rev[0],org_ref_name=c.db_repo.landing_rev[1],other_repo=f.repo_name,other_ref_type=c.db_repo.landing_rev[0],other_ref_name=c.db_repo.landing_rev[1], merge=1)}"
 
                   class="btn btn-small"><i class="icon-loop"></i> ${_('Compare Fork')}</a>
 
                   class="btn btn-small"><i class="icon-git-compare"></i> ${_('Compare Fork')}</a>
 
            </div>
 
            <div style="border-bottom: 1px solid #DDD;margin:10px 0px 10px 0px"></div>
 
        </div>
 
    % endfor
 
  <div class="pagination-wh pagination-left">
 
  <script type="text/javascript">
 
  $(document).ready(function(){
 
      var $forks = $('#forks');
 
      $forks.on('click','.pager_link',function(e){
 
          asynchtml(e.target.href, $forks, function(){
 
              show_more_event();
 
              tooltip_activate();
 
              show_changeset_tooltip();
 
          });
 
          e.preventDefault();
 
      });
 
  });
 
  </script>
 
  ${c.forks_pager.pager('$link_previous ~2~ $link_next')}
 
  </div>
 
% else:
 
    ${_('There are no forks yet')}
 
% endif
kallithea/templates/journal/journal.html
Show inline comments
 
@@ -11,71 +11,71 @@
 
    <form id="filter_form">
 
    <input class="q_filter_box ${'' if c.search_term else 'initial'}" id="j_filter" size="15" type="text" name="filter" value="${c.search_term or _('quick filter...')}"/>
 
    <span class="tooltip" title="${h.tooltip(h.journal_filter_help())}">?</span>
 
    <input type='submit' value="${_('Filter')}" class="btn btn-small" style="padding:0px 2px 0px 2px;margin:0px"/>
 
    ${_('Journal')} - ${ungettext('%s Entry', '%s Entries', c.journal_pager.item_count) % (c.journal_pager.item_count)}
 
    </form>
 
    ${h.end_form()}
 
    </h5>
 
</%def>
 
<%def name="page_nav()">
 
    ${self.menu('journal')}
 
</%def>
 
<%def name="head_extra()">
 
<link href="${h.url('journal_atom', api_key=c.authuser.api_key)}" rel="alternate" title="${_('ATOM journal feed')}" type="application/atom+xml" />
 
<link href="${h.url('journal_rss', api_key=c.authuser.api_key)}" rel="alternate" title="${_('RSS journal feed')}" type="application/rss+xml" />
 
</%def>
 
<%def name="main()">
 

	
 
    <div class="box box-left">
 
        <!-- box / title -->
 
        <div class="title">
 
         ${self.breadcrumbs()}
 
         <ul class="links icon-only-links">
 
           <li>
 
             <span><a id="refresh" href="${h.url('journal')}"><i class="icon-refresh"></i></a></span>
 
             <span><a id="refresh" href="${h.url('journal')}"><i class="icon-arrows-cw"></i></a></span>
 
           </li>
 
           <li>
 
             <span><a href="${h.url('journal_atom', api_key=c.authuser.api_key)}"><i class="icon-rss-sign"></i></a></span>
 
             <span><a href="${h.url('journal_atom', api_key=c.authuser.api_key)}"><i class="icon-rss-squared"></i></a></span>
 
           </li>
 
         </ul>
 
        </div>
 
        <div id="journal">${c.journal_data}</div>
 
    </div>
 
    <div class="box box-right">
 
        <!-- box / title -->
 

	
 
        <div class="title">
 
            <h5>
 
            <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value="" style="display: none"/>
 
            <input class="q_filter_box" id="q_filter_watched" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value="" style="display: none"/>
 
            </h5>
 
            <ul class="links nav nav-tabs">
 
                <li class="active" id="show_watched_li">
 
                    <a id="show_watched" href="#watched"><i class="icon-eye-open"></i> ${_('Watched')}</a>
 
                    <a id="show_watched" href="#watched"><i class="icon-eye"></i> ${_('Watched')}</a>
 
                </li>
 
                <li id="show_my_li">
 
                    <a id="show_my" href="#my"><i class="icon-archive"></i> ${_('My Repos')}</a>
 
                    <a id="show_my" href="#my"><i class="icon-database"></i> ${_('My Repos')}</a>
 
               </li>
 
            </ul>
 
        </div>
 

	
 
        <!-- end box / title -->
 
        <div id="my_container" style="display:none">
 
            <div class="table-grid table yui-skin-sam" id="repos_list_wrap"></div>
 
            <div id="user-paginator" style="padding: 0px 0px 0px 20px"></div>
 
        </div>
 

	
 
        <div id="watched_container">
 
            <div class="table-grid table yui-skin-sam" id="watched_repos_list_wrap"></div>
 
            <div id="watched-user-paginator" style="padding: 0px 0px 0px 20px"></div>
 
        </div>
 
    </div>
 

	
 
    <script type="text/javascript">
 

	
 
    $('#j_filter').click(function(){
 
        var $jfilter = $('#j_filter');
 
        if($jfilter.hasClass('initial')){
 
            $jfilter.val('');
 
        }
 
    });
kallithea/templates/journal/public_journal.html
Show inline comments
 
@@ -4,34 +4,34 @@
 
    ${_('Public Journal')}
 
    %if c.site_name:
 
        &middot; ${c.site_name}
 
    %endif
 
</%def>
 
<%def name="breadcrumbs()">
 
    ${c.site_name}
 
</%def>
 
<%def name="page_nav()">
 
    ${self.menu('journal')}
 
</%def>
 
<%def name="head_extra()">
 
<link href="${h.url('public_journal_atom')}" rel="alternate" title="${_('ATOM public journal feed')}" type="application/atom+xml" />
 
<link href="${h.url('public_journal_rss')}" rel="alternate" title="${_('RSS public journal feed')}" type="application/rss+xml" />
 
</%def>
 
<%def name="main()">
 

	
 
<div class="box">
 
  <!-- box / title -->
 
  <div class="title">
 
    <h5>${_('Public Journal')}</h5>
 
      <ul class="links">
 
     <li>
 
       <span>
 
         <a href="${h.url('public_journal_atom')}"> <i class="icon-rss-sign" style="color: #fa9b39"></i></a>
 
         <a href="${h.url('public_journal_atom')}"> <i class="icon-rss-squared" style="color: #fa9b39"></i></a>
 
       </span>
 
     </li>
 
     </ul>
 
  </div>
 

	
 
  <div id="journal">${c.journal_data}</div>
 
</div>
 

	
 
</%def>
kallithea/templates/login.html
Show inline comments
 
@@ -16,48 +16,49 @@
 
            <div class="header">
 
                <img src="${h.url('/images/kallithea-logo.svg')}" onerror="this.src='${h.url('/images/kallithea-logo.png')}'" alt="Kallithea"/>
 
            </div>
 
            %if c.site_name:
 
             <div class="branding">${c.site_name}</div>
 
            %endif
 
          </a>
 
        </div>
 
    </div>
 
</div>
 

	
 
<div id="login">
 
    <%include file="/base/flash_msg.html"/>
 
    <!-- login -->
 
    <div class="title withlogo">
 
        %if c.site_name:
 
            <h5>${_('Log In to %s') % c.site_name}</h5>
 
        %else:
 
            <h5>${_('Log In')}</h5>
 
        %endif
 
    </div>
 
    <div class="inner">
 
        ${h.form(h.url.current(came_from=c.came_from))}
 
        <div class="form">
 
            <i class="icon-lock"></i>
 
            <!-- fields -->
 

	
 
            <div class="fields">
 
                <div class="field">
 
                    <div class="label">
 
                        <label for="username">${_('Username')}:</label>
 
                    </div>
 
                    <div class="input">
 
                        ${h.text('username',class_='focus large')}
 
                    </div>
 

	
 
                </div>
 
                <div class="field">
 
                    <div class="label">
 
                        <label for="password">${_('Password')}:</label>
 
                    </div>
 
                    <div class="input">
 
                        ${h.password('password',class_='focus large')}
 
                    </div>
 

	
 
                </div>
 
                <div class="field">
 
                    <div class="checkbox">
 
                        <input type="checkbox" id="remember" name="remember" />
kallithea/templates/pullrequests/pullrequest.html
Show inline comments
 
@@ -85,49 +85,49 @@ ${self.repo_context_bar('showpullrequest
 

	
 
            <div class="field">
 
                <div class="buttons">
 
                    ${h.submit('save',_('Create Pull Request'),class_="btn")}
 
                    ${h.reset('reset',_('Reset'),class_="btn")}
 
               </div>
 
            </div>
 

	
 
        </div>
 

	
 
        ## Reviewers
 
        <div style="float:left; border-left:1px dashed #eee">
 
            <div class="pr-details-title">${_('Pull Request Reviewers')}</div>
 
            <div id="reviewers" style="padding:0px 0px 0px 15px">
 
              ## members goes here !
 
              <div>
 
                <ul id="review_members" class="group_members">
 
                %for member in [c.a_repo.user]:
 
                  <li id="reviewer_${member.user_id}">
 
                    <div class="reviewers_member">
 
                      <div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(member.email, 14)}"/> </div>
 
                      <div style="float:left">${member.firstname} ${member.lastname} (${_('owner')})</div>
 
                      <input type="hidden" value="${member.user_id}" name="review_members" />
 
                      <span class="action_button" style="padding: 3px" onclick="removeReviewMember(${member.user_id})" title="${_('Remove reviewer')}">
 
                          <i class="icon-remove-sign" style="color: #FF4444;"></i>
 
                          <i class="icon-remove-circled" style="color: #FF4444;"></i>
 
                      </span>
 
                    </div>
 
                  </li>
 
                %endfor
 
                </ul>
 
              </div>
 

	
 
              <div class='ac'>
 
                <div class="reviewer_ac">
 
                   ${h.text('user', class_='yui-ac-input',placeholder=_('Type name of reviewer to add'))}
 
                   <div id="reviewers_container"></div>
 
                </div>
 
              </div>
 
            </div>
 
        </div>
 

	
 
        <div style="clear:both;padding: 0 0 30px 0;"></div>
 

	
 
        <h4>${_('Changesets')}</h4>
 
        <div style="float:left;padding:0px 30px 30px 30px">
 
           ## overview pulled by ajax
 
           <div style="float:left" id="pull_request_overview"></div>
 
        </div>
 
        <div style="clear:both;"></div>
 
@@ -135,106 +135,104 @@ ${self.repo_context_bar('showpullrequest
 
    </div>
 

	
 
    ${h.end_form()}
 

	
 
</div>
 

	
 
<script type="text/javascript" src="${h.url('/js/graph.js')}"></script>
 
<script type="text/javascript">
 
  var _USERS_AC_DATA = ${c.users_array|n};
 
  var _GROUPS_AC_DATA = ${c.user_groups_array|n};
 
  PullRequestAutoComplete('user', 'reviewers_container', _USERS_AC_DATA, _GROUPS_AC_DATA);
 

	
 
  pyroutes.register('pullrequest_repo_info', "${url('pullrequest_repo_info',repo_name='%(repo_name)s')}", ['repo_name']);
 

	
 
  var pendingajax = undefined;
 
  var otherrepoChanged = function(){
 
      var $other_ref = $('#other_ref');
 
      $other_ref.prop('disabled', true);
 
      var repo_name = $('#other_repo').val();
 
      if (pendingajax) {
 
          pendingajax.abort();
 
          pendingajax = undefined;
 
      }
 
      pendingajax = ajaxGET(pyroutes.url('pullrequest_repo_info', {"repo_name": repo_name}),
 
          function(o){
 
          function(data){
 
              pendingajax = undefined;
 
              var data = JSON.parse(o.responseText);
 
              $('#other_repo_desc').html(data.description);
 

	
 
              // replace options of other_ref with the ones for the current other_repo
 
              $other_ref.empty();
 
              for(var i = 0; i < data.refs.length; i++)
 
              {
 
                var $optgroup = $('<optgroup/>').attr('label', data.refs[i][1]);
 
                var options = data.refs[i][0];
 
                var length = options.length;
 
                for(var j = 0; j < length; j++)
 
                {
 
                  $optgroup.append($('<option/>').text(options[j][1]).val(options[j][0]));
 
                }
 
                $other_ref.append($optgroup);
 
              }
 
              $other_ref.val(data.selected_ref);
 

	
 
              // reset && add the reviewer based on selected repo
 
              YUD.get('review_members').innerHTML = '';
 
              $('#review_members').html('');
 
              addReviewMember(data.user.user_id, data.user.firstname,
 
                              data.user.lastname, data.user.username,
 
                              data.user.gravatar_link);
 

	
 
              // re-populate the select2 thingie
 
              $("#other_ref").select2({
 
                  dropdownAutoWidth: true
 
              });
 

	
 
              $other_ref.prop('disabled', false);
 
              loadPreview();
 
          });
 
  };
 

	
 
  var loadPreview = function(){
 
      //url template
 
      var url = "${h.url('compare_url',
 
                         repo_name='__other_repo__',
 
                         org_ref_type='rev',
 
                         org_ref_name='__other_ref_name__',
 
                         other_repo='__org_repo__',
 
                         other_ref_type='rev',
 
                         other_ref_name='__org_ref_name__',
 
                         as_form=True,
 
                         merge=True,
 
                         )}";
 
      var org_repo = YUQ('#pull_request_form #org_repo')[0].value;
 
      var org_ref = YUQ('#pull_request_form #org_ref')[0].value.split(':');
 
      var org_repo = $('#pull_request_form #org_repo').val();
 
      var org_ref = $('#pull_request_form #org_ref').val().split(':');
 
      ## TODO: make nice link like link_to_ref() do
 
      YUD.get('org_rev_span').innerHTML = org_ref[2].substr(0,12);
 
      $('#org_rev_span').html(org_ref[2].substr(0,12));
 

	
 
      var other_repo = YUQ('#pull_request_form #other_repo')[0].value;
 
      var other_ref = YUQ('#pull_request_form #other_ref')[0].value.split(':');
 
      YUD.get('other_rev_span').innerHTML = other_ref[2].substr(0,12);
 
      var other_repo = $('#pull_request_form #other_repo').val();
 
      var other_ref = $('#pull_request_form #other_ref').val().split(':');
 
      $('#other_rev_span').html(other_ref[2].substr(0,12));
 

	
 
      var select_refs = YUQ('#pull_request_form select.refs')
 
      var rev_data = {
 
          '__org_repo__': org_repo,
 
          '__org_ref_name__': org_ref[2],
 
          '__other_repo__': other_repo,
 
          '__other_ref_name__': other_ref[2]
 
      }; // gather the org/other ref and repo here
 

	
 
      for (k in rev_data){
 
          url = url.replace(k,rev_data[k]);
 
      }
 

	
 
      if (pendingajax) {
 
          pendingajax.abort();
 
          pendingajax = undefined;
 
      }
 
      pendingajax = asynchtml(url, $('#pull_request_overview'), function(o){
 
          pendingajax = undefined;
 
          var jsdata = eval('('+YUD.get('jsdata').innerHTML+')'); // TODO: just get json
 
          var r = new BranchRenderer('graph_canvas', 'graph_content_pr');
 
          r.render(jsdata,100);
 
      });
 
  }
 

	
 
  $(document).ready(function(){
kallithea/templates/pullrequests/pullrequest_data.html
Show inline comments
 
## -*- coding: utf-8 -*-
 

	
 
% for pr in c.pullrequests_pager:
 
  <div class="pr ${'pr-closed' if pr.is_closed() else ''}">
 
    <div class="pr-title">
 
    %if pr.last_review_status:
 
      <img src="${h.url('/images/icons/flag_status_%s.png' % pr.last_review_status)}" title="${_("Someone voted: %s") % pr.last_review_status}"/>
 
      <i class="icon-circle changeset-status-${pr.last_review_status}" title="${_("Someone voted: %s") % pr.last_review_status}"></i>
 
    %else:
 
      <img src="${h.url('/images/icons/flag_status_not_reviewed.png')}" title="${_("Nobody voted")}"/>
 
      <i class="icon-circle changeset-status-not_reviewed" title="${_("Nobody voted")}"></i>
 
    %endif
 
      <a href="${pr.url()}">
 
      ${pr.title or _("(no title)")}
 
       %if pr.is_closed():
 
         <span class="pr-closed-tag">${_('Closed')}</span>
 
       %endif
 
      </a>
 
            ${_('opened on %s from') % (h.fmt_date(pr.created_on))}
 
            <% org_ref_name=pr.org_ref.rsplit(':', 2)[-2] %>
 
            <a href="${h.url('summary_home', repo_name=pr.org_repo.repo_name, anchor=org_ref_name)}">
 
              ${pr.org_repo.repo_name}#${org_ref_name}
 
            </a>
 
    </div>
 
  </div>
 
% endfor
 

	
 

	
 
<div class="notification-paginator">
 
  <div class="pagination-wh pagination-left">
 
  ${c.pullrequests_pager.pager('$link_previous ~2~ $link_next', **request.GET.mixed())}
 
  </div>
 
</div>
kallithea/templates/pullrequests/pullrequest_show.html
Show inline comments
 
@@ -63,49 +63,49 @@ ${self.repo_context_bar('showpullrequest
 
              <div class="label-summary label-textarea">
 
                  <label for="pullrequest_desc">${_('Description')}:</label>
 
              </div>
 
              <div class="textarea text-area editor">
 
                  ${h.textarea('pullrequest_desc',size=30,content=c.pull_request.description,placeholder=_('Write a short description on this pull request'))}
 
              </div>
 
              <div class="buttons">
 
                  ${h.submit('save',_('Save'),class_="btn btn-mini")}
 
                  ${h.reset('reset',_('Cancel'),class_="btn btn-mini",onclick="YUD.setStyle('pr-edit-form','display','none');YUD.setStyle(YUD.getElementsByClassName('pr-not-edit'),'display','')")}
 
             </div>
 
          </div>
 

	
 
          ${h.end_form()}
 
        </div>
 
        %endif
 

	
 
        <div class="field">
 
          <div class="label-summary">
 
              <label>${_('Reviewer voting result')}:</label>
 
          </div>
 
          <div class="input">
 
            <div class="changeset-status-container" style="float:none;clear:both">
 
            %if c.current_voting_result:
 
              <div class="changeset-status-ico" style="padding:0px 4px 0px 0px">
 
                  <img src="${h.url('/images/icons/flag_status_%s.png' % c.current_voting_result)}" title="${_('Pull request status calculated from votes')}"/></div>
 
                  <i class="icon-circle changeset-status-${c.current_voting_result}" title="${_('Pull request status calculated from votes')}"></i></div>
 
              <div class="changeset-status-lbl tooltip" title="${_('Pull request status calculated from votes')}">
 
                %if c.pull_request.is_closed():
 
                    ${_('Closed')},
 
                %endif
 
                ${h.changeset_status_lbl(c.current_voting_result)}
 
              </div>
 

	
 
            %endif
 
            </div>
 
          </div>
 
        </div>
 
        <div class="field">
 
          <div class="label-summary">
 
              <label>${_('Still not reviewed by')}:</label>
 
          </div>
 
          <div class="input">
 
            % if len(c.pull_request_pending_reviewers) > 0:
 
                <div class="tooltip" title="${h.tooltip(', '.join([x.username for x in c.pull_request_pending_reviewers]))}">${ungettext('%d reviewer', '%d reviewers',len(c.pull_request_pending_reviewers)) % len(c.pull_request_pending_reviewers)}</div>
 
            % elif len(c.pull_request_reviewers) > 0:
 
                <div>${_('Pull request was reviewed by all reviewers')}</div>
 
            %else:
 
                <div>${_('There are no reviewers')}</div>
 
            %endif
 
          </div>
 
@@ -194,184 +194,174 @@ ${self.repo_context_bar('showpullrequest
 
              %endif
 
              <div class="msg-div">${c.update_msg_other}</div>
 
            </div>
 
            %if c.available and not c.pull_request.is_closed():
 
              <div class="buttons">
 
                ${h.submit('copy_update',_('Create Pull Request Update'),class_="btn btn-small")}
 
              </div>
 
            %endif
 
          </div>
 
        ${h.end_form()}
 

	
 
      </div>
 
    </div>
 
    ## REVIEWERS
 
    <div style="float:left; border-left:1px dashed #eee">
 
       <div class="pr-details-title">${_('Pull Request Reviewers')}</div>
 
        <div id="reviewers" style="padding:0px 0px 5px 10px">
 
          ## members goes here !
 
          <div>
 
            <ul id="review_members" class="group_members">
 
            %for member,status in c.pull_request_reviewers:
 
              <li id="reviewer_${member.user_id}">
 
                <div class="reviewers_member">
 
                    <div class="reviewer_status tooltip" title="${h.tooltip(h.changeset_status_lbl(status.status if status else 'not_reviewed'))}">
 
                      <img src="${h.url(str('/images/icons/flag_status_%s.png' % (status.status if status else 'not_reviewed')))}"/>
 
                      <i class="icon-circle changeset-status-${status.status if status else 'not_reviewed'}"></i>
 
                    </div>
 
                  <div class="reviewer_gravatar gravatar"><img alt="gravatar" src="${h.gravatar_url(member.email,14)}"/> </div>
 
                  <div style="float:left;">${member.full_name} (${_('owner') if c.pull_request.user_id == member.user_id else _('reviewer')})</div>
 
                  <input type="hidden" value="${member.user_id}" name="review_members" />
 
                  %if not c.pull_request.is_closed() and (h.HasPermissionAny('hg.admin')() or h.HasRepoPermissionAny('repository.admin')(c.repo_name) or c.pull_request.user_id == c.authuser.user_id):
 
                  <div class="reviewer_member_remove action_button" onclick="removeReviewMember(${member.user_id})" title="${_('Remove reviewer')}">
 
                      <i class="icon-remove-sign" style="color: #FF4444;"></i>
 
                      <i class="icon-minus-circled" style="color: #FF4444;"></i>
 
                  </div>
 
                  %endif
 
                </div>
 
              </li>
 
            %endfor
 
            </ul>
 
          </div>
 
          %if not c.pull_request.is_closed():
 
          <div class='ac'>
 
            %if h.HasPermissionAny('hg.admin')() or h.HasRepoPermissionAny('repository.admin')(c.repo_name) or c.pull_request.author.user_id == c.authuser.user_id:
 
            <div class="reviewer_ac">
 
               ${h.text('user', class_='yui-ac-input',placeholder=_('Type name of reviewer to add'))}
 
               <div id="reviewers_container"></div>
 
            </div>
 
            <div style="padding:0px 10px">
 
             <span id="update_pull_request" class="btn btn-small">${_('Save Changes')}</span>
 
            </div>
 
            %endif
 
          </div>
 
          %endif
 
        </div>
 
       </div>
 

	
 
    <div style="overflow: auto; clear: both">
 
      ##DIFF
 
      <div class="table" style="float:left;clear:none">
 
          <div class="diffblock">
 
              <div style="padding:5px">
 
                ${_('Compare View')}
 
                ${_('Summary of Pull Request Content')}
 
              </div>
 
          </div>
 
          <div id="changeset_compare_view_content">
 
              <div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px">
 
                ${ungettext("%d comment", "%d comments", len(c.comments)) % len(c.comments)} ${ungettext("(%d inline)", "(%d inline)", c.inline_cnt) % c.inline_cnt} <span class="firstlink"></span>
 
              </div>
 
              ##CS
 
              <div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px">${ungettext('Showing %s commit','Showing %s commits', len(c.cs_ranges)) % len(c.cs_ranges)}</div>
 
              <div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px">
 
                ${ungettext('Showing %s commit','Showing %s commits', len(c.cs_ranges)) % len(c.cs_ranges)}
 
              </div>
 
              <%include file="/compare/compare_cs.html" />
 

	
 
              <div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px">
 
              ${_('Common ancestor')}:
 
              ${h.link_to(h.short_id(c.a_rev),h.url('changeset_home',repo_name=c.a_repo.repo_name,revision=c.a_rev))}
 
              </div>
 

	
 
              ## FILES
 
              <div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px">
 

	
 
              % if c.limited_diff:
 
                  ${ungettext('%s file changed', '%s files changed', len(c.files)) % len(c.files)}
 
              % else:
 
                  ${ungettext('%s file changed with %s insertions and %s deletions','%s files changed with %s insertions and %s deletions', len(c.files)) % (len(c.files),c.lines_added,c.lines_deleted)}:
 
              %endif
 

	
 
              </div>
 
              <div class="cs_files">
 
                %if not c.files:
 
                   <span class="empty_data">${_('No files')}</span>
 
                %endif
 
                %for fid, change, f, stat in c.files:
 
                    <div class="cs_${change}">
 
                      <div class="node">${h.link_to(h.safe_unicode(f),'#' + fid)}</div>
 
                      <div class="node">
 
                          <i class="icon-diff-${change}"></i>
 
                          ${h.link_to(h.safe_unicode(f),'#' + fid)}
 
                      </div>
 
                      <div class="changes">${h.fancy_file_stats(stat)}</div>
 
                    </div>
 
                %endfor
 
              </div>
 
              <div class="comments-number pr-comments-number">${ungettext("%d comment", "%d comments", len(c.comments)) % len(c.comments)} ${ungettext("(%d inline)", "(%d inline)", c.inline_cnt) % c.inline_cnt} <span class="firstlink"></span> </div>
 
              % if c.limited_diff:
 
                <h5>${_('Changeset was too big and was cut off...')} <a href="${h.url.current(fulldiff=1, **request.GET.mixed())}">${_('Show full diff anyway')}</a></h5>
 
              % endif
 
          </div>
 
      </div>
 
    </div>
 
    <script>
 
    var _USERS_AC_DATA = ${c.users_array|n};
 
    var _GROUPS_AC_DATA = ${c.user_groups_array|n};
 
    // TODO: switch this to pyroutes
 
    AJAX_COMMENT_URL = "${url('pullrequest_comment',repo_name=c.repo_name,pull_request_id=c.pull_request.pull_request_id)}";
 
    AJAX_COMMENT_DELETE_URL = "${url('pullrequest_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}";
 

	
 
    pyroutes.register('pullrequest_comment', "${url('pullrequest_comment',repo_name='%(repo_name)s',pull_request_id='%(pull_request_id)s')}", ['repo_name', 'pull_request_id']);
 
    pyroutes.register('pullrequest_comment_delete', "${url('pullrequest_comment_delete',repo_name='%(repo_name)s',comment_id='%(comment_id)s')}", ['repo_name', 'comment_id']);
 
    pyroutes.register('pullrequest_update', "${url('pullrequest_update',repo_name='%(repo_name)s',pull_request_id='%(pull_request_id)s')}", ['repo_name', 'pull_request_id']);
 

	
 
    </script>
 

	
 
    ## diff block
 
    <%namespace name="diff_block" file="/changeset/diff_block.html"/>
 
    ${diff_block.diff_block_js()}
 
    %for fid, change, f, stat in c.files:
 
      ${diff_block.diff_block_simple([c.changes[fid]])}
 
    %endfor
 
    % if c.limited_diff:
 
      <h4>${_('Changeset was too big and was cut off...')} <a href="${h.url.current(fulldiff=1, **request.GET.mixed())}">${_('Show full diff anyway')}</a></h4>
 
    % endif
 

	
 

	
 
    ## template for inline comment form
 
    <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
 
    ${comment.comment_inline_form()}
 

	
 
    ## render comments and inlines
 
    ${comment.generate_comments()}
 

	
 
    ## main comment form and it status
 
    ${comment.comments(h.url('pullrequest_comment', repo_name=c.repo_name,
 
                              pull_request_id=c.pull_request.pull_request_id),
 
                       c.current_voting_result,
 
                       is_pr=True, change_status=c.allowed_to_change_status)}
 

	
 
    <script type="text/javascript">
 
      $(document).ready(function(){
 
          PullRequestAutoComplete('user', 'reviewers_container', _USERS_AC_DATA, _GROUPS_AC_DATA);
 

	
 
          YUE.on(YUQ('.show-inline-comments'),'change',function(e){
 
              var show = 'none';
 
              var target = e.currentTarget;
 
              if(target.checked){
 
                  var show = ''
 
              }
 
              var boxid = YUD.getAttribute(target,'id_for');
 
              var comments = YUQ('#{0} .inline-comments'.format(boxid));
 
              for(c in comments){
 
                 YUD.setStyle(comments[c],'display',show);
 
              }
 
              var btns = YUQ('#{0} .inline-comments-button'.format(boxid));
 
              for(c in btns){
 
                  YUD.setStyle(btns[c],'display',show);
 
               }
 
          })
 

	
 
          YUE.on(YUQ('.add-bubble'),'click',function(e){
 
          $('.add-bubble').click(function(e){
 
              var tr = e.currentTarget;
 
              injectInlineForm(tr.parentNode.parentNode);
 
          });
 

	
 
          // inject comments into they proper positions
 
          var file_comments = YUQ('.inline-comment-placeholder');
 
          var file_comments = $('.inline-comment-placeholder').toArray();
 
          renderInlineComments(file_comments);
 

	
 
          linkInlineComments(document.getElementsByClassName('firstlink'), document.getElementsByClassName("inline-comment"));
 

	
 
          YUE.on(YUD.get('update_pull_request'),'click',function(e){
 
          $('#update_pull_request').click(function(e){
 
              updateReviewers(undefined, "${c.repo_name}", "${c.pull_request.pull_request_id}");
 
          })
 
          });
 

	
 
          // hack: re-navigate to target after JS is done ... if a target is set and setting href thus won't reload
 
          if (window.location.hash != "") {
 
              window.location.href = window.location.href;
 
          }
 
      })
 
    </script>
 

	
 
</div>
 

	
 
</%def>
kallithea/templates/pullrequests/pullrequest_show_all.html
Show inline comments
 
@@ -14,47 +14,47 @@
 
    ${_("Pull Requests to '%s'") % c.repo_name}
 
%endif
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('repositories')}
 
</%def>
 

	
 
<%def name="main()">
 
${self.repo_context_bar('showpullrequest')}
 

	
 
<div class="box">
 
    <!-- box / title -->
 
    <div class="title">
 
        ${self.breadcrumbs()}
 
        <ul class="links">
 
          <li>
 
             %if c.authuser.username != 'default':
 
              <span>
 
                  <a id="open_new_pr" class="btn btn-small btn-success" href="${h.url('pullrequest_home',repo_name=c.repo_name)}"><i class="icon-plus"></i> ${_('Open New Pull Request')}</a>
 
              </span>
 
             %endif
 
              <span>
 
                %if c.from_:
 
                    <a class="btn btn-small" href="${h.url('pullrequest_show_all',repo_name=c.repo_name,closed=c.closed)}"><i class="icon-loop-2"></i> ${_('Show Pull Requests to %s') % c.repo_name}</a>
 
                    <a class="btn btn-small" href="${h.url('pullrequest_show_all',repo_name=c.repo_name,closed=c.closed)}"><i class="icon-git-compare"></i> ${_('Show Pull Requests to %s') % c.repo_name}</a>
 
                %else:
 
                    <a class="btn btn-small" href="${h.url('pullrequest_show_all',repo_name=c.repo_name,closed=c.closed,from_=1)}"><i class="icon-loop-2"></i> ${_("Show Pull Requests from '%s'") % c.repo_name}</a>
 
                    <a class="btn btn-small" href="${h.url('pullrequest_show_all',repo_name=c.repo_name,closed=c.closed,from_=1)}"><i class="icon-git-compare"></i> ${_("Show Pull Requests from '%s'") % c.repo_name}</a>
 
                %endif
 
              </span>
 
          </li>
 
        </ul>
 
    </div>
 

	
 
    <div style="margin: 0 20px">
 
        <div>
 
        %if c.closed:
 
            ${h.link_to(_('Hide closed pull requests (only show open pull requests)'), h.url('pullrequest_show_all',repo_name=c.repo_name,from_=c.from_))}
 
        %else:
 
            ${h.link_to(_('Show closed pull requests (in addition to open pull requests)'), h.url('pullrequest_show_all',repo_name=c.repo_name,from_=c.from_,closed=1))}
 
        %endif
 
        </div>
 
    </div>
 

	
 
    ${c.pullrequest_data}
 

	
 
</div>
 
</%def>
kallithea/templates/pullrequests/pullrequest_show_my_data.html
Show inline comments
 
${h.checkbox('show_closed',checked="checked" if c.show_closed else "", label=_('Show closed pull requests (in addition to open pull requests)'))}
 
<div class="pullrequests_section_head">${_('Pull Requests Created by Me')}</div>
 
<ul>
 
  %if c.my_pull_requests:
 
    %for pull_request in c.my_pull_requests:
 
      <li class="${'closed' if pull_request.is_closed() else ''}">
 
        <div style="height: 12px">
 
            %if pull_request.last_review_status:
 
              <img src="${h.url('/images/icons/flag_status_%s.png' % pull_request.last_review_status)}" title="${_("Someone voted: %s") % pull_request.last_review_status}"/>
 
              <i class="icon-circle changeset-status-${pull_request.last_review_status}" title="${_("Someone voted: %s") % pull_request.last_review_status}"></i>
 
            %else:
 
              <img src="${h.url('/images/icons/flag_status_not_reviewed.png')}" title="${_("Nobody voted")}"/>
 
              <i class="icon-circle changeset-status-not_reviewed" title="${_("Nobody voted")}"></i>
 
            %endif
 
            <a href="${pull_request.url()}">
 
              ${pull_request.title or _("(no title)")}
 
            </a>
 
            ${_('created on %s from') % (h.fmt_date(pull_request.created_on))}
 
            <% org_ref_name=pull_request.org_ref.rsplit(':', 2)[-2] %>
 
            <a href="${h.url('summary_home', repo_name=pull_request.org_repo.repo_name, anchor=org_ref_name)}">
 
              ${pull_request.org_repo.repo_name}#${org_ref_name}
 
            </a>
 
            %if pull_request.is_closed():
 
              (${_('Closed')})
 
            %endif
 
            ${h.form(url('pullrequest_delete', repo_name=pull_request.other_repo.repo_name, pull_request_id=pull_request.pull_request_id),method='delete', style="display:inline-block")}
 
              ${h.submit('remove_%s' % pull_request.pull_request_id, '', title=_('Delete Pull Request'),class_="delete_icon action_button",onclick="return confirm('"+_('Confirm to delete this pull request')+"');")}
 
            <button class="action_button"
 
                    id="remove_${pull_request.pull_request_id}"
 
                    name="remove_${pull_request.pull_request_id}"
 
                    title="${_('Delete Pull Request')}"
 
                    onclick="return confirm('${_('Confirm to delete this pull request')}');">
 
              <i class="icon-minus-circled"></i>
 
            </button>
 
            ${h.end_form()}
 
        </div>
 
      </li>
 
    %endfor
 
  %else:
 
    <li><span class="empty_data">${_('Nothing here yet')}</span></li>
 
  %endif
 
</ul>
 

	
 
<div class="pullrequests_section_head" style="clear:both">${_('Pull Requests I Participate In')}</div>
 
<ul>
 
  %if c.participate_in_pull_requests:
 
    %for pull_request in c.participate_in_pull_requests:
 
      <li class="${'closed' if pull_request.is_closed() else ''}">
 
        <div style="height: 12px">
 
            %if pull_request.last_review_status:
 
              <img src="${h.url('/images/icons/flag_status_%s.png' % pull_request.last_review_status)}" title="${_("Someone voted: %s") % pull_request.last_review_status}"/>
 
              <i class="icon-circle changeset-status-${pull_request.last_review_status}" title="${_("Someone voted: %s") % pull_request.last_review_status}"></i>
 
            %else:
 
              <img src="${h.url('/images/icons/flag_status_not_reviewed.png')}" title="${_("Nobody voted")}"/>
 
              <i class="icon-circle changeset-status-not_reviewed" title="${_("Nobody voted")}"></i>
 
            %endif
 
            <a href="${pull_request.url()}">
 
              ${pull_request.title or _("(no title)")}
 
            </a>
 
            ${_('from')}
 
            <% org_ref_name=pull_request.org_ref.rsplit(':', 2)[-2] %>
 
            <a href="${h.url('summary_home', repo_name=pull_request.org_repo.repo_name, anchor=org_ref_name)}">
 
              ${pull_request.org_repo.repo_name}#${org_ref_name}
 
            </a>
 
            ${_('created on %s') % (h.fmt_date(pull_request.created_on))}
 
            %if pull_request.is_closed():
 
              (${_('Closed')})
 
            %endif
 
        </div>
 
      </li>
 
    %endfor
 
  %else:
 
    <li><span class="empty_data">${_('Nothing here yet')}</span></li>
 
  %endif
 
</ul>
kallithea/templates/summary/summary.html
Show inline comments
 
<%inherit file="/base/base.html"/>
 

	
 
<%def name="title()">
 
    ${_('%s Summary') % c.repo_name}
 
    %if c.site_name:
 
        &middot; ${c.site_name}
 
    %endif
 
</%def>
 

	
 
<%def name="breadcrumbs_links()">
 
    ${_('Summary')}
 

	
 
    ## locking icon
 
    %if c.db_repo.enable_locking:
 
     %if c.db_repo.locked[0]:
 
       <span class="locking_locked tooltip" title="${_('Repository locked by %s') % h.person_by_id(c.db_repo.locked[0])}"></span>
 
       <span class="locking_locked tooltip icon-block" title="${_('Repository locked by %s') % h.person_by_id(c.db_repo.locked[0])}"></span>
 
     %else:
 
       <span class="locking_unlocked tooltip" title="${_('Repository unlocked')}"></span>
 
       <span class="locking_unlocked tooltip icon-ok" title="${_('Repository unlocked')}"></span>
 
     %endif
 
    %endif
 

	
 
    ##FORK
 
    %if c.db_repo.fork:
 
    <span>
 
        - <i class="icon-code-fork"></i> ${_('Fork of')} "<a href="${h.url('summary_home',repo_name=c.db_repo.fork.repo_name)}">${c.db_repo.fork.repo_name}</a>"
 
        - <i class="icon-fork"></i> ${_('Fork of')} "<a href="${h.url('summary_home',repo_name=c.db_repo.fork.repo_name)}">${c.db_repo.fork.repo_name}</a>"
 
    </span>
 
    %endif
 

	
 
    ##REMOTE
 
    %if c.db_repo.clone_uri:
 
    <span>
 
       - <i class="icon-code-fork"></i> ${_('Clone from')} "<a href="${h.url(str(h.hide_credentials(c.db_repo.clone_uri)))}">${h.hide_credentials(c.db_repo.clone_uri)}</a>"
 
       - <i class="icon-fork"></i> ${_('Clone from')} "<a href="${h.url(str(h.hide_credentials(c.db_repo.clone_uri)))}">${h.hide_credentials(c.db_repo.clone_uri)}</a>"
 
    <span>
 
    %endif
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('repositories')}
 
</%def>
 

	
 
<%def name="head_extra()">
 
<link href="${h.url('atom_feed_home',repo_name=c.db_repo.repo_name,api_key=c.authuser.api_key)}" rel="alternate" title="${_('%s ATOM feed') % c.repo_name}" type="application/atom+xml" />
 
<link href="${h.url('rss_feed_home',repo_name=c.db_repo.repo_name,api_key=c.authuser.api_key)}" rel="alternate" title="${_('%s RSS feed') % c.repo_name}" type="application/rss+xml" />
 

	
 
<script>
 
redirect_hash_branch = function(){
 
    var branch = window.location.hash.replace(/^#(.*)/, '$1');
 
    if (branch){
 
        window.location = "${h.url('changelog_home',repo_name=c.repo_name,branch='__BRANCH__')}"
 
            .replace('__BRANCH__',branch);
 
    }
 
}
 
redirect_hash_branch();
 
window.onhashchange = function() {
 
    redirect_hash_branch();
 
};
 
@@ -103,101 +103,101 @@ summary = lambda n:{False:'summary-short
 
                <div id="lang_stats"></div>
 
                %else:
 
                   ${_('Statistics are disabled for this repository')}
 
                   %if h.HasPermissionAll('hg.admin')('enable stats on from summary'):
 
                        ${h.link_to(_('Enable'),h.url('edit_repo',repo_name=c.repo_name, anchor='repo_enable_statistics'),class_="btn btn-mini")}
 
                   %endif
 
                %endif
 
              </div>
 
            </div>
 

	
 
            <div class="field">
 
              <div class="label-summary">
 
                  <label>${_('Download')}:</label>
 
              </div>
 
              <div class="input ${summary(c.show_stats)}">
 
                %if len(c.db_repo_scm_instance.revisions) == 0:
 
                  ${_('There are no downloads yet')}
 
                %elif not c.enable_downloads:
 
                  ${_('Downloads are disabled for this repository')}
 
                    %if h.HasPermissionAll('hg.admin')('enable downloads on from summary'):
 
                        ${h.link_to(_('Enable'),h.url('edit_repo',repo_name=c.repo_name, anchor='repo_enable_downloads'),class_="btn btn-mini")}
 
                    %endif
 
                %else:
 
                    <span id="${'zip_link'}">
 
                        <a class="btn btn-small" href="${h.url('files_archive_home',repo_name=c.db_repo.repo_name,fname='tip.zip')}"><i class="icon-archive"></i> ${_('Download as zip')}</a>
 
                        <a class="btn btn-small" href="${h.url('files_archive_home',repo_name=c.db_repo.repo_name,fname='tip.zip')}"><i class="icon-file-zip"></i> ${_('Download as zip')}</a>
 
                    </span>
 
                    ${h.hidden('download_options')}
 
                    <span style="vertical-align: bottom">
 
                      <input id="archive_subrepos" type="checkbox" name="subrepos" />
 
                      <label for="archive_subrepos" class="tooltip" title="${h.tooltip(_('Check this to download archive with subrepos'))}" >${_('with subrepos')}</label>
 
                    </span>
 
                %endif
 
              </div>
 
            </div>
 
        </div>
 
        <div id="summary-menu-stats">
 
          <ul>
 
            <li>
 
               <a title="${_('Owner')} ${c.db_repo.user.email}">
 
                <i class="icon-user"></i> ${c.db_repo.user.username}
 
                  <div class="gravatar" style="float: right; margin: 0px 0px 0px 0px" title="${c.db_repo.user.name} ${c.db_repo.user.lastname}">
 
                     <img alt="gravatar" src="${h.gravatar_url(c.db_repo.user.email, 18)}"/>
 
                  </div>
 
              </a>
 
            </li>
 
            <li>
 
               <a title="${_('Followers')}" href="${h.url('repo_followers_home',repo_name=c.repo_name)}">
 
                <i class="icon-heart"></i> ${_('Followers')}
 
                <span class="stats-bullet" id="current_followers_count">${c.repository_followers}</span>
 
              </a>
 
            </li>
 
            <li>
 
              <a title="${_('Forks')}" href="${h.url('repo_forks_home',repo_name=c.repo_name)}">
 
                <i class="icon-code-fork"></i> ${_('Forks')}
 
                <i class="icon-fork"></i> ${_('Forks')}
 
                <span class="stats-bullet">${c.repository_forks}</span>
 
              </a>
 
            </li>
 

	
 
            %if c.authuser.username != 'default':
 
            <li class="repo_size">
 
              <a href="#" onclick="javascript:showRepoSize('repo_size_2','${c.db_repo.repo_name}','${str(h.get_token())}')"><i class="icon-archive"></i> ${_('Repository Size')}</a>
 
              <a href="#" onclick="javascript:showRepoSize('repo_size_2','${c.db_repo.repo_name}','${str(h.get_token())}')"><i class="icon-ruler"></i> ${_('Repository Size')}</a>
 
              <span  class="stats-bullet" id="repo_size_2"></span>
 
            </li>
 
            %endif
 

	
 
            <li>
 
            %if c.authuser.username != 'default':
 
              <a href="${h.url('atom_feed_home',repo_name=c.db_repo.repo_name,api_key=c.authuser.api_key)}"><i class="icon-rss-sign"></i> ${_('Feed')}</a>
 
              <a href="${h.url('atom_feed_home',repo_name=c.db_repo.repo_name,api_key=c.authuser.api_key)}"><i class="icon-rss-squared"></i> ${_('Feed')}</a>
 
            %else:
 
              <a href="${h.url('atom_feed_home',repo_name=c.db_repo.repo_name)}"><i class="icon-rss-sign"></i> ${_('Feed')}</a>
 
              <a href="${h.url('atom_feed_home',repo_name=c.db_repo.repo_name)}"><i class="icon-rss-squared"></i> ${_('Feed')}</a>
 
            %endif
 
            </li>
 

	
 
            %if c.show_stats:
 
            <li>
 
              <a title="${_('Statistics')}" href="${h.url('repo_stats_home',repo_name=c.repo_name)}">
 
                <i class="icon-bar-chart"></i> ${_('Statistics')}
 
                <i class="icon-graph"></i> ${_('Statistics')}
 
              </a>
 
            </li>
 
            %endif
 
          </ul>
 
        </div>
 
    </div>
 
</div>
 

	
 

	
 
<div class="box">
 
    <div class="title">
 
        <div class="breadcrumbs">
 
        %if c.repo_changesets:
 
            ${h.link_to(_('Latest Changes'),h.url('changelog_home',repo_name=c.repo_name))}
 
        %else:
 
            ${_('Quick Start')}
 
         %endif
 
        </div>
 
    </div>
 
    <div class="table">
 
        <div id="shortlog_data">
 
            <%include file='../changelog/changelog_summary_data.html'/>
 
        </div>
 
    </div>
 
@@ -279,49 +279,49 @@ $(document).ready(function(){
 
          }else{
 
              $.ajax({
 
                url: pyroutes.url('repo_refs_data', {'repo_name': '${c.repo_name}'}),
 
                data: {},
 
                dataType: 'json',
 
                type: 'GET',
 
                success: function(data) {
 
                  cache[key] = data;
 
                  query.callback({results: data.results});
 
                }
 
              })
 
          }
 
        }
 
    });
 
    // on change of download options
 
    $('#download_options').change(function(e){
 
       var new_cs = e.added
 

	
 
       for(k in tmpl_links){
 
           var s = $('#'+k+'_link');
 
           if(s){
 
             var title_tmpl = "${_('Download %s as %s') % ('__CS_NAME__','__CS_EXT__')}";
 
             title_tmpl= title_tmpl.replace('__CS_NAME__',new_cs.text);
 
             title_tmpl = title_tmpl.replace('__CS_EXT__',k);
 
             title_tmpl = '<i class="icon-archive"></i> '+ title_tmpl;
 
             title_tmpl = '<i class="icon-file-zip"></i> '+ title_tmpl;
 
             var url = tmpl_links[k].replace('__CS__',new_cs.id);
 
             var subrepos = $('#archive_subrepos').is(':checked');
 
             url = url.replace('__SUB__',subrepos);
 
             url = url.replace('__NAME__',title_tmpl);
 

	
 
             s.html(url)
 
           }
 
       }
 
    });
 

	
 
    var tmpl_links = {};
 
    %for cnt,archive in enumerate(c.db_repo_scm_instance._get_archives()):
 
      tmpl_links["${archive['type']}"] = '${h.link_to('__NAME__', h.url('files_archive_home',repo_name=c.db_repo.repo_name, fname='__CS__'+archive['extension'],subrepos='__SUB__'),class_='btn btn-small')}';
 
    %endfor
 
})
 
</script>
 

	
 
%if c.show_stats:
 
<script type="text/javascript">
 
$(document).ready(function(){
 
    var data = ${c.trending_languages|n};
 
    var total = 0;
 
    var no_data = true;
 
    var tbl = document.createElement('table');
kallithea/templates/switch_to_list.html
Show inline comments
 
## -*- coding: utf-8 -*-
 
<li>
 
    <a href="${h.url('branches_home',repo_name=c.repo_name)}" class="childs"><i class="icon-code-fork"></i> ${'%s (%s)' % (_('Branches'),len(c.db_repo_scm_instance.branches.values()))}</a>
 
    <a href="${h.url('branches_home',repo_name=c.repo_name)}" class="childs"><i class="icon-fork"></i> ${'%s (%s)' % (_('Branches'),len(c.db_repo_scm_instance.branches.values()))}</a>
 
    <ul>
 
    %if c.db_repo_scm_instance.branches.values():
 
        %for cnt,branch in enumerate(c.db_repo_scm_instance.branches.items()):
 
            <li><div><pre>${h.link_to('%s - %s' % (branch[0],h.short_id(branch[1])),h.url('files_home',repo_name=c.repo_name,revision=(branch[0] if '/' not in branch[0] else branch[1]), at=branch[0]))}</pre></div></li>
 
        %endfor
 
    %else:
 
        <li>${h.link_to(_('There are no branches yet'),'#')}</li>
 
    %endif
 
    </ul>
 
</li>
 
%if c.db_repo_scm_instance.closed_branches.values():
 
<li>
 
    <a href="${h.url('branches_home',repo_name=c.repo_name)}" class="childs"><i class="icon-code-fork"></i> ${'%s (%s)' % (_('Closed Branches'),len(c.db_repo_scm_instance.closed_branches.values()))}</a>
 
    <a href="${h.url('branches_home',repo_name=c.repo_name)}" class="childs"><i class="icon-fork"></i> ${'%s (%s)' % (_('Closed Branches'),len(c.db_repo_scm_instance.closed_branches.values()))}</a>
 
    <ul>
 
        %for cnt,branch in enumerate(c.db_repo_scm_instance.closed_branches.items()):
 
            <li><div><pre>${h.link_to('%s - %s' % (branch[0],h.short_id(branch[1])),h.url('files_home',repo_name=c.repo_name,revision=(branch[0] if '/' not in branch[0] else branch[1]), at=branch[0]))}</pre></div></li>
 
        %endfor
 
    </ul>
 
</li>
 
%endif
 
<li>
 
    <a href="${h.url('tags_home',repo_name=c.repo_name)}" class="childs"><i class="icon-tag"></i> ${'%s (%s)' % (_('Tags'),len(c.db_repo_scm_instance.tags.values()))}</a>
 
    <ul>
 
    %if c.db_repo_scm_instance.tags.values():
 
        %for cnt,tag in enumerate(c.db_repo_scm_instance.tags.items()):
 
         <li><div><pre>${h.link_to('%s - %s' % (tag[0],h.short_id(tag[1])),h.url('files_home',repo_name=c.repo_name,revision=(tag[0] if '/' not in tag[0] else tag[1]), at=tag[0]))}</pre></div></li>
 
        %endfor
 
    %else:
 
        <li>${h.link_to(_('There are no tags yet'),'#')}</li>
 
    %endif
 
    </ul>
 
</li>
 
%if c.db_repo_scm_instance.alias == 'hg':
 
<li>
 
    <a href="${h.url('bookmarks_home',repo_name=c.repo_name)}" class="childs"><i class="icon-bookmark"></i> ${'%s (%s)' % (_('Bookmarks'),len(c.db_repo_scm_instance.bookmarks.values()))}</a>
 
    <ul>
 
    %if c.db_repo_scm_instance.bookmarks.values():
kallithea/templates/tags/tags.html
Show inline comments
 
@@ -70,30 +70,30 @@ myDataSource.responseSchema = {
 
        {key:"raw_date"},
 
        {key:"date"},
 
        {key:"author"},
 
        {key:"last_rev_raw"},
 
        {key:"revision"},
 
        {key:"compare"}
 
    ]
 
};
 

	
 
var myDataTable = new YAHOO.widget.DataTable("table_wrap", myColumnDefs, myDataSource,
 
    {
 
         sortedBy:{key:"name",dir:"asc"},
 
         MSG_SORTASC:"${_('Click to sort ascending')}",
 
         MSG_SORTDESC:"${_('Click to sort descending')}",
 
         MSG_EMPTY:"${_('No records found.')}",
 
         MSG_ERROR:"${_('Data error.')}",
 
         MSG_LOADING:"${_('Loading...')}"
 
    }
 
);
 
myDataTable.subscribe('postRenderEvent',function(oArgs) {
 
    tooltip_activate();
 
    var func = function(node){
 
        return node.parentNode.parentNode.parentNode.parentNode.parentNode;
 
    }
 
    q_filter('q_filter_tags',YUQ('div.table tr td .logtags .tagtag a'),func);
 
    q_filter('q_filter_tags',$('div.table tr td .logtags .tagtag a'),func);
 
});
 

	
 
</script>
 

	
 
</%def>
kallithea/tests/__init__.py
Show inline comments
 
@@ -187,28 +187,30 @@ class TestController(BaseTestCase):
 
    def log_user(self, username=TEST_USER_ADMIN_LOGIN,
 
                 password=TEST_USER_ADMIN_PASS):
 
        self._logged_username = username
 
        response = self.app.post(url(controller='login', action='index'),
 
                                 {'username': username,
 
                                  'password': password})
 

	
 
        if 'invalid user name' in response.body:
 
            self.fail('could not login using %s %s' % (username, password))
 

	
 
        self.assertEqual(response.status, '302 Found')
 
        ses = response.session['authuser']
 
        self.assertEqual(ses.get('username'), username)
 
        response = response.follow()
 
        self.assertEqual(ses.get('is_authenticated'), True)
 

	
 
        return response.session['authuser']
 

	
 
    def _get_logged_user(self):
 
        return User.get_by_username(self._logged_username)
 

	
 
    def checkSessionFlash(self, response, msg):
 
        self.assertTrue('flash' in response.session,
 
                        msg='Response session have no flash key' % response.session)
 
        if not msg in response.session['flash'][0][1]:
 
            msg = u'msg `%s` not found in session flash: got `%s` instead' % (
 
                      msg, response.session['flash'][0][1])
 
        if not any(msg in m for level, m in response.session['flash']):
 
            for level, m in response.session['flash']:
 
                msg = u'msg `%s` not found in session flash: got `%s` instead' % (msg, m)
 
            self.fail(safe_str(msg))
 
            msg = u'msg `%s` not found in empty session flash' % (msg)
 
            self.fail(safe_str(msg))
kallithea/tests/fixtures/diff_with_diff_data.diff
Show inline comments
 
@@ -393,24 +393,25 @@ index e34033e29fa9b3d3366b723beab129cee7
 
+-FOOBAR
 
+\ No newline at end of file
 
+diff --git a/foobar3 b/foobar3
 
+--- a/foobar3
 
++++ b/foobar3
 
+@@ -1,1 +1,3 @@
 
+-foobar3
 
+\ No newline at end of file
 
++FOOBAR
 
++FOOBAR
 
++FOOBAR
 
+''')
 
+
 
+
 
 # For each backend create test case class
 
 for alias in SCM_TESTS:
 
     attrs = {
 
@@ -38,7 +211,6 @@ for alias in SCM_TESTS:
 
     bases = (RepositoryBaseTest, unittest.TestCase)
 
     globals()[cls_name] = type(cls_name, bases, attrs)
 
 
 
-
 
 if __name__ == '__main__':
 
     unittest.main()
 
 
kallithea/tests/fixtures/hg_diff_mod_single_file_and_rename_and_chmod.diff
Show inline comments
 
diff --git a/README.rst b/README
 
old mode 100755
 
new mode 100644
 
rename from README.rst
 
rename to README
 
--- a/README.rst
 
+++ b/README
 
@@ -1,4 +1,7 @@
 
 readme2
 
 line 1
 
  line2
 

	
 
+line 1
 
+ line2
 
+
 
\ No newline at end of file
 
+
kallithea/tests/fixtures/hg_diff_rename_space_cr.diff
Show inline comments
 
new file 100644
 
diff --git a/oh no b/oh yes
 
rename from oh no
 
rename to oh yes
 
--- a/oh no	
 
+++ b/oh yes	
 
@@ -1,4 +1,4 @@
 
 1
 
-2+ 2
 
-3 
 
+2
 
+3
 
 4
 
@@ -5,3 +6,4 @@
 
 5
 
 6
 
 7
 
+8
kallithea/tests/functional/test_compare.py
Show inline comments
 
@@ -84,97 +84,97 @@ class TestCompareController(TestControll
 
        rev2 = 'default'
 

	
 
        response = self.app.get(url('compare_url',
 
                                    repo_name=repo1.repo_name,
 
                                    org_ref_type="branch",
 
                                    org_ref_name=rev2,
 
                                    other_repo=repo2.repo_name,
 
                                    other_ref_type="branch",
 
                                    other_ref_name=rev1,
 
                                    merge='1',))
 

	
 
        response.mustcontain('%s@%s' % (repo1.repo_name, rev2))
 
        response.mustcontain('%s@%s' % (repo2.repo_name, rev1))
 
        response.mustcontain("""Showing 2 commits""")
 
        response.mustcontain("""1 file changed with 2 insertions and 0 deletions""")
 

	
 
        response.mustcontain(_commit_div(cs1.raw_id, 'commit2'))
 
        response.mustcontain(_commit_div(cs2.raw_id, 'commit3'))
 

	
 
        response.mustcontain("""<a href="/%s/changeset/%s">r1:%s</a>""" % (repo2.repo_name, cs1.raw_id, cs1.short_id))
 
        response.mustcontain("""<a href="/%s/changeset/%s">r2:%s</a>""" % (repo2.repo_name, cs2.raw_id, cs2.short_id))
 
        ## files
 
        response.mustcontain("""<a href="#C--826e8142e6ba">file1</a>""")
 
        #swap
 
        response.mustcontain("""<a class="btn btn-small" href="/%s/compare/branch@%s...branch@%s?other_repo=%s&amp;merge=True"><i class="icon-refresh"></i> Swap</a>""" % (repo2.repo_name, rev1, rev2, repo1.repo_name))
 
        response.mustcontain("""<a class="btn btn-small" href="/%s/compare/branch@%s...branch@%s?other_repo=%s&amp;merge=True"><i class="icon-arrows-cw"></i> Swap</a>""" % (repo2.repo_name, rev1, rev2, repo1.repo_name))
 

	
 
    def test_compare_forks_on_branch_extra_commits_git(self):
 
        self.log_user()
 
        repo1 = fixture.create_repo('one-git', repo_type='git',
 
                                    repo_description='diff-test',
 
                                    cur_user=TEST_USER_ADMIN_LOGIN)
 
        self.r1_id = repo1.repo_id
 
        #commit something !
 
        cs0 = _commit_change(repo1.repo_name, filename='file1', content='line1\n',
 
                             message='commit1', vcs_type='git', parent=None, newfile=True)
 

	
 
        #fork this repo
 
        repo2 = fixture.create_fork('one-git', 'one-git-fork')
 
        self.r2_id = repo2.repo_id
 

	
 
        #add two extra commit into fork
 
        cs1 = _commit_change(repo2.repo_name, filename='file1', content='line1\nline2\n',
 
                             message='commit2', vcs_type='git', parent=cs0)
 

	
 
        cs2 = _commit_change(repo2.repo_name, filename='file1', content='line1\nline2\nline3\n',
 
                             message='commit3', vcs_type='git', parent=cs1)
 

	
 
        rev1 = 'master'
 
        rev2 = 'master'
 

	
 
        response = self.app.get(url('compare_url',
 
                                    repo_name=repo1.repo_name,
 
                                    org_ref_type="branch",
 
                                    org_ref_name=rev2,
 
                                    other_repo=repo2.repo_name,
 
                                    other_ref_type="branch",
 
                                    other_ref_name=rev1,
 
                                    merge='1',))
 

	
 
        response.mustcontain('%s@%s' % (repo1.repo_name, rev2))
 
        response.mustcontain('%s@%s' % (repo2.repo_name, rev1))
 
        response.mustcontain("""Showing 2 commits""")
 
        response.mustcontain("""1 file changed with 2 insertions and 0 deletions""")
 

	
 
        response.mustcontain(_commit_div(cs1.raw_id, 'commit2'))
 
        response.mustcontain(_commit_div(cs2.raw_id, 'commit3'))
 

	
 
        response.mustcontain("""<a href="/%s/changeset/%s">r1:%s</a>""" % (repo2.repo_name, cs1.raw_id, cs1.short_id))
 
        response.mustcontain("""<a href="/%s/changeset/%s">r2:%s</a>""" % (repo2.repo_name, cs2.raw_id, cs2.short_id))
 
        ## files
 
        response.mustcontain("""<a href="#C--826e8142e6ba">file1</a>""")
 
        #swap
 
        response.mustcontain("""<a class="btn btn-small" href="/%s/compare/branch@%s...branch@%s?other_repo=%s&amp;merge=True"><i class="icon-refresh"></i> Swap</a>""" % (repo2.repo_name, rev1, rev2, repo1.repo_name))
 
        response.mustcontain("""<a class="btn btn-small" href="/%s/compare/branch@%s...branch@%s?other_repo=%s&amp;merge=True"><i class="icon-arrows-cw"></i> Swap</a>""" % (repo2.repo_name, rev1, rev2, repo1.repo_name))
 

	
 
    def test_compare_forks_on_branch_extra_commits_origin_has_incomming_hg(self):
 
        self.log_user()
 

	
 
        repo1 = fixture.create_repo('one', repo_type='hg',
 
                                    repo_description='diff-test',
 
                                    cur_user=TEST_USER_ADMIN_LOGIN)
 

	
 
        self.r1_id = repo1.repo_id
 

	
 
        #commit something !
 
        cs0 = _commit_change(repo1.repo_name, filename='file1', content='line1\n',
 
                             message='commit1', vcs_type='hg', parent=None, newfile=True)
 

	
 
        #fork this repo
 
        repo2 = fixture.create_fork('one', 'one-fork')
 
        self.r2_id = repo2.repo_id
 

	
 
        #now commit something to origin repo
 
        cs1_prim = _commit_change(repo1.repo_name, filename='file2', content='line1file2\n',
 
                                  message='commit2', vcs_type='hg', parent=cs0, newfile=True)
 

	
 
        #add two extra commit into fork
 
        cs1 = _commit_change(repo2.repo_name, filename='file1', content='line1\nline2\n',
 
@@ -187,49 +187,49 @@ class TestCompareController(TestControll
 
        rev2 = 'default'
 

	
 
        response = self.app.get(url('compare_url',
 
                                    repo_name=repo1.repo_name,
 
                                    org_ref_type="branch",
 
                                    org_ref_name=rev2,
 
                                    other_repo=repo2.repo_name,
 
                                    other_ref_type="branch",
 
                                    other_ref_name=rev1,
 
                                    merge='1',))
 

	
 
        response.mustcontain('%s@%s' % (repo1.repo_name, rev2))
 
        response.mustcontain('%s@%s' % (repo2.repo_name, rev1))
 
        response.mustcontain("""Showing 2 commits""")
 
        response.mustcontain("""1 file changed with 2 insertions and 0 deletions""")
 

	
 
        response.mustcontain(_commit_div(cs1.raw_id, 'commit2'))
 
        response.mustcontain(_commit_div(cs2.raw_id, 'commit3'))
 

	
 
        response.mustcontain("""<a href="/%s/changeset/%s">r1:%s</a>""" % (repo2.repo_name, cs1.raw_id, cs1.short_id))
 
        response.mustcontain("""<a href="/%s/changeset/%s">r2:%s</a>""" % (repo2.repo_name, cs2.raw_id, cs2.short_id))
 
        ## files
 
        response.mustcontain("""<a href="#C--826e8142e6ba">file1</a>""")
 
        #swap
 
        response.mustcontain("""<a class="btn btn-small" href="/%s/compare/branch@%s...branch@%s?other_repo=%s&amp;merge=True"><i class="icon-refresh"></i> Swap</a>""" % (repo2.repo_name, rev1, rev2, repo1.repo_name))
 
        response.mustcontain("""<a class="btn btn-small" href="/%s/compare/branch@%s...branch@%s?other_repo=%s&amp;merge=True"><i class="icon-arrows-cw"></i> Swap</a>""" % (repo2.repo_name, rev1, rev2, repo1.repo_name))
 

	
 
    def test_compare_forks_on_branch_extra_commits_origin_has_incomming_git(self):
 
        self.log_user()
 

	
 
        repo1 = fixture.create_repo('one-git', repo_type='git',
 
                                    repo_description='diff-test',
 
                                    cur_user=TEST_USER_ADMIN_LOGIN)
 

	
 
        self.r1_id = repo1.repo_id
 

	
 
        #commit something !
 
        cs0 = _commit_change(repo1.repo_name, filename='file1', content='line1\n',
 
                             message='commit1', vcs_type='git', parent=None, newfile=True)
 

	
 
        #fork this repo
 
        repo2 = fixture.create_fork('one-git', 'one-git-fork')
 
        self.r2_id = repo2.repo_id
 

	
 
        #now commit something to origin repo
 
        cs1_prim = _commit_change(repo1.repo_name, filename='file2', content='line1file2\n',
 
                                  message='commit2', vcs_type='git', parent=cs0, newfile=True)
 

	
 
        #add two extra commit into fork
 
        cs1 = _commit_change(repo2.repo_name, filename='file1', content='line1\nline2\n',
 
@@ -242,49 +242,49 @@ class TestCompareController(TestControll
 
        rev2 = 'master'
 

	
 
        response = self.app.get(url('compare_url',
 
                                    repo_name=repo1.repo_name,
 
                                    org_ref_type="branch",
 
                                    org_ref_name=rev2,
 
                                    other_repo=repo2.repo_name,
 
                                    other_ref_type="branch",
 
                                    other_ref_name=rev1,
 
                                    merge='1',))
 

	
 
        response.mustcontain('%s@%s' % (repo1.repo_name, rev2))
 
        response.mustcontain('%s@%s' % (repo2.repo_name, rev1))
 
        response.mustcontain("""Showing 2 commits""")
 
        response.mustcontain("""1 file changed with 2 insertions and 0 deletions""")
 

	
 
        response.mustcontain(_commit_div(cs1.raw_id, 'commit2'))
 
        response.mustcontain(_commit_div(cs2.raw_id, 'commit3'))
 

	
 
        response.mustcontain("""<a href="/%s/changeset/%s">r1:%s</a>""" % (repo2.repo_name, cs1.raw_id, cs1.short_id))
 
        response.mustcontain("""<a href="/%s/changeset/%s">r2:%s</a>""" % (repo2.repo_name, cs2.raw_id, cs2.short_id))
 
        ## files
 
        response.mustcontain("""<a href="#C--826e8142e6ba">file1</a>""")
 
        #swap
 
        response.mustcontain("""<a class="btn btn-small" href="/%s/compare/branch@%s...branch@%s?other_repo=%s&amp;merge=True"><i class="icon-refresh"></i> Swap</a>""" % (repo2.repo_name, rev1, rev2, repo1.repo_name))
 
        response.mustcontain("""<a class="btn btn-small" href="/%s/compare/branch@%s...branch@%s?other_repo=%s&amp;merge=True"><i class="icon-arrows-cw"></i> Swap</a>""" % (repo2.repo_name, rev1, rev2, repo1.repo_name))
 

	
 
    def test_compare_cherry_pick_changesets_from_bottom(self):
 

	
 
#        repo1:
 
#            cs0:
 
#            cs1:
 
#        repo1-fork- in which we will cherry pick bottom changesets
 
#            cs0:
 
#            cs1:
 
#            cs2: x
 
#            cs3: x
 
#            cs4: x
 
#            cs5:
 
        #make repo1, and cs1+cs2
 
        self.log_user()
 

	
 
        repo1 = fixture.create_repo('repo1', repo_type='hg',
 
                                    repo_description='diff-test',
 
                                    cur_user=TEST_USER_ADMIN_LOGIN)
 
        self.r1_id = repo1.repo_id
 

	
 
        #commit something !
 
        cs0 = _commit_change(repo1.repo_name, filename='file1', content='line1\n',
 
                             message='commit1', vcs_type='hg', parent=None,
kallithea/tests/functional/test_compare_local.py
Show inline comments
 
@@ -8,59 +8,81 @@ class TestCompareController(TestControll
 
        tag1 = 'v0.1.2'
 
        tag2 = 'v0.1.3'
 
        response = self.app.get(url('compare_url',
 
                                    repo_name=HG_REPO,
 
                                    org_ref_type="tag",
 
                                    org_ref_name=tag1,
 
                                    other_ref_type="tag",
 
                                    other_ref_name=tag2,
 
                                    ), status=200)
 
        response.mustcontain('%s@%s' % (HG_REPO, tag1))
 
        response.mustcontain('%s@%s' % (HG_REPO, tag2))
 

	
 
        ## outgoing changesets between tags
 
        response.mustcontain('''<a href="/%s/changeset/c5ddebc06eaaba3010c2d66ea6ec9d074eb0f678">r112:c5ddebc06eaa</a>''' % HG_REPO)
 
        response.mustcontain('''<a href="/%s/changeset/70d4cef8a37657ee4cf5aabb3bd9f68879769816">r115:70d4cef8a376</a>''' % HG_REPO)
 
        response.mustcontain('''<a href="/%s/changeset/9749bfbfc0d2eba208d7947de266303b67c87cda">r116:9749bfbfc0d2</a>''' % HG_REPO)
 
        response.mustcontain('''<a href="/%s/changeset/41fda979f02fda216374bf8edac4e83f69e7581c">r117:41fda979f02f</a>''' % HG_REPO)
 
        response.mustcontain('''<a href="/%s/changeset/bb1a3ab98cc45cb934a77dcabf87a5a598b59e97">r118:bb1a3ab98cc4</a>''' % HG_REPO)
 
        response.mustcontain('''<a href="/%s/changeset/36e0fc9d2808c5022a24f49d6658330383ed8666">r119:36e0fc9d2808</a>''' % HG_REPO)
 
        response.mustcontain('''<a href="/%s/changeset/17544fbfcd33ffb439e2b728b5d526b1ef30bfcf">r120:17544fbfcd33</a>''' % HG_REPO)
 

	
 
        response.mustcontain('11 files changed with 94 insertions and 64 deletions')
 

	
 
        ## files diff
 
        response.mustcontain('''<div class="node"><a href="#C--1c5cf9e91c12">docs/api/utils/index.rst</a></div>''')
 
        response.mustcontain('''<div class="node"><a href="#C--e3305437df55">test_and_report.sh</a></div>''')
 
        response.mustcontain('''<div class="node"><a href="#C--c8e92ef85cd1">.hgignore</a></div>''')
 
        response.mustcontain('''<div class="node"><a href="#C--6e08b694d687">.hgtags</a></div>''')
 
        response.mustcontain('''<div class="node"><a href="#C--2c14b00f3393">docs/api/index.rst</a></div>''')
 
        response.mustcontain('''<div class="node"><a href="#C--430ccbc82bdf">vcs/__init__.py</a></div>''')
 
        response.mustcontain('''<div class="node"><a href="#C--9c390eb52cd6">vcs/backends/hg.py</a></div>''')
 
        response.mustcontain('''<div class="node"><a href="#C--ebb592c595c0">vcs/utils/__init__.py</a></div>''')
 
        response.mustcontain('''<div class="node"><a href="#C--7abc741b5052">vcs/utils/annotate.py</a></div>''')
 
        response.mustcontain('''<div class="node"><a href="#C--2ef0ef106c56">vcs/utils/diffs.py</a></div>''')
 
        response.mustcontain('''<div class="node"><a href="#C--3150cb87d4b7">vcs/utils/lazy.py</a></div>''')
 
        response.mustcontain('''<div class="node">
 
                             <i class="icon-diff-A"></i>
 
                             <a href="#C--1c5cf9e91c12">docs/api/utils/index.rst</a>''')
 
        response.mustcontain('''<div class="node">
 
                             <i class="icon-diff-A"></i>
 
                             <a href="#C--e3305437df55">test_and_report.sh</a>''')
 
        response.mustcontain('''<div class="node">
 
                             <i class="icon-diff-M"></i>
 
                             <a href="#C--c8e92ef85cd1">.hgignore</a>''')
 
        response.mustcontain('''<div class="node">
 
                             <i class="icon-diff-M"></i>
 
                             <a href="#C--6e08b694d687">.hgtags</a>''')
 
        response.mustcontain('''<div class="node">
 
                             <i class="icon-diff-M"></i>
 
                             <a href="#C--2c14b00f3393">docs/api/index.rst</a>''')
 
        response.mustcontain('''<div class="node">
 
                             <i class="icon-diff-M"></i>
 
                             <a href="#C--430ccbc82bdf">vcs/__init__.py</a>''')
 
        response.mustcontain('''<div class="node">
 
                             <i class="icon-diff-M"></i>
 
                             <a href="#C--9c390eb52cd6">vcs/backends/hg.py</a>''')
 
        response.mustcontain('''<div class="node">
 
                             <i class="icon-diff-M"></i>
 
                             <a href="#C--ebb592c595c0">vcs/utils/__init__.py</a>''')
 
        response.mustcontain('''<div class="node">
 
                             <i class="icon-diff-M"></i>
 
                             <a href="#C--7abc741b5052">vcs/utils/annotate.py</a>''')
 
        response.mustcontain('''<div class="node">
 
                             <i class="icon-diff-M"></i>
 
                             <a href="#C--2ef0ef106c56">vcs/utils/diffs.py</a>''')
 
        response.mustcontain('''<div class="node">
 
                             <i class="icon-diff-M"></i>
 
                             <a href="#C--3150cb87d4b7">vcs/utils/lazy.py</a>''')
 

	
 
    def test_compare_tag_git(self):
 
        self.log_user()
 
        tag1 = 'v0.1.2'
 
        tag2 = 'v0.1.3'
 
        response = self.app.get(url('compare_url',
 
                                    repo_name=GIT_REPO,
 
                                    org_ref_type="tag",
 
                                    org_ref_name=tag1,
 
                                    other_ref_type="tag",
 
                                    other_ref_name=tag2,
 
                                    ), status=200)
 
        response.mustcontain('%s@%s' % (GIT_REPO, tag1))
 
        response.mustcontain('%s@%s' % (GIT_REPO, tag2))
 

	
 
        ## outgoing changesets between tags
 
        response.mustcontain('''<a href="/%s/changeset/794bbdd31545c199f74912709ea350dedcd189a2">r113:794bbdd31545</a>''' % GIT_REPO)
 
        response.mustcontain('''<a href="/%s/changeset/e36d8c5025329bdd4212bd53d4ed8a70ff44985f">r115:e36d8c502532</a>''' % GIT_REPO)
 
        response.mustcontain('''<a href="/%s/changeset/5c9ff4f6d7508db0e72b1d2991c357d0d8e07af2">r116:5c9ff4f6d750</a>''' % GIT_REPO)
 
        response.mustcontain('''<a href="/%s/changeset/b7187fa2b8c1d773ec35e9dee12f01f74808c879">r117:b7187fa2b8c1</a>''' % GIT_REPO)
 
        response.mustcontain('''<a href="/%s/changeset/5f3b74262014a8de2dc7dade1152de9fd0c8efef">r118:5f3b74262014</a>''' % GIT_REPO)
 
        response.mustcontain('''<a href="/%s/changeset/17438a11f72b93f56d0e08e7d1fa79a378578a82">r119:17438a11f72b</a>''' % GIT_REPO)
 
        response.mustcontain('''<a href="/%s/changeset/5a3a8fb005554692b16e21dee62bf02667d8dc3e">r120:5a3a8fb00555</a>''' % GIT_REPO)
 

	
kallithea/tests/functional/test_files.py
Show inline comments
 
@@ -12,77 +12,77 @@ ARCHIVE_SPECS = {
 
    '.tar.gz': ('application/x-gzip', 'tgz', ''),
 
    '.zip': ('application/zip', 'zip', ''),
 
}
 

	
 
HG_NODE_HISTORY = fixture.load_resource('hg_node_history_response.json')
 
GIT_NODE_HISTORY = fixture.load_resource('git_node_history_response.json')
 

	
 

	
 
def _set_downloads(repo_name, set_to):
 
    repo = Repository.get_by_repo_name(repo_name)
 
    repo.enable_downloads = set_to
 
    Session().add(repo)
 
    Session().commit()
 

	
 

	
 
class TestFilesController(TestController):
 

	
 
    def test_index(self):
 
        self.log_user()
 
        response = self.app.get(url(controller='files', action='index',
 
                                    repo_name=HG_REPO,
 
                                    revision='tip',
 
                                    f_path='/'))
 
        # Test response...
 
        response.mustcontain('<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/docs">docs</a>')
 
        response.mustcontain('<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/vcs">vcs</a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/.gitignore">.gitignore</a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/.hgignore">.hgignore</a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/.hgtags">.hgtags</a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/.travis.yml">.travis.yml</a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/MANIFEST.in">MANIFEST.in</a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/README.rst">README.rst</a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/run_test_and_report.sh">run_test_and_report.sh</a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/setup.cfg">setup.cfg</a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/setup.py">setup.py</a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/test_and_report.sh">test_and_report.sh</a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/tox.ini">tox.ini</a>')
 
        response.mustcontain('<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/docs"><i class="icon-folder-open"></i><span>docs</span></a>')
 
        response.mustcontain('<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/vcs"><i class="icon-folder-open"></i><span>vcs</span></a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/.gitignore"><i class="icon-doc"></i><span>.gitignore</span></a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/.hgignore"><i class="icon-doc"></i><span>.hgignore</span></a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/.hgtags"><i class="icon-doc"></i><span>.hgtags</span></a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/.travis.yml"><i class="icon-doc"></i><span>.travis.yml</span></a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/MANIFEST.in"><i class="icon-doc"></i><span>MANIFEST.in</span></a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/README.rst"><i class="icon-doc"></i><span>README.rst</span></a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/run_test_and_report.sh"><i class="icon-doc"></i><span>run_test_and_report.sh</span></a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/setup.cfg"><i class="icon-doc"></i><span>setup.cfg</span></a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/setup.py"><i class="icon-doc"></i><span>setup.py</span></a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/test_and_report.sh"><i class="icon-doc"></i><span>test_and_report.sh</span></a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/96507bd11ecc815ebc6270fdf6db110928c09c1e/tox.ini"><i class="icon-doc"></i><span>tox.ini</span></a>')
 

	
 
    def test_index_revision(self):
 
        self.log_user()
 

	
 
        response = self.app.get(
 
            url(controller='files', action='index',
 
                repo_name=HG_REPO,
 
                revision='7ba66bec8d6dbba14a2155be32408c435c5f4492',
 
                f_path='/')
 
        )
 

	
 
        #Test response...
 

	
 
        response.mustcontain('<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/docs">docs</a>')
 
        response.mustcontain('<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/tests">tests</a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/README.rst">README.rst</a>')
 
        response.mustcontain('<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/docs"><i class="icon-folder-open"></i><span>docs</span></a>')
 
        response.mustcontain('<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/tests"><i class="icon-folder-open"></i><span>tests</span></a>')
 
        response.mustcontain('<a class="browser-file ypjax-link" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/README.rst"><i class="icon-doc"></i><span>README.rst</span></a>')
 
        response.mustcontain('1.1 KiB')
 
        response.mustcontain('text/x-python')
 

	
 
    def test_index_different_branch(self):
 
        self.log_user()
 

	
 
        response = self.app.get(url(controller='files', action='index',
 
                                    repo_name=HG_REPO,
 
                                    revision='97e8b885c04894463c51898e14387d80c30ed1ee',
 
                                    f_path='/'))
 

	
 
        response.mustcontain("""<option selected="selected" value="97e8b885c04894463c51898e14387d80c30ed1ee">git at 97e8b885c048</option>""")
 

	
 
    def test_index_paging(self):
 
        self.log_user()
 

	
 
        for r in [(73, 'a066b25d5df7016b45a41b7e2a78c33b57adc235'),
 
                  (92, 'cc66b61b8455b264a7a8a2d8ddc80fcfc58c221e'),
 
                  (109, '75feb4c33e81186c87eac740cee2447330288412'),
 
                  (1, '3d8f361e72ab303da48d799ff1ac40d5ac37c67e'),
 
                  (0, 'b986218ba1c9b0d6a259fac9b050b1724ed8e545')]:
 

	
 
            response = self.app.get(url(controller='files', action='index',
 
                                    repo_name=HG_REPO,
kallithea/tests/functional/test_home.py
Show inline comments
 
from kallithea.tests import *
 
from kallithea.tests.fixture import Fixture
 
from kallithea.model.meta import Session
 
from kallithea.model.db import Repository
 
from kallithea.model.repo import RepoModel
 
from kallithea.model.repo_group import RepoGroupModel
 

	
 

	
 
fixture = Fixture()
 

	
 

	
 
class TestHomeController(TestController):
 

	
 
    def test_index(self):
 
        self.log_user()
 
        response = self.app.get(url(controller='home', action='index'))
 
        #if global permission is set
 
        response.mustcontain('Add Repository')
 
        # html in javascript variable:
 
        response.mustcontain('var data = {"totalRecords": %s' % len(Repository.getAll()))
 
        response.mustcontain(r'href=\"/%s\"' % HG_REPO)
 

	
 
        response.mustcontain(r'<i class=\"icon-git\"')
 
        response.mustcontain(r'<i class=\"icon-unlock-alt\"')
 
        response.mustcontain(r'<i class=\"icon-globe\"')
 

	
 
        response.mustcontain("""fixes issue with having custom format for git-log""")
 
        response.mustcontain("""/%s/changeset/5f2c6ee195929b0be80749243c18121c9864a3b3""" % GIT_REPO)
 

	
 
        response.mustcontain("""disable security checks on hg clone for travis""")
 
        response.mustcontain("""/%s/changeset/96507bd11ecc815ebc6270fdf6db110928c09c1e""" % HG_REPO)
 

	
 
    def test_repo_summary_with_anonymous_access_disabled(self):
 
        with fixture.anon_access(False):
 
            response = self.app.get(url(controller='summary',
 
                                        action='index', repo_name=HG_REPO),
 
                                        status=302)
 
            assert 'login' in response.location
 

	
 
    def test_index_with_anonymous_access_disabled(self):
 
        with fixture.anon_access(False):
 
            response = self.app.get(url(controller='home', action='index'),
 
                                    status=302)
 
            assert 'login' in response.location
 

	
 
    def test_index_page_on_groups(self):
 
        self.log_user()
 
        gr = fixture.create_repo_group('gr1')
 
        fixture.create_repo(name='gr1/repo_in_group', repo_group=gr)
kallithea/tests/functional/test_summary.py
Show inline comments
 
@@ -16,118 +16,118 @@ from kallithea.tests import *
 
from kallithea.tests.fixture import Fixture
 
from kallithea.model.db import Repository
 
from kallithea.model.repo import RepoModel
 
from kallithea.model.meta import Session
 
from kallithea.model.scm import ScmModel
 

	
 
fixture = Fixture()
 

	
 

	
 
class TestSummaryController(TestController):
 

	
 
    def test_index(self):
 
        self.log_user()
 
        ID = Repository.get_by_repo_name(HG_REPO).repo_id
 
        response = self.app.get(url(controller='summary',
 
                                    action='index',
 
                                    repo_name=HG_REPO))
 

	
 
        #repo type
 
        response.mustcontain(
 
            """<i class="icon-hg" """
 
        )
 
        #public/private
 
        response.mustcontain(
 
            """<i class="icon-unlock-alt">"""
 
            """<i class="icon-globe">"""
 
        )
 

	
 
        # clone url...
 
        response.mustcontain('''id="clone_url" readonly="readonly" value="http://test_admin@localhost:80/%s"''' % HG_REPO)
 
        response.mustcontain('''id="clone_url_id" readonly="readonly" value="http://test_admin@localhost:80/_%s"''' % ID)
 

	
 
    def test_index_git(self):
 
        self.log_user()
 
        ID = Repository.get_by_repo_name(GIT_REPO).repo_id
 
        response = self.app.get(url(controller='summary',
 
                                    action='index',
 
                                    repo_name=GIT_REPO))
 

	
 
        #repo type
 
        response.mustcontain(
 
            """<i class="icon-git" """
 
        )
 
        #public/private
 
        response.mustcontain(
 
            """<i class="icon-unlock-alt">"""
 
            """<i class="icon-globe">"""
 
        )
 

	
 
        # clone url...
 
        response.mustcontain('''id="clone_url" readonly="readonly" value="http://test_admin@localhost:80/%s"''' % GIT_REPO)
 
        response.mustcontain('''id="clone_url_id" readonly="readonly" value="http://test_admin@localhost:80/_%s"''' % ID)
 

	
 
    def test_index_by_id_hg(self):
 
        self.log_user()
 
        ID = Repository.get_by_repo_name(HG_REPO).repo_id
 
        response = self.app.get(url(controller='summary',
 
                                    action='index',
 
                                    repo_name='_%s' % ID))
 

	
 
        #repo type
 
        response.mustcontain(
 
            """<i class="icon-hg" """
 
        )
 
        #public/private
 
        response.mustcontain(
 
            """<i class="icon-unlock-alt">"""
 
            """<i class="icon-globe">"""
 
        )
 

	
 
    def test_index_by_repo_having_id_path_in_name_hg(self):
 
        self.log_user()
 
        fixture.create_repo(name='repo_1')
 
        response = self.app.get(url(controller='summary',
 
                                    action='index',
 
                                    repo_name='repo_1'))
 

	
 
        try:
 
            response.mustcontain("repo_1")
 
        finally:
 
            RepoModel().delete(Repository.get_by_repo_name('repo_1'))
 
            Session().commit()
 

	
 
    def test_index_by_id_git(self):
 
        self.log_user()
 
        ID = Repository.get_by_repo_name(GIT_REPO).repo_id
 
        response = self.app.get(url(controller='summary',
 
                                    action='index',
 
                                    repo_name='_%s' % ID))
 

	
 
        #repo type
 
        response.mustcontain(
 
            """<i class="icon-git" """
 
        )
 
        #public/private
 
        response.mustcontain(
 
            """<i class="icon-unlock-alt">"""
 
            """<i class="icon-globe">"""
 
        )
 

	
 
    def _enable_stats(self, repo):
 
        r = Repository.get_by_repo_name(repo)
 
        r.enable_statistics = True
 
        Session().add(r)
 
        Session().commit()
 

	
 
    def test_index_trending(self):
 
        self.log_user()
 
        #codes stats
 
        self._enable_stats(HG_REPO)
 

	
 
        ScmModel().mark_for_invalidation(HG_REPO)
 
        response = self.app.get(url(controller='summary', action='index',
 
                                    repo_name=HG_REPO))
 
        response.mustcontain(
 
            '[["py", {"count": 68, "desc": ["Python"]}], '
 
            '["rst", {"count": 16, "desc": ["Rst"]}], '
 
            '["css", {"count": 2, "desc": ["Css"]}], '
 
            '["sh", {"count": 2, "desc": ["Bash"]}], '
 
            '["yml", {"count": 1, "desc": ["Yaml"]}], '
 
            '["makefile", {"count": 1, "desc": ["Makefile", "Makefile"]}], '
 
            '["js", {"count": 1, "desc": ["Javascript"]}], '
kallithea/tests/models/test_diff_parsers.py
Show inline comments
 
@@ -5,96 +5,94 @@ from kallithea.lib.diffs import DiffProc
 
from kallithea.tests.fixture import Fixture
 

	
 
fixture = Fixture()
 

	
 

	
 
DIFF_FIXTURES = {
 
    'hg_diff_add_single_binary_file.diff': [
 
        ('US Warszawa.jpg', 'A',
 
         {'added': 0,
 
          'deleted': 0,
 
          'binary': True,
 
          'ops': {NEW_FILENODE: 'new file 100755',
 
                  BIN_FILENODE: 'binary diff not shown'}}),
 
    ],
 
    'hg_diff_mod_single_binary_file.diff': [
 
        ('US Warszawa.jpg', 'M',
 
         {'added': 0,
 
          'deleted': 0,
 
          'binary': True,
 
          'ops': {MOD_FILENODE: 'modified file',
 
                  BIN_FILENODE: 'binary diff not shown'}}),
 
    ],
 

	
 
    'hg_diff_mod_single_file_and_rename_and_chmod.diff': [
 
        ('README', 'M',
 
        ('README', 'R',
 
         {'added': 3,
 
          'deleted': 0,
 
          'binary': False,
 
          'ops': {MOD_FILENODE: 'modified file',
 
                  RENAMED_FILENODE: 'file renamed from README.rst to README',
 
          'ops': {RENAMED_FILENODE: 'file renamed from README.rst to README',
 
                  CHMOD_FILENODE: 'modified file chmod 100755 => 100644'}}),
 
    ],
 
    'hg_diff_mod_file_and_rename.diff': [
 
        ('README.rst', 'M',
 
        ('README.rst', 'R',
 
         {'added': 3,
 
          'deleted': 0,
 
          'binary': False,
 
          'ops': {MOD_FILENODE: 'modified file',
 
                  RENAMED_FILENODE: 'file renamed from README to README.rst'}}),
 
          'ops': {RENAMED_FILENODE: 'file renamed from README to README.rst'}}),
 
    ],
 
    'hg_diff_del_single_binary_file.diff': [
 
        ('US Warszawa.jpg', 'D',
 
         {'added': 0,
 
          'deleted': 0,
 
          'binary': True,
 
          'ops': {DEL_FILENODE: 'deleted file',
 
                  BIN_FILENODE: 'binary diff not shown'}}),
 
    ],
 
    'hg_diff_chmod_and_mod_single_binary_file.diff': [
 
        ('gravatar.png', 'M',
 
         {'added': 0,
 
          'deleted': 0,
 
          'binary': True,
 
          'ops': {CHMOD_FILENODE: 'modified file chmod 100644 => 100755',
 
                  BIN_FILENODE: 'binary diff not shown'}}),
 
    ],
 
    'hg_diff_chmod.diff': [
 
        ('file', 'M',
 
         {'added': 0,
 
          'deleted': 0,
 
          'binary': True,
 
          'ops': {CHMOD_FILENODE: 'modified file chmod 100755 => 100644'}}),
 
    ],
 
    'hg_diff_rename_file.diff': [
 
        ('file_renamed', 'M',
 
        ('file_renamed', 'R',
 
         {'added': 0,
 
          'deleted': 0,
 
          'binary': True,
 
          'ops': {RENAMED_FILENODE: 'file renamed from file to file_renamed'}}),
 
    ],
 
    'hg_diff_rename_and_chmod_file.diff': [
 
        ('README', 'M',
 
        ('README', 'R',
 
         {'added': 0,
 
          'deleted': 0,
 
          'binary': True,
 
          'ops': {CHMOD_FILENODE: 'modified file chmod 100644 => 100755',
 
                  RENAMED_FILENODE: 'file renamed from README.rst to README'}}),
 
    ],
 
    'hg_diff_binary_and_normal.diff': [
 
        ('img/baseline-10px.png', 'A',
 
         {'added': 0,
 
          'deleted': 0,
 
          'binary': True,
 
          'ops': {NEW_FILENODE: 'new file 100644',
 
                  BIN_FILENODE: 'binary diff not shown'}}),
 
        ('img/baseline-20px.png', 'D',
 
         {'added': 0,
 
          'deleted': 0,
 
          'binary': True,
 
          'ops': {DEL_FILENODE: 'deleted file',
 
                  BIN_FILENODE: 'binary diff not shown'}}),
 
        ('index.html', 'M',
 
         {'added': 3,
 
          'deleted': 2,
 
          'binary': False,
 
          'ops': {MOD_FILENODE: 'modified file'}}),
 
@@ -111,49 +109,49 @@ DIFF_FIXTURES = {
 
        ('less/docs.less', 'M',
 
         {'added': 34,
 
          'deleted': 0,
 
          'binary': False,
 
          'ops': {MOD_FILENODE: 'modified file'}}),
 
        ('less/scaffolding.less', 'M',
 
         {'added': 1,
 
          'deleted': 3,
 
          'binary': False,
 
          'ops': {MOD_FILENODE: 'modified file'}}),
 
        ('readme.markdown', 'M',
 
         {'added': 1,
 
          'deleted': 10,
 
          'binary': False,
 
          'ops': {MOD_FILENODE: 'modified file'}}),
 
    ],
 
    'git_diff_chmod.diff': [
 
        ('work-horus.xls', 'M',
 
         {'added': 0,
 
          'deleted': 0,
 
          'binary': True,
 
          'ops': {CHMOD_FILENODE: 'modified file chmod 100644 => 100755'}})
 
    ],
 
    'git_diff_rename_file.diff': [
 
        ('file.xls', 'M',
 
        ('file.xls', 'R',
 
         {'added': 0,
 
          'deleted': 0,
 
          'binary': True,
 
          'ops': {RENAMED_FILENODE: 'file renamed from work-horus.xls to file.xls'}})
 
    ],
 
    'git_diff_mod_single_binary_file.diff': [
 
        ('US Warszawa.jpg', 'M',
 
         {'added': 0,
 
          'deleted': 0,
 
          'binary': True,
 
          'ops': {MOD_FILENODE: 'modified file',
 
                  BIN_FILENODE: 'binary diff not shown'}})
 
    ],
 
    'git_diff_binary_and_normal.diff': [
 
        ('img/baseline-10px.png', 'A',
 
         {'added': 0,
 
          'deleted': 0,
 
          'binary': True,
 
          'ops': {NEW_FILENODE: 'new file 100644',
 
                  BIN_FILENODE: 'binary diff not shown'}}),
 
        ('img/baseline-20px.png', 'D',
 
         {'added': 0,
 
          'deleted': 0,
 
          'binary': True,
 
@@ -227,40 +225,47 @@ DIFF_FIXTURES = {
 
    'hg_diff_copy_and_modify_file.diff': [
 
        ('file3', 'M',
 
         {'added': 1,
 
          'deleted': 0,
 
          'binary': False,
 
          'ops': {COPIED_FILENODE: 'file copied from file2 to file3',
 
                  MOD_FILENODE: 'modified file'}}),
 
    ],
 
    'hg_diff_copy_and_chmod_file.diff': [
 
        ('file4', 'M',
 
         {'added': 0,
 
          'deleted': 0,
 
          'binary': True,
 
          'ops': {COPIED_FILENODE: 'file copied from file3 to file4',
 
                  CHMOD_FILENODE: 'modified file chmod 100644 => 100755'}}),
 
    ],
 
    'hg_diff_copy_chmod_and_edit_file.diff': [
 
        ('file5', 'M',
 
         {'added': 2,
 
          'deleted': 1,
 
          'binary': False,
 
          'ops': {COPIED_FILENODE: 'file copied from file4 to file5',
 
                  CHMOD_FILENODE: 'modified file chmod 100755 => 100644',
 
                  MOD_FILENODE: 'modified file'}}),
 
    ]
 
    ],
 
    'hg_diff_rename_space_cr.diff': [
 
        ('oh yes', 'R',
 
         {'added': 3,
 
          'deleted': 2,
 
          'binary': False,
 
          'ops': {RENAMED_FILENODE: 'file renamed from oh no to oh yes'}}),
 
    ],
 
}
 

	
 

	
 
class DiffLibTest(BaseTestCase):
 

	
 
    @parameterized.expand([(x,) for x in DIFF_FIXTURES])
 
    def test_diff(self, diff_fixture):
 

	
 
        diff = fixture.load_resource(diff_fixture)
 
        diff = fixture.load_resource(diff_fixture, strip=False)
 

	
 
        diff_proc = DiffProcessor(diff)
 
        diff_proc_d = diff_proc.prepare()
 
        data = [(x['filename'], x['operation'], x['stats']) for x in diff_proc_d]
 
        expected_data = DIFF_FIXTURES[diff_fixture]
 
        self.assertListEqual(expected_data, data)
0 comments (0 inline, 0 general)